@elgap/edukaai 0.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 (306) hide show
  1. package/.output/nitro.json +15 -0
  2. package/.output/public/_nuxt/BHDzAs85.js +1 -0
  3. package/.output/public/_nuxt/BJzbfdL_.js +1 -0
  4. package/.output/public/_nuxt/BKGLlKXk.js +6 -0
  5. package/.output/public/_nuxt/BLuXzJk3.js +1 -0
  6. package/.output/public/_nuxt/BNOzzLI3.js +1 -0
  7. package/.output/public/_nuxt/BO5GMwXh.js +1 -0
  8. package/.output/public/_nuxt/BQRbsFGy.js +1 -0
  9. package/.output/public/_nuxt/Be4MVdOg.js +1 -0
  10. package/.output/public/_nuxt/Bu4d3Z1T.js +1 -0
  11. package/.output/public/_nuxt/BwpBBNv4.js +1 -0
  12. package/.output/public/_nuxt/C1Og9-6n.js +97 -0
  13. package/.output/public/_nuxt/C3CjAhtj.js +1 -0
  14. package/.output/public/_nuxt/C6E3Ty3z.js +1 -0
  15. package/.output/public/_nuxt/COct4B42.js +1 -0
  16. package/.output/public/_nuxt/CQ6g2dtj.js +1 -0
  17. package/.output/public/_nuxt/CURSW5TV.js +246 -0
  18. package/.output/public/_nuxt/CW57JW4s.js +1 -0
  19. package/.output/public/_nuxt/Cg2fM61o.js +18 -0
  20. package/.output/public/_nuxt/CgGOeWta.js +1 -0
  21. package/.output/public/_nuxt/CoyYbT7u.js +1 -0
  22. package/.output/public/_nuxt/D11MHbGc.js +133 -0
  23. package/.output/public/_nuxt/D24dz0S8.js +1 -0
  24. package/.output/public/_nuxt/D3EFPr8x.js +1 -0
  25. package/.output/public/_nuxt/Dvt4ZHil.js +1 -0
  26. package/.output/public/_nuxt/builds/latest.json +1 -0
  27. package/.output/public/_nuxt/builds/meta/ab87ba0e-6d0d-4466-8b12-00d44f8fb9d3.json +1 -0
  28. package/.output/public/_nuxt/default.C1K1-g4D.css +1 -0
  29. package/.output/public/_nuxt/entry.CH8k-Mga.css +1 -0
  30. package/.output/public/_nuxt/error-404.C-Ezrlz-.css +1 -0
  31. package/.output/public/_nuxt/error-500.DBWf9FGj.css +1 -0
  32. package/.output/public/_nuxt/first-training.wFDD65zm.css +1 -0
  33. package/.output/public/_nuxt/import.cUKYdCrq.css +1 -0
  34. package/.output/public/_nuxt/index.D-2VHyHA.css +1 -0
  35. package/.output/public/_nuxt/index.D4J_vHmL.css +1 -0
  36. package/.output/public/_nuxt/mPJeLIz7.js +1 -0
  37. package/.output/server/chunks/_/error-500.mjs +19 -0
  38. package/.output/server/chunks/_/error-500.mjs.map +1 -0
  39. package/.output/server/chunks/build/ExampleCard-styles.BUOJhEg0.mjs +8 -0
  40. package/.output/server/chunks/build/ExampleCard-styles.BUOJhEg0.mjs.map +1 -0
  41. package/.output/server/chunks/build/ExampleForm-Bcpl0CfL.mjs +238 -0
  42. package/.output/server/chunks/build/ExampleForm-Bcpl0CfL.mjs.map +1 -0
  43. package/.output/server/chunks/build/ImportPreview-styles.CFmMl5Ok.mjs +8 -0
  44. package/.output/server/chunks/build/ImportPreview-styles.CFmMl5Ok.mjs.map +1 -0
  45. package/.output/server/chunks/build/_id_-BUSGcL-H.mjs +113 -0
  46. package/.output/server/chunks/build/_id_-BUSGcL-H.mjs.map +1 -0
  47. package/.output/server/chunks/build/axolotl-C-EXGgM8.mjs +112 -0
  48. package/.output/server/chunks/build/axolotl-C-EXGgM8.mjs.map +1 -0
  49. package/.output/server/chunks/build/best-practices-DsadorHb.mjs +38 -0
  50. package/.output/server/chunks/build/best-practices-DsadorHb.mjs.map +1 -0
  51. package/.output/server/chunks/build/client.precomputed.mjs +4 -0
  52. package/.output/server/chunks/build/client.precomputed.mjs.map +1 -0
  53. package/.output/server/chunks/build/default-DPkqqHOE.mjs +354 -0
  54. package/.output/server/chunks/build/default-DPkqqHOE.mjs.map +1 -0
  55. package/.output/server/chunks/build/default-styles.DsqVVS7k.mjs +8 -0
  56. package/.output/server/chunks/build/default-styles.DsqVVS7k.mjs.map +1 -0
  57. package/.output/server/chunks/build/error-404-K4UfZNck.mjs +97 -0
  58. package/.output/server/chunks/build/error-404-K4UfZNck.mjs.map +1 -0
  59. package/.output/server/chunks/build/error-404-styles.DuDrf-v0.mjs +8 -0
  60. package/.output/server/chunks/build/error-404-styles.DuDrf-v0.mjs.map +1 -0
  61. package/.output/server/chunks/build/error-500-CA7TEPNg.mjs +79 -0
  62. package/.output/server/chunks/build/error-500-CA7TEPNg.mjs.map +1 -0
  63. package/.output/server/chunks/build/error-500-styles.8IYEHzz6.mjs +8 -0
  64. package/.output/server/chunks/build/error-500-styles.8IYEHzz6.mjs.map +1 -0
  65. package/.output/server/chunks/build/examples-BHK8MDrs.mjs +134 -0
  66. package/.output/server/chunks/build/examples-BHK8MDrs.mjs.map +1 -0
  67. package/.output/server/chunks/build/export-BzxFqqfP.mjs +233 -0
  68. package/.output/server/chunks/build/export-BzxFqqfP.mjs.map +1 -0
  69. package/.output/server/chunks/build/faq-DKch73dS.mjs +112 -0
  70. package/.output/server/chunks/build/faq-DKch73dS.mjs.map +1 -0
  71. package/.output/server/chunks/build/field-guide-qbukT8F0.mjs +38 -0
  72. package/.output/server/chunks/build/field-guide-qbukT8F0.mjs.map +1 -0
  73. package/.output/server/chunks/build/first-training-BbEOBcEW.mjs +343 -0
  74. package/.output/server/chunks/build/first-training-BbEOBcEW.mjs.map +1 -0
  75. package/.output/server/chunks/build/first-training-styles.BzOa_KRD.mjs +8 -0
  76. package/.output/server/chunks/build/first-training-styles.BzOa_KRD.mjs.map +1 -0
  77. package/.output/server/chunks/build/glossary-CxSGCJoH.mjs +397 -0
  78. package/.output/server/chunks/build/glossary-CxSGCJoH.mjs.map +1 -0
  79. package/.output/server/chunks/build/huggingface-TSmyUzZU.mjs +128 -0
  80. package/.output/server/chunks/build/huggingface-TSmyUzZU.mjs.map +1 -0
  81. package/.output/server/chunks/build/import-C0kYhRv9.mjs +247 -0
  82. package/.output/server/chunks/build/import-C0kYhRv9.mjs.map +1 -0
  83. package/.output/server/chunks/build/index-C1ntBEWd.mjs +235 -0
  84. package/.output/server/chunks/build/index-C1ntBEWd.mjs.map +1 -0
  85. package/.output/server/chunks/build/index-D3CxihcX.mjs +320 -0
  86. package/.output/server/chunks/build/index-D3CxihcX.mjs.map +1 -0
  87. package/.output/server/chunks/build/index-DgKa1cy0.mjs +360 -0
  88. package/.output/server/chunks/build/index-DgKa1cy0.mjs.map +1 -0
  89. package/.output/server/chunks/build/index-cG54gaKX.mjs +513 -0
  90. package/.output/server/chunks/build/index-cG54gaKX.mjs.map +1 -0
  91. package/.output/server/chunks/build/index-styles.BX2SZiiS.mjs +8 -0
  92. package/.output/server/chunks/build/index-styles.BX2SZiiS.mjs.map +1 -0
  93. package/.output/server/chunks/build/llm-training-DIqc0eiM.mjs +91 -0
  94. package/.output/server/chunks/build/llm-training-DIqc0eiM.mjs.map +1 -0
  95. package/.output/server/chunks/build/new-b3338aLF.mjs +92 -0
  96. package/.output/server/chunks/build/new-b3338aLF.mjs.map +1 -0
  97. package/.output/server/chunks/build/nuxt-link-Ceyd90PQ.mjs +290 -0
  98. package/.output/server/chunks/build/nuxt-link-Ceyd90PQ.mjs.map +1 -0
  99. package/.output/server/chunks/build/sample-datasets-CVLWMQUA.mjs +45 -0
  100. package/.output/server/chunks/build/sample-datasets-CVLWMQUA.mjs.map +1 -0
  101. package/.output/server/chunks/build/server.mjs +1979 -0
  102. package/.output/server/chunks/build/server.mjs.map +1 -0
  103. package/.output/server/chunks/build/styles.mjs +20 -0
  104. package/.output/server/chunks/build/styles.mjs.map +1 -0
  105. package/.output/server/chunks/build/test-router-BYM6Cpst.mjs +105 -0
  106. package/.output/server/chunks/build/test-router-BYM6Cpst.mjs.map +1 -0
  107. package/.output/server/chunks/nitro/nitro.mjs +5800 -0
  108. package/.output/server/chunks/nitro/nitro.mjs.map +1 -0
  109. package/.output/server/chunks/routes/renderer.mjs +481 -0
  110. package/.output/server/chunks/routes/renderer.mjs.map +1 -0
  111. package/.output/server/chunks/virtual/_virtual_spa-template.mjs +4 -0
  112. package/.output/server/chunks/virtual/_virtual_spa-template.mjs.map +1 -0
  113. package/.output/server/index.mjs +12 -0
  114. package/.output/server/index.mjs.map +1 -0
  115. package/.output/server/node_modules/.nitro/@vue/devtools-api@6.6.4/lib/cjs/api/api.js +2 -0
  116. package/.output/server/node_modules/.nitro/@vue/devtools-api@6.6.4/lib/cjs/api/app.js +2 -0
  117. package/.output/server/node_modules/.nitro/@vue/devtools-api@6.6.4/lib/cjs/api/component.js +2 -0
  118. package/.output/server/node_modules/.nitro/@vue/devtools-api@6.6.4/lib/cjs/api/context.js +2 -0
  119. package/.output/server/node_modules/.nitro/@vue/devtools-api@6.6.4/lib/cjs/api/hooks.js +2 -0
  120. package/.output/server/node_modules/.nitro/@vue/devtools-api@6.6.4/lib/cjs/api/index.js +22 -0
  121. package/.output/server/node_modules/.nitro/@vue/devtools-api@6.6.4/lib/cjs/api/util.js +2 -0
  122. package/.output/server/node_modules/.nitro/@vue/devtools-api@6.6.4/lib/cjs/const.js +5 -0
  123. package/.output/server/node_modules/.nitro/@vue/devtools-api@6.6.4/lib/cjs/env.js +17 -0
  124. package/.output/server/node_modules/.nitro/@vue/devtools-api@6.6.4/lib/cjs/index.js +45 -0
  125. package/.output/server/node_modules/.nitro/@vue/devtools-api@6.6.4/lib/cjs/plugin.js +2 -0
  126. package/.output/server/node_modules/.nitro/@vue/devtools-api@6.6.4/lib/cjs/proxy.js +111 -0
  127. package/.output/server/node_modules/.nitro/@vue/devtools-api@6.6.4/lib/cjs/time.js +28 -0
  128. package/.output/server/node_modules/.nitro/@vue/devtools-api@6.6.4/package.json +37 -0
  129. package/.output/server/node_modules/.nitro/@vue/devtools-api@7.7.9/dist/index.cjs +42 -0
  130. package/.output/server/node_modules/.nitro/@vue/devtools-api@7.7.9/package.json +32 -0
  131. package/.output/server/node_modules/.nitro/hookable@5.5.3/dist/index.cjs +299 -0
  132. package/.output/server/node_modules/.nitro/hookable@5.5.3/package.json +49 -0
  133. package/.output/server/node_modules/.nitro/hookable@6.0.1/dist/index.mjs +266 -0
  134. package/.output/server/node_modules/.nitro/hookable@6.0.1/package.json +52 -0
  135. package/.output/server/node_modules/.nitro/perfect-debounce@1.0.0/dist/index.cjs +59 -0
  136. package/.output/server/node_modules/.nitro/perfect-debounce@1.0.0/package.json +44 -0
  137. package/.output/server/node_modules/.nitro/perfect-debounce@2.1.0/dist/index.mjs +89 -0
  138. package/.output/server/node_modules/.nitro/perfect-debounce@2.1.0/package.json +41 -0
  139. package/.output/server/node_modules/@babel/parser/lib/index.js +14582 -0
  140. package/.output/server/node_modules/@babel/parser/package.json +50 -0
  141. package/.output/server/node_modules/@iconify/utils/lib/colors/index.js +292 -0
  142. package/.output/server/node_modules/@iconify/utils/lib/colors/keywords.js +702 -0
  143. package/.output/server/node_modules/@iconify/utils/lib/css/common.js +76 -0
  144. package/.output/server/node_modules/@iconify/utils/lib/css/format.js +40 -0
  145. package/.output/server/node_modules/@iconify/utils/lib/css/icon.js +52 -0
  146. package/.output/server/node_modules/@iconify/utils/lib/css/icons.js +133 -0
  147. package/.output/server/node_modules/@iconify/utils/lib/customisations/bool.js +20 -0
  148. package/.output/server/node_modules/@iconify/utils/lib/customisations/defaults.js +15 -0
  149. package/.output/server/node_modules/@iconify/utils/lib/customisations/flip.js +18 -0
  150. package/.output/server/node_modules/@iconify/utils/lib/customisations/merge.js +18 -0
  151. package/.output/server/node_modules/@iconify/utils/lib/customisations/rotate.js +31 -0
  152. package/.output/server/node_modules/@iconify/utils/lib/emoji/cleanup.js +80 -0
  153. package/.output/server/node_modules/@iconify/utils/lib/emoji/convert.js +102 -0
  154. package/.output/server/node_modules/@iconify/utils/lib/emoji/data.js +29 -0
  155. package/.output/server/node_modules/@iconify/utils/lib/emoji/format.js +60 -0
  156. package/.output/server/node_modules/@iconify/utils/lib/emoji/parse.js +50 -0
  157. package/.output/server/node_modules/@iconify/utils/lib/emoji/regex/base.js +204 -0
  158. package/.output/server/node_modules/@iconify/utils/lib/emoji/regex/create.js +35 -0
  159. package/.output/server/node_modules/@iconify/utils/lib/emoji/regex/numbers.js +134 -0
  160. package/.output/server/node_modules/@iconify/utils/lib/emoji/regex/similar.js +167 -0
  161. package/.output/server/node_modules/@iconify/utils/lib/emoji/regex/tree.js +81 -0
  162. package/.output/server/node_modules/@iconify/utils/lib/emoji/replace/find.js +94 -0
  163. package/.output/server/node_modules/@iconify/utils/lib/emoji/replace/replace.js +28 -0
  164. package/.output/server/node_modules/@iconify/utils/lib/emoji/test/components.js +78 -0
  165. package/.output/server/node_modules/@iconify/utils/lib/emoji/test/missing.js +68 -0
  166. package/.output/server/node_modules/@iconify/utils/lib/emoji/test/name.js +47 -0
  167. package/.output/server/node_modules/@iconify/utils/lib/emoji/test/parse.js +105 -0
  168. package/.output/server/node_modules/@iconify/utils/lib/emoji/test/similar.js +38 -0
  169. package/.output/server/node_modules/@iconify/utils/lib/emoji/test/tree.js +94 -0
  170. package/.output/server/node_modules/@iconify/utils/lib/emoji/test/variations.js +64 -0
  171. package/.output/server/node_modules/@iconify/utils/lib/icon/defaults.js +26 -0
  172. package/.output/server/node_modules/@iconify/utils/lib/icon/merge.js +18 -0
  173. package/.output/server/node_modules/@iconify/utils/lib/icon/name.js +58 -0
  174. package/.output/server/node_modules/@iconify/utils/lib/icon/square.js +34 -0
  175. package/.output/server/node_modules/@iconify/utils/lib/icon/transformations.js +13 -0
  176. package/.output/server/node_modules/@iconify/utils/lib/icon-set/convert-info.js +126 -0
  177. package/.output/server/node_modules/@iconify/utils/lib/icon-set/expand.js +21 -0
  178. package/.output/server/node_modules/@iconify/utils/lib/icon-set/get-icon.js +27 -0
  179. package/.output/server/node_modules/@iconify/utils/lib/icon-set/get-icons.js +38 -0
  180. package/.output/server/node_modules/@iconify/utils/lib/icon-set/minify.js +93 -0
  181. package/.output/server/node_modules/@iconify/utils/lib/icon-set/parse.js +48 -0
  182. package/.output/server/node_modules/@iconify/utils/lib/icon-set/tree.js +24 -0
  183. package/.output/server/node_modules/@iconify/utils/lib/icon-set/validate-basic.js +44 -0
  184. package/.output/server/node_modules/@iconify/utils/lib/icon-set/validate.js +125 -0
  185. package/.output/server/node_modules/@iconify/utils/lib/index.js +53 -0
  186. package/.output/server/node_modules/@iconify/utils/lib/loader/custom.js +32 -0
  187. package/.output/server/node_modules/@iconify/utils/lib/loader/loader.js +28 -0
  188. package/.output/server/node_modules/@iconify/utils/lib/loader/modern.js +42 -0
  189. package/.output/server/node_modules/@iconify/utils/lib/loader/utils.js +63 -0
  190. package/.output/server/node_modules/@iconify/utils/lib/misc/objects.js +27 -0
  191. package/.output/server/node_modules/@iconify/utils/lib/misc/strings.js +27 -0
  192. package/.output/server/node_modules/@iconify/utils/lib/misc/title.js +10 -0
  193. package/.output/server/node_modules/@iconify/utils/lib/svg/build.js +115 -0
  194. package/.output/server/node_modules/@iconify/utils/lib/svg/defs.js +32 -0
  195. package/.output/server/node_modules/@iconify/utils/lib/svg/encode-svg-for-css.js +15 -0
  196. package/.output/server/node_modules/@iconify/utils/lib/svg/html.js +10 -0
  197. package/.output/server/node_modules/@iconify/utils/lib/svg/id.js +42 -0
  198. package/.output/server/node_modules/@iconify/utils/lib/svg/inner-html.js +23 -0
  199. package/.output/server/node_modules/@iconify/utils/lib/svg/parse.js +69 -0
  200. package/.output/server/node_modules/@iconify/utils/lib/svg/pretty.js +55 -0
  201. package/.output/server/node_modules/@iconify/utils/lib/svg/size.js +28 -0
  202. package/.output/server/node_modules/@iconify/utils/lib/svg/trim.js +8 -0
  203. package/.output/server/node_modules/@iconify/utils/lib/svg/url.js +23 -0
  204. package/.output/server/node_modules/@iconify/utils/lib/svg/viewbox.js +9 -0
  205. package/.output/server/node_modules/@iconify/utils/package.json +118 -0
  206. package/.output/server/node_modules/@iconify/vue/dist/iconify.mjs +1893 -0
  207. package/.output/server/node_modules/@iconify/vue/package.json +64 -0
  208. package/.output/server/node_modules/@vue/compiler-core/dist/compiler-core.cjs.prod.js +6763 -0
  209. package/.output/server/node_modules/@vue/compiler-core/package.json +58 -0
  210. package/.output/server/node_modules/@vue/compiler-dom/dist/compiler-dom.cjs.prod.js +689 -0
  211. package/.output/server/node_modules/@vue/compiler-dom/package.json +57 -0
  212. package/.output/server/node_modules/@vue/compiler-ssr/dist/compiler-ssr.cjs.js +1413 -0
  213. package/.output/server/node_modules/@vue/compiler-ssr/package.json +34 -0
  214. package/.output/server/node_modules/@vue/devtools-kit/dist/index.cjs +6850 -0
  215. package/.output/server/node_modules/@vue/devtools-kit/package.json +44 -0
  216. package/.output/server/node_modules/@vue/devtools-shared/dist/index.cjs +378 -0
  217. package/.output/server/node_modules/@vue/devtools-shared/package.json +34 -0
  218. package/.output/server/node_modules/@vue/reactivity/dist/reactivity.cjs.prod.js +1870 -0
  219. package/.output/server/node_modules/@vue/reactivity/package.json +55 -0
  220. package/.output/server/node_modules/@vue/runtime-core/dist/runtime-core.cjs.prod.js +6810 -0
  221. package/.output/server/node_modules/@vue/runtime-core/package.json +52 -0
  222. package/.output/server/node_modules/@vue/runtime-dom/dist/runtime-dom.cjs.prod.js +1750 -0
  223. package/.output/server/node_modules/@vue/runtime-dom/package.json +60 -0
  224. package/.output/server/node_modules/@vue/server-renderer/dist/server-renderer.cjs.prod.js +883 -0
  225. package/.output/server/node_modules/@vue/server-renderer/package.json +55 -0
  226. package/.output/server/node_modules/@vue/shared/dist/shared.cjs.prod.js +604 -0
  227. package/.output/server/node_modules/@vue/shared/package.json +47 -0
  228. package/.output/server/node_modules/birpc/dist/index.cjs +296 -0
  229. package/.output/server/node_modules/birpc/package.json +57 -0
  230. package/.output/server/node_modules/consola/dist/chunks/prompt.mjs +280 -0
  231. package/.output/server/node_modules/consola/dist/core.mjs +512 -0
  232. package/.output/server/node_modules/consola/dist/index.mjs +651 -0
  233. package/.output/server/node_modules/consola/dist/shared/consola.DRwqZj3T.mjs +72 -0
  234. package/.output/server/node_modules/consola/dist/shared/consola.DXBYu-KD.mjs +288 -0
  235. package/.output/server/node_modules/consola/package.json +136 -0
  236. package/.output/server/node_modules/devalue/index.js +4 -0
  237. package/.output/server/node_modules/devalue/package.json +37 -0
  238. package/.output/server/node_modules/devalue/src/base64.js +110 -0
  239. package/.output/server/node_modules/devalue/src/constants.js +7 -0
  240. package/.output/server/node_modules/devalue/src/parse.js +246 -0
  241. package/.output/server/node_modules/devalue/src/stringify.js +350 -0
  242. package/.output/server/node_modules/devalue/src/uneval.js +490 -0
  243. package/.output/server/node_modules/devalue/src/utils.js +148 -0
  244. package/.output/server/node_modules/entities/dist/commonjs/decode-codepoint.js +77 -0
  245. package/.output/server/node_modules/entities/dist/commonjs/decode.js +568 -0
  246. package/.output/server/node_modules/entities/dist/commonjs/generated/decode-data-html.js +7 -0
  247. package/.output/server/node_modules/entities/dist/commonjs/generated/decode-data-xml.js +7 -0
  248. package/.output/server/node_modules/entities/dist/commonjs/internal/bin-trie-flags.js +21 -0
  249. package/.output/server/node_modules/entities/dist/commonjs/internal/decode-shared.js +31 -0
  250. package/.output/server/node_modules/entities/dist/commonjs/package.json +3 -0
  251. package/.output/server/node_modules/entities/package.json +120 -0
  252. package/.output/server/node_modules/estree-walker/dist/umd/estree-walker.js +344 -0
  253. package/.output/server/node_modules/estree-walker/package.json +37 -0
  254. package/.output/server/node_modules/pinia/dist/pinia.prod.cjs +719 -0
  255. package/.output/server/node_modules/pinia/package.json +94 -0
  256. package/.output/server/node_modules/source-map-js/lib/array-set.js +121 -0
  257. package/.output/server/node_modules/source-map-js/lib/base64-vlq.js +140 -0
  258. package/.output/server/node_modules/source-map-js/lib/base64.js +67 -0
  259. package/.output/server/node_modules/source-map-js/lib/binary-search.js +111 -0
  260. package/.output/server/node_modules/source-map-js/lib/mapping-list.js +79 -0
  261. package/.output/server/node_modules/source-map-js/lib/quick-sort.js +132 -0
  262. package/.output/server/node_modules/source-map-js/lib/source-map-consumer.js +1188 -0
  263. package/.output/server/node_modules/source-map-js/lib/source-map-generator.js +444 -0
  264. package/.output/server/node_modules/source-map-js/lib/source-node.js +413 -0
  265. package/.output/server/node_modules/source-map-js/lib/util.js +594 -0
  266. package/.output/server/node_modules/source-map-js/package.json +71 -0
  267. package/.output/server/node_modules/source-map-js/source-map.js +8 -0
  268. package/.output/server/node_modules/tailwindcss/dist/chunk-X4GG3EDV.mjs +1 -0
  269. package/.output/server/node_modules/tailwindcss/dist/colors.mjs +1 -0
  270. package/.output/server/node_modules/tailwindcss/package.json +89 -0
  271. package/.output/server/node_modules/ufo/dist/index.mjs +645 -0
  272. package/.output/server/node_modules/ufo/package.json +48 -0
  273. package/.output/server/node_modules/unhead/dist/index.mjs +9 -0
  274. package/.output/server/node_modules/unhead/dist/parser.mjs +508 -0
  275. package/.output/server/node_modules/unhead/dist/plugins.mjs +101 -0
  276. package/.output/server/node_modules/unhead/dist/scripts.mjs +30 -0
  277. package/.output/server/node_modules/unhead/dist/server.mjs +180 -0
  278. package/.output/server/node_modules/unhead/dist/shared/unhead.BPM0-cfG.mjs +44 -0
  279. package/.output/server/node_modules/unhead/dist/shared/unhead.BYvz9V1x.mjs +43 -0
  280. package/.output/server/node_modules/unhead/dist/shared/unhead.BnoAbrHA.mjs +269 -0
  281. package/.output/server/node_modules/unhead/dist/shared/unhead.CApf5sj3.mjs +148 -0
  282. package/.output/server/node_modules/unhead/dist/shared/unhead.CbpEuj3y.mjs +71 -0
  283. package/.output/server/node_modules/unhead/dist/shared/unhead.DQc16pHI.mjs +196 -0
  284. package/.output/server/node_modules/unhead/dist/shared/unhead.D_nrZZPH.mjs +182 -0
  285. package/.output/server/node_modules/unhead/dist/shared/unhead.ckV6dpEQ.mjs +166 -0
  286. package/.output/server/node_modules/unhead/dist/shared/unhead.fVVqDC1O.mjs +203 -0
  287. package/.output/server/node_modules/unhead/dist/shared/unhead.yem5I2v_.mjs +38 -0
  288. package/.output/server/node_modules/unhead/dist/utils.mjs +5 -0
  289. package/.output/server/node_modules/unhead/package.json +105 -0
  290. package/.output/server/node_modules/vue/dist/vue.cjs.js +80 -0
  291. package/.output/server/node_modules/vue/dist/vue.cjs.prod.js +66 -0
  292. package/.output/server/node_modules/vue/index.js +7 -0
  293. package/.output/server/node_modules/vue/index.mjs +1 -0
  294. package/.output/server/node_modules/vue/package.json +112 -0
  295. package/.output/server/node_modules/vue/server-renderer/index.mjs +1 -0
  296. package/.output/server/node_modules/vue-bundle-renderer/dist/runtime.mjs +301 -0
  297. package/.output/server/node_modules/vue-bundle-renderer/package.json +55 -0
  298. package/.output/server/node_modules/vue-router/dist/devtools-EWN81iOl.mjs +1220 -0
  299. package/.output/server/node_modules/vue-router/dist/vue-router.mjs +1557 -0
  300. package/.output/server/node_modules/vue-router/package.json +153 -0
  301. package/.output/server/node_modules/vue-router/vue-router.node.mjs +2 -0
  302. package/.output/server/package.json +37 -0
  303. package/LICENSE +21 -0
  304. package/README.md +132 -0
  305. package/bin/cli.js +75 -0
  306. package/package.json +71 -0
