renovate-log-parser 0.1.1 → 0.2.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.
- package/README.md +119 -34
- package/dist/commands/install-analyze-skill.d.ts +0 -1
- package/dist/commands/install-analyze-skill.js +15 -12
- package/dist/commands/install-analyze-skill.js.map +1 -1
- package/dist/commands/web.d.ts +2 -1
- package/dist/commands/web.js +23 -11
- package/dist/commands/web.js.map +1 -1
- package/dist/core/skill-template.js +17 -3
- package/dist/core/skill-template.js.map +1 -1
- package/dist/server/api.d.ts +16 -0
- package/dist/server/api.js +173 -0
- package/dist/server/api.js.map +1 -0
- package/dist/server/http-error.d.ts +18 -0
- package/dist/server/http-error.js +23 -0
- package/dist/server/http-error.js.map +1 -0
- package/dist/server/index.d.ts +34 -0
- package/dist/server/index.js +54 -0
- package/dist/server/index.js.map +1 -0
- package/dist/server/log-registry.d.ts +34 -0
- package/dist/server/log-registry.js +157 -0
- package/dist/server/log-registry.js.map +1 -0
- package/dist/server/server-main.d.ts +1 -0
- package/dist/server/server-main.js +31 -0
- package/dist/server/server-main.js.map +1 -0
- package/dist/server/translate-filters.d.ts +58 -0
- package/dist/server/translate-filters.js +119 -0
- package/dist/server/translate-filters.js.map +1 -0
- package/package.json +13 -5
- package/web/.output/public/200.html +1 -0
- package/web/.output/public/404.html +1 -0
- package/web/.output/public/_nuxt/BDNMzG2s.js +1 -0
- package/web/.output/public/_nuxt/BjDV6v2h.js +1 -0
- package/web/.output/public/_nuxt/CVlqYHPc.js +6 -0
- package/web/.output/public/_nuxt/CuOsDQlp.js +1 -0
- package/web/.output/public/_nuxt/CztOM3Aq.js +28 -0
- package/web/.output/public/_nuxt/D3wuHpM_.js +3 -0
- package/web/.output/public/_nuxt/DK3Fl9T5.js +1 -0
- package/web/.output/public/_nuxt/DUXEQ2Eh.js +3 -0
- package/web/.output/public/_nuxt/DVWtRbHb.js +1 -0
- package/web/.output/public/_nuxt/DeS15jQo.js +1 -0
- package/web/.output/public/_nuxt/XP9RigIT.js +1 -0
- package/web/.output/public/_nuxt/builds/latest.json +1 -1
- package/web/.output/public/_nuxt/builds/meta/f68582c9-55a9-4352-b85a-d7f8de6f7202.json +1 -0
- package/web/.output/public/_nuxt/entry.BlZrUrUl.css +2 -0
- package/web/.output/public/_nuxt/error-404.zKZBzOko.css +1 -0
- package/web/.output/public/_nuxt/error-500.DwXcJPfY.css +1 -0
- package/web/.output/public/_nuxt/lGYp6_9X.js +1 -0
- package/web/.output/public/_nuxt/pages.BDcbBSnU.css +1 -0
- package/web/.output/public/_nuxt/public-sans-latin-400-italic.B1appi_f.woff2 +0 -0
- package/web/.output/public/_nuxt/public-sans-latin-400-italic.DsCWG5h0.woff +0 -0
- package/web/.output/public/_nuxt/public-sans-latin-400-normal.8Rpg0ruU.woff2 +0 -0
- package/web/.output/public/_nuxt/public-sans-latin-400-normal.SBbinRkI.woff +0 -0
- package/web/.output/public/_nuxt/public-sans-latin-500-normal.NlrCPXnF.woff2 +0 -0
- package/web/.output/public/_nuxt/public-sans-latin-500-normal.vCxiVFAq.woff +0 -0
- package/web/.output/public/_nuxt/public-sans-latin-600-normal.BR59oU-I.woff +0 -0
- package/web/.output/public/_nuxt/public-sans-latin-600-normal.Fru-LXNs.woff2 +0 -0
- package/web/.output/public/_nuxt/public-sans-latin-700-normal.BqJmxWdE.woff2 +0 -0
- package/web/.output/public/_nuxt/public-sans-latin-700-normal.Dm-oTPSL.woff +0 -0
- package/web/.output/public/favicon-dark.svg +32 -0
- package/web/.output/public/favicon-light.svg +32 -0
- package/web/.output/public/index.html +1 -0
- package/web/.output/nitro.json +0 -15
- package/web/.output/public/_fonts/57NSSoFy1VLVs2gqly8Ls9awBnZMFyXGrefpmqvdqmc-zJfbBtpgM4cDmcXBsqZNW79_kFnlpPd62b48glgdydA.woff2 +0 -0
- package/web/.output/public/_fonts/8VR2wSMN-3U4NbWAVYXlkRV6hA0jFBXP-0RtL3X7fko-x2gYI4qfmkRdxyQQUPaBZdZdgl1TeVrquF_TxHeM4lM.woff2 +0 -0
- package/web/.output/public/_fonts/GsKUclqeNLJ96g5AU593ug6yanivOiwjW_7zESNPChw-jHA4tBeM1bjF7LATGUpfBuSTyomIFrWBTzjF7txVYfg.woff2 +0 -0
- package/web/.output/public/_fonts/Ld1FnTo3yTIwDyGfTQ5-Fws9AWsCbKfMvgxduXr7JcY-W25bL8NF1fjpLRSOgJb7RoZPHqGQNwMTM7S9tHVoxx8.woff2 +0 -0
- package/web/.output/public/_fonts/NdzqRASp2bovDUhQT1IRE_EMqKJ2KYQdTCfFcBvL8yw-KhwZiS86o3fErOe5GGMExHUemmI_dBfaEFxjISZrBd0.woff2 +0 -0
- package/web/.output/public/_fonts/iTkrULNFJJkTvihIg1Vqi5IODRH_9btXCioVF5l98I8-AndUyau2HR2felA_ra8V2mutQgschhasE5FD1dXGJX8.woff2 +0 -0
- package/web/.output/public/_nuxt/BWja8e3M.js +0 -37
- package/web/.output/public/_nuxt/BgApMHS1.js +0 -1
- package/web/.output/public/_nuxt/CGPWRqbc.js +0 -1
- package/web/.output/public/_nuxt/DlAUqK2U.js +0 -1
- package/web/.output/public/_nuxt/Sgtec1U0.js +0 -1
- package/web/.output/public/_nuxt/builds/meta/785e7885-8d38-4aac-a7f6-735f68d27e63.json +0 -1
- package/web/.output/public/_nuxt/entry.9mB-pyEY.css +0 -1
- package/web/.output/public/_nuxt/error-404.B_PvSG-P.css +0 -1
- package/web/.output/public/_nuxt/error-500.CghkKCEr.css +0 -1
- package/web/.output/public/_nuxt/index.BlvAG7F6.css +0 -1
- package/web/.output/public/favicon.ico +0 -0
- package/web/.output/server/chunks/_/error-500.mjs +0 -19
- package/web/.output/server/chunks/_/error-500.mjs.map +0 -1
- package/web/.output/server/chunks/_/icons.mjs +0 -6153
- package/web/.output/server/chunks/_/icons.mjs.map +0 -1
- package/web/.output/server/chunks/_/icons2.mjs +0 -11494
- package/web/.output/server/chunks/_/icons2.mjs.map +0 -1
- package/web/.output/server/chunks/build/_plugin-vue_export-helper-1tPrXgE0.mjs +0 -10
- package/web/.output/server/chunks/build/_plugin-vue_export-helper-1tPrXgE0.mjs.map +0 -1
- package/web/.output/server/chunks/build/client.precomputed.mjs +0 -4
- package/web/.output/server/chunks/build/client.precomputed.mjs.map +0 -1
- package/web/.output/server/chunks/build/error-404-DOK13euR.mjs +0 -106
- package/web/.output/server/chunks/build/error-404-DOK13euR.mjs.map +0 -1
- package/web/.output/server/chunks/build/error-404-styles.9cNA4arh.mjs +0 -8
- package/web/.output/server/chunks/build/error-404-styles.9cNA4arh.mjs.map +0 -1
- package/web/.output/server/chunks/build/error-500-DKHEaocY.mjs +0 -89
- package/web/.output/server/chunks/build/error-500-DKHEaocY.mjs.map +0 -1
- package/web/.output/server/chunks/build/error-500-styles.BX54ZlkH.mjs +0 -8
- package/web/.output/server/chunks/build/error-500-styles.BX54ZlkH.mjs.map +0 -1
- package/web/.output/server/chunks/build/index-D_lNB6LA.mjs +0 -19675
- package/web/.output/server/chunks/build/index-D_lNB6LA.mjs.map +0 -1
- package/web/.output/server/chunks/build/index-styles.V2iua2bE.mjs +0 -8
- package/web/.output/server/chunks/build/index-styles.V2iua2bE.mjs.map +0 -1
- package/web/.output/server/chunks/build/server.mjs +0 -7910
- package/web/.output/server/chunks/build/server.mjs.map +0 -1
- package/web/.output/server/chunks/build/styles.mjs +0 -10
- package/web/.output/server/chunks/build/styles.mjs.map +0 -1
- package/web/.output/server/chunks/nitro/nitro.mjs +0 -6944
- package/web/.output/server/chunks/nitro/nitro.mjs.map +0 -1
- package/web/.output/server/chunks/routes/api/fields.get.mjs +0 -27
- package/web/.output/server/chunks/routes/api/fields.get.mjs.map +0 -1
- package/web/.output/server/chunks/routes/api/findings.get.mjs +0 -30
- package/web/.output/server/chunks/routes/api/findings.get.mjs.map +0 -1
- package/web/.output/server/chunks/routes/api/log/contents.post.mjs +0 -29
- package/web/.output/server/chunks/routes/api/log/contents.post.mjs.map +0 -1
- package/web/.output/server/chunks/routes/api/log/path.post.mjs +0 -30
- package/web/.output/server/chunks/routes/api/log/path.post.mjs.map +0 -1
- package/web/.output/server/chunks/routes/api/repositories.get.mjs +0 -27
- package/web/.output/server/chunks/routes/api/repositories.get.mjs.map +0 -1
- package/web/.output/server/chunks/routes/api/rows.get.mjs +0 -48
- package/web/.output/server/chunks/routes/api/rows.get.mjs.map +0 -1
- package/web/.output/server/chunks/routes/renderer.mjs +0 -451
- package/web/.output/server/chunks/routes/renderer.mjs.map +0 -1
- package/web/.output/server/chunks/virtual/_virtual_spa-template.mjs +0 -4
- package/web/.output/server/chunks/virtual/_virtual_spa-template.mjs.map +0 -1
- package/web/.output/server/index.mjs +0 -16
- package/web/.output/server/index.mjs.map +0 -1
- package/web/.output/server/node_modules/.nitro/hookable@5.5.3/dist/index.mjs +0 -290
- package/web/.output/server/node_modules/.nitro/hookable@5.5.3/package.json +0 -49
- package/web/.output/server/node_modules/.nitro/hookable@6.1.1/dist/index.mjs +0 -257
- package/web/.output/server/node_modules/.nitro/hookable@6.1.1/package.json +0 -53
- package/web/.output/server/node_modules/@babel/parser/lib/index.js +0 -14599
- package/web/.output/server/node_modules/@babel/parser/package.json +0 -50
- package/web/.output/server/node_modules/@floating-ui/core/dist/floating-ui.core.mjs +0 -1038
- package/web/.output/server/node_modules/@floating-ui/core/package.json +0 -63
- package/web/.output/server/node_modules/@floating-ui/dom/dist/floating-ui.dom.mjs +0 -789
- package/web/.output/server/node_modules/@floating-ui/dom/package.json +0 -72
- package/web/.output/server/node_modules/@floating-ui/utils/dist/floating-ui.utils.dom.mjs +0 -165
- package/web/.output/server/node_modules/@floating-ui/utils/dist/floating-ui.utils.mjs +0 -136
- package/web/.output/server/node_modules/@floating-ui/utils/package.json +0 -70
- package/web/.output/server/node_modules/@floating-ui/vue/dist/floating-ui.vue.mjs +0 -190
- package/web/.output/server/node_modules/@floating-ui/vue/package.json +0 -71
- package/web/.output/server/node_modules/@iconify/utils/lib/colors/index.js +0 -295
- package/web/.output/server/node_modules/@iconify/utils/lib/colors/keywords.js +0 -701
- package/web/.output/server/node_modules/@iconify/utils/lib/css/common.js +0 -75
- package/web/.output/server/node_modules/@iconify/utils/lib/css/format.js +0 -39
- package/web/.output/server/node_modules/@iconify/utils/lib/css/icon.js +0 -47
- package/web/.output/server/node_modules/@iconify/utils/lib/css/icons.js +0 -128
- package/web/.output/server/node_modules/@iconify/utils/lib/customisations/bool.js +0 -19
- package/web/.output/server/node_modules/@iconify/utils/lib/customisations/defaults.js +0 -13
- package/web/.output/server/node_modules/@iconify/utils/lib/customisations/flip.js +0 -17
- package/web/.output/server/node_modules/@iconify/utils/lib/customisations/merge.js +0 -16
- package/web/.output/server/node_modules/@iconify/utils/lib/customisations/rotate.js +0 -30
- package/web/.output/server/node_modules/@iconify/utils/lib/emoji/cleanup.js +0 -78
- package/web/.output/server/node_modules/@iconify/utils/lib/emoji/convert.js +0 -100
- package/web/.output/server/node_modules/@iconify/utils/lib/emoji/data.js +0 -28
- package/web/.output/server/node_modules/@iconify/utils/lib/emoji/format.js +0 -58
- package/web/.output/server/node_modules/@iconify/utils/lib/emoji/parse.js +0 -48
- package/web/.output/server/node_modules/@iconify/utils/lib/emoji/regex/base.js +0 -203
- package/web/.output/server/node_modules/@iconify/utils/lib/emoji/regex/create.js +0 -33
- package/web/.output/server/node_modules/@iconify/utils/lib/emoji/regex/numbers.js +0 -132
- package/web/.output/server/node_modules/@iconify/utils/lib/emoji/regex/similar.js +0 -165
- package/web/.output/server/node_modules/@iconify/utils/lib/emoji/regex/tree.js +0 -79
- package/web/.output/server/node_modules/@iconify/utils/lib/emoji/replace/find.js +0 -92
- package/web/.output/server/node_modules/@iconify/utils/lib/emoji/replace/replace.js +0 -26
- package/web/.output/server/node_modules/@iconify/utils/lib/emoji/test/components.js +0 -76
- package/web/.output/server/node_modules/@iconify/utils/lib/emoji/test/missing.js +0 -66
- package/web/.output/server/node_modules/@iconify/utils/lib/emoji/test/name.js +0 -45
- package/web/.output/server/node_modules/@iconify/utils/lib/emoji/test/parse.js +0 -103
- package/web/.output/server/node_modules/@iconify/utils/lib/emoji/test/similar.js +0 -36
- package/web/.output/server/node_modules/@iconify/utils/lib/emoji/test/tree.js +0 -92
- package/web/.output/server/node_modules/@iconify/utils/lib/emoji/test/variations.js +0 -62
- package/web/.output/server/node_modules/@iconify/utils/lib/icon/defaults.js +0 -25
- package/web/.output/server/node_modules/@iconify/utils/lib/icon/merge.js +0 -16
- package/web/.output/server/node_modules/@iconify/utils/lib/icon/name.js +0 -57
- package/web/.output/server/node_modules/@iconify/utils/lib/icon/square.js +0 -33
- package/web/.output/server/node_modules/@iconify/utils/lib/icon/transformations.js +0 -12
- package/web/.output/server/node_modules/@iconify/utils/lib/icon-set/convert-info.js +0 -125
- package/web/.output/server/node_modules/@iconify/utils/lib/icon-set/expand.js +0 -19
- package/web/.output/server/node_modules/@iconify/utils/lib/icon-set/get-icon.js +0 -25
- package/web/.output/server/node_modules/@iconify/utils/lib/icon-set/get-icons.js +0 -36
- package/web/.output/server/node_modules/@iconify/utils/lib/icon-set/minify.js +0 -91
- package/web/.output/server/node_modules/@iconify/utils/lib/icon-set/parse.js +0 -46
- package/web/.output/server/node_modules/@iconify/utils/lib/icon-set/tree.js +0 -23
- package/web/.output/server/node_modules/@iconify/utils/lib/icon-set/validate-basic.js +0 -42
- package/web/.output/server/node_modules/@iconify/utils/lib/icon-set/validate.js +0 -123
- package/web/.output/server/node_modules/@iconify/utils/lib/index.js +0 -52
- package/web/.output/server/node_modules/@iconify/utils/lib/loader/custom.js +0 -30
- package/web/.output/server/node_modules/@iconify/utils/lib/loader/loader.js +0 -26
- package/web/.output/server/node_modules/@iconify/utils/lib/loader/modern.js +0 -27
- package/web/.output/server/node_modules/@iconify/utils/lib/loader/utils.js +0 -105
- package/web/.output/server/node_modules/@iconify/utils/lib/misc/objects.js +0 -26
- package/web/.output/server/node_modules/@iconify/utils/lib/misc/strings.js +0 -26
- package/web/.output/server/node_modules/@iconify/utils/lib/misc/title.js +0 -9
- package/web/.output/server/node_modules/@iconify/utils/lib/svg/build.js +0 -113
- package/web/.output/server/node_modules/@iconify/utils/lib/svg/defs.js +0 -31
- package/web/.output/server/node_modules/@iconify/utils/lib/svg/encode-svg-for-css.js +0 -13
- package/web/.output/server/node_modules/@iconify/utils/lib/svg/html.js +0 -9
- package/web/.output/server/node_modules/@iconify/utils/lib/svg/id.js +0 -41
- package/web/.output/server/node_modules/@iconify/utils/lib/svg/inner-html.js +0 -22
- package/web/.output/server/node_modules/@iconify/utils/lib/svg/parse.js +0 -67
- package/web/.output/server/node_modules/@iconify/utils/lib/svg/pretty.js +0 -54
- package/web/.output/server/node_modules/@iconify/utils/lib/svg/size.js +0 -27
- package/web/.output/server/node_modules/@iconify/utils/lib/svg/trim.js +0 -7
- package/web/.output/server/node_modules/@iconify/utils/lib/svg/url.js +0 -22
- package/web/.output/server/node_modules/@iconify/utils/lib/svg/viewbox.js +0 -8
- package/web/.output/server/node_modules/@iconify/utils/package.json +0 -119
- package/web/.output/server/node_modules/@iconify/vue/dist/iconify.mjs +0 -1896
- package/web/.output/server/node_modules/@iconify/vue/package.json +0 -62
- package/web/.output/server/node_modules/@tanstack/virtual-core/dist/esm/index.js +0 -1268
- package/web/.output/server/node_modules/@tanstack/virtual-core/dist/esm/lazy-measurements.js +0 -34
- package/web/.output/server/node_modules/@tanstack/virtual-core/dist/esm/utils.js +0 -74
- package/web/.output/server/node_modules/@tanstack/virtual-core/package.json +0 -56
- package/web/.output/server/node_modules/@tanstack/vue-virtual/dist/esm/index.js +0 -66
- package/web/.output/server/node_modules/@tanstack/vue-virtual/package.json +0 -68
- package/web/.output/server/node_modules/@vue/compiler-core/dist/compiler-core.cjs.prod.js +0 -6759
- package/web/.output/server/node_modules/@vue/compiler-core/package.json +0 -58
- package/web/.output/server/node_modules/@vue/compiler-dom/dist/compiler-dom.cjs.prod.js +0 -689
- package/web/.output/server/node_modules/@vue/compiler-dom/package.json +0 -57
- package/web/.output/server/node_modules/@vue/compiler-ssr/dist/compiler-ssr.cjs.js +0 -1413
- package/web/.output/server/node_modules/@vue/compiler-ssr/package.json +0 -34
- package/web/.output/server/node_modules/@vue/devtools-api/dist/index.js +0 -2
- package/web/.output/server/node_modules/@vue/devtools-api/package.json +0 -34
- package/web/.output/server/node_modules/@vue/devtools-kit/dist/index.js +0 -5670
- package/web/.output/server/node_modules/@vue/devtools-kit/node_modules/hookable/dist/index.mjs +0 -290
- package/web/.output/server/node_modules/@vue/devtools-kit/node_modules/hookable/package.json +0 -49
- package/web/.output/server/node_modules/@vue/devtools-kit/package.json +0 -44
- package/web/.output/server/node_modules/@vue/devtools-shared/dist/index.js +0 -239
- package/web/.output/server/node_modules/@vue/devtools-shared/package.json +0 -33
- package/web/.output/server/node_modules/@vue/reactivity/dist/reactivity.cjs.prod.js +0 -1899
- package/web/.output/server/node_modules/@vue/reactivity/package.json +0 -55
- package/web/.output/server/node_modules/@vue/runtime-core/dist/runtime-core.cjs.prod.js +0 -6940
- package/web/.output/server/node_modules/@vue/runtime-core/package.json +0 -52
- package/web/.output/server/node_modules/@vue/runtime-dom/dist/runtime-dom.cjs.prod.js +0 -1822
- package/web/.output/server/node_modules/@vue/runtime-dom/package.json +0 -60
- package/web/.output/server/node_modules/@vue/server-renderer/dist/server-renderer.cjs.prod.js +0 -896
- package/web/.output/server/node_modules/@vue/server-renderer/package.json +0 -55
- package/web/.output/server/node_modules/@vue/shared/dist/shared.cjs.prod.js +0 -604
- package/web/.output/server/node_modules/@vue/shared/package.json +0 -47
- package/web/.output/server/node_modules/@vueuse/core/dist/index.js +0 -8464
- package/web/.output/server/node_modules/@vueuse/core/package.json +0 -49
- package/web/.output/server/node_modules/@vueuse/shared/dist/index.js +0 -2013
- package/web/.output/server/node_modules/@vueuse/shared/package.json +0 -42
- package/web/.output/server/node_modules/aria-hidden/dist/es5/index.js +0 -174
- package/web/.output/server/node_modules/aria-hidden/package.json +0 -71
- package/web/.output/server/node_modules/birpc/dist/index.mjs +0 -291
- package/web/.output/server/node_modules/birpc/package.json +0 -57
- package/web/.output/server/node_modules/consola/dist/chunks/prompt.mjs +0 -280
- package/web/.output/server/node_modules/consola/dist/core.mjs +0 -512
- package/web/.output/server/node_modules/consola/dist/index.mjs +0 -651
- package/web/.output/server/node_modules/consola/dist/shared/consola.DRwqZj3T.mjs +0 -72
- package/web/.output/server/node_modules/consola/dist/shared/consola.DXBYu-KD.mjs +0 -288
- package/web/.output/server/node_modules/consola/package.json +0 -136
- package/web/.output/server/node_modules/devalue/index.js +0 -4
- package/web/.output/server/node_modules/devalue/package.json +0 -40
- package/web/.output/server/node_modules/devalue/src/base64.js +0 -60
- package/web/.output/server/node_modules/devalue/src/constants.js +0 -12
- package/web/.output/server/node_modules/devalue/src/parse.js +0 -283
- package/web/.output/server/node_modules/devalue/src/stringify.js +0 -401
- package/web/.output/server/node_modules/devalue/src/uneval.js +0 -552
- package/web/.output/server/node_modules/devalue/src/utils.js +0 -160
- package/web/.output/server/node_modules/entities/dist/commonjs/decode-codepoint.js +0 -77
- package/web/.output/server/node_modules/entities/dist/commonjs/decode.js +0 -568
- package/web/.output/server/node_modules/entities/dist/commonjs/generated/decode-data-html.js +0 -7
- package/web/.output/server/node_modules/entities/dist/commonjs/generated/decode-data-xml.js +0 -7
- package/web/.output/server/node_modules/entities/dist/commonjs/internal/bin-trie-flags.js +0 -21
- package/web/.output/server/node_modules/entities/dist/commonjs/internal/decode-shared.js +0 -31
- package/web/.output/server/node_modules/entities/dist/commonjs/package.json +0 -3
- package/web/.output/server/node_modules/entities/package.json +0 -120
- package/web/.output/server/node_modules/estree-walker/dist/umd/estree-walker.js +0 -344
- package/web/.output/server/node_modules/estree-walker/package.json +0 -37
- package/web/.output/server/node_modules/hookable/dist/index.mjs +0 -257
- package/web/.output/server/node_modules/hookable/package.json +0 -53
- package/web/.output/server/node_modules/nostics/dist/index.mjs +0 -179
- package/web/.output/server/node_modules/nostics/package.json +0 -124
- package/web/.output/server/node_modules/perfect-debounce/dist/index.mjs +0 -89
- package/web/.output/server/node_modules/perfect-debounce/package.json +0 -41
- package/web/.output/server/node_modules/rou3/dist/index.mjs +0 -501
- package/web/.output/server/node_modules/rou3/package.json +0 -48
- package/web/.output/server/node_modules/source-map-js/lib/array-set.js +0 -121
- package/web/.output/server/node_modules/source-map-js/lib/base64-vlq.js +0 -140
- package/web/.output/server/node_modules/source-map-js/lib/base64.js +0 -67
- package/web/.output/server/node_modules/source-map-js/lib/binary-search.js +0 -111
- package/web/.output/server/node_modules/source-map-js/lib/mapping-list.js +0 -79
- package/web/.output/server/node_modules/source-map-js/lib/quick-sort.js +0 -132
- package/web/.output/server/node_modules/source-map-js/lib/source-map-consumer.js +0 -1188
- package/web/.output/server/node_modules/source-map-js/lib/source-map-generator.js +0 -444
- package/web/.output/server/node_modules/source-map-js/lib/source-node.js +0 -413
- package/web/.output/server/node_modules/source-map-js/lib/util.js +0 -594
- package/web/.output/server/node_modules/source-map-js/package.json +0 -71
- package/web/.output/server/node_modules/source-map-js/source-map.js +0 -8
- package/web/.output/server/node_modules/srvx/dist/_chunks/_body-limit.mjs +0 -39
- package/web/.output/server/node_modules/srvx/dist/_chunks/_plugins.mjs +0 -56
- package/web/.output/server/node_modules/srvx/dist/_chunks/_trust-proxy.mjs +0 -58
- package/web/.output/server/node_modules/srvx/dist/_chunks/_url.mjs +0 -134
- package/web/.output/server/node_modules/srvx/dist/_chunks/_utils.mjs +0 -15
- package/web/.output/server/node_modules/srvx/dist/_chunks/_utils2.mjs +0 -75
- package/web/.output/server/node_modules/srvx/dist/adapters/node.mjs +0 -976
- package/web/.output/server/node_modules/srvx/package.json +0 -102
- package/web/.output/server/node_modules/tailwind-merge/dist/bundle-mjs.mjs +0 -3365
- package/web/.output/server/node_modules/tailwind-merge/package.json +0 -93
- package/web/.output/server/node_modules/tailwind-variants/dist/chunk-LQJYWU4O.js +0 -112
- package/web/.output/server/node_modules/tailwind-variants/dist/chunk-RZF76H2U.js +0 -269
- package/web/.output/server/node_modules/tailwind-variants/dist/index.js +0 -38
- package/web/.output/server/node_modules/tailwind-variants/package.json +0 -122
- package/web/.output/server/node_modules/tailwindcss/dist/chunk-X4GG3EDV.mjs +0 -1
- package/web/.output/server/node_modules/tailwindcss/dist/colors.mjs +0 -1
- package/web/.output/server/node_modules/tailwindcss/package.json +0 -89
- package/web/.output/server/node_modules/ufo/dist/index.mjs +0 -645
- package/web/.output/server/node_modules/ufo/package.json +0 -48
- package/web/.output/server/node_modules/unhead/dist/index.mjs +0 -9
- package/web/.output/server/node_modules/unhead/dist/parser.mjs +0 -508
- package/web/.output/server/node_modules/unhead/dist/plugins.mjs +0 -101
- package/web/.output/server/node_modules/unhead/dist/scripts.mjs +0 -30
- package/web/.output/server/node_modules/unhead/dist/server.mjs +0 -180
- package/web/.output/server/node_modules/unhead/dist/shared/unhead.B3VbJo7Y.mjs +0 -207
- package/web/.output/server/node_modules/unhead/dist/shared/unhead.BYvz9V1x.mjs +0 -43
- package/web/.output/server/node_modules/unhead/dist/shared/unhead.BnoAbrHA.mjs +0 -269
- package/web/.output/server/node_modules/unhead/dist/shared/unhead.CaI5ZD4O.mjs +0 -182
- package/web/.output/server/node_modules/unhead/dist/shared/unhead.CbpEuj3y.mjs +0 -71
- package/web/.output/server/node_modules/unhead/dist/shared/unhead.D4vSFytZ.mjs +0 -236
- package/web/.output/server/node_modules/unhead/dist/shared/unhead.DQc16pHI.mjs +0 -196
- package/web/.output/server/node_modules/unhead/dist/shared/unhead.Dh1cQCTe.mjs +0 -44
- package/web/.output/server/node_modules/unhead/dist/shared/unhead.TxTMM7cM.mjs +0 -166
- package/web/.output/server/node_modules/unhead/dist/shared/unhead.yem5I2v_.mjs +0 -38
- package/web/.output/server/node_modules/unhead/dist/utils.mjs +0 -5
- package/web/.output/server/node_modules/unhead/node_modules/hookable/dist/index.mjs +0 -257
- package/web/.output/server/node_modules/unhead/node_modules/hookable/package.json +0 -53
- package/web/.output/server/node_modules/unhead/package.json +0 -105
- package/web/.output/server/node_modules/vue/dist/vue.cjs.js +0 -80
- package/web/.output/server/node_modules/vue/dist/vue.cjs.prod.js +0 -66
- package/web/.output/server/node_modules/vue/index.js +0 -7
- package/web/.output/server/node_modules/vue/index.mjs +0 -1
- package/web/.output/server/node_modules/vue/package.json +0 -112
- package/web/.output/server/node_modules/vue/server-renderer/index.mjs +0 -1
- package/web/.output/server/node_modules/vue-bundle-renderer/dist/runtime.mjs +0 -249
- package/web/.output/server/node_modules/vue-bundle-renderer/package.json +0 -57
- package/web/.output/server/node_modules/vue-demi/lib/index.mjs +0 -34
- package/web/.output/server/node_modules/vue-demi/package.json +0 -47
- package/web/.output/server/node_modules/vue-router/dist/devtools-Bpr7ZAVB.js +0 -1056
- package/web/.output/server/node_modules/vue-router/dist/useApi-CROJJdhE.js +0 -436
- package/web/.output/server/node_modules/vue-router/dist/vue-router.js +0 -1543
- package/web/.output/server/node_modules/vue-router/package.json +0 -214
- package/web/.output/server/node_modules/vue-router/vue-router.node.mjs +0 -2
- package/web/.output/server/package.json +0 -51
|
@@ -1,48 +0,0 @@
|
|
|
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
|
-
* Prepare emoji for icons list
|
|
11
|
-
*
|
|
12
|
-
* Test data should be fetched from 'https://unicode.org/Public/emoji/17.0/emoji-test.txt'
|
|
13
|
-
* It is used to detect missing emojis and optimise regular expression
|
|
14
|
-
*/
|
|
15
|
-
function prepareEmojiForIconsList(icons, rawTestData) {
|
|
16
|
-
const testData = rawTestData ? parseEmojiTestFile(rawTestData) : void 0;
|
|
17
|
-
let iconsList = [];
|
|
18
|
-
for (const char in icons) {
|
|
19
|
-
const sequence = getEmojiSequenceFromString(char);
|
|
20
|
-
iconsList.push({
|
|
21
|
-
icon: icons[char],
|
|
22
|
-
sequence
|
|
23
|
-
});
|
|
24
|
-
}
|
|
25
|
-
iconsList = getQualifiedEmojiVariations(iconsList);
|
|
26
|
-
if (testData) iconsList = iconsList.concat(findMissingEmojis(iconsList, getEmojiTestDataTree(combineSimilarEmojiTestData(testData))));
|
|
27
|
-
const preparedIcons = iconsList.map((item) => {
|
|
28
|
-
const sequence = getEmojiSequenceKeyword(getUnqualifiedEmojiSequence(item.sequence));
|
|
29
|
-
return {
|
|
30
|
-
icon: item.icon,
|
|
31
|
-
sequence
|
|
32
|
-
};
|
|
33
|
-
});
|
|
34
|
-
return {
|
|
35
|
-
regex: createOptimisedRegexForEmojiSequences(iconsList.map((item) => item.sequence)),
|
|
36
|
-
icons: preparedIcons
|
|
37
|
-
};
|
|
38
|
-
}
|
|
39
|
-
/**
|
|
40
|
-
* Prepare emoji for an icon set
|
|
41
|
-
*
|
|
42
|
-
* Test data should be fetched from 'https://unicode.org/Public/emoji/15.1/emoji-test.txt'
|
|
43
|
-
* It is used to detect missing emojis and optimise regular expression
|
|
44
|
-
*/
|
|
45
|
-
function prepareEmojiForIconSet(iconSet, rawTestData) {
|
|
46
|
-
return prepareEmojiForIconsList(iconSet.chars || {}, rawTestData);
|
|
47
|
-
}
|
|
48
|
-
export { prepareEmojiForIconSet, prepareEmojiForIconsList };
|
|
@@ -1,203 +0,0 @@
|
|
|
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 } = range;
|
|
40
|
-
range = null;
|
|
41
|
-
if (last > start + 1) chars.push(toString(start) + "-" + toString(last));
|
|
42
|
-
else for (let i = 0; i < numbers.length; i++) chars.push(toString(numbers[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 = firstItem.numbers;
|
|
111
|
-
if (numbers) result.numbers = numbers;
|
|
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) => cloneEmojiRegexItem(item, false));
|
|
191
|
-
break;
|
|
192
|
-
case "set":
|
|
193
|
-
if (shallow) result.sets = [...result.sets];
|
|
194
|
-
else result.sets = result.sets.map((item) => cloneEmojiRegexItem(item, 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
|
-
export { cloneEmojiRegexItem, createOptionalEmojiRegexItem, createSequenceEmojiRegexItem, createSetEmojiRegexItem, createUTF16EmojiRegexItem, updateOptionalEmojiRegexItem, updateSequenceEmojiRegexItem, updateSetEmojiRegexItem, updateUTF16EmojiRegexItem, wrapRegexInGroup };
|
|
@@ -1,33 +0,0 @@
|
|
|
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
|
-
* Create optimised regex
|
|
7
|
-
*/
|
|
8
|
-
function createOptimisedRegexForEmojiSequences(sequences) {
|
|
9
|
-
sequences = sequences.map((item) => convertEmojiSequenceToUTF32(item));
|
|
10
|
-
return parseEmojiTree(createEmojisTree(sequences)).regex;
|
|
11
|
-
}
|
|
12
|
-
/**
|
|
13
|
-
* Create optimised regex for emojis
|
|
14
|
-
*
|
|
15
|
-
* First parameter is array of emojis, entry can be either list of
|
|
16
|
-
* code points or emoji sequence as a string
|
|
17
|
-
*
|
|
18
|
-
* Examples of acceptable strings (case insensitive):
|
|
19
|
-
* '1F636 200D 1F32B FE0F' - space separated UTF32 sequence
|
|
20
|
-
* '1f636-200d-1f32b-fe0f' - dash separated UTF32 sequence
|
|
21
|
-
* 'd83d-de36-200d-d83c-df2b-fe0f' - dash separated UTF16 sequence
|
|
22
|
-
* '\\uD83D\\uDE36\\u200D\\uD83C\\uDF2B\\uFE0F' - UTF16 sequence escaped with '\\u'
|
|
23
|
-
*
|
|
24
|
-
* All examples above refer to the same emoji and will generate the same regex result
|
|
25
|
-
*/
|
|
26
|
-
function createOptimisedRegex(emojis) {
|
|
27
|
-
let sequences = emojis.map((item) => typeof item === "string" ? getSequenceFromEmojiStringOrKeyword(item) : item);
|
|
28
|
-
sequences = getQualifiedEmojiVariations(sequences.map((sequence) => {
|
|
29
|
-
return { sequence };
|
|
30
|
-
})).map((item) => item.sequence);
|
|
31
|
-
return createOptimisedRegexForEmojiSequences(sequences);
|
|
32
|
-
}
|
|
33
|
-
export { createOptimisedRegex, createOptimisedRegexForEmojiSequences };
|
|
@@ -1,132 +0,0 @@
|
|
|
1
|
-
import "../data.js";
|
|
2
|
-
import { splitUTF32Number } from "../convert.js";
|
|
3
|
-
import { createOptionalEmojiRegexItem, createSequenceEmojiRegexItem, createSetEmojiRegexItem, createUTF16EmojiRegexItem } from "./base.js";
|
|
4
|
-
/**
|
|
5
|
-
* Create regex item for set of numbers
|
|
6
|
-
*/
|
|
7
|
-
function createEmojiRegexItemForNumbers(numbers) {
|
|
8
|
-
const utf32 = [];
|
|
9
|
-
const utf16 = [];
|
|
10
|
-
numbers.sort((a, b) => a - b);
|
|
11
|
-
let lastNumber;
|
|
12
|
-
for (let i = 0; i < numbers.length; i++) {
|
|
13
|
-
const number = numbers[i];
|
|
14
|
-
if (number === lastNumber) continue;
|
|
15
|
-
lastNumber = number;
|
|
16
|
-
const split = splitUTF32Number(number);
|
|
17
|
-
if (!split) {
|
|
18
|
-
utf16.push(number);
|
|
19
|
-
continue;
|
|
20
|
-
}
|
|
21
|
-
const [first, second] = split;
|
|
22
|
-
const item = utf32.find((item) => item.first === first);
|
|
23
|
-
if (item) {
|
|
24
|
-
item.second.push(second);
|
|
25
|
-
item.numbers.push(number);
|
|
26
|
-
} else utf32.push({
|
|
27
|
-
first,
|
|
28
|
-
second: [second],
|
|
29
|
-
numbers: [number]
|
|
30
|
-
});
|
|
31
|
-
}
|
|
32
|
-
const results = [];
|
|
33
|
-
if (utf16.length) results.push(createUTF16EmojiRegexItem(utf16));
|
|
34
|
-
if (utf32.length) {
|
|
35
|
-
const utf32Set = [];
|
|
36
|
-
for (let i = 0; i < utf32.length; i++) {
|
|
37
|
-
const item = utf32[i];
|
|
38
|
-
const secondRegex = createUTF16EmojiRegexItem(item.second);
|
|
39
|
-
const listItem = utf32Set.find((item) => item.second.regex === secondRegex.regex);
|
|
40
|
-
if (listItem) {
|
|
41
|
-
listItem.first.push(item.first);
|
|
42
|
-
listItem.numbers = [...listItem.numbers, ...item.numbers];
|
|
43
|
-
} else utf32Set.push({
|
|
44
|
-
second: secondRegex,
|
|
45
|
-
first: [item.first],
|
|
46
|
-
numbers: [...item.numbers]
|
|
47
|
-
});
|
|
48
|
-
}
|
|
49
|
-
for (let i = 0; i < utf32Set.length; i++) {
|
|
50
|
-
const item = utf32Set[i];
|
|
51
|
-
const firstRegex = createUTF16EmojiRegexItem(item.first);
|
|
52
|
-
const secondRegex = item.second;
|
|
53
|
-
results.push(createSequenceEmojiRegexItem([firstRegex, secondRegex], item.numbers));
|
|
54
|
-
}
|
|
55
|
-
}
|
|
56
|
-
return results.length === 1 ? results[0] : createSetEmojiRegexItem(results);
|
|
57
|
-
}
|
|
58
|
-
/**
|
|
59
|
-
* Create sequence of numbers
|
|
60
|
-
*/
|
|
61
|
-
function createRegexForNumbersSequence(numbers, optionalVariations = true) {
|
|
62
|
-
const items = [];
|
|
63
|
-
for (let i = 0; i < numbers.length; i++) {
|
|
64
|
-
const num = numbers[i];
|
|
65
|
-
const split = splitUTF32Number(num);
|
|
66
|
-
if (!split) {
|
|
67
|
-
const item = createUTF16EmojiRegexItem([num]);
|
|
68
|
-
if (optionalVariations && num === 65039) items.push(createOptionalEmojiRegexItem(item));
|
|
69
|
-
else items.push(item);
|
|
70
|
-
} else {
|
|
71
|
-
items.push(createUTF16EmojiRegexItem([split[0]]));
|
|
72
|
-
items.push(createUTF16EmojiRegexItem([split[1]]));
|
|
73
|
-
}
|
|
74
|
-
}
|
|
75
|
-
if (items.length === 1) return items[0];
|
|
76
|
-
const result = createSequenceEmojiRegexItem(items);
|
|
77
|
-
if (numbers.length === 1 && items[0].type === "utf16") result.numbers = [...numbers];
|
|
78
|
-
return result;
|
|
79
|
-
}
|
|
80
|
-
/**
|
|
81
|
-
* Attempt to optimise numbers in a set
|
|
82
|
-
*/
|
|
83
|
-
function optimiseNumbersSet(set) {
|
|
84
|
-
const mandatoryMatches = {
|
|
85
|
-
numbers: [],
|
|
86
|
-
items: []
|
|
87
|
-
};
|
|
88
|
-
const optionalMatches = {
|
|
89
|
-
numbers: [],
|
|
90
|
-
items: []
|
|
91
|
-
};
|
|
92
|
-
const filteredItems = set.sets.filter((item) => {
|
|
93
|
-
if (item.type === "optional") {
|
|
94
|
-
const parentItem = item.item;
|
|
95
|
-
if (parentItem.numbers) {
|
|
96
|
-
optionalMatches.items.push(item);
|
|
97
|
-
optionalMatches.numbers = optionalMatches.numbers.concat(parentItem.numbers);
|
|
98
|
-
return false;
|
|
99
|
-
}
|
|
100
|
-
return true;
|
|
101
|
-
}
|
|
102
|
-
if (item.numbers) {
|
|
103
|
-
mandatoryMatches.items.push(item);
|
|
104
|
-
mandatoryMatches.numbers = mandatoryMatches.numbers.concat(item.numbers);
|
|
105
|
-
return false;
|
|
106
|
-
}
|
|
107
|
-
return true;
|
|
108
|
-
});
|
|
109
|
-
if (mandatoryMatches.items.length + optionalMatches.items.length < 2) return set;
|
|
110
|
-
const optionalNumbers = new Set(optionalMatches.numbers);
|
|
111
|
-
let foundMatches = false;
|
|
112
|
-
mandatoryMatches.numbers = mandatoryMatches.numbers.filter((number) => {
|
|
113
|
-
if (optionalNumbers.has(number)) {
|
|
114
|
-
foundMatches = true;
|
|
115
|
-
return false;
|
|
116
|
-
}
|
|
117
|
-
return true;
|
|
118
|
-
});
|
|
119
|
-
if (mandatoryMatches.items.length) {
|
|
120
|
-
if (!foundMatches && mandatoryMatches.items.length === 1) filteredItems.push(mandatoryMatches.items[0]);
|
|
121
|
-
else if (mandatoryMatches.numbers.length) filteredItems.push(createEmojiRegexItemForNumbers(mandatoryMatches.numbers));
|
|
122
|
-
}
|
|
123
|
-
switch (optionalMatches.items.length) {
|
|
124
|
-
case 0: break;
|
|
125
|
-
case 1:
|
|
126
|
-
filteredItems.push(optionalMatches.items[0]);
|
|
127
|
-
break;
|
|
128
|
-
default: filteredItems.push(createOptionalEmojiRegexItem(createEmojiRegexItemForNumbers(optionalMatches.numbers)));
|
|
129
|
-
}
|
|
130
|
-
return filteredItems.length === 1 ? filteredItems[0] : createSetEmojiRegexItem(filteredItems);
|
|
131
|
-
}
|
|
132
|
-
export { createEmojiRegexItemForNumbers, createRegexForNumbersSequence, optimiseNumbersSet };
|
|
@@ -1,165 +0,0 @@
|
|
|
1
|
-
import { cloneEmojiRegexItem, createOptionalEmojiRegexItem, createSequenceEmojiRegexItem, createSetEmojiRegexItem } from "./base.js";
|
|
2
|
-
import { optimiseNumbersSet } from "./numbers.js";
|
|
3
|
-
/**
|
|
4
|
-
* Typescript stuff
|
|
5
|
-
*/
|
|
6
|
-
function assertNever(v) {}
|
|
7
|
-
/**
|
|
8
|
-
* Find similar item sequences
|
|
9
|
-
*
|
|
10
|
-
* Returns sequence(s) with highest score. Only one of results should be
|
|
11
|
-
* applied to items. If there are multiple sequences, clone items list,
|
|
12
|
-
* attempt to apply each sequence, run further optimisations on each fork
|
|
13
|
-
* and see which one returns better result.
|
|
14
|
-
*
|
|
15
|
-
* Returns undefined if no common sequences found
|
|
16
|
-
*/
|
|
17
|
-
function findSimilarRegexItemSequences(items) {
|
|
18
|
-
const startRegex = Object.create(null);
|
|
19
|
-
const endRegex = Object.create(null);
|
|
20
|
-
const addMapItem = (target, index, regex, slice) => {
|
|
21
|
-
if (!target[regex]) {
|
|
22
|
-
target[regex] = {
|
|
23
|
-
score: 0,
|
|
24
|
-
slices: [{
|
|
25
|
-
index,
|
|
26
|
-
slice
|
|
27
|
-
}]
|
|
28
|
-
};
|
|
29
|
-
return;
|
|
30
|
-
}
|
|
31
|
-
const item = target[regex];
|
|
32
|
-
item.score += regex.length;
|
|
33
|
-
item.slices.push({
|
|
34
|
-
index,
|
|
35
|
-
slice
|
|
36
|
-
});
|
|
37
|
-
};
|
|
38
|
-
for (let index = 0; index < items.length; index++) {
|
|
39
|
-
const baseItem = items[index];
|
|
40
|
-
switch (baseItem.type) {
|
|
41
|
-
case "optional":
|
|
42
|
-
case "utf16":
|
|
43
|
-
addMapItem(startRegex, index, baseItem.regex, "full");
|
|
44
|
-
addMapItem(endRegex, index, baseItem.regex, "full");
|
|
45
|
-
break;
|
|
46
|
-
case "sequence": {
|
|
47
|
-
addMapItem(startRegex, index, baseItem.regex, "full");
|
|
48
|
-
addMapItem(endRegex, index, baseItem.regex, "full");
|
|
49
|
-
const sequence = baseItem.items;
|
|
50
|
-
for (let i = 1; i < sequence.length; i++) {
|
|
51
|
-
const startSequence = createSequenceEmojiRegexItem(sequence.slice(0, i));
|
|
52
|
-
addMapItem(startRegex, index, startSequence.regex, i);
|
|
53
|
-
const endSequence = createSequenceEmojiRegexItem(sequence.slice(i));
|
|
54
|
-
addMapItem(endRegex, index, endSequence.regex, i);
|
|
55
|
-
}
|
|
56
|
-
break;
|
|
57
|
-
}
|
|
58
|
-
case "set": throw new Error("Unexpected set within a set");
|
|
59
|
-
default: assertNever(baseItem);
|
|
60
|
-
}
|
|
61
|
-
}
|
|
62
|
-
let result;
|
|
63
|
-
const checkResults = (target, type) => {
|
|
64
|
-
for (const regex in target) {
|
|
65
|
-
const item = target[regex];
|
|
66
|
-
if (!item.score) continue;
|
|
67
|
-
if (!result || result.score < item.score) {
|
|
68
|
-
result = {
|
|
69
|
-
score: item.score,
|
|
70
|
-
sequences: [{
|
|
71
|
-
type,
|
|
72
|
-
slices: item.slices
|
|
73
|
-
}]
|
|
74
|
-
};
|
|
75
|
-
continue;
|
|
76
|
-
}
|
|
77
|
-
if (result.score === item.score) result.sequences.push({
|
|
78
|
-
type,
|
|
79
|
-
slices: item.slices
|
|
80
|
-
});
|
|
81
|
-
}
|
|
82
|
-
};
|
|
83
|
-
checkResults(startRegex, "start");
|
|
84
|
-
checkResults(endRegex, "end");
|
|
85
|
-
return result;
|
|
86
|
-
}
|
|
87
|
-
/**
|
|
88
|
-
* Merge similar sequences
|
|
89
|
-
*
|
|
90
|
-
* Accepts callback to run optimisation on created subset
|
|
91
|
-
*/
|
|
92
|
-
function mergeSimilarRegexItemSequences(items, merge, optimise) {
|
|
93
|
-
const { type, slices } = merge;
|
|
94
|
-
const indexes = /* @__PURE__ */ new Set();
|
|
95
|
-
let hasFullSequence = false;
|
|
96
|
-
let longestMatch = 0;
|
|
97
|
-
let longestMatchIndex = -1;
|
|
98
|
-
const differentSequences = [];
|
|
99
|
-
for (let i = 0; i < slices.length; i++) {
|
|
100
|
-
const { index, slice } = slices[i];
|
|
101
|
-
const item = items[index];
|
|
102
|
-
let length;
|
|
103
|
-
if (slice === "full") {
|
|
104
|
-
hasFullSequence = true;
|
|
105
|
-
if (item.type === "sequence") length = item.items.length;
|
|
106
|
-
else length = 1;
|
|
107
|
-
} else {
|
|
108
|
-
if (item.type !== "sequence") throw new Error(`Unexpected partial match for type "${item.type}"`);
|
|
109
|
-
length = type === "start" ? slice : item.items.length - slice;
|
|
110
|
-
differentSequences.push(type === "start" ? item.items.slice(slice) : item.items.slice(0, slice));
|
|
111
|
-
}
|
|
112
|
-
if (length > longestMatch) {
|
|
113
|
-
longestMatchIndex = index;
|
|
114
|
-
longestMatch = length;
|
|
115
|
-
}
|
|
116
|
-
indexes.add(index);
|
|
117
|
-
}
|
|
118
|
-
if (longestMatch < 1 || longestMatchIndex < 0) throw new Error("Cannot find common sequence");
|
|
119
|
-
const commonItem = items[longestMatchIndex];
|
|
120
|
-
let sequence;
|
|
121
|
-
if (commonItem.type !== "sequence") {
|
|
122
|
-
if (longestMatch !== 1) throw new Error("Something went wrong. Cannot have long match in non-sequence");
|
|
123
|
-
sequence = [commonItem];
|
|
124
|
-
} else sequence = type === "start" ? commonItem.items.slice(0, longestMatch) : commonItem.items.slice(commonItem.items.length - longestMatch);
|
|
125
|
-
const setItems = [];
|
|
126
|
-
for (let i = 0; i < differentSequences.length; i++) {
|
|
127
|
-
const list = differentSequences[i];
|
|
128
|
-
if (list.length === 1) setItems.push(list[0]);
|
|
129
|
-
else setItems.push(createSequenceEmojiRegexItem(list));
|
|
130
|
-
}
|
|
131
|
-
const set = createSetEmojiRegexItem(setItems);
|
|
132
|
-
let mergedChunk = set.sets.length === 1 ? set.sets[0] : optimise ? optimise(set) : set;
|
|
133
|
-
if (hasFullSequence) mergedChunk = createOptionalEmojiRegexItem(mergedChunk);
|
|
134
|
-
sequence[type === "start" ? "push" : "unshift"](mergedChunk);
|
|
135
|
-
return [createSequenceEmojiRegexItem(sequence), ...items.filter((item, index) => !indexes.has(index))];
|
|
136
|
-
}
|
|
137
|
-
/**
|
|
138
|
-
* Merge similar items
|
|
139
|
-
*/
|
|
140
|
-
function mergeSimilarItemsInSet(set) {
|
|
141
|
-
const updatedSet = optimiseNumbersSet(set);
|
|
142
|
-
if (updatedSet.type !== "set") return updatedSet;
|
|
143
|
-
set = updatedSet;
|
|
144
|
-
let merges;
|
|
145
|
-
while (merges = findSimilarRegexItemSequences(set.sets)) {
|
|
146
|
-
const sequences = merges.sequences;
|
|
147
|
-
if (sequences.length === 1) {
|
|
148
|
-
const merged = mergeSimilarRegexItemSequences(set.sets.map((item) => cloneEmojiRegexItem(item, true)), sequences[0], mergeSimilarItemsInSet);
|
|
149
|
-
if (merged.length === 1) return merged[0];
|
|
150
|
-
set = createSetEmojiRegexItem(merged);
|
|
151
|
-
continue;
|
|
152
|
-
}
|
|
153
|
-
let newItem;
|
|
154
|
-
for (let i = 0; i < sequences.length; i++) {
|
|
155
|
-
const merged = mergeSimilarRegexItemSequences(set.sets.map((item) => cloneEmojiRegexItem(item, true)), sequences[i], mergeSimilarItemsInSet);
|
|
156
|
-
const mergedItem = merged.length === 1 ? merged[0] : createSetEmojiRegexItem(merged);
|
|
157
|
-
if (!newItem || mergedItem.regex.length < newItem.regex.length) newItem = mergedItem;
|
|
158
|
-
}
|
|
159
|
-
if (!newItem) throw new Error("Empty sequences list");
|
|
160
|
-
if (newItem.type !== "set") return newItem;
|
|
161
|
-
set = newItem;
|
|
162
|
-
}
|
|
163
|
-
return set;
|
|
164
|
-
}
|
|
165
|
-
export { findSimilarRegexItemSequences, mergeSimilarItemsInSet, mergeSimilarRegexItemSequences };
|
|
@@ -1,79 +0,0 @@
|
|
|
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
|
-
* Create tree
|
|
9
|
-
*/
|
|
10
|
-
function createEmojisTree(sequences) {
|
|
11
|
-
const root = [];
|
|
12
|
-
for (let i = 0; i < sequences.length; i++) {
|
|
13
|
-
const split = splitEmojiSequences(convertEmojiSequenceToUTF32(sequences[i]));
|
|
14
|
-
let parent = root;
|
|
15
|
-
for (let j = 0; j < split.length; j++) {
|
|
16
|
-
const regex = createRegexForNumbersSequence(split[j]);
|
|
17
|
-
let item;
|
|
18
|
-
const match = parent.find((item) => item.regex.regex === regex.regex);
|
|
19
|
-
if (!match) {
|
|
20
|
-
item = { regex };
|
|
21
|
-
parent.push(item);
|
|
22
|
-
} else item = match;
|
|
23
|
-
if (j === split.length - 1) {
|
|
24
|
-
item.end = true;
|
|
25
|
-
break;
|
|
26
|
-
}
|
|
27
|
-
parent = item.children || (item.children = []);
|
|
28
|
-
}
|
|
29
|
-
}
|
|
30
|
-
return root;
|
|
31
|
-
}
|
|
32
|
-
/**
|
|
33
|
-
* Parse tree
|
|
34
|
-
*/
|
|
35
|
-
function parseEmojiTree(items) {
|
|
36
|
-
function mergeParsedChildren(items) {
|
|
37
|
-
const parsedItems = [];
|
|
38
|
-
const mapWithoutEnd = Object.create(null);
|
|
39
|
-
const mapWithEnd = Object.create(null);
|
|
40
|
-
for (let i = 0; i < items.length; i++) {
|
|
41
|
-
const item = items[i];
|
|
42
|
-
const children = item.children;
|
|
43
|
-
if (children) {
|
|
44
|
-
const fullItem = item;
|
|
45
|
-
const target = item.end ? mapWithEnd : mapWithoutEnd;
|
|
46
|
-
const regex = children.regex;
|
|
47
|
-
if (!target[regex]) target[regex] = [fullItem];
|
|
48
|
-
else target[regex].push(fullItem);
|
|
49
|
-
} else parsedItems.push(item.regex);
|
|
50
|
-
}
|
|
51
|
-
[mapWithEnd, mapWithoutEnd].forEach((source) => {
|
|
52
|
-
for (const regex in source) {
|
|
53
|
-
const items = source[regex];
|
|
54
|
-
const firstItem = items[0];
|
|
55
|
-
let childSequence = [createUTF16EmojiRegexItem([joinerEmoji]), firstItem.children];
|
|
56
|
-
if (firstItem.end) childSequence = [createOptionalEmojiRegexItem(createSequenceEmojiRegexItem(childSequence))];
|
|
57
|
-
let mergedRegex;
|
|
58
|
-
if (items.length === 1) mergedRegex = firstItem.regex;
|
|
59
|
-
else mergedRegex = mergeSimilarItemsInSet(createSetEmojiRegexItem(items.map((item) => item.regex)));
|
|
60
|
-
const sequence = createSequenceEmojiRegexItem([mergedRegex, ...childSequence]);
|
|
61
|
-
parsedItems.push(sequence);
|
|
62
|
-
}
|
|
63
|
-
});
|
|
64
|
-
if (parsedItems.length === 1) return parsedItems[0];
|
|
65
|
-
return mergeSimilarItemsInSet(createSetEmojiRegexItem(parsedItems));
|
|
66
|
-
}
|
|
67
|
-
function parseItemChildren(item) {
|
|
68
|
-
const result = {
|
|
69
|
-
regex: item.regex,
|
|
70
|
-
end: !!item.end
|
|
71
|
-
};
|
|
72
|
-
const children = item.children;
|
|
73
|
-
if (!children) return result;
|
|
74
|
-
result.children = mergeParsedChildren(children.map(parseItemChildren));
|
|
75
|
-
return result;
|
|
76
|
-
}
|
|
77
|
-
return mergeParsedChildren(items.map(parseItemChildren));
|
|
78
|
-
}
|
|
79
|
-
export { createEmojisTree, parseEmojiTree };
|