@atmaticai/agent-tools 1.0.2 → 1.1.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 (167) hide show
  1. package/dist/a2a/index.d.mts +169 -0
  2. package/dist/a2a/index.d.ts +169 -0
  3. package/dist/a2a/index.js +6012 -0
  4. package/dist/a2a/index.js.map +1 -0
  5. package/dist/a2a/index.mjs +5934 -0
  6. package/dist/a2a/index.mjs.map +1 -0
  7. package/dist/archive/index.d.mts +1 -0
  8. package/dist/archive/index.d.ts +1 -0
  9. package/dist/archive/index.js +90 -0
  10. package/dist/archive/index.js.map +1 -0
  11. package/dist/archive/index.mjs +80 -0
  12. package/dist/archive/index.mjs.map +1 -0
  13. package/dist/cli.js +4441 -164
  14. package/dist/cli.js.map +1 -1
  15. package/dist/cli.mjs +4408 -161
  16. package/dist/cli.mjs.map +1 -1
  17. package/dist/color/index.d.mts +1 -0
  18. package/dist/color/index.d.ts +1 -0
  19. package/dist/color/index.js +347 -0
  20. package/dist/color/index.js.map +1 -0
  21. package/dist/color/index.mjs +336 -0
  22. package/dist/color/index.mjs.map +1 -0
  23. package/dist/crypto/index.d.mts +1 -0
  24. package/dist/crypto/index.d.ts +1 -0
  25. package/dist/crypto/index.js +116 -0
  26. package/dist/crypto/index.js.map +1 -0
  27. package/dist/crypto/index.mjs +108 -0
  28. package/dist/crypto/index.mjs.map +1 -0
  29. package/dist/csv/index.d.mts +1 -0
  30. package/dist/csv/index.d.ts +1 -0
  31. package/dist/csv/index.js +371 -0
  32. package/dist/csv/index.js.map +1 -0
  33. package/dist/csv/index.mjs +348 -0
  34. package/dist/csv/index.mjs.map +1 -0
  35. package/dist/datetime/index.d.mts +1 -0
  36. package/dist/datetime/index.d.ts +1 -0
  37. package/dist/datetime/index.js +234 -0
  38. package/dist/datetime/index.js.map +1 -0
  39. package/dist/datetime/index.mjs +224 -0
  40. package/dist/datetime/index.mjs.map +1 -0
  41. package/dist/diff/index.d.mts +2 -0
  42. package/dist/diff/index.d.ts +2 -0
  43. package/dist/diff/index.js +84 -0
  44. package/dist/diff/index.js.map +1 -0
  45. package/dist/diff/index.mjs +78 -0
  46. package/dist/diff/index.mjs.map +1 -0
  47. package/dist/excel/index.d.mts +1 -0
  48. package/dist/excel/index.d.ts +1 -0
  49. package/dist/excel/index.js +163 -0
  50. package/dist/excel/index.js.map +1 -0
  51. package/dist/excel/index.mjs +153 -0
  52. package/dist/excel/index.mjs.map +1 -0
  53. package/dist/image/index.d.mts +1 -0
  54. package/dist/image/index.d.ts +1 -0
  55. package/dist/image/index.js +123 -0
  56. package/dist/image/index.js.map +1 -0
  57. package/dist/image/index.mjs +107 -0
  58. package/dist/image/index.mjs.map +1 -0
  59. package/dist/index--vbnYfdE.d.mts +142 -0
  60. package/dist/index--vbnYfdE.d.ts +142 -0
  61. package/dist/index-7FZQloN-.d.mts +62 -0
  62. package/dist/index-7FZQloN-.d.ts +62 -0
  63. package/dist/index-7XgaTVH5.d.mts +93 -0
  64. package/dist/index-7XgaTVH5.d.ts +93 -0
  65. package/dist/index-7bvFmh45.d.mts +87 -0
  66. package/dist/index-7bvFmh45.d.ts +87 -0
  67. package/dist/index-BDZcIVCU.d.mts +53 -0
  68. package/dist/index-BDZcIVCU.d.ts +53 -0
  69. package/dist/index-BKeYao0B.d.mts +320 -0
  70. package/dist/index-BKeYao0B.d.ts +320 -0
  71. package/dist/index-BN00EnUU.d.mts +55 -0
  72. package/dist/index-BN00EnUU.d.ts +55 -0
  73. package/dist/index-BZDcrPs-.d.mts +316 -0
  74. package/dist/index-BZDcrPs-.d.ts +316 -0
  75. package/dist/index-CQ1EukC4.d.mts +59 -0
  76. package/dist/index-CQ1EukC4.d.ts +59 -0
  77. package/dist/index-CgRVnFOt.d.mts +91 -0
  78. package/dist/index-CgRVnFOt.d.ts +91 -0
  79. package/dist/index-Dh47fgVS.d.mts +216 -0
  80. package/dist/index-Dh47fgVS.d.ts +216 -0
  81. package/dist/index-DjBDZzuj.d.mts +54 -0
  82. package/dist/index-DjBDZzuj.d.ts +54 -0
  83. package/dist/index-FFrvmr-n.d.mts +50 -0
  84. package/dist/index-FFrvmr-n.d.ts +50 -0
  85. package/dist/index-QWC8yIgW.d.mts +106 -0
  86. package/dist/index-QWC8yIgW.d.ts +106 -0
  87. package/dist/index-fJD8SORm.d.mts +61 -0
  88. package/dist/index-fJD8SORm.d.ts +61 -0
  89. package/dist/index-pPy_XDQU.d.mts +56 -0
  90. package/dist/index-pPy_XDQU.d.ts +56 -0
  91. package/dist/index-rwh9hdD9.d.mts +68 -0
  92. package/dist/index-rwh9hdD9.d.ts +68 -0
  93. package/dist/index-uXdkAfea.d.mts +93 -0
  94. package/dist/index-uXdkAfea.d.ts +93 -0
  95. package/dist/index.d.mts +25 -5
  96. package/dist/index.d.ts +25 -5
  97. package/dist/index.js +5195 -147
  98. package/dist/index.js.map +1 -1
  99. package/dist/index.mjs +5145 -145
  100. package/dist/index.mjs.map +1 -1
  101. package/dist/json/index.d.mts +1 -0
  102. package/dist/json/index.d.ts +1 -0
  103. package/dist/json/index.js +599 -0
  104. package/dist/json/index.js.map +1 -0
  105. package/dist/json/index.mjs +552 -0
  106. package/dist/json/index.mjs.map +1 -0
  107. package/dist/markdown/index.d.mts +1 -0
  108. package/dist/markdown/index.d.ts +1 -0
  109. package/dist/markdown/index.js +151 -0
  110. package/dist/markdown/index.js.map +1 -0
  111. package/dist/markdown/index.mjs +139 -0
  112. package/dist/markdown/index.mjs.map +1 -0
  113. package/dist/math/index.d.mts +1 -0
  114. package/dist/math/index.d.ts +1 -0
  115. package/dist/math/index.js +247 -0
  116. package/dist/math/index.js.map +1 -0
  117. package/dist/math/index.mjs +240 -0
  118. package/dist/math/index.mjs.map +1 -0
  119. package/dist/pdf/index.d.mts +1 -0
  120. package/dist/pdf/index.d.ts +1 -0
  121. package/dist/pdf/index.js +628 -0
  122. package/dist/pdf/index.js.map +1 -0
  123. package/dist/pdf/index.mjs +598 -0
  124. package/dist/pdf/index.mjs.map +1 -0
  125. package/dist/physics/index.d.mts +1 -0
  126. package/dist/physics/index.d.ts +1 -0
  127. package/dist/physics/index.js +467 -0
  128. package/dist/physics/index.js.map +1 -0
  129. package/dist/physics/index.mjs +435 -0
  130. package/dist/physics/index.mjs.map +1 -0
  131. package/dist/regex/index.d.mts +1 -0
  132. package/dist/regex/index.d.ts +1 -0
  133. package/dist/regex/index.js +93 -0
  134. package/dist/regex/index.js.map +1 -0
  135. package/dist/regex/index.mjs +88 -0
  136. package/dist/regex/index.mjs.map +1 -0
  137. package/dist/settings/index.d.mts +41 -0
  138. package/dist/settings/index.d.ts +41 -0
  139. package/dist/settings/index.js +150 -0
  140. package/dist/settings/index.js.map +1 -0
  141. package/dist/settings/index.mjs +143 -0
  142. package/dist/settings/index.mjs.map +1 -0
  143. package/dist/sql/index.d.mts +1 -0
  144. package/dist/sql/index.d.ts +1 -0
  145. package/dist/sql/index.js +146 -0
  146. package/dist/sql/index.js.map +1 -0
  147. package/dist/sql/index.mjs +139 -0
  148. package/dist/sql/index.mjs.map +1 -0
  149. package/dist/structural/index.d.mts +1 -0
  150. package/dist/structural/index.d.ts +1 -0
  151. package/dist/structural/index.js +608 -0
  152. package/dist/structural/index.js.map +1 -0
  153. package/dist/structural/index.mjs +588 -0
  154. package/dist/structural/index.mjs.map +1 -0
  155. package/dist/text/index.d.mts +1 -0
  156. package/dist/text/index.d.ts +1 -0
  157. package/dist/text/index.js +250 -0
  158. package/dist/text/index.js.map +1 -0
  159. package/dist/text/index.mjs +242 -0
  160. package/dist/text/index.mjs.map +1 -0
  161. package/dist/xml/index.d.mts +1 -0
  162. package/dist/xml/index.d.ts +1 -0
  163. package/dist/xml/index.js +188 -0
  164. package/dist/xml/index.js.map +1 -0
  165. package/dist/xml/index.mjs +180 -0
  166. package/dist/xml/index.mjs.map +1 -0
  167. package/package.json +138 -6
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../src/structural/stress.ts","../../src/structural/beams.ts","../../src/structural/columns.ts","../../src/structural/sections.ts","../../src/structural/soils.ts","../../src/structural/materials.ts"],"names":[],"mappings":";AAYO,SAAS,YAAA,CAAa,OAAe,IAAA,EAAkC;AAC5E,EAAA,IAAI,IAAA,IAAQ,CAAA,EAAG,MAAM,IAAI,MAAM,uBAAuB,CAAA;AACtD,EAAA,MAAM,SAAS,KAAA,GAAQ,IAAA;AACvB,EAAA,OAAO,EAAE,KAAA,EAAO,IAAA,EAAM,MAAA,EAAQ,MAAM,IAAA,EAAK;AAC3C;AAKO,SAAS,WAAA,CAAY,OAAe,IAAA,EAAiC;AAC1E,EAAA,IAAI,IAAA,IAAQ,CAAA,EAAG,MAAM,IAAI,MAAM,uBAAuB,CAAA;AACtD,EAAA,MAAM,SAAS,KAAA,GAAQ,IAAA;AACvB,EAAA,OAAO,EAAE,KAAA,EAAO,IAAA,EAAM,MAAA,EAAQ,MAAM,IAAA,EAAK;AAC3C;AAKO,SAAS,MAAA,CAAO,aAAqB,cAAA,EAAsC;AAChF,EAAA,IAAI,cAAA,IAAkB,CAAA,EAAG,MAAM,IAAI,MAAM,kCAAkC,CAAA;AAC3E,EAAA,MAAM,IAAI,WAAA,GAAc,cAAA;AACxB,EAAA,OAAO,EAAE,WAAA,EAAa,cAAA,EAAgB,MAAA,EAAQ,CAAA,EAAG,MAAM,eAAA,EAAgB;AACzE;AAKO,SAAS,aAAA,CAAc,QAAgB,SAAA,EAAwC;AACpF,EAAA,IAAI,SAAA,KAAc,CAAA,EAAG,MAAM,IAAI,MAAM,yBAAyB,CAAA;AAC9D,EAAA,MAAM,IAAI,MAAA,GAAS,SAAA;AACnB,EAAA,OAAO,EAAE,MAAA,EAAQ,MAAA,EAAQ,WAAW,aAAA,EAAe,CAAA,EAAG,MAAM,IAAA,EAAK;AACnE;AAKO,SAAS,cAAA,CAAe,gBAAwB,aAAA,EAA6C;AAClG,EAAA,IAAI,aAAA,KAAkB,CAAA,EAAG,MAAM,IAAI,MAAM,iCAAiC,CAAA;AAC1E,EAAA,IAAI,cAAA,GAAiB,CAAA,EAAG,MAAM,IAAI,MAAM,sCAAsC,CAAA;AAC9E,EAAA,IAAI,aAAA,GAAgB,CAAA,EAAG,MAAM,IAAI,MAAM,iCAAiC,CAAA;AACxE,EAAA,MAAM,MAAM,cAAA,GAAiB,aAAA;AAC7B,EAAA,OAAO,EAAE,cAAA,EAAgB,aAAA,EAAe,cAAA,EAAgB,GAAA,EAAI;AAC9D;AAOO,SAAS,UAAA,CAAW,QAAA,EAAkB,MAAA,EAAgB,SAAA,EAAqC;AAChG,EAAA,IAAI,QAAA,GAAW,CAAA,EAAG,MAAM,IAAI,MAAM,+BAA+B,CAAA;AACjE,EAAA,IAAI,MAAA,IAAU,CAAA,EAAG,MAAM,IAAI,MAAM,yBAAyB,CAAA;AAC1D,EAAA,IAAI,SAAA,IAAa,CAAA,EAAG,MAAM,IAAI,MAAM,4BAA4B,CAAA;AAChE,EAAA,MAAM,IAAA,GAAQ,WAAW,MAAA,GAAU,SAAA;AACnC,EAAA,MAAM,YAAA,GAAgB,QAAA,GAAW,MAAA,IAAW,CAAA,GAAI,SAAA,CAAA;AAChD,EAAA,OAAO,EAAE,UAAU,MAAA,EAAQ,SAAA,EAAW,YAAY,IAAA,EAAM,kBAAA,EAAoB,YAAA,EAAc,IAAA,EAAM,IAAA,EAAK;AACvG;;;AC9DO,SAAS,gBACd,MAAA,EACA,IAAA,EACA,QAAA,EACA,CAAA,EACA,GACA,YAAA,EACY;AACZ,EAAA,IAAI,MAAA,IAAU,CAAA,EAAG,MAAM,IAAI,MAAM,yBAAyB,CAAA;AAC1D,EAAA,IAAI,IAAA,GAAO,CAAA,EAAG,MAAM,IAAI,MAAM,2BAA2B,CAAA;AAEzD,EAAA,IAAI,YAAA;AACJ,EAAA,IAAI,aAAA;AACJ,EAAA,IAAI,SAAA;AACJ,EAAA,IAAI,QAAA;AACJ,EAAA,IAAI,aAAA,GAA+B,IAAA;AAEnC,EAAA,MAAM,CAAA,GAAI,MAAA;AACV,EAAA,MAAM,CAAA,GAAI,IAAA;AAEV,EAAA,QAAQ,QAAA;AAAU,IAChB,KAAK,cAAA,EAAgB;AACnB,MAAA,YAAA,GAAe,CAAA,GAAI,CAAA;AACnB,MAAA,aAAA,GAAgB,CAAA,GAAI,CAAA;AACpB,MAAA,SAAA,GAAa,IAAI,CAAA,GAAK,CAAA;AACtB,MAAA,QAAA,GAAW,CAAA,GAAI,CAAA;AACf,MAAA,IAAI,KAAK,CAAA,EAAG;AACV,QAAA,aAAA,GAAiB,CAAA,GAAI,CAAA,GAAI,CAAA,GAAI,CAAA,IAAM,KAAK,CAAA,GAAI,CAAA,CAAA;AAAA,MAC9C;AACA,MAAA;AAAA,IACF;AAAA,IACA,KAAK,cAAA,EAAgB;AACnB,MAAA,MAAM,CAAA,GAAI,gBAAgB,CAAA,GAAI,CAAA;AAC9B,MAAA,IAAI,IAAI,CAAA,IAAK,CAAA,GAAI,GAAG,MAAM,IAAI,MAAM,4CAA4C,CAAA;AAChF,MAAA,MAAM,IAAI,CAAA,GAAI,CAAA;AACd,MAAA,YAAA,GAAgB,IAAI,CAAA,GAAK,CAAA;AACzB,MAAA,aAAA,GAAiB,IAAI,CAAA,GAAK,CAAA;AAC1B,MAAA,SAAA,GAAa,CAAA,GAAI,IAAI,CAAA,GAAK,CAAA;AAC1B,MAAA,QAAA,GAAW,IAAA,CAAK,GAAA,CAAI,YAAA,EAAc,aAAa,CAAA;AAC/C,MAAA,IAAI,KAAK,CAAA,EAAG;AAEV,QAAA,aAAA,GAAiB,IAAI,CAAA,GAAI,CAAA,IAAK,CAAA,GAAI,CAAA,GAAI,KAAK,IAAA,CAAK,IAAA,CAAK,CAAA,GAAI,CAAA,IAAK,IAAI,CAAA,GAAI,CAAA,CAAE,CAAA,IAAM,EAAA,GAAK,IAAI,CAAA,GAAI,CAAA,CAAA;AAAA,MAC7F;AACA,MAAA;AAAA,IACF;AAAA,IACA,KAAK,SAAA,EAAW;AAEd,MAAA,MAAM,IAAI,CAAA,GAAI,CAAA;AACd,MAAA,YAAA,GAAe,CAAA,GAAI,CAAA;AACnB,MAAA,aAAA,GAAgB,CAAA,GAAI,CAAA;AACpB,MAAA,SAAA,GAAa,CAAA,GAAI,IAAI,CAAA,GAAK,CAAA;AAC1B,MAAA,QAAA,GAAW,CAAA,GAAI,CAAA;AACf,MAAA,IAAI,KAAK,CAAA,EAAG;AACV,QAAA,aAAA,GAAiB,IAAI,CAAA,GAAI,CAAA,GAAI,IAAI,CAAA,GAAI,CAAA,IAAM,MAAM,CAAA,GAAI,CAAA,CAAA;AAAA,MACvD;AACA,MAAA;AAAA,IACF;AAAA,IACA,KAAK,YAAA,EAAc;AAEjB,MAAA,MAAM,IAAA,GAAQ,IAAI,CAAA,GAAK,CAAA;AACvB,MAAA,YAAA,GAAe,CAAA,GAAI,CAAA;AACnB,MAAA,aAAA,GAAiB,IAAI,CAAA,GAAK,CAAA;AAE1B,MAAA,MAAM,IAAA,GAAO,CAAA,GAAI,IAAA,CAAK,IAAA,CAAK,CAAC,CAAA;AAC5B,MAAA,SAAA,GAAa,IAAA,GAAO,IAAA,GAAO,IAAA,GAAO,IAAA,IAAS,CAAA,GAAI,CAAA,CAAA,GAAK,YAAA,GAAe,IAAA,GAAQ,IAAA,GAAO,IAAA,GAAO,IAAA,IAAS,CAAA,GAAI,CAAA,CAAA;AAEtG,MAAA,SAAA,GAAa,OAAO,CAAA,GAAI,CAAA,IAAM,CAAA,GAAI,IAAA,CAAK,KAAK,CAAC,CAAA,CAAA;AAC7C,MAAA,QAAA,GAAY,IAAI,CAAA,GAAK,CAAA;AACrB,MAAA,IAAI,KAAK,CAAA,EAAG;AACV,QAAA,aAAA,GAAiB,CAAA,GAAI,CAAA,GAAI,CAAA,GAAI,CAAA,IAAM,KAAK,CAAA,GAAI,CAAA,CAAA;AAAA,MAC9C;AACA,MAAA;AAAA,IACF;AAAA,IACA;AACE,MAAA,MAAM,IAAI,KAAA,CAAM,CAAA,mBAAA,EAAsB,QAAQ,CAAA,sDAAA,CAAwD,CAAA;AAAA;AAG1G,EAAA,OAAO;AAAA,IACL,MAAA;AAAA,IACA,IAAA;AAAA,IACA,QAAA;AAAA,IACA,YAAA;AAAA,IACA,aAAA;AAAA,IACA,SAAA;AAAA,IACA,QAAA;AAAA,IACA,aAAA;AAAA,IACA,UAAA,EAAY,QAAA;AAAA,IACZ,SAAA,EAAW,GAAA;AAAA,IACX,cAAA,EAAgB,aAAA,KAAkB,IAAA,GAAO,GAAA,GAAM;AAAA,GACjD;AACF;AAMO,SAAS,WACd,MAAA,EACA,IAAA,EACA,QAAA,EACA,CAAA,EACA,GACA,YAAA,EACkB;AAClB,EAAA,IAAI,MAAA,IAAU,CAAA,EAAG,MAAM,IAAI,MAAM,yBAAyB,CAAA;AAC1D,EAAA,IAAI,IAAA,GAAO,CAAA,EAAG,MAAM,IAAI,MAAM,2BAA2B,CAAA;AAEzD,EAAA,IAAI,aAAA;AACJ,EAAA,IAAI,cAAA;AACJ,EAAA,IAAI,SAAA;AACJ,EAAA,IAAI,QAAA;AACJ,EAAA,IAAI,aAAA,GAA+B,IAAA;AAEnC,EAAA,MAAM,CAAA,GAAI,MAAA;AACV,EAAA,MAAM,CAAA,GAAI,IAAA;AAEV,EAAA,QAAQ,QAAA;AAAU,IAChB,KAAK,WAAA,EAAa;AAChB,MAAA,aAAA,GAAgB,CAAA;AAChB,MAAA,cAAA,GAAiB,CAAA,GAAI,CAAA;AACrB,MAAA,SAAA,GAAY,CAAA,GAAI,CAAA;AAChB,MAAA,QAAA,GAAW,CAAA;AACX,MAAA,IAAI,KAAK,CAAA,EAAG;AACV,QAAA,aAAA,GAAiB,CAAA,GAAI,CAAA,GAAI,CAAA,GAAI,CAAA,IAAM,IAAI,CAAA,GAAI,CAAA,CAAA;AAAA,MAC7C;AACA,MAAA;AAAA,IACF;AAAA,IACA,KAAK,cAAA,EAAgB;AACnB,MAAA,MAAM,IAAI,YAAA,IAAgB,CAAA;AAC1B,MAAA,IAAI,IAAI,CAAA,IAAK,CAAA,GAAI,GAAG,MAAM,IAAI,MAAM,4CAA4C,CAAA;AAChF,MAAA,aAAA,GAAgB,CAAA;AAChB,MAAA,cAAA,GAAiB,CAAA,GAAI,CAAA;AACrB,MAAA,SAAA,GAAY,CAAA,GAAI,CAAA;AAChB,MAAA,QAAA,GAAW,CAAA;AACX,MAAA,IAAI,KAAK,CAAA,EAAG;AACV,QAAA,aAAA,GAAiB,IAAI,CAAA,GAAI,CAAA,IAAK,IAAI,CAAA,GAAI,CAAA,CAAA,IAAO,IAAI,CAAA,GAAI,CAAA,CAAA;AAAA,MACvD;AACA,MAAA;AAAA,IACF;AAAA,IACA,KAAK,SAAA,EAAW;AACd,MAAA,MAAM,IAAI,CAAA,GAAI,CAAA;AACd,MAAA,aAAA,GAAgB,CAAA;AAChB,MAAA,cAAA,GAAkB,CAAA,GAAI,IAAI,CAAA,GAAK,CAAA;AAC/B,MAAA,SAAA,GAAa,CAAA,GAAI,IAAI,CAAA,GAAK,CAAA;AAC1B,MAAA,QAAA,GAAW,CAAA;AACX,MAAA,IAAI,KAAK,CAAA,EAAG;AACV,QAAA,aAAA,GAAiB,IAAI,CAAA,GAAI,CAAA,GAAI,CAAA,GAAI,CAAA,IAAM,IAAI,CAAA,GAAI,CAAA,CAAA;AAAA,MACjD;AACA,MAAA;AAAA,IACF;AAAA,IACA;AACE,MAAA,MAAM,IAAI,KAAA,CAAM,CAAA,mBAAA,EAAsB,QAAQ,CAAA,uCAAA,CAAyC,CAAA;AAAA;AAG3F,EAAA,OAAO;AAAA,IACL,MAAA;AAAA,IACA,IAAA;AAAA,IACA,QAAA;AAAA,IACA,aAAA;AAAA,IACA,cAAA;AAAA,IACA,SAAA;AAAA,IACA,QAAA;AAAA,IACA,aAAA;AAAA,IACA,UAAA,EAAY,QAAA;AAAA,IACZ,SAAA,EAAW,GAAA;AAAA,IACX,cAAA,EAAgB,aAAA,KAAkB,IAAA,GAAO,GAAA,GAAM;AAAA,GACjD;AACF;;;AC3KA,IAAM,SAAA,GAA0C;AAAA,EAC9C,eAAA,EAAiB,CAAA;AAAA,EACjB,YAAA,EAAc,CAAA;AAAA,EACd,cAAA,EAAgB,GAAA;AAAA,EAChB,aAAA,EAAe;AACjB,CAAA;AAMO,SAAS,aAAA,CACd,CAAA,EACA,CAAA,EACA,MAAA,EACA,YAAA,EACqB;AACrB,EAAA,IAAI,CAAA,IAAK,CAAA,EAAG,MAAM,IAAI,MAAM,kCAAkC,CAAA;AAC9D,EAAA,IAAI,CAAA,IAAK,CAAA,EAAG,MAAM,IAAI,MAAM,oCAAoC,CAAA;AAChE,EAAA,IAAI,MAAA,IAAU,CAAA,EAAG,MAAM,IAAI,MAAM,yBAAyB,CAAA;AAE1D,EAAA,MAAM,CAAA,GAAI,UAAU,YAAY,CAAA;AAChC,EAAA,IAAI,MAAM,MAAA,EAAW;AACnB,IAAA,MAAM,IAAI,KAAA,CAAM,CAAA,uBAAA,EAA0B,YAAY,CAAA,2DAAA,CAA6D,CAAA;AAAA,EACrH;AAEA,EAAA,MAAM,KAAK,CAAA,GAAI,MAAA;AACf,EAAA,MAAM,MAAO,IAAA,CAAK,EAAA,GAAK,KAAK,EAAA,GAAK,CAAA,GAAI,KAAM,EAAA,GAAK,EAAA,CAAA;AAEhD,EAAA,OAAO;AAAA,IACL,cAAA,EAAgB,CAAA;AAAA,IAChB,eAAA,EAAiB,CAAA;AAAA,IACjB,MAAA;AAAA,IACA,YAAA;AAAA,IACA,qBAAA,EAAuB,CAAA;AAAA,IACvB,eAAA,EAAiB,EAAA;AAAA,IACjB,YAAA,EAAc,GAAA;AAAA,IACd,IAAA,EAAM;AAAA,GACR;AACF;AAMO,SAAS,gBAAA,CACd,iBACA,gBAAA,EACwB;AACxB,EAAA,IAAI,eAAA,IAAmB,CAAA,EAAG,MAAM,IAAI,MAAM,mCAAmC,CAAA;AAC7E,EAAA,IAAI,gBAAA,IAAoB,CAAA,EAAG,MAAM,IAAI,MAAM,qCAAqC,CAAA;AAEhF,EAAA,MAAM,QAAQ,eAAA,GAAkB,gBAAA;AAEhC,EAAA,IAAI,cAAA;AACJ,EAAA,IAAI,QAAQ,EAAA,EAAI;AACd,IAAA,cAAA,GAAiB,OAAA;AAAA,EACnB,CAAA,MAAA,IAAW,SAAS,GAAA,EAAK;AACvB,IAAA,cAAA,GAAiB,cAAA;AAAA,EACnB,CAAA,MAAO;AACL,IAAA,cAAA,GAAiB,MAAA;AAAA,EACnB;AAEA,EAAA,OAAO;AAAA,IACL,eAAA;AAAA,IACA,gBAAA;AAAA,IACA,gBAAA,EAAkB,KAAA;AAAA,IAClB;AAAA,GACF;AACF;;;AC5DO,SAAS,gBAAA,CAAiB,OAAe,MAAA,EAAwC;AACtF,EAAA,IAAI,KAAA,IAAS,CAAA,EAAG,MAAM,IAAI,MAAM,wBAAwB,CAAA;AACxD,EAAA,IAAI,MAAA,IAAU,CAAA,EAAG,MAAM,IAAI,MAAM,yBAAyB,CAAA;AAE1D,EAAA,MAAM,OAAO,KAAA,GAAQ,MAAA;AACrB,EAAA,MAAM,GAAA,GAAO,KAAA,GAAQ,MAAA,GAAS,MAAA,GAAS,MAAA,GAAU,EAAA;AACjD,EAAA,MAAM,GAAA,GAAO,MAAA,GAAS,KAAA,GAAQ,KAAA,GAAQ,KAAA,GAAS,EAAA;AAC/C,EAAA,MAAM,EAAA,GAAM,KAAA,GAAQ,MAAA,GAAS,MAAA,GAAU,CAAA;AACvC,EAAA,MAAM,EAAA,GAAM,MAAA,GAAS,KAAA,GAAQ,KAAA,GAAS,CAAA;AACtC,EAAA,MAAM,EAAA,GAAK,MAAA,GAAS,IAAA,CAAK,IAAA,CAAK,EAAE,CAAA;AAChC,EAAA,MAAM,EAAA,GAAK,KAAA,GAAQ,IAAA,CAAK,IAAA,CAAK,EAAE,CAAA;AAE/B,EAAA,OAAO,EAAE,OAAO,MAAA,EAAQ,IAAA,EAAM,KAAK,GAAA,EAAK,EAAA,EAAI,EAAA,EAAI,EAAA,EAAI,EAAA,EAAG;AACzD;AAMO,SAAS,gBAAgB,QAAA,EAAyC;AACvE,EAAA,IAAI,QAAA,IAAY,CAAA,EAAG,MAAM,IAAI,MAAM,2BAA2B,CAAA;AAE9D,EAAA,MAAM,KAAK,QAAA,GAAW,CAAA;AACtB,EAAA,MAAM,IAAA,GAAO,IAAA,CAAK,EAAA,GAAK,EAAA,GAAK,EAAA;AAC5B,EAAA,MAAM,IAAK,IAAA,CAAK,EAAA,GAAK,QAAA,GAAW,QAAA,GAAW,WAAW,QAAA,GAAY,EAAA;AAClE,EAAA,MAAM,CAAA,GAAK,IAAA,CAAK,EAAA,GAAK,QAAA,GAAW,WAAW,QAAA,GAAY,EAAA;AACvD,EAAA,MAAM,IAAI,QAAA,GAAW,CAAA;AAErB,EAAA,OAAO,EAAE,QAAA,EAAU,IAAA,EAAM,CAAA,EAAG,GAAG,CAAA,EAAE;AACnC;AAMO,SAAS,qBAAA,CAAsB,eAAuB,aAAA,EAAoD;AAC/G,EAAA,IAAI,aAAA,IAAiB,CAAA,EAAG,MAAM,IAAI,MAAM,iCAAiC,CAAA;AACzE,EAAA,IAAI,aAAA,GAAgB,CAAA,EAAG,MAAM,IAAI,MAAM,qCAAqC,CAAA;AAC5E,EAAA,IAAI,aAAA,IAAiB,aAAA,EAAe,MAAM,IAAI,MAAM,iDAAiD,CAAA;AAErG,EAAA,MAAM,CAAA,GAAI,aAAA;AACV,EAAA,MAAM,CAAA,GAAI,aAAA;AACV,EAAA,MAAM,OAAQ,IAAA,CAAK,EAAA,GAAK,CAAA,IAAM,CAAA,GAAI,IAAI,CAAA,GAAI,CAAA,CAAA;AAC1C,EAAA,MAAM,CAAA,GAAK,IAAA,CAAK,EAAA,GAAK,EAAA,IAAO,CAAA,GAAI,IAAI,CAAA,GAAI,CAAA,GAAI,CAAA,GAAI,CAAA,GAAI,CAAA,GAAI,CAAA,CAAA;AACxD,EAAA,MAAM,CAAA,GAAK,IAAA,CAAK,EAAA,IAAM,EAAA,GAAK,CAAA,CAAA,IAAO,CAAA,GAAI,CAAA,GAAI,CAAA,GAAI,CAAA,GAAI,CAAA,GAAI,CAAA,GAAI,CAAA,GAAI,CAAA,CAAA;AAC9D,EAAA,MAAM,CAAA,GAAI,IAAA,CAAK,IAAA,CAAK,CAAA,GAAI,IAAI,CAAA;AAE5B,EAAA,OAAO,EAAE,aAAA,EAAe,aAAA,EAAe,IAAA,EAAM,CAAA,EAAG,GAAG,CAAA,EAAE;AACvD;AAMO,SAAS,YAAA,CACd,WAAA,EACA,eAAA,EACA,SAAA,EACA,YAAA,EACoB;AACpB,EAAA,IAAI,WAAA,IAAe,CAAA,EAAG,MAAM,IAAI,MAAM,+BAA+B,CAAA;AACrE,EAAA,IAAI,eAAA,IAAmB,CAAA,EAAG,MAAM,IAAI,MAAM,mCAAmC,CAAA;AAC7E,EAAA,IAAI,SAAA,IAAa,CAAA,EAAG,MAAM,IAAI,MAAM,6BAA6B,CAAA;AACjE,EAAA,IAAI,YAAA,IAAgB,CAAA,EAAG,MAAM,IAAI,MAAM,gCAAgC,CAAA;AAEvE,EAAA,MAAM,WAAA,GAAc,YAAY,CAAA,GAAI,eAAA;AAGpC,EAAA,MAAM,aAAa,WAAA,GAAc,eAAA;AACjC,EAAA,MAAM,UAAU,SAAA,GAAY,YAAA;AAC5B,EAAA,MAAM,IAAA,GAAO,IAAI,UAAA,GAAa,OAAA;AAI9B,EAAA,MAAM,MAAA,GAAU,YAAA,GAAe,SAAA,GAAY,SAAA,GAAY,SAAA,GAAa,EAAA;AAEpE,EAAA,MAAM,aAAA,GAAiB,WAAA,GAAc,eAAA,GAAkB,eAAA,GAAkB,eAAA,GAAmB,EAAA;AAC5F,EAAA,MAAM,gBAAA,GAAA,CAAoB,YAAY,eAAA,IAAmB,CAAA;AACzD,EAAA,MAAM,iBAAA,GAAoB,aAAa,gBAAA,GAAmB,gBAAA;AAC1D,EAAA,MAAM,GAAA,GAAM,MAAA,GAAS,CAAA,IAAK,aAAA,GAAgB,iBAAA,CAAA;AAG1C,EAAA,MAAM,UAAA,GAAa,CAAA,IAAK,eAAA,GAAkB,WAAA,GAAc,cAAc,WAAA,CAAA,GAAe,EAAA;AACrF,EAAA,MAAM,MAAA,GAAU,SAAA,GAAY,YAAA,GAAe,YAAA,GAAe,YAAA,GAAgB,EAAA;AAC1E,EAAA,MAAM,MAAM,UAAA,GAAa,MAAA;AAGzB,EAAA,MAAM,EAAA,GAAM,IAAI,GAAA,GAAO,WAAA;AACvB,EAAA,MAAM,EAAA,GAAM,IAAI,GAAA,GAAO,WAAA;AAGvB,EAAA,MAAM,EAAA,GAAK,IAAA,CAAK,IAAA,CAAK,GAAA,GAAM,IAAI,CAAA;AAC/B,EAAA,MAAM,EAAA,GAAK,IAAA,CAAK,IAAA,CAAK,GAAA,GAAM,IAAI,CAAA;AAE/B,EAAA,OAAO;AAAA,IACL,WAAA;AAAA,IACA,eAAA;AAAA,IACA,SAAA;AAAA,IACA,YAAA;AAAA,IACA,WAAA;AAAA,IACA,IAAA;AAAA,IACA,GAAA;AAAA,IACA,GAAA;AAAA,IACA,EAAA;AAAA,IACA,EAAA;AAAA,IACA,EAAA;AAAA,IACA;AAAA,GACF;AACF;;;AC1GA,SAAS,uBAAuB,gBAAA,EAAsE;AACpG,EAAA,MAAM,GAAA,GAAO,gBAAA,GAAmB,IAAA,CAAK,EAAA,GAAM,GAAA;AAG3C,EAAA,MAAM,YAAY,IAAA,CAAK,GAAA,CAAI,KAAK,EAAA,GAAK,CAAA,GAAI,MAAM,CAAC,CAAA;AAChD,EAAA,MAAM,EAAA,GAAK,SAAA,GAAY,SAAA,GAAY,IAAA,CAAK,GAAA,CAAI,KAAK,EAAA,GAAK,IAAA,CAAK,GAAA,CAAI,GAAG,CAAC,CAAA;AAGnE,EAAA,IAAI,EAAA;AACJ,EAAA,IAAI,qBAAqB,CAAA,EAAG;AAC1B,IAAA,EAAA,GAAK,IAAA;AAAA,EACP,CAAA,MAAO;AACL,IAAA,EAAA,GAAA,CAAM,EAAA,GAAK,CAAA,IAAK,IAAA,CAAK,GAAA,CAAI,GAAG,CAAA;AAAA,EAC9B;AAGA,EAAA,MAAM,SAAS,CAAA,IAAK,EAAA,GAAK,CAAA,CAAA,GAAK,IAAA,CAAK,IAAI,GAAG,CAAA;AAE1C,EAAA,OAAO,EAAE,EAAA,EAAI,EAAA,EAAI,MAAA,EAAO;AAC1B;AAQO,SAAS,eAAA,CACd,QAAA,EACA,KAAA,EACA,UAAA,EACA,eACA,cAAA,EACuB;AACvB,EAAA,IAAI,QAAA,GAAW,CAAA,EAAG,MAAM,IAAI,MAAM,+BAA+B,CAAA;AACjE,EAAA,IAAI,KAAA,GAAQ,CAAA,EAAG,MAAM,IAAI,MAAM,4BAA4B,CAAA;AAC3D,EAAA,IAAI,UAAA,IAAc,CAAA,EAAG,MAAM,IAAI,MAAM,8BAA8B,CAAA;AACnE,EAAA,IAAI,gBAAgB,CAAA,IAAK,aAAA,GAAgB,IAAI,MAAM,IAAI,MAAM,iDAAiD,CAAA;AAE9G,EAAA,MAAM,EAAE,EAAA,EAAI,EAAA,EAAI,MAAA,EAAO,GAAI,uBAAuB,aAAa,CAAA;AAE/D,EAAA,IAAI,EAAA;AACJ,EAAA,IAAI,MAAA;AACJ,EAAA,QAAQ,cAAA;AAAgB,IACtB,KAAK,OAAA;AACH,MAAA,EAAA,GAAK,CAAA;AACL,MAAA,MAAA,GAAS,CAAA;AACT,MAAA;AAAA,IACF,KAAK,QAAA;AACH,MAAA,EAAA,GAAK,GAAA;AACL,MAAA,MAAA,GAAS,GAAA;AACT,MAAA;AAAA,IACF,KAAK,UAAA;AACH,MAAA,EAAA,GAAK,GAAA;AACL,MAAA,MAAA,GAAS,GAAA;AACT,MAAA;AAAA,IACF;AACE,MAAA,MAAM,IAAI,KAAA,CAAM,CAAA,yBAAA,EAA4B,cAAc,CAAA,8BAAA,CAAgC,CAAA;AAAA;AAK9F,EAAA,MAAM,eAAA,GAAkB,QAAA,GAAW,EAAA,GAAK,EAAA,GAAK,UAAA,GAAa,QAAQ,EAAA,GAAK,GAAA,GAAM,UAAA,GAAa,CAAA,GAAM,MAAA,GAAS,MAAA;AAEzG,EAAA,OAAO;AAAA,IACL,QAAA;AAAA,IACA,KAAA;AAAA,IACA,UAAA;AAAA,IACA,aAAA;AAAA,IACA,cAAA;AAAA,IACA,eAAA;AAAA,IACA,EAAA;AAAA,IACA,EAAA;AAAA,IACA,MAAA;AAAA,IACA,IAAA,EAAM;AAAA,GACR;AACF;AAQO,SAAS,oBAAA,CACd,UAAA,EACA,MAAA,EACA,aAAA,EACA,YAAA,EAC4B;AAC5B,EAAA,IAAI,UAAA,IAAc,CAAA,EAAG,MAAM,IAAI,MAAM,8BAA8B,CAAA;AACnE,EAAA,IAAI,MAAA,IAAU,CAAA,EAAG,MAAM,IAAI,MAAM,yBAAyB,CAAA;AAC1D,EAAA,IAAI,gBAAgB,CAAA,IAAK,aAAA,GAAgB,IAAI,MAAM,IAAI,MAAM,iDAAiD,CAAA;AAE9G,EAAA,MAAM,GAAA,GAAO,aAAA,GAAgB,IAAA,CAAK,EAAA,GAAM,GAAA;AACxC,EAAA,IAAI,WAAA;AAEJ,EAAA,QAAQ,YAAA;AAAc,IACpB,KAAK,QAAA;AACH,MAAA,WAAA,GAAc,IAAA,CAAK,GAAA,CAAI,IAAA,CAAK,GAAA,CAAI,IAAA,CAAK,KAAK,CAAA,GAAI,GAAA,GAAM,CAAC,CAAA,EAAG,CAAC,CAAA;AACzD,MAAA;AAAA,IACF,KAAK,SAAA;AACH,MAAA,WAAA,GAAc,IAAA,CAAK,GAAA,CAAI,IAAA,CAAK,GAAA,CAAI,IAAA,CAAK,KAAK,CAAA,GAAI,GAAA,GAAM,CAAC,CAAA,EAAG,CAAC,CAAA;AACzD,MAAA;AAAA,IACF,KAAK,SAAA;AACH,MAAA,WAAA,GAAc,CAAA,GAAI,IAAA,CAAK,GAAA,CAAI,GAAG,CAAA;AAC9B,MAAA;AAAA,IACF;AACE,MAAA,MAAM,IAAI,KAAA,CAAM,CAAA,uBAAA,EAA0B,YAAY,CAAA,+BAAA,CAAiC,CAAA;AAAA;AAG3F,EAAA,MAAM,cAAA,GAAiB,cAAc,UAAA,GAAa,MAAA;AAClD,EAAA,MAAM,UAAA,GAAa,MAAM,cAAA,GAAiB,MAAA;AAE1C,EAAA,OAAO;AAAA,IACL,UAAA;AAAA,IACA,MAAA;AAAA,IACA,aAAA;AAAA,IACA,YAAA;AAAA,IACA,WAAA;AAAA,IACA,cAAA;AAAA,IACA,UAAA;AAAA,IACA,YAAA,EAAc,IAAA;AAAA,IACd,SAAA,EAAW;AAAA,GACb;AACF;AAMO,SAAS,UAAA,CACd,IAAA,EACA,IAAA,EACA,cAAA,EACA,SAAA,EACkB;AAClB,EAAA,IAAI,IAAA,GAAO,CAAA,EAAG,MAAM,IAAI,MAAM,2BAA2B,CAAA;AACzD,EAAA,IAAI,IAAA,IAAQ,CAAA,EAAG,MAAM,IAAI,MAAM,uBAAuB,CAAA;AACtD,EAAA,IAAI,cAAA,IAAkB,CAAA,EAAG,MAAM,IAAI,MAAM,kCAAkC,CAAA;AAC3E,EAAA,IAAI,SAAA,IAAa,CAAA,EAAG,MAAM,IAAI,MAAM,4BAA4B,CAAA;AAEhE,EAAA,MAAM,SAAS,IAAA,GAAO,IAAA;AACtB,EAAA,MAAM,KAAA,GAAS,SAAS,SAAA,GAAa,cAAA;AAErC,EAAA,OAAO;AAAA,IACL,IAAA;AAAA,IACA,IAAA;AAAA,IACA,cAAA;AAAA,IACA,SAAA;AAAA,IACA,MAAA;AAAA,IACA,UAAA,EAAY,KAAA;AAAA,IACZ,IAAA,EAAM;AAAA,GACR;AACF;;;ACrKA,IAAM,SAAA,GAAkC;AAAA,EACtC;AAAA,IACE,IAAA,EAAM,gBAAA;AAAA,IACN,QAAA,EAAU,OAAA;AAAA,IACV,CAAA,EAAG,IAAA;AAAA,IACH,EAAA,EAAI,IAAA;AAAA,IACJ,EAAA,EAAI,GAAA;AAAA,IACJ,OAAA,EAAS,IAAA;AAAA,IACT,aAAA,EAAe,IAAA;AAAA,IACf,gBAAA,EAAkB,KAAA;AAAA,IAClB,KAAA,EAAO,IAAA;AAAA,IACP,MAAA,EAAQ,IAAA;AAAA,IACR,MAAA,EAAQ,IAAA;AAAA,IACR,WAAA,EAAa,UAAA;AAAA,IACb,oBAAA,EAAsB;AAAA,GACxB;AAAA,EACA;AAAA,IACE,IAAA,EAAM,iBAAA;AAAA,IACN,QAAA,EAAU,OAAA;AAAA,IACV,CAAA,EAAG,IAAA;AAAA,IACH,EAAA,EAAI,KAAA;AAAA,IACJ,EAAA,EAAI,IAAA;AAAA,IACJ,OAAA,EAAS,IAAA;AAAA,IACT,aAAA,EAAe,IAAA;AAAA,IACf,gBAAA,EAAkB,KAAA;AAAA,IAClB,KAAA,EAAO,IAAA;AAAA,IACP,MAAA,EAAQ,IAAA;AAAA,IACR,MAAA,EAAQ,IAAA;AAAA,IACR,WAAA,EAAa,UAAA;AAAA,IACb,oBAAA,EAAsB;AAAA,GACxB;AAAA,EACA;AAAA,IACE,IAAA,EAAM,qBAAA;AAAA,IACN,QAAA,EAAU,OAAA;AAAA,IACV,CAAA,EAAG,KAAA;AAAA,IACH,EAAA,EAAI,KAAA;AAAA,IACJ,EAAA,EAAI,KAAA;AAAA,IACJ,OAAA,EAAS,IAAA;AAAA,IACT,aAAA,EAAe,IAAA;AAAA,IACf,gBAAA,EAAkB,MAAA;AAAA,IAClB,KAAA,EAAO,IAAA;AAAA,IACP,MAAA,EAAQ,IAAA;AAAA,IACR,MAAA,EAAQ,IAAA;AAAA,IACR,WAAA,EAAa,UAAA;AAAA,IACb,oBAAA,EAAsB;AAAA,GACxB;AAAA,EACA;AAAA,IACE,IAAA,EAAM,kBAAA;AAAA,IACN,QAAA,EAAU,UAAA;AAAA,IACV,CAAA,EAAG,KAAA;AAAA,IACH,EAAA,EAAI,KAAA;AAAA,IACJ,EAAA,EAAI,IAAA;AAAA,IACJ,OAAA,EAAS,IAAA;AAAA,IACT,aAAA,EAAe,IAAA;AAAA,IACf,gBAAA,EAAkB,MAAA;AAAA,IAClB,KAAA,EAAO,IAAA;AAAA,IACP,MAAA,EAAQ,IAAA;AAAA,IACR,MAAA,EAAQ,IAAA;AAAA,IACR,WAAA,EAAa,UAAA;AAAA,IACb,oBAAA,EAAsB;AAAA,GACxB;AAAA,EACA;AAAA,IACE,IAAA,EAAM,kBAAA;AAAA,IACN,QAAA,EAAU,UAAA;AAAA,IACV,CAAA,EAAG,KAAA;AAAA,IACH,EAAA,EAAI,KAAA;AAAA,IACJ,EAAA,EAAI,KAAA;AAAA,IACJ,OAAA,EAAS,IAAA;AAAA,IACT,aAAA,EAAe,IAAA;AAAA,IACf,gBAAA,EAAkB,MAAA;AAAA,IAClB,KAAA,EAAO,IAAA;AAAA,IACP,MAAA,EAAQ,IAAA;AAAA,IACR,MAAA,EAAQ,IAAA;AAAA,IACR,WAAA,EAAa,UAAA;AAAA,IACb,oBAAA,EAAsB;AAAA,GACxB;AAAA,EACA;AAAA,IACE,IAAA,EAAM,iBAAA;AAAA,IACN,QAAA,EAAU,UAAA;AAAA,IACV,CAAA,EAAG,IAAA;AAAA,IACH,EAAA,EAAI,GAAA;AAAA,IACJ,EAAA,EAAI,IAAA;AAAA,IACJ,OAAA,EAAS,IAAA;AAAA,IACT,aAAA,EAAe,GAAA;AAAA,IACf,gBAAA,EAAkB,IAAA;AAAA,IAClB,KAAA,EAAO,IAAA;AAAA,IACP,MAAA,EAAQ,IAAA;AAAA,IACR,MAAA,EAAQ,IAAA;AAAA,IACR,WAAA,EAAa,UAAA;AAAA,IACb,oBAAA,EAAsB;AAAA,GACxB;AAAA,EACA;AAAA,IACE,IAAA,EAAM,iBAAA;AAAA,IACN,QAAA,EAAU,UAAA;AAAA,IACV,CAAA,EAAG,IAAA;AAAA,IACH,EAAA,EAAI,GAAA;AAAA,IACJ,EAAA,EAAI,IAAA;AAAA,IACJ,OAAA,EAAS,IAAA;AAAA,IACT,aAAA,EAAe,GAAA;AAAA,IACf,gBAAA,EAAkB,IAAA;AAAA,IAClB,KAAA,EAAO,IAAA;AAAA,IACP,MAAA,EAAQ,IAAA;AAAA,IACR,MAAA,EAAQ,IAAA;AAAA,IACR,WAAA,EAAa,UAAA;AAAA,IACb,oBAAA,EAAsB;AAAA,GACxB;AAAA,EACA;AAAA,IACE,IAAA,EAAM,iBAAA;AAAA,IACN,QAAA,EAAU,UAAA;AAAA,IACV,CAAA,EAAG,IAAA;AAAA,IACH,EAAA,EAAI,GAAA;AAAA,IACJ,EAAA,EAAI,GAAA;AAAA,IACJ,OAAA,EAAS,IAAA;AAAA,IACT,aAAA,EAAe,GAAA;AAAA,IACf,gBAAA,EAAkB,IAAA;AAAA,IAClB,KAAA,EAAO,IAAA;AAAA,IACP,MAAA,EAAQ,IAAA;AAAA,IACR,MAAA,EAAQ,IAAA;AAAA,IACR,WAAA,EAAa,UAAA;AAAA,IACb,oBAAA,EAAsB;AAAA,GACxB;AAAA,EACA;AAAA,IACE,IAAA,EAAM,aAAA;AAAA,IACN,QAAA,EAAU,QAAA;AAAA,IACV,CAAA,EAAG,KAAA;AAAA,IACH,EAAA,EAAI,IAAA;AAAA,IACJ,EAAA,EAAI,IAAA;AAAA,IACJ,OAAA,EAAS,GAAA;AAAA,IACT,aAAA,EAAe,IAAA;AAAA,IACf,gBAAA,EAAkB,KAAA;AAAA,IAClB,KAAA,EAAO,IAAA;AAAA,IACP,MAAA,EAAQ,IAAA;AAAA,IACR,MAAA,EAAQ,IAAA;AAAA,IACR,WAAA,EAAa,UAAA;AAAA,IACb,oBAAA,EAAsB;AAAA,GACxB;AAAA,EACA;AAAA,IACE,IAAA,EAAM,eAAA;AAAA,IACN,QAAA,EAAU,QAAA;AAAA,IACV,CAAA,EAAG,KAAA;AAAA,IACH,EAAA,EAAI,IAAA;AAAA,IACJ,EAAA,EAAI,IAAA;AAAA,IACJ,OAAA,EAAS,GAAA;AAAA,IACT,aAAA,EAAe,IAAA;AAAA,IACf,gBAAA,EAAkB,KAAA;AAAA,IAClB,KAAA,EAAO,IAAA;AAAA,IACP,MAAA,EAAQ,IAAA;AAAA,IACR,MAAA,EAAQ,IAAA;AAAA,IACR,WAAA,EAAa,UAAA;AAAA,IACb,oBAAA,EAAsB;AAAA,GACxB;AAAA,EACA;AAAA,IACE,IAAA,EAAM,eAAA;AAAA,IACN,QAAA,EAAU,OAAA;AAAA,IACV,CAAA,EAAG,KAAA;AAAA,IACH,EAAA,EAAI,IAAA;AAAA,IACJ,EAAA,EAAI,IAAA;AAAA,IACJ,OAAA,EAAS,IAAA;AAAA,IACT,aAAA,EAAe,IAAA;AAAA,IACf,gBAAA,EAAkB,MAAA;AAAA,IAClB,KAAA,EAAO,IAAA;AAAA,IACP,MAAA,EAAQ,IAAA;AAAA,IACR,MAAA,EAAQ,IAAA;AAAA,IACR,WAAA,EAAa,UAAA;AAAA,IACb,oBAAA,EAAsB;AAAA;AAE1B,CAAA;AAKO,SAAS,YAAY,IAAA,EAAkC;AAC5D,EAAA,MAAM,KAAA,GAAQ,KAAK,WAAA,EAAY;AAC/B,EAAA,MAAM,KAAA,GAAQ,SAAA,CAAU,IAAA,CAAK,CAAC,CAAA,KAAM,CAAA,CAAE,IAAA,CAAK,WAAA,EAAY,CAAE,QAAA,CAAS,KAAK,CAAC,CAAA;AACxE,EAAA,IAAI,CAAC,KAAA,EAAO;AACV,IAAA,MAAM,SAAA,GAAY,UAAU,GAAA,CAAI,CAAC,MAAM,CAAA,CAAE,IAAI,CAAA,CAAE,IAAA,CAAK,IAAI,CAAA;AACxD,IAAA,MAAM,IAAI,KAAA,CAAM,CAAA,UAAA,EAAa,IAAI,CAAA,wBAAA,EAA2B,SAAS,CAAA,CAAE,CAAA;AAAA,EACzE;AACA,EAAA,OAAO,EAAE,GAAG,KAAA,EAAM;AACpB;AAKO,SAAS,cAAc,QAAA,EAAyC;AACrE,EAAA,IAAI,CAAC,QAAA,EAAU,OAAO,SAAA,CAAU,GAAA,CAAI,CAAC,CAAA,MAAO,EAAE,GAAG,CAAA,EAAE,CAAE,CAAA;AACrD,EAAA,MAAM,KAAA,GAAQ,SAAS,WAAA,EAAY;AACnC,EAAA,MAAM,QAAA,GAAW,UAAU,MAAA,CAAO,CAAC,MAAM,CAAA,CAAE,QAAA,CAAS,WAAA,EAAY,KAAM,KAAK,CAAA;AAC3E,EAAA,IAAI,QAAA,CAAS,WAAW,CAAA,EAAG;AACzB,IAAA,MAAM,UAAA,GAAa,CAAC,GAAG,IAAI,IAAI,SAAA,CAAU,GAAA,CAAI,CAAC,CAAA,KAAM,EAAE,QAAQ,CAAC,CAAC,CAAA,CAAE,KAAK,IAAI,CAAA;AAC3E,IAAA,MAAM,IAAI,KAAA,CAAM,CAAA,gCAAA,EAAmC,QAAQ,CAAA,yBAAA,EAA4B,UAAU,CAAA,CAAE,CAAA;AAAA,EACrG;AACA,EAAA,OAAO,SAAS,GAAA,CAAI,CAAC,OAAO,EAAE,GAAG,GAAE,CAAE,CAAA;AACvC","file":"index.mjs","sourcesContent":["import type {\n NormalStressResult,\n ShearStressResult,\n StrainResult,\n YoungsModulusResult,\n FactorOfSafetyResult,\n HoopStressResult,\n} from './types';\n\n/**\n * Normal stress: σ = F / A\n */\nexport function normalStress(force: number, area: number): NormalStressResult {\n if (area <= 0) throw new Error('Area must be positive');\n const stress = force / area;\n return { force, area, stress, unit: 'Pa' };\n}\n\n/**\n * Shear stress: τ = V / A\n */\nexport function shearStress(force: number, area: number): ShearStressResult {\n if (area <= 0) throw new Error('Area must be positive');\n const stress = force / area;\n return { force, area, stress, unit: 'Pa' };\n}\n\n/**\n * Strain: ε = ΔL / L\n */\nexport function strain(deltaLength: number, originalLength: number): StrainResult {\n if (originalLength <= 0) throw new Error('Original length must be positive');\n const s = deltaLength / originalLength;\n return { deltaLength, originalLength, strain: s, unit: 'dimensionless' };\n}\n\n/**\n * Young's modulus: E = σ / ε\n */\nexport function youngsModulus(stress: number, strainVal: number): YoungsModulusResult {\n if (strainVal === 0) throw new Error('Strain must be non-zero');\n const E = stress / strainVal;\n return { stress, strain: strainVal, youngsModulus: E, unit: 'Pa' };\n}\n\n/**\n * Factor of safety: FoS = σ_ultimate / σ_working\n */\nexport function factorOfSafety(ultimateStress: number, workingStress: number): FactorOfSafetyResult {\n if (workingStress === 0) throw new Error('Working stress must be non-zero');\n if (ultimateStress < 0) throw new Error('Ultimate stress must be non-negative');\n if (workingStress < 0) throw new Error('Working stress must be positive');\n const fos = ultimateStress / workingStress;\n return { ultimateStress, workingStress, factorOfSafety: fos };\n}\n\n/**\n * Hoop stress for thin-walled pressure vessels:\n * σ_hoop = pR / t\n * σ_longitudinal = pR / (2t)\n */\nexport function hoopStress(pressure: number, radius: number, thickness: number): HoopStressResult {\n if (pressure < 0) throw new Error('Pressure must be non-negative');\n if (radius <= 0) throw new Error('Radius must be positive');\n if (thickness <= 0) throw new Error('Thickness must be positive');\n const hoop = (pressure * radius) / thickness;\n const longitudinal = (pressure * radius) / (2 * thickness);\n return { pressure, radius, thickness, hoopStress: hoop, longitudinalStress: longitudinal, unit: 'Pa' };\n}\n","import type { BeamResult, CantileverResult, BeamLoadType, CantileverLoadType } from './types';\n\n/**\n * Simply supported beam analysis.\n * Returns reactions, max moment, max shear, and max deflection (if E and I provided).\n */\nexport function simplySupported(\n length: number,\n load: number,\n loadType: BeamLoadType,\n E?: number,\n I?: number,\n loadPosition?: number\n): BeamResult {\n if (length <= 0) throw new Error('Length must be positive');\n if (load < 0) throw new Error('Load must be non-negative');\n\n let reactionLeft: number;\n let reactionRight: number;\n let maxMoment: number;\n let maxShear: number;\n let maxDeflection: number | null = null;\n\n const L = length;\n const P = load;\n\n switch (loadType) {\n case 'point-center': {\n reactionLeft = P / 2;\n reactionRight = P / 2;\n maxMoment = (P * L) / 4;\n maxShear = P / 2;\n if (E && I) {\n maxDeflection = (P * L * L * L) / (48 * E * I);\n }\n break;\n }\n case 'point-custom': {\n const a = loadPosition ?? L / 2;\n if (a < 0 || a > L) throw new Error('Load position must be between 0 and length');\n const b = L - a;\n reactionLeft = (P * b) / L;\n reactionRight = (P * a) / L;\n maxMoment = (P * a * b) / L;\n maxShear = Math.max(reactionLeft, reactionRight);\n if (E && I) {\n // Approximate max deflection for off-center load\n maxDeflection = (P * a * b * (a + 2 * b) * Math.sqrt(3 * a * (a + 2 * b))) / (27 * E * I * L);\n }\n break;\n }\n case 'uniform': {\n // w = total load / length (UDL intensity)\n const w = P / L;\n reactionLeft = P / 2;\n reactionRight = P / 2;\n maxMoment = (w * L * L) / 8;\n maxShear = P / 2;\n if (E && I) {\n maxDeflection = (5 * w * L * L * L * L) / (384 * E * I);\n }\n break;\n }\n case 'triangular': {\n // Triangular load from 0 at left to w_max at right, total load = w_max * L / 2 = P\n const wMax = (2 * P) / L;\n reactionLeft = P / 3;\n reactionRight = (2 * P) / 3;\n // Max moment occurs at x = L/√3 from left\n const xMax = L / Math.sqrt(3);\n maxMoment = (wMax * xMax * xMax * xMax) / (6 * L) + reactionLeft * xMax - (wMax * xMax * xMax) / (6 * L);\n // Simplified: M_max = wL²/9√3\n maxMoment = (wMax * L * L) / (9 * Math.sqrt(3));\n maxShear = (2 * P) / 3;\n if (E && I) {\n maxDeflection = (P * L * L * L) / (60 * E * I);\n }\n break;\n }\n default:\n throw new Error(`Unknown load type: ${loadType}. Use: point-center, point-custom, uniform, triangular`);\n }\n\n return {\n length,\n load,\n loadType,\n reactionLeft,\n reactionRight,\n maxMoment,\n maxShear,\n maxDeflection,\n momentUnit: 'N·m',\n shearUnit: 'N',\n deflectionUnit: maxDeflection !== null ? 'm' : null,\n };\n}\n\n/**\n * Cantilever beam analysis.\n * Returns reaction force, reaction moment, max moment, max shear, and max deflection (if E and I provided).\n */\nexport function cantilever(\n length: number,\n load: number,\n loadType: CantileverLoadType,\n E?: number,\n I?: number,\n loadPosition?: number\n): CantileverResult {\n if (length <= 0) throw new Error('Length must be positive');\n if (load < 0) throw new Error('Load must be non-negative');\n\n let reactionForce: number;\n let reactionMoment: number;\n let maxMoment: number;\n let maxShear: number;\n let maxDeflection: number | null = null;\n\n const L = length;\n const P = load;\n\n switch (loadType) {\n case 'point-end': {\n reactionForce = P;\n reactionMoment = P * L;\n maxMoment = P * L;\n maxShear = P;\n if (E && I) {\n maxDeflection = (P * L * L * L) / (3 * E * I);\n }\n break;\n }\n case 'point-custom': {\n const a = loadPosition ?? L;\n if (a < 0 || a > L) throw new Error('Load position must be between 0 and length');\n reactionForce = P;\n reactionMoment = P * a;\n maxMoment = P * a;\n maxShear = P;\n if (E && I) {\n maxDeflection = (P * a * a * (3 * L - a)) / (6 * E * I);\n }\n break;\n }\n case 'uniform': {\n const w = P / L;\n reactionForce = P;\n reactionMoment = (w * L * L) / 2;\n maxMoment = (w * L * L) / 2;\n maxShear = P;\n if (E && I) {\n maxDeflection = (w * L * L * L * L) / (8 * E * I);\n }\n break;\n }\n default:\n throw new Error(`Unknown load type: ${loadType}. Use: point-end, point-custom, uniform`);\n }\n\n return {\n length,\n load,\n loadType,\n reactionForce,\n reactionMoment,\n maxMoment,\n maxShear,\n maxDeflection,\n momentUnit: 'N·m',\n shearUnit: 'N',\n deflectionUnit: maxDeflection !== null ? 'm' : null,\n };\n}\n","import type { EndCondition, EulerBucklingResult, SlendernessRatioResult, ColumnClassification } from './types';\n\nconst K_FACTORS: Record<EndCondition, number> = {\n 'pinned-pinned': 1.0,\n 'fixed-free': 2.0,\n 'fixed-pinned': 0.7,\n 'fixed-fixed': 0.5,\n};\n\n/**\n * Euler's critical buckling load: Pcr = π²EI / Le²\n * Le = K * L (effective length)\n */\nexport function eulerBuckling(\n E: number,\n I: number,\n length: number,\n endCondition: EndCondition\n): EulerBucklingResult {\n if (E <= 0) throw new Error('Elastic modulus must be positive');\n if (I <= 0) throw new Error('Moment of inertia must be positive');\n if (length <= 0) throw new Error('Length must be positive');\n\n const K = K_FACTORS[endCondition];\n if (K === undefined) {\n throw new Error(`Unknown end condition: ${endCondition}. Use: pinned-pinned, fixed-free, fixed-pinned, fixed-fixed`);\n }\n\n const Le = K * length;\n const Pcr = (Math.PI * Math.PI * E * I) / (Le * Le);\n\n return {\n elasticModulus: E,\n momentOfInertia: I,\n length,\n endCondition,\n effectiveLengthFactor: K,\n effectiveLength: Le,\n criticalLoad: Pcr,\n unit: 'N',\n };\n}\n\n/**\n * Slenderness ratio: λ = Le / r\n * Classification: short (< 30), intermediate (30-120), long (> 120)\n */\nexport function slendernessRatio(\n effectiveLength: number,\n radiusOfGyration: number\n): SlendernessRatioResult {\n if (effectiveLength <= 0) throw new Error('Effective length must be positive');\n if (radiusOfGyration <= 0) throw new Error('Radius of gyration must be positive');\n\n const ratio = effectiveLength / radiusOfGyration;\n\n let classification: ColumnClassification;\n if (ratio < 30) {\n classification = 'short';\n } else if (ratio <= 120) {\n classification = 'intermediate';\n } else {\n classification = 'long';\n }\n\n return {\n effectiveLength,\n radiusOfGyration,\n slendernessRatio: ratio,\n classification,\n };\n}\n","import type {\n RectangleSectionResult,\n CircularSectionResult,\n HollowCircularSectionResult,\n IBeamSectionResult,\n} from './types';\n\n/**\n * Rectangular cross-section properties.\n * Ixx = bh³/12, Iyy = hb³/12\n */\nexport function rectangleSection(width: number, height: number): RectangleSectionResult {\n if (width <= 0) throw new Error('Width must be positive');\n if (height <= 0) throw new Error('Height must be positive');\n\n const area = width * height;\n const Ixx = (width * height * height * height) / 12;\n const Iyy = (height * width * width * width) / 12;\n const Sx = (width * height * height) / 6;\n const Sy = (height * width * width) / 6;\n const rx = height / Math.sqrt(12);\n const ry = width / Math.sqrt(12);\n\n return { width, height, area, Ixx, Iyy, Sx, Sy, rx, ry };\n}\n\n/**\n * Solid circular cross-section properties.\n * I = πd⁴/64\n */\nexport function circularSection(diameter: number): CircularSectionResult {\n if (diameter <= 0) throw new Error('Diameter must be positive');\n\n const r2 = diameter / 2;\n const area = Math.PI * r2 * r2;\n const I = (Math.PI * diameter * diameter * diameter * diameter) / 64;\n const S = (Math.PI * diameter * diameter * diameter) / 32;\n const r = diameter / 4;\n\n return { diameter, area, I, S, r };\n}\n\n/**\n * Hollow circular cross-section properties.\n * I = π(D⁴ - d⁴)/64\n */\nexport function hollowCircularSection(outerDiameter: number, innerDiameter: number): HollowCircularSectionResult {\n if (outerDiameter <= 0) throw new Error('Outer diameter must be positive');\n if (innerDiameter < 0) throw new Error('Inner diameter must be non-negative');\n if (innerDiameter >= outerDiameter) throw new Error('Inner diameter must be less than outer diameter');\n\n const D = outerDiameter;\n const d = innerDiameter;\n const area = (Math.PI / 4) * (D * D - d * d);\n const I = (Math.PI / 64) * (D * D * D * D - d * d * d * d);\n const S = (Math.PI / (32 * D)) * (D * D * D * D - d * d * d * d);\n const r = Math.sqrt(I / area);\n\n return { outerDiameter, innerDiameter, area, I, S, r };\n}\n\n/**\n * I-beam (wide flange) cross-section properties.\n * Uses parallel axis theorem for Ixx.\n */\nexport function iBeamSection(\n flangeWidth: number,\n flangeThickness: number,\n webHeight: number,\n webThickness: number\n): IBeamSectionResult {\n if (flangeWidth <= 0) throw new Error('Flange width must be positive');\n if (flangeThickness <= 0) throw new Error('Flange thickness must be positive');\n if (webHeight <= 0) throw new Error('Web height must be positive');\n if (webThickness <= 0) throw new Error('Web thickness must be positive');\n\n const totalHeight = webHeight + 2 * flangeThickness;\n\n // Areas\n const flangeArea = flangeWidth * flangeThickness;\n const webArea = webHeight * webThickness;\n const area = 2 * flangeArea + webArea;\n\n // Ixx using parallel axis theorem\n // Web contribution: bh³/12 (centroidal)\n const IxxWeb = (webThickness * webHeight * webHeight * webHeight) / 12;\n // Flange contribution: bh³/12 + Ad² for each flange\n const IxxFlangeSelf = (flangeWidth * flangeThickness * flangeThickness * flangeThickness) / 12;\n const flangeCenterDist = (webHeight + flangeThickness) / 2;\n const IxxFlangeParallel = flangeArea * flangeCenterDist * flangeCenterDist;\n const Ixx = IxxWeb + 2 * (IxxFlangeSelf + IxxFlangeParallel);\n\n // Iyy\n const IyyFlanges = 2 * (flangeThickness * flangeWidth * flangeWidth * flangeWidth) / 12;\n const IyyWeb = (webHeight * webThickness * webThickness * webThickness) / 12;\n const Iyy = IyyFlanges + IyyWeb;\n\n // Section moduli\n const Sx = (2 * Ixx) / totalHeight;\n const Sy = (2 * Iyy) / flangeWidth;\n\n // Radii of gyration\n const rx = Math.sqrt(Ixx / area);\n const ry = Math.sqrt(Iyy / area);\n\n return {\n flangeWidth,\n flangeThickness,\n webHeight,\n webThickness,\n totalHeight,\n area,\n Ixx,\n Iyy,\n Sx,\n Sy,\n rx,\n ry,\n };\n}\n","import type {\n TerzaghiBearingResult,\n LateralEarthPressureResult,\n SettlementResult,\n FoundationType,\n EarthPressureType,\n} from './types';\n\n/**\n * General bearing capacity factors (Meyerhof/Reissner/Vesic formulation).\n * Nq from Reissner (1924), Nc from Prandtl (1921), Nγ from Vesic (1973).\n * These are the most widely used factors in modern geotechnical practice.\n */\nfunction bearingCapacityFactors(frictionAngleDeg: number): { Nc: number; Nq: number; Ngamma: number } {\n const phi = (frictionAngleDeg * Math.PI) / 180;\n\n // Nq = tan²(45 + φ/2) · e^(π·tanφ) (Reissner, 1924)\n const tan45half = Math.tan(Math.PI / 4 + phi / 2);\n const Nq = tan45half * tan45half * Math.exp(Math.PI * Math.tan(phi));\n\n // Nc = (Nq - 1) · cot(φ) (Prandtl, 1921; for φ > 0)\n let Nc: number;\n if (frictionAngleDeg === 0) {\n Nc = 5.14; // Prandtl's exact value: (2 + π)\n } else {\n Nc = (Nq - 1) / Math.tan(phi);\n }\n\n // Nγ = 2(Nq + 1)·tan(φ) (Vesic, 1973 approximation)\n const Ngamma = 2 * (Nq + 1) * Math.tan(phi);\n\n return { Nc, Nq, Ngamma };\n}\n\n/**\n * Bearing capacity for shallow foundations using Terzaghi's equation form\n * with Meyerhof/Vesic bearing capacity factors.\n * q_ult = c·Nc·sc + γ·D·Nq + 0.5·γ·B·Nγ·sγ\n * Shape factors: strip (1, 1), square (1.3, 0.8), circular (1.3, 0.6)\n */\nexport function terzaghiBearing(\n cohesion: number,\n depth: number,\n unitWeight: number,\n frictionAngle: number,\n foundationType: FoundationType\n): TerzaghiBearingResult {\n if (cohesion < 0) throw new Error('Cohesion must be non-negative');\n if (depth < 0) throw new Error('Depth must be non-negative');\n if (unitWeight <= 0) throw new Error('Unit weight must be positive');\n if (frictionAngle < 0 || frictionAngle > 50) throw new Error('Friction angle must be between 0 and 50 degrees');\n\n const { Nc, Nq, Ngamma } = bearingCapacityFactors(frictionAngle);\n\n let sc: number;\n let sgamma: number;\n switch (foundationType) {\n case 'strip':\n sc = 1.0;\n sgamma = 1.0;\n break;\n case 'square':\n sc = 1.3;\n sgamma = 0.8;\n break;\n case 'circular':\n sc = 1.3;\n sgamma = 0.6;\n break;\n default:\n throw new Error(`Unknown foundation type: ${foundationType}. Use: strip, square, circular`);\n }\n\n // q_ult = c·Nc·sc + γ·D·Nq + 0.5·γ·B·Nγ·sγ\n // For general formula, B is treated as unit width\n const bearingCapacity = cohesion * Nc * sc + unitWeight * depth * Nq + 0.5 * unitWeight * 1.0 * Ngamma * sgamma;\n\n return {\n cohesion,\n depth,\n unitWeight,\n frictionAngle,\n foundationType,\n bearingCapacity,\n Nc,\n Nq,\n Ngamma,\n unit: 'Pa',\n };\n}\n\n/**\n * Rankine lateral earth pressure.\n * Active: Ka = tan²(45° - φ/2)\n * Passive: Kp = tan²(45° + φ/2)\n * At-rest: K0 = 1 - sin(φ) (Jaky's formula)\n */\nexport function lateralEarthPressure(\n unitWeight: number,\n height: number,\n frictionAngle: number,\n pressureType: EarthPressureType\n): LateralEarthPressureResult {\n if (unitWeight <= 0) throw new Error('Unit weight must be positive');\n if (height <= 0) throw new Error('Height must be positive');\n if (frictionAngle < 0 || frictionAngle > 50) throw new Error('Friction angle must be between 0 and 50 degrees');\n\n const phi = (frictionAngle * Math.PI) / 180;\n let coefficient: number;\n\n switch (pressureType) {\n case 'active':\n coefficient = Math.pow(Math.tan(Math.PI / 4 - phi / 2), 2);\n break;\n case 'passive':\n coefficient = Math.pow(Math.tan(Math.PI / 4 + phi / 2), 2);\n break;\n case 'at-rest':\n coefficient = 1 - Math.sin(phi);\n break;\n default:\n throw new Error(`Unknown pressure type: ${pressureType}. Use: active, passive, at-rest`);\n }\n\n const pressureAtBase = coefficient * unitWeight * height;\n const totalForce = 0.5 * pressureAtBase * height;\n\n return {\n unitWeight,\n height,\n frictionAngle,\n pressureType,\n coefficient,\n pressureAtBase,\n totalForce,\n pressureUnit: 'Pa',\n forceUnit: 'N/m',\n };\n}\n\n/**\n * Elastic settlement: δ = (q · H) / E\n * where q = P / A is the applied stress.\n */\nexport function settlement(\n load: number,\n area: number,\n elasticModulus: number,\n thickness: number\n): SettlementResult {\n if (load < 0) throw new Error('Load must be non-negative');\n if (area <= 0) throw new Error('Area must be positive');\n if (elasticModulus <= 0) throw new Error('Elastic modulus must be positive');\n if (thickness <= 0) throw new Error('Thickness must be positive');\n\n const stress = load / area;\n const settl = (stress * thickness) / elasticModulus;\n\n return {\n load,\n area,\n elasticModulus,\n thickness,\n stress,\n settlement: settl,\n unit: 'm',\n };\n}\n","import type { MaterialProperties } from './types';\n\nconst MATERIALS: MaterialProperties[] = [\n {\n name: 'ASTM A36 Steel',\n category: 'steel',\n E: 200e9,\n fy: 250e6,\n fu: 400e6,\n density: 7850,\n poissonsRatio: 0.26,\n thermalExpansion: 12e-6,\n Eunit: 'Pa',\n fyUnit: 'Pa',\n fuUnit: 'Pa',\n densityUnit: 'kg/m³',\n thermalExpansionUnit: '1/°C',\n },\n {\n name: 'ASTM A992 Steel',\n category: 'steel',\n E: 200e9,\n fy: 345e6,\n fu: 450e6,\n density: 7850,\n poissonsRatio: 0.26,\n thermalExpansion: 12e-6,\n Eunit: 'Pa',\n fyUnit: 'Pa',\n fuUnit: 'Pa',\n densityUnit: 'kg/m³',\n thermalExpansionUnit: '1/°C',\n },\n {\n name: 'Stainless Steel 304',\n category: 'steel',\n E: 193e9,\n fy: 215e6,\n fu: 515e6,\n density: 7930,\n poissonsRatio: 0.29,\n thermalExpansion: 17.3e-6,\n Eunit: 'Pa',\n fyUnit: 'Pa',\n fuUnit: 'Pa',\n densityUnit: 'kg/m³',\n thermalExpansionUnit: '1/°C',\n },\n {\n name: 'Aluminum 6061-T6',\n category: 'aluminum',\n E: 68.9e9,\n fy: 276e6,\n fu: 310e6,\n density: 2700,\n poissonsRatio: 0.33,\n thermalExpansion: 23.6e-6,\n Eunit: 'Pa',\n fyUnit: 'Pa',\n fuUnit: 'Pa',\n densityUnit: 'kg/m³',\n thermalExpansionUnit: '1/°C',\n },\n {\n name: 'Aluminum 2024-T3',\n category: 'aluminum',\n E: 73.1e9,\n fy: 345e6,\n fu: 483e6,\n density: 2780,\n poissonsRatio: 0.33,\n thermalExpansion: 23.2e-6,\n Eunit: 'Pa',\n fyUnit: 'Pa',\n fuUnit: 'Pa',\n densityUnit: 'kg/m³',\n thermalExpansionUnit: '1/°C',\n },\n {\n name: 'Concrete C20/25',\n category: 'concrete',\n E: 30e9,\n fy: 20e6,\n fu: 25e6,\n density: 2400,\n poissonsRatio: 0.2,\n thermalExpansion: 10e-6,\n Eunit: 'Pa',\n fyUnit: 'Pa',\n fuUnit: 'Pa',\n densityUnit: 'kg/m³',\n thermalExpansionUnit: '1/°C',\n },\n {\n name: 'Concrete C30/37',\n category: 'concrete',\n E: 33e9,\n fy: 30e6,\n fu: 37e6,\n density: 2400,\n poissonsRatio: 0.2,\n thermalExpansion: 10e-6,\n Eunit: 'Pa',\n fyUnit: 'Pa',\n fuUnit: 'Pa',\n densityUnit: 'kg/m³',\n thermalExpansionUnit: '1/°C',\n },\n {\n name: 'Concrete C40/50',\n category: 'concrete',\n E: 35e9,\n fy: 40e6,\n fu: 50e6,\n density: 2400,\n poissonsRatio: 0.2,\n thermalExpansion: 10e-6,\n Eunit: 'Pa',\n fyUnit: 'Pa',\n fuUnit: 'Pa',\n densityUnit: 'kg/m³',\n thermalExpansionUnit: '1/°C',\n },\n {\n name: 'Douglas Fir',\n category: 'timber',\n E: 12.4e9,\n fy: 36e6,\n fu: 52e6,\n density: 530,\n poissonsRatio: 0.29,\n thermalExpansion: 3.6e-6,\n Eunit: 'Pa',\n fyUnit: 'Pa',\n fuUnit: 'Pa',\n densityUnit: 'kg/m³',\n thermalExpansionUnit: '1/°C',\n },\n {\n name: 'Southern Pine',\n category: 'timber',\n E: 13.7e9,\n fy: 41e6,\n fu: 59e6,\n density: 560,\n poissonsRatio: 0.33,\n thermalExpansion: 3.6e-6,\n Eunit: 'Pa',\n fyUnit: 'Pa',\n fuUnit: 'Pa',\n densityUnit: 'kg/m³',\n thermalExpansionUnit: '1/°C',\n },\n {\n name: 'Copper C11000',\n category: 'other',\n E: 130e9,\n fy: 69e6,\n fu: 220e6,\n density: 8940,\n poissonsRatio: 0.33,\n thermalExpansion: 17.3e-6,\n Eunit: 'Pa',\n fyUnit: 'Pa',\n fuUnit: 'Pa',\n densityUnit: 'kg/m³',\n thermalExpansionUnit: '1/°C',\n },\n];\n\n/**\n * Get material properties by name (case-insensitive partial match).\n */\nexport function getMaterial(name: string): MaterialProperties {\n const lower = name.toLowerCase();\n const found = MATERIALS.find((m) => m.name.toLowerCase().includes(lower));\n if (!found) {\n const available = MATERIALS.map((m) => m.name).join(', ');\n throw new Error(`Material \"${name}\" not found. Available: ${available}`);\n }\n return { ...found };\n}\n\n/**\n * List materials, optionally filtered by category.\n */\nexport function listMaterials(category?: string): MaterialProperties[] {\n if (!category) return MATERIALS.map((m) => ({ ...m }));\n const lower = category.toLowerCase();\n const filtered = MATERIALS.filter((m) => m.category.toLowerCase() === lower);\n if (filtered.length === 0) {\n const categories = [...new Set(MATERIALS.map((m) => m.category))].join(', ');\n throw new Error(`No materials found in category \"${category}\". Available categories: ${categories}`);\n }\n return filtered.map((m) => ({ ...m }));\n}\n"]}
@@ -0,0 +1 @@
1
+ export { C as CaseType, S as SimilarityResult, T as TemplateResult, a as TextStats, b as TruncateOptions, c as convertCase, g as generateLorem, d as getTextStats, e as interpolate, s as similarity, f as slugify, t as truncate } from '../index-DjBDZzuj.mjs';
@@ -0,0 +1 @@
1
+ export { C as CaseType, S as SimilarityResult, T as TemplateResult, a as TextStats, b as TruncateOptions, c as convertCase, g as generateLorem, d as getTextStats, e as interpolate, s as similarity, f as slugify, t as truncate } from '../index-DjBDZzuj.js';
@@ -0,0 +1,250 @@
1
+ 'use strict';
2
+
3
+ // src/text/case.ts
4
+ function splitWords(input) {
5
+ return input.replace(/([a-z])([A-Z])/g, "$1 $2").replace(/([A-Z]+)([A-Z][a-z])/g, "$1 $2").replace(/[-_]/g, " ").split(/\s+/).filter((word) => word.length > 0);
6
+ }
7
+ function capitalize(word) {
8
+ return word.charAt(0).toUpperCase() + word.slice(1).toLowerCase();
9
+ }
10
+ function convertCase(input, to) {
11
+ const words = splitWords(input);
12
+ if (words.length === 0) {
13
+ return "";
14
+ }
15
+ switch (to) {
16
+ case "camel":
17
+ return words.map((word, index) => index === 0 ? word.toLowerCase() : capitalize(word)).join("");
18
+ case "pascal":
19
+ return words.map((word) => capitalize(word)).join("");
20
+ case "snake":
21
+ return words.map((word) => word.toLowerCase()).join("_");
22
+ case "kebab":
23
+ return words.map((word) => word.toLowerCase()).join("-");
24
+ case "constant":
25
+ return words.map((word) => word.toUpperCase()).join("_");
26
+ case "title":
27
+ return words.map((word) => capitalize(word)).join(" ");
28
+ case "sentence":
29
+ return words.map((word, index) => index === 0 ? capitalize(word) : word.toLowerCase()).join(" ");
30
+ case "upper":
31
+ return words.map((word) => word.toUpperCase()).join(" ");
32
+ case "lower":
33
+ return words.map((word) => word.toLowerCase()).join(" ");
34
+ }
35
+ }
36
+
37
+ // src/text/slug.ts
38
+ function slugify(input, separator = "-") {
39
+ return input.toLowerCase().replace(/[^a-z0-9]+/g, separator).replace(new RegExp(`${escapeRegExp(separator)}+`, "g"), separator).replace(new RegExp(`^${escapeRegExp(separator)}|${escapeRegExp(separator)}$`, "g"), "");
40
+ }
41
+ function escapeRegExp(str) {
42
+ return str.replace(/[.*+?^${}()|[\]\\]/g, "\\$&");
43
+ }
44
+
45
+ // src/text/stats.ts
46
+ function getTextStats(input) {
47
+ const characters = input.length;
48
+ const words = input.split(/\s+/).filter((word) => word.length > 0);
49
+ const sentences = input.split(/[.!?](?:\s|$)/).filter((sentence) => sentence.trim().length > 0);
50
+ const paragraphs = input.split(/\n\n+/).filter((paragraph) => paragraph.trim().length > 0);
51
+ const lines = input.split(/\n/);
52
+ const readingTimeMs = words.length / 200 * 60 * 1e3;
53
+ return {
54
+ characters,
55
+ words: words.length,
56
+ sentences: sentences.length,
57
+ paragraphs: paragraphs.length,
58
+ lines: lines.length,
59
+ readingTimeMs
60
+ };
61
+ }
62
+
63
+ // src/text/truncate.ts
64
+ function truncate(input, options) {
65
+ const { length, boundary = "word", suffix = "..." } = options;
66
+ if (input.length <= length) {
67
+ return input;
68
+ }
69
+ const maxContentLength = length - suffix.length;
70
+ if (maxContentLength <= 0) {
71
+ return suffix.slice(0, length);
72
+ }
73
+ if (boundary === "character") {
74
+ return input.slice(0, maxContentLength) + suffix;
75
+ }
76
+ const truncated = input.slice(0, maxContentLength);
77
+ const lastSpaceIndex = truncated.lastIndexOf(" ");
78
+ if (lastSpaceIndex === -1) {
79
+ return truncated + suffix;
80
+ }
81
+ return input.slice(0, lastSpaceIndex) + suffix;
82
+ }
83
+
84
+ // src/text/lorem.ts
85
+ var LOREM_WORDS = [
86
+ "lorem",
87
+ "ipsum",
88
+ "dolor",
89
+ "sit",
90
+ "amet",
91
+ "consectetur",
92
+ "adipiscing",
93
+ "elit",
94
+ "sed",
95
+ "do",
96
+ "eiusmod",
97
+ "tempor",
98
+ "incididunt",
99
+ "ut",
100
+ "labore",
101
+ "et",
102
+ "dolore",
103
+ "magna",
104
+ "aliqua",
105
+ "enim",
106
+ "ad",
107
+ "minim",
108
+ "veniam",
109
+ "quis",
110
+ "nostrud",
111
+ "exercitation",
112
+ "ullamco",
113
+ "laboris",
114
+ "nisi",
115
+ "aliquip",
116
+ "ex",
117
+ "ea",
118
+ "commodo",
119
+ "consequat",
120
+ "duis",
121
+ "aute",
122
+ "irure",
123
+ "in",
124
+ "reprehenderit",
125
+ "voluptate",
126
+ "velit",
127
+ "esse",
128
+ "cillum",
129
+ "fugiat",
130
+ "nulla",
131
+ "pariatur",
132
+ "excepteur",
133
+ "sint",
134
+ "occaecat",
135
+ "cupidatat"
136
+ ];
137
+ function getWord(index) {
138
+ return LOREM_WORDS[index % LOREM_WORDS.length];
139
+ }
140
+ function generateSentence(wordOffset) {
141
+ const wordCount = 8 + wordOffset % 8;
142
+ const words = [];
143
+ for (let i = 0; i < wordCount; i++) {
144
+ words.push(getWord(wordOffset + i));
145
+ }
146
+ words[0] = words[0].charAt(0).toUpperCase() + words[0].slice(1);
147
+ return {
148
+ sentence: words.join(" ") + ".",
149
+ nextOffset: wordOffset + wordCount
150
+ };
151
+ }
152
+ function generateLorem(count, unit = "words") {
153
+ if (count <= 0) {
154
+ return "";
155
+ }
156
+ if (unit === "words") {
157
+ const words = [];
158
+ for (let i = 0; i < count; i++) {
159
+ words.push(getWord(i));
160
+ }
161
+ return words.join(" ");
162
+ }
163
+ if (unit === "sentences") {
164
+ const sentences = [];
165
+ let offset2 = 0;
166
+ for (let i = 0; i < count; i++) {
167
+ const { sentence, nextOffset } = generateSentence(offset2);
168
+ sentences.push(sentence);
169
+ offset2 = nextOffset;
170
+ }
171
+ return sentences.join(" ");
172
+ }
173
+ const paragraphs = [];
174
+ let offset = 0;
175
+ for (let i = 0; i < count; i++) {
176
+ const sentenceCount = 3 + i % 4;
177
+ const sentences = [];
178
+ for (let j = 0; j < sentenceCount; j++) {
179
+ const { sentence, nextOffset } = generateSentence(offset);
180
+ sentences.push(sentence);
181
+ offset = nextOffset;
182
+ }
183
+ paragraphs.push(sentences.join(" "));
184
+ }
185
+ return paragraphs.join("\n\n");
186
+ }
187
+
188
+ // src/text/similarity.ts
189
+ function similarity(a, b) {
190
+ if (a === b) {
191
+ return { distance: 0, similarity: 1 };
192
+ }
193
+ if (a.length === 0) {
194
+ return { distance: b.length, similarity: 0 };
195
+ }
196
+ if (b.length === 0) {
197
+ return { distance: a.length, similarity: 0 };
198
+ }
199
+ const m = a.length;
200
+ const n = b.length;
201
+ const dp = [];
202
+ for (let i = 0; i <= m; i++) {
203
+ dp[i] = new Array(n + 1);
204
+ dp[i][0] = i;
205
+ }
206
+ for (let j = 0; j <= n; j++) {
207
+ dp[0][j] = j;
208
+ }
209
+ for (let i = 1; i <= m; i++) {
210
+ for (let j = 1; j <= n; j++) {
211
+ const cost = a[i - 1] === b[j - 1] ? 0 : 1;
212
+ dp[i][j] = Math.min(
213
+ dp[i - 1][j] + 1,
214
+ // deletion
215
+ dp[i][j - 1] + 1,
216
+ // insertion
217
+ dp[i - 1][j - 1] + cost
218
+ // substitution
219
+ );
220
+ }
221
+ }
222
+ const distance = dp[m][n];
223
+ const maxLength = Math.max(m, n);
224
+ const sim = 1 - distance / maxLength;
225
+ return { distance, similarity: sim };
226
+ }
227
+
228
+ // src/text/template.ts
229
+ function interpolate(template, variables) {
230
+ const missingKeys = [];
231
+ const result = template.replace(/\{\{\s*(\w+)\s*\}\}/g, (match, key) => {
232
+ if (key in variables) {
233
+ return variables[key];
234
+ }
235
+ missingKeys.push(key);
236
+ return match;
237
+ });
238
+ const uniqueMissingKeys = [...new Set(missingKeys)];
239
+ return { result, missingKeys: uniqueMissingKeys };
240
+ }
241
+
242
+ exports.convertCase = convertCase;
243
+ exports.generateLorem = generateLorem;
244
+ exports.getTextStats = getTextStats;
245
+ exports.interpolate = interpolate;
246
+ exports.similarity = similarity;
247
+ exports.slugify = slugify;
248
+ exports.truncate = truncate;
249
+ //# sourceMappingURL=index.js.map
250
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../src/text/case.ts","../../src/text/slug.ts","../../src/text/stats.ts","../../src/text/truncate.ts","../../src/text/lorem.ts","../../src/text/similarity.ts","../../src/text/template.ts"],"names":["offset"],"mappings":"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","file":"index.js","sourcesContent":["import type { CaseType } from './types';\n\nfunction splitWords(input: string): string[] {\n // Split by camelCase boundaries, spaces, hyphens, underscores\n return input\n // Insert separator before uppercase letters that follow lowercase letters (camelCase boundary)\n .replace(/([a-z])([A-Z])/g, '$1 $2')\n // Insert separator before uppercase letters followed by lowercase (e.g. \"HTMLParser\" -> \"HTML Parser\")\n .replace(/([A-Z]+)([A-Z][a-z])/g, '$1 $2')\n // Replace hyphens and underscores with spaces\n .replace(/[-_]/g, ' ')\n // Split on whitespace\n .split(/\\s+/)\n // Filter out empty strings\n .filter((word) => word.length > 0);\n}\n\nfunction capitalize(word: string): string {\n return word.charAt(0).toUpperCase() + word.slice(1).toLowerCase();\n}\n\nexport function convertCase(input: string, to: CaseType): string {\n const words = splitWords(input);\n\n if (words.length === 0) {\n return '';\n }\n\n switch (to) {\n case 'camel':\n return words\n .map((word, index) => (index === 0 ? word.toLowerCase() : capitalize(word)))\n .join('');\n\n case 'pascal':\n return words.map((word) => capitalize(word)).join('');\n\n case 'snake':\n return words.map((word) => word.toLowerCase()).join('_');\n\n case 'kebab':\n return words.map((word) => word.toLowerCase()).join('-');\n\n case 'constant':\n return words.map((word) => word.toUpperCase()).join('_');\n\n case 'title':\n return words.map((word) => capitalize(word)).join(' ');\n\n case 'sentence':\n return words\n .map((word, index) => (index === 0 ? capitalize(word) : word.toLowerCase()))\n .join(' ');\n\n case 'upper':\n return words.map((word) => word.toUpperCase()).join(' ');\n\n case 'lower':\n return words.map((word) => word.toLowerCase()).join(' ');\n }\n}\n","export function slugify(input: string, separator: string = '-'): string {\n return input\n // Convert to lowercase\n .toLowerCase()\n // Replace non-alphanumeric chars with separator\n .replace(/[^a-z0-9]+/g, separator)\n // Collapse multiple separators\n .replace(new RegExp(`${escapeRegExp(separator)}+`, 'g'), separator)\n // Trim separators from ends\n .replace(new RegExp(`^${escapeRegExp(separator)}|${escapeRegExp(separator)}$`, 'g'), '');\n}\n\nfunction escapeRegExp(str: string): string {\n return str.replace(/[.*+?^${}()|[\\]\\\\]/g, '\\\\$&');\n}\n","import type { TextStats } from './types';\n\nexport function getTextStats(input: string): TextStats {\n const characters = input.length;\n\n const words = input\n .split(/\\s+/)\n .filter((word) => word.length > 0);\n\n const sentences = input\n .split(/[.!?](?:\\s|$)/)\n .filter((sentence) => sentence.trim().length > 0);\n\n const paragraphs = input\n .split(/\\n\\n+/)\n .filter((paragraph) => paragraph.trim().length > 0);\n\n const lines = input.split(/\\n/);\n\n // 200 words per minute average reading speed\n const readingTimeMs = (words.length / 200) * 60 * 1000;\n\n return {\n characters,\n words: words.length,\n sentences: sentences.length,\n paragraphs: paragraphs.length,\n lines: lines.length,\n readingTimeMs,\n };\n}\n","import type { TruncateOptions } from './types';\n\nexport function truncate(input: string, options: TruncateOptions): string {\n const { length, boundary = 'word', suffix = '...' } = options;\n\n if (input.length <= length) {\n return input;\n }\n\n const maxContentLength = length - suffix.length;\n\n if (maxContentLength <= 0) {\n return suffix.slice(0, length);\n }\n\n if (boundary === 'character') {\n return input.slice(0, maxContentLength) + suffix;\n }\n\n // Word boundary: find last space before maxContentLength\n const truncated = input.slice(0, maxContentLength);\n const lastSpaceIndex = truncated.lastIndexOf(' ');\n\n if (lastSpaceIndex === -1) {\n // No space found, fall back to character boundary\n return truncated + suffix;\n }\n\n return input.slice(0, lastSpaceIndex) + suffix;\n}\n","const LOREM_WORDS = [\n 'lorem', 'ipsum', 'dolor', 'sit', 'amet', 'consectetur', 'adipiscing', 'elit',\n 'sed', 'do', 'eiusmod', 'tempor', 'incididunt', 'ut', 'labore', 'et', 'dolore',\n 'magna', 'aliqua', 'enim', 'ad', 'minim', 'veniam', 'quis', 'nostrud',\n 'exercitation', 'ullamco', 'laboris', 'nisi', 'aliquip', 'ex', 'ea', 'commodo',\n 'consequat', 'duis', 'aute', 'irure', 'in', 'reprehenderit', 'voluptate',\n 'velit', 'esse', 'cillum', 'fugiat', 'nulla', 'pariatur', 'excepteur', 'sint',\n 'occaecat', 'cupidatat',\n];\n\nfunction getWord(index: number): string {\n return LOREM_WORDS[index % LOREM_WORDS.length];\n}\n\nfunction generateSentence(wordOffset: number): { sentence: string; nextOffset: number } {\n // Generate a sentence with 8-15 words\n const wordCount = 8 + (wordOffset % 8); // Deterministic 8-15 range\n const words: string[] = [];\n\n for (let i = 0; i < wordCount; i++) {\n words.push(getWord(wordOffset + i));\n }\n\n // Capitalize first word\n words[0] = words[0].charAt(0).toUpperCase() + words[0].slice(1);\n\n return {\n sentence: words.join(' ') + '.',\n nextOffset: wordOffset + wordCount,\n };\n}\n\nexport function generateLorem(\n count: number,\n unit: 'words' | 'sentences' | 'paragraphs' = 'words',\n): string {\n if (count <= 0) {\n return '';\n }\n\n if (unit === 'words') {\n const words: string[] = [];\n for (let i = 0; i < count; i++) {\n words.push(getWord(i));\n }\n return words.join(' ');\n }\n\n if (unit === 'sentences') {\n const sentences: string[] = [];\n let offset = 0;\n for (let i = 0; i < count; i++) {\n const { sentence, nextOffset } = generateSentence(offset);\n sentences.push(sentence);\n offset = nextOffset;\n }\n return sentences.join(' ');\n }\n\n // paragraphs\n const paragraphs: string[] = [];\n let offset = 0;\n\n for (let i = 0; i < count; i++) {\n const sentenceCount = 3 + (i % 4); // Deterministic 3-6 range\n const sentences: string[] = [];\n\n for (let j = 0; j < sentenceCount; j++) {\n const { sentence, nextOffset } = generateSentence(offset);\n sentences.push(sentence);\n offset = nextOffset;\n }\n\n paragraphs.push(sentences.join(' '));\n }\n\n return paragraphs.join('\\n\\n');\n}\n","import type { SimilarityResult } from './types';\n\nexport function similarity(a: string, b: string): SimilarityResult {\n // Handle edge cases\n if (a === b) {\n return { distance: 0, similarity: 1.0 };\n }\n\n if (a.length === 0) {\n return { distance: b.length, similarity: 0 };\n }\n\n if (b.length === 0) {\n return { distance: a.length, similarity: 0 };\n }\n\n // Wagner-Fischer algorithm for Levenshtein distance\n const m = a.length;\n const n = b.length;\n\n // Create a 2D matrix (m+1) x (n+1)\n const dp: number[][] = [];\n\n for (let i = 0; i <= m; i++) {\n dp[i] = new Array(n + 1);\n dp[i][0] = i;\n }\n\n for (let j = 0; j <= n; j++) {\n dp[0][j] = j;\n }\n\n for (let i = 1; i <= m; i++) {\n for (let j = 1; j <= n; j++) {\n const cost = a[i - 1] === b[j - 1] ? 0 : 1;\n dp[i][j] = Math.min(\n dp[i - 1][j] + 1, // deletion\n dp[i][j - 1] + 1, // insertion\n dp[i - 1][j - 1] + cost, // substitution\n );\n }\n }\n\n const distance = dp[m][n];\n const maxLength = Math.max(m, n);\n const sim = 1 - distance / maxLength;\n\n return { distance, similarity: sim };\n}\n","import type { TemplateResult } from './types';\n\nexport function interpolate(\n template: string,\n variables: Record<string, string>,\n): TemplateResult {\n const missingKeys: string[] = [];\n\n const result = template.replace(/\\{\\{\\s*(\\w+)\\s*\\}\\}/g, (match, key: string) => {\n if (key in variables) {\n return variables[key];\n }\n missingKeys.push(key);\n return match;\n });\n\n // Deduplicate missing keys while preserving order\n const uniqueMissingKeys = [...new Set(missingKeys)];\n\n return { result, missingKeys: uniqueMissingKeys };\n}\n"]}
@@ -0,0 +1,242 @@
1
+ // src/text/case.ts
2
+ function splitWords(input) {
3
+ return input.replace(/([a-z])([A-Z])/g, "$1 $2").replace(/([A-Z]+)([A-Z][a-z])/g, "$1 $2").replace(/[-_]/g, " ").split(/\s+/).filter((word) => word.length > 0);
4
+ }
5
+ function capitalize(word) {
6
+ return word.charAt(0).toUpperCase() + word.slice(1).toLowerCase();
7
+ }
8
+ function convertCase(input, to) {
9
+ const words = splitWords(input);
10
+ if (words.length === 0) {
11
+ return "";
12
+ }
13
+ switch (to) {
14
+ case "camel":
15
+ return words.map((word, index) => index === 0 ? word.toLowerCase() : capitalize(word)).join("");
16
+ case "pascal":
17
+ return words.map((word) => capitalize(word)).join("");
18
+ case "snake":
19
+ return words.map((word) => word.toLowerCase()).join("_");
20
+ case "kebab":
21
+ return words.map((word) => word.toLowerCase()).join("-");
22
+ case "constant":
23
+ return words.map((word) => word.toUpperCase()).join("_");
24
+ case "title":
25
+ return words.map((word) => capitalize(word)).join(" ");
26
+ case "sentence":
27
+ return words.map((word, index) => index === 0 ? capitalize(word) : word.toLowerCase()).join(" ");
28
+ case "upper":
29
+ return words.map((word) => word.toUpperCase()).join(" ");
30
+ case "lower":
31
+ return words.map((word) => word.toLowerCase()).join(" ");
32
+ }
33
+ }
34
+
35
+ // src/text/slug.ts
36
+ function slugify(input, separator = "-") {
37
+ return input.toLowerCase().replace(/[^a-z0-9]+/g, separator).replace(new RegExp(`${escapeRegExp(separator)}+`, "g"), separator).replace(new RegExp(`^${escapeRegExp(separator)}|${escapeRegExp(separator)}$`, "g"), "");
38
+ }
39
+ function escapeRegExp(str) {
40
+ return str.replace(/[.*+?^${}()|[\]\\]/g, "\\$&");
41
+ }
42
+
43
+ // src/text/stats.ts
44
+ function getTextStats(input) {
45
+ const characters = input.length;
46
+ const words = input.split(/\s+/).filter((word) => word.length > 0);
47
+ const sentences = input.split(/[.!?](?:\s|$)/).filter((sentence) => sentence.trim().length > 0);
48
+ const paragraphs = input.split(/\n\n+/).filter((paragraph) => paragraph.trim().length > 0);
49
+ const lines = input.split(/\n/);
50
+ const readingTimeMs = words.length / 200 * 60 * 1e3;
51
+ return {
52
+ characters,
53
+ words: words.length,
54
+ sentences: sentences.length,
55
+ paragraphs: paragraphs.length,
56
+ lines: lines.length,
57
+ readingTimeMs
58
+ };
59
+ }
60
+
61
+ // src/text/truncate.ts
62
+ function truncate(input, options) {
63
+ const { length, boundary = "word", suffix = "..." } = options;
64
+ if (input.length <= length) {
65
+ return input;
66
+ }
67
+ const maxContentLength = length - suffix.length;
68
+ if (maxContentLength <= 0) {
69
+ return suffix.slice(0, length);
70
+ }
71
+ if (boundary === "character") {
72
+ return input.slice(0, maxContentLength) + suffix;
73
+ }
74
+ const truncated = input.slice(0, maxContentLength);
75
+ const lastSpaceIndex = truncated.lastIndexOf(" ");
76
+ if (lastSpaceIndex === -1) {
77
+ return truncated + suffix;
78
+ }
79
+ return input.slice(0, lastSpaceIndex) + suffix;
80
+ }
81
+
82
+ // src/text/lorem.ts
83
+ var LOREM_WORDS = [
84
+ "lorem",
85
+ "ipsum",
86
+ "dolor",
87
+ "sit",
88
+ "amet",
89
+ "consectetur",
90
+ "adipiscing",
91
+ "elit",
92
+ "sed",
93
+ "do",
94
+ "eiusmod",
95
+ "tempor",
96
+ "incididunt",
97
+ "ut",
98
+ "labore",
99
+ "et",
100
+ "dolore",
101
+ "magna",
102
+ "aliqua",
103
+ "enim",
104
+ "ad",
105
+ "minim",
106
+ "veniam",
107
+ "quis",
108
+ "nostrud",
109
+ "exercitation",
110
+ "ullamco",
111
+ "laboris",
112
+ "nisi",
113
+ "aliquip",
114
+ "ex",
115
+ "ea",
116
+ "commodo",
117
+ "consequat",
118
+ "duis",
119
+ "aute",
120
+ "irure",
121
+ "in",
122
+ "reprehenderit",
123
+ "voluptate",
124
+ "velit",
125
+ "esse",
126
+ "cillum",
127
+ "fugiat",
128
+ "nulla",
129
+ "pariatur",
130
+ "excepteur",
131
+ "sint",
132
+ "occaecat",
133
+ "cupidatat"
134
+ ];
135
+ function getWord(index) {
136
+ return LOREM_WORDS[index % LOREM_WORDS.length];
137
+ }
138
+ function generateSentence(wordOffset) {
139
+ const wordCount = 8 + wordOffset % 8;
140
+ const words = [];
141
+ for (let i = 0; i < wordCount; i++) {
142
+ words.push(getWord(wordOffset + i));
143
+ }
144
+ words[0] = words[0].charAt(0).toUpperCase() + words[0].slice(1);
145
+ return {
146
+ sentence: words.join(" ") + ".",
147
+ nextOffset: wordOffset + wordCount
148
+ };
149
+ }
150
+ function generateLorem(count, unit = "words") {
151
+ if (count <= 0) {
152
+ return "";
153
+ }
154
+ if (unit === "words") {
155
+ const words = [];
156
+ for (let i = 0; i < count; i++) {
157
+ words.push(getWord(i));
158
+ }
159
+ return words.join(" ");
160
+ }
161
+ if (unit === "sentences") {
162
+ const sentences = [];
163
+ let offset2 = 0;
164
+ for (let i = 0; i < count; i++) {
165
+ const { sentence, nextOffset } = generateSentence(offset2);
166
+ sentences.push(sentence);
167
+ offset2 = nextOffset;
168
+ }
169
+ return sentences.join(" ");
170
+ }
171
+ const paragraphs = [];
172
+ let offset = 0;
173
+ for (let i = 0; i < count; i++) {
174
+ const sentenceCount = 3 + i % 4;
175
+ const sentences = [];
176
+ for (let j = 0; j < sentenceCount; j++) {
177
+ const { sentence, nextOffset } = generateSentence(offset);
178
+ sentences.push(sentence);
179
+ offset = nextOffset;
180
+ }
181
+ paragraphs.push(sentences.join(" "));
182
+ }
183
+ return paragraphs.join("\n\n");
184
+ }
185
+
186
+ // src/text/similarity.ts
187
+ function similarity(a, b) {
188
+ if (a === b) {
189
+ return { distance: 0, similarity: 1 };
190
+ }
191
+ if (a.length === 0) {
192
+ return { distance: b.length, similarity: 0 };
193
+ }
194
+ if (b.length === 0) {
195
+ return { distance: a.length, similarity: 0 };
196
+ }
197
+ const m = a.length;
198
+ const n = b.length;
199
+ const dp = [];
200
+ for (let i = 0; i <= m; i++) {
201
+ dp[i] = new Array(n + 1);
202
+ dp[i][0] = i;
203
+ }
204
+ for (let j = 0; j <= n; j++) {
205
+ dp[0][j] = j;
206
+ }
207
+ for (let i = 1; i <= m; i++) {
208
+ for (let j = 1; j <= n; j++) {
209
+ const cost = a[i - 1] === b[j - 1] ? 0 : 1;
210
+ dp[i][j] = Math.min(
211
+ dp[i - 1][j] + 1,
212
+ // deletion
213
+ dp[i][j - 1] + 1,
214
+ // insertion
215
+ dp[i - 1][j - 1] + cost
216
+ // substitution
217
+ );
218
+ }
219
+ }
220
+ const distance = dp[m][n];
221
+ const maxLength = Math.max(m, n);
222
+ const sim = 1 - distance / maxLength;
223
+ return { distance, similarity: sim };
224
+ }
225
+
226
+ // src/text/template.ts
227
+ function interpolate(template, variables) {
228
+ const missingKeys = [];
229
+ const result = template.replace(/\{\{\s*(\w+)\s*\}\}/g, (match, key) => {
230
+ if (key in variables) {
231
+ return variables[key];
232
+ }
233
+ missingKeys.push(key);
234
+ return match;
235
+ });
236
+ const uniqueMissingKeys = [...new Set(missingKeys)];
237
+ return { result, missingKeys: uniqueMissingKeys };
238
+ }
239
+
240
+ export { convertCase, generateLorem, getTextStats, interpolate, similarity, slugify, truncate };
241
+ //# sourceMappingURL=index.mjs.map
242
+ //# sourceMappingURL=index.mjs.map