solve-engine 1.1.1 → 2.0.0

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 (395) hide show
  1. package/README.md +12 -17
  2. package/dist/{BytecodeBuilder-Bp9xeTmX.d.cts → BytecodeBuilder-DGGeByAP.d.cts} +18 -0
  3. package/dist/{BytecodeBuilder-Bp9xeTmX.d.ts → BytecodeBuilder-DGGeByAP.d.ts} +18 -0
  4. package/dist/{Configuration-C9W8tJv_.d.cts → Configuration-B6W0-T67.d.cts} +17 -4
  5. package/dist/{Configuration-C9W8tJv_.d.ts → Configuration-B6W0-T67.d.ts} +17 -4
  6. package/dist/{EngineError-B61GS1jp.d.cts → EngineError-Ce1lPkjZ.d.cts} +8 -0
  7. package/dist/{EngineError-B61GS1jp.d.ts → EngineError-Ce1lPkjZ.d.ts} +8 -0
  8. package/dist/{Lexer-BOs7euZe.d.cts → Lexer-B4C1qHXu.d.cts} +1 -1
  9. package/dist/{Lexer-CSI_lwbW.d.ts → Lexer-DKMlj7Sy.d.ts} +1 -1
  10. package/dist/{PackageCompatibility-B-7rK1TD.d.cts → PackageCompatibility-Bn5jnBtA.d.cts} +2 -2
  11. package/dist/{PackageCompatibility-Dh59eF-X.d.ts → PackageCompatibility-CIvq2MP5.d.ts} +2 -2
  12. package/dist/{PackageRegistry-_8rDlvxI.d.ts → PackageRegistry-DzeiWcv4.d.ts} +143 -175
  13. package/dist/{PackageRegistry-BHWJP83F.d.cts → PackageRegistry-dpdurBVO.d.cts} +143 -175
  14. package/dist/{Parselet-BBT8riYh.d.ts → Parselet-B-zoPrTa.d.ts} +9 -6
  15. package/dist/{Parselet-BHcgK9S7.d.cts → Parselet-C4Wu055_.d.cts} +9 -6
  16. package/dist/{ScopeManager-CxA24W5n.d.ts → ScopeManager-C2LDOrDx.d.ts} +14 -16
  17. package/dist/{ScopeManager-8vf02dwj.d.cts → ScopeManager-D7uMXbhS.d.cts} +14 -16
  18. package/dist/{Token-B1hdkedD.d.cts → Token-CbP_OutD.d.cts} +9 -0
  19. package/dist/{Token-B1hdkedD.d.ts → Token-CbP_OutD.d.ts} +9 -0
  20. package/dist/{TokenNormalizer-C6VzZgHa.d.ts → TokenNormalizer-DCWdZjGz.d.ts} +1 -1
  21. package/dist/{TokenNormalizer-DRc1Js1V.d.cts → TokenNormalizer-DnlL7_8c.d.cts} +1 -1
  22. package/dist/{VMCheckpoints-MK--EBH2.d.ts → VMCheckpoints-CGyFhivM.d.ts} +3 -3
  23. package/dist/{VMCheckpoints-ELYqITdF.d.cts → VMCheckpoints-I9jg3jWR.d.cts} +3 -3
  24. package/dist/{Value-BUi1RA3S.d.cts → Value-CCi_Eecs.d.cts} +72 -5
  25. package/dist/{Value-BUi1RA3S.d.ts → Value-CCi_Eecs.d.ts} +72 -5
  26. package/dist/{WorkerError-gzmaopj2.d.cts → WorkerError-B4p6PNfx.d.cts} +1 -1
  27. package/dist/{WorkerError-_-RkoQ5P.d.ts → WorkerError-Dhj9BQ_A.d.ts} +1 -1
  28. package/dist/chunk-2JMFUQZH.js +2 -0
  29. package/dist/chunk-2JMFUQZH.js.map +1 -0
  30. package/dist/chunk-2RWAXT6O.js +0 -1
  31. package/dist/chunk-4BZIYU7S.cjs +3 -0
  32. package/dist/chunk-4BZIYU7S.cjs.map +1 -0
  33. package/dist/chunk-4J7XZSZJ.cjs +5 -0
  34. package/dist/chunk-4J7XZSZJ.cjs.map +1 -0
  35. package/dist/chunk-4QVBSG6B.cjs +2 -0
  36. package/dist/chunk-4QVBSG6B.cjs.map +1 -0
  37. package/dist/chunk-5IJD5L3O.cjs +2 -0
  38. package/dist/chunk-5IJD5L3O.cjs.map +1 -0
  39. package/dist/chunk-62LMTO4F.js +2 -0
  40. package/dist/chunk-62LMTO4F.js.map +1 -0
  41. package/dist/chunk-6CY44ZPG.js +2 -0
  42. package/dist/chunk-6CY44ZPG.js.map +1 -0
  43. package/dist/chunk-6G3PMEPA.js +2 -0
  44. package/dist/chunk-6G3PMEPA.js.map +1 -0
  45. package/dist/chunk-6INX773F.cjs +2 -0
  46. package/dist/chunk-6INX773F.cjs.map +1 -0
  47. package/dist/chunk-6KFVG6UY.cjs +2 -0
  48. package/dist/chunk-6KFVG6UY.cjs.map +1 -0
  49. package/dist/chunk-76F3LCIL.js +4 -0
  50. package/dist/chunk-76F3LCIL.js.map +1 -0
  51. package/dist/chunk-7GK3XEZF.js +2 -0
  52. package/dist/chunk-7GK3XEZF.js.map +1 -0
  53. package/dist/chunk-APN442VD.cjs +2 -0
  54. package/dist/chunk-APN442VD.cjs.map +1 -0
  55. package/dist/chunk-AXMQG5TS.cjs +2 -0
  56. package/dist/chunk-AXMQG5TS.cjs.map +1 -0
  57. package/dist/chunk-CIQOK7Q4.cjs +2 -0
  58. package/dist/chunk-CIQOK7Q4.cjs.map +1 -0
  59. package/dist/chunk-E6Z4NQAS.js +2 -0
  60. package/dist/chunk-E6Z4NQAS.js.map +1 -0
  61. package/dist/chunk-EFJCC6FJ.cjs +2 -0
  62. package/dist/chunk-EFJCC6FJ.cjs.map +1 -0
  63. package/dist/chunk-ESUN2THE.cjs +2 -0
  64. package/dist/chunk-ESUN2THE.cjs.map +1 -0
  65. package/dist/chunk-EVAOPEO4.js +2 -0
  66. package/dist/chunk-EVAOPEO4.js.map +1 -0
  67. package/dist/chunk-EYRBENHC.js +3 -0
  68. package/dist/chunk-EYRBENHC.js.map +1 -0
  69. package/dist/chunk-FDE5HWDI.cjs +2 -0
  70. package/dist/chunk-FDE5HWDI.cjs.map +1 -0
  71. package/dist/chunk-FWW3M36J.cjs +2 -0
  72. package/dist/chunk-FWW3M36J.cjs.map +1 -0
  73. package/dist/chunk-GOIQYUWV.js +2 -0
  74. package/dist/chunk-GOIQYUWV.js.map +1 -0
  75. package/dist/chunk-HFKDWQUL.js +2 -0
  76. package/dist/chunk-HFKDWQUL.js.map +1 -0
  77. package/dist/chunk-HLBYHXQD.cjs +3 -0
  78. package/dist/chunk-HLBYHXQD.cjs.map +1 -0
  79. package/dist/chunk-IANAMBJQ.cjs +2 -0
  80. package/dist/chunk-IANAMBJQ.cjs.map +1 -0
  81. package/dist/chunk-IJMNVBIS.js +2 -0
  82. package/dist/chunk-IJMNVBIS.js.map +1 -0
  83. package/dist/chunk-J4LZD4ZY.js +3 -0
  84. package/dist/chunk-J4LZD4ZY.js.map +1 -0
  85. package/dist/chunk-JAK3RAFA.cjs +2 -0
  86. package/dist/chunk-JAK3RAFA.cjs.map +1 -0
  87. package/dist/chunk-JFAJN3C2.cjs +2 -0
  88. package/dist/chunk-JFAJN3C2.cjs.map +1 -0
  89. package/dist/chunk-JPFCXLJV.js +2 -0
  90. package/dist/chunk-JPFCXLJV.js.map +1 -0
  91. package/dist/chunk-JSPKKNPQ.js +3 -0
  92. package/dist/chunk-JSPKKNPQ.js.map +1 -0
  93. package/dist/chunk-L3FPQSGN.js +2 -0
  94. package/dist/chunk-L3FPQSGN.js.map +1 -0
  95. package/dist/chunk-LR4E4A4W.cjs +2 -0
  96. package/dist/chunk-LR4E4A4W.cjs.map +1 -0
  97. package/dist/chunk-MIQBJGGR.js +2 -0
  98. package/dist/chunk-MIQBJGGR.js.map +1 -0
  99. package/dist/chunk-MPB7KUN5.js +3 -0
  100. package/dist/chunk-MPB7KUN5.js.map +1 -0
  101. package/dist/chunk-MSYX32PF.cjs +2 -0
  102. package/dist/chunk-MSYX32PF.cjs.map +1 -0
  103. package/dist/chunk-MVZUTETT.js +2 -0
  104. package/dist/chunk-MVZUTETT.js.map +1 -0
  105. package/dist/chunk-N7N7MPMK.cjs +2 -0
  106. package/dist/chunk-N7N7MPMK.cjs.map +1 -0
  107. package/dist/chunk-NGBBNL4K.cjs +1 -3
  108. package/dist/chunk-P6WPEUAJ.cjs +2 -0
  109. package/dist/chunk-P6WPEUAJ.cjs.map +1 -0
  110. package/dist/chunk-PS272DZJ.cjs +2 -0
  111. package/dist/chunk-PS272DZJ.cjs.map +1 -0
  112. package/dist/chunk-QXQE7X4S.js +2 -0
  113. package/dist/chunk-QXQE7X4S.js.map +1 -0
  114. package/dist/chunk-R2ENWQ76.js +2 -0
  115. package/dist/chunk-R2ENWQ76.js.map +1 -0
  116. package/dist/chunk-R2SZFJTT.cjs +2 -0
  117. package/dist/chunk-R2SZFJTT.cjs.map +1 -0
  118. package/dist/chunk-RAF57WYO.js +2 -0
  119. package/dist/chunk-RAF57WYO.js.map +1 -0
  120. package/dist/chunk-RSF25YSJ.js +2 -0
  121. package/dist/chunk-RSF25YSJ.js.map +1 -0
  122. package/dist/chunk-SOMGSIO4.cjs +3 -0
  123. package/dist/chunk-SOMGSIO4.cjs.map +1 -0
  124. package/dist/chunk-SUXRZWH2.cjs +3 -0
  125. package/dist/chunk-SUXRZWH2.cjs.map +1 -0
  126. package/dist/chunk-SYYE3QAX.cjs +2 -0
  127. package/dist/chunk-SYYE3QAX.cjs.map +1 -0
  128. package/dist/chunk-SZGK6RIP.cjs +2 -0
  129. package/dist/chunk-SZGK6RIP.cjs.map +1 -0
  130. package/dist/chunk-TCZSPH4A.js +2 -0
  131. package/dist/chunk-TCZSPH4A.js.map +1 -0
  132. package/dist/chunk-TLG7VZRX.cjs +2 -0
  133. package/dist/chunk-TLG7VZRX.cjs.map +1 -0
  134. package/dist/chunk-TRBXW6HW.js +2 -0
  135. package/dist/{chunk-AQNHHJMJ.cjs.map → chunk-TRBXW6HW.js.map} +1 -1
  136. package/dist/chunk-TTFO4YDP.cjs +2 -0
  137. package/dist/chunk-TTFO4YDP.cjs.map +1 -0
  138. package/dist/chunk-TWC7K3ZX.js +2 -0
  139. package/dist/chunk-TWC7K3ZX.js.map +1 -0
  140. package/dist/chunk-UDQ57ZRX.cjs +2 -0
  141. package/dist/chunk-UDQ57ZRX.cjs.map +1 -0
  142. package/dist/chunk-UI6IFGBT.js +2 -0
  143. package/dist/chunk-UI6IFGBT.js.map +1 -0
  144. package/dist/chunk-UURM7P3P.cjs +4 -0
  145. package/dist/chunk-UURM7P3P.cjs.map +1 -0
  146. package/dist/chunk-W2JAR233.js +2 -0
  147. package/dist/chunk-W2JAR233.js.map +1 -0
  148. package/dist/chunk-WGZ3FNHI.js +2 -0
  149. package/dist/chunk-WGZ3FNHI.js.map +1 -0
  150. package/dist/chunk-WN5CMP4T.cjs +3 -0
  151. package/dist/chunk-WN5CMP4T.cjs.map +1 -0
  152. package/dist/chunk-XEIDV5JP.js +2 -0
  153. package/dist/chunk-XEIDV5JP.js.map +1 -0
  154. package/dist/chunk-XNIWQHXY.js +2 -0
  155. package/dist/chunk-XNIWQHXY.js.map +1 -0
  156. package/dist/chunk-XR7HEC7B.js +5 -0
  157. package/dist/chunk-XR7HEC7B.js.map +1 -0
  158. package/dist/chunk-Y7O4D3BJ.cjs +2 -0
  159. package/dist/chunk-Y7O4D3BJ.cjs.map +1 -0
  160. package/dist/chunk-YAYBVVG2.js +3 -0
  161. package/dist/chunk-YAYBVVG2.js.map +1 -0
  162. package/dist/chunk-YJ2OPULK.js +2 -0
  163. package/dist/chunk-YJ2OPULK.js.map +1 -0
  164. package/dist/chunk-YVKHEAFT.js +2 -0
  165. package/dist/chunk-YVKHEAFT.js.map +1 -0
  166. package/dist/chunk-ZCNBT44X.cjs +2 -0
  167. package/dist/chunk-ZCNBT44X.cjs.map +1 -0
  168. package/dist/chunk-ZLRJ7TDP.cjs +2 -0
  169. package/dist/chunk-ZLRJ7TDP.cjs.map +1 -0
  170. package/dist/constants.cjs +1 -21
  171. package/dist/constants.d.cts +1 -1
  172. package/dist/constants.d.ts +1 -1
  173. package/dist/constants.js +1 -4
  174. package/dist/engine.cjs +1 -94
  175. package/dist/engine.d.cts +29 -14
  176. package/dist/engine.d.ts +29 -14
  177. package/dist/engine.js +1 -37
  178. package/dist/errors.cjs +1 -105
  179. package/dist/errors.d.cts +3 -3
  180. package/dist/errors.d.ts +3 -3
  181. package/dist/errors.js +1 -4
  182. package/dist/format.cjs +1 -26
  183. package/dist/format.d.cts +2 -2
  184. package/dist/format.d.ts +2 -2
  185. package/dist/format.js +1 -9
  186. package/dist/index.cjs +1 -314
  187. package/dist/index.cjs.map +1 -1
  188. package/dist/index.d.cts +55 -23
  189. package/dist/index.d.ts +55 -23
  190. package/dist/index.js +1 -278
  191. package/dist/index.js.map +1 -1
  192. package/dist/language.cjs +1 -369
  193. package/dist/language.cjs.map +1 -1
  194. package/dist/language.d.cts +12 -13
  195. package/dist/language.d.ts +12 -13
  196. package/dist/language.js +1 -348
  197. package/dist/language.js.map +1 -1
  198. package/dist/lexer.cjs +1 -63
  199. package/dist/lexer.d.cts +3 -3
  200. package/dist/lexer.d.ts +3 -3
  201. package/dist/lexer.js +1 -10
  202. package/dist/normalizer.cjs +1 -39
  203. package/dist/normalizer.d.cts +3 -3
  204. package/dist/normalizer.d.ts +3 -3
  205. package/dist/normalizer.js +1 -10
  206. package/dist/packages.cjs +1 -128
  207. package/dist/packages.d.cts +39 -14
  208. package/dist/packages.d.ts +39 -14
  209. package/dist/packages.js +1 -23
  210. package/dist/parser.cjs +1 -54
  211. package/dist/parser.d.cts +9 -9
  212. package/dist/parser.d.ts +9 -9
  213. package/dist/parser.js +1 -9
  214. package/dist/{pipeline-CtfJtPQc.d.cts → pipeline-72QmQlGx.d.ts} +3 -3
  215. package/dist/{pipeline-DCd5M6Gk.d.ts → pipeline-DCQicwWX.d.cts} +3 -3
  216. package/dist/resolvers.cjs +1 -12
  217. package/dist/resolvers.d.cts +3 -3
  218. package/dist/resolvers.d.ts +3 -3
  219. package/dist/resolvers.js +1 -3
  220. package/dist/services.cjs +1 -20
  221. package/dist/services.js +1 -3
  222. package/dist/testing.cjs +3 -477
  223. package/dist/testing.cjs.map +1 -1
  224. package/dist/testing.d.cts +12 -13
  225. package/dist/testing.d.ts +12 -13
  226. package/dist/testing.js +3 -469
  227. package/dist/testing.js.map +1 -1
  228. package/dist/uom.cjs +1 -55
  229. package/dist/uom.d.cts +3 -3
  230. package/dist/uom.d.ts +3 -3
  231. package/dist/uom.js +1 -10
  232. package/dist/utilities.cjs +1 -36
  233. package/dist/utilities.js +1 -7
  234. package/dist/vm.cjs +1 -295
  235. package/dist/vm.cjs.map +1 -1
  236. package/dist/vm.d.cts +22 -10
  237. package/dist/vm.d.ts +22 -10
  238. package/dist/vm.js +1 -193
  239. package/dist/vm.js.map +1 -1
  240. package/dist/worker.cjs +2 -492
  241. package/dist/worker.cjs.map +1 -1
  242. package/dist/worker.d.cts +19 -20
  243. package/dist/worker.d.ts +19 -20
  244. package/dist/worker.js +2 -483
  245. package/dist/worker.js.map +1 -1
  246. package/package.json +1 -13
  247. package/dist/chunk-267JPOTF.js +0 -406
  248. package/dist/chunk-267JPOTF.js.map +0 -1
  249. package/dist/chunk-2TZKENDH.cjs +0 -448
  250. package/dist/chunk-2TZKENDH.cjs.map +0 -1
  251. package/dist/chunk-3BOK2LDK.js +0 -17
  252. package/dist/chunk-3BOK2LDK.js.map +0 -1
  253. package/dist/chunk-3OWCDIPN.js +0 -215
  254. package/dist/chunk-3OWCDIPN.js.map +0 -1
  255. package/dist/chunk-3VGDNEE3.js +0 -84
  256. package/dist/chunk-3VGDNEE3.js.map +0 -1
  257. package/dist/chunk-4D6NIHE2.js +0 -451
  258. package/dist/chunk-4D6NIHE2.js.map +0 -1
  259. package/dist/chunk-4HQKTMWG.js +0 -7985
  260. package/dist/chunk-4HQKTMWG.js.map +0 -1
  261. package/dist/chunk-536WPM2V.cjs +0 -283
  262. package/dist/chunk-536WPM2V.cjs.map +0 -1
  263. package/dist/chunk-5HRB36DK.js +0 -405
  264. package/dist/chunk-5HRB36DK.js.map +0 -1
  265. package/dist/chunk-5ON7PUAZ.js +0 -12
  266. package/dist/chunk-5ON7PUAZ.js.map +0 -1
  267. package/dist/chunk-7KYSUDQO.js +0 -109
  268. package/dist/chunk-7KYSUDQO.js.map +0 -1
  269. package/dist/chunk-7ZX6B7SY.cjs +0 -3222
  270. package/dist/chunk-7ZX6B7SY.cjs.map +0 -1
  271. package/dist/chunk-ADBA3XBE.cjs +0 -20
  272. package/dist/chunk-ADBA3XBE.cjs.map +0 -1
  273. package/dist/chunk-ALYRJ72W.cjs +0 -434
  274. package/dist/chunk-ALYRJ72W.cjs.map +0 -1
  275. package/dist/chunk-AMOJYLG2.cjs +0 -1692
  276. package/dist/chunk-AMOJYLG2.cjs.map +0 -1
  277. package/dist/chunk-AQNHHJMJ.cjs +0 -261
  278. package/dist/chunk-B4HBEFTB.cjs +0 -375
  279. package/dist/chunk-B4HBEFTB.cjs.map +0 -1
  280. package/dist/chunk-B7LXJ6LC.cjs +0 -36
  281. package/dist/chunk-B7LXJ6LC.cjs.map +0 -1
  282. package/dist/chunk-B7NLZMQ3.cjs +0 -74
  283. package/dist/chunk-B7NLZMQ3.cjs.map +0 -1
  284. package/dist/chunk-BLI4NIQY.js +0 -98
  285. package/dist/chunk-BLI4NIQY.js.map +0 -1
  286. package/dist/chunk-BYJBUL7U.js +0 -499
  287. package/dist/chunk-BYJBUL7U.js.map +0 -1
  288. package/dist/chunk-CCBZZQAE.js +0 -312
  289. package/dist/chunk-CCBZZQAE.js.map +0 -1
  290. package/dist/chunk-CKQMXMHR.cjs +0 -219
  291. package/dist/chunk-CKQMXMHR.cjs.map +0 -1
  292. package/dist/chunk-CUR2WLI4.cjs +0 -507
  293. package/dist/chunk-CUR2WLI4.cjs.map +0 -1
  294. package/dist/chunk-DLEBSLF4.js +0 -336
  295. package/dist/chunk-DLEBSLF4.js.map +0 -1
  296. package/dist/chunk-E23GZEWL.cjs +0 -209
  297. package/dist/chunk-E23GZEWL.cjs.map +0 -1
  298. package/dist/chunk-EJ3ILXX6.cjs +0 -223
  299. package/dist/chunk-EJ3ILXX6.cjs.map +0 -1
  300. package/dist/chunk-ENKKJYD3.js +0 -333
  301. package/dist/chunk-ENKKJYD3.js.map +0 -1
  302. package/dist/chunk-ENRIK36Q.cjs +0 -94
  303. package/dist/chunk-ENRIK36Q.cjs.map +0 -1
  304. package/dist/chunk-ERCOHGXD.js +0 -356
  305. package/dist/chunk-ERCOHGXD.js.map +0 -1
  306. package/dist/chunk-FD5ZZHEU.js +0 -92
  307. package/dist/chunk-FD5ZZHEU.js.map +0 -1
  308. package/dist/chunk-FEAIOR7N.cjs +0 -91
  309. package/dist/chunk-FEAIOR7N.cjs.map +0 -1
  310. package/dist/chunk-GCM5JHMX.js +0 -88
  311. package/dist/chunk-GCM5JHMX.js.map +0 -1
  312. package/dist/chunk-GLA4JXBO.js +0 -204
  313. package/dist/chunk-GLA4JXBO.js.map +0 -1
  314. package/dist/chunk-HIQ5HSZL.cjs +0 -1923
  315. package/dist/chunk-HIQ5HSZL.cjs.map +0 -1
  316. package/dist/chunk-HVRVSI2Z.cjs +0 -829
  317. package/dist/chunk-HVRVSI2Z.cjs.map +0 -1
  318. package/dist/chunk-I4GAWIPW.js +0 -825
  319. package/dist/chunk-I4GAWIPW.js.map +0 -1
  320. package/dist/chunk-J45BCEZ4.cjs +0 -339
  321. package/dist/chunk-J45BCEZ4.cjs.map +0 -1
  322. package/dist/chunk-JG6ZJ2WU.js +0 -1513
  323. package/dist/chunk-JG6ZJ2WU.js.map +0 -1
  324. package/dist/chunk-L2TE7PMO.cjs +0 -14
  325. package/dist/chunk-L2TE7PMO.cjs.map +0 -1
  326. package/dist/chunk-LHZ6VOA7.js +0 -1764
  327. package/dist/chunk-LHZ6VOA7.js.map +0 -1
  328. package/dist/chunk-MN3LHRGV.cjs +0 -8012
  329. package/dist/chunk-MN3LHRGV.cjs.map +0 -1
  330. package/dist/chunk-MVTOCRV2.js +0 -213
  331. package/dist/chunk-MVTOCRV2.js.map +0 -1
  332. package/dist/chunk-N5NNW4VG.cjs +0 -341
  333. package/dist/chunk-N5NNW4VG.cjs.map +0 -1
  334. package/dist/chunk-N7FNVFXW.cjs +0 -32
  335. package/dist/chunk-N7FNVFXW.cjs.map +0 -1
  336. package/dist/chunk-NKW7LKYU.js +0 -3185
  337. package/dist/chunk-NKW7LKYU.js.map +0 -1
  338. package/dist/chunk-NLNDMWZC.js +0 -31
  339. package/dist/chunk-NLNDMWZC.js.map +0 -1
  340. package/dist/chunk-NNQ2TYDF.js +0 -1848
  341. package/dist/chunk-NNQ2TYDF.js.map +0 -1
  342. package/dist/chunk-NNZAEUDW.js +0 -6792
  343. package/dist/chunk-NNZAEUDW.js.map +0 -1
  344. package/dist/chunk-OUHT5Z36.cjs +0 -393
  345. package/dist/chunk-OUHT5Z36.cjs.map +0 -1
  346. package/dist/chunk-QFTDTX6K.cjs +0 -457
  347. package/dist/chunk-QFTDTX6K.cjs.map +0 -1
  348. package/dist/chunk-SBUFNJVE.js +0 -258
  349. package/dist/chunk-SBUFNJVE.js.map +0 -1
  350. package/dist/chunk-SRGQ72IR.cjs +0 -2800
  351. package/dist/chunk-SRGQ72IR.cjs.map +0 -1
  352. package/dist/chunk-SSV46KFA.cjs +0 -112
  353. package/dist/chunk-SSV46KFA.cjs.map +0 -1
  354. package/dist/chunk-T6ZYQJ63.cjs +0 -6807
  355. package/dist/chunk-T6ZYQJ63.cjs.map +0 -1
  356. package/dist/chunk-UKQHXPGW.js +0 -30
  357. package/dist/chunk-UKQHXPGW.js.map +0 -1
  358. package/dist/chunk-UO6BUV6K.js +0 -278
  359. package/dist/chunk-UO6BUV6K.js.map +0 -1
  360. package/dist/chunk-V4XG5QF6.js +0 -1685
  361. package/dist/chunk-V4XG5QF6.js.map +0 -1
  362. package/dist/chunk-VEKIWQ3F.cjs +0 -39
  363. package/dist/chunk-VEKIWQ3F.cjs.map +0 -1
  364. package/dist/chunk-WWQEY7BV.js +0 -67
  365. package/dist/chunk-WWQEY7BV.js.map +0 -1
  366. package/dist/chunk-WXEHD6TT.js +0 -2795
  367. package/dist/chunk-WXEHD6TT.js.map +0 -1
  368. package/dist/chunk-X6K3HUOY.cjs +0 -86
  369. package/dist/chunk-X6K3HUOY.cjs.map +0 -1
  370. package/dist/chunk-XA4CKRML.cjs +0 -316
  371. package/dist/chunk-XA4CKRML.cjs.map +0 -1
  372. package/dist/chunk-XBTEO4OB.js +0 -391
  373. package/dist/chunk-XBTEO4OB.js.map +0 -1
  374. package/dist/chunk-XIYYHA65.cjs +0 -101
  375. package/dist/chunk-XIYYHA65.cjs.map +0 -1
  376. package/dist/chunk-YLJ4XMA6.js +0 -33
  377. package/dist/chunk-YLJ4XMA6.js.map +0 -1
  378. package/dist/chunk-YRIKITGF.cjs +0 -1768
  379. package/dist/chunk-YRIKITGF.cjs.map +0 -1
  380. package/dist/chunk-Z2XP767T.cjs +0 -35
  381. package/dist/chunk-Z2XP767T.cjs.map +0 -1
  382. package/dist/chunk-Z4X2RWOF.js +0 -37
  383. package/dist/chunk-Z4X2RWOF.js.map +0 -1
  384. package/dist/chunk-Z7XGGLI2.js +0 -455
  385. package/dist/chunk-Z7XGGLI2.js.map +0 -1
  386. package/dist/chunk-ZMW6NU2K.cjs +0 -1516
  387. package/dist/chunk-ZMW6NU2K.cjs.map +0 -1
  388. package/dist/chunk-ZVTWQLK4.cjs +0 -459
  389. package/dist/chunk-ZVTWQLK4.cjs.map +0 -1
  390. package/dist/variables.cjs +0 -17
  391. package/dist/variables.cjs.map +0 -1
  392. package/dist/variables.d.cts +0 -87
  393. package/dist/variables.d.ts +0 -87
  394. package/dist/variables.js +0 -4
  395. package/dist/variables.js.map +0 -1
