renovate-log-parser 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 (325) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +402 -0
  3. package/dist/cli.d.ts +2 -0
  4. package/dist/cli.js +30 -0
  5. package/dist/cli.js.map +1 -0
  6. package/dist/commands/analyze.d.ts +24 -0
  7. package/dist/commands/analyze.js +114 -0
  8. package/dist/commands/analyze.js.map +1 -0
  9. package/dist/commands/detect-errors.d.ts +17 -0
  10. package/dist/commands/detect-errors.js +119 -0
  11. package/dist/commands/detect-errors.js.map +1 -0
  12. package/dist/commands/install-analyze-skill.d.ts +27 -0
  13. package/dist/commands/install-analyze-skill.js +181 -0
  14. package/dist/commands/install-analyze-skill.js.map +1 -0
  15. package/dist/commands/web.d.ts +12 -0
  16. package/dist/commands/web.js +103 -0
  17. package/dist/commands/web.js.map +1 -0
  18. package/dist/core/analyzer.d.ts +89 -0
  19. package/dist/core/analyzer.js +179 -0
  20. package/dist/core/analyzer.js.map +1 -0
  21. package/dist/core/error-detector.d.ts +56 -0
  22. package/dist/core/error-detector.js +236 -0
  23. package/dist/core/error-detector.js.map +1 -0
  24. package/dist/core/filters.d.ts +136 -0
  25. package/dist/core/filters.js +95 -0
  26. package/dist/core/filters.js.map +1 -0
  27. package/dist/core/ignore-file.d.ts +52 -0
  28. package/dist/core/ignore-file.js +104 -0
  29. package/dist/core/ignore-file.js.map +1 -0
  30. package/dist/core/levels.d.ts +33 -0
  31. package/dist/core/levels.js +35 -0
  32. package/dist/core/levels.js.map +1 -0
  33. package/dist/core/parser.d.ts +57 -0
  34. package/dist/core/parser.js +201 -0
  35. package/dist/core/parser.js.map +1 -0
  36. package/dist/core/query-builder.d.ts +47 -0
  37. package/dist/core/query-builder.js +155 -0
  38. package/dist/core/query-builder.js.map +1 -0
  39. package/dist/core/skill-template.d.ts +34 -0
  40. package/dist/core/skill-template.js +259 -0
  41. package/dist/core/skill-template.js.map +1 -0
  42. package/package.json +68 -0
  43. package/web/.output/nitro.json +15 -0
  44. package/web/.output/public/_fonts/57NSSoFy1VLVs2gqly8Ls9awBnZMFyXGrefpmqvdqmc-zJfbBtpgM4cDmcXBsqZNW79_kFnlpPd62b48glgdydA.woff2 +0 -0
  45. package/web/.output/public/_fonts/8VR2wSMN-3U4NbWAVYXlkRV6hA0jFBXP-0RtL3X7fko-x2gYI4qfmkRdxyQQUPaBZdZdgl1TeVrquF_TxHeM4lM.woff2 +0 -0
  46. package/web/.output/public/_fonts/GsKUclqeNLJ96g5AU593ug6yanivOiwjW_7zESNPChw-jHA4tBeM1bjF7LATGUpfBuSTyomIFrWBTzjF7txVYfg.woff2 +0 -0
  47. package/web/.output/public/_fonts/Ld1FnTo3yTIwDyGfTQ5-Fws9AWsCbKfMvgxduXr7JcY-W25bL8NF1fjpLRSOgJb7RoZPHqGQNwMTM7S9tHVoxx8.woff2 +0 -0
  48. package/web/.output/public/_fonts/NdzqRASp2bovDUhQT1IRE_EMqKJ2KYQdTCfFcBvL8yw-KhwZiS86o3fErOe5GGMExHUemmI_dBfaEFxjISZrBd0.woff2 +0 -0
  49. package/web/.output/public/_fonts/iTkrULNFJJkTvihIg1Vqi5IODRH_9btXCioVF5l98I8-AndUyau2HR2felA_ra8V2mutQgschhasE5FD1dXGJX8.woff2 +0 -0
  50. package/web/.output/public/_nuxt/BWja8e3M.js +37 -0
  51. package/web/.output/public/_nuxt/BgApMHS1.js +1 -0
  52. package/web/.output/public/_nuxt/CGPWRqbc.js +1 -0
  53. package/web/.output/public/_nuxt/DlAUqK2U.js +1 -0
  54. package/web/.output/public/_nuxt/Sgtec1U0.js +1 -0
  55. package/web/.output/public/_nuxt/builds/latest.json +1 -0
  56. package/web/.output/public/_nuxt/builds/meta/c4723e49-0623-47af-ae79-9ab6428bdcc1.json +1 -0
  57. package/web/.output/public/_nuxt/entry.9mB-pyEY.css +1 -0
  58. package/web/.output/public/_nuxt/error-404.B_PvSG-P.css +1 -0
  59. package/web/.output/public/_nuxt/error-500.CghkKCEr.css +1 -0
  60. package/web/.output/public/_nuxt/index.BlvAG7F6.css +1 -0
  61. package/web/.output/public/favicon.ico +0 -0
  62. package/web/.output/server/chunks/_/error-500.mjs +19 -0
  63. package/web/.output/server/chunks/_/error-500.mjs.map +1 -0
  64. package/web/.output/server/chunks/_/icons.mjs +6153 -0
  65. package/web/.output/server/chunks/_/icons.mjs.map +1 -0
  66. package/web/.output/server/chunks/_/icons2.mjs +11494 -0
  67. package/web/.output/server/chunks/_/icons2.mjs.map +1 -0
  68. package/web/.output/server/chunks/build/_plugin-vue_export-helper-1tPrXgE0.mjs +10 -0
  69. package/web/.output/server/chunks/build/_plugin-vue_export-helper-1tPrXgE0.mjs.map +1 -0
  70. package/web/.output/server/chunks/build/client.precomputed.mjs +4 -0
  71. package/web/.output/server/chunks/build/client.precomputed.mjs.map +1 -0
  72. package/web/.output/server/chunks/build/error-404-DyaaQUIS.mjs +106 -0
  73. package/web/.output/server/chunks/build/error-404-DyaaQUIS.mjs.map +1 -0
  74. package/web/.output/server/chunks/build/error-404-styles.9cNA4arh.mjs +8 -0
  75. package/web/.output/server/chunks/build/error-404-styles.9cNA4arh.mjs.map +1 -0
  76. package/web/.output/server/chunks/build/error-500-CVSP-p02.mjs +89 -0
  77. package/web/.output/server/chunks/build/error-500-CVSP-p02.mjs.map +1 -0
  78. package/web/.output/server/chunks/build/error-500-styles.BX54ZlkH.mjs +8 -0
  79. package/web/.output/server/chunks/build/error-500-styles.BX54ZlkH.mjs.map +1 -0
  80. package/web/.output/server/chunks/build/index-88dXYOxO.mjs +19675 -0
  81. package/web/.output/server/chunks/build/index-88dXYOxO.mjs.map +1 -0
  82. package/web/.output/server/chunks/build/index-styles.V2iua2bE.mjs +8 -0
  83. package/web/.output/server/chunks/build/index-styles.V2iua2bE.mjs.map +1 -0
  84. package/web/.output/server/chunks/build/server.mjs +7910 -0
  85. package/web/.output/server/chunks/build/server.mjs.map +1 -0
  86. package/web/.output/server/chunks/build/styles.mjs +10 -0
  87. package/web/.output/server/chunks/build/styles.mjs.map +1 -0
  88. package/web/.output/server/chunks/nitro/nitro.mjs +6944 -0
  89. package/web/.output/server/chunks/nitro/nitro.mjs.map +1 -0
  90. package/web/.output/server/chunks/routes/api/fields.get.mjs +27 -0
  91. package/web/.output/server/chunks/routes/api/fields.get.mjs.map +1 -0
  92. package/web/.output/server/chunks/routes/api/findings.get.mjs +30 -0
  93. package/web/.output/server/chunks/routes/api/findings.get.mjs.map +1 -0
  94. package/web/.output/server/chunks/routes/api/log/contents.post.mjs +29 -0
  95. package/web/.output/server/chunks/routes/api/log/contents.post.mjs.map +1 -0
  96. package/web/.output/server/chunks/routes/api/log/path.post.mjs +30 -0
  97. package/web/.output/server/chunks/routes/api/log/path.post.mjs.map +1 -0
  98. package/web/.output/server/chunks/routes/api/repositories.get.mjs +27 -0
  99. package/web/.output/server/chunks/routes/api/repositories.get.mjs.map +1 -0
  100. package/web/.output/server/chunks/routes/api/rows.get.mjs +48 -0
  101. package/web/.output/server/chunks/routes/api/rows.get.mjs.map +1 -0
  102. package/web/.output/server/chunks/routes/renderer.mjs +451 -0
  103. package/web/.output/server/chunks/routes/renderer.mjs.map +1 -0
  104. package/web/.output/server/chunks/virtual/_virtual_spa-template.mjs +4 -0
  105. package/web/.output/server/chunks/virtual/_virtual_spa-template.mjs.map +1 -0
  106. package/web/.output/server/index.mjs +16 -0
  107. package/web/.output/server/index.mjs.map +1 -0
  108. package/web/.output/server/node_modules/.nitro/hookable@5.5.3/dist/index.mjs +290 -0
  109. package/web/.output/server/node_modules/.nitro/hookable@5.5.3/package.json +49 -0
  110. package/web/.output/server/node_modules/.nitro/hookable@6.1.1/dist/index.mjs +257 -0
  111. package/web/.output/server/node_modules/.nitro/hookable@6.1.1/package.json +53 -0
  112. package/web/.output/server/node_modules/@babel/parser/lib/index.js +14599 -0
  113. package/web/.output/server/node_modules/@babel/parser/package.json +50 -0
  114. package/web/.output/server/node_modules/@floating-ui/core/dist/floating-ui.core.mjs +1038 -0
  115. package/web/.output/server/node_modules/@floating-ui/core/package.json +63 -0
  116. package/web/.output/server/node_modules/@floating-ui/dom/dist/floating-ui.dom.mjs +789 -0
  117. package/web/.output/server/node_modules/@floating-ui/dom/package.json +72 -0
  118. package/web/.output/server/node_modules/@floating-ui/utils/dist/floating-ui.utils.dom.mjs +165 -0
  119. package/web/.output/server/node_modules/@floating-ui/utils/dist/floating-ui.utils.mjs +136 -0
  120. package/web/.output/server/node_modules/@floating-ui/utils/package.json +70 -0
  121. package/web/.output/server/node_modules/@floating-ui/vue/dist/floating-ui.vue.mjs +190 -0
  122. package/web/.output/server/node_modules/@floating-ui/vue/package.json +71 -0
  123. package/web/.output/server/node_modules/@iconify/utils/lib/colors/index.js +295 -0
  124. package/web/.output/server/node_modules/@iconify/utils/lib/colors/keywords.js +701 -0
  125. package/web/.output/server/node_modules/@iconify/utils/lib/css/common.js +75 -0
  126. package/web/.output/server/node_modules/@iconify/utils/lib/css/format.js +39 -0
  127. package/web/.output/server/node_modules/@iconify/utils/lib/css/icon.js +47 -0
  128. package/web/.output/server/node_modules/@iconify/utils/lib/css/icons.js +128 -0
  129. package/web/.output/server/node_modules/@iconify/utils/lib/customisations/bool.js +19 -0
  130. package/web/.output/server/node_modules/@iconify/utils/lib/customisations/defaults.js +13 -0
  131. package/web/.output/server/node_modules/@iconify/utils/lib/customisations/flip.js +17 -0
  132. package/web/.output/server/node_modules/@iconify/utils/lib/customisations/merge.js +16 -0
  133. package/web/.output/server/node_modules/@iconify/utils/lib/customisations/rotate.js +30 -0
  134. package/web/.output/server/node_modules/@iconify/utils/lib/emoji/cleanup.js +78 -0
  135. package/web/.output/server/node_modules/@iconify/utils/lib/emoji/convert.js +100 -0
  136. package/web/.output/server/node_modules/@iconify/utils/lib/emoji/data.js +28 -0
  137. package/web/.output/server/node_modules/@iconify/utils/lib/emoji/format.js +58 -0
  138. package/web/.output/server/node_modules/@iconify/utils/lib/emoji/parse.js +48 -0
  139. package/web/.output/server/node_modules/@iconify/utils/lib/emoji/regex/base.js +203 -0
  140. package/web/.output/server/node_modules/@iconify/utils/lib/emoji/regex/create.js +33 -0
  141. package/web/.output/server/node_modules/@iconify/utils/lib/emoji/regex/numbers.js +132 -0
  142. package/web/.output/server/node_modules/@iconify/utils/lib/emoji/regex/similar.js +165 -0
  143. package/web/.output/server/node_modules/@iconify/utils/lib/emoji/regex/tree.js +79 -0
  144. package/web/.output/server/node_modules/@iconify/utils/lib/emoji/replace/find.js +92 -0
  145. package/web/.output/server/node_modules/@iconify/utils/lib/emoji/replace/replace.js +26 -0
  146. package/web/.output/server/node_modules/@iconify/utils/lib/emoji/test/components.js +76 -0
  147. package/web/.output/server/node_modules/@iconify/utils/lib/emoji/test/missing.js +66 -0
  148. package/web/.output/server/node_modules/@iconify/utils/lib/emoji/test/name.js +45 -0
  149. package/web/.output/server/node_modules/@iconify/utils/lib/emoji/test/parse.js +103 -0
  150. package/web/.output/server/node_modules/@iconify/utils/lib/emoji/test/similar.js +36 -0
  151. package/web/.output/server/node_modules/@iconify/utils/lib/emoji/test/tree.js +92 -0
  152. package/web/.output/server/node_modules/@iconify/utils/lib/emoji/test/variations.js +62 -0
  153. package/web/.output/server/node_modules/@iconify/utils/lib/icon/defaults.js +25 -0
  154. package/web/.output/server/node_modules/@iconify/utils/lib/icon/merge.js +16 -0
  155. package/web/.output/server/node_modules/@iconify/utils/lib/icon/name.js +57 -0
  156. package/web/.output/server/node_modules/@iconify/utils/lib/icon/square.js +33 -0
  157. package/web/.output/server/node_modules/@iconify/utils/lib/icon/transformations.js +12 -0
  158. package/web/.output/server/node_modules/@iconify/utils/lib/icon-set/convert-info.js +125 -0
  159. package/web/.output/server/node_modules/@iconify/utils/lib/icon-set/expand.js +19 -0
  160. package/web/.output/server/node_modules/@iconify/utils/lib/icon-set/get-icon.js +25 -0
  161. package/web/.output/server/node_modules/@iconify/utils/lib/icon-set/get-icons.js +36 -0
  162. package/web/.output/server/node_modules/@iconify/utils/lib/icon-set/minify.js +91 -0
  163. package/web/.output/server/node_modules/@iconify/utils/lib/icon-set/parse.js +46 -0
  164. package/web/.output/server/node_modules/@iconify/utils/lib/icon-set/tree.js +23 -0
  165. package/web/.output/server/node_modules/@iconify/utils/lib/icon-set/validate-basic.js +42 -0
  166. package/web/.output/server/node_modules/@iconify/utils/lib/icon-set/validate.js +123 -0
  167. package/web/.output/server/node_modules/@iconify/utils/lib/index.js +52 -0
  168. package/web/.output/server/node_modules/@iconify/utils/lib/loader/custom.js +30 -0
  169. package/web/.output/server/node_modules/@iconify/utils/lib/loader/loader.js +26 -0
  170. package/web/.output/server/node_modules/@iconify/utils/lib/loader/modern.js +27 -0
  171. package/web/.output/server/node_modules/@iconify/utils/lib/loader/utils.js +105 -0
  172. package/web/.output/server/node_modules/@iconify/utils/lib/misc/objects.js +26 -0
  173. package/web/.output/server/node_modules/@iconify/utils/lib/misc/strings.js +26 -0
  174. package/web/.output/server/node_modules/@iconify/utils/lib/misc/title.js +9 -0
  175. package/web/.output/server/node_modules/@iconify/utils/lib/svg/build.js +113 -0
  176. package/web/.output/server/node_modules/@iconify/utils/lib/svg/defs.js +31 -0
  177. package/web/.output/server/node_modules/@iconify/utils/lib/svg/encode-svg-for-css.js +13 -0
  178. package/web/.output/server/node_modules/@iconify/utils/lib/svg/html.js +9 -0
  179. package/web/.output/server/node_modules/@iconify/utils/lib/svg/id.js +41 -0
  180. package/web/.output/server/node_modules/@iconify/utils/lib/svg/inner-html.js +22 -0
  181. package/web/.output/server/node_modules/@iconify/utils/lib/svg/parse.js +67 -0
  182. package/web/.output/server/node_modules/@iconify/utils/lib/svg/pretty.js +54 -0
  183. package/web/.output/server/node_modules/@iconify/utils/lib/svg/size.js +27 -0
  184. package/web/.output/server/node_modules/@iconify/utils/lib/svg/trim.js +7 -0
  185. package/web/.output/server/node_modules/@iconify/utils/lib/svg/url.js +22 -0
  186. package/web/.output/server/node_modules/@iconify/utils/lib/svg/viewbox.js +8 -0
  187. package/web/.output/server/node_modules/@iconify/utils/package.json +119 -0
  188. package/web/.output/server/node_modules/@iconify/vue/dist/iconify.mjs +1896 -0
  189. package/web/.output/server/node_modules/@iconify/vue/package.json +62 -0
  190. package/web/.output/server/node_modules/@tanstack/virtual-core/dist/esm/index.js +1268 -0
  191. package/web/.output/server/node_modules/@tanstack/virtual-core/dist/esm/lazy-measurements.js +34 -0
  192. package/web/.output/server/node_modules/@tanstack/virtual-core/dist/esm/utils.js +74 -0
  193. package/web/.output/server/node_modules/@tanstack/virtual-core/package.json +56 -0
  194. package/web/.output/server/node_modules/@tanstack/vue-virtual/dist/esm/index.js +66 -0
  195. package/web/.output/server/node_modules/@tanstack/vue-virtual/package.json +68 -0
  196. package/web/.output/server/node_modules/@vue/compiler-core/dist/compiler-core.cjs.prod.js +6759 -0
  197. package/web/.output/server/node_modules/@vue/compiler-core/package.json +58 -0
  198. package/web/.output/server/node_modules/@vue/compiler-dom/dist/compiler-dom.cjs.prod.js +689 -0
  199. package/web/.output/server/node_modules/@vue/compiler-dom/package.json +57 -0
  200. package/web/.output/server/node_modules/@vue/compiler-ssr/dist/compiler-ssr.cjs.js +1413 -0
  201. package/web/.output/server/node_modules/@vue/compiler-ssr/package.json +34 -0
  202. package/web/.output/server/node_modules/@vue/devtools-api/dist/index.js +2 -0
  203. package/web/.output/server/node_modules/@vue/devtools-api/package.json +34 -0
  204. package/web/.output/server/node_modules/@vue/devtools-kit/dist/index.js +5670 -0
  205. package/web/.output/server/node_modules/@vue/devtools-kit/node_modules/hookable/dist/index.mjs +290 -0
  206. package/web/.output/server/node_modules/@vue/devtools-kit/node_modules/hookable/package.json +49 -0
  207. package/web/.output/server/node_modules/@vue/devtools-kit/package.json +44 -0
  208. package/web/.output/server/node_modules/@vue/devtools-shared/dist/index.js +239 -0
  209. package/web/.output/server/node_modules/@vue/devtools-shared/package.json +33 -0
  210. package/web/.output/server/node_modules/@vue/reactivity/dist/reactivity.cjs.prod.js +1899 -0
  211. package/web/.output/server/node_modules/@vue/reactivity/package.json +55 -0
  212. package/web/.output/server/node_modules/@vue/runtime-core/dist/runtime-core.cjs.prod.js +6940 -0
  213. package/web/.output/server/node_modules/@vue/runtime-core/package.json +52 -0
  214. package/web/.output/server/node_modules/@vue/runtime-dom/dist/runtime-dom.cjs.prod.js +1822 -0
  215. package/web/.output/server/node_modules/@vue/runtime-dom/package.json +60 -0
  216. package/web/.output/server/node_modules/@vue/server-renderer/dist/server-renderer.cjs.prod.js +896 -0
  217. package/web/.output/server/node_modules/@vue/server-renderer/package.json +55 -0
  218. package/web/.output/server/node_modules/@vue/shared/dist/shared.cjs.prod.js +604 -0
  219. package/web/.output/server/node_modules/@vue/shared/package.json +47 -0
  220. package/web/.output/server/node_modules/@vueuse/core/dist/index.js +8464 -0
  221. package/web/.output/server/node_modules/@vueuse/core/package.json +49 -0
  222. package/web/.output/server/node_modules/@vueuse/shared/dist/index.js +2013 -0
  223. package/web/.output/server/node_modules/@vueuse/shared/package.json +42 -0
  224. package/web/.output/server/node_modules/aria-hidden/dist/es5/index.js +174 -0
  225. package/web/.output/server/node_modules/aria-hidden/package.json +71 -0
  226. package/web/.output/server/node_modules/birpc/dist/index.mjs +291 -0
  227. package/web/.output/server/node_modules/birpc/package.json +57 -0
  228. package/web/.output/server/node_modules/consola/dist/chunks/prompt.mjs +280 -0
  229. package/web/.output/server/node_modules/consola/dist/core.mjs +512 -0
  230. package/web/.output/server/node_modules/consola/dist/index.mjs +651 -0
  231. package/web/.output/server/node_modules/consola/dist/shared/consola.DRwqZj3T.mjs +72 -0
  232. package/web/.output/server/node_modules/consola/dist/shared/consola.DXBYu-KD.mjs +288 -0
  233. package/web/.output/server/node_modules/consola/package.json +136 -0
  234. package/web/.output/server/node_modules/devalue/index.js +4 -0
  235. package/web/.output/server/node_modules/devalue/package.json +40 -0
  236. package/web/.output/server/node_modules/devalue/src/base64.js +60 -0
  237. package/web/.output/server/node_modules/devalue/src/constants.js +12 -0
  238. package/web/.output/server/node_modules/devalue/src/parse.js +283 -0
  239. package/web/.output/server/node_modules/devalue/src/stringify.js +401 -0
  240. package/web/.output/server/node_modules/devalue/src/uneval.js +552 -0
  241. package/web/.output/server/node_modules/devalue/src/utils.js +160 -0
  242. package/web/.output/server/node_modules/entities/dist/commonjs/decode-codepoint.js +77 -0
  243. package/web/.output/server/node_modules/entities/dist/commonjs/decode.js +568 -0
  244. package/web/.output/server/node_modules/entities/dist/commonjs/generated/decode-data-html.js +7 -0
  245. package/web/.output/server/node_modules/entities/dist/commonjs/generated/decode-data-xml.js +7 -0
  246. package/web/.output/server/node_modules/entities/dist/commonjs/internal/bin-trie-flags.js +21 -0
  247. package/web/.output/server/node_modules/entities/dist/commonjs/internal/decode-shared.js +31 -0
  248. package/web/.output/server/node_modules/entities/dist/commonjs/package.json +3 -0
  249. package/web/.output/server/node_modules/entities/package.json +120 -0
  250. package/web/.output/server/node_modules/estree-walker/dist/umd/estree-walker.js +344 -0
  251. package/web/.output/server/node_modules/estree-walker/package.json +37 -0
  252. package/web/.output/server/node_modules/hookable/dist/index.mjs +257 -0
  253. package/web/.output/server/node_modules/hookable/package.json +53 -0
  254. package/web/.output/server/node_modules/nostics/dist/index.mjs +179 -0
  255. package/web/.output/server/node_modules/nostics/package.json +124 -0
  256. package/web/.output/server/node_modules/perfect-debounce/dist/index.mjs +89 -0
  257. package/web/.output/server/node_modules/perfect-debounce/package.json +41 -0
  258. package/web/.output/server/node_modules/rou3/dist/index.mjs +501 -0
  259. package/web/.output/server/node_modules/rou3/package.json +48 -0
  260. package/web/.output/server/node_modules/source-map-js/lib/array-set.js +121 -0
  261. package/web/.output/server/node_modules/source-map-js/lib/base64-vlq.js +140 -0
  262. package/web/.output/server/node_modules/source-map-js/lib/base64.js +67 -0
  263. package/web/.output/server/node_modules/source-map-js/lib/binary-search.js +111 -0
  264. package/web/.output/server/node_modules/source-map-js/lib/mapping-list.js +79 -0
  265. package/web/.output/server/node_modules/source-map-js/lib/quick-sort.js +132 -0
  266. package/web/.output/server/node_modules/source-map-js/lib/source-map-consumer.js +1188 -0
  267. package/web/.output/server/node_modules/source-map-js/lib/source-map-generator.js +444 -0
  268. package/web/.output/server/node_modules/source-map-js/lib/source-node.js +413 -0
  269. package/web/.output/server/node_modules/source-map-js/lib/util.js +594 -0
  270. package/web/.output/server/node_modules/source-map-js/package.json +71 -0
  271. package/web/.output/server/node_modules/source-map-js/source-map.js +8 -0
  272. package/web/.output/server/node_modules/srvx/dist/_chunks/_body-limit.mjs +39 -0
  273. package/web/.output/server/node_modules/srvx/dist/_chunks/_plugins.mjs +56 -0
  274. package/web/.output/server/node_modules/srvx/dist/_chunks/_trust-proxy.mjs +58 -0
  275. package/web/.output/server/node_modules/srvx/dist/_chunks/_url.mjs +134 -0
  276. package/web/.output/server/node_modules/srvx/dist/_chunks/_utils.mjs +15 -0
  277. package/web/.output/server/node_modules/srvx/dist/_chunks/_utils2.mjs +75 -0
  278. package/web/.output/server/node_modules/srvx/dist/adapters/node.mjs +976 -0
  279. package/web/.output/server/node_modules/srvx/package.json +102 -0
  280. package/web/.output/server/node_modules/tailwind-merge/dist/bundle-mjs.mjs +3365 -0
  281. package/web/.output/server/node_modules/tailwind-merge/package.json +93 -0
  282. package/web/.output/server/node_modules/tailwind-variants/dist/chunk-LQJYWU4O.js +112 -0
  283. package/web/.output/server/node_modules/tailwind-variants/dist/chunk-RZF76H2U.js +269 -0
  284. package/web/.output/server/node_modules/tailwind-variants/dist/index.js +38 -0
  285. package/web/.output/server/node_modules/tailwind-variants/package.json +122 -0
  286. package/web/.output/server/node_modules/tailwindcss/dist/chunk-X4GG3EDV.mjs +1 -0
  287. package/web/.output/server/node_modules/tailwindcss/dist/colors.mjs +1 -0
  288. package/web/.output/server/node_modules/tailwindcss/package.json +89 -0
  289. package/web/.output/server/node_modules/ufo/dist/index.mjs +645 -0
  290. package/web/.output/server/node_modules/ufo/package.json +48 -0
  291. package/web/.output/server/node_modules/unhead/dist/index.mjs +9 -0
  292. package/web/.output/server/node_modules/unhead/dist/parser.mjs +508 -0
  293. package/web/.output/server/node_modules/unhead/dist/plugins.mjs +101 -0
  294. package/web/.output/server/node_modules/unhead/dist/scripts.mjs +30 -0
  295. package/web/.output/server/node_modules/unhead/dist/server.mjs +180 -0
  296. package/web/.output/server/node_modules/unhead/dist/shared/unhead.B3VbJo7Y.mjs +207 -0
  297. package/web/.output/server/node_modules/unhead/dist/shared/unhead.BYvz9V1x.mjs +43 -0
  298. package/web/.output/server/node_modules/unhead/dist/shared/unhead.BnoAbrHA.mjs +269 -0
  299. package/web/.output/server/node_modules/unhead/dist/shared/unhead.CaI5ZD4O.mjs +182 -0
  300. package/web/.output/server/node_modules/unhead/dist/shared/unhead.CbpEuj3y.mjs +71 -0
  301. package/web/.output/server/node_modules/unhead/dist/shared/unhead.D4vSFytZ.mjs +236 -0
  302. package/web/.output/server/node_modules/unhead/dist/shared/unhead.DQc16pHI.mjs +196 -0
  303. package/web/.output/server/node_modules/unhead/dist/shared/unhead.Dh1cQCTe.mjs +44 -0
  304. package/web/.output/server/node_modules/unhead/dist/shared/unhead.TxTMM7cM.mjs +166 -0
  305. package/web/.output/server/node_modules/unhead/dist/shared/unhead.yem5I2v_.mjs +38 -0
  306. package/web/.output/server/node_modules/unhead/dist/utils.mjs +5 -0
  307. package/web/.output/server/node_modules/unhead/node_modules/hookable/dist/index.mjs +257 -0
  308. package/web/.output/server/node_modules/unhead/node_modules/hookable/package.json +53 -0
  309. package/web/.output/server/node_modules/unhead/package.json +105 -0
  310. package/web/.output/server/node_modules/vue/dist/vue.cjs.js +80 -0
  311. package/web/.output/server/node_modules/vue/dist/vue.cjs.prod.js +66 -0
  312. package/web/.output/server/node_modules/vue/index.js +7 -0
  313. package/web/.output/server/node_modules/vue/index.mjs +1 -0
  314. package/web/.output/server/node_modules/vue/package.json +112 -0
  315. package/web/.output/server/node_modules/vue/server-renderer/index.mjs +1 -0
  316. package/web/.output/server/node_modules/vue-bundle-renderer/dist/runtime.mjs +249 -0
  317. package/web/.output/server/node_modules/vue-bundle-renderer/package.json +57 -0
  318. package/web/.output/server/node_modules/vue-demi/lib/index.mjs +34 -0
  319. package/web/.output/server/node_modules/vue-demi/package.json +47 -0
  320. package/web/.output/server/node_modules/vue-router/dist/devtools-Bpr7ZAVB.js +1056 -0
  321. package/web/.output/server/node_modules/vue-router/dist/useApi-CROJJdhE.js +436 -0
  322. package/web/.output/server/node_modules/vue-router/dist/vue-router.js +1543 -0
  323. package/web/.output/server/node_modules/vue-router/package.json +214 -0
  324. package/web/.output/server/node_modules/vue-router/vue-router.node.mjs +2 -0
  325. package/web/.output/server/package.json +51 -0