@@ -0,0 +1,50 @@
1
+ import { getEmojiSequenceFromString, getUnqualifiedEmojiSequence } from "./cleanup.js";
2
+ import { getEmojiSequenceKeyword } from "./format.js";
3
+ import { parseEmojiTestFile } from "./test/parse.js";
4
+ import { getQualifiedEmojiVariations } from "./test/variations.js";
5
+ import { findMissingEmojis } from "./test/missing.js";
6
+ import { createOptimisedRegexForEmojiSequences } from "./regex/create.js";
7
+ import { combineSimilarEmojiTestData } from "./test/similar.js";
8
+ import { getEmojiTestDataTree } from "./test/tree.js";
9
+
10
+ /**
11
+ * Prepare emoji for icons list
12
+ *
13
+ * Test data should be fetched from 'https://unicode.org/Public/emoji/17.0/emoji-test.txt'
14
+ * It is used to detect missing emojis and optimise regular expression
15
+ */
16
+ function prepareEmojiForIconsList(icons, rawTestData) {
17
+ const testData = rawTestData ? parseEmojiTestFile(rawTestData) : void 0;
18
+ let iconsList = [];
19
+ for (const char in icons) {
20
+ const sequence = getEmojiSequenceFromString(char);
21
+ iconsList.push({
22
+ icon: icons[char],
23
+ sequence
24
+ });
25
+ }
26
+ iconsList = getQualifiedEmojiVariations(iconsList);
27
+ if (testData) iconsList = iconsList.concat(findMissingEmojis(iconsList, getEmojiTestDataTree(combineSimilarEmojiTestData(testData))));
28
+ const preparedIcons = iconsList.map((item) => {
29
+ const sequence = getEmojiSequenceKeyword(getUnqualifiedEmojiSequence(item.sequence));
30
+ return {
31
+ icon: item.icon,
32
+ sequence
33
+ };
34
+ });
35
+ return {
36
+ regex: createOptimisedRegexForEmojiSequences(iconsList.map((item) => item.sequence)),
37
+ icons: preparedIcons
38
+ };
39
+ }
40
+ /**
41
+ * Prepare emoji for an icon set
42
+ *
43
+ * Test data should be fetched from 'https://unicode.org/Public/emoji/15.1/emoji-test.txt'
44
+ * It is used to detect missing emojis and optimise regular expression
45
+ */
46
+ function prepareEmojiForIconSet(iconSet, rawTestData) {
47
+ return prepareEmojiForIconsList(iconSet.chars || {}, rawTestData);
48
+ }
49
+
50
+ export { prepareEmojiForIconSet, prepareEmojiForIconsList };
@@ -0,0 +1,204 @@
1
+ /**
2
+ * Convert number to string
3
+ */
4
+ function toString(number) {
5
+ if (number < 255) {
6
+ if (number > 32 && number < 127) {
7
+ const char = String.fromCharCode(number);
8
+ if (number > 47 && number < 58 || number > 64 && number < 91 || number > 94 && number < 123) return char;
9
+ return "\\" + char;
10
+ }
11
+ return "\\x" + (number < 16 ? "0" : "") + number.toString(16).toUpperCase();
12
+ }
13
+ return "\\u" + number.toString(16).toUpperCase();
14
+ }
15
+ /**
16
+ * Typescript stuff
17
+ */
18
+ function assertNever(v) {}
19
+ /**
20
+ * Wrap regex in group
21
+ */
22
+ function wrapRegexInGroup(regex) {
23
+ return "(?:" + regex + ")";
24
+ }
25
+ /**
26
+ * Update UTF16 item, return regex
27
+ */
28
+ function updateUTF16EmojiRegexItem(item) {
29
+ const numbers = item.numbers;
30
+ if (numbers.length === 1) {
31
+ const num = numbers[0];
32
+ return item.regex = toString(num);
33
+ }
34
+ numbers.sort((a, b) => a - b);
35
+ const chars = [];
36
+ let range = null;
37
+ const addRange = () => {
38
+ if (range) {
39
+ const { start, last, numbers: numbers$1 } = range;
40
+ range = null;
41
+ if (last > start + 1) chars.push(toString(start) + "-" + toString(last));
42
+ else for (let i = 0; i < numbers$1.length; i++) chars.push(toString(numbers$1[i]));
43
+ }
44
+ };
45
+ for (let i = 0; i < numbers.length; i++) {
46
+ const num = numbers[i];
47
+ if (range) {
48
+ if (range.last === num) continue;
49
+ if (range.last === num - 1) {
50
+ range.numbers.push(num);
51
+ range.last = num;
52
+ continue;
53
+ }
54
+ }
55
+ addRange();
56
+ range = {
57
+ start: num,
58
+ last: num,
59
+ numbers: [num]
60
+ };
61
+ }
62
+ addRange();
63
+ if (!chars.length) throw new Error("Unexpected empty range");
64
+ return item.regex = "[" + chars.join("") + "]";
65
+ }
66
+ /**
67
+ * Create UTF-16 regex
68
+ */
69
+ function createUTF16EmojiRegexItem(numbers) {
70
+ const result = {
71
+ type: "utf16",
72
+ regex: "",
73
+ numbers,
74
+ length: 1,
75
+ group: true
76
+ };
77
+ updateUTF16EmojiRegexItem(result);
78
+ return result;
79
+ }
80
+ /**
81
+ * Update sequence regex. Does not update group
82
+ */
83
+ function updateSequenceEmojiRegexItem(item) {
84
+ return item.regex = item.items.map((childItem) => {
85
+ if (!childItem.group && childItem.type === "set") return wrapRegexInGroup(childItem.regex);
86
+ return childItem.regex;
87
+ }).join("");
88
+ }
89
+ /**
90
+ * Create sequence regex
91
+ */
92
+ function createSequenceEmojiRegexItem(sequence, numbers) {
93
+ let items = [];
94
+ sequence.forEach((item) => {
95
+ if (item.type === "sequence") items = items.concat(item.items);
96
+ else items.push(item);
97
+ });
98
+ if (!items.length) throw new Error("Empty sequence");
99
+ const result = {
100
+ type: "sequence",
101
+ items,
102
+ regex: "",
103
+ length: items.reduce((length, item) => item.length + length, 0),
104
+ group: false
105
+ };
106
+ if (sequence.length === 1) {
107
+ const firstItem = sequence[0];
108
+ result.group = firstItem.group;
109
+ if (firstItem.type !== "optional") {
110
+ const numbers$1 = firstItem.numbers;
111
+ if (numbers$1) result.numbers = numbers$1;
112
+ }
113
+ }
114
+ if (numbers) result.numbers = numbers;
115
+ updateSequenceEmojiRegexItem(result);
116
+ return result;
117
+ }
118
+ /**
119
+ * Update set regex and group
120
+ */
121
+ function updateSetEmojiRegexItem(item) {
122
+ if (item.sets.length === 1) {
123
+ const firstItem = item.sets[0];
124
+ item.group = firstItem.group;
125
+ return item.regex = firstItem.regex;
126
+ }
127
+ item.group = false;
128
+ return item.regex = item.sets.map((childItem) => childItem.regex).join("|");
129
+ }
130
+ /**
131
+ * Create set regex
132
+ */
133
+ function createSetEmojiRegexItem(set) {
134
+ let sets = [];
135
+ let numbers = [];
136
+ set.forEach((item) => {
137
+ if (item.type === "set") sets = sets.concat(item.sets);
138
+ else sets.push(item);
139
+ if (numbers) if (item.type === "optional" || !item.numbers) numbers = null;
140
+ else numbers = [...numbers, ...item.numbers];
141
+ });
142
+ sets.sort((a, b) => {
143
+ if (a.length === b.length) return a.regex.localeCompare(b.regex);
144
+ return b.length - a.length;
145
+ });
146
+ const result = {
147
+ type: "set",
148
+ sets,
149
+ regex: "",
150
+ length: sets.reduce((length, item) => length ? Math.min(length, item.length) : item.length, 0),
151
+ group: false
152
+ };
153
+ if (numbers) result.numbers = numbers;
154
+ if (set.length === 1) result.group = set[0].group;
155
+ updateSetEmojiRegexItem(result);
156
+ return result;
157
+ }
158
+ /**
159
+ * Update optional regex
160
+ */
161
+ function updateOptionalEmojiRegexItem(item) {
162
+ const childItem = item.item;
163
+ return item.regex = (childItem.group ? childItem.regex : wrapRegexInGroup(childItem.regex)) + "?";
164
+ }
165
+ /**
166
+ * Create optional item
167
+ */
168
+ function createOptionalEmojiRegexItem(item) {
169
+ if (item.type === "optional") return item;
170
+ const result = {
171
+ type: "optional",
172
+ item,
173
+ regex: "",
174
+ length: item.length,
175
+ group: true
176
+ };
177
+ updateOptionalEmojiRegexItem(result);
178
+ return result;
179
+ }
180
+ /**
181
+ * Clone item
182
+ */
183
+ function cloneEmojiRegexItem(item, shallow = false) {
184
+ const result = { ...item };
185
+ if (result.type !== "optional" && result.numbers) result.numbers = [...result.numbers];
186
+ switch (result.type) {
187
+ case "utf16": break;
188
+ case "sequence":
189
+ if (shallow) result.items = [...result.items];
190
+ else result.items = result.items.map((item$1) => cloneEmojiRegexItem(item$1, false));
191
+ break;
192
+ case "set":
193
+ if (shallow) result.sets = [...result.sets];
194
+ else result.sets = result.sets.map((item$1) => cloneEmojiRegexItem(item$1, false));
195
+ break;
196
+ case "optional":
197
+ if (!shallow) result.item = cloneEmojiRegexItem(result.item, false);
198
+ break;
199
+ default: assertNever(result);
200
+ }
201
+ return result;
202
+ }
203
+
204
+ export { cloneEmojiRegexItem, createOptionalEmojiRegexItem, createSequenceEmojiRegexItem, createSetEmojiRegexItem, createUTF16EmojiRegexItem, updateOptionalEmojiRegexItem, updateSequenceEmojiRegexItem, updateSetEmojiRegexItem, updateUTF16EmojiRegexItem, wrapRegexInGroup };
@@ -0,0 +1,35 @@
1
+ import { convertEmojiSequenceToUTF32 } from "../convert.js";
2
+ import { getSequenceFromEmojiStringOrKeyword } from "../cleanup.js";
3
+ import { getQualifiedEmojiVariations } from "../test/variations.js";
4
+ import { createEmojisTree, parseEmojiTree } from "./tree.js";
5
+
6
+ /**
7
+ * Create optimised regex
8
+ */
9
+ function createOptimisedRegexForEmojiSequences(sequences) {
10
+ sequences = sequences.map((item) => convertEmojiSequenceToUTF32(item));
11
+ return parseEmojiTree(createEmojisTree(sequences)).regex;
12
+ }
13
+ /**
14
+ * Create optimised regex for emojis
15
+ *
16
+ * First parameter is array of emojis, entry can be either list of
17
+ * code points or emoji sequence as a string
18
+ *
19
+ * Examples of acceptable strings (case insensitive):
20
+ * '1F636 200D 1F32B FE0F' - space separated UTF32 sequence
21
+ * '1f636-200d-1f32b-fe0f' - dash separated UTF32 sequence
22
+ * 'd83d-de36-200d-d83c-df2b-fe0f' - dash separated UTF16 sequence
23
+ * '\\uD83D\\uDE36\\u200D\\uD83C\\uDF2B\\uFE0F' - UTF16 sequence escaped with '\\u'
24
+ *
25
+ * All examples above refer to the same emoji and will generate the same regex result
26
+ */
27
+ function createOptimisedRegex(emojis) {
28
+ let sequences = emojis.map((item) => typeof item === "string" ? getSequenceFromEmojiStringOrKeyword(item) : item);
29
+ sequences = getQualifiedEmojiVariations(sequences.map((sequence) => {
30
+ return { sequence };
31
+ })).map((item) => item.sequence);
32
+ return createOptimisedRegexForEmojiSequences(sequences);
33
+ }
34
+
35
+ export { createOptimisedRegex, createOptimisedRegexForEmojiSequences };
@@ -0,0 +1,134 @@
1
+ import { vs16Emoji } from "../data.js";
2
+ import { splitUTF32Number } from "../convert.js";
3
+ import { createOptionalEmojiRegexItem, createSequenceEmojiRegexItem, createSetEmojiRegexItem, createUTF16EmojiRegexItem } from "./base.js";
4
+
5
+ /**
6
+ * Create regex item for set of numbers
7
+ */
8
+ function createEmojiRegexItemForNumbers(numbers) {
9
+ const utf32 = [];
10
+ const utf16 = [];
11
+ numbers.sort((a, b) => a - b);
12
+ let lastNumber;
13
+ for (let i = 0; i < numbers.length; i++) {
14
+ const number = numbers[i];
15
+ if (number === lastNumber) continue;
16
+ lastNumber = number;
17
+ const split = splitUTF32Number(number);
18
+ if (!split) {
19
+ utf16.push(number);
20
+ continue;
21
+ }
22
+ const [first, second] = split;
23
+ const item = utf32.find((item$1) => item$1.first === first);
24
+ if (item) {
25
+ item.second.push(second);
26
+ item.numbers.push(number);
27
+ } else utf32.push({
28
+ first,
29
+ second: [second],
30
+ numbers: [number]
31
+ });
32
+ }
33
+ const results = [];
34
+ if (utf16.length) results.push(createUTF16EmojiRegexItem(utf16));
35
+ if (utf32.length) {
36
+ const utf32Set = [];
37
+ for (let i = 0; i < utf32.length; i++) {
38
+ const item = utf32[i];
39
+ const secondRegex = createUTF16EmojiRegexItem(item.second);
40
+ const listItem = utf32Set.find((item$1) => item$1.second.regex === secondRegex.regex);
41
+ if (listItem) {
42
+ listItem.first.push(item.first);
43
+ listItem.numbers = [...listItem.numbers, ...item.numbers];
44
+ } else utf32Set.push({
45
+ second: secondRegex,
46
+ first: [item.first],
47
+ numbers: [...item.numbers]
48
+ });
49
+ }
50
+ for (let i = 0; i < utf32Set.length; i++) {
51
+ const item = utf32Set[i];
52
+ const firstRegex = createUTF16EmojiRegexItem(item.first);
53
+ const secondRegex = item.second;
54
+ results.push(createSequenceEmojiRegexItem([firstRegex, secondRegex], item.numbers));
55
+ }
56
+ }
57
+ return results.length === 1 ? results[0] : createSetEmojiRegexItem(results);
58
+ }
59
+ /**
60
+ * Create sequence of numbers
61
+ */
62
+ function createRegexForNumbersSequence(numbers, optionalVariations = true) {
63
+ const items = [];
64
+ for (let i = 0; i < numbers.length; i++) {
65
+ const num = numbers[i];
66
+ const split = splitUTF32Number(num);
67
+ if (!split) {
68
+ const item = createUTF16EmojiRegexItem([num]);
69
+ if (optionalVariations && num === vs16Emoji) items.push(createOptionalEmojiRegexItem(item));
70
+ else items.push(item);
71
+ } else {
72
+ items.push(createUTF16EmojiRegexItem([split[0]]));
73
+ items.push(createUTF16EmojiRegexItem([split[1]]));
74
+ }
75
+ }
76
+ if (items.length === 1) return items[0];
77
+ const result = createSequenceEmojiRegexItem(items);
78
+ if (numbers.length === 1 && items[0].type === "utf16") result.numbers = [...numbers];
79
+ return result;
80
+ }
81
+ /**
82
+ * Attempt to optimise numbers in a set
83
+ */
84
+ function optimiseNumbersSet(set) {
85
+ const mandatoryMatches = {
86
+ numbers: [],
87
+ items: []
88
+ };
89
+ const optionalMatches = {
90
+ numbers: [],
91
+ items: []
92
+ };
93
+ const filteredItems = set.sets.filter((item) => {
94
+ if (item.type === "optional") {
95
+ const parentItem = item.item;
96
+ if (parentItem.numbers) {
97
+ optionalMatches.items.push(item);
98
+ optionalMatches.numbers = optionalMatches.numbers.concat(parentItem.numbers);
99
+ return false;
100
+ }
101
+ return true;
102
+ }
103
+ if (item.numbers) {
104
+ mandatoryMatches.items.push(item);
105
+ mandatoryMatches.numbers = mandatoryMatches.numbers.concat(item.numbers);
106
+ return false;
107
+ }
108
+ return true;
109
+ });
110
+ if (mandatoryMatches.items.length + optionalMatches.items.length < 2) return set;
111
+ const optionalNumbers = new Set(optionalMatches.numbers);
112
+ let foundMatches = false;
113
+ mandatoryMatches.numbers = mandatoryMatches.numbers.filter((number) => {
114
+ if (optionalNumbers.has(number)) {
115
+ foundMatches = true;
116
+ return false;
117
+ }
118
+ return true;
119
+ });
120
+ if (mandatoryMatches.items.length) {
121
+ if (!foundMatches && mandatoryMatches.items.length === 1) filteredItems.push(mandatoryMatches.items[0]);
122
+ else if (mandatoryMatches.numbers.length) filteredItems.push(createEmojiRegexItemForNumbers(mandatoryMatches.numbers));
123
+ }
124
+ switch (optionalMatches.items.length) {
125
+ case 0: break;
126
+ case 1:
127
+ filteredItems.push(optionalMatches.items[0]);
128
+ break;
129
+ default: filteredItems.push(createOptionalEmojiRegexItem(createEmojiRegexItemForNumbers(optionalMatches.numbers)));
130
+ }
131
+ return filteredItems.length === 1 ? filteredItems[0] : createSetEmojiRegexItem(filteredItems);
132
+ }
133
+
134
+ export { createEmojiRegexItemForNumbers, createRegexForNumbersSequence, optimiseNumbersSet };
@@ -0,0 +1,167 @@
1
+ import { cloneEmojiRegexItem, createOptionalEmojiRegexItem, createSequenceEmojiRegexItem, createSetEmojiRegexItem } from "./base.js";
2
+ import { optimiseNumbersSet } from "./numbers.js";
3
+
4
+ /**
5
+ * Typescript stuff
6
+ */
7
+ function assertNever(v) {}
8
+ /**
9
+ * Find similar item sequences
10
+ *
11
+ * Returns sequence(s) with highest score. Only one of results should be
12
+ * applied to items. If there are multiple sequences, clone items list,
13
+ * attempt to apply each sequence, run further optimisations on each fork
14
+ * and see which one returns better result.
15
+ *
16
+ * Returns undefined if no common sequences found
17
+ */
18
+ function findSimilarRegexItemSequences(items) {
19
+ const startRegex = Object.create(null);
20
+ const endRegex = Object.create(null);
21
+ const addMapItem = (target, index, regex, slice) => {
22
+ if (!target[regex]) {
23
+ target[regex] = {
24
+ score: 0,
25
+ slices: [{
26
+ index,
27
+ slice
28
+ }]
29
+ };
30
+ return;
31
+ }
32
+ const item = target[regex];
33
+ item.score += regex.length;
34
+ item.slices.push({
35
+ index,
36
+ slice
37
+ });
38
+ };
39
+ for (let index = 0; index < items.length; index++) {
40
+ const baseItem = items[index];
41
+ switch (baseItem.type) {
42
+ case "optional":
43
+ case "utf16":
44
+ addMapItem(startRegex, index, baseItem.regex, "full");
45
+ addMapItem(endRegex, index, baseItem.regex, "full");
46
+ break;
47
+ case "sequence": {
48
+ addMapItem(startRegex, index, baseItem.regex, "full");
49
+ addMapItem(endRegex, index, baseItem.regex, "full");
50
+ const sequence = baseItem.items;
51
+ for (let i = 1; i < sequence.length; i++) {
52
+ const startSequence = createSequenceEmojiRegexItem(sequence.slice(0, i));
53
+ addMapItem(startRegex, index, startSequence.regex, i);
54
+ const endSequence = createSequenceEmojiRegexItem(sequence.slice(i));
55
+ addMapItem(endRegex, index, endSequence.regex, i);
56
+ }
57
+ break;
58
+ }
59
+ case "set": throw new Error("Unexpected set within a set");
60
+ default: assertNever(baseItem);
61
+ }
62
+ }
63
+ let result;
64
+ const checkResults = (target, type) => {
65
+ for (const regex in target) {
66
+ const item = target[regex];
67
+ if (!item.score) continue;
68
+ if (!result || result.score < item.score) {
69
+ result = {
70
+ score: item.score,
71
+ sequences: [{
72
+ type,
73
+ slices: item.slices
74
+ }]
75
+ };
76
+ continue;
77
+ }
78
+ if (result.score === item.score) result.sequences.push({
79
+ type,
80
+ slices: item.slices
81
+ });
82
+ }
83
+ };
84
+ checkResults(startRegex, "start");
85
+ checkResults(endRegex, "end");
86
+ return result;
87
+ }
88
+ /**
89
+ * Merge similar sequences
90
+ *
91
+ * Accepts callback to run optimisation on created subset
92
+ */
93
+ function mergeSimilarRegexItemSequences(items, merge, optimise) {
94
+ const { type, slices } = merge;
95
+ const indexes = /* @__PURE__ */ new Set();
96
+ let hasFullSequence = false;
97
+ let longestMatch = 0;
98
+ let longestMatchIndex = -1;
99
+ const differentSequences = [];
100
+ for (let i = 0; i < slices.length; i++) {
101
+ const { index, slice } = slices[i];
102
+ const item = items[index];
103
+ let length;
104
+ if (slice === "full") {
105
+ hasFullSequence = true;
106
+ if (item.type === "sequence") length = item.items.length;
107
+ else length = 1;
108
+ } else {
109
+ if (item.type !== "sequence") throw new Error(`Unexpected partial match for type "${item.type}"`);
110
+ length = type === "start" ? slice : item.items.length - slice;
111
+ differentSequences.push(type === "start" ? item.items.slice(slice) : item.items.slice(0, slice));
112
+ }
113
+ if (length > longestMatch) {
114
+ longestMatchIndex = index;
115
+ longestMatch = length;
116
+ }
117
+ indexes.add(index);
118
+ }
119
+ if (longestMatch < 1 || longestMatchIndex < 0) throw new Error("Cannot find common sequence");
120
+ const commonItem = items[longestMatchIndex];
121
+ let sequence;
122
+ if (commonItem.type !== "sequence") {
123
+ if (longestMatch !== 1) throw new Error("Something went wrong. Cannot have long match in non-sequence");
124
+ sequence = [commonItem];
125
+ } else sequence = type === "start" ? commonItem.items.slice(0, longestMatch) : commonItem.items.slice(commonItem.items.length - longestMatch);
126
+ const setItems = [];
127
+ for (let i = 0; i < differentSequences.length; i++) {
128
+ const list = differentSequences[i];
129
+ if (list.length === 1) setItems.push(list[0]);
130
+ else setItems.push(createSequenceEmojiRegexItem(list));
131
+ }
132
+ const set = createSetEmojiRegexItem(setItems);
133
+ let mergedChunk = set.sets.length === 1 ? set.sets[0] : optimise ? optimise(set) : set;
134
+ if (hasFullSequence) mergedChunk = createOptionalEmojiRegexItem(mergedChunk);
135
+ sequence[type === "start" ? "push" : "unshift"](mergedChunk);
136
+ return [createSequenceEmojiRegexItem(sequence), ...items.filter((item, index) => !indexes.has(index))];
137
+ }
138
+ /**
139
+ * Merge similar items
140
+ */
141
+ function mergeSimilarItemsInSet(set) {
142
+ const updatedSet = optimiseNumbersSet(set);
143
+ if (updatedSet.type !== "set") return updatedSet;
144
+ set = updatedSet;
145
+ let merges;
146
+ while (merges = findSimilarRegexItemSequences(set.sets)) {
147
+ const sequences = merges.sequences;
148
+ if (sequences.length === 1) {
149
+ const merged = mergeSimilarRegexItemSequences(set.sets.map((item) => cloneEmojiRegexItem(item, true)), sequences[0], mergeSimilarItemsInSet);
150
+ if (merged.length === 1) return merged[0];
151
+ set = createSetEmojiRegexItem(merged);
152
+ continue;
153
+ }
154
+ let newItem;
155
+ for (let i = 0; i < sequences.length; i++) {
156
+ const merged = mergeSimilarRegexItemSequences(set.sets.map((item) => cloneEmojiRegexItem(item, true)), sequences[i], mergeSimilarItemsInSet);
157
+ const mergedItem = merged.length === 1 ? merged[0] : createSetEmojiRegexItem(merged);
158
+ if (!newItem || mergedItem.regex.length < newItem.regex.length) newItem = mergedItem;
159
+ }
160
+ if (!newItem) throw new Error("Empty sequences list");
161
+ if (newItem.type !== "set") return newItem;
162
+ set = newItem;
163
+ }
164
+ return set;
165
+ }
166
+
167
+ export { findSimilarRegexItemSequences, mergeSimilarItemsInSet, mergeSimilarRegexItemSequences };
@@ -0,0 +1,81 @@
1
+ import { joinerEmoji } from "../data.js";
2
+ import { convertEmojiSequenceToUTF32 } from "../convert.js";
3
+ import { splitEmojiSequences } from "../cleanup.js";
4
+ import { createOptionalEmojiRegexItem, createSequenceEmojiRegexItem, createSetEmojiRegexItem, createUTF16EmojiRegexItem } from "./base.js";
5
+ import { createRegexForNumbersSequence } from "./numbers.js";
6
+ import { mergeSimilarItemsInSet } from "./similar.js";
7
+
8
+ /**
9
+ * Create tree
10
+ */
11
+ function createEmojisTree(sequences) {
12
+ const root = [];
13
+ for (let i = 0; i < sequences.length; i++) {
14
+ const split = splitEmojiSequences(convertEmojiSequenceToUTF32(sequences[i]));
15
+ let parent = root;
16
+ for (let j = 0; j < split.length; j++) {
17
+ const regex = createRegexForNumbersSequence(split[j]);
18
+ let item;
19
+ const match = parent.find((item$1) => item$1.regex.regex === regex.regex);
20
+ if (!match) {
21
+ item = { regex };
22
+ parent.push(item);
23
+ } else item = match;
24
+ if (j === split.length - 1) {
25
+ item.end = true;
26
+ break;
27
+ }
28
+ parent = item.children || (item.children = []);
29
+ }
30
+ }
31
+ return root;
32
+ }
33
+ /**
34
+ * Parse tree
35
+ */
36
+ function parseEmojiTree(items) {
37
+ function mergeParsedChildren(items$1) {
38
+ const parsedItems = [];
39
+ const mapWithoutEnd = Object.create(null);
40
+ const mapWithEnd = Object.create(null);
41
+ for (let i = 0; i < items$1.length; i++) {
42
+ const item = items$1[i];
43
+ const children = item.children;
44
+ if (children) {
45
+ const fullItem = item;
46
+ const target = item.end ? mapWithEnd : mapWithoutEnd;
47
+ const regex = children.regex;
48
+ if (!target[regex]) target[regex] = [fullItem];
49
+ else target[regex].push(fullItem);
50
+ } else parsedItems.push(item.regex);
51
+ }
52
+ [mapWithEnd, mapWithoutEnd].forEach((source) => {
53
+ for (const regex in source) {
54
+ const items$2 = source[regex];
55
+ const firstItem = items$2[0];
56
+ let childSequence = [createUTF16EmojiRegexItem([joinerEmoji]), firstItem.children];
57
+ if (firstItem.end) childSequence = [createOptionalEmojiRegexItem(createSequenceEmojiRegexItem(childSequence))];
58
+ let mergedRegex;
59
+ if (items$2.length === 1) mergedRegex = firstItem.regex;
60
+ else mergedRegex = mergeSimilarItemsInSet(createSetEmojiRegexItem(items$2.map((item) => item.regex)));
61
+ const sequence = createSequenceEmojiRegexItem([mergedRegex, ...childSequence]);
62
+ parsedItems.push(sequence);
63
+ }
64
+ });
65
+ if (parsedItems.length === 1) return parsedItems[0];
66
+ return mergeSimilarItemsInSet(createSetEmojiRegexItem(parsedItems));
67
+ }
68
+ function parseItemChildren(item) {
69
+ const result = {
70
+ regex: item.regex,
71
+ end: !!item.end
72
+ };
73
+ const children = item.children;
74
+ if (!children) return result;
75
+ result.children = mergeParsedChildren(children.map(parseItemChildren));
76
+ return result;
77
+ }
78
+ return mergeParsedChildren(items.map(parseItemChildren));
79
+ }
80
+
81
+ export { createEmojisTree, parseEmojiTree };