tuiuiu.js 0.1.1

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 (803) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +324 -0
  3. package/dist/app/index.d.ts +9 -0
  4. package/dist/app/index.d.ts.map +1 -0
  5. package/dist/app/index.js +12 -0
  6. package/dist/app/index.js.map +1 -0
  7. package/dist/app/render-loop.d.ts +51 -0
  8. package/dist/app/render-loop.d.ts.map +1 -0
  9. package/dist/app/render-loop.js +263 -0
  10. package/dist/app/render-loop.js.map +1 -0
  11. package/dist/atoms/button.d.ts +109 -0
  12. package/dist/atoms/button.d.ts.map +1 -0
  13. package/dist/atoms/button.js +173 -0
  14. package/dist/atoms/button.js.map +1 -0
  15. package/dist/atoms/index.d.ts +29 -0
  16. package/dist/atoms/index.d.ts.map +1 -0
  17. package/dist/atoms/index.js +53 -0
  18. package/dist/atoms/index.js.map +1 -0
  19. package/dist/atoms/progress-bar.d.ts +96 -0
  20. package/dist/atoms/progress-bar.d.ts.map +1 -0
  21. package/dist/atoms/progress-bar.js +443 -0
  22. package/dist/atoms/progress-bar.js.map +1 -0
  23. package/dist/atoms/slider.d.ts +137 -0
  24. package/dist/atoms/slider.d.ts.map +1 -0
  25. package/dist/atoms/slider.js +317 -0
  26. package/dist/atoms/slider.js.map +1 -0
  27. package/dist/atoms/spinner.d.ts +91 -0
  28. package/dist/atoms/spinner.d.ts.map +1 -0
  29. package/dist/atoms/spinner.js +650 -0
  30. package/dist/atoms/spinner.js.map +1 -0
  31. package/dist/atoms/switch.d.ts +102 -0
  32. package/dist/atoms/switch.d.ts.map +1 -0
  33. package/dist/atoms/switch.js +176 -0
  34. package/dist/atoms/switch.js.map +1 -0
  35. package/dist/atoms/text-input.d.ts +82 -0
  36. package/dist/atoms/text-input.d.ts.map +1 -0
  37. package/dist/atoms/text-input.js +347 -0
  38. package/dist/atoms/text-input.js.map +1 -0
  39. package/dist/atoms/timer.d.ts +178 -0
  40. package/dist/atoms/timer.d.ts.map +1 -0
  41. package/dist/atoms/timer.js +355 -0
  42. package/dist/atoms/timer.js.map +1 -0
  43. package/dist/atoms/tooltip.d.ts +191 -0
  44. package/dist/atoms/tooltip.d.ts.map +1 -0
  45. package/dist/atoms/tooltip.js +279 -0
  46. package/dist/atoms/tooltip.js.map +1 -0
  47. package/dist/components/canvas.d.ts +322 -0
  48. package/dist/components/canvas.d.ts.map +1 -0
  49. package/dist/components/canvas.js +833 -0
  50. package/dist/components/canvas.js.map +1 -0
  51. package/dist/components/code-block.d.ts +75 -0
  52. package/dist/components/code-block.d.ts.map +1 -0
  53. package/dist/components/code-block.js +322 -0
  54. package/dist/components/code-block.js.map +1 -0
  55. package/dist/components/components.d.ts +122 -0
  56. package/dist/components/components.d.ts.map +1 -0
  57. package/dist/components/components.js +151 -0
  58. package/dist/components/components.js.map +1 -0
  59. package/dist/components/data-viz/bar-chart.d.ts +167 -0
  60. package/dist/components/data-viz/bar-chart.d.ts.map +1 -0
  61. package/dist/components/data-viz/bar-chart.js +375 -0
  62. package/dist/components/data-viz/bar-chart.js.map +1 -0
  63. package/dist/components/data-viz/gauge.d.ts +163 -0
  64. package/dist/components/data-viz/gauge.d.ts.map +1 -0
  65. package/dist/components/data-viz/gauge.js +451 -0
  66. package/dist/components/data-viz/gauge.js.map +1 -0
  67. package/dist/components/data-viz/heatmap.d.ts +154 -0
  68. package/dist/components/data-viz/heatmap.d.ts.map +1 -0
  69. package/dist/components/data-viz/heatmap.js +458 -0
  70. package/dist/components/data-viz/heatmap.js.map +1 -0
  71. package/dist/components/data-viz/index.d.ts +16 -0
  72. package/dist/components/data-viz/index.d.ts.map +1 -0
  73. package/dist/components/data-viz/index.js +16 -0
  74. package/dist/components/data-viz/index.js.map +1 -0
  75. package/dist/components/data-viz/line-chart.d.ts +157 -0
  76. package/dist/components/data-viz/line-chart.d.ts.map +1 -0
  77. package/dist/components/data-viz/line-chart.js +578 -0
  78. package/dist/components/data-viz/line-chart.js.map +1 -0
  79. package/dist/components/data-viz/sparkline.d.ts +156 -0
  80. package/dist/components/data-viz/sparkline.d.ts.map +1 -0
  81. package/dist/components/data-viz/sparkline.js +325 -0
  82. package/dist/components/data-viz/sparkline.js.map +1 -0
  83. package/dist/components/grid.d.ts +234 -0
  84. package/dist/components/grid.d.ts.map +1 -0
  85. package/dist/components/grid.js +719 -0
  86. package/dist/components/grid.js.map +1 -0
  87. package/dist/components/index.d.ts +33 -0
  88. package/dist/components/index.d.ts.map +1 -0
  89. package/dist/components/index.js +69 -0
  90. package/dist/components/index.js.map +1 -0
  91. package/dist/components/markdown.d.ts +52 -0
  92. package/dist/components/markdown.d.ts.map +1 -0
  93. package/dist/components/markdown.js +341 -0
  94. package/dist/components/markdown.js.map +1 -0
  95. package/dist/components/modal.d.ts +237 -0
  96. package/dist/components/modal.d.ts.map +1 -0
  97. package/dist/components/modal.js +396 -0
  98. package/dist/components/modal.js.map +1 -0
  99. package/dist/components/progress-bar.d.ts +89 -0
  100. package/dist/components/progress-bar.d.ts.map +1 -0
  101. package/dist/components/progress-bar.js +288 -0
  102. package/dist/components/progress-bar.js.map +1 -0
  103. package/dist/components/select.d.ts +114 -0
  104. package/dist/components/select.d.ts.map +1 -0
  105. package/dist/components/select.js +415 -0
  106. package/dist/components/select.js.map +1 -0
  107. package/dist/components/spinner.d.ts +71 -0
  108. package/dist/components/spinner.d.ts.map +1 -0
  109. package/dist/components/spinner.js +300 -0
  110. package/dist/components/spinner.js.map +1 -0
  111. package/dist/components/split-panel.d.ts +175 -0
  112. package/dist/components/split-panel.d.ts.map +1 -0
  113. package/dist/components/split-panel.js +322 -0
  114. package/dist/components/split-panel.js.map +1 -0
  115. package/dist/components/table.d.ts +103 -0
  116. package/dist/components/table.d.ts.map +1 -0
  117. package/dist/components/table.js +359 -0
  118. package/dist/components/table.js.map +1 -0
  119. package/dist/components/text-input.d.ts +79 -0
  120. package/dist/components/text-input.d.ts.map +1 -0
  121. package/dist/components/text-input.js +332 -0
  122. package/dist/components/text-input.js.map +1 -0
  123. package/dist/core/animation.d.ts +262 -0
  124. package/dist/core/animation.d.ts.map +1 -0
  125. package/dist/core/animation.js +626 -0
  126. package/dist/core/animation.js.map +1 -0
  127. package/dist/core/buffer.d.ts +179 -0
  128. package/dist/core/buffer.d.ts.map +1 -0
  129. package/dist/core/buffer.js +549 -0
  130. package/dist/core/buffer.js.map +1 -0
  131. package/dist/core/capabilities.d.ts +184 -0
  132. package/dist/core/capabilities.d.ts.map +1 -0
  133. package/dist/core/capabilities.js +393 -0
  134. package/dist/core/capabilities.js.map +1 -0
  135. package/dist/core/colors.d.ts +111 -0
  136. package/dist/core/colors.d.ts.map +1 -0
  137. package/dist/core/colors.js +417 -0
  138. package/dist/core/colors.js.map +1 -0
  139. package/dist/core/command-palette.d.ts +220 -0
  140. package/dist/core/command-palette.d.ts.map +1 -0
  141. package/dist/core/command-palette.js +564 -0
  142. package/dist/core/command-palette.js.map +1 -0
  143. package/dist/core/constraint.d.ts +315 -0
  144. package/dist/core/constraint.d.ts.map +1 -0
  145. package/dist/core/constraint.js +651 -0
  146. package/dist/core/constraint.js.map +1 -0
  147. package/dist/core/delta-render.d.ts +64 -0
  148. package/dist/core/delta-render.d.ts.map +1 -0
  149. package/dist/core/delta-render.js +367 -0
  150. package/dist/core/delta-render.js.map +1 -0
  151. package/dist/core/dirty.d.ts +181 -0
  152. package/dist/core/dirty.d.ts.map +1 -0
  153. package/dist/core/dirty.js +335 -0
  154. package/dist/core/dirty.js.map +1 -0
  155. package/dist/core/error-boundary.d.ts +79 -0
  156. package/dist/core/error-boundary.d.ts.map +1 -0
  157. package/dist/core/error-boundary.js +258 -0
  158. package/dist/core/error-boundary.js.map +1 -0
  159. package/dist/core/events.d.ts +206 -0
  160. package/dist/core/events.d.ts.map +1 -0
  161. package/dist/core/events.js +411 -0
  162. package/dist/core/events.js.map +1 -0
  163. package/dist/core/focus.d.ts +294 -0
  164. package/dist/core/focus.d.ts.map +1 -0
  165. package/dist/core/focus.js +589 -0
  166. package/dist/core/focus.js.map +1 -0
  167. package/dist/core/graphics.d.ts +146 -0
  168. package/dist/core/graphics.d.ts.map +1 -0
  169. package/dist/core/graphics.js +561 -0
  170. package/dist/core/graphics.js.map +1 -0
  171. package/dist/core/highlighter.d.ts +148 -0
  172. package/dist/core/highlighter.d.ts.map +1 -0
  173. package/dist/core/highlighter.js +2726 -0
  174. package/dist/core/highlighter.js.map +1 -0
  175. package/dist/core/hit-test.d.ts +126 -0
  176. package/dist/core/hit-test.d.ts.map +1 -0
  177. package/dist/core/hit-test.js +336 -0
  178. package/dist/core/hit-test.js.map +1 -0
  179. package/dist/core/index.d.ts +58 -0
  180. package/dist/core/index.d.ts.map +1 -0
  181. package/dist/core/index.js +254 -0
  182. package/dist/core/index.js.map +1 -0
  183. package/dist/core/input.d.ts +241 -0
  184. package/dist/core/input.d.ts.map +1 -0
  185. package/dist/core/input.js +768 -0
  186. package/dist/core/input.js.map +1 -0
  187. package/dist/core/keybindings.d.ts +256 -0
  188. package/dist/core/keybindings.d.ts.map +1 -0
  189. package/dist/core/keybindings.js +532 -0
  190. package/dist/core/keybindings.js.map +1 -0
  191. package/dist/core/layout.d.ts +30 -0
  192. package/dist/core/layout.d.ts.map +1 -0
  193. package/dist/core/layout.js +347 -0
  194. package/dist/core/layout.js.map +1 -0
  195. package/dist/core/overlay.d.ts +318 -0
  196. package/dist/core/overlay.d.ts.map +1 -0
  197. package/dist/core/overlay.js +794 -0
  198. package/dist/core/overlay.js.map +1 -0
  199. package/dist/core/query.d.ts +155 -0
  200. package/dist/core/query.d.ts.map +1 -0
  201. package/dist/core/query.js +616 -0
  202. package/dist/core/query.js.map +1 -0
  203. package/dist/core/renderer.d.ts +28 -0
  204. package/dist/core/renderer.d.ts.map +1 -0
  205. package/dist/core/renderer.js +403 -0
  206. package/dist/core/renderer.js.map +1 -0
  207. package/dist/core/router.d.ts +401 -0
  208. package/dist/core/router.d.ts.map +1 -0
  209. package/dist/core/router.js +766 -0
  210. package/dist/core/router.js.map +1 -0
  211. package/dist/core/screen.d.ts +302 -0
  212. package/dist/core/screen.d.ts.map +1 -0
  213. package/dist/core/screen.js +537 -0
  214. package/dist/core/screen.js.map +1 -0
  215. package/dist/core/signal.d.ts +136 -0
  216. package/dist/core/signal.d.ts.map +1 -0
  217. package/dist/core/signal.js +336 -0
  218. package/dist/core/signal.js.map +1 -0
  219. package/dist/core/theme.d.ts +220 -0
  220. package/dist/core/theme.d.ts.map +1 -0
  221. package/dist/core/theme.js +499 -0
  222. package/dist/core/theme.js.map +1 -0
  223. package/dist/core/tick.d.ts +107 -0
  224. package/dist/core/tick.d.ts.map +1 -0
  225. package/dist/core/tick.js +174 -0
  226. package/dist/core/tick.js.map +1 -0
  227. package/dist/core/transitions.d.ts +335 -0
  228. package/dist/core/transitions.d.ts.map +1 -0
  229. package/dist/core/transitions.js +650 -0
  230. package/dist/core/transitions.js.map +1 -0
  231. package/dist/core/virtual-scroll.d.ts +241 -0
  232. package/dist/core/virtual-scroll.d.ts.map +1 -0
  233. package/dist/core/virtual-scroll.js +476 -0
  234. package/dist/core/virtual-scroll.js.map +1 -0
  235. package/dist/core/visualization.d.ts +248 -0
  236. package/dist/core/visualization.d.ts.map +1 -0
  237. package/dist/core/visualization.js +709 -0
  238. package/dist/core/visualization.js.map +1 -0
  239. package/dist/design-system/core/index.d.ts +6 -0
  240. package/dist/design-system/core/index.d.ts.map +1 -0
  241. package/dist/design-system/core/index.js +6 -0
  242. package/dist/design-system/core/index.js.map +1 -0
  243. package/dist/design-system/core/layout.d.ts +30 -0
  244. package/dist/design-system/core/layout.d.ts.map +1 -0
  245. package/dist/design-system/core/layout.js +344 -0
  246. package/dist/design-system/core/layout.js.map +1 -0
  247. package/dist/design-system/core/renderer.d.ts +28 -0
  248. package/dist/design-system/core/renderer.d.ts.map +1 -0
  249. package/dist/design-system/core/renderer.js +418 -0
  250. package/dist/design-system/core/renderer.js.map +1 -0
  251. package/dist/design-system/data-display/calendar.d.ts +141 -0
  252. package/dist/design-system/data-display/calendar.d.ts.map +1 -0
  253. package/dist/design-system/data-display/calendar.js +524 -0
  254. package/dist/design-system/data-display/calendar.js.map +1 -0
  255. package/dist/design-system/data-display/code-block.d.ts +75 -0
  256. package/dist/design-system/data-display/code-block.d.ts.map +1 -0
  257. package/dist/design-system/data-display/code-block.js +311 -0
  258. package/dist/design-system/data-display/code-block.js.map +1 -0
  259. package/dist/design-system/data-display/data-table.d.ts +173 -0
  260. package/dist/design-system/data-display/data-table.d.ts.map +1 -0
  261. package/dist/design-system/data-display/data-table.js +428 -0
  262. package/dist/design-system/data-display/data-table.js.map +1 -0
  263. package/dist/design-system/data-display/index.d.ts +10 -0
  264. package/dist/design-system/data-display/index.d.ts.map +1 -0
  265. package/dist/design-system/data-display/index.js +16 -0
  266. package/dist/design-system/data-display/index.js.map +1 -0
  267. package/dist/design-system/data-display/markdown.d.ts +52 -0
  268. package/dist/design-system/data-display/markdown.d.ts.map +1 -0
  269. package/dist/design-system/data-display/markdown.js +341 -0
  270. package/dist/design-system/data-display/markdown.js.map +1 -0
  271. package/dist/design-system/data-display/table.d.ts +103 -0
  272. package/dist/design-system/data-display/table.d.ts.map +1 -0
  273. package/dist/design-system/data-display/table.js +342 -0
  274. package/dist/design-system/data-display/table.js.map +1 -0
  275. package/dist/design-system/data-display/tree.d.ts +166 -0
  276. package/dist/design-system/data-display/tree.d.ts.map +1 -0
  277. package/dist/design-system/data-display/tree.js +428 -0
  278. package/dist/design-system/data-display/tree.js.map +1 -0
  279. package/dist/design-system/feedback/badge.d.ts +21 -0
  280. package/dist/design-system/feedback/badge.d.ts.map +1 -0
  281. package/dist/design-system/feedback/badge.js +9 -0
  282. package/dist/design-system/feedback/badge.js.map +1 -0
  283. package/dist/design-system/feedback/index.d.ts +8 -0
  284. package/dist/design-system/feedback/index.d.ts.map +1 -0
  285. package/dist/design-system/feedback/index.js +12 -0
  286. package/dist/design-system/feedback/index.js.map +1 -0
  287. package/dist/design-system/feedback/progress-bar.d.ts +93 -0
  288. package/dist/design-system/feedback/progress-bar.d.ts.map +1 -0
  289. package/dist/design-system/feedback/progress-bar.js +440 -0
  290. package/dist/design-system/feedback/progress-bar.js.map +1 -0
  291. package/dist/design-system/feedback/spinner.d.ts +88 -0
  292. package/dist/design-system/feedback/spinner.d.ts.map +1 -0
  293. package/dist/design-system/feedback/spinner.js +679 -0
  294. package/dist/design-system/feedback/spinner.js.map +1 -0
  295. package/dist/design-system/feedback/timer.d.ts +175 -0
  296. package/dist/design-system/feedback/timer.d.ts.map +1 -0
  297. package/dist/design-system/feedback/timer.js +352 -0
  298. package/dist/design-system/feedback/timer.js.map +1 -0
  299. package/dist/design-system/forms/autocomplete.d.ts +163 -0
  300. package/dist/design-system/forms/autocomplete.d.ts.map +1 -0
  301. package/dist/design-system/forms/autocomplete.js +455 -0
  302. package/dist/design-system/forms/autocomplete.js.map +1 -0
  303. package/dist/design-system/forms/button.d.ts +106 -0
  304. package/dist/design-system/forms/button.d.ts.map +1 -0
  305. package/dist/design-system/forms/button.js +170 -0
  306. package/dist/design-system/forms/button.js.map +1 -0
  307. package/dist/design-system/forms/index.d.ts +12 -0
  308. package/dist/design-system/forms/index.d.ts.map +1 -0
  309. package/dist/design-system/forms/index.js +20 -0
  310. package/dist/design-system/forms/index.js.map +1 -0
  311. package/dist/design-system/forms/multi-select.d.ts +102 -0
  312. package/dist/design-system/forms/multi-select.d.ts.map +1 -0
  313. package/dist/design-system/forms/multi-select.js +309 -0
  314. package/dist/design-system/forms/multi-select.js.map +1 -0
  315. package/dist/design-system/forms/radio-group.d.ts +88 -0
  316. package/dist/design-system/forms/radio-group.d.ts.map +1 -0
  317. package/dist/design-system/forms/radio-group.js +145 -0
  318. package/dist/design-system/forms/radio-group.js.map +1 -0
  319. package/dist/design-system/forms/select.d.ts +116 -0
  320. package/dist/design-system/forms/select.d.ts.map +1 -0
  321. package/dist/design-system/forms/select.js +441 -0
  322. package/dist/design-system/forms/select.js.map +1 -0
  323. package/dist/design-system/forms/slider.d.ts +134 -0
  324. package/dist/design-system/forms/slider.d.ts.map +1 -0
  325. package/dist/design-system/forms/slider.js +314 -0
  326. package/dist/design-system/forms/slider.js.map +1 -0
  327. package/dist/design-system/forms/switch.d.ts +99 -0
  328. package/dist/design-system/forms/switch.d.ts.map +1 -0
  329. package/dist/design-system/forms/switch.js +173 -0
  330. package/dist/design-system/forms/switch.js.map +1 -0
  331. package/dist/design-system/forms/text-input.d.ts +79 -0
  332. package/dist/design-system/forms/text-input.d.ts.map +1 -0
  333. package/dist/design-system/forms/text-input.js +344 -0
  334. package/dist/design-system/forms/text-input.js.map +1 -0
  335. package/dist/design-system/index.d.ts +23 -0
  336. package/dist/design-system/index.d.ts.map +1 -0
  337. package/dist/design-system/index.js +74 -0
  338. package/dist/design-system/index.js.map +1 -0
  339. package/dist/design-system/layout/app.d.ts +205 -0
  340. package/dist/design-system/layout/app.d.ts.map +1 -0
  341. package/dist/design-system/layout/app.js +286 -0
  342. package/dist/design-system/layout/app.js.map +1 -0
  343. package/dist/design-system/layout/collapsible.d.ts +166 -0
  344. package/dist/design-system/layout/collapsible.d.ts.map +1 -0
  345. package/dist/design-system/layout/collapsible.js +286 -0
  346. package/dist/design-system/layout/collapsible.js.map +1 -0
  347. package/dist/design-system/layout/grid.d.ts +232 -0
  348. package/dist/design-system/layout/grid.d.ts.map +1 -0
  349. package/dist/design-system/layout/grid.js +333 -0
  350. package/dist/design-system/layout/grid.js.map +1 -0
  351. package/dist/design-system/layout/index.d.ts +27 -0
  352. package/dist/design-system/layout/index.d.ts.map +1 -0
  353. package/dist/design-system/layout/index.js +34 -0
  354. package/dist/design-system/layout/index.js.map +1 -0
  355. package/dist/design-system/layout/scroll-area.d.ts +188 -0
  356. package/dist/design-system/layout/scroll-area.d.ts.map +1 -0
  357. package/dist/design-system/layout/scroll-area.js +348 -0
  358. package/dist/design-system/layout/scroll-area.js.map +1 -0
  359. package/dist/design-system/layout/split-panel.d.ts +183 -0
  360. package/dist/design-system/layout/split-panel.d.ts.map +1 -0
  361. package/dist/design-system/layout/split-panel.js +323 -0
  362. package/dist/design-system/layout/split-panel.js.map +1 -0
  363. package/dist/design-system/layout/stack.d.ts +189 -0
  364. package/dist/design-system/layout/stack.d.ts.map +1 -0
  365. package/dist/design-system/layout/stack.js +170 -0
  366. package/dist/design-system/layout/stack.js.map +1 -0
  367. package/dist/design-system/layout/tabs.d.ts +129 -0
  368. package/dist/design-system/layout/tabs.d.ts.map +1 -0
  369. package/dist/design-system/layout/tabs.js +373 -0
  370. package/dist/design-system/layout/tabs.js.map +1 -0
  371. package/dist/design-system/media/index.d.ts +13 -0
  372. package/dist/design-system/media/index.d.ts.map +1 -0
  373. package/dist/design-system/media/index.js +23 -0
  374. package/dist/design-system/media/index.js.map +1 -0
  375. package/dist/design-system/media/picture.d.ts +304 -0
  376. package/dist/design-system/media/picture.d.ts.map +1 -0
  377. package/dist/design-system/media/picture.js +681 -0
  378. package/dist/design-system/media/picture.js.map +1 -0
  379. package/dist/design-system/navigation/file-manager.d.ts +492 -0
  380. package/dist/design-system/navigation/file-manager.d.ts.map +1 -0
  381. package/dist/design-system/navigation/file-manager.js +807 -0
  382. package/dist/design-system/navigation/file-manager.js.map +1 -0
  383. package/dist/design-system/navigation/index.d.ts +13 -0
  384. package/dist/design-system/navigation/index.d.ts.map +1 -0
  385. package/dist/design-system/navigation/index.js +19 -0
  386. package/dist/design-system/navigation/index.js.map +1 -0
  387. package/dist/design-system/overlays/command-palette.d.ts +217 -0
  388. package/dist/design-system/overlays/command-palette.d.ts.map +1 -0
  389. package/dist/design-system/overlays/command-palette.js +443 -0
  390. package/dist/design-system/overlays/command-palette.js.map +1 -0
  391. package/dist/design-system/overlays/index.d.ts +7 -0
  392. package/dist/design-system/overlays/index.d.ts.map +1 -0
  393. package/dist/design-system/overlays/index.js +10 -0
  394. package/dist/design-system/overlays/index.js.map +1 -0
  395. package/dist/design-system/overlays/modal.d.ts +251 -0
  396. package/dist/design-system/overlays/modal.d.ts.map +1 -0
  397. package/dist/design-system/overlays/modal.js +461 -0
  398. package/dist/design-system/overlays/modal.js.map +1 -0
  399. package/dist/design-system/overlays/overlay-stack.d.ts +200 -0
  400. package/dist/design-system/overlays/overlay-stack.d.ts.map +1 -0
  401. package/dist/design-system/overlays/overlay-stack.js +341 -0
  402. package/dist/design-system/overlays/overlay-stack.js.map +1 -0
  403. package/dist/design-system/primitives/box.d.ts +16 -0
  404. package/dist/design-system/primitives/box.d.ts.map +1 -0
  405. package/dist/design-system/primitives/box.js +23 -0
  406. package/dist/design-system/primitives/box.js.map +1 -0
  407. package/dist/design-system/primitives/divider.d.ts +52 -0
  408. package/dist/design-system/primitives/divider.d.ts.map +1 -0
  409. package/dist/design-system/primitives/divider.js +72 -0
  410. package/dist/design-system/primitives/divider.js.map +1 -0
  411. package/dist/design-system/primitives/helpers.d.ts +10 -0
  412. package/dist/design-system/primitives/helpers.d.ts.map +1 -0
  413. package/dist/design-system/primitives/helpers.js +27 -0
  414. package/dist/design-system/primitives/helpers.js.map +1 -0
  415. package/dist/design-system/primitives/index.d.ts +11 -0
  416. package/dist/design-system/primitives/index.d.ts.map +1 -0
  417. package/dist/design-system/primitives/index.js +14 -0
  418. package/dist/design-system/primitives/index.js.map +1 -0
  419. package/dist/design-system/primitives/slot.d.ts +35 -0
  420. package/dist/design-system/primitives/slot.d.ts.map +1 -0
  421. package/dist/design-system/primitives/slot.js +17 -0
  422. package/dist/design-system/primitives/slot.js.map +1 -0
  423. package/dist/design-system/primitives/spacer.d.ts +34 -0
  424. package/dist/design-system/primitives/spacer.d.ts.map +1 -0
  425. package/dist/design-system/primitives/spacer.js +53 -0
  426. package/dist/design-system/primitives/spacer.js.map +1 -0
  427. package/dist/design-system/primitives/text.d.ts +12 -0
  428. package/dist/design-system/primitives/text.d.ts.map +1 -0
  429. package/dist/design-system/primitives/text.js +25 -0
  430. package/dist/design-system/primitives/text.js.map +1 -0
  431. package/dist/design-system/primitives/utilities.d.ts +70 -0
  432. package/dist/design-system/primitives/utilities.d.ts.map +1 -0
  433. package/dist/design-system/primitives/utilities.js +56 -0
  434. package/dist/design-system/primitives/utilities.js.map +1 -0
  435. package/dist/design-system/visual/big-text.d.ts +151 -0
  436. package/dist/design-system/visual/big-text.d.ts.map +1 -0
  437. package/dist/design-system/visual/big-text.js +578 -0
  438. package/dist/design-system/visual/big-text.js.map +1 -0
  439. package/dist/design-system/visual/digits.d.ts +159 -0
  440. package/dist/design-system/visual/digits.d.ts.map +1 -0
  441. package/dist/design-system/visual/digits.js +287 -0
  442. package/dist/design-system/visual/digits.js.map +1 -0
  443. package/dist/design-system/visual/index.d.ts +20 -0
  444. package/dist/design-system/visual/index.d.ts.map +1 -0
  445. package/dist/design-system/visual/index.js +23 -0
  446. package/dist/design-system/visual/index.js.map +1 -0
  447. package/dist/design-system/visual/splash-screen.d.ts +93 -0
  448. package/dist/design-system/visual/splash-screen.d.ts.map +1 -0
  449. package/dist/design-system/visual/splash-screen.js +219 -0
  450. package/dist/design-system/visual/splash-screen.js.map +1 -0
  451. package/dist/design-system/visual/tooltip.d.ts +188 -0
  452. package/dist/design-system/visual/tooltip.d.ts.map +1 -0
  453. package/dist/design-system/visual/tooltip.js +276 -0
  454. package/dist/design-system/visual/tooltip.js.map +1 -0
  455. package/dist/dev-tools/debugger.d.ts +223 -0
  456. package/dist/dev-tools/debugger.d.ts.map +1 -0
  457. package/dist/dev-tools/debugger.js +489 -0
  458. package/dist/dev-tools/debugger.js.map +1 -0
  459. package/dist/dev-tools/index.d.ts +22 -0
  460. package/dist/dev-tools/index.d.ts.map +1 -0
  461. package/dist/dev-tools/index.js +63 -0
  462. package/dist/dev-tools/index.js.map +1 -0
  463. package/dist/dev-tools/mouse-simulator.d.ts +155 -0
  464. package/dist/dev-tools/mouse-simulator.d.ts.map +1 -0
  465. package/dist/dev-tools/mouse-simulator.js +314 -0
  466. package/dist/dev-tools/mouse-simulator.js.map +1 -0
  467. package/dist/dev-tools/testing.d.ts +262 -0
  468. package/dist/dev-tools/testing.d.ts.map +1 -0
  469. package/dist/dev-tools/testing.js +858 -0
  470. package/dist/dev-tools/testing.js.map +1 -0
  471. package/dist/hooks/context.d.ts +47 -0
  472. package/dist/hooks/context.d.ts.map +1 -0
  473. package/dist/hooks/context.js +108 -0
  474. package/dist/hooks/context.js.map +1 -0
  475. package/dist/hooks/focus-context.d.ts +65 -0
  476. package/dist/hooks/focus-context.d.ts.map +1 -0
  477. package/dist/hooks/focus-context.js +79 -0
  478. package/dist/hooks/focus-context.js.map +1 -0
  479. package/dist/hooks/index.d.ts +16 -0
  480. package/dist/hooks/index.d.ts.map +1 -0
  481. package/dist/hooks/index.js +22 -0
  482. package/dist/hooks/index.js.map +1 -0
  483. package/dist/hooks/types.d.ts +76 -0
  484. package/dist/hooks/types.d.ts.map +1 -0
  485. package/dist/hooks/types.js +5 -0
  486. package/dist/hooks/types.js.map +1 -0
  487. package/dist/hooks/use-app.d.ts +27 -0
  488. package/dist/hooks/use-app.d.ts.map +1 -0
  489. package/dist/hooks/use-app.js +179 -0
  490. package/dist/hooks/use-app.js.map +1 -0
  491. package/dist/hooks/use-effect.d.ts +20 -0
  492. package/dist/hooks/use-effect.d.ts.map +1 -0
  493. package/dist/hooks/use-effect.js +55 -0
  494. package/dist/hooks/use-effect.js.map +1 -0
  495. package/dist/hooks/use-focus.d.ts +48 -0
  496. package/dist/hooks/use-focus.d.ts.map +1 -0
  497. package/dist/hooks/use-focus.js +152 -0
  498. package/dist/hooks/use-focus.js.map +1 -0
  499. package/dist/hooks/use-input.d.ts +35 -0
  500. package/dist/hooks/use-input.d.ts.map +1 -0
  501. package/dist/hooks/use-input.js +352 -0
  502. package/dist/hooks/use-input.js.map +1 -0
  503. package/dist/hooks/use-mouse.d.ts +82 -0
  504. package/dist/hooks/use-mouse.d.ts.map +1 -0
  505. package/dist/hooks/use-mouse.js +328 -0
  506. package/dist/hooks/use-mouse.js.map +1 -0
  507. package/dist/hooks/use-navigation.d.ts +206 -0
  508. package/dist/hooks/use-navigation.d.ts.map +1 -0
  509. package/dist/hooks/use-navigation.js +319 -0
  510. package/dist/hooks/use-navigation.js.map +1 -0
  511. package/dist/hooks/use-state.d.ts +15 -0
  512. package/dist/hooks/use-state.d.ts.map +1 -0
  513. package/dist/hooks/use-state.js +29 -0
  514. package/dist/hooks/use-state.js.map +1 -0
  515. package/dist/hooks/use-terminal-size.d.ts +12 -0
  516. package/dist/hooks/use-terminal-size.d.ts.map +1 -0
  517. package/dist/hooks/use-terminal-size.js +20 -0
  518. package/dist/hooks/use-terminal-size.js.map +1 -0
  519. package/dist/index.d.ts +85 -0
  520. package/dist/index.d.ts.map +1 -0
  521. package/dist/index.js +334 -0
  522. package/dist/index.js.map +1 -0
  523. package/dist/molecules/autocomplete.d.ts +166 -0
  524. package/dist/molecules/autocomplete.d.ts.map +1 -0
  525. package/dist/molecules/autocomplete.js +458 -0
  526. package/dist/molecules/autocomplete.js.map +1 -0
  527. package/dist/molecules/calendar.d.ts +144 -0
  528. package/dist/molecules/calendar.d.ts.map +1 -0
  529. package/dist/molecules/calendar.js +527 -0
  530. package/dist/molecules/calendar.js.map +1 -0
  531. package/dist/molecules/code-block.d.ts +88 -0
  532. package/dist/molecules/code-block.d.ts.map +1 -0
  533. package/dist/molecules/code-block.js +324 -0
  534. package/dist/molecules/code-block.js.map +1 -0
  535. package/dist/molecules/collapsible.d.ts +169 -0
  536. package/dist/molecules/collapsible.d.ts.map +1 -0
  537. package/dist/molecules/collapsible.js +289 -0
  538. package/dist/molecules/collapsible.js.map +1 -0
  539. package/dist/molecules/data-viz/bar-chart.d.ts +167 -0
  540. package/dist/molecules/data-viz/bar-chart.d.ts.map +1 -0
  541. package/dist/molecules/data-viz/bar-chart.js +375 -0
  542. package/dist/molecules/data-viz/bar-chart.js.map +1 -0
  543. package/dist/molecules/data-viz/gauge.d.ts +163 -0
  544. package/dist/molecules/data-viz/gauge.d.ts.map +1 -0
  545. package/dist/molecules/data-viz/gauge.js +451 -0
  546. package/dist/molecules/data-viz/gauge.js.map +1 -0
  547. package/dist/molecules/data-viz/heatmap.d.ts +154 -0
  548. package/dist/molecules/data-viz/heatmap.d.ts.map +1 -0
  549. package/dist/molecules/data-viz/heatmap.js +458 -0
  550. package/dist/molecules/data-viz/heatmap.js.map +1 -0
  551. package/dist/molecules/data-viz/index.d.ts +16 -0
  552. package/dist/molecules/data-viz/index.d.ts.map +1 -0
  553. package/dist/molecules/data-viz/index.js +16 -0
  554. package/dist/molecules/data-viz/index.js.map +1 -0
  555. package/dist/molecules/data-viz/line-chart.d.ts +157 -0
  556. package/dist/molecules/data-viz/line-chart.d.ts.map +1 -0
  557. package/dist/molecules/data-viz/line-chart.js +578 -0
  558. package/dist/molecules/data-viz/line-chart.js.map +1 -0
  559. package/dist/molecules/data-viz/sparkline.d.ts +156 -0
  560. package/dist/molecules/data-viz/sparkline.d.ts.map +1 -0
  561. package/dist/molecules/data-viz/sparkline.js +325 -0
  562. package/dist/molecules/data-viz/sparkline.js.map +1 -0
  563. package/dist/molecules/index.d.ts +22 -0
  564. package/dist/molecules/index.d.ts.map +1 -0
  565. package/dist/molecules/index.js +26 -0
  566. package/dist/molecules/index.js.map +1 -0
  567. package/dist/molecules/markdown.d.ts +61 -0
  568. package/dist/molecules/markdown.d.ts.map +1 -0
  569. package/dist/molecules/markdown.js +350 -0
  570. package/dist/molecules/markdown.js.map +1 -0
  571. package/dist/molecules/multi-select.d.ts +105 -0
  572. package/dist/molecules/multi-select.d.ts.map +1 -0
  573. package/dist/molecules/multi-select.js +312 -0
  574. package/dist/molecules/multi-select.js.map +1 -0
  575. package/dist/molecules/radio-group.d.ts +91 -0
  576. package/dist/molecules/radio-group.d.ts.map +1 -0
  577. package/dist/molecules/radio-group.js +148 -0
  578. package/dist/molecules/radio-group.js.map +1 -0
  579. package/dist/molecules/select.d.ts +119 -0
  580. package/dist/molecules/select.d.ts.map +1 -0
  581. package/dist/molecules/select.js +444 -0
  582. package/dist/molecules/select.js.map +1 -0
  583. package/dist/molecules/table.d.ts +106 -0
  584. package/dist/molecules/table.d.ts.map +1 -0
  585. package/dist/molecules/table.js +345 -0
  586. package/dist/molecules/table.js.map +1 -0
  587. package/dist/molecules/tabs.d.ts +132 -0
  588. package/dist/molecules/tabs.d.ts.map +1 -0
  589. package/dist/molecules/tabs.js +376 -0
  590. package/dist/molecules/tabs.js.map +1 -0
  591. package/dist/molecules/tree.d.ts +169 -0
  592. package/dist/molecules/tree.d.ts.map +1 -0
  593. package/dist/molecules/tree.js +431 -0
  594. package/dist/molecules/tree.js.map +1 -0
  595. package/dist/organisms/command-palette.d.ts +217 -0
  596. package/dist/organisms/command-palette.d.ts.map +1 -0
  597. package/dist/organisms/command-palette.js +443 -0
  598. package/dist/organisms/command-palette.js.map +1 -0
  599. package/dist/organisms/data-table.d.ts +173 -0
  600. package/dist/organisms/data-table.d.ts.map +1 -0
  601. package/dist/organisms/data-table.js +428 -0
  602. package/dist/organisms/data-table.js.map +1 -0
  603. package/dist/organisms/file-browser.d.ts +492 -0
  604. package/dist/organisms/file-browser.d.ts.map +1 -0
  605. package/dist/organisms/file-browser.js +807 -0
  606. package/dist/organisms/file-browser.js.map +1 -0
  607. package/dist/organisms/grid.d.ts +234 -0
  608. package/dist/organisms/grid.d.ts.map +1 -0
  609. package/dist/organisms/grid.js +719 -0
  610. package/dist/organisms/grid.js.map +1 -0
  611. package/dist/organisms/index.d.ts +30 -0
  612. package/dist/organisms/index.d.ts.map +1 -0
  613. package/dist/organisms/index.js +92 -0
  614. package/dist/organisms/index.js.map +1 -0
  615. package/dist/organisms/modal.d.ts +251 -0
  616. package/dist/organisms/modal.d.ts.map +1 -0
  617. package/dist/organisms/modal.js +461 -0
  618. package/dist/organisms/modal.js.map +1 -0
  619. package/dist/organisms/overlay-stack.d.ts +200 -0
  620. package/dist/organisms/overlay-stack.d.ts.map +1 -0
  621. package/dist/organisms/overlay-stack.js +341 -0
  622. package/dist/organisms/overlay-stack.js.map +1 -0
  623. package/dist/organisms/scroll-area.d.ts +188 -0
  624. package/dist/organisms/scroll-area.d.ts.map +1 -0
  625. package/dist/organisms/scroll-area.js +348 -0
  626. package/dist/organisms/scroll-area.js.map +1 -0
  627. package/dist/organisms/split-panel.d.ts +183 -0
  628. package/dist/organisms/split-panel.d.ts.map +1 -0
  629. package/dist/organisms/split-panel.js +323 -0
  630. package/dist/organisms/split-panel.js.map +1 -0
  631. package/dist/primitives/canvas.d.ts +322 -0
  632. package/dist/primitives/canvas.d.ts.map +1 -0
  633. package/dist/primitives/canvas.js +833 -0
  634. package/dist/primitives/canvas.js.map +1 -0
  635. package/dist/primitives/context.d.ts +83 -0
  636. package/dist/primitives/context.d.ts.map +1 -0
  637. package/dist/primitives/context.js +101 -0
  638. package/dist/primitives/context.js.map +1 -0
  639. package/dist/primitives/divider.d.ts +52 -0
  640. package/dist/primitives/divider.d.ts.map +1 -0
  641. package/dist/primitives/divider.js +71 -0
  642. package/dist/primitives/divider.js.map +1 -0
  643. package/dist/primitives/index.d.ts +10 -0
  644. package/dist/primitives/index.d.ts.map +1 -0
  645. package/dist/primitives/index.js +10 -0
  646. package/dist/primitives/index.js.map +1 -0
  647. package/dist/primitives/nodes.d.ts +152 -0
  648. package/dist/primitives/nodes.d.ts.map +1 -0
  649. package/dist/primitives/nodes.js +164 -0
  650. package/dist/primitives/nodes.js.map +1 -0
  651. package/dist/primitives/signal.d.ts +136 -0
  652. package/dist/primitives/signal.d.ts.map +1 -0
  653. package/dist/primitives/signal.js +338 -0
  654. package/dist/primitives/signal.js.map +1 -0
  655. package/dist/primitives/store.d.ts +86 -0
  656. package/dist/primitives/store.d.ts.map +1 -0
  657. package/dist/primitives/store.js +147 -0
  658. package/dist/primitives/store.js.map +1 -0
  659. package/dist/storybook/app.d.ts +16 -0
  660. package/dist/storybook/app.d.ts.map +1 -0
  661. package/dist/storybook/app.js +697 -0
  662. package/dist/storybook/app.js.map +1 -0
  663. package/dist/storybook/cli.d.ts +10 -0
  664. package/dist/storybook/cli.d.ts.map +1 -0
  665. package/dist/storybook/cli.js +14 -0
  666. package/dist/storybook/cli.js.map +1 -0
  667. package/dist/storybook/components/compare-view.d.ts +46 -0
  668. package/dist/storybook/components/compare-view.d.ts.map +1 -0
  669. package/dist/storybook/components/compare-view.js +235 -0
  670. package/dist/storybook/components/compare-view.js.map +1 -0
  671. package/dist/storybook/components/index.d.ts +7 -0
  672. package/dist/storybook/components/index.d.ts.map +1 -0
  673. package/dist/storybook/components/index.js +7 -0
  674. package/dist/storybook/components/index.js.map +1 -0
  675. package/dist/storybook/components/log-viewer.d.ts +9 -0
  676. package/dist/storybook/components/log-viewer.d.ts.map +1 -0
  677. package/dist/storybook/components/log-viewer.js +46 -0
  678. package/dist/storybook/components/log-viewer.js.map +1 -0
  679. package/dist/storybook/components/preview.d.ts +28 -0
  680. package/dist/storybook/components/preview.d.ts.map +1 -0
  681. package/dist/storybook/components/preview.js +248 -0
  682. package/dist/storybook/components/preview.js.map +1 -0
  683. package/dist/storybook/components/sidebar.d.ts +29 -0
  684. package/dist/storybook/components/sidebar.d.ts.map +1 -0
  685. package/dist/storybook/components/sidebar.js +176 -0
  686. package/dist/storybook/components/sidebar.js.map +1 -0
  687. package/dist/storybook/core/comparatives.d.ts +94 -0
  688. package/dist/storybook/core/comparatives.d.ts.map +1 -0
  689. package/dist/storybook/core/comparatives.js +301 -0
  690. package/dist/storybook/core/comparatives.js.map +1 -0
  691. package/dist/storybook/core/index.d.ts +8 -0
  692. package/dist/storybook/core/index.d.ts.map +1 -0
  693. package/dist/storybook/core/index.js +8 -0
  694. package/dist/storybook/core/index.js.map +1 -0
  695. package/dist/storybook/core/navigator.d.ts +64 -0
  696. package/dist/storybook/core/navigator.d.ts.map +1 -0
  697. package/dist/storybook/core/navigator.js +279 -0
  698. package/dist/storybook/core/navigator.js.map +1 -0
  699. package/dist/storybook/core/playground.d.ts +73 -0
  700. package/dist/storybook/core/playground.d.ts.map +1 -0
  701. package/dist/storybook/core/playground.js +338 -0
  702. package/dist/storybook/core/playground.js.map +1 -0
  703. package/dist/storybook/core/registry.d.ts +87 -0
  704. package/dist/storybook/core/registry.d.ts.map +1 -0
  705. package/dist/storybook/core/registry.js +222 -0
  706. package/dist/storybook/core/registry.js.map +1 -0
  707. package/dist/storybook/data/ascii-art.d.ts +18 -0
  708. package/dist/storybook/data/ascii-art.d.ts.map +1 -0
  709. package/dist/storybook/data/ascii-art.js +62 -0
  710. package/dist/storybook/data/ascii-art.js.map +1 -0
  711. package/dist/storybook/data/tuiuiu-bird-colored.d.ts +13 -0
  712. package/dist/storybook/data/tuiuiu-bird-colored.d.ts.map +1 -0
  713. package/dist/storybook/data/tuiuiu-bird-colored.js +12 -0
  714. package/dist/storybook/data/tuiuiu-bird-colored.js.map +1 -0
  715. package/dist/storybook/index.d.ts +33 -0
  716. package/dist/storybook/index.d.ts.map +1 -0
  717. package/dist/storybook/index.js +44 -0
  718. package/dist/storybook/index.js.map +1 -0
  719. package/dist/storybook/store.d.ts +39 -0
  720. package/dist/storybook/store.d.ts.map +1 -0
  721. package/dist/storybook/store.js +91 -0
  722. package/dist/storybook/store.js.map +1 -0
  723. package/dist/storybook/stories/apps/index.d.ts +24 -0
  724. package/dist/storybook/stories/apps/index.d.ts.map +1 -0
  725. package/dist/storybook/stories/apps/index.js +434 -0
  726. package/dist/storybook/stories/apps/index.js.map +1 -0
  727. package/dist/storybook/stories/atoms/index.d.ts +40 -0
  728. package/dist/storybook/stories/atoms/index.d.ts.map +1 -0
  729. package/dist/storybook/stories/atoms/index.js +462 -0
  730. package/dist/storybook/stories/atoms/index.js.map +1 -0
  731. package/dist/storybook/stories/index.d.ts +37 -0
  732. package/dist/storybook/stories/index.d.ts.map +1 -0
  733. package/dist/storybook/stories/index.js +56 -0
  734. package/dist/storybook/stories/index.js.map +1 -0
  735. package/dist/storybook/stories/molecules/index.d.ts +68 -0
  736. package/dist/storybook/stories/molecules/index.d.ts.map +1 -0
  737. package/dist/storybook/stories/molecules/index.js +587 -0
  738. package/dist/storybook/stories/molecules/index.js.map +1 -0
  739. package/dist/storybook/stories/organisms/index.d.ts +29 -0
  740. package/dist/storybook/stories/organisms/index.d.ts.map +1 -0
  741. package/dist/storybook/stories/organisms/index.js +677 -0
  742. package/dist/storybook/stories/organisms/index.js.map +1 -0
  743. package/dist/storybook/types.d.ts +40 -0
  744. package/dist/storybook/types.d.ts.map +1 -0
  745. package/dist/storybook/types.js +5 -0
  746. package/dist/storybook/types.js.map +1 -0
  747. package/dist/styling/index.d.ts +12 -0
  748. package/dist/styling/index.d.ts.map +1 -0
  749. package/dist/styling/index.js +24 -0
  750. package/dist/styling/index.js.map +1 -0
  751. package/dist/styling/parser.d.ts +217 -0
  752. package/dist/styling/parser.d.ts.map +1 -0
  753. package/dist/styling/parser.js +901 -0
  754. package/dist/styling/parser.js.map +1 -0
  755. package/dist/styling/resolver.d.ts +217 -0
  756. package/dist/styling/resolver.d.ts.map +1 -0
  757. package/dist/styling/resolver.js +628 -0
  758. package/dist/styling/resolver.js.map +1 -0
  759. package/dist/styling/tokenizer.d.ts +121 -0
  760. package/dist/styling/tokenizer.d.ts.map +1 -0
  761. package/dist/styling/tokenizer.js +553 -0
  762. package/dist/styling/tokenizer.js.map +1 -0
  763. package/dist/templates/app.d.ts +205 -0
  764. package/dist/templates/app.d.ts.map +1 -0
  765. package/dist/templates/app.js +286 -0
  766. package/dist/templates/app.js.map +1 -0
  767. package/dist/templates/index.d.ts +30 -0
  768. package/dist/templates/index.d.ts.map +1 -0
  769. package/dist/templates/index.js +40 -0
  770. package/dist/templates/index.js.map +1 -0
  771. package/dist/templates/stack.d.ts +189 -0
  772. package/dist/templates/stack.d.ts.map +1 -0
  773. package/dist/templates/stack.js +170 -0
  774. package/dist/templates/stack.js.map +1 -0
  775. package/dist/utils/batcher.d.ts +88 -0
  776. package/dist/utils/batcher.d.ts.map +1 -0
  777. package/dist/utils/batcher.js +172 -0
  778. package/dist/utils/batcher.js.map +1 -0
  779. package/dist/utils/cursor.d.ts +28 -0
  780. package/dist/utils/cursor.d.ts.map +1 -0
  781. package/dist/utils/cursor.js +86 -0
  782. package/dist/utils/cursor.js.map +1 -0
  783. package/dist/utils/fs-storage.d.ts +23 -0
  784. package/dist/utils/fs-storage.d.ts.map +1 -0
  785. package/dist/utils/fs-storage.js +34 -0
  786. package/dist/utils/fs-storage.js.map +1 -0
  787. package/dist/utils/index.d.ts +14 -0
  788. package/dist/utils/index.d.ts.map +1 -0
  789. package/dist/utils/index.js +15 -0
  790. package/dist/utils/index.js.map +1 -0
  791. package/dist/utils/log-update.d.ts +31 -0
  792. package/dist/utils/log-update.d.ts.map +1 -0
  793. package/dist/utils/log-update.js +147 -0
  794. package/dist/utils/log-update.js.map +1 -0
  795. package/dist/utils/text-utils.d.ts +151 -0
  796. package/dist/utils/text-utils.d.ts.map +1 -0
  797. package/dist/utils/text-utils.js +699 -0
  798. package/dist/utils/text-utils.js.map +1 -0
  799. package/dist/utils/types.d.ts +205 -0
  800. package/dist/utils/types.d.ts.map +1 -0
  801. package/dist/utils/types.js +430 -0
  802. package/dist/utils/types.js.map +1 -0
  803. package/package.json +142 -0
