@peteanderson/ansi 2.0.1 → 2.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 (385) hide show
  1. package/README.md +38 -11
  2. package/dist/{ansi.d.ts → cjs/ansi.d.ts} +17 -16
  3. package/dist/cjs/ansi.d.ts.map +1 -0
  4. package/dist/{ansi.js → cjs/ansi.js} +3 -2
  5. package/dist/cjs/ansi.js.map +1 -0
  6. package/dist/cjs/caret.d.ts.map +1 -0
  7. package/dist/cjs/caret.js.map +1 -0
  8. package/dist/cjs/erase.d.ts.map +1 -0
  9. package/dist/cjs/erase.js.map +1 -0
  10. package/dist/cjs/features/build.d.ts.map +1 -0
  11. package/dist/cjs/features/build.js.map +1 -0
  12. package/dist/cjs/features/detect.d.ts.map +1 -0
  13. package/dist/cjs/features/detect.js.map +1 -0
  14. package/dist/cjs/features/features.d.ts.map +1 -0
  15. package/dist/{features → cjs/features}/features.js +1 -1
  16. package/dist/cjs/features/features.js.map +1 -0
  17. package/dist/cjs/features/index.d.ts.map +1 -0
  18. package/dist/cjs/features/index.js.map +1 -0
  19. package/dist/cjs/features/types.d.ts.map +1 -0
  20. package/dist/cjs/features/types.js.map +1 -0
  21. package/dist/cjs/index.d.ts +96 -0
  22. package/dist/cjs/index.d.ts.map +1 -0
  23. package/dist/cjs/index.js +39 -0
  24. package/dist/cjs/index.js.map +1 -0
  25. package/dist/cjs/pad.d.ts.map +1 -0
  26. package/dist/cjs/pad.js.map +1 -0
  27. package/dist/cjs/patterns.d.ts.map +1 -0
  28. package/dist/{patterns.js → cjs/patterns.js} +1 -1
  29. package/dist/cjs/patterns.js.map +1 -0
  30. package/dist/cjs/scroll.d.ts.map +1 -0
  31. package/dist/cjs/scroll.js.map +1 -0
  32. package/dist/cjs/sgr/color/channel.d.ts.map +1 -0
  33. package/dist/cjs/sgr/color/channel.js.map +1 -0
  34. package/dist/cjs/sgr/color/color.d.ts.map +1 -0
  35. package/dist/cjs/sgr/color/color.js.map +1 -0
  36. package/dist/cjs/sgr/color/context.d.ts.map +1 -0
  37. package/dist/cjs/sgr/color/context.js.map +1 -0
  38. package/dist/cjs/sgr/color/index.d.ts.map +1 -0
  39. package/dist/cjs/sgr/color/index.js.map +1 -0
  40. package/dist/cjs/sgr/color/rgb.d.ts.map +1 -0
  41. package/dist/cjs/sgr/color/rgb.js.map +1 -0
  42. package/dist/cjs/sgr/color/utils.d.ts.map +1 -0
  43. package/dist/cjs/sgr/color/utils.js.map +1 -0
  44. package/dist/cjs/sgr/combine.d.ts.map +1 -0
  45. package/dist/cjs/sgr/combine.js.map +1 -0
  46. package/dist/cjs/sgr/format-builder.d.ts.map +1 -0
  47. package/dist/cjs/sgr/format-builder.js.map +1 -0
  48. package/dist/cjs/sgr/index.d.ts.map +1 -0
  49. package/dist/cjs/sgr/index.js.map +1 -0
  50. package/dist/cjs/sgr/lazy.d.ts.map +1 -0
  51. package/dist/cjs/sgr/lazy.js.map +1 -0
  52. package/dist/cjs/sgr/reset.d.ts.map +1 -0
  53. package/dist/cjs/sgr/reset.js.map +1 -0
  54. package/dist/cjs/sgr/sgr.d.ts.map +1 -0
  55. package/dist/cjs/sgr/sgr.js.map +1 -0
  56. package/dist/cjs/sgr/style.d.ts.map +1 -0
  57. package/dist/cjs/sgr/style.js.map +1 -0
  58. package/dist/cjs/sgr/types.d.ts.map +1 -0
  59. package/dist/{features → cjs/sgr}/types.js.map +1 -1
  60. package/dist/cjs/simplify/atom.d.ts.map +1 -0
  61. package/dist/cjs/simplify/atom.js.map +1 -0
  62. package/dist/cjs/simplify/index.d.ts.map +1 -0
  63. package/dist/cjs/simplify/index.js.map +1 -0
  64. package/dist/cjs/simplify/lookup.d.ts.map +1 -0
  65. package/dist/cjs/simplify/lookup.js.map +1 -0
  66. package/dist/cjs/simplify/simplify.d.ts.map +1 -0
  67. package/dist/{simplify → cjs/simplify}/simplify.js +4 -3
  68. package/dist/cjs/simplify/simplify.js.map +1 -0
  69. package/dist/{simplify → cjs/simplify}/state.d.ts +2 -1
  70. package/dist/cjs/simplify/state.d.ts.map +1 -0
  71. package/dist/{simplify → cjs/simplify}/state.js +32 -7
  72. package/dist/cjs/simplify/state.js.map +1 -0
  73. package/dist/cjs/simplify/types.d.ts.map +1 -0
  74. package/dist/cjs/simplify/types.js.map +1 -0
  75. package/dist/cjs/simplify/utils.d.ts.map +1 -0
  76. package/dist/cjs/simplify/utils.js.map +1 -0
  77. package/dist/cjs/slice.d.ts.map +1 -0
  78. package/dist/{slice.js → cjs/slice.js} +1 -1
  79. package/dist/cjs/slice.js.map +1 -0
  80. package/dist/cjs/strip.d.ts.map +1 -0
  81. package/dist/cjs/strip.js.map +1 -0
  82. package/dist/cjs/terminal.d.ts.map +1 -0
  83. package/dist/cjs/terminal.js.map +1 -0
  84. package/dist/cjs/typed-object.d.ts.map +1 -0
  85. package/dist/cjs/typed-object.js.map +1 -0
  86. package/dist/cjs/types.d.ts.map +1 -0
  87. package/dist/{sgr → cjs}/types.js.map +1 -1
  88. package/dist/esm/ansi.d.ts +85 -0
  89. package/dist/esm/ansi.d.ts.map +1 -0
  90. package/dist/esm/ansi.js +33 -0
  91. package/dist/esm/ansi.js.map +1 -0
  92. package/dist/esm/caret.d.ts +30 -0
  93. package/dist/esm/caret.d.ts.map +1 -0
  94. package/dist/esm/caret.js +64 -0
  95. package/dist/{caret.js.map → esm/caret.js.map} +1 -1
  96. package/dist/esm/erase.d.ts +17 -0
  97. package/dist/esm/erase.d.ts.map +1 -0
  98. package/dist/esm/erase.js +28 -0
  99. package/dist/{erase.js.map → esm/erase.js.map} +1 -1
  100. package/dist/esm/features/build.d.ts +7 -0
  101. package/dist/esm/features/build.d.ts.map +1 -0
  102. package/dist/esm/features/build.js +35 -0
  103. package/dist/esm/features/build.js.map +1 -0
  104. package/dist/esm/features/detect.d.ts +4 -0
  105. package/dist/esm/features/detect.d.ts.map +1 -0
  106. package/dist/esm/features/detect.js +29 -0
  107. package/dist/esm/features/detect.js.map +1 -0
  108. package/dist/esm/features/features.d.ts +3 -0
  109. package/dist/esm/features/features.d.ts.map +1 -0
  110. package/dist/esm/features/features.js +25 -0
  111. package/dist/esm/features/features.js.map +1 -0
  112. package/dist/esm/features/index.d.ts +3 -0
  113. package/dist/esm/features/index.d.ts.map +1 -0
  114. package/dist/esm/features/index.js +2 -0
  115. package/dist/esm/features/index.js.map +1 -0
  116. package/dist/esm/features/types.d.ts +12 -0
  117. package/dist/esm/features/types.d.ts.map +1 -0
  118. package/dist/esm/features/types.js +2 -0
  119. package/dist/esm/features/types.js.map +1 -0
  120. package/dist/esm/index.d.ts +4 -0
  121. package/dist/esm/index.d.ts.map +1 -0
  122. package/dist/esm/index.js +3 -0
  123. package/dist/esm/index.js.map +1 -0
  124. package/dist/esm/package.json +1 -0
  125. package/dist/esm/pad.d.ts +13 -0
  126. package/dist/esm/pad.d.ts.map +1 -0
  127. package/dist/esm/pad.js +12 -0
  128. package/dist/esm/pad.js.map +1 -0
  129. package/dist/esm/patterns.d.ts +4 -0
  130. package/dist/esm/patterns.d.ts.map +1 -0
  131. package/dist/esm/patterns.js +42 -0
  132. package/dist/esm/patterns.js.map +1 -0
  133. package/dist/esm/scroll.d.ts +8 -0
  134. package/dist/esm/scroll.d.ts.map +1 -0
  135. package/dist/esm/scroll.js +10 -0
  136. package/dist/esm/scroll.js.map +1 -0
  137. package/dist/esm/sgr/color/channel.d.ts +4 -0
  138. package/dist/esm/sgr/color/channel.d.ts.map +1 -0
  139. package/dist/esm/sgr/color/channel.js +30 -0
  140. package/dist/esm/sgr/color/channel.js.map +1 -0
  141. package/dist/esm/sgr/color/color.d.ts +4 -0
  142. package/dist/esm/sgr/color/color.d.ts.map +1 -0
  143. package/dist/esm/sgr/color/color.js +18 -0
  144. package/dist/esm/sgr/color/color.js.map +1 -0
  145. package/dist/esm/sgr/color/context.d.ts +13 -0
  146. package/dist/esm/sgr/color/context.d.ts.map +1 -0
  147. package/dist/esm/sgr/color/context.js +21 -0
  148. package/dist/esm/sgr/color/context.js.map +1 -0
  149. package/dist/esm/sgr/color/index.d.ts +2 -0
  150. package/dist/esm/sgr/color/index.d.ts.map +1 -0
  151. package/dist/esm/sgr/color/index.js +2 -0
  152. package/dist/esm/sgr/color/index.js.map +1 -0
  153. package/dist/esm/sgr/color/rgb.d.ts +5 -0
  154. package/dist/esm/sgr/color/rgb.d.ts.map +1 -0
  155. package/dist/esm/sgr/color/rgb.js +28 -0
  156. package/dist/esm/sgr/color/rgb.js.map +1 -0
  157. package/dist/esm/sgr/color/utils.d.ts +7 -0
  158. package/dist/esm/sgr/color/utils.d.ts.map +1 -0
  159. package/dist/esm/sgr/color/utils.js +53 -0
  160. package/dist/esm/sgr/color/utils.js.map +1 -0
  161. package/dist/esm/sgr/combine.d.ts +3 -0
  162. package/dist/esm/sgr/combine.d.ts.map +1 -0
  163. package/dist/esm/sgr/combine.js +11 -0
  164. package/dist/esm/sgr/combine.js.map +1 -0
  165. package/dist/esm/sgr/format-builder.d.ts +3 -0
  166. package/dist/esm/sgr/format-builder.d.ts.map +1 -0
  167. package/dist/esm/sgr/format-builder.js +30 -0
  168. package/dist/esm/sgr/format-builder.js.map +1 -0
  169. package/dist/esm/sgr/index.d.ts +3 -0
  170. package/dist/esm/sgr/index.d.ts.map +1 -0
  171. package/dist/esm/sgr/index.js +2 -0
  172. package/dist/esm/sgr/index.js.map +1 -0
  173. package/dist/esm/sgr/lazy.d.ts +6 -0
  174. package/dist/esm/sgr/lazy.d.ts.map +1 -0
  175. package/dist/esm/sgr/lazy.js +14 -0
  176. package/dist/esm/sgr/lazy.js.map +1 -0
  177. package/dist/esm/sgr/reset.d.ts +2 -0
  178. package/dist/esm/sgr/reset.d.ts.map +1 -0
  179. package/dist/esm/sgr/reset.js +2 -0
  180. package/dist/esm/sgr/reset.js.map +1 -0
  181. package/dist/esm/sgr/sgr.d.ts +4 -0
  182. package/dist/esm/sgr/sgr.d.ts.map +1 -0
  183. package/dist/esm/sgr/sgr.js +47 -0
  184. package/dist/esm/sgr/sgr.js.map +1 -0
  185. package/dist/esm/sgr/style.d.ts +3 -0
  186. package/dist/esm/sgr/style.d.ts.map +1 -0
  187. package/dist/esm/sgr/style.js +29 -0
  188. package/dist/esm/sgr/style.js.map +1 -0
  189. package/dist/esm/sgr/types.d.ts +59 -0
  190. package/dist/esm/sgr/types.d.ts.map +1 -0
  191. package/dist/esm/sgr/types.js +2 -0
  192. package/dist/{simplify → esm/sgr}/types.js.map +1 -1
  193. package/dist/esm/simplify/atom.d.ts +4 -0
  194. package/dist/esm/simplify/atom.d.ts.map +1 -0
  195. package/dist/esm/simplify/atom.js +33 -0
  196. package/dist/esm/simplify/atom.js.map +1 -0
  197. package/dist/esm/simplify/index.d.ts +2 -0
  198. package/dist/esm/simplify/index.d.ts.map +1 -0
  199. package/dist/esm/simplify/index.js +2 -0
  200. package/dist/esm/simplify/index.js.map +1 -0
  201. package/dist/esm/simplify/lookup.d.ts +3 -0
  202. package/dist/esm/simplify/lookup.d.ts.map +1 -0
  203. package/dist/esm/simplify/lookup.js +70 -0
  204. package/dist/esm/simplify/lookup.js.map +1 -0
  205. package/dist/esm/simplify/simplify.d.ts +3 -0
  206. package/dist/esm/simplify/simplify.d.ts.map +1 -0
  207. package/dist/esm/simplify/simplify.js +23 -0
  208. package/dist/esm/simplify/simplify.js.map +1 -0
  209. package/dist/esm/simplify/state.d.ts +6 -0
  210. package/dist/esm/simplify/state.d.ts.map +1 -0
  211. package/dist/esm/simplify/state.js +74 -0
  212. package/dist/esm/simplify/state.js.map +1 -0
  213. package/dist/esm/simplify/types.d.ts +9 -0
  214. package/dist/esm/simplify/types.d.ts.map +1 -0
  215. package/dist/esm/simplify/types.js +2 -0
  216. package/dist/esm/simplify/types.js.map +1 -0
  217. package/dist/esm/simplify/utils.d.ts +3 -0
  218. package/dist/esm/simplify/utils.d.ts.map +1 -0
  219. package/dist/esm/simplify/utils.js +28 -0
  220. package/dist/esm/simplify/utils.js.map +1 -0
  221. package/dist/esm/slice.d.ts +22 -0
  222. package/dist/esm/slice.d.ts.map +1 -0
  223. package/dist/esm/slice.js +69 -0
  224. package/dist/esm/slice.js.map +1 -0
  225. package/dist/esm/strip.d.ts +10 -0
  226. package/dist/esm/strip.d.ts.map +1 -0
  227. package/dist/esm/strip.js +8 -0
  228. package/dist/esm/strip.js.map +1 -0
  229. package/dist/esm/terminal.d.ts +26 -0
  230. package/dist/esm/terminal.d.ts.map +1 -0
  231. package/dist/esm/terminal.js +46 -0
  232. package/dist/{terminal.js.map → esm/terminal.js.map} +1 -1
  233. package/dist/esm/typed-object.d.ts +16 -0
  234. package/dist/esm/typed-object.d.ts.map +1 -0
  235. package/dist/esm/typed-object.js +33 -0
  236. package/dist/esm/typed-object.js.map +1 -0
  237. package/dist/esm/types.d.ts +25 -0
  238. package/dist/esm/types.d.ts.map +1 -0
  239. package/dist/esm/types.js +2 -0
  240. package/dist/esm/types.js.map +1 -0
  241. package/package.json +14 -7
  242. package/src/ansi.ts +6 -3
  243. package/src/index.ts +3 -1
  244. package/src/patterns.ts +1 -1
  245. package/src/require.ts +11 -0
  246. package/src/simplify/simplify.ts +4 -3
  247. package/src/simplify/state.ts +39 -8
  248. package/dist/ansi.d.ts.map +0 -1
  249. package/dist/ansi.js.map +0 -1
  250. package/dist/caret.d.ts.map +0 -1
  251. package/dist/erase.d.ts.map +0 -1
  252. package/dist/features/build.d.ts.map +0 -1
  253. package/dist/features/build.js.map +0 -1
  254. package/dist/features/detect.d.ts.map +0 -1
  255. package/dist/features/detect.js.map +0 -1
  256. package/dist/features/features.d.ts.map +0 -1
  257. package/dist/features/features.js.map +0 -1
  258. package/dist/features/index.d.ts.map +0 -1
  259. package/dist/features/index.js.map +0 -1
  260. package/dist/features/types.d.ts.map +0 -1
  261. package/dist/index.d.ts +0 -3
  262. package/dist/index.d.ts.map +0 -1
  263. package/dist/index.js +0 -24
  264. package/dist/index.js.map +0 -1
  265. package/dist/pad.d.ts.map +0 -1
  266. package/dist/pad.js.map +0 -1
  267. package/dist/patterns.d.ts.map +0 -1
  268. package/dist/patterns.js.map +0 -1
  269. package/dist/scroll.d.ts.map +0 -1
  270. package/dist/scroll.js.map +0 -1
  271. package/dist/sgr/color/channel.d.ts.map +0 -1
  272. package/dist/sgr/color/channel.js.map +0 -1
  273. package/dist/sgr/color/color.d.ts.map +0 -1
  274. package/dist/sgr/color/color.js.map +0 -1
  275. package/dist/sgr/color/context.d.ts.map +0 -1
  276. package/dist/sgr/color/context.js.map +0 -1
  277. package/dist/sgr/color/index.d.ts.map +0 -1
  278. package/dist/sgr/color/index.js.map +0 -1
  279. package/dist/sgr/color/rgb.d.ts.map +0 -1
  280. package/dist/sgr/color/rgb.js.map +0 -1
  281. package/dist/sgr/color/utils.d.ts.map +0 -1
  282. package/dist/sgr/color/utils.js.map +0 -1
  283. package/dist/sgr/combine.d.ts.map +0 -1
  284. package/dist/sgr/combine.js.map +0 -1
  285. package/dist/sgr/format-builder.d.ts.map +0 -1
  286. package/dist/sgr/format-builder.js.map +0 -1
  287. package/dist/sgr/index.d.ts.map +0 -1
  288. package/dist/sgr/index.js.map +0 -1
  289. package/dist/sgr/lazy.d.ts.map +0 -1
  290. package/dist/sgr/lazy.js.map +0 -1
  291. package/dist/sgr/reset.d.ts.map +0 -1
  292. package/dist/sgr/reset.js.map +0 -1
  293. package/dist/sgr/sgr.d.ts.map +0 -1
  294. package/dist/sgr/sgr.js.map +0 -1
  295. package/dist/sgr/style.d.ts.map +0 -1
  296. package/dist/sgr/style.js.map +0 -1
  297. package/dist/sgr/types.d.ts.map +0 -1
  298. package/dist/simplify/atom.d.ts.map +0 -1
  299. package/dist/simplify/atom.js.map +0 -1
  300. package/dist/simplify/index.d.ts.map +0 -1
  301. package/dist/simplify/index.js.map +0 -1
  302. package/dist/simplify/lookup.d.ts.map +0 -1
  303. package/dist/simplify/lookup.js.map +0 -1
  304. package/dist/simplify/simplify.d.ts.map +0 -1
  305. package/dist/simplify/simplify.js.map +0 -1
  306. package/dist/simplify/state.d.ts.map +0 -1
  307. package/dist/simplify/state.js.map +0 -1
  308. package/dist/simplify/types.d.ts.map +0 -1
  309. package/dist/simplify/utils.d.ts.map +0 -1
  310. package/dist/simplify/utils.js.map +0 -1
  311. package/dist/slice.d.ts.map +0 -1
  312. package/dist/slice.js.map +0 -1
  313. package/dist/strip.d.ts.map +0 -1
  314. package/dist/strip.js.map +0 -1
  315. package/dist/terminal.d.ts.map +0 -1
  316. package/dist/typed-object.d.ts.map +0 -1
  317. package/dist/typed-object.js.map +0 -1
  318. package/dist/types.d.ts.map +0 -1
  319. package/dist/types.js.map +0 -1
  320. /package/dist/{caret.d.ts → cjs/caret.d.ts} +0 -0
  321. /package/dist/{caret.js → cjs/caret.js} +0 -0
  322. /package/dist/{erase.d.ts → cjs/erase.d.ts} +0 -0
  323. /package/dist/{erase.js → cjs/erase.js} +0 -0
  324. /package/dist/{features → cjs/features}/build.d.ts +0 -0
  325. /package/dist/{features → cjs/features}/build.js +0 -0
  326. /package/dist/{features → cjs/features}/detect.d.ts +0 -0
  327. /package/dist/{features → cjs/features}/detect.js +0 -0
  328. /package/dist/{features → cjs/features}/features.d.ts +0 -0
  329. /package/dist/{features → cjs/features}/index.d.ts +0 -0
  330. /package/dist/{features → cjs/features}/index.js +0 -0
  331. /package/dist/{features → cjs/features}/types.d.ts +0 -0
  332. /package/dist/{features → cjs/features}/types.js +0 -0
  333. /package/dist/{pad.d.ts → cjs/pad.d.ts} +0 -0
  334. /package/dist/{pad.js → cjs/pad.js} +0 -0
  335. /package/dist/{patterns.d.ts → cjs/patterns.d.ts} +0 -0
  336. /package/dist/{scroll.d.ts → cjs/scroll.d.ts} +0 -0
  337. /package/dist/{scroll.js → cjs/scroll.js} +0 -0
  338. /package/dist/{sgr → cjs/sgr}/color/channel.d.ts +0 -0
  339. /package/dist/{sgr → cjs/sgr}/color/channel.js +0 -0
  340. /package/dist/{sgr → cjs/sgr}/color/color.d.ts +0 -0
  341. /package/dist/{sgr → cjs/sgr}/color/color.js +0 -0
  342. /package/dist/{sgr → cjs/sgr}/color/context.d.ts +0 -0
  343. /package/dist/{sgr → cjs/sgr}/color/context.js +0 -0
  344. /package/dist/{sgr → cjs/sgr}/color/index.d.ts +0 -0
  345. /package/dist/{sgr → cjs/sgr}/color/index.js +0 -0
  346. /package/dist/{sgr → cjs/sgr}/color/rgb.d.ts +0 -0
  347. /package/dist/{sgr → cjs/sgr}/color/rgb.js +0 -0
  348. /package/dist/{sgr → cjs/sgr}/color/utils.d.ts +0 -0
  349. /package/dist/{sgr → cjs/sgr}/color/utils.js +0 -0
  350. /package/dist/{sgr → cjs/sgr}/combine.d.ts +0 -0
  351. /package/dist/{sgr → cjs/sgr}/combine.js +0 -0
  352. /package/dist/{sgr → cjs/sgr}/format-builder.d.ts +0 -0
  353. /package/dist/{sgr → cjs/sgr}/format-builder.js +0 -0
  354. /package/dist/{sgr → cjs/sgr}/index.d.ts +0 -0
  355. /package/dist/{sgr → cjs/sgr}/index.js +0 -0
  356. /package/dist/{sgr → cjs/sgr}/lazy.d.ts +0 -0
  357. /package/dist/{sgr → cjs/sgr}/lazy.js +0 -0
  358. /package/dist/{sgr → cjs/sgr}/reset.d.ts +0 -0
  359. /package/dist/{sgr → cjs/sgr}/reset.js +0 -0
  360. /package/dist/{sgr → cjs/sgr}/sgr.d.ts +0 -0
  361. /package/dist/{sgr → cjs/sgr}/sgr.js +0 -0
  362. /package/dist/{sgr → cjs/sgr}/style.d.ts +0 -0
  363. /package/dist/{sgr → cjs/sgr}/style.js +0 -0
  364. /package/dist/{sgr → cjs/sgr}/types.d.ts +0 -0
  365. /package/dist/{sgr → cjs/sgr}/types.js +0 -0
  366. /package/dist/{simplify → cjs/simplify}/atom.d.ts +0 -0
  367. /package/dist/{simplify → cjs/simplify}/atom.js +0 -0
  368. /package/dist/{simplify → cjs/simplify}/index.d.ts +0 -0
  369. /package/dist/{simplify → cjs/simplify}/index.js +0 -0
  370. /package/dist/{simplify → cjs/simplify}/lookup.d.ts +0 -0
  371. /package/dist/{simplify → cjs/simplify}/lookup.js +0 -0
  372. /package/dist/{simplify → cjs/simplify}/simplify.d.ts +0 -0
  373. /package/dist/{simplify → cjs/simplify}/types.d.ts +0 -0
  374. /package/dist/{simplify → cjs/simplify}/types.js +0 -0
  375. /package/dist/{simplify → cjs/simplify}/utils.d.ts +0 -0
  376. /package/dist/{simplify → cjs/simplify}/utils.js +0 -0
  377. /package/dist/{slice.d.ts → cjs/slice.d.ts} +0 -0
  378. /package/dist/{strip.d.ts → cjs/strip.d.ts} +0 -0
  379. /package/dist/{strip.js → cjs/strip.js} +0 -0
  380. /package/dist/{terminal.d.ts → cjs/terminal.d.ts} +0 -0
  381. /package/dist/{terminal.js → cjs/terminal.js} +0 -0
  382. /package/dist/{typed-object.d.ts → cjs/typed-object.d.ts} +0 -0
  383. /package/dist/{typed-object.js → cjs/typed-object.js} +0 -0
  384. /package/dist/{types.d.ts → cjs/types.d.ts} +0 -0
  385. /package/dist/{types.js → cjs/types.js} +0 -0