@@ -1,405 +0,0 @@
1
- // src/packages/colour/CssNamedColours.ts
2
- var CSS_NAMED_COLOURS = {
3
- aliceblue: [240, 248, 255],
4
- antiquewhite: [250, 235, 215],
5
- aqua: [0, 255, 255],
6
- aquamarine: [127, 255, 212],
7
- azure: [240, 255, 255],
8
- beige: [245, 245, 220],
9
- bisque: [255, 228, 196],
10
- black: [0, 0, 0],
11
- blanchedalmond: [255, 235, 205],
12
- blue: [0, 0, 255],
13
- blueviolet: [138, 43, 226],
14
- brown: [165, 42, 42],
15
- burlywood: [222, 184, 135],
16
- cadetblue: [95, 158, 160],
17
- chartreuse: [127, 255, 0],
18
- chocolate: [210, 105, 30],
19
- coral: [255, 127, 80],
20
- cornflowerblue: [100, 149, 237],
21
- cornsilk: [255, 248, 220],
22
- crimson: [220, 20, 60],
23
- cyan: [0, 255, 255],
24
- darkblue: [0, 0, 139],
25
- darkcyan: [0, 139, 139],
26
- darkgoldenrod: [184, 134, 11],
27
- darkgray: [169, 169, 169],
28
- darkgreen: [0, 100, 0],
29
- darkgrey: [169, 169, 169],
30
- darkkhaki: [189, 183, 107],
31
- darkmagenta: [139, 0, 139],
32
- darkolivegreen: [85, 107, 47],
33
- darkorange: [255, 140, 0],
34
- darkorchid: [153, 50, 204],
35
- darkred: [139, 0, 0],
36
- darksalmon: [233, 150, 122],
37
- darkseagreen: [143, 188, 143],
38
- darkslateblue: [72, 61, 139],
39
- darkslategray: [47, 79, 79],
40
- darkslategrey: [47, 79, 79],
41
- darkturquoise: [0, 206, 209],
42
- darkviolet: [148, 0, 211],
43
- deeppink: [255, 20, 147],
44
- deepskyblue: [0, 191, 255],
45
- dimgray: [105, 105, 105],
46
- dimgrey: [105, 105, 105],
47
- dodgerblue: [30, 144, 255],
48
- firebrick: [178, 34, 34],
49
- floralwhite: [255, 250, 240],
50
- forestgreen: [34, 139, 34],
51
- fuchsia: [255, 0, 255],
52
- gainsboro: [220, 220, 220],
53
- ghostwhite: [248, 248, 255],
54
- gold: [255, 215, 0],
55
- goldenrod: [218, 165, 32],
56
- gray: [128, 128, 128],
57
- green: [0, 128, 0],
58
- greenyellow: [173, 255, 47],
59
- grey: [128, 128, 128],
60
- honeydew: [240, 255, 240],
61
- hotpink: [255, 105, 180],
62
- indianred: [205, 92, 92],
63
- indigo: [75, 0, 130],
64
- ivory: [255, 255, 240],
65
- khaki: [240, 230, 140],
66
- lavender: [230, 230, 250],
67
- lavenderblush: [255, 240, 245],
68
- lawngreen: [124, 252, 0],
69
- lemonchiffon: [255, 250, 205],
70
- lightblue: [173, 216, 230],
71
- lightcoral: [240, 128, 128],
72
- lightcyan: [224, 255, 255],
73
- lightgoldenrodyellow: [250, 250, 210],
74
- lightgray: [211, 211, 211],
75
- lightgreen: [144, 238, 144],
76
- lightgrey: [211, 211, 211],
77
- lightpink: [255, 182, 193],
78
- lightsalmon: [255, 160, 122],
79
- lightseagreen: [32, 178, 170],
80
- lightskyblue: [135, 206, 250],
81
- lightslategray: [119, 136, 153],
82
- lightslategrey: [119, 136, 153],
83
- lightsteelblue: [176, 196, 222],
84
- lightyellow: [255, 255, 224],
85
- lime: [0, 255, 0],
86
- limegreen: [50, 205, 50],
87
- linen: [250, 240, 230],
88
- magenta: [255, 0, 255],
89
- maroon: [128, 0, 0],
90
- mediumaquamarine: [102, 205, 170],
91
- mediumblue: [0, 0, 205],
92
- mediumorchid: [186, 85, 211],
93
- mediumpurple: [147, 112, 219],
94
- mediumseagreen: [60, 179, 113],
95
- mediumslateblue: [123, 104, 238],
96
- mediumspringgreen: [0, 250, 154],
97
- mediumturquoise: [72, 209, 204],
98
- mediumvioletred: [199, 21, 133],
99
- midnightblue: [25, 25, 112],
100
- mintcream: [245, 255, 250],
101
- mistyrose: [255, 228, 225],
102
- moccasin: [255, 228, 181],
103
- navajowhite: [255, 222, 173],
104
- navy: [0, 0, 128],
105
- oldlace: [253, 245, 230],
106
- olive: [128, 128, 0],
107
- olivedrab: [107, 142, 35],
108
- orange: [255, 165, 0],
109
- orangered: [255, 69, 0],
110
- orchid: [218, 112, 214],
111
- palegoldenrod: [238, 232, 170],
112
- palegreen: [152, 251, 152],
113
- paleturquoise: [175, 238, 238],
114
- palevioletred: [219, 112, 147],
115
- papayawhip: [255, 239, 213],
116
- peachpuff: [255, 218, 185],
117
- peru: [205, 133, 63],
118
- pink: [255, 192, 203],
119
- plum: [221, 160, 221],
120
- powderblue: [176, 224, 230],
121
- purple: [128, 0, 128],
122
- rebeccapurple: [102, 51, 153],
123
- red: [255, 0, 0],
124
- rosybrown: [188, 143, 143],
125
- royalblue: [65, 105, 225],
126
- saddlebrown: [139, 69, 19],
127
- salmon: [250, 128, 114],
128
- sandybrown: [244, 164, 96],
129
- seagreen: [46, 139, 87],
130
- seashell: [255, 245, 238],
131
- sienna: [160, 82, 45],
132
- silver: [192, 192, 192],
133
- skyblue: [135, 206, 235],
134
- slateblue: [106, 90, 205],
135
- slategray: [112, 128, 144],
136
- slategrey: [112, 128, 144],
137
- snow: [255, 250, 250],
138
- springgreen: [0, 255, 127],
139
- steelblue: [70, 130, 180],
140
- tan: [210, 180, 140],
141
- teal: [0, 128, 128],
142
- thistle: [216, 191, 216],
143
- tomato: [255, 99, 71],
144
- turquoise: [64, 224, 208],
145
- violet: [238, 130, 238],
146
- wheat: [245, 222, 179],
147
- white: [255, 255, 255],
148
- whitesmoke: [245, 245, 245],
149
- yellow: [255, 255, 0],
150
- yellowgreen: [154, 205, 50]
151
- };
152
-
153
- // src/packages/colour/ColourMath.ts
154
- function clamp255(x) {
155
- return Math.min(255, Math.max(0, Math.round(x)));
156
- }
157
- function clamp01(x) {
158
- return Math.min(1, Math.max(0, x));
159
- }
160
- function hexByte(n) {
161
- return clamp255(n).toString(16).padStart(2, "0");
162
- }
163
- function formatAlpha(a) {
164
- return String(Number(a.toFixed(3)));
165
- }
166
- function parseHex(input) {
167
- const s = input.startsWith("#") ? input.slice(1) : input;
168
- if (!/^[0-9a-fA-F]+$/.test(s)) return null;
169
- const dbl = (h) => parseInt(h + h, 16);
170
- const pair = (h) => parseInt(h, 16);
171
- switch (s.length) {
172
- case 3:
173
- return { r: dbl(s[0]), g: dbl(s[1]), b: dbl(s[2]), a: 1, format: "hex" };
174
- case 4:
175
- return { r: dbl(s[0]), g: dbl(s[1]), b: dbl(s[2]), a: dbl(s[3]) / 255, format: "hex" };
176
- case 6:
177
- return { r: pair(s.slice(0, 2)), g: pair(s.slice(2, 4)), b: pair(s.slice(4, 6)), a: 1, format: "hex" };
178
- case 8:
179
- return {
180
- r: pair(s.slice(0, 2)),
181
- g: pair(s.slice(2, 4)),
182
- b: pair(s.slice(4, 6)),
183
- a: pair(s.slice(6, 8)) / 255,
184
- format: "hex"
185
- };
186
- default:
187
- return null;
188
- }
189
- }
190
- function namedColour(name) {
191
- const key = name.trim().toLowerCase();
192
- if (key === "transparent") return { r: 0, g: 0, b: 0, a: 0, format: "named", name: "transparent" };
193
- const rgb = CSS_NAMED_COLOURS[key];
194
- if (!rgb) return null;
195
- return { r: rgb[0], g: rgb[1], b: rgb[2], a: 1, format: "named", name: key };
196
- }
197
- function parseColour(input) {
198
- const trimmed = input.trim();
199
- if (trimmed.startsWith("#") || /^[0-9a-fA-F]{3,8}$/.test(trimmed)) {
200
- const hex = parseHex(trimmed);
201
- if (hex) return hex;
202
- }
203
- return namedColour(trimmed);
204
- }
205
- function rgbToHsl(r, g, b) {
206
- const rn = r / 255;
207
- const gn = g / 255;
208
- const bn = b / 255;
209
- const max = Math.max(rn, gn, bn);
210
- const min = Math.min(rn, gn, bn);
211
- const l = (max + min) / 2;
212
- if (max === min) return { h: 0, s: 0, l };
213
- const d = max - min;
214
- const s = l > 0.5 ? d / (2 - max - min) : d / (max + min);
215
- let h;
216
- if (max === rn) h = (gn - bn) / d + (gn < bn ? 6 : 0);
217
- else if (max === gn) h = (bn - rn) / d + 2;
218
- else h = (rn - gn) / d + 4;
219
- return { h: h * 60, s, l };
220
- }
221
- function hslToRgb(h, s, l) {
222
- if (s === 0) {
223
- const v = clamp255(l * 255);
224
- return { r: v, g: v, b: v };
225
- }
226
- const q = l < 0.5 ? l * (1 + s) : l + s - l * s;
227
- const p = 2 * l - q;
228
- const hn = (h % 360 + 360) % 360 / 360;
229
- const hue = (t) => {
230
- let tt = t;
231
- if (tt < 0) tt += 1;
232
- if (tt > 1) tt -= 1;
233
- if (tt < 1 / 6) return p + (q - p) * 6 * tt;
234
- if (tt < 1 / 2) return q;
235
- if (tt < 2 / 3) return p + (q - p) * (2 / 3 - tt) * 6;
236
- return p;
237
- };
238
- return {
239
- r: clamp255(hue(hn + 1 / 3) * 255),
240
- g: clamp255(hue(hn) * 255),
241
- b: clamp255(hue(hn - 1 / 3) * 255)
242
- };
243
- }
244
- function toHexString(c) {
245
- const base = `#${hexByte(c.r)}${hexByte(c.g)}${hexByte(c.b)}`;
246
- return c.a < 1 ? `${base}${hexByte(c.a * 255)}` : base;
247
- }
248
- function formatColour(c) {
249
- switch (c.format) {
250
- case "rgb":
251
- return `rgb(${c.r}, ${c.g}, ${c.b})`;
252
- case "rgba":
253
- return `rgba(${c.r}, ${c.g}, ${c.b}, ${formatAlpha(c.a)})`;
254
- case "hsl": {
255
- const { h, s, l } = rgbToHsl(c.r, c.g, c.b);
256
- return `hsl(${Math.round(h)}, ${Math.round(s * 100)}%, ${Math.round(l * 100)}%)`;
257
- }
258
- case "hsla": {
259
- const { h, s, l } = rgbToHsl(c.r, c.g, c.b);
260
- return `hsla(${Math.round(h)}, ${Math.round(s * 100)}%, ${Math.round(l * 100)}%, ${formatAlpha(c.a)})`;
261
- }
262
- case "named":
263
- return c.name ?? toHexString(c);
264
- case "hex":
265
- default:
266
- return toHexString(c);
267
- }
268
- }
269
- function linearise(channel8) {
270
- const cs = channel8 / 255;
271
- return cs <= 0.03928 ? cs / 12.92 : Math.pow((cs + 0.055) / 1.055, 2.4);
272
- }
273
- function relativeLuminance(c) {
274
- return 0.2126 * linearise(c.r) + 0.7152 * linearise(c.g) + 0.0722 * linearise(c.b);
275
- }
276
- function contrastRatio(a, b) {
277
- const la = relativeLuminance(a) + 0.05;
278
- const lb = relativeLuminance(b) + 0.05;
279
- return la > lb ? la / lb : lb / la;
280
- }
281
- function derive(c, next) {
282
- const format = c.format === "named" ? "hex" : c.format;
283
- return {
284
- r: next.r ?? c.r,
285
- g: next.g ?? c.g,
286
- b: next.b ?? c.b,
287
- a: next.a ?? c.a,
288
- format
289
- };
290
- }
291
- function adjustHsl(c, fn) {
292
- const hsl = rgbToHsl(c.r, c.g, c.b);
293
- fn(hsl);
294
- const { r, g, b } = hslToRgb(hsl.h, hsl.s, hsl.l);
295
- return derive(c, { r, g, b });
296
- }
297
- function lighten(c, amount) {
298
- return adjustHsl(c, (hsl) => hsl.l = clamp01(hsl.l + amount));
299
- }
300
- function darken(c, amount) {
301
- return adjustHsl(c, (hsl) => hsl.l = clamp01(hsl.l - amount));
302
- }
303
- function saturate(c, amount) {
304
- return adjustHsl(c, (hsl) => hsl.s = clamp01(hsl.s + amount));
305
- }
306
- function desaturate(c, amount) {
307
- return adjustHsl(c, (hsl) => hsl.s = clamp01(hsl.s - amount));
308
- }
309
- function rotateHue(c, degrees) {
310
- return adjustHsl(c, (hsl) => hsl.h = ((hsl.h + degrees) % 360 + 360) % 360);
311
- }
312
- function complement(c) {
313
- return rotateHue(c, 180);
314
- }
315
- function grayscale(c) {
316
- const y = clamp255(0.299 * c.r + 0.587 * c.g + 0.114 * c.b);
317
- return derive(c, { r: y, g: y, b: y });
318
- }
319
- function invert(c, amount = 1) {
320
- const t = clamp01(amount);
321
- return derive(c, {
322
- r: clamp255(c.r + (255 - 2 * c.r) * t),
323
- g: clamp255(c.g + (255 - 2 * c.g) * t),
324
- b: clamp255(c.b + (255 - 2 * c.b) * t)
325
- });
326
- }
327
- function mix(a, b, weight = 0.5) {
328
- const t = clamp01(weight);
329
- const lerp = (x, y) => x * (1 - t) + y * t;
330
- const format = a.format === "named" ? "hex" : a.format;
331
- return {
332
- r: clamp255(lerp(a.r, b.r)),
333
- g: clamp255(lerp(a.g, b.g)),
334
- b: clamp255(lerp(a.b, b.b)),
335
- a: clamp01(lerp(a.a, b.a)),
336
- format
337
- };
338
- }
339
- function withAlpha(c, alpha) {
340
- const a = clamp01(alpha);
341
- let format = c.format;
342
- if (a < 1) {
343
- if (format === "rgb") format = "rgba";
344
- else if (format === "hsl") format = "hsla";
345
- else if (format === "named") format = "hex";
346
- }
347
- return { r: c.r, g: c.g, b: c.b, a, format };
348
- }
349
- var WHITE = { r: 255, g: 255, b: 255, a: 1, format: "hex" };
350
- var BLACK = { r: 0, g: 0, b: 0, a: 1, format: "hex" };
351
- var MID_GREY = { r: 128, g: 128, b: 128, a: 1};
352
- function hsvToRgb(h, s, v) {
353
- const hh = (h % 360 + 360) % 360 / 60;
354
- const c = v * s;
355
- const x = c * (1 - Math.abs(hh % 2 - 1));
356
- const m = v - c;
357
- let r = 0;
358
- let g = 0;
359
- let b = 0;
360
- if (hh < 1) [r, g, b] = [c, x, 0];
361
- else if (hh < 2) [r, g, b] = [x, c, 0];
362
- else if (hh < 3) [r, g, b] = [0, c, x];
363
- else if (hh < 4) [r, g, b] = [0, x, c];
364
- else if (hh < 5) [r, g, b] = [x, 0, c];
365
- else [r, g, b] = [c, 0, x];
366
- return { r: clamp255((r + m) * 255), g: clamp255((g + m) * 255), b: clamp255((b + m) * 255) };
367
- }
368
- function hwbToRgb(h, w, b) {
369
- const wh = clamp01(w);
370
- const bl = clamp01(b);
371
- if (wh + bl >= 1) {
372
- const grey = clamp255(wh / (wh + bl) * 255);
373
- return { r: grey, g: grey, b: grey };
374
- }
375
- const base = hslToRgb(h, 1, 0.5);
376
- const channel = (ch) => clamp255(ch * (1 - wh - bl) + wh * 255);
377
- return { r: channel(base.r), g: channel(base.g), b: channel(base.b) };
378
- }
379
- function tint(c, amount) {
380
- return mix(c, WHITE, amount);
381
- }
382
- function shade(c, amount) {
383
- return mix(c, BLACK, amount);
384
- }
385
- function tone(c, amount) {
386
- return mix(c, MID_GREY, amount);
387
- }
388
- function isDark(c) {
389
- return contrastRatio(c, WHITE) >= contrastRatio(c, BLACK);
390
- }
391
- function readableColour(background) {
392
- return isDark(background) ? WHITE : BLACK;
393
- }
394
- var WCAG_THRESHOLDS = { aa: 4.5, aaa: 7, aaLarge: 3, aaaLarge: 4.5 };
395
- function wcagLevel(a, b) {
396
- const ratio = contrastRatio(a, b);
397
- if (ratio >= WCAG_THRESHOLDS.aaa) return "AAA";
398
- if (ratio >= WCAG_THRESHOLDS.aa) return "AA";
399
- if (ratio >= WCAG_THRESHOLDS.aaLarge) return "AA Large";
400
- return "Fail";
401
- }
402
-
403
- export { WCAG_THRESHOLDS, clamp01, clamp255, complement, contrastRatio, darken, desaturate, formatColour, grayscale, hslToRgb, hsvToRgb, hwbToRgb, invert, isDark, lighten, mix, parseColour, readableColour, relativeLuminance, rgbToHsl, rotateHue, saturate, shade, tint, toHexString, tone, wcagLevel, withAlpha };
404
- //# sourceMappingURL=chunk-5HRB36DK.js.map
405
- //# sourceMappingURL=chunk-5HRB36DK.js.map
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../src/packages/colour/CssNamedColours.ts","../src/packages/colour/ColourMath.ts"],"names":[],"mappings":"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","file":"chunk-5HRB36DK.js","sourcesContent":["/**\n * The complete CSS Color Module Level 4 named-colour set, as canonical sRGB\n * `[r, g, b]` triples (0-255). These are the same values every browser resolves\n * a keyword to, so `color(\"rebeccapurple\")` matches what the page would render.\n *\n * `transparent` is handled by the caller (it is `rgba(0, 0, 0, 0)`, an alpha the\n * triples here cannot express) and `currentColor` is deliberately absent: it is\n * context-dependent, not a fixed colour.\n */\nexport const CSS_NAMED_COLOURS: Readonly<Record<string, readonly [number, number, number]>> = {\n\taliceblue: [240, 248, 255],\n\tantiquewhite: [250, 235, 215],\n\taqua: [0, 255, 255],\n\taquamarine: [127, 255, 212],\n\tazure: [240, 255, 255],\n\tbeige: [245, 245, 220],\n\tbisque: [255, 228, 196],\n\tblack: [0, 0, 0],\n\tblanchedalmond: [255, 235, 205],\n\tblue: [0, 0, 255],\n\tblueviolet: [138, 43, 226],\n\tbrown: [165, 42, 42],\n\tburlywood: [222, 184, 135],\n\tcadetblue: [95, 158, 160],\n\tchartreuse: [127, 255, 0],\n\tchocolate: [210, 105, 30],\n\tcoral: [255, 127, 80],\n\tcornflowerblue: [100, 149, 237],\n\tcornsilk: [255, 248, 220],\n\tcrimson: [220, 20, 60],\n\tcyan: [0, 255, 255],\n\tdarkblue: [0, 0, 139],\n\tdarkcyan: [0, 139, 139],\n\tdarkgoldenrod: [184, 134, 11],\n\tdarkgray: [169, 169, 169],\n\tdarkgreen: [0, 100, 0],\n\tdarkgrey: [169, 169, 169],\n\tdarkkhaki: [189, 183, 107],\n\tdarkmagenta: [139, 0, 139],\n\tdarkolivegreen: [85, 107, 47],\n\tdarkorange: [255, 140, 0],\n\tdarkorchid: [153, 50, 204],\n\tdarkred: [139, 0, 0],\n\tdarksalmon: [233, 150, 122],\n\tdarkseagreen: [143, 188, 143],\n\tdarkslateblue: [72, 61, 139],\n\tdarkslategray: [47, 79, 79],\n\tdarkslategrey: [47, 79, 79],\n\tdarkturquoise: [0, 206, 209],\n\tdarkviolet: [148, 0, 211],\n\tdeeppink: [255, 20, 147],\n\tdeepskyblue: [0, 191, 255],\n\tdimgray: [105, 105, 105],\n\tdimgrey: [105, 105, 105],\n\tdodgerblue: [30, 144, 255],\n\tfirebrick: [178, 34, 34],\n\tfloralwhite: [255, 250, 240],\n\tforestgreen: [34, 139, 34],\n\tfuchsia: [255, 0, 255],\n\tgainsboro: [220, 220, 220],\n\tghostwhite: [248, 248, 255],\n\tgold: [255, 215, 0],\n\tgoldenrod: [218, 165, 32],\n\tgray: [128, 128, 128],\n\tgreen: [0, 128, 0],\n\tgreenyellow: [173, 255, 47],\n\tgrey: [128, 128, 128],\n\thoneydew: [240, 255, 240],\n\thotpink: [255, 105, 180],\n\tindianred: [205, 92, 92],\n\tindigo: [75, 0, 130],\n\tivory: [255, 255, 240],\n\tkhaki: [240, 230, 140],\n\tlavender: [230, 230, 250],\n\tlavenderblush: [255, 240, 245],\n\tlawngreen: [124, 252, 0],\n\tlemonchiffon: [255, 250, 205],\n\tlightblue: [173, 216, 230],\n\tlightcoral: [240, 128, 128],\n\tlightcyan: [224, 255, 255],\n\tlightgoldenrodyellow: [250, 250, 210],\n\tlightgray: [211, 211, 211],\n\tlightgreen: [144, 238, 144],\n\tlightgrey: [211, 211, 211],\n\tlightpink: [255, 182, 193],\n\tlightsalmon: [255, 160, 122],\n\tlightseagreen: [32, 178, 170],\n\tlightskyblue: [135, 206, 250],\n\tlightslategray: [119, 136, 153],\n\tlightslategrey: [119, 136, 153],\n\tlightsteelblue: [176, 196, 222],\n\tlightyellow: [255, 255, 224],\n\tlime: [0, 255, 0],\n\tlimegreen: [50, 205, 50],\n\tlinen: [250, 240, 230],\n\tmagenta: [255, 0, 255],\n\tmaroon: [128, 0, 0],\n\tmediumaquamarine: [102, 205, 170],\n\tmediumblue: [0, 0, 205],\n\tmediumorchid: [186, 85, 211],\n\tmediumpurple: [147, 112, 219],\n\tmediumseagreen: [60, 179, 113],\n\tmediumslateblue: [123, 104, 238],\n\tmediumspringgreen: [0, 250, 154],\n\tmediumturquoise: [72, 209, 204],\n\tmediumvioletred: [199, 21, 133],\n\tmidnightblue: [25, 25, 112],\n\tmintcream: [245, 255, 250],\n\tmistyrose: [255, 228, 225],\n\tmoccasin: [255, 228, 181],\n\tnavajowhite: [255, 222, 173],\n\tnavy: [0, 0, 128],\n\toldlace: [253, 245, 230],\n\tolive: [128, 128, 0],\n\tolivedrab: [107, 142, 35],\n\torange: [255, 165, 0],\n\torangered: [255, 69, 0],\n\torchid: [218, 112, 214],\n\tpalegoldenrod: [238, 232, 170],\n\tpalegreen: [152, 251, 152],\n\tpaleturquoise: [175, 238, 238],\n\tpalevioletred: [219, 112, 147],\n\tpapayawhip: [255, 239, 213],\n\tpeachpuff: [255, 218, 185],\n\tperu: [205, 133, 63],\n\tpink: [255, 192, 203],\n\tplum: [221, 160, 221],\n\tpowderblue: [176, 224, 230],\n\tpurple: [128, 0, 128],\n\trebeccapurple: [102, 51, 153],\n\tred: [255, 0, 0],\n\trosybrown: [188, 143, 143],\n\troyalblue: [65, 105, 225],\n\tsaddlebrown: [139, 69, 19],\n\tsalmon: [250, 128, 114],\n\tsandybrown: [244, 164, 96],\n\tseagreen: [46, 139, 87],\n\tseashell: [255, 245, 238],\n\tsienna: [160, 82, 45],\n\tsilver: [192, 192, 192],\n\tskyblue: [135, 206, 235],\n\tslateblue: [106, 90, 205],\n\tslategray: [112, 128, 144],\n\tslategrey: [112, 128, 144],\n\tsnow: [255, 250, 250],\n\tspringgreen: [0, 255, 127],\n\tsteelblue: [70, 130, 180],\n\ttan: [210, 180, 140],\n\tteal: [0, 128, 128],\n\tthistle: [216, 191, 216],\n\ttomato: [255, 99, 71],\n\tturquoise: [64, 224, 208],\n\tviolet: [238, 130, 238],\n\twheat: [245, 222, 179],\n\twhite: [255, 255, 255],\n\twhitesmoke: [245, 245, 245],\n\tyellow: [255, 255, 0],\n\tyellowgreen: [154, 205, 50],\n};\n","/**\n * Pure colour maths for the colour package. Everything here is a plain function\n * over numbers and {@link ColourData} with no engine imports and no side effects,\n * so it is trivially unit-testable and can be reused by a host renderer (the docs\n * notepad reads these to draw a swatch). Canonical storage is sRGB: `r`,`g`,`b`\n * are integers 0-255 and `a` is 0-1. HSL is derived on demand and re-quantised,\n * never stored, so equal-and-opposite operations return to a stable colour.\n */\nimport type { ColourData, ColourFormat } from \"@solve-js/vm/Value\";\nimport { CSS_NAMED_COLOURS } from \"./CssNamedColours\";\n\n/** Round and clamp a value to a valid 0-255 sRGB channel. */\nexport function clamp255(x: number): number {\n\treturn Math.min(255, Math.max(0, Math.round(x)));\n}\n\n/** Clamp a value to the 0-1 range used for alpha and normalised HSL. */\nexport function clamp01(x: number): number {\n\treturn Math.min(1, Math.max(0, x));\n}\n\nfunction hexByte(n: number): string {\n\treturn clamp255(n).toString(16).padStart(2, \"0\");\n}\n\n/**\n * Render the alpha channel the way CSS does: a plain decimal with no trailing\n * zeros (`1`, `0.5`, `0.333`), so `rgba(255, 0, 0, 0.5)` reads back cleanly.\n */\nfunction formatAlpha(a: number): string {\n\treturn String(Number(a.toFixed(3)));\n}\n\n// ── Parsing ─────────────────────────────────────────────────────────────\n\n/**\n * Parse a CSS hex colour: `#RGB`, `#RGBA`, `#RRGGBB` or `#RRGGBBAA`,\n * case-insensitive, leading `#` optional. Three and four digit forms expand each\n * nibble (`f` becomes `ff`), matching a browser. Any other length or a non-hex\n * character returns null so the caller can raise a clear error.\n */\nexport function parseHex(input: string): ColourData | null {\n\tconst s = input.startsWith(\"#\") ? input.slice(1) : input;\n\tif (!/^[0-9a-fA-F]+$/.test(s)) return null;\n\tconst dbl = (h: string): number => parseInt(h + h, 16);\n\tconst pair = (h: string): number => parseInt(h, 16);\n\tswitch (s.length) {\n\t\tcase 3:\n\t\t\treturn { r: dbl(s[0]), g: dbl(s[1]), b: dbl(s[2]), a: 1, format: \"hex\" };\n\t\tcase 4:\n\t\t\treturn { r: dbl(s[0]), g: dbl(s[1]), b: dbl(s[2]), a: dbl(s[3]) / 255, format: \"hex\" };\n\t\tcase 6:\n\t\t\treturn { r: pair(s.slice(0, 2)), g: pair(s.slice(2, 4)), b: pair(s.slice(4, 6)), a: 1, format: \"hex\" };\n\t\tcase 8:\n\t\t\treturn {\n\t\t\t\tr: pair(s.slice(0, 2)),\n\t\t\t\tg: pair(s.slice(2, 4)),\n\t\t\t\tb: pair(s.slice(4, 6)),\n\t\t\t\ta: pair(s.slice(6, 8)) / 255,\n\t\t\t\tformat: \"hex\",\n\t\t\t};\n\t\tdefault:\n\t\t\treturn null;\n\t}\n}\n\n/**\n * Resolve a CSS named colour (case-insensitive), including `transparent`. Returns\n * null for an unknown keyword so the caller can raise an error.\n */\nexport function namedColour(name: string): ColourData | null {\n\tconst key = name.trim().toLowerCase();\n\tif (key === \"transparent\") return { r: 0, g: 0, b: 0, a: 0, format: \"named\", name: \"transparent\" };\n\tconst rgb = CSS_NAMED_COLOURS[key];\n\tif (!rgb) return null;\n\treturn { r: rgb[0], g: rgb[1], b: rgb[2], a: 1, format: \"named\", name: key };\n}\n\n/** Parse either a hex string or a named colour; null if neither. */\nexport function parseColour(input: string): ColourData | null {\n\tconst trimmed = input.trim();\n\tif (trimmed.startsWith(\"#\") || /^[0-9a-fA-F]{3,8}$/.test(trimmed)) {\n\t\tconst hex = parseHex(trimmed);\n\t\tif (hex) return hex;\n\t}\n\treturn namedColour(trimmed);\n}\n\n// ── RGB <-> HSL ─────────────────────────────────────────────────────────\n\n/** Convert sRGB (0-255) to HSL with h in [0, 360), s and l in [0, 1]. */\nexport function rgbToHsl(r: number, g: number, b: number): { h: number; s: number; l: number } {\n\tconst rn = r / 255;\n\tconst gn = g / 255;\n\tconst bn = b / 255;\n\tconst max = Math.max(rn, gn, bn);\n\tconst min = Math.min(rn, gn, bn);\n\tconst l = (max + min) / 2;\n\tif (max === min) return { h: 0, s: 0, l };\n\tconst d = max - min;\n\tconst s = l > 0.5 ? d / (2 - max - min) : d / (max + min);\n\tlet h: number;\n\tif (max === rn) h = (gn - bn) / d + (gn < bn ? 6 : 0);\n\telse if (max === gn) h = (bn - rn) / d + 2;\n\telse h = (rn - gn) / d + 4;\n\treturn { h: h * 60, s, l };\n}\n\n/** Convert HSL (h in degrees, s and l in [0, 1]) to sRGB (0-255 integers). */\nexport function hslToRgb(h: number, s: number, l: number): { r: number; g: number; b: number } {\n\tif (s === 0) {\n\t\tconst v = clamp255(l * 255);\n\t\treturn { r: v, g: v, b: v };\n\t}\n\tconst q = l < 0.5 ? l * (1 + s) : l + s - l * s;\n\tconst p = 2 * l - q;\n\tconst hn = (((h % 360) + 360) % 360) / 360;\n\tconst hue = (t: number): number => {\n\t\tlet tt = t;\n\t\tif (tt < 0) tt += 1;\n\t\tif (tt > 1) tt -= 1;\n\t\tif (tt < 1 / 6) return p + (q - p) * 6 * tt;\n\t\tif (tt < 1 / 2) return q;\n\t\tif (tt < 2 / 3) return p + (q - p) * (2 / 3 - tt) * 6;\n\t\treturn p;\n\t};\n\treturn {\n\t\tr: clamp255(hue(hn + 1 / 3) * 255),\n\t\tg: clamp255(hue(hn) * 255),\n\t\tb: clamp255(hue(hn - 1 / 3) * 255),\n\t};\n}\n\n// ── Display ─────────────────────────────────────────────────────────────\n\n/** Canonical hex string, `#rrggbb`, extended to `#rrggbbaa` only when a < 1. */\nexport function toHexString(c: ColourData): string {\n\tconst base = `#${hexByte(c.r)}${hexByte(c.g)}${hexByte(c.b)}`;\n\treturn c.a < 1 ? `${base}${hexByte(c.a * 255)}` : base;\n}\n\n/**\n * Render a colour as the CSS string matching its authored `format`. Always valid\n * CSS, so a host can drop it straight into a `background` (this is both the\n * displayed answer text and the DTO `css` field).\n */\nexport function formatColour(c: ColourData): string {\n\tswitch (c.format) {\n\t\tcase \"rgb\":\n\t\t\treturn `rgb(${c.r}, ${c.g}, ${c.b})`;\n\t\tcase \"rgba\":\n\t\t\treturn `rgba(${c.r}, ${c.g}, ${c.b}, ${formatAlpha(c.a)})`;\n\t\tcase \"hsl\": {\n\t\t\tconst { h, s, l } = rgbToHsl(c.r, c.g, c.b);\n\t\t\treturn `hsl(${Math.round(h)}, ${Math.round(s * 100)}%, ${Math.round(l * 100)}%)`;\n\t\t}\n\t\tcase \"hsla\": {\n\t\t\tconst { h, s, l } = rgbToHsl(c.r, c.g, c.b);\n\t\t\treturn `hsla(${Math.round(h)}, ${Math.round(s * 100)}%, ${Math.round(l * 100)}%, ${formatAlpha(c.a)})`;\n\t\t}\n\t\tcase \"named\":\n\t\t\treturn c.name ?? toHexString(c);\n\t\tcase \"hex\":\n\t\tdefault:\n\t\t\treturn toHexString(c);\n\t}\n}\n\n// ── WCAG luminance and contrast ─────────────────────────────────────────\n\nfunction linearise(channel8: number): number {\n\tconst cs = channel8 / 255;\n\treturn cs <= 0.03928 ? cs / 12.92 : Math.pow((cs + 0.055) / 1.055, 2.4);\n}\n\n/** WCAG relative luminance, 0 (black) to 1 (white). Alpha is ignored, per WCAG. */\nexport function relativeLuminance(c: ColourData): number {\n\treturn 0.2126 * linearise(c.r) + 0.7152 * linearise(c.g) + 0.0722 * linearise(c.b);\n}\n\n/** WCAG contrast ratio between two colours, 1 (identical) to 21 (black on white). */\nexport function contrastRatio(a: ColourData, b: ColourData): number {\n\tconst la = relativeLuminance(a) + 0.05;\n\tconst lb = relativeLuminance(b) + 0.05;\n\treturn la > lb ? la / lb : lb / la;\n}\n\n// ── Operations ──────────────────────────────────────────────────────────\n\n/**\n * Rebuild a colour from new channels, preserving the display format and alpha\n * unless overridden. A `named` colour whose channels change is no longer that\n * keyword, so it falls back to hex display.\n */\nfunction derive(c: ColourData, next: { r?: number; g?: number; b?: number; a?: number }): ColourData {\n\tconst format: ColourFormat = c.format === \"named\" ? \"hex\" : c.format;\n\treturn {\n\t\tr: next.r ?? c.r,\n\t\tg: next.g ?? c.g,\n\t\tb: next.b ?? c.b,\n\t\ta: next.a ?? c.a,\n\t\tformat,\n\t};\n}\n\nfunction adjustHsl(c: ColourData, fn: (hsl: { h: number; s: number; l: number }) => void): ColourData {\n\tconst hsl = rgbToHsl(c.r, c.g, c.b);\n\tfn(hsl);\n\tconst { r, g, b } = hslToRgb(hsl.h, hsl.s, hsl.l);\n\treturn derive(c, { r, g, b });\n}\n\n/** Increase lightness by `amount` (a fraction 0-1). */\nexport function lighten(c: ColourData, amount: number): ColourData {\n\treturn adjustHsl(c, (hsl) => (hsl.l = clamp01(hsl.l + amount)));\n}\n\n/** Decrease lightness by `amount`. */\nexport function darken(c: ColourData, amount: number): ColourData {\n\treturn adjustHsl(c, (hsl) => (hsl.l = clamp01(hsl.l - amount)));\n}\n\n/** Increase saturation by `amount`. */\nexport function saturate(c: ColourData, amount: number): ColourData {\n\treturn adjustHsl(c, (hsl) => (hsl.s = clamp01(hsl.s + amount)));\n}\n\n/** Decrease saturation by `amount`. */\nexport function desaturate(c: ColourData, amount: number): ColourData {\n\treturn adjustHsl(c, (hsl) => (hsl.s = clamp01(hsl.s - amount)));\n}\n\n/** Rotate the hue by `degrees` (wraps at 360). */\nexport function rotateHue(c: ColourData, degrees: number): ColourData {\n\treturn adjustHsl(c, (hsl) => (hsl.h = ((hsl.h + degrees) % 360 + 360) % 360));\n}\n\n/** The colour on the opposite side of the wheel (hue + 180). */\nexport function complement(c: ColourData): ColourData {\n\treturn rotateHue(c, 180);\n}\n\n/** Convert to grey using Rec.601 luma, preserving alpha. */\nexport function grayscale(c: ColourData): ColourData {\n\tconst y = clamp255(0.299 * c.r + 0.587 * c.g + 0.114 * c.b);\n\treturn derive(c, { r: y, g: y, b: y });\n}\n\n/** Invert each channel by `amount` (1 = full inversion), preserving alpha. */\nexport function invert(c: ColourData, amount = 1): ColourData {\n\tconst t = clamp01(amount);\n\treturn derive(c, {\n\t\tr: clamp255(c.r + (255 - 2 * c.r) * t),\n\t\tg: clamp255(c.g + (255 - 2 * c.g) * t),\n\t\tb: clamp255(c.b + (255 - 2 * c.b) * t),\n\t});\n}\n\n/**\n * Blend two colours by linear sRGB interpolation, `weight` toward `b` (0.5 is the\n * midpoint). This matches Sass `mix()` and DevTools blending; it is not\n * perceptually uniform (that would be Oklab), a deliberate zero-dependency choice.\n */\nexport function mix(a: ColourData, b: ColourData, weight = 0.5): ColourData {\n\tconst t = clamp01(weight);\n\tconst lerp = (x: number, y: number): number => x * (1 - t) + y * t;\n\tconst format: ColourFormat = a.format === \"named\" ? \"hex\" : a.format;\n\treturn {\n\t\tr: clamp255(lerp(a.r, b.r)),\n\t\tg: clamp255(lerp(a.g, b.g)),\n\t\tb: clamp255(lerp(a.b, b.b)),\n\t\ta: clamp01(lerp(a.a, b.a)),\n\t\tformat,\n\t};\n}\n\n/** Set the alpha channel, upgrading the display format so the alpha shows. */\nexport function withAlpha(c: ColourData, alpha: number): ColourData {\n\tconst a = clamp01(alpha);\n\tlet format: ColourFormat = c.format;\n\tif (a < 1) {\n\t\tif (format === \"rgb\") format = \"rgba\";\n\t\telse if (format === \"hsl\") format = \"hsla\";\n\t\telse if (format === \"named\") format = \"hex\";\n\t}\n\treturn { r: c.r, g: c.g, b: c.b, a, format };\n}\n\n// ── Additional colour spaces and helpers ────────────────────────────────\n\n/** Opaque white and black, reused by the luminance-based helpers below. */\nconst WHITE: ColourData = { r: 255, g: 255, b: 255, a: 1, format: \"hex\" };\nconst BLACK: ColourData = { r: 0, g: 0, b: 0, a: 1, format: \"hex\" };\nconst MID_GREY: ColourData = { r: 128, g: 128, b: 128, a: 1, format: \"hex\" };\n\n/**\n * Convert HSV/HSB (hue in degrees, saturation and value in 0-1) to sRGB. HSV is\n * the wheel most colour pickers present (DevTools included), distinct from HSL:\n * `value` is how bright the colour is, where HSL's `lightness` is how close to\n * white or black.\n */\nexport function hsvToRgb(h: number, s: number, v: number): { r: number; g: number; b: number } {\n\tconst hh = ((((h % 360) + 360) % 360)) / 60;\n\tconst c = v * s;\n\tconst x = c * (1 - Math.abs((hh % 2) - 1));\n\tconst m = v - c;\n\tlet r = 0;\n\tlet g = 0;\n\tlet b = 0;\n\tif (hh < 1) [r, g, b] = [c, x, 0];\n\telse if (hh < 2) [r, g, b] = [x, c, 0];\n\telse if (hh < 3) [r, g, b] = [0, c, x];\n\telse if (hh < 4) [r, g, b] = [0, x, c];\n\telse if (hh < 5) [r, g, b] = [x, 0, c];\n\telse [r, g, b] = [c, 0, x];\n\treturn { r: clamp255((r + m) * 255), g: clamp255((g + m) * 255), b: clamp255((b + m) * 255) };\n}\n\n/**\n * Convert HWB (hue in degrees, whiteness and blackness in 0-1) to sRGB, the CSS\n * Color 4 model: start from the pure hue and mix in white and black. When\n * whiteness and blackness sum to 1 or more the hue washes out to grey.\n */\nexport function hwbToRgb(h: number, w: number, b: number): { r: number; g: number; b: number } {\n\tconst wh = clamp01(w);\n\tconst bl = clamp01(b);\n\tif (wh + bl >= 1) {\n\t\tconst grey = clamp255((wh / (wh + bl)) * 255);\n\t\treturn { r: grey, g: grey, b: grey };\n\t}\n\tconst base = hslToRgb(h, 1, 0.5);\n\tconst channel = (ch: number): number => clamp255(ch * (1 - wh - bl) + wh * 255);\n\treturn { r: channel(base.r), g: channel(base.g), b: channel(base.b) };\n}\n\n/** Mix toward white by `amount` (a tint). */\nexport function tint(c: ColourData, amount: number): ColourData {\n\treturn mix(c, WHITE, amount);\n}\n\n/** Mix toward black by `amount` (a shade). */\nexport function shade(c: ColourData, amount: number): ColourData {\n\treturn mix(c, BLACK, amount);\n}\n\n/** Mix toward mid-grey by `amount` (a tone). */\nexport function tone(c: ColourData, amount: number): ColourData {\n\treturn mix(c, MID_GREY, amount);\n}\n\n/**\n * Whether a colour reads as dark, meaning white text on it has at least as much\n * WCAG contrast as black text does. Backs {@link readableColour} and the\n * `isdark`/`islight` predicates.\n */\nexport function isDark(c: ColourData): boolean {\n\treturn contrastRatio(c, WHITE) >= contrastRatio(c, BLACK);\n}\n\n/** Black or white, whichever has the higher WCAG contrast against `background`. */\nexport function readableColour(background: ColourData): ColourData {\n\treturn isDark(background) ? WHITE : BLACK;\n}\n\n/**\n * WCAG 2.x minimum contrast ratios. Normal text needs 4.5 (AA) or 7 (AAA); large\n * text (>= 18pt, or >= 14pt bold) and UI components need 3 (AA) or 4.5 (AAA).\n */\nexport const WCAG_THRESHOLDS = { aa: 4.5, aaa: 7, aaLarge: 3, aaaLarge: 4.5 } as const;\n\n/** The four WCAG ratings this package reports, best first. */\nexport type WcagLevel = \"AAA\" | \"AA\" | \"AA Large\" | \"Fail\";\n\n/**\n * The best WCAG 2.x rating two colours pass for normal-size text: `AAA` (ratio\n * >= 7), `AA` (>= 4.5), `AA Large` (>= 3, which meets AA only for large text or\n * UI), or `Fail` (< 3). This is the badge a contrast checker shows.\n */\nexport function wcagLevel(a: ColourData, b: ColourData): WcagLevel {\n\tconst ratio = contrastRatio(a, b);\n\tif (ratio >= WCAG_THRESHOLDS.aaa) return \"AAA\";\n\tif (ratio >= WCAG_THRESHOLDS.aa) return \"AA\";\n\tif (ratio >= WCAG_THRESHOLDS.aaLarge) return \"AA Large\";\n\treturn \"Fail\";\n}\n"]}
@@ -1,12 +0,0 @@
1
- // src/utilities/Hash.ts
2
- function djb2Hash(str) {
3
- let hash = 5381;
4
- for (let i = 0; i < str.length; i++) {
5
- hash = (hash << 5) + hash + str.charCodeAt(i) | 0;
6
- }
7
- return hash >>> 0;
8
- }
9
-
10
- export { djb2Hash };
11
- //# sourceMappingURL=chunk-5ON7PUAZ.js.map
12
- //# sourceMappingURL=chunk-5ON7PUAZ.js.map
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../src/utilities/Hash.ts"],"names":[],"mappings":";AAYO,SAAS,SAAS,GAAA,EAAqB;AAC7C,EAAA,IAAI,IAAA,GAAO,IAAA;AACX,EAAA,KAAA,IAAS,CAAA,GAAI,CAAA,EAAG,CAAA,GAAI,GAAA,CAAI,QAAQ,CAAA,EAAA,EAAK;AACpC,IAAA,IAAA,GAAA,CAAS,QAAQ,CAAA,IAAK,IAAA,GAAO,GAAA,CAAI,UAAA,CAAW,CAAC,CAAA,GAAK,CAAA;AAAA,EACnD;AACA,EAAA,OAAO,IAAA,KAAS,CAAA;AACjB","file":"chunk-5ON7PUAZ.js","sourcesContent":["/**\n * Fast, non-cryptographic string hashing utilities.\n *\n * djb2 is chosen for its speed, simplicity, and excellent distribution\n * for short strings (typical line lengths in markdown documents).\n * It produces a 32-bit unsigned integer hash.\n */\n\n/**\n * djb2 string hash, fast, simple, good distribution.\n * Used for O(1) line text change detection in DocumentModel.\n */\nexport function djb2Hash(str: string): number {\n\tlet hash = 5381;\n\tfor (let i = 0; i < str.length; i++) {\n\t\thash = ((hash << 5) + hash + str.charCodeAt(i)) | 0;\n\t}\n\treturn hash >>> 0; // unsigned 32-bit\n}\n"]}
@@ -1,109 +0,0 @@
1
- import { currencyExchangeService } from './chunk-Z7XGGLI2.js';
2
- import { numberValue } from './chunk-267JPOTF.js';
3
-
4
- // src/parser/OperandWidth.ts
5
- var ONE_OPERAND = [
6
- 10 /* PUSH_NUMBER */,
7
- 11 /* PUSH_BIGINT */,
8
- 12 /* PUSH_HEX */,
9
- 13 /* PUSH_STRING */,
10
- 14 /* PUSH_BOOLEAN */,
11
- // Its operand is a string-pool index holding the exact decimal text, so a
12
- // scanner must step over one byte exactly as it does for PUSH_STRING.
13
- 16 /* PUSH_DECIMAL */,
14
- 60 /* LOAD_VAR */,
15
- 61 /* STORE_VAR */,
16
- 62 /* LOAD_GLOBAL_VAR */,
17
- 63 /* STORE_GLOBAL_VAR */,
18
- 150 /* DEFINE_USER_FUNCTION */,
19
- 159 /* BIND_UNKNOWN */,
20
- // Its operand is a constant-pool index, like PUSH_NUMBER's: the epoch-ms
21
- // was resolved at parse time and stored in `numbers`. Omitting it made
22
- // every scanner read that index byte as an opcode, so an ordinary date
23
- // literal desynchronised the whole preflight walk.
24
- 95 /* DATE_LITERAL */,
25
- // One byte, the offset direction (0 forward, 1 backward) for "N working
26
- // days after/before/from <date>". See WorkdayOffsetParselet. DATE_WORKDAYS_BETWEEN
27
- // takes no operand and so is not listed here.
28
- 96 /* DATE_WORKDAY_OFFSET */
29
- ];
30
- var TWO_OPERANDS = [
31
- 50 /* CALL_PLUGIN */,
32
- 51 /* CALL_BUILTIN */,
33
- 151 /* CALL_USER_FUNCTION */,
34
- 152 /* MAT_NEW */
35
- ];
36
- var THREE_OPERANDS = [157 /* MAP_INVOKE */, 158 /* REDUCE_INVOKE */];
37
- var OPERAND_BYTES = (() => {
38
- const widths = new Array(256).fill(0);
39
- for (const op of ONE_OPERAND) widths[op] = 1;
40
- for (const op of TWO_OPERANDS) widths[op] = 2;
41
- for (const op of THREE_OPERANDS) widths[op] = 3;
42
- return widths;
43
- })();
44
- [
45
- ...ONE_OPERAND,
46
- ...TWO_OPERANDS,
47
- ...THREE_OPERANDS
48
- ];
49
- function nextInstruction(opcodes, index) {
50
- return index + 1 + (OPERAND_BYTES[opcodes[index]] ?? 0);
51
- }
52
-
53
- // src/uom/CurrencyResolver.ts
54
- var CURRENCY_NS = "currency";
55
- var CurrencyAsyncResolver = class {
56
- constructor(exchange) {
57
- this.namespace = CURRENCY_NS;
58
- this.exchange = exchange ?? currencyExchangeService;
59
- }
60
- preflight(_tokens, bytecode, packageId, signal, queryClient) {
61
- const { opcodes, strings } = bytecode;
62
- const len = opcodes.length;
63
- let i = 0;
64
- let lastStrIdx = -1;
65
- let prevStrIdx = -1;
66
- while (i < len) {
67
- const op = opcodes[i];
68
- if (op === 13 /* PUSH_STRING */) {
69
- prevStrIdx = lastStrIdx;
70
- lastStrIdx = opcodes[i + 1];
71
- }
72
- const isCurrencyCombiningOp = op === 84 /* UOM_CONVERT_IN */ || op === 81 /* UOM_CONVERT_TO */ || op === 20 /* ADD */ || op === 21 /* SUB */ || op === 22 /* MUL */ || op === 23 /* DIV */;
73
- if (isCurrencyCombiningOp) {
74
- if (prevStrIdx >= 0 && lastStrIdx >= 0) {
75
- const fromUnit = strings[prevStrIdx];
76
- const toUnit = strings[lastStrIdx];
77
- if (this.exchange.isCurrency(fromUnit) && this.exchange.isCurrency(toUnit) && fromUnit.toUpperCase() !== toUnit.toUpperCase()) {
78
- const syncRate = this.exchange.getRateSync(fromUnit, toUnit);
79
- if (syncRate === null) {
80
- const fromUpper = fromUnit.toUpperCase();
81
- const toUpper = toUnit.toUpperCase();
82
- const cacheKey = [CURRENCY_NS, fromUpper, toUpper];
83
- if (queryClient.getQueryData(cacheKey) !== void 0) {
84
- i++;
85
- continue;
86
- }
87
- const resolver = queryClient.fetchQuery({
88
- queryKey: cacheKey,
89
- queryFn: ({ signal: qSignal }) => {
90
- return this.exchange.getRate(fromUnit, toUnit, qSignal).then((rate) => numberValue(rate));
91
- },
92
- staleTime: 5 * 60 * 1e3
93
- });
94
- return { queryKey: cacheKey.join(":"), resolver, packageId, signal, metadata: { fromUnit, toUnit } };
95
- }
96
- }
97
- }
98
- }
99
- i = nextInstruction(opcodes, i);
100
- }
101
- return null;
102
- }
103
- destroy() {
104
- }
105
- };
106
-
107
- export { CurrencyAsyncResolver, nextInstruction };
108
- //# sourceMappingURL=chunk-7KYSUDQO.js.map
109
- //# sourceMappingURL=chunk-7KYSUDQO.js.map
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../src/parser/OperandWidth.ts","../src/uom/CurrencyResolver.ts"],"names":[],"mappings":"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","file":"chunk-7KYSUDQO.js","sourcesContent":["/**\n * How many operand bytes follow each opcode, and how to step over one.\n *\n * Anything walking a bytecode stream without executing it needs this: the\n * resolver preflight scanners look for specific opcodes and must skip past\n * everything else without mistaking an operand byte for an instruction.\n *\n * It used to be a hand-copied switch in each of those scanners. They had\n * already drifted: two counted `CALL_PLUGIN` as three bytes wide and the third\n * omitted it from that arm, so a stream containing one desynchronised there and\n * every opcode after it was read at the wrong offset. Adding an opcode meant\n * remembering every copy, and nothing checked that you had.\n *\n * `__tests__/parser/OperandWidth.spec.ts` asserts every opcode has a width, so\n * a new one fails a test rather than silently defaulting to zero operands.\n */\n\nimport { OpCode } from \"@solve-js/parser/OpCode\";\n\n/**\n * Opcodes taking one operand byte.\n *\n * A constant-pool index, or a variable-name index.\n */\nconst ONE_OPERAND: readonly OpCode[] = [\n\tOpCode.PUSH_NUMBER,\n\tOpCode.PUSH_BIGINT,\n\tOpCode.PUSH_HEX,\n\tOpCode.PUSH_STRING,\n\tOpCode.PUSH_BOOLEAN,\n\t// Its operand is a string-pool index holding the exact decimal text, so a\n\t// scanner must step over one byte exactly as it does for PUSH_STRING.\n\tOpCode.PUSH_DECIMAL,\n\tOpCode.LOAD_VAR,\n\tOpCode.STORE_VAR,\n\tOpCode.LOAD_GLOBAL_VAR,\n\tOpCode.STORE_GLOBAL_VAR,\n\tOpCode.DEFINE_USER_FUNCTION,\n\tOpCode.BIND_UNKNOWN,\n\t// Its operand is a constant-pool index, like PUSH_NUMBER's: the epoch-ms\n\t// was resolved at parse time and stored in `numbers`. Omitting it made\n\t// every scanner read that index byte as an opcode, so an ordinary date\n\t// literal desynchronised the whole preflight walk.\n\tOpCode.DATE_LITERAL,\n\t// One byte, the offset direction (0 forward, 1 backward) for \"N working\n\t// days after/before/from <date>\". See WorkdayOffsetParselet. DATE_WORKDAYS_BETWEEN\n\t// takes no operand and so is not listed here.\n\tOpCode.DATE_WORKDAY_OFFSET,\n];\n\n/**\n * Opcodes taking two operand bytes.\n *\n * A callable index plus an argument count, or a matrix's row and column counts.\n */\nconst TWO_OPERANDS: readonly OpCode[] = [\n\tOpCode.CALL_PLUGIN,\n\tOpCode.CALL_BUILTIN,\n\tOpCode.CALL_USER_FUNCTION,\n\tOpCode.MAT_NEW,\n];\n\n/**\n * Opcodes taking three operand bytes.\n *\n * The map and reduce invocations, which carry a body index alongside their\n * other operands.\n */\nconst THREE_OPERANDS: readonly OpCode[] = [OpCode.MAP_INVOKE, OpCode.REDUCE_INVOKE];\n\n/**\n * Operand byte count for every opcode, indexed by opcode value.\n *\n * A dense array rather than a map, because the preflight scanners run on every\n * keystroke and this is read once per instruction.\n */\nexport const OPERAND_BYTES: readonly number[] = (() => {\n\tconst widths = new Array<number>(256).fill(0);\n\tfor (const op of ONE_OPERAND) widths[op] = 1;\n\tfor (const op of TWO_OPERANDS) widths[op] = 2;\n\tfor (const op of THREE_OPERANDS) widths[op] = 3;\n\treturn widths;\n})();\n\n/**\n * Every opcode that takes at least one operand.\n *\n * Exported so a test can assert the table stays complete as opcodes are added.\n */\nexport const OPCODES_WITH_OPERANDS: readonly OpCode[] = [\n\t...ONE_OPERAND,\n\t...TWO_OPERANDS,\n\t...THREE_OPERANDS,\n];\n\n/**\n * Offset of the instruction after the one at `index`.\n *\n * @param opcodes - The bytecode stream.\n * @param index - Offset of an opcode, not of an operand byte. Passing an\n * operand offset yields nonsense, which is the failure mode this exists to\n * prevent: a caller stepping by hand and getting one width wrong reads the rest\n * of the stream misaligned.\n * @returns Offset of the next opcode. May be past the end when the instruction\n * at `index` is the last one, so callers loop while it is under `opcodes.length`.\n */\nexport function nextInstruction(opcodes: Uint8Array, index: number): number {\n\treturn index + 1 + (OPERAND_BYTES[opcodes[index]] ?? 0);\n}\n","/**\n * Currency async resolver, bridges CurrencyExchangeService to the\n * IAsyncResolver interface for the Suspense architecture.\n *\n * Uses TanStack Query (injected via queryClient) as the single cache layer.\n */\nimport type { QueryClient } from \"@tanstack/query-core\";\nimport type { Token } from \"@solve-js/lexer\";\nimport type { BytecodeProgram } from \"@solve-js/parser/BytecodeBuilder\";\nimport { OpCode } from \"@solve-js/parser/OpCode\";\nimport { numberValue } from \"@solve-js/vm/Value\";\nimport {\n\tcurrencyExchangeService,\n\tCurrencyExchangeService,\n} from \"@solve-js/uom/CurrencyExchange\";\nimport type { IAsyncResolver, AsyncCheckResult } from \"@solve-js/resolvers/ResolverRegistry\";\nimport { nextInstruction } from \"@solve-js/parser/OperandWidth\";\n\nconst CURRENCY_NS = \"currency\";\n\n/**\n * Fetches exchange rates before the VM runs, so a conversion has real numbers.\n *\n * Until rates arrive the line evaluates to a pending value rather than a\n * guessed one, and re-evaluates when they land.\n */\nexport class CurrencyAsyncResolver implements IAsyncResolver {\n\treadonly namespace = CURRENCY_NS;\n\n\tprivate exchange: CurrencyExchangeService;\n\n\tconstructor(exchange?: CurrencyExchangeService) {\n\t\tthis.exchange = exchange ?? currencyExchangeService;\n\t}\n\n\tpreflight(_tokens: Token[], bytecode: BytecodeProgram, packageId: string, signal: AbortSignal, queryClient: QueryClient): AsyncCheckResult | null {\n\t\tconst { opcodes, strings } = bytecode;\n\t\tconst len = opcodes.length;\n\t\tlet i = 0;\n\n\t\tlet lastStrIdx = -1;\n\t\tlet prevStrIdx = -1;\n\n\t\twhile (i < len) {\n\t\t\tconst op = opcodes[i] as OpCode;\n\n\t\t\tif (op === OpCode.PUSH_STRING) {\n\t\t\t\tprevStrIdx = lastStrIdx;\n\t\t\t\tlastStrIdx = opcodes[i + 1];\n\t\t\t}\n\n\t\t\t// Explicit \"X to Y\"/\"X in Y\" conversions (UOM_CONVERT_IN/_TO) are\n\t\t\t// the obvious case, but arithmetic directly on two differently-\n\t\t\t// denominated currency literals, \"0.01 BTC + 1 ETH\", needs the\n\t\t\t// exact same preflight fetch and previously never got it: this\n\t\t\t// scanner only looked for the CONVERT opcodes, so ADD/SUB/MUL/DIV\n\t\t\t// between two currency UOMs skipped preflight entirely, ran with\n\t\t\t// no cached rate, and fell through to the VM's silent-wrong-math\n\t\t\t// fallback instead of ever reaching a network fetch.\n\t\t\tconst isCurrencyCombiningOp =\n\t\t\t\top === OpCode.UOM_CONVERT_IN || op === OpCode.UOM_CONVERT_TO ||\n\t\t\t\top === OpCode.ADD || op === OpCode.SUB || op === OpCode.MUL || op === OpCode.DIV;\n\t\t\tif (isCurrencyCombiningOp) {\n\t\t\t\tif (prevStrIdx >= 0 && lastStrIdx >= 0) {\n\t\t\t\t\tconst fromUnit = strings[prevStrIdx];\n\t\t\t\t\tconst toUnit = strings[lastStrIdx];\n\n\t\t\t\t\tif (\n\t\t\t\t\t\tthis.exchange.isCurrency(fromUnit) &&\n\t\t\t\t\t\tthis.exchange.isCurrency(toUnit) &&\n\t\t\t\t\t\tfromUnit.toUpperCase() !== toUnit.toUpperCase()\n\t\t\t\t\t) {\n\t\t\t\t\t\tconst syncRate = this.exchange.getRateSync(fromUnit, toUnit);\n\t\t\t\t\t\tif (syncRate === null) {\n\t\t\t\t\t\t\tconst fromUpper = fromUnit.toUpperCase();\n\t\t\t\t\t\t\tconst toUpper = toUnit.toUpperCase();\n\n\t\t\t\t\t\t\t// Check TanStack Query cache\n\t\t\t\t\t\t\tconst cacheKey = [CURRENCY_NS, fromUpper, toUpper];\n\t\t\t\t\t\t\tif (queryClient.getQueryData(cacheKey) !== undefined) {\n\t\t\t\t\t\t\t\ti++;\n\t\t\t\t\t\t\t\tcontinue;\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t// Fetch via TanStack Query (dedup + retry automatic)\n\t\t\t\t\t\t\tconst resolver = queryClient.fetchQuery({\n\t\t\t\t\t\t\t\tqueryKey: cacheKey,\n\t\t\t\t\t\t\t\tqueryFn: ({ signal: qSignal }) => {\n\t\t\t\t\t\t\t\t\treturn this.exchange.getRate(fromUnit, toUnit, qSignal).then((rate) => numberValue(rate));\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\tstaleTime: 5 * 60 * 1000,\n\t\t\t\t\t\t\t});\n\n\t\t\t\t\t\t\treturn { queryKey: cacheKey.join(\":\"), resolver, packageId, signal, metadata: { fromUnit, toUnit } };\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t// Step over this instruction and its operands. Shared table, because\n\t\t\t// three hand-copied versions of this had already drifted.\n\t\t\ti = nextInstruction(opcodes, i);\n\t\t}\n\n\t\treturn null;\n\t}\n\n\tdestroy(): void {\n\t\t// Cache cleared by ResolverRegistry.unregister() via removeQueries({ queryKey: [\"currency\"] })\n\t}\n}\n"]}