@@ -0,0 +1,2726 @@
1
+ /**
2
+ * Syntax Highlighter
3
+ *
4
+ * Zero-dependency syntax highlighting with support for 20+ languages.
5
+ * Features:
6
+ * - Token-based highlighting
7
+ * - Multiple themes (dark, light, high-contrast, monokai, etc.)
8
+ * - ANSI escape sequence output
9
+ * - VNode output for rendering
10
+ * - Line-by-line API
11
+ * - Bracket matching
12
+ * - Indentation guides
13
+ *
14
+ * @example
15
+ * ```typescript
16
+ * const tokens = tokenize('const x = 42;', 'typescript');
17
+ * const ansi = tokensToAnsi(tokens, themes.monokai);
18
+ * console.log(ansi);
19
+ * ```
20
+ */
21
+ // =============================================================================
22
+ // Language Definitions
23
+ // =============================================================================
24
+ const languages = {
25
+ javascript: {
26
+ name: 'JavaScript',
27
+ aliases: ['js'],
28
+ controlKeywords: [
29
+ 'if',
30
+ 'else',
31
+ 'for',
32
+ 'while',
33
+ 'do',
34
+ 'switch',
35
+ 'case',
36
+ 'default',
37
+ 'break',
38
+ 'continue',
39
+ 'return',
40
+ 'throw',
41
+ 'try',
42
+ 'catch',
43
+ 'finally',
44
+ ],
45
+ declarationKeywords: [
46
+ 'const',
47
+ 'let',
48
+ 'var',
49
+ 'function',
50
+ 'class',
51
+ 'async',
52
+ 'await',
53
+ 'static',
54
+ 'get',
55
+ 'set',
56
+ 'export',
57
+ 'import',
58
+ 'from',
59
+ 'extends',
60
+ ],
61
+ operatorKeywords: ['typeof', 'instanceof', 'new', 'delete', 'void', 'in', 'of', 'yield'],
62
+ builtins: [
63
+ 'console',
64
+ 'Math',
65
+ 'JSON',
66
+ 'Object',
67
+ 'Array',
68
+ 'String',
69
+ 'Number',
70
+ 'Boolean',
71
+ 'Date',
72
+ 'Promise',
73
+ 'Map',
74
+ 'Set',
75
+ 'WeakMap',
76
+ 'WeakSet',
77
+ 'Symbol',
78
+ 'BigInt',
79
+ 'RegExp',
80
+ 'Error',
81
+ 'fetch',
82
+ 'setTimeout',
83
+ 'setInterval',
84
+ 'clearTimeout',
85
+ 'clearInterval',
86
+ 'require',
87
+ 'module',
88
+ 'exports',
89
+ 'process',
90
+ ],
91
+ constants: ['Infinity', 'NaN'],
92
+ booleans: ['true', 'false'],
93
+ nulls: ['null', 'undefined'],
94
+ stringDelimiters: ["'", '"'],
95
+ templateDelimiter: '`',
96
+ lineComment: '//',
97
+ blockCommentStart: '/*',
98
+ blockCommentEnd: '*/',
99
+ docCommentStart: '/**',
100
+ numberPatterns: {
101
+ hex: /^0x[0-9a-f]+n?/i,
102
+ binary: /^0b[01]+n?/i,
103
+ octal: /^0o[0-7]+n?/i,
104
+ float: /^\d+\.\d*(?:e[+-]?\d+)?/i,
105
+ decimal: /^\d+n?/,
106
+ },
107
+ operators: [
108
+ '===',
109
+ '!==',
110
+ '==',
111
+ '!=',
112
+ '>=',
113
+ '<=',
114
+ '=>',
115
+ '&&',
116
+ '||',
117
+ '??',
118
+ '++',
119
+ '--',
120
+ '**',
121
+ '+=',
122
+ '-=',
123
+ '*=',
124
+ '/=',
125
+ '%=',
126
+ '&=',
127
+ '|=',
128
+ '^=',
129
+ '>>=',
130
+ '<<=',
131
+ '>>>=',
132
+ '...',
133
+ '?.',
134
+ '+',
135
+ '-',
136
+ '*',
137
+ '/',
138
+ '%',
139
+ '&',
140
+ '|',
141
+ '^',
142
+ '~',
143
+ '!',
144
+ '<',
145
+ '>',
146
+ '=',
147
+ '?',
148
+ ':',
149
+ ],
150
+ customPatterns: [
151
+ { pattern: /^@\w+/, type: 'decorator' },
152
+ { pattern: /^\/(?![/*])(?:[^/\\]|\\.)+\/[gimsuy]*/, type: 'string.regex' },
153
+ ],
154
+ },
155
+ typescript: {
156
+ name: 'TypeScript',
157
+ aliases: ['ts'],
158
+ controlKeywords: [
159
+ 'if',
160
+ 'else',
161
+ 'for',
162
+ 'while',
163
+ 'do',
164
+ 'switch',
165
+ 'case',
166
+ 'default',
167
+ 'break',
168
+ 'continue',
169
+ 'return',
170
+ 'throw',
171
+ 'try',
172
+ 'catch',
173
+ 'finally',
174
+ ],
175
+ declarationKeywords: [
176
+ 'const',
177
+ 'let',
178
+ 'var',
179
+ 'function',
180
+ 'class',
181
+ 'async',
182
+ 'await',
183
+ 'static',
184
+ 'get',
185
+ 'set',
186
+ 'export',
187
+ 'import',
188
+ 'from',
189
+ 'extends',
190
+ 'implements',
191
+ 'interface',
192
+ 'type',
193
+ 'enum',
194
+ 'namespace',
195
+ 'abstract',
196
+ 'declare',
197
+ 'readonly',
198
+ 'private',
199
+ 'protected',
200
+ 'public',
201
+ ],
202
+ operatorKeywords: [
203
+ 'typeof',
204
+ 'instanceof',
205
+ 'new',
206
+ 'delete',
207
+ 'void',
208
+ 'in',
209
+ 'of',
210
+ 'yield',
211
+ 'as',
212
+ 'is',
213
+ 'keyof',
214
+ 'infer',
215
+ ],
216
+ builtins: [
217
+ 'console',
218
+ 'Math',
219
+ 'JSON',
220
+ 'Object',
221
+ 'Array',
222
+ 'String',
223
+ 'Number',
224
+ 'Boolean',
225
+ 'Date',
226
+ 'Promise',
227
+ 'Map',
228
+ 'Set',
229
+ 'WeakMap',
230
+ 'WeakSet',
231
+ 'Symbol',
232
+ 'BigInt',
233
+ 'RegExp',
234
+ 'Error',
235
+ 'Partial',
236
+ 'Required',
237
+ 'Readonly',
238
+ 'Record',
239
+ 'Pick',
240
+ 'Omit',
241
+ 'Exclude',
242
+ 'Extract',
243
+ 'NonNullable',
244
+ 'ReturnType',
245
+ 'Parameters',
246
+ 'InstanceType',
247
+ 'ThisType',
248
+ 'Awaited',
249
+ ],
250
+ types: [
251
+ 'string',
252
+ 'number',
253
+ 'boolean',
254
+ 'void',
255
+ 'never',
256
+ 'any',
257
+ 'unknown',
258
+ 'object',
259
+ 'symbol',
260
+ 'bigint',
261
+ ],
262
+ constants: ['Infinity', 'NaN'],
263
+ booleans: ['true', 'false'],
264
+ nulls: ['null', 'undefined'],
265
+ stringDelimiters: ["'", '"'],
266
+ templateDelimiter: '`',
267
+ lineComment: '//',
268
+ blockCommentStart: '/*',
269
+ blockCommentEnd: '*/',
270
+ docCommentStart: '/**',
271
+ numberPatterns: {
272
+ hex: /^0x[0-9a-f]+n?/i,
273
+ binary: /^0b[01]+n?/i,
274
+ octal: /^0o[0-7]+n?/i,
275
+ float: /^\d+\.\d*(?:e[+-]?\d+)?/i,
276
+ decimal: /^\d+n?/,
277
+ },
278
+ operators: [
279
+ '===',
280
+ '!==',
281
+ '==',
282
+ '!=',
283
+ '>=',
284
+ '<=',
285
+ '=>',
286
+ '&&',
287
+ '||',
288
+ '??',
289
+ '++',
290
+ '--',
291
+ '**',
292
+ '+=',
293
+ '-=',
294
+ '*=',
295
+ '/=',
296
+ '%=',
297
+ '&=',
298
+ '|=',
299
+ '^=',
300
+ '>>=',
301
+ '<<=',
302
+ '>>>=',
303
+ '...',
304
+ '?.',
305
+ '+',
306
+ '-',
307
+ '*',
308
+ '/',
309
+ '%',
310
+ '&',
311
+ '|',
312
+ '^',
313
+ '~',
314
+ '!',
315
+ '<',
316
+ '>',
317
+ '=',
318
+ '?',
319
+ ':',
320
+ ],
321
+ customPatterns: [
322
+ { pattern: /^@\w+/, type: 'decorator' },
323
+ { pattern: /^\/(?![/*])(?:[^/\\]|\\.)+\/[gimsuy]*/, type: 'string.regex' },
324
+ ],
325
+ },
326
+ python: {
327
+ name: 'Python',
328
+ aliases: ['py'],
329
+ controlKeywords: [
330
+ 'if',
331
+ 'elif',
332
+ 'else',
333
+ 'for',
334
+ 'while',
335
+ 'break',
336
+ 'continue',
337
+ 'return',
338
+ 'raise',
339
+ 'try',
340
+ 'except',
341
+ 'finally',
342
+ 'with',
343
+ 'as',
344
+ 'pass',
345
+ 'yield',
346
+ 'assert',
347
+ 'match',
348
+ 'case',
349
+ ],
350
+ declarationKeywords: [
351
+ 'def',
352
+ 'class',
353
+ 'import',
354
+ 'from',
355
+ 'async',
356
+ 'await',
357
+ 'lambda',
358
+ 'global',
359
+ 'nonlocal',
360
+ ],
361
+ operatorKeywords: ['and', 'or', 'not', 'in', 'is', 'del'],
362
+ builtins: [
363
+ 'print',
364
+ 'len',
365
+ 'range',
366
+ 'str',
367
+ 'int',
368
+ 'float',
369
+ 'list',
370
+ 'dict',
371
+ 'set',
372
+ 'tuple',
373
+ 'bool',
374
+ 'type',
375
+ 'isinstance',
376
+ 'issubclass',
377
+ 'hasattr',
378
+ 'getattr',
379
+ 'setattr',
380
+ 'delattr',
381
+ 'open',
382
+ 'input',
383
+ 'map',
384
+ 'filter',
385
+ 'zip',
386
+ 'enumerate',
387
+ 'sorted',
388
+ 'reversed',
389
+ 'sum',
390
+ 'min',
391
+ 'max',
392
+ 'abs',
393
+ 'round',
394
+ 'any',
395
+ 'all',
396
+ 'iter',
397
+ 'next',
398
+ 'super',
399
+ 'object',
400
+ 'repr',
401
+ 'vars',
402
+ 'dir',
403
+ 'id',
404
+ 'hex',
405
+ 'oct',
406
+ 'bin',
407
+ 'chr',
408
+ 'ord',
409
+ 'format',
410
+ 'staticmethod',
411
+ 'classmethod',
412
+ 'property',
413
+ ],
414
+ constants: ['self', 'cls', '__name__', '__main__', '__file__', '__doc__'],
415
+ booleans: ['True', 'False'],
416
+ nulls: ['None'],
417
+ stringDelimiters: ["'", '"'],
418
+ lineComment: '#',
419
+ numberPatterns: {
420
+ hex: /^0x[0-9a-f]+/i,
421
+ binary: /^0b[01]+/i,
422
+ octal: /^0o[0-7]+/i,
423
+ float: /^\d+\.\d*(?:e[+-]?\d+)?/i,
424
+ decimal: /^\d+/,
425
+ },
426
+ operators: [
427
+ '**',
428
+ '//',
429
+ '==',
430
+ '!=',
431
+ '>=',
432
+ '<=',
433
+ '+=',
434
+ '-=',
435
+ '*=',
436
+ '/=',
437
+ '//=',
438
+ '%=',
439
+ '**=',
440
+ '&=',
441
+ '|=',
442
+ '^=',
443
+ '>>=',
444
+ '<<=',
445
+ ':=',
446
+ '->',
447
+ '+',
448
+ '-',
449
+ '*',
450
+ '/',
451
+ '%',
452
+ '&',
453
+ '|',
454
+ '^',
455
+ '~',
456
+ '<',
457
+ '>',
458
+ '=',
459
+ '@',
460
+ ],
461
+ customPatterns: [
462
+ { pattern: /^@\w+/, type: 'decorator' },
463
+ { pattern: /^f"[^"]*"/, type: 'string.template' },
464
+ { pattern: /^f'[^']*'/, type: 'string.template' },
465
+ { pattern: /^r"[^"]*"/, type: 'string.regex' },
466
+ { pattern: /^r'[^']*'/, type: 'string.regex' },
467
+ { pattern: /^"""[\s\S]*?"""/, type: 'string' },
468
+ { pattern: /^'''[\s\S]*?'''/, type: 'string' },
469
+ ],
470
+ },
471
+ go: {
472
+ name: 'Go',
473
+ aliases: ['golang'],
474
+ controlKeywords: [
475
+ 'if',
476
+ 'else',
477
+ 'for',
478
+ 'range',
479
+ 'switch',
480
+ 'case',
481
+ 'default',
482
+ 'break',
483
+ 'continue',
484
+ 'return',
485
+ 'goto',
486
+ 'fallthrough',
487
+ 'defer',
488
+ 'go',
489
+ 'select',
490
+ ],
491
+ declarationKeywords: [
492
+ 'func',
493
+ 'var',
494
+ 'const',
495
+ 'type',
496
+ 'struct',
497
+ 'interface',
498
+ 'map',
499
+ 'chan',
500
+ 'package',
501
+ 'import',
502
+ ],
503
+ operatorKeywords: [],
504
+ builtins: [
505
+ 'make',
506
+ 'new',
507
+ 'append',
508
+ 'len',
509
+ 'cap',
510
+ 'close',
511
+ 'delete',
512
+ 'copy',
513
+ 'panic',
514
+ 'recover',
515
+ 'print',
516
+ 'println',
517
+ 'complex',
518
+ 'real',
519
+ 'imag',
520
+ ],
521
+ types: [
522
+ 'string',
523
+ 'int',
524
+ 'int8',
525
+ 'int16',
526
+ 'int32',
527
+ 'int64',
528
+ 'uint',
529
+ 'uint8',
530
+ 'uint16',
531
+ 'uint32',
532
+ 'uint64',
533
+ 'uintptr',
534
+ 'float32',
535
+ 'float64',
536
+ 'complex64',
537
+ 'complex128',
538
+ 'bool',
539
+ 'byte',
540
+ 'rune',
541
+ 'error',
542
+ 'any',
543
+ ],
544
+ constants: ['iota'],
545
+ booleans: ['true', 'false'],
546
+ nulls: ['nil'],
547
+ stringDelimiters: ['"'],
548
+ lineComment: '//',
549
+ blockCommentStart: '/*',
550
+ blockCommentEnd: '*/',
551
+ numberPatterns: {
552
+ hex: /^0x[0-9a-f]+/i,
553
+ binary: /^0b[01]+/i,
554
+ octal: /^0o[0-7]+/i,
555
+ float: /^\d+\.\d*(?:e[+-]?\d+)?/i,
556
+ decimal: /^\d+/,
557
+ },
558
+ operators: [
559
+ ':=',
560
+ '==',
561
+ '!=',
562
+ '>=',
563
+ '<=',
564
+ '&&',
565
+ '||',
566
+ '++',
567
+ '--',
568
+ '+=',
569
+ '-=',
570
+ '*=',
571
+ '/=',
572
+ '%=',
573
+ '&=',
574
+ '|=',
575
+ '^=',
576
+ '>>=',
577
+ '<<=',
578
+ '&^=',
579
+ '<-',
580
+ '...',
581
+ '+',
582
+ '-',
583
+ '*',
584
+ '/',
585
+ '%',
586
+ '&',
587
+ '|',
588
+ '^',
589
+ '!',
590
+ '<',
591
+ '>',
592
+ '=',
593
+ ],
594
+ customPatterns: [{ pattern: /^`[^`]*`/, type: 'string' }],
595
+ },
596
+ rust: {
597
+ name: 'Rust',
598
+ aliases: ['rs'],
599
+ controlKeywords: [
600
+ 'if',
601
+ 'else',
602
+ 'for',
603
+ 'while',
604
+ 'loop',
605
+ 'match',
606
+ 'break',
607
+ 'continue',
608
+ 'return',
609
+ 'yield',
610
+ ],
611
+ declarationKeywords: [
612
+ 'fn',
613
+ 'let',
614
+ 'mut',
615
+ 'const',
616
+ 'static',
617
+ 'struct',
618
+ 'enum',
619
+ 'impl',
620
+ 'trait',
621
+ 'type',
622
+ 'where',
623
+ 'pub',
624
+ 'mod',
625
+ 'use',
626
+ 'crate',
627
+ 'extern',
628
+ 'async',
629
+ 'await',
630
+ 'dyn',
631
+ 'unsafe',
632
+ 'ref',
633
+ 'move',
634
+ ],
635
+ operatorKeywords: ['as', 'in'],
636
+ builtins: [
637
+ 'Some',
638
+ 'None',
639
+ 'Ok',
640
+ 'Err',
641
+ 'println',
642
+ 'print',
643
+ 'format',
644
+ 'panic',
645
+ 'assert',
646
+ 'assert_eq',
647
+ 'assert_ne',
648
+ 'vec',
649
+ 'todo',
650
+ 'unimplemented',
651
+ 'unreachable',
652
+ ],
653
+ types: [
654
+ 'i8',
655
+ 'i16',
656
+ 'i32',
657
+ 'i64',
658
+ 'i128',
659
+ 'isize',
660
+ 'u8',
661
+ 'u16',
662
+ 'u32',
663
+ 'u64',
664
+ 'u128',
665
+ 'usize',
666
+ 'f32',
667
+ 'f64',
668
+ 'bool',
669
+ 'char',
670
+ 'str',
671
+ 'String',
672
+ 'Vec',
673
+ 'Option',
674
+ 'Result',
675
+ 'Box',
676
+ 'Rc',
677
+ 'Arc',
678
+ 'Cell',
679
+ 'RefCell',
680
+ 'HashMap',
681
+ 'HashSet',
682
+ 'BTreeMap',
683
+ 'BTreeSet',
684
+ ],
685
+ constants: ['self', 'Self'],
686
+ booleans: ['true', 'false'],
687
+ nulls: [],
688
+ stringDelimiters: ['"'],
689
+ lineComment: '//',
690
+ blockCommentStart: '/*',
691
+ blockCommentEnd: '*/',
692
+ docCommentStart: '///',
693
+ numberPatterns: {
694
+ hex: /^0x[0-9a-f_]+(?:i8|i16|i32|i64|i128|isize|u8|u16|u32|u64|u128|usize)?/i,
695
+ binary: /^0b[01_]+(?:i8|i16|i32|i64|i128|isize|u8|u16|u32|u64|u128|usize)?/i,
696
+ octal: /^0o[0-7_]+(?:i8|i16|i32|i64|i128|isize|u8|u16|u32|u64|u128|usize)?/i,
697
+ float: /^\d+(?:_\d+)*\.\d*(?:_\d+)*(?:e[+-]?\d+)?(?:f32|f64)?/i,
698
+ decimal: /^\d+(?:_\d+)*(?:i8|i16|i32|i64|i128|isize|u8|u16|u32|u64|u128|usize)?/,
699
+ },
700
+ operators: [
701
+ '..=',
702
+ '..',
703
+ '=>',
704
+ '->',
705
+ '::',
706
+ '==',
707
+ '!=',
708
+ '>=',
709
+ '<=',
710
+ '&&',
711
+ '||',
712
+ '+=',
713
+ '-=',
714
+ '*=',
715
+ '/=',
716
+ '%=',
717
+ '&=',
718
+ '|=',
719
+ '^=',
720
+ '>>=',
721
+ '<<=',
722
+ '+',
723
+ '-',
724
+ '*',
725
+ '/',
726
+ '%',
727
+ '&',
728
+ '|',
729
+ '^',
730
+ '!',
731
+ '<',
732
+ '>',
733
+ '=',
734
+ '?',
735
+ ],
736
+ customPatterns: [
737
+ { pattern: /^#!\[[\s\S]*?\]/, type: 'meta' },
738
+ { pattern: /^#\[[\s\S]*?\]/, type: 'decorator' },
739
+ { pattern: /^r#*"[^"]*"#*/, type: 'string' },
740
+ { pattern: /^b"[^"]*"/, type: 'string' },
741
+ { pattern: /^'[^'\\]'/, type: 'string' },
742
+ { pattern: /^'\\.'/, type: 'string.escape' },
743
+ { pattern: /^'\w+/, type: 'type.parameter' },
744
+ ],
745
+ },
746
+ java: {
747
+ name: 'Java',
748
+ aliases: [],
749
+ controlKeywords: [
750
+ 'if',
751
+ 'else',
752
+ 'for',
753
+ 'while',
754
+ 'do',
755
+ 'switch',
756
+ 'case',
757
+ 'default',
758
+ 'break',
759
+ 'continue',
760
+ 'return',
761
+ 'throw',
762
+ 'try',
763
+ 'catch',
764
+ 'finally',
765
+ ],
766
+ declarationKeywords: [
767
+ 'class',
768
+ 'interface',
769
+ 'enum',
770
+ 'extends',
771
+ 'implements',
772
+ 'import',
773
+ 'package',
774
+ 'new',
775
+ 'public',
776
+ 'private',
777
+ 'protected',
778
+ 'static',
779
+ 'final',
780
+ 'abstract',
781
+ 'synchronized',
782
+ 'volatile',
783
+ 'transient',
784
+ 'native',
785
+ 'strictfp',
786
+ 'throws',
787
+ 'record',
788
+ 'sealed',
789
+ 'permits',
790
+ 'var',
791
+ ],
792
+ operatorKeywords: ['instanceof'],
793
+ builtins: ['System', 'String', 'Integer', 'Double', 'Float', 'Boolean', 'Character', 'Object'],
794
+ types: ['int', 'long', 'short', 'byte', 'float', 'double', 'char', 'boolean', 'void'],
795
+ constants: ['this', 'super'],
796
+ booleans: ['true', 'false'],
797
+ nulls: ['null'],
798
+ stringDelimiters: ['"'],
799
+ lineComment: '//',
800
+ blockCommentStart: '/*',
801
+ blockCommentEnd: '*/',
802
+ docCommentStart: '/**',
803
+ numberPatterns: {
804
+ hex: /^0x[0-9a-f_]+[lL]?/i,
805
+ binary: /^0b[01_]+[lL]?/i,
806
+ float: /^\d+(?:_\d+)*\.?\d*(?:_\d+)*(?:e[+-]?\d+)?[fFdD]?/i,
807
+ decimal: /^\d+(?:_\d+)*[lL]?/,
808
+ },
809
+ operators: [
810
+ '==',
811
+ '!=',
812
+ '>=',
813
+ '<=',
814
+ '&&',
815
+ '||',
816
+ '++',
817
+ '--',
818
+ '+=',
819
+ '-=',
820
+ '*=',
821
+ '/=',
822
+ '%=',
823
+ '&=',
824
+ '|=',
825
+ '^=',
826
+ '>>=',
827
+ '<<=',
828
+ '>>>=',
829
+ '->',
830
+ '::',
831
+ '+',
832
+ '-',
833
+ '*',
834
+ '/',
835
+ '%',
836
+ '&',
837
+ '|',
838
+ '^',
839
+ '~',
840
+ '!',
841
+ '<',
842
+ '>',
843
+ '=',
844
+ '?',
845
+ ':',
846
+ ],
847
+ customPatterns: [{ pattern: /^@\w+/, type: 'decorator' }],
848
+ },
849
+ c: {
850
+ name: 'C',
851
+ aliases: ['h'],
852
+ controlKeywords: [
853
+ 'if',
854
+ 'else',
855
+ 'for',
856
+ 'while',
857
+ 'do',
858
+ 'switch',
859
+ 'case',
860
+ 'default',
861
+ 'break',
862
+ 'continue',
863
+ 'return',
864
+ 'goto',
865
+ ],
866
+ declarationKeywords: [
867
+ 'struct',
868
+ 'union',
869
+ 'enum',
870
+ 'typedef',
871
+ 'extern',
872
+ 'static',
873
+ 'const',
874
+ 'volatile',
875
+ 'register',
876
+ 'inline',
877
+ 'restrict',
878
+ 'auto',
879
+ 'signed',
880
+ 'unsigned',
881
+ ],
882
+ operatorKeywords: ['sizeof'],
883
+ builtins: ['printf', 'scanf', 'malloc', 'free', 'calloc', 'realloc', 'sizeof', 'NULL'],
884
+ types: ['int', 'long', 'short', 'char', 'float', 'double', 'void', 'size_t', 'ptrdiff_t'],
885
+ constants: ['NULL', 'EOF', 'stdin', 'stdout', 'stderr'],
886
+ booleans: [],
887
+ nulls: ['NULL'],
888
+ stringDelimiters: ['"'],
889
+ lineComment: '//',
890
+ blockCommentStart: '/*',
891
+ blockCommentEnd: '*/',
892
+ numberPatterns: {
893
+ hex: /^0x[0-9a-f]+[uUlL]*/i,
894
+ octal: /^0[0-7]+[uUlL]*/,
895
+ float: /^\d+\.\d*(?:e[+-]?\d+)?[fFlL]?/i,
896
+ decimal: /^\d+[uUlL]*/,
897
+ },
898
+ operators: [
899
+ '->',
900
+ '++',
901
+ '--',
902
+ '==',
903
+ '!=',
904
+ '>=',
905
+ '<=',
906
+ '&&',
907
+ '||',
908
+ '+=',
909
+ '-=',
910
+ '*=',
911
+ '/=',
912
+ '%=',
913
+ '&=',
914
+ '|=',
915
+ '^=',
916
+ '>>=',
917
+ '<<=',
918
+ '+',
919
+ '-',
920
+ '*',
921
+ '/',
922
+ '%',
923
+ '&',
924
+ '|',
925
+ '^',
926
+ '~',
927
+ '!',
928
+ '<',
929
+ '>',
930
+ '=',
931
+ '?',
932
+ ':',
933
+ ],
934
+ customPatterns: [
935
+ { pattern: /^#\s*\w+.*/, type: 'meta' },
936
+ { pattern: /^'(?:[^'\\]|\\.)+'/, type: 'string' },
937
+ ],
938
+ },
939
+ cpp: {
940
+ name: 'C++',
941
+ aliases: ['cxx', 'cc', 'hpp', 'hxx'],
942
+ controlKeywords: [
943
+ 'if',
944
+ 'else',
945
+ 'for',
946
+ 'while',
947
+ 'do',
948
+ 'switch',
949
+ 'case',
950
+ 'default',
951
+ 'break',
952
+ 'continue',
953
+ 'return',
954
+ 'goto',
955
+ 'throw',
956
+ 'try',
957
+ 'catch',
958
+ ],
959
+ declarationKeywords: [
960
+ 'class',
961
+ 'struct',
962
+ 'union',
963
+ 'enum',
964
+ 'typedef',
965
+ 'extern',
966
+ 'static',
967
+ 'const',
968
+ 'constexpr',
969
+ 'consteval',
970
+ 'constinit',
971
+ 'volatile',
972
+ 'mutable',
973
+ 'register',
974
+ 'inline',
975
+ 'virtual',
976
+ 'override',
977
+ 'final',
978
+ 'explicit',
979
+ 'friend',
980
+ 'public',
981
+ 'private',
982
+ 'protected',
983
+ 'namespace',
984
+ 'using',
985
+ 'template',
986
+ 'typename',
987
+ 'concept',
988
+ 'requires',
989
+ 'co_await',
990
+ 'co_return',
991
+ 'co_yield',
992
+ ],
993
+ operatorKeywords: ['sizeof', 'alignof', 'typeid', 'new', 'delete', 'noexcept', 'decltype'],
994
+ builtins: [
995
+ 'std',
996
+ 'cout',
997
+ 'cin',
998
+ 'endl',
999
+ 'string',
1000
+ 'vector',
1001
+ 'map',
1002
+ 'set',
1003
+ 'unique_ptr',
1004
+ 'shared_ptr',
1005
+ ],
1006
+ types: [
1007
+ 'int',
1008
+ 'long',
1009
+ 'short',
1010
+ 'char',
1011
+ 'float',
1012
+ 'double',
1013
+ 'void',
1014
+ 'bool',
1015
+ 'wchar_t',
1016
+ 'char8_t',
1017
+ 'char16_t',
1018
+ 'char32_t',
1019
+ 'auto',
1020
+ 'size_t',
1021
+ ],
1022
+ constants: ['this', 'nullptr'],
1023
+ booleans: ['true', 'false'],
1024
+ nulls: ['nullptr', 'NULL'],
1025
+ stringDelimiters: ['"'],
1026
+ lineComment: '//',
1027
+ blockCommentStart: '/*',
1028
+ blockCommentEnd: '*/',
1029
+ numberPatterns: {
1030
+ hex: /^0x[0-9a-f']+[uUlL]*/i,
1031
+ binary: /^0b[01']+[uUlL]*/i,
1032
+ octal: /^0[0-7']+[uUlL]*/,
1033
+ float: /^\d+(?:'\d+)*\.\d*(?:'\d+)*(?:e[+-]?\d+)?[fFlL]?/i,
1034
+ decimal: /^\d+(?:'\d+)*[uUlL]*/,
1035
+ },
1036
+ operators: [
1037
+ '::',
1038
+ '->',
1039
+ '.*',
1040
+ '->*',
1041
+ '++',
1042
+ '--',
1043
+ '==',
1044
+ '!=',
1045
+ '>=',
1046
+ '<=',
1047
+ '<=>',
1048
+ '&&',
1049
+ '||',
1050
+ '+=',
1051
+ '-=',
1052
+ '*=',
1053
+ '/=',
1054
+ '%=',
1055
+ '&=',
1056
+ '|=',
1057
+ '^=',
1058
+ '>>=',
1059
+ '<<=',
1060
+ '+',
1061
+ '-',
1062
+ '*',
1063
+ '/',
1064
+ '%',
1065
+ '&',
1066
+ '|',
1067
+ '^',
1068
+ '~',
1069
+ '!',
1070
+ '<',
1071
+ '>',
1072
+ '=',
1073
+ '?',
1074
+ ':',
1075
+ ],
1076
+ customPatterns: [
1077
+ { pattern: /^#\s*\w+.*/, type: 'meta' },
1078
+ { pattern: /^R"[^(]*\([^)]*\)[^"]*"/, type: 'string' },
1079
+ { pattern: /^'(?:[^'\\]|\\.)+'/, type: 'string' },
1080
+ ],
1081
+ },
1082
+ ruby: {
1083
+ name: 'Ruby',
1084
+ aliases: ['rb'],
1085
+ controlKeywords: [
1086
+ 'if',
1087
+ 'elsif',
1088
+ 'else',
1089
+ 'unless',
1090
+ 'case',
1091
+ 'when',
1092
+ 'while',
1093
+ 'until',
1094
+ 'for',
1095
+ 'break',
1096
+ 'next',
1097
+ 'redo',
1098
+ 'retry',
1099
+ 'return',
1100
+ 'raise',
1101
+ 'rescue',
1102
+ 'ensure',
1103
+ 'begin',
1104
+ 'end',
1105
+ 'then',
1106
+ 'do',
1107
+ 'yield',
1108
+ ],
1109
+ declarationKeywords: [
1110
+ 'def',
1111
+ 'class',
1112
+ 'module',
1113
+ 'attr_reader',
1114
+ 'attr_writer',
1115
+ 'attr_accessor',
1116
+ 'include',
1117
+ 'extend',
1118
+ 'require',
1119
+ 'require_relative',
1120
+ 'load',
1121
+ 'alias',
1122
+ 'private',
1123
+ 'protected',
1124
+ 'public',
1125
+ 'lambda',
1126
+ 'proc',
1127
+ ],
1128
+ operatorKeywords: ['and', 'or', 'not', 'in', 'defined?'],
1129
+ builtins: [
1130
+ 'puts',
1131
+ 'print',
1132
+ 'p',
1133
+ 'gets',
1134
+ 'Array',
1135
+ 'Hash',
1136
+ 'String',
1137
+ 'Integer',
1138
+ 'Float',
1139
+ 'Symbol',
1140
+ 'Range',
1141
+ 'Regexp',
1142
+ 'Time',
1143
+ 'File',
1144
+ 'IO',
1145
+ 'Dir',
1146
+ 'Proc',
1147
+ 'Method',
1148
+ 'Binding',
1149
+ 'Object',
1150
+ 'Class',
1151
+ 'Module',
1152
+ ],
1153
+ constants: ['self', '__FILE__', '__LINE__', '__ENCODING__', 'ARGV', 'ENV'],
1154
+ booleans: ['true', 'false'],
1155
+ nulls: ['nil'],
1156
+ stringDelimiters: ["'", '"'],
1157
+ lineComment: '#',
1158
+ blockCommentStart: '=begin',
1159
+ blockCommentEnd: '=end',
1160
+ numberPatterns: {
1161
+ hex: /^0x[0-9a-f_]+/i,
1162
+ binary: /^0b[01_]+/i,
1163
+ octal: /^0o?[0-7_]+/i,
1164
+ float: /^\d+(?:_\d+)*\.\d*(?:_\d+)*(?:e[+-]?\d+)?/i,
1165
+ decimal: /^\d+(?:_\d+)*/,
1166
+ },
1167
+ operators: [
1168
+ '**',
1169
+ '==',
1170
+ '===',
1171
+ '!=',
1172
+ '>=',
1173
+ '<=',
1174
+ '<=>',
1175
+ '=~',
1176
+ '!~',
1177
+ '&&',
1178
+ '||',
1179
+ '+=',
1180
+ '-=',
1181
+ '*=',
1182
+ '/=',
1183
+ '%=',
1184
+ '**=',
1185
+ '&=',
1186
+ '|=',
1187
+ '^=',
1188
+ '>>=',
1189
+ '<<=',
1190
+ '||=',
1191
+ '&&=',
1192
+ '<<',
1193
+ '>>',
1194
+ '..',
1195
+ '...',
1196
+ '&.',
1197
+ '+',
1198
+ '-',
1199
+ '*',
1200
+ '/',
1201
+ '%',
1202
+ '&',
1203
+ '|',
1204
+ '^',
1205
+ '~',
1206
+ '!',
1207
+ '<',
1208
+ '>',
1209
+ '=',
1210
+ '?',
1211
+ ':',
1212
+ ],
1213
+ customPatterns: [
1214
+ { pattern: /^:[a-zA-Z_]\w*/, type: 'constant' },
1215
+ { pattern: /^@{1,2}\w+/, type: 'variable' },
1216
+ { pattern: /^\$\w+/, type: 'variable' },
1217
+ { pattern: /^%[qQwWiIxrs]?./, type: 'string' },
1218
+ { pattern: /^\/(?:[^/\\]|\\.)+\/[imxo]*/, type: 'string.regex' },
1219
+ ],
1220
+ },
1221
+ php: {
1222
+ name: 'PHP',
1223
+ aliases: [],
1224
+ controlKeywords: [
1225
+ 'if',
1226
+ 'else',
1227
+ 'elseif',
1228
+ 'endif',
1229
+ 'for',
1230
+ 'endfor',
1231
+ 'foreach',
1232
+ 'endforeach',
1233
+ 'while',
1234
+ 'endwhile',
1235
+ 'do',
1236
+ 'switch',
1237
+ 'case',
1238
+ 'default',
1239
+ 'endswitch',
1240
+ 'break',
1241
+ 'continue',
1242
+ 'return',
1243
+ 'throw',
1244
+ 'try',
1245
+ 'catch',
1246
+ 'finally',
1247
+ 'goto',
1248
+ ],
1249
+ declarationKeywords: [
1250
+ 'function',
1251
+ 'class',
1252
+ 'interface',
1253
+ 'trait',
1254
+ 'extends',
1255
+ 'implements',
1256
+ 'abstract',
1257
+ 'final',
1258
+ 'public',
1259
+ 'private',
1260
+ 'protected',
1261
+ 'static',
1262
+ 'const',
1263
+ 'var',
1264
+ 'global',
1265
+ 'namespace',
1266
+ 'use',
1267
+ 'new',
1268
+ 'clone',
1269
+ 'fn',
1270
+ 'match',
1271
+ 'enum',
1272
+ 'readonly',
1273
+ ],
1274
+ operatorKeywords: ['instanceof', 'and', 'or', 'xor', 'as'],
1275
+ builtins: [
1276
+ 'echo',
1277
+ 'print',
1278
+ 'array',
1279
+ 'isset',
1280
+ 'empty',
1281
+ 'unset',
1282
+ 'include',
1283
+ 'include_once',
1284
+ 'require',
1285
+ 'require_once',
1286
+ 'die',
1287
+ 'exit',
1288
+ ],
1289
+ types: [
1290
+ 'int',
1291
+ 'float',
1292
+ 'bool',
1293
+ 'string',
1294
+ 'array',
1295
+ 'object',
1296
+ 'callable',
1297
+ 'iterable',
1298
+ 'void',
1299
+ 'null',
1300
+ 'mixed',
1301
+ 'never',
1302
+ ],
1303
+ constants: ['__CLASS__', '__DIR__', '__FILE__', '__FUNCTION__', '__LINE__', '__METHOD__', '__NAMESPACE__', '__TRAIT__'],
1304
+ booleans: ['true', 'false', 'TRUE', 'FALSE'],
1305
+ nulls: ['null', 'NULL'],
1306
+ stringDelimiters: ["'", '"'],
1307
+ lineComment: '//',
1308
+ blockCommentStart: '/*',
1309
+ blockCommentEnd: '*/',
1310
+ docCommentStart: '/**',
1311
+ numberPatterns: {
1312
+ hex: /^0x[0-9a-f_]+/i,
1313
+ binary: /^0b[01_]+/i,
1314
+ octal: /^0[0-7_]+/,
1315
+ float: /^\d+(?:_\d+)*\.\d*(?:_\d+)*(?:e[+-]?\d+)?/i,
1316
+ decimal: /^\d+(?:_\d+)*/,
1317
+ },
1318
+ operators: [
1319
+ '===',
1320
+ '!==',
1321
+ '==',
1322
+ '!=',
1323
+ '<>',
1324
+ '>=',
1325
+ '<=',
1326
+ '<=>',
1327
+ '&&',
1328
+ '||',
1329
+ '??',
1330
+ '?:',
1331
+ '++',
1332
+ '--',
1333
+ '**',
1334
+ '+=',
1335
+ '-=',
1336
+ '*=',
1337
+ '/=',
1338
+ '%=',
1339
+ '**=',
1340
+ '.=',
1341
+ '&=',
1342
+ '|=',
1343
+ '^=',
1344
+ '>>=',
1345
+ '<<=',
1346
+ '??=',
1347
+ '=>',
1348
+ '->',
1349
+ '::',
1350
+ '?->',
1351
+ '...',
1352
+ '@',
1353
+ '+',
1354
+ '-',
1355
+ '*',
1356
+ '/',
1357
+ '%',
1358
+ '.',
1359
+ '&',
1360
+ '|',
1361
+ '^',
1362
+ '~',
1363
+ '!',
1364
+ '<',
1365
+ '>',
1366
+ '=',
1367
+ '?',
1368
+ ':',
1369
+ ],
1370
+ customPatterns: [
1371
+ { pattern: /^\$\w+/, type: 'variable' },
1372
+ { pattern: /^#\[[\s\S]*?\]/, type: 'decorator' },
1373
+ { pattern: /^<<<['"]?\w+['"]?\n[\s\S]*?\n\w+;?/, type: 'string' },
1374
+ ],
1375
+ },
1376
+ lua: {
1377
+ name: 'Lua',
1378
+ aliases: [],
1379
+ controlKeywords: [
1380
+ 'if',
1381
+ 'then',
1382
+ 'else',
1383
+ 'elseif',
1384
+ 'for',
1385
+ 'while',
1386
+ 'repeat',
1387
+ 'until',
1388
+ 'do',
1389
+ 'end',
1390
+ 'break',
1391
+ 'return',
1392
+ 'goto',
1393
+ 'in',
1394
+ ],
1395
+ declarationKeywords: ['function', 'local'],
1396
+ operatorKeywords: ['and', 'or', 'not'],
1397
+ builtins: [
1398
+ 'print',
1399
+ 'type',
1400
+ 'pairs',
1401
+ 'ipairs',
1402
+ 'next',
1403
+ 'setmetatable',
1404
+ 'getmetatable',
1405
+ 'rawget',
1406
+ 'rawset',
1407
+ 'rawequal',
1408
+ 'rawlen',
1409
+ 'tonumber',
1410
+ 'tostring',
1411
+ 'pcall',
1412
+ 'xpcall',
1413
+ 'error',
1414
+ 'assert',
1415
+ 'require',
1416
+ 'dofile',
1417
+ 'loadfile',
1418
+ 'load',
1419
+ 'select',
1420
+ 'collectgarbage',
1421
+ ],
1422
+ types: [],
1423
+ constants: ['_G', '_VERSION'],
1424
+ booleans: ['true', 'false'],
1425
+ nulls: ['nil'],
1426
+ stringDelimiters: ["'", '"'],
1427
+ lineComment: '--',
1428
+ blockCommentStart: '--[[',
1429
+ blockCommentEnd: ']]',
1430
+ numberPatterns: {
1431
+ hex: /^0x[0-9a-f]+(?:\.[0-9a-f]+)?(?:p[+-]?\d+)?/i,
1432
+ float: /^\d+\.\d*(?:e[+-]?\d+)?/i,
1433
+ decimal: /^\d+/,
1434
+ },
1435
+ operators: [
1436
+ '...',
1437
+ '..',
1438
+ '==',
1439
+ '~=',
1440
+ '>=',
1441
+ '<=',
1442
+ '<<',
1443
+ '>>',
1444
+ '//',
1445
+ '+',
1446
+ '-',
1447
+ '*',
1448
+ '/',
1449
+ '%',
1450
+ '^',
1451
+ '#',
1452
+ '&',
1453
+ '|',
1454
+ '~',
1455
+ '<',
1456
+ '>',
1457
+ '=',
1458
+ ],
1459
+ customPatterns: [
1460
+ { pattern: /^\[\[[\s\S]*?\]\]/, type: 'string' },
1461
+ { pattern: /^\[=+\[[\s\S]*?\]=+\]/, type: 'string' },
1462
+ ],
1463
+ },
1464
+ sql: {
1465
+ name: 'SQL',
1466
+ aliases: ['mysql', 'postgresql', 'pgsql', 'sqlite'],
1467
+ controlKeywords: [
1468
+ 'CASE',
1469
+ 'WHEN',
1470
+ 'THEN',
1471
+ 'ELSE',
1472
+ 'END',
1473
+ 'IF',
1474
+ 'BEGIN',
1475
+ 'COMMIT',
1476
+ 'ROLLBACK',
1477
+ 'WITH',
1478
+ ],
1479
+ declarationKeywords: [
1480
+ 'SELECT',
1481
+ 'FROM',
1482
+ 'WHERE',
1483
+ 'AND',
1484
+ 'OR',
1485
+ 'NOT',
1486
+ 'IN',
1487
+ 'LIKE',
1488
+ 'BETWEEN',
1489
+ 'IS',
1490
+ 'NULL',
1491
+ 'ORDER',
1492
+ 'BY',
1493
+ 'ASC',
1494
+ 'DESC',
1495
+ 'LIMIT',
1496
+ 'OFFSET',
1497
+ 'GROUP',
1498
+ 'HAVING',
1499
+ 'JOIN',
1500
+ 'LEFT',
1501
+ 'RIGHT',
1502
+ 'INNER',
1503
+ 'OUTER',
1504
+ 'FULL',
1505
+ 'CROSS',
1506
+ 'ON',
1507
+ 'AS',
1508
+ 'DISTINCT',
1509
+ 'ALL',
1510
+ 'UNION',
1511
+ 'INTERSECT',
1512
+ 'EXCEPT',
1513
+ 'INSERT',
1514
+ 'INTO',
1515
+ 'VALUES',
1516
+ 'UPDATE',
1517
+ 'SET',
1518
+ 'DELETE',
1519
+ 'CREATE',
1520
+ 'DROP',
1521
+ 'ALTER',
1522
+ 'TABLE',
1523
+ 'INDEX',
1524
+ 'VIEW',
1525
+ 'DATABASE',
1526
+ 'SCHEMA',
1527
+ 'PRIMARY',
1528
+ 'KEY',
1529
+ 'FOREIGN',
1530
+ 'REFERENCES',
1531
+ 'CONSTRAINT',
1532
+ 'DEFAULT',
1533
+ 'UNIQUE',
1534
+ 'CHECK',
1535
+ 'CASCADE',
1536
+ 'TRUNCATE',
1537
+ 'GRANT',
1538
+ 'REVOKE',
1539
+ 'TRANSACTION',
1540
+ 'EXISTS',
1541
+ ],
1542
+ operatorKeywords: [],
1543
+ builtins: [
1544
+ 'COUNT',
1545
+ 'SUM',
1546
+ 'AVG',
1547
+ 'MIN',
1548
+ 'MAX',
1549
+ 'COALESCE',
1550
+ 'NULLIF',
1551
+ 'CAST',
1552
+ 'CONVERT',
1553
+ 'CONCAT',
1554
+ 'SUBSTRING',
1555
+ 'TRIM',
1556
+ 'UPPER',
1557
+ 'LOWER',
1558
+ 'LENGTH',
1559
+ 'NOW',
1560
+ 'CURRENT_DATE',
1561
+ 'CURRENT_TIME',
1562
+ 'CURRENT_TIMESTAMP',
1563
+ 'DATE',
1564
+ 'TIME',
1565
+ 'YEAR',
1566
+ 'MONTH',
1567
+ 'DAY',
1568
+ ],
1569
+ types: [
1570
+ 'INT',
1571
+ 'INTEGER',
1572
+ 'BIGINT',
1573
+ 'SMALLINT',
1574
+ 'TINYINT',
1575
+ 'FLOAT',
1576
+ 'DOUBLE',
1577
+ 'DECIMAL',
1578
+ 'NUMERIC',
1579
+ 'VARCHAR',
1580
+ 'CHAR',
1581
+ 'TEXT',
1582
+ 'BLOB',
1583
+ 'DATE',
1584
+ 'DATETIME',
1585
+ 'TIMESTAMP',
1586
+ 'BOOLEAN',
1587
+ 'BOOL',
1588
+ 'JSON',
1589
+ 'UUID',
1590
+ ],
1591
+ constants: [],
1592
+ booleans: ['TRUE', 'FALSE'],
1593
+ nulls: ['NULL'],
1594
+ stringDelimiters: ["'"],
1595
+ lineComment: '--',
1596
+ blockCommentStart: '/*',
1597
+ blockCommentEnd: '*/',
1598
+ caseInsensitive: true,
1599
+ numberPatterns: {
1600
+ float: /^\d+\.\d*/i,
1601
+ decimal: /^\d+/,
1602
+ },
1603
+ operators: ['<>', '>=', '<=', '!=', '=', '<', '>', '+', '-', '*', '/', '%', '||'],
1604
+ },
1605
+ json: {
1606
+ name: 'JSON',
1607
+ aliases: ['jsonc'],
1608
+ controlKeywords: [],
1609
+ declarationKeywords: [],
1610
+ operatorKeywords: [],
1611
+ builtins: [],
1612
+ types: [],
1613
+ constants: [],
1614
+ booleans: ['true', 'false'],
1615
+ nulls: ['null'],
1616
+ stringDelimiters: ['"'],
1617
+ lineComment: undefined,
1618
+ numberPatterns: {
1619
+ float: /^-?\d+\.\d*(?:e[+-]?\d+)?/i,
1620
+ decimal: /^-?\d+/,
1621
+ },
1622
+ operators: [':', ','],
1623
+ },
1624
+ yaml: {
1625
+ name: 'YAML',
1626
+ aliases: ['yml'],
1627
+ controlKeywords: [],
1628
+ declarationKeywords: [],
1629
+ operatorKeywords: [],
1630
+ builtins: [],
1631
+ types: [],
1632
+ constants: [],
1633
+ booleans: ['true', 'false', 'yes', 'no', 'on', 'off'],
1634
+ nulls: ['null', '~'],
1635
+ stringDelimiters: ["'", '"'],
1636
+ lineComment: '#',
1637
+ numberPatterns: {
1638
+ hex: /^0x[0-9a-f]+/i,
1639
+ octal: /^0o[0-7]+/i,
1640
+ float: /^[+-]?(?:\d+\.\d*|\.\d+)(?:e[+-]?\d+)?/i,
1641
+ decimal: /^[+-]?\d+/,
1642
+ },
1643
+ operators: [':', '-', '>-', '>', '|', '|-'],
1644
+ customPatterns: [
1645
+ { pattern: /^&\w+/, type: 'variable' },
1646
+ { pattern: /^\*\w+/, type: 'variable' },
1647
+ { pattern: /^<<:/, type: 'keyword' },
1648
+ ],
1649
+ },
1650
+ bash: {
1651
+ name: 'Bash',
1652
+ aliases: ['sh', 'shell', 'zsh'],
1653
+ controlKeywords: [
1654
+ 'if',
1655
+ 'then',
1656
+ 'else',
1657
+ 'elif',
1658
+ 'fi',
1659
+ 'for',
1660
+ 'while',
1661
+ 'until',
1662
+ 'do',
1663
+ 'done',
1664
+ 'case',
1665
+ 'esac',
1666
+ 'in',
1667
+ 'select',
1668
+ ],
1669
+ declarationKeywords: [
1670
+ 'function',
1671
+ 'local',
1672
+ 'export',
1673
+ 'declare',
1674
+ 'typeset',
1675
+ 'readonly',
1676
+ 'alias',
1677
+ 'unalias',
1678
+ 'set',
1679
+ 'unset',
1680
+ 'source',
1681
+ ],
1682
+ operatorKeywords: [],
1683
+ builtins: [
1684
+ 'echo',
1685
+ 'printf',
1686
+ 'read',
1687
+ 'cd',
1688
+ 'pwd',
1689
+ 'ls',
1690
+ 'cp',
1691
+ 'mv',
1692
+ 'rm',
1693
+ 'mkdir',
1694
+ 'rmdir',
1695
+ 'cat',
1696
+ 'grep',
1697
+ 'sed',
1698
+ 'awk',
1699
+ 'find',
1700
+ 'xargs',
1701
+ 'sort',
1702
+ 'uniq',
1703
+ 'wc',
1704
+ 'head',
1705
+ 'tail',
1706
+ 'cut',
1707
+ 'tr',
1708
+ 'tee',
1709
+ 'chmod',
1710
+ 'chown',
1711
+ 'sudo',
1712
+ 'apt',
1713
+ 'yum',
1714
+ 'brew',
1715
+ 'npm',
1716
+ 'pnpm',
1717
+ 'yarn',
1718
+ 'node',
1719
+ 'python',
1720
+ 'git',
1721
+ 'docker',
1722
+ 'kubectl',
1723
+ 'curl',
1724
+ 'wget',
1725
+ 'tar',
1726
+ 'zip',
1727
+ 'unzip',
1728
+ 'ssh',
1729
+ 'scp',
1730
+ 'rsync',
1731
+ 'kill',
1732
+ 'ps',
1733
+ 'top',
1734
+ 'htop',
1735
+ 'df',
1736
+ 'du',
1737
+ 'free',
1738
+ 'mount',
1739
+ 'umount',
1740
+ 'test',
1741
+ 'exit',
1742
+ 'return',
1743
+ 'shift',
1744
+ 'trap',
1745
+ 'wait',
1746
+ 'exec',
1747
+ 'eval',
1748
+ ],
1749
+ types: [],
1750
+ constants: [
1751
+ 'HOME',
1752
+ 'PATH',
1753
+ 'USER',
1754
+ 'PWD',
1755
+ 'SHELL',
1756
+ 'TERM',
1757
+ 'LANG',
1758
+ 'EDITOR',
1759
+ 'HOSTNAME',
1760
+ 'RANDOM',
1761
+ 'LINENO',
1762
+ 'FUNCNAME',
1763
+ 'BASH_SOURCE',
1764
+ ],
1765
+ booleans: [],
1766
+ nulls: [],
1767
+ stringDelimiters: ["'", '"'],
1768
+ lineComment: '#',
1769
+ numberPatterns: {
1770
+ decimal: /^\d+/,
1771
+ },
1772
+ operators: [
1773
+ '||',
1774
+ '&&',
1775
+ ';;',
1776
+ ';&',
1777
+ ';;&',
1778
+ '|&',
1779
+ '>>',
1780
+ '<<',
1781
+ '>|',
1782
+ '<>',
1783
+ '<<<',
1784
+ '&>',
1785
+ '&>>',
1786
+ '2>&1',
1787
+ '1>&2',
1788
+ '-eq',
1789
+ '-ne',
1790
+ '-lt',
1791
+ '-le',
1792
+ '-gt',
1793
+ '-ge',
1794
+ '-z',
1795
+ '-n',
1796
+ '-e',
1797
+ '-f',
1798
+ '-d',
1799
+ '-r',
1800
+ '-w',
1801
+ '-x',
1802
+ '-s',
1803
+ '=~',
1804
+ '==',
1805
+ '!=',
1806
+ '=',
1807
+ '|',
1808
+ '&',
1809
+ '<',
1810
+ '>',
1811
+ '+',
1812
+ '-',
1813
+ '*',
1814
+ '/',
1815
+ '%',
1816
+ ],
1817
+ customPatterns: [
1818
+ { pattern: /^\$\{[^}]+\}/, type: 'variable' },
1819
+ { pattern: /^\$\([^)]+\)/, type: 'variable' },
1820
+ { pattern: /^\$[a-zA-Z_]\w*/, type: 'variable' },
1821
+ { pattern: /^\$[0-9#?@*!$-]/, type: 'variable' },
1822
+ { pattern: /^`[^`]+`/, type: 'variable' },
1823
+ ],
1824
+ },
1825
+ markdown: {
1826
+ name: 'Markdown',
1827
+ aliases: ['md'],
1828
+ controlKeywords: [],
1829
+ declarationKeywords: [],
1830
+ operatorKeywords: [],
1831
+ builtins: [],
1832
+ types: [],
1833
+ constants: [],
1834
+ booleans: [],
1835
+ nulls: [],
1836
+ stringDelimiters: [],
1837
+ lineComment: undefined,
1838
+ operators: [],
1839
+ customPatterns: [
1840
+ { pattern: /^#{1,6}\s+.*/, type: 'keyword' },
1841
+ { pattern: /^\*{3,}|^-{3,}|^_{3,}/, type: 'punctuation' },
1842
+ { pattern: /^\*\*[^*]+\*\*/, type: 'keyword' },
1843
+ { pattern: /^__[^_]+__/, type: 'keyword' },
1844
+ { pattern: /^\*[^*]+\*/, type: 'string' },
1845
+ { pattern: /^_[^_]+_/, type: 'string' },
1846
+ { pattern: /^`[^`]+`/, type: 'string' },
1847
+ { pattern: /^```[\s\S]*?```/, type: 'string' },
1848
+ { pattern: /^>\s+.*/, type: 'comment' },
1849
+ { pattern: /^[-*+]\s+.*/, type: 'punctuation' },
1850
+ { pattern: /^\d+\.\s+.*/, type: 'punctuation' },
1851
+ { pattern: /^\[([^\]]+)\]\([^)]+\)/, type: 'string' },
1852
+ { pattern: /^!\[([^\]]*)\]\([^)]+\)/, type: 'string' },
1853
+ ],
1854
+ },
1855
+ html: {
1856
+ name: 'HTML',
1857
+ aliases: ['htm', 'xml', 'xhtml'],
1858
+ controlKeywords: [],
1859
+ declarationKeywords: [],
1860
+ operatorKeywords: [],
1861
+ builtins: [],
1862
+ types: [],
1863
+ constants: [],
1864
+ booleans: [],
1865
+ nulls: [],
1866
+ stringDelimiters: ['"', "'"],
1867
+ blockCommentStart: '<!--',
1868
+ blockCommentEnd: '-->',
1869
+ operators: ['='],
1870
+ customPatterns: [
1871
+ { pattern: /^<!DOCTYPE[^>]*>/, type: 'meta' },
1872
+ { pattern: /^<!\[CDATA\[[\s\S]*?\]\]>/, type: 'string' },
1873
+ { pattern: /^<!--[\s\S]*?-->/, type: 'comment' },
1874
+ { pattern: /^<\/?\w+/, type: 'tag' },
1875
+ { pattern: /^\/>|^>/, type: 'tag' },
1876
+ { pattern: /^&\w+;/, type: 'entity' },
1877
+ { pattern: /^&#\d+;/, type: 'entity' },
1878
+ { pattern: /^&#x[0-9a-f]+;/i, type: 'entity' },
1879
+ ],
1880
+ },
1881
+ css: {
1882
+ name: 'CSS',
1883
+ aliases: ['scss', 'sass', 'less'],
1884
+ controlKeywords: [],
1885
+ declarationKeywords: [
1886
+ '@import',
1887
+ '@media',
1888
+ '@keyframes',
1889
+ '@font-face',
1890
+ '@supports',
1891
+ '@page',
1892
+ '@charset',
1893
+ '@namespace',
1894
+ '@document',
1895
+ '@layer',
1896
+ '@container',
1897
+ '@property',
1898
+ ],
1899
+ operatorKeywords: [],
1900
+ builtins: [
1901
+ 'inherit',
1902
+ 'initial',
1903
+ 'unset',
1904
+ 'revert',
1905
+ 'auto',
1906
+ 'none',
1907
+ 'block',
1908
+ 'inline',
1909
+ 'flex',
1910
+ 'grid',
1911
+ 'absolute',
1912
+ 'relative',
1913
+ 'fixed',
1914
+ 'sticky',
1915
+ 'hidden',
1916
+ 'visible',
1917
+ 'scroll',
1918
+ 'solid',
1919
+ 'dashed',
1920
+ 'dotted',
1921
+ 'double',
1922
+ 'normal',
1923
+ 'bold',
1924
+ 'italic',
1925
+ 'underline',
1926
+ 'center',
1927
+ 'left',
1928
+ 'right',
1929
+ 'top',
1930
+ 'bottom',
1931
+ 'start',
1932
+ 'end',
1933
+ 'stretch',
1934
+ 'baseline',
1935
+ 'space-between',
1936
+ 'space-around',
1937
+ 'space-evenly',
1938
+ 'nowrap',
1939
+ 'wrap',
1940
+ 'row',
1941
+ 'column',
1942
+ 'pointer',
1943
+ 'default',
1944
+ 'not-allowed',
1945
+ 'transparent',
1946
+ 'currentColor',
1947
+ ],
1948
+ types: [],
1949
+ constants: [],
1950
+ booleans: [],
1951
+ nulls: [],
1952
+ stringDelimiters: ['"', "'"],
1953
+ blockCommentStart: '/*',
1954
+ blockCommentEnd: '*/',
1955
+ numberPatterns: {
1956
+ float: /^\d+\.\d*(?:px|em|rem|%|vh|vw|vmin|vmax|ch|ex|deg|rad|grad|turn|s|ms|hz|khz|fr)?/i,
1957
+ decimal: /^\d+(?:px|em|rem|%|vh|vw|vmin|vmax|ch|ex|deg|rad|grad|turn|s|ms|hz|khz|fr)?/i,
1958
+ },
1959
+ operators: [':', ';', ',', '+', '~', '>', '*', '/', '-', '='],
1960
+ customPatterns: [
1961
+ { pattern: /^--[\w-]+/, type: 'variable' },
1962
+ { pattern: /^\$[\w-]+/, type: 'variable' },
1963
+ { pattern: /^@[\w-]+/, type: 'keyword' },
1964
+ { pattern: /^#[0-9a-f]{3,8}\b/i, type: 'number' },
1965
+ { pattern: /^\.[\w-]+/, type: 'class' },
1966
+ { pattern: /^#[\w-]+/, type: 'constant' },
1967
+ { pattern: /^:+[\w-]+/, type: 'builtin' },
1968
+ { pattern: /^\[[\w-]+(?:=[^\]]+)?\]/, type: 'tag.attribute' },
1969
+ { pattern: /^url\([^)]+\)/, type: 'string' },
1970
+ { pattern: /^rgba?\([^)]+\)/, type: 'builtin' },
1971
+ { pattern: /^hsla?\([^)]+\)/, type: 'builtin' },
1972
+ { pattern: /^calc\([^)]+\)/, type: 'builtin' },
1973
+ { pattern: /^var\([^)]+\)/, type: 'builtin' },
1974
+ ],
1975
+ },
1976
+ diff: {
1977
+ name: 'Diff',
1978
+ aliases: ['patch'],
1979
+ controlKeywords: [],
1980
+ declarationKeywords: [],
1981
+ operatorKeywords: [],
1982
+ builtins: [],
1983
+ types: [],
1984
+ constants: [],
1985
+ booleans: [],
1986
+ nulls: [],
1987
+ stringDelimiters: [],
1988
+ lineComment: undefined,
1989
+ operators: [],
1990
+ customPatterns: [
1991
+ { pattern: /^\+\+\+.*/, type: 'meta' },
1992
+ { pattern: /^---.*/, type: 'meta' },
1993
+ { pattern: /^@@.*@@/, type: 'keyword' },
1994
+ { pattern: /^\+.*/, type: 'constant.builtin' },
1995
+ { pattern: /^-.*/, type: 'invalid' },
1996
+ { pattern: /^\\.*/, type: 'comment' },
1997
+ ],
1998
+ },
1999
+ plain: {
2000
+ name: 'Plain Text',
2001
+ aliases: ['text', 'txt'],
2002
+ controlKeywords: [],
2003
+ declarationKeywords: [],
2004
+ operatorKeywords: [],
2005
+ builtins: [],
2006
+ types: [],
2007
+ constants: [],
2008
+ booleans: [],
2009
+ nulls: [],
2010
+ stringDelimiters: [],
2011
+ lineComment: undefined,
2012
+ operators: [],
2013
+ },
2014
+ };
2015
+ // =============================================================================
2016
+ // Themes
2017
+ // =============================================================================
2018
+ export const themes = {
2019
+ dark: {
2020
+ name: 'Dark',
2021
+ colors: {
2022
+ keyword: 'magenta',
2023
+ 'keyword.control': 'magenta',
2024
+ 'keyword.declaration': 'magenta',
2025
+ 'keyword.operator': 'magenta',
2026
+ string: 'green',
2027
+ 'string.template': 'green',
2028
+ 'string.regex': 'yellow',
2029
+ 'string.escape': 'cyan',
2030
+ number: 'yellow',
2031
+ 'number.float': 'yellow',
2032
+ 'number.hex': 'yellow',
2033
+ 'number.binary': 'yellow',
2034
+ 'number.octal': 'yellow',
2035
+ comment: 'gray',
2036
+ 'comment.line': 'gray',
2037
+ 'comment.block': 'gray',
2038
+ 'comment.doc': 'gray',
2039
+ function: 'blue',
2040
+ 'function.call': 'blue',
2041
+ 'function.definition': 'blue',
2042
+ variable: 'cyan',
2043
+ 'variable.parameter': 'cyan',
2044
+ 'variable.property': 'cyan',
2045
+ operator: 'white',
2046
+ 'operator.comparison': 'white',
2047
+ 'operator.assignment': 'white',
2048
+ 'operator.arithmetic': 'white',
2049
+ 'operator.logical': 'white',
2050
+ punctuation: 'gray',
2051
+ 'punctuation.bracket': 'gray',
2052
+ 'punctuation.separator': 'gray',
2053
+ 'punctuation.accessor': 'gray',
2054
+ type: 'cyan',
2055
+ 'type.builtin': 'cyan',
2056
+ 'type.parameter': 'cyan',
2057
+ constant: 'yellow',
2058
+ 'constant.boolean': 'yellow',
2059
+ 'constant.null': 'yellow',
2060
+ 'constant.builtin': 'green',
2061
+ builtin: 'magenta',
2062
+ class: 'cyan',
2063
+ interface: 'cyan',
2064
+ namespace: 'cyan',
2065
+ decorator: 'yellow',
2066
+ tag: 'blue',
2067
+ 'tag.name': 'blue',
2068
+ 'tag.attribute': 'cyan',
2069
+ entity: 'yellow',
2070
+ meta: 'magenta',
2071
+ invalid: 'red',
2072
+ plain: 'white',
2073
+ },
2074
+ background: 'black',
2075
+ lineNumber: 'gray',
2076
+ selection: 'blue',
2077
+ currentLine: '#1a1a2e',
2078
+ bracketMatch: 'yellow',
2079
+ default: 'white',
2080
+ },
2081
+ light: {
2082
+ name: 'Light',
2083
+ colors: {
2084
+ keyword: '#d73a49',
2085
+ 'keyword.control': '#d73a49',
2086
+ 'keyword.declaration': '#d73a49',
2087
+ 'keyword.operator': '#d73a49',
2088
+ string: '#22863a',
2089
+ 'string.template': '#22863a',
2090
+ 'string.regex': '#e36209',
2091
+ 'string.escape': '#005cc5',
2092
+ number: '#005cc5',
2093
+ 'number.float': '#005cc5',
2094
+ 'number.hex': '#005cc5',
2095
+ 'number.binary': '#005cc5',
2096
+ 'number.octal': '#005cc5',
2097
+ comment: '#6a737d',
2098
+ 'comment.line': '#6a737d',
2099
+ 'comment.block': '#6a737d',
2100
+ 'comment.doc': '#6a737d',
2101
+ function: '#6f42c1',
2102
+ 'function.call': '#6f42c1',
2103
+ 'function.definition': '#6f42c1',
2104
+ variable: '#24292e',
2105
+ 'variable.parameter': '#e36209',
2106
+ 'variable.property': '#005cc5',
2107
+ operator: '#24292e',
2108
+ punctuation: '#24292e',
2109
+ type: '#005cc5',
2110
+ 'type.builtin': '#005cc5',
2111
+ constant: '#005cc5',
2112
+ 'constant.boolean': '#005cc5',
2113
+ 'constant.null': '#005cc5',
2114
+ 'constant.builtin': '#22863a',
2115
+ builtin: '#d73a49',
2116
+ class: '#6f42c1',
2117
+ decorator: '#e36209',
2118
+ tag: '#22863a',
2119
+ 'tag.name': '#22863a',
2120
+ 'tag.attribute': '#6f42c1',
2121
+ entity: '#005cc5',
2122
+ meta: '#d73a49',
2123
+ invalid: '#cb2431',
2124
+ plain: '#24292e',
2125
+ },
2126
+ background: '#ffffff',
2127
+ lineNumber: '#6a737d',
2128
+ default: '#24292e',
2129
+ },
2130
+ monokai: {
2131
+ name: 'Monokai',
2132
+ colors: {
2133
+ keyword: '#f92672',
2134
+ 'keyword.control': '#f92672',
2135
+ 'keyword.declaration': '#66d9ef',
2136
+ string: '#e6db74',
2137
+ 'string.regex': '#e6db74',
2138
+ number: '#ae81ff',
2139
+ comment: '#75715e',
2140
+ function: '#a6e22e',
2141
+ 'function.call': '#66d9ef',
2142
+ variable: '#f8f8f2',
2143
+ 'variable.parameter': '#fd971f',
2144
+ operator: '#f92672',
2145
+ punctuation: '#f8f8f2',
2146
+ type: '#66d9ef',
2147
+ constant: '#ae81ff',
2148
+ 'constant.boolean': '#ae81ff',
2149
+ 'constant.null': '#ae81ff',
2150
+ builtin: '#66d9ef',
2151
+ class: '#a6e22e',
2152
+ decorator: '#e6db74',
2153
+ tag: '#f92672',
2154
+ 'tag.attribute': '#a6e22e',
2155
+ meta: '#75715e',
2156
+ invalid: '#f92672',
2157
+ plain: '#f8f8f2',
2158
+ },
2159
+ background: '#272822',
2160
+ lineNumber: '#75715e',
2161
+ default: '#f8f8f2',
2162
+ },
2163
+ dracula: {
2164
+ name: 'Dracula',
2165
+ colors: {
2166
+ keyword: '#ff79c6',
2167
+ string: '#f1fa8c',
2168
+ number: '#bd93f9',
2169
+ comment: '#6272a4',
2170
+ function: '#50fa7b',
2171
+ variable: '#f8f8f2',
2172
+ operator: '#ff79c6',
2173
+ punctuation: '#f8f8f2',
2174
+ type: '#8be9fd',
2175
+ constant: '#bd93f9',
2176
+ builtin: '#8be9fd',
2177
+ class: '#50fa7b',
2178
+ decorator: '#ffb86c',
2179
+ tag: '#ff79c6',
2180
+ meta: '#6272a4',
2181
+ invalid: '#ff5555',
2182
+ plain: '#f8f8f2',
2183
+ },
2184
+ background: '#282a36',
2185
+ lineNumber: '#6272a4',
2186
+ default: '#f8f8f2',
2187
+ },
2188
+ github: {
2189
+ name: 'GitHub',
2190
+ colors: {
2191
+ keyword: '#cf222e',
2192
+ string: '#0a3069',
2193
+ number: '#0550ae',
2194
+ comment: '#6e7781',
2195
+ function: '#8250df',
2196
+ variable: '#24292f',
2197
+ operator: '#24292f',
2198
+ punctuation: '#24292f',
2199
+ type: '#0550ae',
2200
+ constant: '#0550ae',
2201
+ builtin: '#cf222e',
2202
+ class: '#953800',
2203
+ decorator: '#953800',
2204
+ tag: '#116329',
2205
+ meta: '#cf222e',
2206
+ invalid: '#cf222e',
2207
+ plain: '#24292f',
2208
+ },
2209
+ background: '#ffffff',
2210
+ lineNumber: '#8c959f',
2211
+ default: '#24292f',
2212
+ },
2213
+ nord: {
2214
+ name: 'Nord',
2215
+ colors: {
2216
+ keyword: '#81a1c1',
2217
+ string: '#a3be8c',
2218
+ number: '#b48ead',
2219
+ comment: '#616e88',
2220
+ function: '#88c0d0',
2221
+ variable: '#d8dee9',
2222
+ operator: '#81a1c1',
2223
+ punctuation: '#eceff4',
2224
+ type: '#8fbcbb',
2225
+ constant: '#b48ead',
2226
+ builtin: '#5e81ac',
2227
+ class: '#8fbcbb',
2228
+ decorator: '#d08770',
2229
+ tag: '#81a1c1',
2230
+ meta: '#5e81ac',
2231
+ invalid: '#bf616a',
2232
+ plain: '#d8dee9',
2233
+ },
2234
+ background: '#2e3440',
2235
+ lineNumber: '#4c566a',
2236
+ default: '#d8dee9',
2237
+ },
2238
+ highContrast: {
2239
+ name: 'High Contrast',
2240
+ colors: {
2241
+ keyword: '#ff00ff',
2242
+ string: '#00ff00',
2243
+ number: '#00ffff',
2244
+ comment: '#808080',
2245
+ function: '#ffff00',
2246
+ variable: '#ffffff',
2247
+ operator: '#ffffff',
2248
+ punctuation: '#ffffff',
2249
+ type: '#00ffff',
2250
+ constant: '#ff8000',
2251
+ builtin: '#ff00ff',
2252
+ class: '#00ffff',
2253
+ decorator: '#ff8000',
2254
+ tag: '#00ff00',
2255
+ meta: '#ff00ff',
2256
+ invalid: '#ff0000',
2257
+ plain: '#ffffff',
2258
+ },
2259
+ background: '#000000',
2260
+ lineNumber: '#808080',
2261
+ default: '#ffffff',
2262
+ },
2263
+ };
2264
+ // =============================================================================
2265
+ // Tokenizer
2266
+ // =============================================================================
2267
+ /**
2268
+ * Get language definition by name or alias
2269
+ */
2270
+ export function getLanguage(name) {
2271
+ const lower = name.toLowerCase();
2272
+ if (languages[lower]) {
2273
+ return languages[lower];
2274
+ }
2275
+ // Check aliases
2276
+ for (const lang of Object.values(languages)) {
2277
+ if (lang.aliases?.includes(lower)) {
2278
+ return lang;
2279
+ }
2280
+ }
2281
+ return undefined;
2282
+ }
2283
+ /**
2284
+ * List all supported languages
2285
+ */
2286
+ export function listLanguages() {
2287
+ return Object.keys(languages);
2288
+ }
2289
+ /**
2290
+ * Tokenize source code
2291
+ */
2292
+ export function tokenize(source, languageName) {
2293
+ const lang = getLanguage(languageName) || languages.plain;
2294
+ const tokens = [];
2295
+ let pos = 0;
2296
+ // Build keyword sets for fast lookup
2297
+ const allKeywords = new Set([
2298
+ ...(lang.controlKeywords || []),
2299
+ ...(lang.declarationKeywords || []),
2300
+ ...(lang.operatorKeywords || []),
2301
+ ]);
2302
+ const controlKeywords = new Set(lang.controlKeywords || []);
2303
+ const declarationKeywords = new Set(lang.declarationKeywords || []);
2304
+ const operatorKeywords = new Set(lang.operatorKeywords || []);
2305
+ const builtins = new Set(lang.builtins || []);
2306
+ const types = new Set(lang.types || []);
2307
+ const constants = new Set(lang.constants || []);
2308
+ const booleans = new Set(lang.booleans || []);
2309
+ const nulls = new Set(lang.nulls || []);
2310
+ // Case insensitive matching
2311
+ const matchWord = (word, set) => {
2312
+ if (lang.caseInsensitive) {
2313
+ return set.has(word.toUpperCase()) || set.has(word.toLowerCase());
2314
+ }
2315
+ return set.has(word);
2316
+ };
2317
+ // Sort operators by length (longest first) for greedy matching
2318
+ const sortedOperators = [...(lang.operators || [])].sort((a, b) => b.length - a.length);
2319
+ while (pos < source.length) {
2320
+ const remaining = source.slice(pos);
2321
+ let matched = false;
2322
+ // Skip whitespace
2323
+ const wsMatch = remaining.match(/^(\s+)/);
2324
+ if (wsMatch) {
2325
+ tokens.push({
2326
+ type: 'plain',
2327
+ value: wsMatch[1],
2328
+ start: pos,
2329
+ end: pos + wsMatch[1].length,
2330
+ });
2331
+ pos += wsMatch[1].length;
2332
+ continue;
2333
+ }
2334
+ // Check custom patterns first
2335
+ if (lang.customPatterns) {
2336
+ for (const { pattern, type } of lang.customPatterns) {
2337
+ const match = remaining.match(pattern);
2338
+ if (match) {
2339
+ tokens.push({
2340
+ type,
2341
+ value: match[0],
2342
+ start: pos,
2343
+ end: pos + match[0].length,
2344
+ });
2345
+ pos += match[0].length;
2346
+ matched = true;
2347
+ break;
2348
+ }
2349
+ }
2350
+ if (matched)
2351
+ continue;
2352
+ }
2353
+ // Check for doc comments
2354
+ if (lang.docCommentStart && remaining.startsWith(lang.docCommentStart)) {
2355
+ // Doc comment (usually /** ... */)
2356
+ if (lang.blockCommentEnd) {
2357
+ const endIndex = remaining.indexOf(lang.blockCommentEnd, lang.docCommentStart.length);
2358
+ if (endIndex !== -1) {
2359
+ const comment = remaining.slice(0, endIndex + lang.blockCommentEnd.length);
2360
+ tokens.push({
2361
+ type: 'comment.doc',
2362
+ value: comment,
2363
+ start: pos,
2364
+ end: pos + comment.length,
2365
+ });
2366
+ pos += comment.length;
2367
+ continue;
2368
+ }
2369
+ }
2370
+ }
2371
+ // Check for block comments
2372
+ if (lang.blockCommentStart && remaining.startsWith(lang.blockCommentStart)) {
2373
+ const endIndex = remaining.indexOf(lang.blockCommentEnd, lang.blockCommentStart.length);
2374
+ if (endIndex !== -1) {
2375
+ const comment = remaining.slice(0, endIndex + lang.blockCommentEnd.length);
2376
+ tokens.push({
2377
+ type: 'comment.block',
2378
+ value: comment,
2379
+ start: pos,
2380
+ end: pos + comment.length,
2381
+ });
2382
+ pos += comment.length;
2383
+ continue;
2384
+ }
2385
+ else {
2386
+ // Unterminated block comment - take rest of source
2387
+ tokens.push({
2388
+ type: 'comment.block',
2389
+ value: remaining,
2390
+ start: pos,
2391
+ end: source.length,
2392
+ });
2393
+ pos = source.length;
2394
+ continue;
2395
+ }
2396
+ }
2397
+ // Check for line comments
2398
+ if (lang.lineComment && remaining.startsWith(lang.lineComment)) {
2399
+ const endIndex = remaining.indexOf('\n');
2400
+ const comment = endIndex !== -1 ? remaining.slice(0, endIndex) : remaining;
2401
+ tokens.push({
2402
+ type: 'comment.line',
2403
+ value: comment,
2404
+ start: pos,
2405
+ end: pos + comment.length,
2406
+ });
2407
+ pos += comment.length;
2408
+ continue;
2409
+ }
2410
+ // Check for strings
2411
+ for (const delim of lang.stringDelimiters || []) {
2412
+ if (remaining.startsWith(delim)) {
2413
+ let end = 1;
2414
+ while (end < remaining.length) {
2415
+ if (remaining[end] === '\\' && end + 1 < remaining.length) {
2416
+ end += 2;
2417
+ }
2418
+ else if (remaining[end] === delim) {
2419
+ end++;
2420
+ break;
2421
+ }
2422
+ else {
2423
+ end++;
2424
+ }
2425
+ }
2426
+ tokens.push({
2427
+ type: 'string',
2428
+ value: remaining.slice(0, end),
2429
+ start: pos,
2430
+ end: pos + end,
2431
+ });
2432
+ pos += end;
2433
+ matched = true;
2434
+ break;
2435
+ }
2436
+ }
2437
+ if (matched)
2438
+ continue;
2439
+ // Check for template strings
2440
+ if (lang.templateDelimiter && remaining.startsWith(lang.templateDelimiter)) {
2441
+ let end = 1;
2442
+ while (end < remaining.length) {
2443
+ if (remaining[end] === '\\' && end + 1 < remaining.length) {
2444
+ end += 2;
2445
+ }
2446
+ else if (remaining[end] === lang.templateDelimiter) {
2447
+ end++;
2448
+ break;
2449
+ }
2450
+ else {
2451
+ end++;
2452
+ }
2453
+ }
2454
+ tokens.push({
2455
+ type: 'string.template',
2456
+ value: remaining.slice(0, end),
2457
+ start: pos,
2458
+ end: pos + end,
2459
+ });
2460
+ pos += end;
2461
+ continue;
2462
+ }
2463
+ // Check for numbers
2464
+ if (lang.numberPatterns) {
2465
+ for (const [type, pattern] of Object.entries(lang.numberPatterns)) {
2466
+ const match = remaining.match(pattern);
2467
+ if (match) {
2468
+ tokens.push({
2469
+ type: `number.${type}`,
2470
+ value: match[0],
2471
+ start: pos,
2472
+ end: pos + match[0].length,
2473
+ });
2474
+ pos += match[0].length;
2475
+ matched = true;
2476
+ break;
2477
+ }
2478
+ }
2479
+ if (matched)
2480
+ continue;
2481
+ }
2482
+ // Check for operators
2483
+ for (const op of sortedOperators) {
2484
+ if (remaining.startsWith(op)) {
2485
+ tokens.push({
2486
+ type: 'operator',
2487
+ value: op,
2488
+ start: pos,
2489
+ end: pos + op.length,
2490
+ });
2491
+ pos += op.length;
2492
+ matched = true;
2493
+ break;
2494
+ }
2495
+ }
2496
+ if (matched)
2497
+ continue;
2498
+ // Check for identifiers and keywords
2499
+ const identMatch = remaining.match(/^[a-zA-Z_$][a-zA-Z0-9_$]*/);
2500
+ if (identMatch) {
2501
+ const word = identMatch[0];
2502
+ let type = 'variable';
2503
+ if (matchWord(word, controlKeywords)) {
2504
+ type = 'keyword.control';
2505
+ }
2506
+ else if (matchWord(word, declarationKeywords)) {
2507
+ type = 'keyword.declaration';
2508
+ }
2509
+ else if (matchWord(word, operatorKeywords)) {
2510
+ type = 'keyword.operator';
2511
+ }
2512
+ else if (matchWord(word, booleans)) {
2513
+ type = 'constant.boolean';
2514
+ }
2515
+ else if (matchWord(word, nulls)) {
2516
+ type = 'constant.null';
2517
+ }
2518
+ else if (matchWord(word, constants)) {
2519
+ type = 'constant';
2520
+ }
2521
+ else if (matchWord(word, types)) {
2522
+ type = 'type.builtin';
2523
+ }
2524
+ else if (matchWord(word, builtins)) {
2525
+ type = 'builtin';
2526
+ }
2527
+ else if (/^[A-Z][a-zA-Z0-9]*$/.test(word)) {
2528
+ type = 'type';
2529
+ }
2530
+ else if (remaining[word.length] === '(') {
2531
+ type = 'function.call';
2532
+ }
2533
+ tokens.push({
2534
+ type,
2535
+ value: word,
2536
+ start: pos,
2537
+ end: pos + word.length,
2538
+ });
2539
+ pos += word.length;
2540
+ continue;
2541
+ }
2542
+ // Punctuation
2543
+ const char = source[pos];
2544
+ if (/[\[\]{}()]/.test(char)) {
2545
+ tokens.push({
2546
+ type: 'punctuation.bracket',
2547
+ value: char,
2548
+ start: pos,
2549
+ end: pos + 1,
2550
+ });
2551
+ }
2552
+ else if (/[,;]/.test(char)) {
2553
+ tokens.push({
2554
+ type: 'punctuation.separator',
2555
+ value: char,
2556
+ start: pos,
2557
+ end: pos + 1,
2558
+ });
2559
+ }
2560
+ else if (char === '.') {
2561
+ tokens.push({
2562
+ type: 'punctuation.accessor',
2563
+ value: char,
2564
+ start: pos,
2565
+ end: pos + 1,
2566
+ });
2567
+ }
2568
+ else {
2569
+ tokens.push({
2570
+ type: 'plain',
2571
+ value: char,
2572
+ start: pos,
2573
+ end: pos + 1,
2574
+ });
2575
+ }
2576
+ pos++;
2577
+ }
2578
+ return tokens;
2579
+ }
2580
+ /**
2581
+ * Tokenize line by line
2582
+ */
2583
+ export function tokenizeLines(source, languageName) {
2584
+ const lines = source.split('\n');
2585
+ const allTokens = tokenize(source, languageName);
2586
+ const result = [];
2587
+ let tokenIndex = 0;
2588
+ let charOffset = 0;
2589
+ for (let lineNum = 0; lineNum < lines.length; lineNum++) {
2590
+ const line = lines[lineNum];
2591
+ const lineEnd = charOffset + line.length;
2592
+ const lineTokens = [];
2593
+ while (tokenIndex < allTokens.length && allTokens[tokenIndex].start < lineEnd) {
2594
+ const token = allTokens[tokenIndex];
2595
+ if (token.end <= charOffset) {
2596
+ tokenIndex++;
2597
+ continue;
2598
+ }
2599
+ if (token.start >= lineEnd) {
2600
+ break;
2601
+ }
2602
+ // Token spans this line (possibly partially)
2603
+ const tokenStart = Math.max(token.start, charOffset);
2604
+ const tokenEnd = Math.min(token.end, lineEnd);
2605
+ const value = source.slice(tokenStart, tokenEnd);
2606
+ if (value) {
2607
+ lineTokens.push({
2608
+ type: token.type,
2609
+ value,
2610
+ start: tokenStart - charOffset,
2611
+ end: tokenEnd - charOffset,
2612
+ });
2613
+ }
2614
+ if (token.end <= lineEnd) {
2615
+ tokenIndex++;
2616
+ }
2617
+ else {
2618
+ break;
2619
+ }
2620
+ }
2621
+ result.push({
2622
+ lineNumber: lineNum + 1,
2623
+ tokens: lineTokens,
2624
+ raw: line,
2625
+ });
2626
+ charOffset = lineEnd + 1; // +1 for newline
2627
+ }
2628
+ return result;
2629
+ }
2630
+ // =============================================================================
2631
+ // Output Formatters
2632
+ // =============================================================================
2633
+ /**
2634
+ * Get color for token type from theme
2635
+ */
2636
+ export function getTokenColor(type, theme) {
2637
+ // Check exact match first
2638
+ if (theme.colors[type]) {
2639
+ return theme.colors[type];
2640
+ }
2641
+ // Check parent type (e.g., 'keyword' for 'keyword.control')
2642
+ const dotIndex = type.indexOf('.');
2643
+ if (dotIndex !== -1) {
2644
+ const parent = type.slice(0, dotIndex);
2645
+ if (theme.colors[parent]) {
2646
+ return theme.colors[parent];
2647
+ }
2648
+ }
2649
+ return theme.default || 'white';
2650
+ }
2651
+ /**
2652
+ * Convert color name to ANSI escape code
2653
+ */
2654
+ function colorToAnsiCode(color) {
2655
+ const colors = {
2656
+ black: '30',
2657
+ red: '31',
2658
+ green: '32',
2659
+ yellow: '33',
2660
+ blue: '34',
2661
+ magenta: '35',
2662
+ cyan: '36',
2663
+ white: '37',
2664
+ gray: '90',
2665
+ grey: '90',
2666
+ };
2667
+ if (colors[color]) {
2668
+ return `\x1b[${colors[color]}m`;
2669
+ }
2670
+ // Hex color -> 256 color approximation
2671
+ if (color.startsWith('#')) {
2672
+ const hex = color.slice(1);
2673
+ const r = parseInt(hex.slice(0, 2), 16);
2674
+ const g = parseInt(hex.slice(2, 4), 16);
2675
+ const b = parseInt(hex.slice(4, 6), 16);
2676
+ // Use 24-bit true color
2677
+ return `\x1b[38;2;${r};${g};${b}m`;
2678
+ }
2679
+ return '';
2680
+ }
2681
+ /**
2682
+ * Convert tokens to ANSI-escaped string
2683
+ */
2684
+ export function tokensToAnsi(tokens, theme = themes.dark) {
2685
+ let result = '';
2686
+ const reset = '\x1b[0m';
2687
+ for (const token of tokens) {
2688
+ const color = getTokenColor(token.type, theme);
2689
+ const ansi = colorToAnsiCode(color);
2690
+ result += ansi + token.value + reset;
2691
+ }
2692
+ return result;
2693
+ }
2694
+ /**
2695
+ * Highlight code and return ANSI string
2696
+ */
2697
+ export function highlight(source, languageName, themeName) {
2698
+ const tokens = tokenize(source, languageName);
2699
+ const theme = themeName ? themes[themeName] || themes.dark : themes.dark;
2700
+ return tokensToAnsi(tokens, theme);
2701
+ }
2702
+ /**
2703
+ * Highlight code with line numbers
2704
+ */
2705
+ export function highlightWithLineNumbers(source, languageName, options = {}) {
2706
+ const { theme: themeName, startLine = 1, highlightLines = [] } = options;
2707
+ const theme = themeName ? themes[themeName] || themes.dark : themes.dark;
2708
+ const lines = tokenizeLines(source, languageName);
2709
+ const lineNumWidth = String(startLine + lines.length - 1).length;
2710
+ const reset = '\x1b[0m';
2711
+ return lines
2712
+ .map((line) => {
2713
+ const lineNum = line.lineNumber + startLine - 1;
2714
+ const isHighlighted = highlightLines.includes(lineNum);
2715
+ const lineNumColor = colorToAnsiCode(isHighlighted ? 'yellow' : theme.lineNumber || 'gray');
2716
+ const numStr = String(lineNum).padStart(lineNumWidth, ' ');
2717
+ let result = `${lineNumColor}${numStr} │${reset} `;
2718
+ if (isHighlighted) {
2719
+ result += colorToAnsiCode('yellow') + '▶ ' + reset;
2720
+ }
2721
+ result += tokensToAnsi(line.tokens, theme);
2722
+ return result;
2723
+ })
2724
+ .join('\n');
2725
+ }
2726
+ //# sourceMappingURL=highlighter.js.map