@@ -0,0 +1,47 @@
1
+ import { TypedObject } from "../typed-object.js";
2
+ import { makeColor } from "./color/index.js";
3
+ import { combineCodes } from "./combine.js";
4
+ import { makeFormatBuilder } from "./format-builder.js";
5
+ import { makeReset } from "./reset.js";
6
+ import { makeStyle } from "./style.js";
7
+ const keyMap = {
8
+ fg: undefined,
9
+ bg: undefined,
10
+ bold: undefined,
11
+ dim: undefined,
12
+ italic: undefined,
13
+ underline: undefined,
14
+ inverse: undefined,
15
+ hidden: undefined,
16
+ strikethrough: undefined,
17
+ doubleUnderline: undefined,
18
+ frame: undefined,
19
+ encircle: undefined,
20
+ overline: undefined,
21
+ };
22
+ const allKeys = new Set(TypedObject.keys(keyMap));
23
+ const cache = {};
24
+ export function makeSGR(features) {
25
+ const cacheKey = `${features.colorDepth}.${features.style}`;
26
+ if (cache[cacheKey])
27
+ return cache[cacheKey];
28
+ const colorFormat = makeFormatBuilder(makeChain, features.colorDepth > 1);
29
+ const styleFormat = makeFormatBuilder(makeChain, features.style);
30
+ const style = makeStyle(allKeys, styleFormat, features.style);
31
+ function makeChain(keys, baseFormat) {
32
+ const chainedColorFormat = (keys, open, close, reset) => colorFormat(keys, combineCodes(baseFormat.codes.open, open), combineCodes(baseFormat.codes.close, close), reset);
33
+ const chainedStyleFormat = (keys, open, close, reset) => styleFormat(keys, combineCodes(baseFormat.codes.open, open), combineCodes(baseFormat.codes.close, close), reset);
34
+ return /** @type {Chain<any>} */ ({
35
+ ...makeColor(keys, chainedColorFormat, style, features.colorDepth),
36
+ ...makeStyle(keys, chainedStyleFormat, features.style),
37
+ });
38
+ }
39
+ const rtn = {
40
+ ...makeColor(allKeys, colorFormat, style, features.colorDepth),
41
+ style,
42
+ reset: makeReset(features.colorDepth > 1 || features.style),
43
+ };
44
+ cache[cacheKey] = rtn;
45
+ return rtn;
46
+ }
47
+ //# sourceMappingURL=sgr.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"sgr.js","sourceRoot":"","sources":["../../../src/sgr/sgr.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,WAAW,EAAC,MAAY,iBAAiB,CAAC;AAClD,OAAO,EAAC,SAAS,EAAC,MAAc,SAAS,CAAC;AAC1C,OAAO,EAAC,YAAY,EAAC,MAAW,WAAW,CAAC;AAC5C,OAAO,EAAC,iBAAiB,EAAC,MAAM,kBAAkB,CAAC;AACnD,OAAO,EAAC,SAAS,EAAC,MAAc,SAAS,CAAC;AAC1C,OAAO,EAAC,SAAS,EAAC,MAAc,SAAS,CAAC;AAK1C,MAAM,MAAM,GAAgC;IAC3C,EAAE,EAAgB,SAAS;IAC3B,EAAE,EAAgB,SAAS;IAC3B,IAAI,EAAc,SAAS;IAC3B,GAAG,EAAe,SAAS;IAC3B,MAAM,EAAY,SAAS;IAC3B,SAAS,EAAS,SAAS;IAC3B,OAAO,EAAW,SAAS;IAC3B,MAAM,EAAY,SAAS;IAC3B,aAAa,EAAK,SAAS;IAC3B,eAAe,EAAG,SAAS;IAC3B,KAAK,EAAa,SAAS;IAC3B,QAAQ,EAAU,SAAS;IAC3B,QAAQ,EAAU,SAAS;CAC3B,CAAC;AAEF,MAAM,OAAO,GAA0B,IAAI,GAAG,CAAC,WAAW,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC;AAEzE,MAAM,KAAK,GAAqD,EAAE,CAAC;AAEnE,MAAM,UAAU,OAAO,CAAC,QAAkB;IACzC,MAAM,QAAQ,GAAG,GAAG,QAAQ,CAAC,UAAU,IAAI,QAAQ,CAAC,KAAK,EAAW,CAAC;IACrE,IAAI,KAAK,CAAC,QAAQ,CAAC;QAClB,OAAO,KAAK,CAAC,QAAQ,CAAC,CAAC;IAExB,MAAM,WAAW,GAAG,iBAAiB,CAAC,SAAS,EAAE,QAAQ,CAAC,UAAU,GAAG,CAAC,CAAC,CAAC;IAC1E,MAAM,WAAW,GAAG,iBAAiB,CAAC,SAAS,EAAE,QAAQ,CAAC,KAAK,CAAC,CAAC;IACjE,MAAM,KAAK,GAAS,SAAS,CAAC,OAAO,EAAE,WAAW,EAAE,QAAQ,CAAC,KAAK,CAAC,CAAC;IAEpE,SAAS,SAAS,CACjB,IAA8B,EAC9B,UAAuB;QAEvB,MAAM,kBAAkB,GAAkB,CAAC,IAAI,EAAE,IAAI,EAAE,KAAK,EAAE,KAAK,EAAE,EAAE,CAAC,WAAW,CAClF,IAAI,EACJ,YAAY,CAAC,UAAU,CAAC,KAAK,CAAC,IAAI,EAAE,IAAI,CAAC,EACzC,YAAY,CAAC,UAAU,CAAC,KAAK,CAAC,KAAK,EAAE,KAAK,CAAC,EAC3C,KAAK,CACL,CAAC;QACF,MAAM,kBAAkB,GAAkB,CAAC,IAAI,EAAE,IAAI,EAAE,KAAK,EAAE,KAAK,EAAE,EAAE,CAAC,WAAW,CAClF,IAAI,EACJ,YAAY,CAAC,UAAU,CAAC,KAAK,CAAC,IAAI,EAAE,IAAI,CAAC,EACzC,YAAY,CAAC,UAAU,CAAC,KAAK,CAAC,KAAK,EAAE,KAAK,CAAC,EAC3C,KAAK,CACL,CAAC;QAEF,OAAO,yBAAyB,CAAA,CAAC;YAChC,GAAG,SAAS,CAAC,IAAI,EAAE,kBAAkB,EAAE,KAAK,EAAE,QAAQ,CAAC,UAAU,CAAC;YAClE,GAAG,SAAS,CAAC,IAAI,EAAE,kBAAkB,EAAE,QAAQ,CAAC,KAAK,CAAC;SACtD,CAAC,CAAC;IACJ,CAAC;IAED,MAAM,GAAG,GAAQ;QAChB,GAAG,SAAS,CAAC,OAAO,EAAE,WAAW,EAAE,KAAK,EAAE,QAAQ,CAAC,UAAU,CAAC;QAC9D,KAAK;QACL,KAAK,EAAE,SAAS,CAAC,QAAQ,CAAC,UAAU,GAAG,CAAC,IAAI,QAAQ,CAAC,KAAK,CAAC;KAC3D,CAAC;IAEF,KAAK,CAAC,QAAQ,CAAC,GAAG,GAAG,CAAC;IAEtB,OAAO,GAAG,CAAC;AACZ,CAAC"}
@@ -0,0 +1,3 @@
1
+ import type { ChainKey, FormatBuilder, Style } from "./types.js";
2
+ export declare function makeStyle(keys: ReadonlySet<ChainKey>, makeFormatter: FormatBuilder, enabled: boolean): Style<any>;
3
+ //# sourceMappingURL=style.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"style.d.ts","sourceRoot":"","sources":["../../../src/sgr/style.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAC,QAAQ,EAAE,aAAa,EAAE,KAAK,EAAC,MAAM,SAAS,CAAC;AAgB5D,wBAAgB,SAAS,CACxB,IAAI,EAAY,WAAW,CAAC,QAAQ,CAAC,EACrC,aAAa,EAAG,aAAa,EAC7B,OAAO,EAAS,OAAO,GACrB,KAAK,CAAC,GAAG,CAAC,CAcZ"}
@@ -0,0 +1,29 @@
1
+ import { TypedObject } from "../typed-object.js";
2
+ import { lazy } from "./lazy.js";
3
+ const propParams = TypedObject.entries({
4
+ bold: [1, 22, true],
5
+ dim: [2, 22, true],
6
+ italic: [3, 23],
7
+ underline: [4, 24],
8
+ inverse: [7, 27],
9
+ hidden: [8, 28],
10
+ strikethrough: [9, 29],
11
+ doubleUnderline: [21, 24],
12
+ frame: [51, 54],
13
+ encircle: [52, 54],
14
+ overline: [53, 55],
15
+ });
16
+ export function makeStyle(keys, makeFormatter, enabled) {
17
+ const rtn = {};
18
+ for (const [key, args] of propParams) {
19
+ if (keys.has(key)) {
20
+ lazy.add(rtn, key, () => {
21
+ const newKeys = new Set(keys);
22
+ newKeys.delete(key);
23
+ return enabled ? makeFormatter(newKeys, ...args) : makeFormatter(newKeys, 0, 0);
24
+ });
25
+ }
26
+ }
27
+ return rtn;
28
+ }
29
+ //# sourceMappingURL=style.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"style.js","sourceRoot":"","sources":["../../../src/sgr/style.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,WAAW,EAAC,MAAM,iBAAiB,CAAC;AAC5C,OAAO,EAAC,IAAI,EAAC,MAAa,QAAQ,CAAC;AAInC,MAAM,UAAU,GAAG,WAAW,CAAC,OAAO,CAA4D;IACjG,IAAI,EAAc,CAAE,CAAC,EAAE,EAAE,EAAE,IAAI,CAAC;IAChC,GAAG,EAAe,CAAE,CAAC,EAAE,EAAE,EAAE,IAAI,CAAC;IAChC,MAAM,EAAY,CAAE,CAAC,EAAE,EAAE,CAAC;IAC1B,SAAS,EAAS,CAAE,CAAC,EAAE,EAAE,CAAC;IAC1B,OAAO,EAAW,CAAE,CAAC,EAAE,EAAE,CAAC;IAC1B,MAAM,EAAY,CAAE,CAAC,EAAE,EAAE,CAAC;IAC1B,aAAa,EAAK,CAAE,CAAC,EAAE,EAAE,CAAC;IAC1B,eAAe,EAAG,CAAC,EAAE,EAAE,EAAE,CAAC;IAC1B,KAAK,EAAa,CAAC,EAAE,EAAE,EAAE,CAAC;IAC1B,QAAQ,EAAU,CAAC,EAAE,EAAE,EAAE,CAAC;IAC1B,QAAQ,EAAU,CAAC,EAAE,EAAE,EAAE,CAAC;CAC1B,CAAC,CAAC;AAEH,MAAM,UAAU,SAAS,CACxB,IAAqC,EACrC,aAA6B,EAC7B,OAAuB;IAEvB,MAAM,GAAG,GAAG,EAAgB,CAAC;IAE7B,KAAK,MAAM,CAAC,GAAG,EAAE,IAAI,CAAC,IAAI,UAAU,EAAE,CAAC;QACtC,IAAI,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC;YACnB,IAAI,CAAC,GAAG,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE;gBACvB,MAAM,OAAO,GAAG,IAAI,GAAG,CAAC,IAAI,CAAC,CAAC;gBAC9B,OAAO,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;gBACpB,OAAO,OAAO,CAAC,CAAC,CAAC,aAAa,CAAC,OAAO,EAAE,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC,aAAa,CAAC,OAAO,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC;YACjF,CAAC,CAAC,CAAC;QACJ,CAAC;IACF,CAAC;IAED,OAAO,GAAG,CAAC;AACZ,CAAC"}
@@ -0,0 +1,59 @@
1
+ export type ColorKey = "fg" | "bg";
2
+ export type StyleKey = "bold" | "dim" | "italic" | "underline" | "inverse" | "hidden" | "strikethrough" | "doubleUnderline" | "frame" | "encircle" | "overline";
3
+ export type ChainKey = ColorKey | StyleKey;
4
+ export type Chain<Keys extends ChainKey> = Color<Keys> & Style<Keys>;
5
+ export type ChainBuilder = <Keys extends ChainKey>(keys: ReadonlySet<Keys>, baseFormat: FormatBase) => Chain<Keys>;
6
+ export type Code = number | number[];
7
+ export interface FormatBase {
8
+ (text: string): string;
9
+ open: string;
10
+ close: string;
11
+ codes: {
12
+ open: Code;
13
+ close: Code;
14
+ };
15
+ }
16
+ export interface ChainedFormat<Keys extends ChainKey = ChainKey> extends FormatBase {
17
+ and: Chain<Keys>;
18
+ }
19
+ export type Format<Keys extends ChainKey = ChainKey> = [
20
+ Keys
21
+ ] extends [never] ? FormatBase : ChainedFormat<Keys>;
22
+ export type FormatBuilder = <Keys extends ChainKey = ChainKey>(keys: ReadonlySet<Keys>, open: Code, close: Code, reset?: boolean) => Format<Keys>;
23
+ export interface Channel<Keys extends ChainKey = ChainKey> {
24
+ black: Format<Keys>;
25
+ red: Format<Keys>;
26
+ green: Format<Keys>;
27
+ yellow: Format<Keys>;
28
+ blue: Format<Keys>;
29
+ magenta: Format<Keys>;
30
+ cyan: Format<Keys>;
31
+ white: Format<Keys>;
32
+ brightBlack: Format<Keys>;
33
+ brightRed: Format<Keys>;
34
+ brightGreen: Format<Keys>;
35
+ brightYellow: Format<Keys>;
36
+ brightBlue: Format<Keys>;
37
+ brightMagenta: Format<Keys>;
38
+ brightCyan: Format<Keys>;
39
+ brightWhite: Format<Keys>;
40
+ rgb: (r: number, g: number, b: number) => Format<Keys>;
41
+ x256: {
42
+ (code: number): Format<Keys>;
43
+ (r: number, g: number, b: number): Format<Keys>;
44
+ };
45
+ default: string;
46
+ }
47
+ export type Color<Keys extends ChainKey = ChainKey> = {
48
+ [K in Extract<ColorKey, Keys>]: Channel<Exclude<Keys, K>>;
49
+ };
50
+ export type Style<Keys extends ChainKey = ChainKey> = {
51
+ [K in Extract<StyleKey, Keys>]: Format<Exclude<Keys, K>>;
52
+ };
53
+ export interface SGR {
54
+ fg: Channel<Exclude<ChainKey, "fg">>;
55
+ bg: Channel<Exclude<ChainKey, "bg">>;
56
+ style: Style;
57
+ reset: string;
58
+ }
59
+ //# sourceMappingURL=types.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../src/sgr/types.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=types.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"types.js","sourceRoot":"","sources":["../../src/simplify/types.ts"],"names":[],"mappings":""}
1
+ {"version":3,"file":"types.js","sourceRoot":"","sources":["../../../src/sgr/types.ts"],"names":[],"mappings":""}
@@ -0,0 +1,4 @@
1
+ import type { BuildAtom } from "./types.js";
2
+ export declare const buildExtendedColorAtom: BuildAtom;
3
+ export declare const buildIntensityAtom: BuildAtom;
4
+ //# sourceMappingURL=atom.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"atom.d.ts","sourceRoot":"","sources":["../../../src/simplify/atom.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAC,SAAS,EAAC,MAAM,SAAS,CAAC;AAEvC,eAAO,MAAM,sBAAsB,EAAE,SAapC,CAAC;AAEF,eAAO,MAAM,kBAAkB,EAAE,SAoBhC,CAAC"}
@@ -0,0 +1,33 @@
1
+ export const buildExtendedColorAtom = (attribute, codes, index) => {
2
+ switch (codes[index + 1]) {
3
+ case 2:
4
+ if (index + 5 >= codes.length)
5
+ return { attribute, code: codes.slice(index), skip: codes.length - index - 1 };
6
+ return { attribute, code: codes.slice(index, index + 5), skip: 4 };
7
+ case 5:
8
+ if (index + 3 >= codes.length)
9
+ return { attribute, code: codes.slice(index), skip: codes.length - index - 1 };
10
+ return { attribute, code: codes.slice(index, index + 3), skip: 2 };
11
+ default:
12
+ return { attribute, code: codes.slice(index, index + 2), skip: 1 };
13
+ }
14
+ };
15
+ export const buildIntensityAtom = (attribute, codes, index, state) => {
16
+ const code = codes[index];
17
+ if (code === 22)
18
+ return { attribute, code: [code] };
19
+ const current = state.get("intensity");
20
+ if (
21
+ // If there is no intensity currently in the state, then we can just set the new state.
22
+ !current ||
23
+ // If the current intensity is normal (22), then we can just set the new state.
24
+ // Note that while the ultimate transition may return a code sequence of `[22, 1]` or
25
+ // `[22, 2]`, in our state representation, the only two-code intensity is `[1, 2]`.
26
+ current[0] === 22 ||
27
+ // If the current intensity is equal to the new intensity, then return the same state.
28
+ current.length === 1 && current[0] === code)
29
+ return { attribute, code: [code] };
30
+ // Otherwise, we need to set both intensity codes.
31
+ return { attribute, code: [1, 2] };
32
+ };
33
+ //# sourceMappingURL=atom.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"atom.js","sourceRoot":"","sources":["../../../src/simplify/atom.ts"],"names":[],"mappings":"AAEA,MAAM,CAAC,MAAM,sBAAsB,GAAc,CAAC,SAAS,EAAE,KAAK,EAAE,KAAK,EAAE,EAAE;IAC5E,QAAQ,KAAK,CAAC,KAAK,GAAG,CAAC,CAAC,EAAE,CAAC;QAC1B,KAAK,CAAC;YACL,IAAI,KAAK,GAAG,CAAC,IAAI,KAAK,CAAC,MAAM;gBAC5B,OAAO,EAAC,SAAS,EAAE,IAAI,EAAE,KAAK,CAAC,KAAK,CAAC,KAAK,CAAC,EAAE,IAAI,EAAE,KAAK,CAAC,MAAM,GAAG,KAAK,GAAG,CAAC,EAAC,CAAC;YAC9E,OAAO,EAAC,SAAS,EAAE,IAAI,EAAE,KAAK,CAAC,KAAK,CAAC,KAAK,EAAE,KAAK,GAAG,CAAC,CAAC,EAAE,IAAI,EAAE,CAAC,EAAC,CAAC;QAClE,KAAK,CAAC;YACL,IAAI,KAAK,GAAG,CAAC,IAAI,KAAK,CAAC,MAAM;gBAC5B,OAAO,EAAC,SAAS,EAAE,IAAI,EAAE,KAAK,CAAC,KAAK,CAAC,KAAK,CAAC,EAAE,IAAI,EAAE,KAAK,CAAC,MAAM,GAAG,KAAK,GAAG,CAAC,EAAC,CAAC;YAC9E,OAAO,EAAC,SAAS,EAAE,IAAI,EAAE,KAAK,CAAC,KAAK,CAAC,KAAK,EAAE,KAAK,GAAG,CAAC,CAAC,EAAE,IAAI,EAAE,CAAC,EAAC,CAAC;QAClE;YACC,OAAO,EAAC,SAAS,EAAE,IAAI,EAAE,KAAK,CAAC,KAAK,CAAC,KAAK,EAAE,KAAK,GAAG,CAAC,CAAC,EAAE,IAAI,EAAE,CAAC,EAAC,CAAC;IACnE,CAAC;AACF,CAAC,CAAC;AAEF,MAAM,CAAC,MAAM,kBAAkB,GAAc,CAAC,SAAS,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,EAAE;IAC/E,MAAM,IAAI,GAAG,KAAK,CAAC,KAAK,CAAC,CAAC;IAC1B,IAAI,IAAI,KAAK,EAAE;QACd,OAAO,EAAC,SAAS,EAAE,IAAI,EAAE,CAAC,IAAI,CAAC,EAAC,CAAC;IAElC,MAAM,OAAO,GAAG,KAAK,CAAC,GAAG,CAAC,WAAW,CAAC,CAAC;IACvC;IACC,uFAAuF;IACvF,CAAC,OAAO;QACR,+EAA+E;QAC/E,qFAAqF;QACrF,mFAAmF;QACnF,OAAO,CAAC,CAAC,CAAC,KAAK,EAAE;QACjB,sFAAsF;QACtF,OAAO,CAAC,MAAM,KAAK,CAAC,IAAI,OAAO,CAAC,CAAC,CAAC,KAAK,IAAI;QAE3C,OAAO,EAAC,SAAS,EAAE,IAAI,EAAE,CAAC,IAAI,CAAC,EAAC,CAAC;IAElC,kDAAkD;IAClD,OAAO,EAAC,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,EAAC,CAAC;AAClC,CAAC,CAAC"}
@@ -0,0 +1,2 @@
1
+ export * from "./simplify.js";
2
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/simplify/index.ts"],"names":[],"mappings":"AAAA,cAAc,YAAY,CAAC"}
@@ -0,0 +1,2 @@
1
+ export * from "./simplify.js";
2
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/simplify/index.ts"],"names":[],"mappings":"AAAA,cAAc,YAAY,CAAC"}
@@ -0,0 +1,3 @@
1
+ import type { Atom, AttributeMap } from "./types.js";
2
+ export declare function lookUpAtom(codes: number[], index: number, state: AttributeMap): Atom;
3
+ //# sourceMappingURL=lookup.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"lookup.d.ts","sourceRoot":"","sources":["../../../src/simplify/lookup.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAC,IAAI,EAAa,YAAY,EAAY,MAAM,SAAS,CAAC;AA6DtE,wBAAgB,UAAU,CAAC,KAAK,EAAE,MAAM,EAAE,EAAE,KAAK,EAAE,MAAM,EAAE,KAAK,EAAE,YAAY,GAAG,IAAI,CAapF"}
@@ -0,0 +1,70 @@
1
+ import { buildExtendedColorAtom, buildIntensityAtom } from "./atom.js";
2
+ const codeMap = {
3
+ 0: ["reset"],
4
+ 1: ["intensity", buildIntensityAtom],
5
+ 2: ["intensity", buildIntensityAtom],
6
+ 3: ["italic"],
7
+ 4: ["underline"],
8
+ 7: ["inverse"],
9
+ 8: ["hidden"],
10
+ 9: ["strikethrough"],
11
+ 21: ["underline"],
12
+ 22: ["intensity", buildIntensityAtom],
13
+ 23: ["italic"],
14
+ 24: ["underline"],
15
+ 27: ["inverse"],
16
+ 28: ["hidden"],
17
+ 29: ["strikethrough"],
18
+ 30: ["fg"],
19
+ 31: ["fg"],
20
+ 32: ["fg"],
21
+ 33: ["fg"],
22
+ 34: ["fg"],
23
+ 35: ["fg"],
24
+ 36: ["fg"],
25
+ 37: ["fg"],
26
+ 38: ["fg", buildExtendedColorAtom],
27
+ 39: ["fg"],
28
+ 40: ["bg"],
29
+ 41: ["bg"],
30
+ 42: ["bg"],
31
+ 43: ["bg"],
32
+ 44: ["bg"],
33
+ 45: ["bg"],
34
+ 46: ["bg"],
35
+ 47: ["bg"],
36
+ 48: ["bg", buildExtendedColorAtom],
37
+ 49: ["bg"],
38
+ 51: ["frame"],
39
+ 52: ["frame"],
40
+ 53: ["overline"],
41
+ 54: ["frame"],
42
+ 55: ["overline"],
43
+ 90: ["fg"],
44
+ 91: ["fg"],
45
+ 92: ["fg"],
46
+ 93: ["fg"],
47
+ 94: ["fg"],
48
+ 95: ["fg"],
49
+ 96: ["fg"],
50
+ 97: ["fg"],
51
+ 100: ["bg"],
52
+ 101: ["bg"],
53
+ 102: ["bg"],
54
+ 103: ["bg"],
55
+ 104: ["bg"],
56
+ 105: ["bg"],
57
+ 106: ["bg"],
58
+ 107: ["bg"],
59
+ };
60
+ export function lookUpAtom(codes, index, state) {
61
+ const code = codes[index];
62
+ const entry = codeMap[code];
63
+ if (!entry)
64
+ return { attribute: code, code: [code] };
65
+ const [attribute, buildAtom] = entry;
66
+ if (buildAtom)
67
+ return buildAtom(attribute, codes, index, state);
68
+ return { attribute, code: [code] };
69
+ }
70
+ //# sourceMappingURL=lookup.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"lookup.js","sourceRoot":"","sources":["../../../src/simplify/lookup.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,3 @@
1
+ export declare function simplify(text: string): string;
2
+ export type Simplify = typeof simplify;
3
+ //# sourceMappingURL=simplify.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"simplify.d.ts","sourceRoot":"","sources":["../../../src/simplify/simplify.ts"],"names":[],"mappings":"AAGA,wBAAgB,QAAQ,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAwB7C;AAED,MAAM,MAAM,QAAQ,GAAG,OAAO,QAAQ,CAAC"}
@@ -0,0 +1,23 @@
1
+ import { rxSGR } from "../patterns.js";
2
+ import { State } from "./state.js";
3
+ export function simplify(text) {
4
+ // `.split` doesn't modify `lastIndex`, so no clone is necessary here.
5
+ const parts = text.split(rxSGR);
6
+ const state = new State();
7
+ let result = parts[0];
8
+ for (let i = 1; i < parts.length;) {
9
+ let codes = parts[i++].split(";").map(Number);
10
+ let chunk = parts[i++];
11
+ while (!chunk && i < parts.length) {
12
+ // Merge consecutive SGR sequences with no text between them.
13
+ codes.push(...parts[i++].split(";").map(Number));
14
+ chunk = parts[i++];
15
+ }
16
+ const newCodes = state.update(codes);
17
+ if (newCodes.length)
18
+ result += `\x1b[${newCodes.join(";")}m`;
19
+ result += chunk;
20
+ }
21
+ return result;
22
+ }
23
+ //# sourceMappingURL=simplify.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"simplify.js","sourceRoot":"","sources":["../../../src/simplify/simplify.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,KAAK,EAAC,MAAM,aAAa,CAAC;AAClC,OAAO,EAAC,KAAK,EAAC,MAAM,SAAS,CAAC;AAE9B,MAAM,UAAU,QAAQ,CAAC,IAAY;IACpC,sEAAsE;IACtE,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;IAEhC,MAAM,KAAK,GAAI,IAAI,KAAK,EAAE,CAAC;IAC3B,IAAM,MAAM,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC;IAExB,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,KAAK,CAAC,MAAM,GAAI,CAAC;QACpC,IAAI,KAAK,GAAG,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;QAC9C,IAAI,KAAK,GAAG,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC;QAEvB,OAAO,CAAC,KAAK,IAAI,CAAC,GAAG,KAAK,CAAC,MAAM,EAAE,CAAC;YACnC,6DAA6D;YAC7D,KAAK,CAAC,IAAI,CAAC,GAAG,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC;YACjD,KAAK,GAAG,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC;QACpB,CAAC;QAED,MAAM,QAAQ,GAAG,KAAK,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;QACrC,IAAI,QAAQ,CAAC,MAAM;YAClB,MAAM,IAAI,QAAQ,QAAQ,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC;QACzC,MAAM,IAAI,KAAK,CAAC;IACjB,CAAC;IAED,OAAO,MAAM,CAAC;AACf,CAAC"}
@@ -0,0 +1,6 @@
1
+ import type { Attribute, AttributeMap } from "./types.js";
2
+ export declare class State extends Map<Attribute, number[]> implements AttributeMap {
3
+ #private;
4
+ update(codes: number[]): Array<number | string>;
5
+ }
6
+ //# sourceMappingURL=state.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"state.d.ts","sourceRoot":"","sources":["../../../src/simplify/state.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAC,SAAS,EAAE,YAAY,EAAC,MAAM,SAAS,CAAC;AAerD,qBAAa,KAAM,SAAQ,GAAG,CAAC,SAAS,EAAE,MAAM,EAAE,CAAE,YAAW,YAAY;;IAa1E,MAAM,CAAC,KAAK,EAAE,MAAM,EAAE,GAAG,KAAK,CAAC,MAAM,GAAG,MAAM,CAAC;CA8D/C"}
@@ -0,0 +1,74 @@
1
+ import { lookUpAtom } from "./lookup.js";
2
+ import { arraysEqual, transitionIntensity } from "./utils.js";
3
+ const defaultCodes = new Map([
4
+ ["intensity", [22]],
5
+ ["italic", [23]],
6
+ ["underline", [24]],
7
+ ["inverse", [27]],
8
+ ["hidden", [28]],
9
+ ["strikethrough", [29]],
10
+ ["fg", [39]],
11
+ ["bg", [49]],
12
+ ["frame", [54]],
13
+ ["overline", [55]],
14
+ ]);
15
+ export class State extends Map {
16
+ #isDefaultState(except) {
17
+ for (const [attribute, defaultCode] of defaultCodes) {
18
+ if (attribute === except)
19
+ continue;
20
+ const current = this.get(attribute);
21
+ if (!arraysEqual(current, defaultCode))
22
+ return false;
23
+ }
24
+ return true;
25
+ }
26
+ update(codes) {
27
+ let snapshot = new Map(this);
28
+ const attributes = new Set();
29
+ for (let i = 0; i < codes.length; i++) {
30
+ const { attribute, code, skip } = lookUpAtom(codes, i, this);
31
+ if (attribute === "reset") {
32
+ if (this.#isDefaultState())
33
+ continue;
34
+ attributes.clear();
35
+ this.clear();
36
+ attributes.add("reset");
37
+ for (const [attr, defaultCode] of defaultCodes)
38
+ this.set(attr, defaultCode);
39
+ snapshot = new Map(this);
40
+ continue;
41
+ }
42
+ attributes.add(attribute);
43
+ this.set(attribute, code);
44
+ if (skip)
45
+ i += skip;
46
+ }
47
+ const rtn = [];
48
+ for (const attribute of attributes) {
49
+ if (attribute === "reset") {
50
+ rtn.length = 0; // Any previous codes are irrelevant.
51
+ rtn.push(""); // The terminal will interpret missing values as `0`.
52
+ continue;
53
+ }
54
+ const code = this.get(attribute);
55
+ if (arraysEqual(code, snapshot.get(attribute)))
56
+ continue;
57
+ // If this code would put us in a known overall default state, then we can just reset,
58
+ // which is shorter. (Compare `\x1b[m` vs. `\x1b[39m` or especially `\x1b[22;39;49m`.)
59
+ if (arraysEqual(code, defaultCodes.get(attribute)) && this.#isDefaultState(attribute)) {
60
+ rtn.length = 0;
61
+ rtn.push("");
62
+ continue;
63
+ }
64
+ if (attribute === "intensity") {
65
+ const previous = snapshot.get(attribute);
66
+ rtn.push(...transitionIntensity(previous, code));
67
+ continue;
68
+ }
69
+ rtn.push(...code);
70
+ }
71
+ return rtn;
72
+ }
73
+ }
74
+ //# sourceMappingURL=state.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"state.js","sourceRoot":"","sources":["../../../src/simplify/state.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,9 @@
1
+ export type Attribute = "intensity" | "italic" | "underline" | "inverse" | "hidden" | "strikethrough" | "fg" | "bg" | "frame" | "overline" | "reset" | number;
2
+ export type AttributeMap = Map<Attribute, number[]>;
3
+ export interface Atom {
4
+ attribute: Attribute;
5
+ code: number[];
6
+ skip?: number;
7
+ }
8
+ export type BuildAtom = (attribute: Attribute, codes: number[], index: number, state: AttributeMap) => Atom;
9
+ //# sourceMappingURL=types.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../src/simplify/types.ts"],"names":[],"mappings":"AAAA,MAAM,MAAM,SAAS,GAClB,WAAW,GACX,QAAQ,GACR,WAAW,GACX,SAAS,GACT,QAAQ,GACR,eAAe,GACf,IAAI,GACJ,IAAI,GACJ,OAAO,GACP,UAAU,GACV,OAAO,GACP,MAAM,CAAC;AAEV,MAAM,MAAM,YAAY,GAAG,GAAG,CAAC,SAAS,EAAE,MAAM,EAAE,CAAC,CAAC;AAEpD,MAAM,WAAW,IAAI;IACpB,SAAS,EAAG,SAAS,CAAC;IACtB,IAAI,EAAQ,MAAM,EAAE,CAAC;IACrB,IAAI,CAAC,EAAO,MAAM,CAAC;CACnB;AAED,MAAM,MAAM,SAAS,GAAG,CACvB,SAAS,EAAG,SAAS,EACrB,KAAK,EAAO,MAAM,EAAE,EACpB,KAAK,EAAO,MAAM,EAClB,KAAK,EAAO,YAAY,KACpB,IAAI,CAAC"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=types.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.js","sourceRoot":"","sources":["../../../src/simplify/types.ts"],"names":[],"mappings":""}
@@ -0,0 +1,3 @@
1
+ export declare function arraysEqual<T>(a: T[] | undefined, b: T[] | undefined): boolean;
2
+ export declare function transitionIntensity(previous: number[] | undefined, current: number[]): number[];
3
+ //# sourceMappingURL=utils.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"utils.d.ts","sourceRoot":"","sources":["../../../src/simplify/utils.ts"],"names":[],"mappings":"AAAA,wBAAgB,WAAW,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,GAAG,SAAS,EAAE,CAAC,EAAE,CAAC,EAAE,GAAG,SAAS,GAAG,OAAO,CAa9E;AAED,wBAAgB,mBAAmB,CAAC,QAAQ,EAAE,MAAM,EAAE,GAAG,SAAS,EAAE,OAAO,EAAE,MAAM,EAAE,GAAG,MAAM,EAAE,CAmB/F"}
@@ -0,0 +1,28 @@
1
+ export function arraysEqual(a, b) {
2
+ if (a === b)
3
+ return true;
4
+ if (!a || !b || a.length !== b.length)
5
+ return false;
6
+ for (let i = 0; i < a.length; i++) {
7
+ if (a[i] !== b[i])
8
+ return false;
9
+ }
10
+ return true;
11
+ }
12
+ export function transitionIntensity(previous, current) {
13
+ if (!previous || previous[0] === 22 || current[0] === 22)
14
+ return current;
15
+ const oldBold = previous[0] === 1;
16
+ const newBold = current[0] === 1;
17
+ const oldDim = previous[previous.length - 1] === 2;
18
+ const newDim = current[current.length - 1] === 2;
19
+ const result = [];
20
+ if (oldBold && !newBold || oldDim && !newDim)
21
+ result.push(22);
22
+ if (newBold && (!oldBold || result[0] === 22))
23
+ result.push(1);
24
+ if (newDim && (!oldDim || result[0] === 22))
25
+ result.push(2);
26
+ return result;
27
+ }
28
+ //# sourceMappingURL=utils.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"utils.js","sourceRoot":"","sources":["../../../src/simplify/utils.ts"],"names":[],"mappings":"AAAA,MAAM,UAAU,WAAW,CAAI,CAAkB,EAAE,CAAkB;IACpE,IAAI,CAAC,KAAK,CAAC;QACV,OAAO,IAAI,CAAC;IAEb,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC,MAAM,KAAK,CAAC,CAAC,MAAM;QACpC,OAAO,KAAK,CAAC;IAEd,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;QACnC,IAAI,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;YAChB,OAAO,KAAK,CAAC;IACf,CAAC;IAED,OAAO,IAAI,CAAC;AACb,CAAC;AAED,MAAM,UAAU,mBAAmB,CAAC,QAA8B,EAAE,OAAiB;IACpF,IAAI,CAAC,QAAQ,IAAI,QAAQ,CAAC,CAAC,CAAC,KAAK,EAAE,IAAI,OAAO,CAAC,CAAC,CAAC,KAAK,EAAE;QACvD,OAAO,OAAO,CAAC;IAEhB,MAAM,OAAO,GAAG,QAAQ,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC;IAClC,MAAM,OAAO,GAAG,OAAO,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC;IACjC,MAAM,MAAM,GAAI,QAAQ,CAAC,QAAQ,CAAC,MAAM,GAAG,CAAC,CAAC,KAAK,CAAC,CAAC;IACpD,MAAM,MAAM,GAAI,OAAO,CAAC,OAAO,CAAC,MAAM,GAAG,CAAC,CAAC,KAAK,CAAC,CAAC;IAElD,MAAM,MAAM,GAAa,EAAE,CAAC;IAE5B,IAAI,OAAO,IAAI,CAAC,OAAO,IAAI,MAAM,IAAI,CAAC,MAAM;QAC3C,MAAM,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;IACjB,IAAI,OAAO,IAAI,CAAC,CAAC,OAAO,IAAI,MAAM,CAAC,CAAC,CAAC,KAAK,EAAE,CAAC;QAC5C,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAChB,IAAI,MAAM,IAAI,CAAC,CAAC,MAAM,IAAI,MAAM,CAAC,CAAC,CAAC,KAAK,EAAE,CAAC;QAC1C,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAEhB,OAAO,MAAM,CAAC;AACf,CAAC"}
@@ -0,0 +1,22 @@
1
+ /**
2
+ * Return a slice of the given text, counting only visible characters (i.e. ignoring ANSI escape
3
+ * codes). The returned slice will include any ANSI escape codes from within the slice. In addition,
4
+ * SGR codes (m) from before and after the slice will be combined, simplified, and included so that
5
+ * the terminal state before and after the slice will be the same as if the whole string were
6
+ * printed. If you compose two or more slices together, there may be redundant SGR sequences at the
7
+ * boundaries, but the result will be correct. You can use `simplify` to remove the redundancies.
8
+ *
9
+ * Note the following caveats:
10
+ *
11
+ * * Any non-SGR ANSI codes prior to or after the slice will be ignored.
12
+ * * Control characters (such as newlines and backspaces) both outside and inside the slice are
13
+ * counted as visible characters.
14
+ *
15
+ * These caveats mean that text may not appear on screen to be the same number of characters as the
16
+ * length of the slice, and that the terminal state may not be exactly the same at the start and end
17
+ * of the slice as it would be if the whole string were printed. This function is intended mostly
18
+ * for text that contains SGR codes, but no other ANSI codes or control characters.
19
+ */
20
+ export declare function slice(text: string, start: number, end: number): string;
21
+ export type Slice = typeof slice;
22
+ //# sourceMappingURL=slice.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"slice.d.ts","sourceRoot":"","sources":["../../src/slice.ts"],"names":[],"mappings":"AAqCA;;;;;;;;;;;;;;;;;;GAkBG;AACH,wBAAgB,KAAK,CAAC,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,GAAG,MAAM,CA6BtE;AAED,MAAM,MAAM,KAAK,GAAG,OAAO,KAAK,CAAC"}
@@ -0,0 +1,69 @@
1
+ import { rxCSI, rxSGR } from "./patterns.js";
2
+ import { simplify } from "./simplify/index.js";
3
+ import { visibleLength } from "./strip.js";
4
+ function scanCSI(text, fromStringIndex, visibleCount) {
5
+ // We intentionally mutate `lastIndex` here, so we need a clone.
6
+ const rx = new RegExp(rxCSI);
7
+ let length = 0;
8
+ let index = fromStringIndex;
9
+ while (index < text.length && length < visibleCount) {
10
+ if (text[index] === "\x1b") {
11
+ rx.lastIndex = index;
12
+ const match = rx.exec(text);
13
+ if (match?.index === index) {
14
+ index += match[0].length;
15
+ continue;
16
+ }
17
+ }
18
+ index++;
19
+ length++;
20
+ }
21
+ return { index, length };
22
+ }
23
+ function skippedSequences(text, start, end) {
24
+ const sequences = text.slice(start, end).match(new RegExp(rxSGR));
25
+ return sequences ? simplify(sequences.join("")) : "";
26
+ }
27
+ /**
28
+ * Return a slice of the given text, counting only visible characters (i.e. ignoring ANSI escape
29
+ * codes). The returned slice will include any ANSI escape codes from within the slice. In addition,
30
+ * SGR codes (m) from before and after the slice will be combined, simplified, and included so that
31
+ * the terminal state before and after the slice will be the same as if the whole string were
32
+ * printed. If you compose two or more slices together, there may be redundant SGR sequences at the
33
+ * boundaries, but the result will be correct. You can use `simplify` to remove the redundancies.
34
+ *
35
+ * Note the following caveats:
36
+ *
37
+ * * Any non-SGR ANSI codes prior to or after the slice will be ignored.
38
+ * * Control characters (such as newlines and backspaces) both outside and inside the slice are
39
+ * counted as visible characters.
40
+ *
41
+ * These caveats mean that text may not appear on screen to be the same number of characters as the
42
+ * length of the slice, and that the terminal state may not be exactly the same at the start and end
43
+ * of the slice as it would be if the whole string were printed. This function is intended mostly
44
+ * for text that contains SGR codes, but no other ANSI codes or control characters.
45
+ */
46
+ export function slice(text, start, end) {
47
+ let textVisibleLength;
48
+ const getVisibleLength = () => textVisibleLength ??= visibleLength(text);
49
+ if (start < 0 || end < 0) {
50
+ textVisibleLength = getVisibleLength();
51
+ if (start < 0)
52
+ start = Math.max(0, textVisibleLength + start);
53
+ if (end < 0)
54
+ end = Math.max(0, textVisibleLength + end);
55
+ }
56
+ if (start > end)
57
+ return "";
58
+ if (start === 0 && (end >= text.length || end >= getVisibleLength()))
59
+ return text;
60
+ const { index: startIndex, length: visibleSkipped } = scanCSI(text, 0, start);
61
+ const endIndex = startIndex < text.length && visibleSkipped < end
62
+ ? scanCSI(text, startIndex, end - visibleSkipped).index
63
+ : text.length;
64
+ // Start and end the string in the same terminal state it would be in if the string weren't sliced.
65
+ const leadingSequences = skippedSequences(text, 0, startIndex);
66
+ const trailingSequences = skippedSequences(text, endIndex);
67
+ return leadingSequences + text.slice(startIndex, endIndex) + trailingSequences;
68
+ }
69
+ //# sourceMappingURL=slice.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"slice.js","sourceRoot":"","sources":["../../src/slice.ts"],"names":[],"mappings":"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"}