@@ -0,0 +1,92 @@
1
+ import "../data.js";
2
+ import { convertEmojiSequenceToUTF32 } from "../convert.js";
3
+ import { getEmojiSequenceKeyword } from "../format.js";
4
+ /**
5
+ * Create regular expression instance
6
+ */
7
+ function createEmojiRegExp(regexp) {
8
+ return new RegExp(regexp, "g");
9
+ }
10
+ /**
11
+ * Find emojis in text
12
+ *
13
+ * Returns only one entry per match
14
+ */
15
+ function getEmojiMatchesInText(regexp, content) {
16
+ const results = [];
17
+ const found = /* @__PURE__ */ new Set();
18
+ (regexp instanceof Array ? regexp : [regexp]).forEach((regexp, index) => {
19
+ const matches = content.match(typeof regexp === "string" ? createEmojiRegExp(regexp) : regexp);
20
+ if (matches) for (let i = 0; i < matches.length; i++) {
21
+ const match = matches[i];
22
+ if (found.has(match)) continue;
23
+ found.add(match);
24
+ const sequence = [];
25
+ for (const codePoint of match) {
26
+ const num = codePoint.codePointAt(0);
27
+ if (num !== 65039) sequence.push(num);
28
+ }
29
+ results.push({
30
+ match,
31
+ sequence,
32
+ keyword: getEmojiSequenceKeyword(convertEmojiSequenceToUTF32(sequence)),
33
+ regexp: index
34
+ });
35
+ }
36
+ });
37
+ results.sort((a, b) => {
38
+ const match1 = a.match;
39
+ const match2 = b.match;
40
+ if (match2.length === match1.length) return match1.localeCompare(match2);
41
+ return match2.length - match1.length;
42
+ });
43
+ return results;
44
+ }
45
+ /**
46
+ * Sort emojis, get prev and next text
47
+ */
48
+ function sortEmojiMatchesInText(content, matches) {
49
+ const ranges = [];
50
+ const check = (start, end) => {
51
+ for (let i = 0; i < ranges.length; i++) if (start < ranges[i].end && end > ranges[i].start) return false;
52
+ return true;
53
+ };
54
+ for (let i = 0; i < matches.length; i++) {
55
+ const match = matches[i];
56
+ const search = match.match;
57
+ let startFrom = 0;
58
+ let start;
59
+ while ((start = content.indexOf(search, startFrom)) !== -1) {
60
+ const end = start + search.length;
61
+ startFrom = end;
62
+ if (check(start, end)) ranges.push({
63
+ start,
64
+ end,
65
+ match
66
+ });
67
+ }
68
+ }
69
+ ranges.sort((a, b) => a.start - b.start);
70
+ const list = [];
71
+ let prevRange;
72
+ let lastEnd;
73
+ for (let i = 0; i < ranges.length; i++) {
74
+ const range = ranges[i];
75
+ const prev = content.slice(prevRange ? prevRange.end : 0, range.start);
76
+ list.push({
77
+ match: range.match,
78
+ prev
79
+ });
80
+ prevRange = range;
81
+ lastEnd = range.end;
82
+ }
83
+ if (!lastEnd) return [];
84
+ return list.map((item, index) => {
85
+ const nextItem = list[index + 1];
86
+ return {
87
+ ...item,
88
+ next: nextItem ? nextItem.prev : content.slice(lastEnd)
89
+ };
90
+ });
91
+ }
92
+ export { createEmojiRegExp, getEmojiMatchesInText, sortEmojiMatchesInText };
@@ -0,0 +1,26 @@
1
+ import { getEmojiMatchesInText, sortEmojiMatchesInText } from "./find.js";
2
+ /**
3
+ * Find and replace emojis in text
4
+ *
5
+ * Returns null if nothing was replaced
6
+ */
7
+ function findAndReplaceEmojisInText(regexp, content, callback) {
8
+ const matches = getEmojiMatchesInText(regexp, content);
9
+ if (!matches.length) return null;
10
+ const sortedMatches = sortEmojiMatchesInText(content, matches);
11
+ let result = "";
12
+ let replaced = false;
13
+ for (let i = 0; i < sortedMatches.length; i++) {
14
+ const item = sortedMatches[i];
15
+ result += item.prev;
16
+ const replacement = callback({ ...item.match }, result);
17
+ if (replacement === void 0) result += item.match.match;
18
+ else {
19
+ result += replacement;
20
+ replaced = true;
21
+ }
22
+ }
23
+ result += sortedMatches[sortedMatches.length - 1].next;
24
+ return replaced ? result : null;
25
+ }
26
+ export { findAndReplaceEmojisInText };
@@ -0,0 +1,76 @@
1
+ import { emojiComponents } from "../data.js";
2
+ import { getEmojiSequenceKeyword } from "../format.js";
3
+ /**
4
+ * Map components from test data
5
+ */
6
+ function mapEmojiTestDataComponents(testSequences) {
7
+ const results = {
8
+ converted: /* @__PURE__ */ new Map(),
9
+ items: /* @__PURE__ */ new Map(),
10
+ names: /* @__PURE__ */ new Map(),
11
+ types: {},
12
+ keywords: {}
13
+ };
14
+ for (const key in emojiComponents) {
15
+ const type = key;
16
+ const range = emojiComponents[type];
17
+ for (let number = range[0]; number < range[1]; number++) {
18
+ const keyword = getEmojiSequenceKeyword([number]);
19
+ const item = testSequences[keyword];
20
+ if (!item) throw new Error(`Missing emoji component in test sequence: "${keyword}"`);
21
+ results.converted.set(number, keyword);
22
+ results.items.set(number, item);
23
+ results.items.set(keyword, item);
24
+ const name = item.name;
25
+ results.names.set(number, name);
26
+ results.names.set(keyword, name);
27
+ results.types[name] = type;
28
+ results.keywords[name] = keyword;
29
+ }
30
+ }
31
+ return results;
32
+ }
33
+ /**
34
+ * Convert to string
35
+ */
36
+ function emojiSequenceWithComponentsToString(sequence) {
37
+ return sequence.map((item) => typeof item === "number" ? item.toString(16) : item).join("-");
38
+ }
39
+ /**
40
+ * Find variations in sequence
41
+ */
42
+ function findEmojiComponentsInSequence(sequence) {
43
+ const components = [];
44
+ for (let index = 0; index < sequence.length; index++) {
45
+ const code = sequence[index];
46
+ for (const key in emojiComponents) {
47
+ const type = key;
48
+ const range = emojiComponents[type];
49
+ if (code >= range[0] && code < range[1]) {
50
+ components.push({
51
+ index,
52
+ type
53
+ });
54
+ break;
55
+ }
56
+ }
57
+ }
58
+ return components;
59
+ }
60
+ /**
61
+ * Replace components in sequence
62
+ */
63
+ function replaceEmojiComponentsInCombinedSequence(sequence, values) {
64
+ const indexes = {
65
+ "hair-style": 0,
66
+ "skin-tone": 0
67
+ };
68
+ return sequence.map((item) => {
69
+ if (typeof item === "number") return item;
70
+ const index = indexes[item]++;
71
+ const list = values[item];
72
+ if (!list || !list.length) throw new Error(`Cannot replace ${item}: no valid values provided`);
73
+ return list[index >= list.length ? list.length - 1 : index];
74
+ });
75
+ }
76
+ export { emojiSequenceWithComponentsToString, findEmojiComponentsInSequence, mapEmojiTestDataComponents, replaceEmojiComponentsInCombinedSequence };
@@ -0,0 +1,66 @@
1
+ import { emojiComponents } from "../data.js";
2
+ import { getUnqualifiedEmojiSequence } from "../cleanup.js";
3
+ import { getEmojiSequenceKeyword } from "../format.js";
4
+ import { replaceEmojiComponentsInCombinedSequence } from "./components.js";
5
+ /**
6
+ * Find missing emojis
7
+ *
8
+ * Result includes missing items, which are extended from items that needs to
9
+ * be copied. To identify which emojis to copy, source object should include
10
+ * something like `iconName` key that points to icon sequence represents.
11
+ */
12
+ function findMissingEmojis(sequences, testDataTree) {
13
+ const results = [];
14
+ const existingItems = Object.create(null);
15
+ const copiedItems = Object.create(null);
16
+ sequences.forEach((item) => {
17
+ const key = getEmojiSequenceKeyword(getUnqualifiedEmojiSequence(item.sequence));
18
+ if (!existingItems[key] || existingItems[key].sequence.length < item.sequence.length) existingItems[key] = item;
19
+ });
20
+ const iterate = (type, parentTree, parentValues, parentItem, deep) => {
21
+ const childTree = parentTree.children?.[type];
22
+ if (!childTree) return;
23
+ const range = emojiComponents[type];
24
+ for (let number = range[0]; number < range[1]; number++) {
25
+ const values = {
26
+ "hair-style": [...parentValues["hair-style"]],
27
+ "skin-tone": [...parentValues["skin-tone"]]
28
+ };
29
+ values[type].push(number);
30
+ const sequence = replaceEmojiComponentsInCombinedSequence(childTree.item.sequence, values);
31
+ const key = getEmojiSequenceKeyword(getUnqualifiedEmojiSequence(sequence));
32
+ const oldItem = existingItems[key];
33
+ let item;
34
+ if (oldItem) item = oldItem;
35
+ else {
36
+ item = copiedItems[key];
37
+ if (!item) {
38
+ item = {
39
+ ...parentItem,
40
+ sequence
41
+ };
42
+ if (item.sequenceKey) item.sequenceKey = key;
43
+ copiedItems[key] = item;
44
+ results.push(item);
45
+ }
46
+ }
47
+ if (deep || oldItem) for (const key in values) iterate(key, childTree, values, item, deep);
48
+ }
49
+ };
50
+ const parse = (key, deep) => {
51
+ const treeItem = testDataTree[key];
52
+ const rootItem = existingItems[treeItem.item.sequenceKey];
53
+ if (!rootItem) return;
54
+ const values = {
55
+ "skin-tone": [],
56
+ "hair-style": []
57
+ };
58
+ for (const key in values) iterate(key, treeItem, values, rootItem, deep);
59
+ };
60
+ for (const key in testDataTree) {
61
+ parse(key, false);
62
+ parse(key, true);
63
+ }
64
+ return results;
65
+ }
66
+ export { findMissingEmojis };
@@ -0,0 +1,45 @@
1
+ import { emojiComponents } from "../data.js";
2
+ const nameSplit = ": ";
3
+ const variationSplit = ", ";
4
+ const ignoredVariations = new Set(["person"]);
5
+ /**
6
+ * Split emoji name to base name and variations
7
+ *
8
+ * Also finds indexes of each variation
9
+ */
10
+ function splitEmojiNameVariations(name, sequence, componentsData) {
11
+ const parts = name.split(nameSplit);
12
+ const base = parts.shift();
13
+ if (!parts.length) return {
14
+ base,
15
+ key: base
16
+ };
17
+ const baseVariations = parts.join(nameSplit).split(variationSplit).filter((text) => {
18
+ if (!componentsData.types[text]) return !ignoredVariations.has(text);
19
+ return false;
20
+ });
21
+ const result = {
22
+ base,
23
+ key: base + (baseVariations.length ? nameSplit + baseVariations.join(variationSplit) : "")
24
+ };
25
+ let components = 0;
26
+ const variations = [...baseVariations];
27
+ for (let index = 0; index < sequence.length; index++) {
28
+ const num = sequence[index];
29
+ for (const key in emojiComponents) {
30
+ const type = key;
31
+ const range = emojiComponents[type];
32
+ if (num >= range[0] && num < range[1]) {
33
+ variations.push({
34
+ index,
35
+ type
36
+ });
37
+ components++;
38
+ }
39
+ }
40
+ }
41
+ if (variations.length) result.variations = variations;
42
+ if (components) result.components = components;
43
+ return result;
44
+ }
45
+ export { splitEmojiNameVariations };
@@ -0,0 +1,103 @@
1
+ import { getEmojiSequenceFromString, getUnqualifiedEmojiSequence } from "../cleanup.js";
2
+ import { getEmojiSequenceKeyword } from "../format.js";
3
+ const componentStatus = "component";
4
+ const allowedStatus = new Set([
5
+ componentStatus,
6
+ "fully-qualified",
7
+ "minimally-qualified",
8
+ "unqualified"
9
+ ]);
10
+ /**
11
+ * Get qualified variations from parsed test file
12
+ *
13
+ * Key is unqualified emoji, value is longest fully qualified emoji
14
+ */
15
+ function getQualifiedTestData(data) {
16
+ const results = Object.create(null);
17
+ for (const key in data) {
18
+ const item = data[key];
19
+ const sequence = getUnqualifiedEmojiSequence(item.sequence);
20
+ const shortKey = getEmojiSequenceKeyword(sequence);
21
+ if (!results[shortKey] || results[shortKey].sequence.length < sequence.length) results[shortKey] = item;
22
+ }
23
+ return results;
24
+ }
25
+ /**
26
+ * Get all emoji sequences from test file
27
+ *
28
+ * Returns all emojis as UTF-32 sequences, where:
29
+ * key = unqualified sequence (without \uFE0F)
30
+ * value = qualified sequence (with \uFE0F)
31
+ *
32
+ * Duplicate items that have different versions with and without \uFE0F are
33
+ * listed only once, with unqualified sequence as key and longest possible
34
+ * qualified sequence as value
35
+ *
36
+ * Example of 3 identical entries:
37
+ * '1F441 FE0F 200D 1F5E8 FE0F'
38
+ * '1F441 200D 1F5E8 FE0F'
39
+ * '1F441 FE0F 200D 1F5E8'
40
+ * '1F441 200D 1F5E8'
41
+ *
42
+ * Out of these entries, only one item will be returned with:
43
+ * key = '1f441-200d-1f5e8' (converted to lower case, separated with dash)
44
+ * value.sequence = [0x1F441, 0xFE0F, 0x200D, 0x1F5E8, 0xFE0F]
45
+ * value.status = 'fully-qualified'
46
+ * other properties in value are identical for all versions
47
+ */
48
+ function parseEmojiTestFile(data) {
49
+ const results = Object.create(null);
50
+ let group;
51
+ let subgroup;
52
+ data.split("\n").forEach((line) => {
53
+ line = line.trim();
54
+ const parts = line.split("#");
55
+ if (parts.length < 2) return;
56
+ const firstChunk = parts.shift().trim();
57
+ const secondChunk = parts.join("#").trim();
58
+ if (!firstChunk) {
59
+ const commentParts = secondChunk.split(":");
60
+ if (commentParts.length === 2) {
61
+ const key = commentParts[0].trim();
62
+ const value = commentParts[1].trim();
63
+ switch (key) {
64
+ case "group":
65
+ group = value;
66
+ subgroup = void 0;
67
+ break;
68
+ case "subgroup":
69
+ subgroup = value;
70
+ break;
71
+ }
72
+ }
73
+ return;
74
+ }
75
+ if (!group || !subgroup) return;
76
+ const firstChunkParts = firstChunk.split(";");
77
+ if (firstChunkParts.length !== 2) return;
78
+ const code = firstChunkParts[0].trim();
79
+ if (!code || !code.match(/^[A-F0-9]+[A-F0-9\s]*[A-F0-9]+$/)) return;
80
+ const status = firstChunkParts[1].trim();
81
+ if (!allowedStatus.has(status)) throw new Error(`Bad emoji type: ${status}`);
82
+ const secondChunkParts = secondChunk.split(/\s+/);
83
+ if (secondChunkParts.length < 3) throw new Error(`Bad emoji comment for: ${code}`);
84
+ const emoji = secondChunkParts.shift();
85
+ const version = secondChunkParts.shift();
86
+ if (version.slice(0, 1) !== "E") throw new Error(`Bad unicode version "${version}" for: ${code}`);
87
+ const name = secondChunkParts.join(" ");
88
+ const sequence = getEmojiSequenceFromString(code);
89
+ const key = getEmojiSequenceKeyword(sequence);
90
+ if (results[key]) throw new Error(`Duplicate entry for "${code}"`);
91
+ results[key] = {
92
+ group,
93
+ subgroup,
94
+ sequence,
95
+ emoji,
96
+ status,
97
+ version,
98
+ name
99
+ };
100
+ });
101
+ return getQualifiedTestData(results);
102
+ }
103
+ export { componentStatus, parseEmojiTestFile };
@@ -0,0 +1,36 @@
1
+ import { vs16Emoji } from "../data.js";
2
+ import { emojiSequenceWithComponentsToString, mapEmojiTestDataComponents } from "./components.js";
3
+ import { splitEmojiNameVariations } from "./name.js";
4
+ /**
5
+ * Find components in item, generate CombinedEmojiTestDataItem
6
+ */
7
+ function findComponentsInEmojiTestItem(item, componentsData) {
8
+ const name = splitEmojiNameVariations(item.name, item.sequence, componentsData);
9
+ const sequence = [...item.sequence];
10
+ name.variations?.forEach((item) => {
11
+ if (typeof item !== "string") sequence[item.index] = item.type;
12
+ });
13
+ const sequenceKey = emojiSequenceWithComponentsToString(sequence.filter((code) => code !== vs16Emoji));
14
+ return {
15
+ ...item,
16
+ name,
17
+ sequenceKey,
18
+ sequence
19
+ };
20
+ }
21
+ /**
22
+ * Combine similar items in one iteratable item
23
+ */
24
+ function combineSimilarEmojiTestData(data, componentsData) {
25
+ const results = Object.create(null);
26
+ componentsData = componentsData || mapEmojiTestDataComponents(data);
27
+ for (const key in data) {
28
+ const sourceItem = data[key];
29
+ if (sourceItem.status !== "component") {
30
+ const item = findComponentsInEmojiTestItem(sourceItem, componentsData);
31
+ results[item.sequenceKey] = item;
32
+ }
33
+ }
34
+ return results;
35
+ }
36
+ export { combineSimilarEmojiTestData, findComponentsInEmojiTestItem };
@@ -0,0 +1,92 @@
1
+ import { emojiComponents } from "../data.js";
2
+ /**
3
+ * Merge types for unique key
4
+ */
5
+ function mergeComponentTypes(value) {
6
+ return "[" + value.join(",") + "]";
7
+ }
8
+ /**
9
+ * Merge count for unique key
10
+ */
11
+ function mergeComponentsCount(value) {
12
+ const keys = [];
13
+ for (const key in emojiComponents) {
14
+ const type = key;
15
+ for (let i = 0; i < value[type]; i++) keys.push(type);
16
+ }
17
+ return keys.length ? mergeComponentTypes(keys) : "";
18
+ }
19
+ /**
20
+ * Get item from group
21
+ */
22
+ function getGroupItem(items, components) {
23
+ const item = items[mergeComponentsCount(components)];
24
+ if (item) {
25
+ item.parsed = true;
26
+ return item.item;
27
+ }
28
+ }
29
+ /**
30
+ * Convert test data to dependencies tree, based on components
31
+ */
32
+ function getEmojiTestDataTree(data) {
33
+ const groups = Object.create(null);
34
+ for (const key in data) {
35
+ const item = data[key];
36
+ const text = item.name.key;
37
+ const parent = groups[text] || (groups[text] = {});
38
+ const components = {
39
+ "hair-style": 0,
40
+ "skin-tone": 0
41
+ };
42
+ item.sequence.forEach((value) => {
43
+ if (typeof value !== "number") components[value]++;
44
+ });
45
+ const componentsKey = mergeComponentsCount(components);
46
+ if (parent[componentsKey]) throw new Error(`Duplicate components tree item for "${text}"`);
47
+ parent[componentsKey] = { item: {
48
+ ...item,
49
+ components,
50
+ componentsKey
51
+ } };
52
+ }
53
+ const results = Object.create(null);
54
+ for (const key in groups) {
55
+ const items = groups[key];
56
+ const check = (parent, parentComponents, type) => {
57
+ const item = parse(parentComponents, [type]);
58
+ if (item) {
59
+ const children = parent.children || (parent.children = {});
60
+ children[type] = item;
61
+ return true;
62
+ }
63
+ };
64
+ const parse = (parentComponents, newComponents) => {
65
+ const components = {
66
+ "hair-style": 0,
67
+ "skin-tone": 0
68
+ };
69
+ const componentsList = parentComponents.concat(newComponents);
70
+ componentsList.forEach((type) => {
71
+ components[type]++;
72
+ });
73
+ let item = getGroupItem(items, components);
74
+ if (!item && newComponents.length === 1 && newComponents[0] === "skin-tone") {
75
+ const doubleComponents = { ...components };
76
+ doubleComponents["skin-tone"]++;
77
+ item = getGroupItem(items, doubleComponents);
78
+ }
79
+ if (item) {
80
+ const result = { item };
81
+ for (const key in emojiComponents) check(result, componentsList, key);
82
+ return result;
83
+ }
84
+ };
85
+ const root = parse([], []);
86
+ if (!root) throw new Error(`Cannot find parent item for "${key}"`);
87
+ for (const itemsKey in items) if (!items[itemsKey].parsed) throw new Error(`Error generating tree for "${key}"`);
88
+ if (root.children) results[key] = root;
89
+ }
90
+ return results;
91
+ }
92
+ export { getEmojiTestDataTree };
@@ -0,0 +1,62 @@
1
+ import { emojiComponents, vs16Emoji } from "../data.js";
2
+ import { convertEmojiSequenceToUTF32 } from "../convert.js";
3
+ import { getUnqualifiedEmojiSequence, joinEmojiSequences, splitEmojiSequences } from "../cleanup.js";
4
+ import { getEmojiSequenceKeyword } from "../format.js";
5
+ /**
6
+ * Get qualified sequence, adding optional `FE0F` wherever it might exist
7
+ *
8
+ * This might result in sequence that is not actually valid, but considering
9
+ * that `FE0F` is always treated as optional, full sequence used in regex will
10
+ * catch both qualified and unqualified emojis, so proper sequence will get
11
+ * caught anyway. This function just makes sure that in case if sequence does
12
+ * have `FE0F`, it will be caught by regex too.
13
+ */
14
+ function guessQualifiedEmojiSequence(sequence) {
15
+ return joinEmojiSequences(splitEmojiSequences(sequence).map((part) => {
16
+ if (part.indexOf(65039) !== -1) return part;
17
+ if (part.length === 2) {
18
+ const lastNum = part[1];
19
+ if (lastNum === 8419) return [
20
+ part[0],
21
+ vs16Emoji,
22
+ lastNum
23
+ ];
24
+ for (const key in emojiComponents) {
25
+ const range = emojiComponents[key];
26
+ if (lastNum >= range[0] && lastNum < range[1]) return [
27
+ part[0],
28
+ vs16Emoji,
29
+ lastNum
30
+ ];
31
+ }
32
+ }
33
+ return part.length === 1 ? [part[0], vs16Emoji] : part;
34
+ }));
35
+ }
36
+ /**
37
+ * Get qualified variations for emojis
38
+ *
39
+ * Also converts list to UTF-32 as needed and removes duplicate items
40
+ */
41
+ function getQualifiedEmojiVariation(item) {
42
+ const unqualifiedSequence = getUnqualifiedEmojiSequence(convertEmojiSequenceToUTF32(item.sequence));
43
+ const result = {
44
+ ...item,
45
+ sequence: guessQualifiedEmojiSequence(unqualifiedSequence)
46
+ };
47
+ if (result.sequenceKey) result.sequenceKey = getEmojiSequenceKeyword(unqualifiedSequence);
48
+ return result;
49
+ }
50
+ /**
51
+ * Get qualified emoji variations for set of emojis, ignoring duplicate entries
52
+ */
53
+ function getQualifiedEmojiVariations(items) {
54
+ const results = Object.create(null);
55
+ for (let i = 0; i < items.length; i++) {
56
+ const result = getQualifiedEmojiVariation(items[i]);
57
+ const key = getEmojiSequenceKeyword(getUnqualifiedEmojiSequence(result.sequence));
58
+ if (!results[key] || results[key].sequence.length < result.sequence.length) results[key] = result;
59
+ }
60
+ return Object.values(results);
61
+ }
62
+ export { getQualifiedEmojiVariation, getQualifiedEmojiVariations, guessQualifiedEmojiSequence };
@@ -0,0 +1,25 @@
1
+ /** Default values for dimensions */
2
+ const defaultIconDimensions = Object.freeze({
3
+ left: 0,
4
+ top: 0,
5
+ width: 16,
6
+ height: 16
7
+ });
8
+ /** Default values for transformations */
9
+ const defaultIconTransformations = Object.freeze({
10
+ rotate: 0,
11
+ vFlip: false,
12
+ hFlip: false
13
+ });
14
+ /** Default values for all optional IconifyIcon properties */
15
+ const defaultIconProps = Object.freeze({
16
+ ...defaultIconDimensions,
17
+ ...defaultIconTransformations
18
+ });
19
+ /** Default values for all properties used in ExtendedIconifyIcon */
20
+ const defaultExtendedIconProps = Object.freeze({
21
+ ...defaultIconProps,
22
+ body: "",
23
+ hidden: false
24
+ });
25
+ export { defaultExtendedIconProps, defaultIconDimensions, defaultIconProps, defaultIconTransformations };
@@ -0,0 +1,16 @@
1
+ import { defaultExtendedIconProps, defaultIconTransformations } from "./defaults.js";
2
+ import { mergeIconTransformations } from "./transformations.js";
3
+ /**
4
+ * Merge icon and alias
5
+ *
6
+ * Can also be used to merge default values and icon
7
+ */
8
+ function mergeIconData(parent, child) {
9
+ const result = mergeIconTransformations(parent, child);
10
+ for (const key in defaultExtendedIconProps) if (key in defaultIconTransformations) {
11
+ if (key in parent && !(key in result)) result[key] = defaultIconTransformations[key];
12
+ } else if (key in child) result[key] = child[key];
13
+ else if (key in parent) result[key] = parent[key];
14
+ return result;
15
+ }
16
+ export { mergeIconData };