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.
- package/LICENSE +21 -0
- package/README.md +402 -0
- package/dist/cli.d.ts +2 -0
- package/dist/cli.js +30 -0
- package/dist/cli.js.map +1 -0
- package/dist/commands/analyze.d.ts +24 -0
- package/dist/commands/analyze.js +114 -0
- package/dist/commands/analyze.js.map +1 -0
- package/dist/commands/detect-errors.d.ts +17 -0
- package/dist/commands/detect-errors.js +119 -0
- package/dist/commands/detect-errors.js.map +1 -0
- package/dist/commands/install-analyze-skill.d.ts +27 -0
- package/dist/commands/install-analyze-skill.js +181 -0
- package/dist/commands/install-analyze-skill.js.map +1 -0
- package/dist/commands/web.d.ts +12 -0
- package/dist/commands/web.js +103 -0
- package/dist/commands/web.js.map +1 -0
- package/dist/core/analyzer.d.ts +89 -0
- package/dist/core/analyzer.js +179 -0
- package/dist/core/analyzer.js.map +1 -0
- package/dist/core/error-detector.d.ts +56 -0
- package/dist/core/error-detector.js +236 -0
- package/dist/core/error-detector.js.map +1 -0
- package/dist/core/filters.d.ts +136 -0
- package/dist/core/filters.js +95 -0
- package/dist/core/filters.js.map +1 -0
- package/dist/core/ignore-file.d.ts +52 -0
- package/dist/core/ignore-file.js +104 -0
- package/dist/core/ignore-file.js.map +1 -0
- package/dist/core/levels.d.ts +33 -0
- package/dist/core/levels.js +35 -0
- package/dist/core/levels.js.map +1 -0
- package/dist/core/parser.d.ts +57 -0
- package/dist/core/parser.js +201 -0
- package/dist/core/parser.js.map +1 -0
- package/dist/core/query-builder.d.ts +47 -0
- package/dist/core/query-builder.js +155 -0
- package/dist/core/query-builder.js.map +1 -0
- package/dist/core/skill-template.d.ts +34 -0
- package/dist/core/skill-template.js +259 -0
- package/dist/core/skill-template.js.map +1 -0
- package/package.json +68 -0
- package/web/.output/nitro.json +15 -0
- 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 +37 -0
- package/web/.output/public/_nuxt/BgApMHS1.js +1 -0
- package/web/.output/public/_nuxt/CGPWRqbc.js +1 -0
- package/web/.output/public/_nuxt/DlAUqK2U.js +1 -0
- package/web/.output/public/_nuxt/Sgtec1U0.js +1 -0
- package/web/.output/public/_nuxt/builds/latest.json +1 -0
- package/web/.output/public/_nuxt/builds/meta/c4723e49-0623-47af-ae79-9ab6428bdcc1.json +1 -0
- package/web/.output/public/_nuxt/entry.9mB-pyEY.css +1 -0
- package/web/.output/public/_nuxt/error-404.B_PvSG-P.css +1 -0
- package/web/.output/public/_nuxt/error-500.CghkKCEr.css +1 -0
- package/web/.output/public/_nuxt/index.BlvAG7F6.css +1 -0
- package/web/.output/public/favicon.ico +0 -0
- package/web/.output/server/chunks/_/error-500.mjs +19 -0
- package/web/.output/server/chunks/_/error-500.mjs.map +1 -0
- package/web/.output/server/chunks/_/icons.mjs +6153 -0
- package/web/.output/server/chunks/_/icons.mjs.map +1 -0
- package/web/.output/server/chunks/_/icons2.mjs +11494 -0
- package/web/.output/server/chunks/_/icons2.mjs.map +1 -0
- package/web/.output/server/chunks/build/_plugin-vue_export-helper-1tPrXgE0.mjs +10 -0
- package/web/.output/server/chunks/build/_plugin-vue_export-helper-1tPrXgE0.mjs.map +1 -0
- package/web/.output/server/chunks/build/client.precomputed.mjs +4 -0
- package/web/.output/server/chunks/build/client.precomputed.mjs.map +1 -0
- package/web/.output/server/chunks/build/error-404-DyaaQUIS.mjs +106 -0
- package/web/.output/server/chunks/build/error-404-DyaaQUIS.mjs.map +1 -0
- package/web/.output/server/chunks/build/error-404-styles.9cNA4arh.mjs +8 -0
- package/web/.output/server/chunks/build/error-404-styles.9cNA4arh.mjs.map +1 -0
- package/web/.output/server/chunks/build/error-500-CVSP-p02.mjs +89 -0
- package/web/.output/server/chunks/build/error-500-CVSP-p02.mjs.map +1 -0
- package/web/.output/server/chunks/build/error-500-styles.BX54ZlkH.mjs +8 -0
- package/web/.output/server/chunks/build/error-500-styles.BX54ZlkH.mjs.map +1 -0
- package/web/.output/server/chunks/build/index-88dXYOxO.mjs +19675 -0
- package/web/.output/server/chunks/build/index-88dXYOxO.mjs.map +1 -0
- package/web/.output/server/chunks/build/index-styles.V2iua2bE.mjs +8 -0
- package/web/.output/server/chunks/build/index-styles.V2iua2bE.mjs.map +1 -0
- package/web/.output/server/chunks/build/server.mjs +7910 -0
- package/web/.output/server/chunks/build/server.mjs.map +1 -0
- package/web/.output/server/chunks/build/styles.mjs +10 -0
- package/web/.output/server/chunks/build/styles.mjs.map +1 -0
- package/web/.output/server/chunks/nitro/nitro.mjs +6944 -0
- package/web/.output/server/chunks/nitro/nitro.mjs.map +1 -0
- package/web/.output/server/chunks/routes/api/fields.get.mjs +27 -0
- package/web/.output/server/chunks/routes/api/fields.get.mjs.map +1 -0
- package/web/.output/server/chunks/routes/api/findings.get.mjs +30 -0
- package/web/.output/server/chunks/routes/api/findings.get.mjs.map +1 -0
- package/web/.output/server/chunks/routes/api/log/contents.post.mjs +29 -0
- package/web/.output/server/chunks/routes/api/log/contents.post.mjs.map +1 -0
- package/web/.output/server/chunks/routes/api/log/path.post.mjs +30 -0
- package/web/.output/server/chunks/routes/api/log/path.post.mjs.map +1 -0
- package/web/.output/server/chunks/routes/api/repositories.get.mjs +27 -0
- package/web/.output/server/chunks/routes/api/repositories.get.mjs.map +1 -0
- package/web/.output/server/chunks/routes/api/rows.get.mjs +48 -0
- package/web/.output/server/chunks/routes/api/rows.get.mjs.map +1 -0
- package/web/.output/server/chunks/routes/renderer.mjs +451 -0
- package/web/.output/server/chunks/routes/renderer.mjs.map +1 -0
- package/web/.output/server/chunks/virtual/_virtual_spa-template.mjs +4 -0
- package/web/.output/server/chunks/virtual/_virtual_spa-template.mjs.map +1 -0
- package/web/.output/server/index.mjs +16 -0
- package/web/.output/server/index.mjs.map +1 -0
- package/web/.output/server/node_modules/.nitro/hookable@5.5.3/dist/index.mjs +290 -0
- package/web/.output/server/node_modules/.nitro/hookable@5.5.3/package.json +49 -0
- package/web/.output/server/node_modules/.nitro/hookable@6.1.1/dist/index.mjs +257 -0
- package/web/.output/server/node_modules/.nitro/hookable@6.1.1/package.json +53 -0
- package/web/.output/server/node_modules/@babel/parser/lib/index.js +14599 -0
- package/web/.output/server/node_modules/@babel/parser/package.json +50 -0
- package/web/.output/server/node_modules/@floating-ui/core/dist/floating-ui.core.mjs +1038 -0
- package/web/.output/server/node_modules/@floating-ui/core/package.json +63 -0
- package/web/.output/server/node_modules/@floating-ui/dom/dist/floating-ui.dom.mjs +789 -0
- package/web/.output/server/node_modules/@floating-ui/dom/package.json +72 -0
- package/web/.output/server/node_modules/@floating-ui/utils/dist/floating-ui.utils.dom.mjs +165 -0
- package/web/.output/server/node_modules/@floating-ui/utils/dist/floating-ui.utils.mjs +136 -0
- package/web/.output/server/node_modules/@floating-ui/utils/package.json +70 -0
- package/web/.output/server/node_modules/@floating-ui/vue/dist/floating-ui.vue.mjs +190 -0
- package/web/.output/server/node_modules/@floating-ui/vue/package.json +71 -0
- package/web/.output/server/node_modules/@iconify/utils/lib/colors/index.js +295 -0
- package/web/.output/server/node_modules/@iconify/utils/lib/colors/keywords.js +701 -0
- package/web/.output/server/node_modules/@iconify/utils/lib/css/common.js +75 -0
- package/web/.output/server/node_modules/@iconify/utils/lib/css/format.js +39 -0
- package/web/.output/server/node_modules/@iconify/utils/lib/css/icon.js +47 -0
- package/web/.output/server/node_modules/@iconify/utils/lib/css/icons.js +128 -0
- package/web/.output/server/node_modules/@iconify/utils/lib/customisations/bool.js +19 -0
- package/web/.output/server/node_modules/@iconify/utils/lib/customisations/defaults.js +13 -0
- package/web/.output/server/node_modules/@iconify/utils/lib/customisations/flip.js +17 -0
- package/web/.output/server/node_modules/@iconify/utils/lib/customisations/merge.js +16 -0
- package/web/.output/server/node_modules/@iconify/utils/lib/customisations/rotate.js +30 -0
- package/web/.output/server/node_modules/@iconify/utils/lib/emoji/cleanup.js +78 -0
- package/web/.output/server/node_modules/@iconify/utils/lib/emoji/convert.js +100 -0
- package/web/.output/server/node_modules/@iconify/utils/lib/emoji/data.js +28 -0
- package/web/.output/server/node_modules/@iconify/utils/lib/emoji/format.js +58 -0
- package/web/.output/server/node_modules/@iconify/utils/lib/emoji/parse.js +48 -0
- package/web/.output/server/node_modules/@iconify/utils/lib/emoji/regex/base.js +203 -0
- package/web/.output/server/node_modules/@iconify/utils/lib/emoji/regex/create.js +33 -0
- package/web/.output/server/node_modules/@iconify/utils/lib/emoji/regex/numbers.js +132 -0
- package/web/.output/server/node_modules/@iconify/utils/lib/emoji/regex/similar.js +165 -0
- package/web/.output/server/node_modules/@iconify/utils/lib/emoji/regex/tree.js +79 -0
- package/web/.output/server/node_modules/@iconify/utils/lib/emoji/replace/find.js +92 -0
- package/web/.output/server/node_modules/@iconify/utils/lib/emoji/replace/replace.js +26 -0
- package/web/.output/server/node_modules/@iconify/utils/lib/emoji/test/components.js +76 -0
- package/web/.output/server/node_modules/@iconify/utils/lib/emoji/test/missing.js +66 -0
- package/web/.output/server/node_modules/@iconify/utils/lib/emoji/test/name.js +45 -0
- package/web/.output/server/node_modules/@iconify/utils/lib/emoji/test/parse.js +103 -0
- package/web/.output/server/node_modules/@iconify/utils/lib/emoji/test/similar.js +36 -0
- package/web/.output/server/node_modules/@iconify/utils/lib/emoji/test/tree.js +92 -0
- package/web/.output/server/node_modules/@iconify/utils/lib/emoji/test/variations.js +62 -0
- package/web/.output/server/node_modules/@iconify/utils/lib/icon/defaults.js +25 -0
- package/web/.output/server/node_modules/@iconify/utils/lib/icon/merge.js +16 -0
- package/web/.output/server/node_modules/@iconify/utils/lib/icon/name.js +57 -0
- package/web/.output/server/node_modules/@iconify/utils/lib/icon/square.js +33 -0
- package/web/.output/server/node_modules/@iconify/utils/lib/icon/transformations.js +12 -0
- package/web/.output/server/node_modules/@iconify/utils/lib/icon-set/convert-info.js +125 -0
- package/web/.output/server/node_modules/@iconify/utils/lib/icon-set/expand.js +19 -0
- package/web/.output/server/node_modules/@iconify/utils/lib/icon-set/get-icon.js +25 -0
- package/web/.output/server/node_modules/@iconify/utils/lib/icon-set/get-icons.js +36 -0
- package/web/.output/server/node_modules/@iconify/utils/lib/icon-set/minify.js +91 -0
- package/web/.output/server/node_modules/@iconify/utils/lib/icon-set/parse.js +46 -0
- package/web/.output/server/node_modules/@iconify/utils/lib/icon-set/tree.js +23 -0
- package/web/.output/server/node_modules/@iconify/utils/lib/icon-set/validate-basic.js +42 -0
- package/web/.output/server/node_modules/@iconify/utils/lib/icon-set/validate.js +123 -0
- package/web/.output/server/node_modules/@iconify/utils/lib/index.js +52 -0
- package/web/.output/server/node_modules/@iconify/utils/lib/loader/custom.js +30 -0
- package/web/.output/server/node_modules/@iconify/utils/lib/loader/loader.js +26 -0
- package/web/.output/server/node_modules/@iconify/utils/lib/loader/modern.js +27 -0
- package/web/.output/server/node_modules/@iconify/utils/lib/loader/utils.js +105 -0
- package/web/.output/server/node_modules/@iconify/utils/lib/misc/objects.js +26 -0
- package/web/.output/server/node_modules/@iconify/utils/lib/misc/strings.js +26 -0
- package/web/.output/server/node_modules/@iconify/utils/lib/misc/title.js +9 -0
- package/web/.output/server/node_modules/@iconify/utils/lib/svg/build.js +113 -0
- package/web/.output/server/node_modules/@iconify/utils/lib/svg/defs.js +31 -0
- package/web/.output/server/node_modules/@iconify/utils/lib/svg/encode-svg-for-css.js +13 -0
- package/web/.output/server/node_modules/@iconify/utils/lib/svg/html.js +9 -0
- package/web/.output/server/node_modules/@iconify/utils/lib/svg/id.js +41 -0
- package/web/.output/server/node_modules/@iconify/utils/lib/svg/inner-html.js +22 -0
- package/web/.output/server/node_modules/@iconify/utils/lib/svg/parse.js +67 -0
- package/web/.output/server/node_modules/@iconify/utils/lib/svg/pretty.js +54 -0
- package/web/.output/server/node_modules/@iconify/utils/lib/svg/size.js +27 -0
- package/web/.output/server/node_modules/@iconify/utils/lib/svg/trim.js +7 -0
- package/web/.output/server/node_modules/@iconify/utils/lib/svg/url.js +22 -0
- package/web/.output/server/node_modules/@iconify/utils/lib/svg/viewbox.js +8 -0
- package/web/.output/server/node_modules/@iconify/utils/package.json +119 -0
- package/web/.output/server/node_modules/@iconify/vue/dist/iconify.mjs +1896 -0
- package/web/.output/server/node_modules/@iconify/vue/package.json +62 -0
- package/web/.output/server/node_modules/@tanstack/virtual-core/dist/esm/index.js +1268 -0
- package/web/.output/server/node_modules/@tanstack/virtual-core/dist/esm/lazy-measurements.js +34 -0
- package/web/.output/server/node_modules/@tanstack/virtual-core/dist/esm/utils.js +74 -0
- package/web/.output/server/node_modules/@tanstack/virtual-core/package.json +56 -0
- package/web/.output/server/node_modules/@tanstack/vue-virtual/dist/esm/index.js +66 -0
- package/web/.output/server/node_modules/@tanstack/vue-virtual/package.json +68 -0
- package/web/.output/server/node_modules/@vue/compiler-core/dist/compiler-core.cjs.prod.js +6759 -0
- package/web/.output/server/node_modules/@vue/compiler-core/package.json +58 -0
- package/web/.output/server/node_modules/@vue/compiler-dom/dist/compiler-dom.cjs.prod.js +689 -0
- package/web/.output/server/node_modules/@vue/compiler-dom/package.json +57 -0
- package/web/.output/server/node_modules/@vue/compiler-ssr/dist/compiler-ssr.cjs.js +1413 -0
- package/web/.output/server/node_modules/@vue/compiler-ssr/package.json +34 -0
- package/web/.output/server/node_modules/@vue/devtools-api/dist/index.js +2 -0
- package/web/.output/server/node_modules/@vue/devtools-api/package.json +34 -0
- package/web/.output/server/node_modules/@vue/devtools-kit/dist/index.js +5670 -0
- package/web/.output/server/node_modules/@vue/devtools-kit/node_modules/hookable/dist/index.mjs +290 -0
- package/web/.output/server/node_modules/@vue/devtools-kit/node_modules/hookable/package.json +49 -0
- package/web/.output/server/node_modules/@vue/devtools-kit/package.json +44 -0
- package/web/.output/server/node_modules/@vue/devtools-shared/dist/index.js +239 -0
- package/web/.output/server/node_modules/@vue/devtools-shared/package.json +33 -0
- package/web/.output/server/node_modules/@vue/reactivity/dist/reactivity.cjs.prod.js +1899 -0
- package/web/.output/server/node_modules/@vue/reactivity/package.json +55 -0
- package/web/.output/server/node_modules/@vue/runtime-core/dist/runtime-core.cjs.prod.js +6940 -0
- package/web/.output/server/node_modules/@vue/runtime-core/package.json +52 -0
- package/web/.output/server/node_modules/@vue/runtime-dom/dist/runtime-dom.cjs.prod.js +1822 -0
- package/web/.output/server/node_modules/@vue/runtime-dom/package.json +60 -0
- package/web/.output/server/node_modules/@vue/server-renderer/dist/server-renderer.cjs.prod.js +896 -0
- package/web/.output/server/node_modules/@vue/server-renderer/package.json +55 -0
- package/web/.output/server/node_modules/@vue/shared/dist/shared.cjs.prod.js +604 -0
- package/web/.output/server/node_modules/@vue/shared/package.json +47 -0
- package/web/.output/server/node_modules/@vueuse/core/dist/index.js +8464 -0
- package/web/.output/server/node_modules/@vueuse/core/package.json +49 -0
- package/web/.output/server/node_modules/@vueuse/shared/dist/index.js +2013 -0
- package/web/.output/server/node_modules/@vueuse/shared/package.json +42 -0
- package/web/.output/server/node_modules/aria-hidden/dist/es5/index.js +174 -0
- package/web/.output/server/node_modules/aria-hidden/package.json +71 -0
- package/web/.output/server/node_modules/birpc/dist/index.mjs +291 -0
- package/web/.output/server/node_modules/birpc/package.json +57 -0
- package/web/.output/server/node_modules/consola/dist/chunks/prompt.mjs +280 -0
- package/web/.output/server/node_modules/consola/dist/core.mjs +512 -0
- package/web/.output/server/node_modules/consola/dist/index.mjs +651 -0
- package/web/.output/server/node_modules/consola/dist/shared/consola.DRwqZj3T.mjs +72 -0
- package/web/.output/server/node_modules/consola/dist/shared/consola.DXBYu-KD.mjs +288 -0
- package/web/.output/server/node_modules/consola/package.json +136 -0
- package/web/.output/server/node_modules/devalue/index.js +4 -0
- package/web/.output/server/node_modules/devalue/package.json +40 -0
- package/web/.output/server/node_modules/devalue/src/base64.js +60 -0
- package/web/.output/server/node_modules/devalue/src/constants.js +12 -0
- package/web/.output/server/node_modules/devalue/src/parse.js +283 -0
- package/web/.output/server/node_modules/devalue/src/stringify.js +401 -0
- package/web/.output/server/node_modules/devalue/src/uneval.js +552 -0
- package/web/.output/server/node_modules/devalue/src/utils.js +160 -0
- package/web/.output/server/node_modules/entities/dist/commonjs/decode-codepoint.js +77 -0
- package/web/.output/server/node_modules/entities/dist/commonjs/decode.js +568 -0
- package/web/.output/server/node_modules/entities/dist/commonjs/generated/decode-data-html.js +7 -0
- package/web/.output/server/node_modules/entities/dist/commonjs/generated/decode-data-xml.js +7 -0
- package/web/.output/server/node_modules/entities/dist/commonjs/internal/bin-trie-flags.js +21 -0
- package/web/.output/server/node_modules/entities/dist/commonjs/internal/decode-shared.js +31 -0
- package/web/.output/server/node_modules/entities/dist/commonjs/package.json +3 -0
- package/web/.output/server/node_modules/entities/package.json +120 -0
- package/web/.output/server/node_modules/estree-walker/dist/umd/estree-walker.js +344 -0
- package/web/.output/server/node_modules/estree-walker/package.json +37 -0
- package/web/.output/server/node_modules/hookable/dist/index.mjs +257 -0
- package/web/.output/server/node_modules/hookable/package.json +53 -0
- package/web/.output/server/node_modules/nostics/dist/index.mjs +179 -0
- package/web/.output/server/node_modules/nostics/package.json +124 -0
- package/web/.output/server/node_modules/perfect-debounce/dist/index.mjs +89 -0
- package/web/.output/server/node_modules/perfect-debounce/package.json +41 -0
- package/web/.output/server/node_modules/rou3/dist/index.mjs +501 -0
- package/web/.output/server/node_modules/rou3/package.json +48 -0
- package/web/.output/server/node_modules/source-map-js/lib/array-set.js +121 -0
- package/web/.output/server/node_modules/source-map-js/lib/base64-vlq.js +140 -0
- package/web/.output/server/node_modules/source-map-js/lib/base64.js +67 -0
- package/web/.output/server/node_modules/source-map-js/lib/binary-search.js +111 -0
- package/web/.output/server/node_modules/source-map-js/lib/mapping-list.js +79 -0
- package/web/.output/server/node_modules/source-map-js/lib/quick-sort.js +132 -0
- package/web/.output/server/node_modules/source-map-js/lib/source-map-consumer.js +1188 -0
- package/web/.output/server/node_modules/source-map-js/lib/source-map-generator.js +444 -0
- package/web/.output/server/node_modules/source-map-js/lib/source-node.js +413 -0
- package/web/.output/server/node_modules/source-map-js/lib/util.js +594 -0
- package/web/.output/server/node_modules/source-map-js/package.json +71 -0
- package/web/.output/server/node_modules/source-map-js/source-map.js +8 -0
- package/web/.output/server/node_modules/srvx/dist/_chunks/_body-limit.mjs +39 -0
- package/web/.output/server/node_modules/srvx/dist/_chunks/_plugins.mjs +56 -0
- package/web/.output/server/node_modules/srvx/dist/_chunks/_trust-proxy.mjs +58 -0
- package/web/.output/server/node_modules/srvx/dist/_chunks/_url.mjs +134 -0
- package/web/.output/server/node_modules/srvx/dist/_chunks/_utils.mjs +15 -0
- package/web/.output/server/node_modules/srvx/dist/_chunks/_utils2.mjs +75 -0
- package/web/.output/server/node_modules/srvx/dist/adapters/node.mjs +976 -0
- package/web/.output/server/node_modules/srvx/package.json +102 -0
- package/web/.output/server/node_modules/tailwind-merge/dist/bundle-mjs.mjs +3365 -0
- package/web/.output/server/node_modules/tailwind-merge/package.json +93 -0
- package/web/.output/server/node_modules/tailwind-variants/dist/chunk-LQJYWU4O.js +112 -0
- package/web/.output/server/node_modules/tailwind-variants/dist/chunk-RZF76H2U.js +269 -0
- package/web/.output/server/node_modules/tailwind-variants/dist/index.js +38 -0
- package/web/.output/server/node_modules/tailwind-variants/package.json +122 -0
- package/web/.output/server/node_modules/tailwindcss/dist/chunk-X4GG3EDV.mjs +1 -0
- package/web/.output/server/node_modules/tailwindcss/dist/colors.mjs +1 -0
- package/web/.output/server/node_modules/tailwindcss/package.json +89 -0
- package/web/.output/server/node_modules/ufo/dist/index.mjs +645 -0
- package/web/.output/server/node_modules/ufo/package.json +48 -0
- package/web/.output/server/node_modules/unhead/dist/index.mjs +9 -0
- package/web/.output/server/node_modules/unhead/dist/parser.mjs +508 -0
- package/web/.output/server/node_modules/unhead/dist/plugins.mjs +101 -0
- package/web/.output/server/node_modules/unhead/dist/scripts.mjs +30 -0
- package/web/.output/server/node_modules/unhead/dist/server.mjs +180 -0
- package/web/.output/server/node_modules/unhead/dist/shared/unhead.B3VbJo7Y.mjs +207 -0
- package/web/.output/server/node_modules/unhead/dist/shared/unhead.BYvz9V1x.mjs +43 -0
- package/web/.output/server/node_modules/unhead/dist/shared/unhead.BnoAbrHA.mjs +269 -0
- package/web/.output/server/node_modules/unhead/dist/shared/unhead.CaI5ZD4O.mjs +182 -0
- package/web/.output/server/node_modules/unhead/dist/shared/unhead.CbpEuj3y.mjs +71 -0
- package/web/.output/server/node_modules/unhead/dist/shared/unhead.D4vSFytZ.mjs +236 -0
- package/web/.output/server/node_modules/unhead/dist/shared/unhead.DQc16pHI.mjs +196 -0
- package/web/.output/server/node_modules/unhead/dist/shared/unhead.Dh1cQCTe.mjs +44 -0
- package/web/.output/server/node_modules/unhead/dist/shared/unhead.TxTMM7cM.mjs +166 -0
- package/web/.output/server/node_modules/unhead/dist/shared/unhead.yem5I2v_.mjs +38 -0
- package/web/.output/server/node_modules/unhead/dist/utils.mjs +5 -0
- package/web/.output/server/node_modules/unhead/node_modules/hookable/dist/index.mjs +257 -0
- package/web/.output/server/node_modules/unhead/node_modules/hookable/package.json +53 -0
- package/web/.output/server/node_modules/unhead/package.json +105 -0
- package/web/.output/server/node_modules/vue/dist/vue.cjs.js +80 -0
- package/web/.output/server/node_modules/vue/dist/vue.cjs.prod.js +66 -0
- package/web/.output/server/node_modules/vue/index.js +7 -0
- package/web/.output/server/node_modules/vue/index.mjs +1 -0
- package/web/.output/server/node_modules/vue/package.json +112 -0
- package/web/.output/server/node_modules/vue/server-renderer/index.mjs +1 -0
- package/web/.output/server/node_modules/vue-bundle-renderer/dist/runtime.mjs +249 -0
- package/web/.output/server/node_modules/vue-bundle-renderer/package.json +57 -0
- package/web/.output/server/node_modules/vue-demi/lib/index.mjs +34 -0
- package/web/.output/server/node_modules/vue-demi/package.json +47 -0
- package/web/.output/server/node_modules/vue-router/dist/devtools-Bpr7ZAVB.js +1056 -0
- package/web/.output/server/node_modules/vue-router/dist/useApi-CROJJdhE.js +436 -0
- package/web/.output/server/node_modules/vue-router/dist/vue-router.js +1543 -0
- package/web/.output/server/node_modules/vue-router/package.json +214 -0
- package/web/.output/server/node_modules/vue-router/vue-router.node.mjs +2 -0
- package/web/.output/server/package.json +51 -0
|
@@ -0,0 +1,52 @@
|
|
|
1
|
+
import { defaultExtendedIconProps, defaultIconDimensions, defaultIconProps, defaultIconTransformations } from "./icon/defaults.js";
|
|
2
|
+
import { defaultIconCustomisations, defaultIconSizeCustomisations } from "./customisations/defaults.js";
|
|
3
|
+
import { mergeCustomisations } from "./customisations/merge.js";
|
|
4
|
+
import { toBoolean } from "./customisations/bool.js";
|
|
5
|
+
import { flipFromString } from "./customisations/flip.js";
|
|
6
|
+
import { rotateFromString } from "./customisations/rotate.js";
|
|
7
|
+
import { matchIconName, stringToIcon, validateIconName } from "./icon/name.js";
|
|
8
|
+
import { mergeIconTransformations } from "./icon/transformations.js";
|
|
9
|
+
import { mergeIconData } from "./icon/merge.js";
|
|
10
|
+
import { makeIconSquare } from "./icon/square.js";
|
|
11
|
+
import { getIconsTree } from "./icon-set/tree.js";
|
|
12
|
+
import { getIconData } from "./icon-set/get-icon.js";
|
|
13
|
+
import { parseIconSet, parseIconSetAsync } from "./icon-set/parse.js";
|
|
14
|
+
import { validateIconSet } from "./icon-set/validate.js";
|
|
15
|
+
import { quicklyValidateIconSet } from "./icon-set/validate-basic.js";
|
|
16
|
+
import { expandIconSet } from "./icon-set/expand.js";
|
|
17
|
+
import { minifyIconSet } from "./icon-set/minify.js";
|
|
18
|
+
import { getIcons } from "./icon-set/get-icons.js";
|
|
19
|
+
import { convertIconSetInfo } from "./icon-set/convert-info.js";
|
|
20
|
+
import { calculateSize } from "./svg/size.js";
|
|
21
|
+
import { mergeDefsAndContent, splitSVGDefs, wrapSVGContent } from "./svg/defs.js";
|
|
22
|
+
import { iconToSVG } from "./svg/build.js";
|
|
23
|
+
import { clearIDCache, replaceIDs } from "./svg/id.js";
|
|
24
|
+
import { svgToData, svgToURL } from "./svg/url.js";
|
|
25
|
+
import { encodeSvgForCss } from "./svg/encode-svg-for-css.js";
|
|
26
|
+
import { trimSVG } from "./svg/trim.js";
|
|
27
|
+
import { prettifySVG } from "./svg/pretty.js";
|
|
28
|
+
import { iconToHTML } from "./svg/html.js";
|
|
29
|
+
import { cleanUpInnerHTML } from "./svg/inner-html.js";
|
|
30
|
+
import { getSVGViewBox } from "./svg/viewbox.js";
|
|
31
|
+
import { buildParsedSVG, convertParsedSVG, parseSVGContent } from "./svg/parse.js";
|
|
32
|
+
import { colorKeywords } from "./colors/keywords.js";
|
|
33
|
+
import { colorToString, compareColors, stringToColor } from "./colors/index.js";
|
|
34
|
+
import { getIconCSS, getIconContentCSS } from "./css/icon.js";
|
|
35
|
+
import { getIconsCSS, getIconsContentCSS } from "./css/icons.js";
|
|
36
|
+
import { mergeIconProps } from "./loader/utils.js";
|
|
37
|
+
import { getCustomIcon } from "./loader/custom.js";
|
|
38
|
+
import { searchForIcon } from "./loader/modern.js";
|
|
39
|
+
import { loadIcon } from "./loader/loader.js";
|
|
40
|
+
import { convertEmojiSequenceToUTF16, convertEmojiSequenceToUTF32, getEmojiCodePoint, getEmojiUnicode, isUTF32SplitNumber, mergeUTF32Numbers, splitUTF32Number } from "./emoji/convert.js";
|
|
41
|
+
import { getEmojiSequenceFromString, getUnqualifiedEmojiSequence } from "./emoji/cleanup.js";
|
|
42
|
+
import { getEmojiSequenceKeyword, getEmojiSequenceString, getEmojiUnicodeString } from "./emoji/format.js";
|
|
43
|
+
import { parseEmojiTestFile } from "./emoji/test/parse.js";
|
|
44
|
+
import { getQualifiedEmojiVariations } from "./emoji/test/variations.js";
|
|
45
|
+
import { findMissingEmojis } from "./emoji/test/missing.js";
|
|
46
|
+
import { createOptimisedRegex, createOptimisedRegexForEmojiSequences } from "./emoji/regex/create.js";
|
|
47
|
+
import { prepareEmojiForIconSet, prepareEmojiForIconsList } from "./emoji/parse.js";
|
|
48
|
+
import { findAndReplaceEmojisInText } from "./emoji/replace/replace.js";
|
|
49
|
+
import { camelToKebab, camelize, pascalize, snakelize } from "./misc/strings.js";
|
|
50
|
+
import { commonObjectProps, compareObjects, unmergeObjects } from "./misc/objects.js";
|
|
51
|
+
import { sanitiseTitleAttribute } from "./misc/title.js";
|
|
52
|
+
export { buildParsedSVG, calculateSize, camelToKebab, camelize, cleanUpInnerHTML, clearIDCache, colorKeywords, colorToString, commonObjectProps, compareColors, compareObjects, convertEmojiSequenceToUTF16, convertEmojiSequenceToUTF32, convertIconSetInfo, convertParsedSVG, createOptimisedRegex, createOptimisedRegexForEmojiSequences, defaultExtendedIconProps, defaultIconCustomisations, defaultIconDimensions, defaultIconProps, defaultIconSizeCustomisations, defaultIconTransformations, encodeSvgForCss, expandIconSet, findAndReplaceEmojisInText, findMissingEmojis, flipFromString, getCustomIcon, getEmojiCodePoint, getEmojiSequenceFromString, getEmojiSequenceKeyword, getEmojiSequenceString, getEmojiUnicode, getEmojiUnicodeString, getIconCSS, getIconContentCSS, getIconData, getIcons, getIconsCSS, getIconsContentCSS, getIconsTree, getQualifiedEmojiVariations, getSVGViewBox, getUnqualifiedEmojiSequence, iconToHTML, iconToSVG, isUTF32SplitNumber, loadIcon, makeIconSquare, matchIconName, mergeCustomisations, mergeDefsAndContent, mergeIconData, mergeIconProps, mergeIconTransformations, mergeUTF32Numbers, minifyIconSet, parseEmojiTestFile, parseIconSet, parseIconSetAsync, parseSVGContent, pascalize, prepareEmojiForIconSet, prepareEmojiForIconsList, prettifySVG, quicklyValidateIconSet, replaceIDs, rotateFromString, sanitiseTitleAttribute, searchForIcon, snakelize, splitSVGDefs, splitUTF32Number, stringToColor, stringToIcon, svgToData, svgToURL, toBoolean, trimSVG, unmergeObjects, validateIconName, validateIconSet, wrapSVGContent };
|
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
import { trimSVG } from "../svg/trim.js";
|
|
2
|
+
import { mergeIconProps } from "./utils.js";
|
|
3
|
+
/**
|
|
4
|
+
* Get custom icon from inline collection or using loader
|
|
5
|
+
*/
|
|
6
|
+
async function getCustomIcon(custom, collection, icon, options) {
|
|
7
|
+
let result;
|
|
8
|
+
try {
|
|
9
|
+
if (typeof custom === "function") result = await custom(icon);
|
|
10
|
+
else {
|
|
11
|
+
const inline = custom[icon];
|
|
12
|
+
result = typeof inline === "function" ? await inline() : inline;
|
|
13
|
+
}
|
|
14
|
+
} catch (err) {
|
|
15
|
+
console.warn(`Failed to load custom icon "${icon}" in "${collection}":`, err);
|
|
16
|
+
return;
|
|
17
|
+
}
|
|
18
|
+
if (result) {
|
|
19
|
+
const cleanupIdx = result.indexOf("<svg");
|
|
20
|
+
if (cleanupIdx > 0) result = result.slice(cleanupIdx);
|
|
21
|
+
const { transform } = options?.customizations ?? {};
|
|
22
|
+
result = typeof transform === "function" ? await transform(result, collection, icon) : result;
|
|
23
|
+
if (!result.startsWith("<svg")) {
|
|
24
|
+
console.warn(`Custom icon "${icon}" in "${collection}" is not a valid SVG`);
|
|
25
|
+
return result;
|
|
26
|
+
}
|
|
27
|
+
return await mergeIconProps(options?.customizations?.trimCustomSvg === true ? trimSVG(result) : result, collection, icon, options, void 0);
|
|
28
|
+
}
|
|
29
|
+
}
|
|
30
|
+
export { getCustomIcon };
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
import { getCustomIcon } from "./custom.js";
|
|
2
|
+
import { searchForIcon } from "./modern.js";
|
|
3
|
+
const loadIcon = async (collection, icon, options) => {
|
|
4
|
+
const custom = options?.customCollections?.[collection];
|
|
5
|
+
if (custom) if (typeof custom === "function") {
|
|
6
|
+
let result;
|
|
7
|
+
try {
|
|
8
|
+
result = await custom(icon);
|
|
9
|
+
} catch (err) {
|
|
10
|
+
console.warn(`Failed to load custom icon "${icon}" in "${collection}":`, err);
|
|
11
|
+
return;
|
|
12
|
+
}
|
|
13
|
+
if (result) {
|
|
14
|
+
if (typeof result === "string") return await getCustomIcon(() => result, collection, icon, options);
|
|
15
|
+
if ("icons" in result) {
|
|
16
|
+
const ids = [
|
|
17
|
+
icon,
|
|
18
|
+
icon.replace(/([a-z])([A-Z])/g, "$1-$2").toLowerCase(),
|
|
19
|
+
icon.replace(/([a-z])(\d+)/g, "$1-$2")
|
|
20
|
+
];
|
|
21
|
+
return await searchForIcon(result, collection, ids, options);
|
|
22
|
+
}
|
|
23
|
+
}
|
|
24
|
+
} else return await getCustomIcon(custom, collection, icon, options);
|
|
25
|
+
};
|
|
26
|
+
export { loadIcon };
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
import { defaultIconCustomisations } from "../customisations/defaults.js";
|
|
2
|
+
import { getIconData } from "../icon-set/get-icon.js";
|
|
3
|
+
import { iconToSVG } from "../svg/build.js";
|
|
4
|
+
import { loaderDefaultHeightProp, loaderDefaultWidthProp, mergeIconProps } from "./utils.js";
|
|
5
|
+
async function searchForIcon(iconSet, collection, ids, options) {
|
|
6
|
+
let iconData;
|
|
7
|
+
const { customize } = options?.customizations ?? {};
|
|
8
|
+
for (const id of ids) {
|
|
9
|
+
iconData = getIconData(iconSet, id);
|
|
10
|
+
if (iconData) {
|
|
11
|
+
let defaultCustomizations = { ...defaultIconCustomisations };
|
|
12
|
+
if (typeof customize === "function") {
|
|
13
|
+
iconData = Object.assign({}, iconData);
|
|
14
|
+
defaultCustomizations = customize(defaultCustomizations, iconData, `${collection}:${id}`) ?? defaultCustomizations;
|
|
15
|
+
}
|
|
16
|
+
const { attributes: { width, height, ...restAttributes }, body } = iconToSVG(iconData, defaultCustomizations);
|
|
17
|
+
return await mergeIconProps(`<svg >${body}</svg>`, collection, id, options, () => {
|
|
18
|
+
return {
|
|
19
|
+
...restAttributes,
|
|
20
|
+
...width ? { [loaderDefaultWidthProp]: width } : {},
|
|
21
|
+
...height ? { [loaderDefaultHeightProp]: height } : {}
|
|
22
|
+
};
|
|
23
|
+
});
|
|
24
|
+
}
|
|
25
|
+
}
|
|
26
|
+
}
|
|
27
|
+
export { searchForIcon };
|
|
@@ -0,0 +1,105 @@
|
|
|
1
|
+
import { calculateSize } from "../svg/size.js";
|
|
2
|
+
import { isUnsetKeyword } from "../svg/build.js";
|
|
3
|
+
const svgWidthRegex = /\swidth\s*=\s*["']([^"']+)["']/;
|
|
4
|
+
const svgHeightRegex = /\sheight\s*=\s*["']([^"']+)["']/;
|
|
5
|
+
const svgViewBoxRegex = /\sviewBox\s*=\s*["']([^"']+)["']/;
|
|
6
|
+
const svgTagRegex = /<svg\s+/;
|
|
7
|
+
const loaderDefaultWidthProp = "__iconify_loader_width";
|
|
8
|
+
const loaderDefaultHeightProp = "__iconify_loader_height";
|
|
9
|
+
function stringifySize(value) {
|
|
10
|
+
return value === void 0 ? void 0 : value.toString();
|
|
11
|
+
}
|
|
12
|
+
function getConfiguredSize(source, scale) {
|
|
13
|
+
if (typeof scale === "number") return scale > 0 ? stringifySize(calculateSize(source ?? "1em", scale)) : void 0;
|
|
14
|
+
return source;
|
|
15
|
+
}
|
|
16
|
+
function getSvgAspectRatio(svgNode, props) {
|
|
17
|
+
const viewBox = props.viewBox ?? svgViewBoxRegex.exec(svgNode)?.[1];
|
|
18
|
+
if (!viewBox) return;
|
|
19
|
+
const values = viewBox.trim().split(/[\s,]+/).map((value) => parseFloat(value));
|
|
20
|
+
if (values.length !== 4 || values.some((value) => !Number.isFinite(value))) return;
|
|
21
|
+
const width = values[2];
|
|
22
|
+
const height = values[3];
|
|
23
|
+
if (width <= 0 || height <= 0) return;
|
|
24
|
+
return width / height;
|
|
25
|
+
}
|
|
26
|
+
function configureSvgSize(svg, props, scale) {
|
|
27
|
+
const svgNode = svg.slice(0, svg.indexOf(">"));
|
|
28
|
+
const widthOnSvg = svgWidthRegex.test(svgNode);
|
|
29
|
+
const heightOnSvg = svgHeightRegex.test(svgNode);
|
|
30
|
+
const defaultWidth = props["__iconify_loader_width"] ?? svgWidthRegex.exec(svgNode)?.[1];
|
|
31
|
+
const defaultHeight = props["__iconify_loader_height"] ?? svgHeightRegex.exec(svgNode)?.[1];
|
|
32
|
+
const aspectRatio = getSvgAspectRatio(svgNode, props);
|
|
33
|
+
delete props[loaderDefaultWidthProp];
|
|
34
|
+
delete props[loaderDefaultHeightProp];
|
|
35
|
+
const customWidth = props.width;
|
|
36
|
+
const customHeight = props.height;
|
|
37
|
+
const hasCustomWidth = !!customWidth || isUnsetKeyword(customWidth);
|
|
38
|
+
const hasCustomHeight = !!customHeight || isUnsetKeyword(customHeight);
|
|
39
|
+
if (hasCustomWidth || hasCustomHeight) {
|
|
40
|
+
if (!hasCustomWidth) if (isUnsetKeyword(customHeight)) {
|
|
41
|
+
delete props.width;
|
|
42
|
+
delete props.height;
|
|
43
|
+
} else if (aspectRatio) {
|
|
44
|
+
props.width = stringifySize(calculateSize(customHeight, aspectRatio));
|
|
45
|
+
props.height = customHeight;
|
|
46
|
+
} else delete props.width;
|
|
47
|
+
else if (isUnsetKeyword(customWidth)) {
|
|
48
|
+
delete props.width;
|
|
49
|
+
if (!hasCustomHeight || isUnsetKeyword(customHeight)) delete props.height;
|
|
50
|
+
}
|
|
51
|
+
if (!hasCustomHeight) if (isUnsetKeyword(customWidth)) delete props.height;
|
|
52
|
+
else if (aspectRatio) {
|
|
53
|
+
props.height = stringifySize(calculateSize(customWidth, 1 / aspectRatio));
|
|
54
|
+
props.width = customWidth;
|
|
55
|
+
} else delete props.height;
|
|
56
|
+
else if (isUnsetKeyword(customHeight)) delete props.height;
|
|
57
|
+
} else {
|
|
58
|
+
const width = getConfiguredSize(defaultWidth, scale);
|
|
59
|
+
const height = getConfiguredSize(defaultHeight, scale);
|
|
60
|
+
if (width) props.width = width;
|
|
61
|
+
if (height) props.height = height;
|
|
62
|
+
}
|
|
63
|
+
return [widthOnSvg, heightOnSvg];
|
|
64
|
+
}
|
|
65
|
+
async function mergeIconProps(svg, collection, icon, options, propsProvider, afterCustomizations) {
|
|
66
|
+
const { scale, addXmlNs = false } = options ?? {};
|
|
67
|
+
const { additionalProps = {}, iconCustomizer } = options?.customizations ?? {};
|
|
68
|
+
const props = await propsProvider?.() ?? {};
|
|
69
|
+
await iconCustomizer?.(collection, icon, props);
|
|
70
|
+
Object.keys(additionalProps).forEach((p) => {
|
|
71
|
+
const v = additionalProps[p];
|
|
72
|
+
if (v !== void 0 && v !== null) props[p] = v;
|
|
73
|
+
});
|
|
74
|
+
afterCustomizations?.(props);
|
|
75
|
+
const [widthOnSvg, heightOnSvg] = configureSvgSize(svg, props, scale);
|
|
76
|
+
if (addXmlNs) {
|
|
77
|
+
if (!svg.includes("xmlns=") && !props["xmlns"]) props["xmlns"] = "http://www.w3.org/2000/svg";
|
|
78
|
+
if (!svg.includes("xmlns:xlink=") && svg.includes("xlink:") && !props["xmlns:xlink"]) props["xmlns:xlink"] = "http://www.w3.org/1999/xlink";
|
|
79
|
+
}
|
|
80
|
+
const propsToAdd = Object.keys(props).map((p) => p === "width" && widthOnSvg || p === "height" && heightOnSvg ? null : `${p}="${props[p]}"`).filter((p) => p != null);
|
|
81
|
+
if (propsToAdd.length) svg = svg.replace(svgTagRegex, `<svg ${propsToAdd.join(" ")} `);
|
|
82
|
+
if (options) {
|
|
83
|
+
const { defaultStyle, defaultClass } = options;
|
|
84
|
+
if (defaultClass && !svg.includes("class=")) svg = svg.replace(svgTagRegex, `<svg class="${defaultClass}" `);
|
|
85
|
+
if (defaultStyle && !svg.includes("style=")) svg = svg.replace(svgTagRegex, `<svg style="${defaultStyle}" `);
|
|
86
|
+
}
|
|
87
|
+
const usedProps = options?.usedProps;
|
|
88
|
+
if (usedProps) {
|
|
89
|
+
Object.keys(additionalProps).forEach((p) => {
|
|
90
|
+
const v = props[p];
|
|
91
|
+
if (v !== void 0 && v !== null) usedProps[p] = v;
|
|
92
|
+
});
|
|
93
|
+
if (typeof props.width !== "undefined" && props.width !== null) usedProps.width = props.width;
|
|
94
|
+
if (typeof props.height !== "undefined" && props.height !== null) usedProps.height = props.height;
|
|
95
|
+
}
|
|
96
|
+
return svg;
|
|
97
|
+
}
|
|
98
|
+
function getPossibleIconNames(icon) {
|
|
99
|
+
return [
|
|
100
|
+
icon,
|
|
101
|
+
icon.replace(/([a-z])([A-Z])/g, "$1-$2").toLowerCase(),
|
|
102
|
+
icon.replace(/([a-z])(\d+)/g, "$1-$2")
|
|
103
|
+
];
|
|
104
|
+
}
|
|
105
|
+
export { getPossibleIconNames, loaderDefaultHeightProp, loaderDefaultWidthProp, mergeIconProps };
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Compares two objects, returns true if identical
|
|
3
|
+
*
|
|
4
|
+
* Reference object contains keys
|
|
5
|
+
*/
|
|
6
|
+
function compareObjects(obj1, obj2, ref = obj1) {
|
|
7
|
+
for (const key in ref) if (obj1[key] !== obj2[key]) return false;
|
|
8
|
+
return Object.keys(obj1).length === Object.keys(obj2).length;
|
|
9
|
+
}
|
|
10
|
+
/**
|
|
11
|
+
* Unmerge objects, removing items that match in both objects
|
|
12
|
+
*/
|
|
13
|
+
function unmergeObjects(obj1, obj2) {
|
|
14
|
+
const result = { ...obj1 };
|
|
15
|
+
for (const key in obj2) if (result[key] === obj2[key]) delete result[key];
|
|
16
|
+
return result;
|
|
17
|
+
}
|
|
18
|
+
/**
|
|
19
|
+
* Get common properties in 2 objects
|
|
20
|
+
*/
|
|
21
|
+
function commonObjectProps(item, reference) {
|
|
22
|
+
const result = Object.create(null);
|
|
23
|
+
for (const key in reference) if (key in item) result[key] = item[key];
|
|
24
|
+
return result;
|
|
25
|
+
}
|
|
26
|
+
export { commonObjectProps, compareObjects, unmergeObjects };
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Convert string to camelCase
|
|
3
|
+
*/
|
|
4
|
+
function camelize(str) {
|
|
5
|
+
return str.replace(/-([a-z0-9])/g, (g) => g[1].toUpperCase());
|
|
6
|
+
}
|
|
7
|
+
/**
|
|
8
|
+
* Convert string to PascaleCase
|
|
9
|
+
*/
|
|
10
|
+
function pascalize(str) {
|
|
11
|
+
const camel = camelize(str);
|
|
12
|
+
return camel.slice(0, 1).toUpperCase() + camel.slice(1);
|
|
13
|
+
}
|
|
14
|
+
/**
|
|
15
|
+
* Convert camelCase string to kebab-case
|
|
16
|
+
*/
|
|
17
|
+
function camelToKebab(key) {
|
|
18
|
+
return key.replace(/:/g, "-").replace(/([A-Z])/g, " $1").trim().split(/\s+/g).join("-").toLowerCase();
|
|
19
|
+
}
|
|
20
|
+
/**
|
|
21
|
+
* Convert camelCase string to snake-case
|
|
22
|
+
*/
|
|
23
|
+
function snakelize(str) {
|
|
24
|
+
return camelToKebab(str).replace(/-/g, "_");
|
|
25
|
+
}
|
|
26
|
+
export { camelToKebab, camelize, pascalize, snakelize };
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Sanitises title, removing any unwanted characters that might break XML.
|
|
3
|
+
*
|
|
4
|
+
* This is a very basic funciton, not full parser.
|
|
5
|
+
*/
|
|
6
|
+
function sanitiseTitleAttribute(content) {
|
|
7
|
+
return content.replace(/[<>&]+/g, "");
|
|
8
|
+
}
|
|
9
|
+
export { sanitiseTitleAttribute };
|
|
@@ -0,0 +1,113 @@
|
|
|
1
|
+
import { defaultIconProps } from "../icon/defaults.js";
|
|
2
|
+
import { defaultIconCustomisations } from "../customisations/defaults.js";
|
|
3
|
+
import { calculateSize } from "./size.js";
|
|
4
|
+
import { wrapSVGContent } from "./defs.js";
|
|
5
|
+
/**
|
|
6
|
+
* Check if value should be unset. Allows multiple keywords
|
|
7
|
+
*/
|
|
8
|
+
const isUnsetKeyword = (value) => value === "unset" || value === "undefined" || value === "none";
|
|
9
|
+
/**
|
|
10
|
+
* Get SVG attributes and content from icon + customisations
|
|
11
|
+
*
|
|
12
|
+
* Does not generate style to make it compatible with frameworks that use objects for style, such as React.
|
|
13
|
+
* Instead, it generates 'inline' value. If true, rendering engine should add verticalAlign: -0.125em to icon.
|
|
14
|
+
*
|
|
15
|
+
* Customisations should be normalised by platform specific parser.
|
|
16
|
+
* Result should be converted to <svg> by platform specific parser.
|
|
17
|
+
* Use replaceIDs to generate unique IDs for body.
|
|
18
|
+
*/
|
|
19
|
+
function iconToSVG(icon, customisations) {
|
|
20
|
+
const fullIcon = {
|
|
21
|
+
...defaultIconProps,
|
|
22
|
+
...icon
|
|
23
|
+
};
|
|
24
|
+
const fullCustomisations = {
|
|
25
|
+
...defaultIconCustomisations,
|
|
26
|
+
...customisations
|
|
27
|
+
};
|
|
28
|
+
const box = {
|
|
29
|
+
left: fullIcon.left,
|
|
30
|
+
top: fullIcon.top,
|
|
31
|
+
width: fullIcon.width,
|
|
32
|
+
height: fullIcon.height
|
|
33
|
+
};
|
|
34
|
+
let body = fullIcon.body;
|
|
35
|
+
[fullIcon, fullCustomisations].forEach((props) => {
|
|
36
|
+
const transformations = [];
|
|
37
|
+
const hFlip = props.hFlip;
|
|
38
|
+
const vFlip = props.vFlip;
|
|
39
|
+
let rotation = props.rotate;
|
|
40
|
+
if (hFlip) if (vFlip) rotation += 2;
|
|
41
|
+
else {
|
|
42
|
+
transformations.push("translate(" + (box.width + box.left).toString() + " " + (0 - box.top).toString() + ")");
|
|
43
|
+
transformations.push("scale(-1 1)");
|
|
44
|
+
box.top = box.left = 0;
|
|
45
|
+
}
|
|
46
|
+
else if (vFlip) {
|
|
47
|
+
transformations.push("translate(" + (0 - box.left).toString() + " " + (box.height + box.top).toString() + ")");
|
|
48
|
+
transformations.push("scale(1 -1)");
|
|
49
|
+
box.top = box.left = 0;
|
|
50
|
+
}
|
|
51
|
+
let tempValue;
|
|
52
|
+
if (rotation < 0) rotation -= Math.floor(rotation / 4) * 4;
|
|
53
|
+
rotation = rotation % 4;
|
|
54
|
+
switch (rotation) {
|
|
55
|
+
case 1:
|
|
56
|
+
tempValue = box.height / 2 + box.top;
|
|
57
|
+
transformations.unshift("rotate(90 " + tempValue.toString() + " " + tempValue.toString() + ")");
|
|
58
|
+
break;
|
|
59
|
+
case 2:
|
|
60
|
+
transformations.unshift("rotate(180 " + (box.width / 2 + box.left).toString() + " " + (box.height / 2 + box.top).toString() + ")");
|
|
61
|
+
break;
|
|
62
|
+
case 3:
|
|
63
|
+
tempValue = box.width / 2 + box.left;
|
|
64
|
+
transformations.unshift("rotate(-90 " + tempValue.toString() + " " + tempValue.toString() + ")");
|
|
65
|
+
break;
|
|
66
|
+
}
|
|
67
|
+
if (rotation % 2 === 1) {
|
|
68
|
+
if (box.left !== box.top) {
|
|
69
|
+
tempValue = box.left;
|
|
70
|
+
box.left = box.top;
|
|
71
|
+
box.top = tempValue;
|
|
72
|
+
}
|
|
73
|
+
if (box.width !== box.height) {
|
|
74
|
+
tempValue = box.width;
|
|
75
|
+
box.width = box.height;
|
|
76
|
+
box.height = tempValue;
|
|
77
|
+
}
|
|
78
|
+
}
|
|
79
|
+
if (transformations.length) body = wrapSVGContent(body, "<g transform=\"" + transformations.join(" ") + "\">", "</g>");
|
|
80
|
+
});
|
|
81
|
+
const customisationsWidth = fullCustomisations.width;
|
|
82
|
+
const customisationsHeight = fullCustomisations.height;
|
|
83
|
+
const boxWidth = box.width;
|
|
84
|
+
const boxHeight = box.height;
|
|
85
|
+
let width;
|
|
86
|
+
let height;
|
|
87
|
+
if (customisationsWidth === null) {
|
|
88
|
+
height = customisationsHeight === null ? "1em" : customisationsHeight === "auto" ? boxHeight : customisationsHeight;
|
|
89
|
+
width = calculateSize(height, boxWidth / boxHeight);
|
|
90
|
+
} else {
|
|
91
|
+
width = customisationsWidth === "auto" ? boxWidth : customisationsWidth;
|
|
92
|
+
height = customisationsHeight === null ? calculateSize(width, boxHeight / boxWidth) : customisationsHeight === "auto" ? boxHeight : customisationsHeight;
|
|
93
|
+
}
|
|
94
|
+
const attributes = {};
|
|
95
|
+
const setAttr = (prop, value) => {
|
|
96
|
+
if (!isUnsetKeyword(value)) attributes[prop] = value.toString();
|
|
97
|
+
};
|
|
98
|
+
setAttr("width", width);
|
|
99
|
+
setAttr("height", height);
|
|
100
|
+
const viewBox = [
|
|
101
|
+
box.left,
|
|
102
|
+
box.top,
|
|
103
|
+
boxWidth,
|
|
104
|
+
boxHeight
|
|
105
|
+
];
|
|
106
|
+
attributes.viewBox = viewBox.join(" ");
|
|
107
|
+
return {
|
|
108
|
+
attributes,
|
|
109
|
+
viewBox,
|
|
110
|
+
body
|
|
111
|
+
};
|
|
112
|
+
}
|
|
113
|
+
export { iconToSVG, isUnsetKeyword };
|
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
function splitSVGDefs(content, tag = "defs") {
|
|
2
|
+
let defs = "";
|
|
3
|
+
const index = content.indexOf("<" + tag);
|
|
4
|
+
while (index >= 0) {
|
|
5
|
+
const start = content.indexOf(">", index);
|
|
6
|
+
const end = content.indexOf("</" + tag);
|
|
7
|
+
if (start === -1 || end === -1) break;
|
|
8
|
+
const endEnd = content.indexOf(">", end);
|
|
9
|
+
if (endEnd === -1) break;
|
|
10
|
+
defs += content.slice(start + 1, end).trim();
|
|
11
|
+
content = content.slice(0, index).trim() + content.slice(endEnd + 1);
|
|
12
|
+
}
|
|
13
|
+
return {
|
|
14
|
+
defs,
|
|
15
|
+
content
|
|
16
|
+
};
|
|
17
|
+
}
|
|
18
|
+
/**
|
|
19
|
+
* Merge defs and content
|
|
20
|
+
*/
|
|
21
|
+
function mergeDefsAndContent(defs, content) {
|
|
22
|
+
return defs ? "<defs>" + defs + "</defs>" + content : content;
|
|
23
|
+
}
|
|
24
|
+
/**
|
|
25
|
+
* Wrap SVG content, without wrapping definitions
|
|
26
|
+
*/
|
|
27
|
+
function wrapSVGContent(body, start, end) {
|
|
28
|
+
const split = splitSVGDefs(body);
|
|
29
|
+
return mergeDefsAndContent(split.defs, start + split.content + end);
|
|
30
|
+
}
|
|
31
|
+
export { mergeDefsAndContent, splitSVGDefs, wrapSVGContent };
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
import { encodeSVGforURL } from "./url.js";
|
|
2
|
+
/**
|
|
3
|
+
* Encode the `SVG` to be used on `CSS`: https://bl.ocks.org/jennyknuth/222825e315d45a738ed9d6e04c7a88d0.
|
|
4
|
+
*
|
|
5
|
+
* @param svg The `SVG` source.
|
|
6
|
+
*/
|
|
7
|
+
function encodeSvgForCss(svg) {
|
|
8
|
+
let useSvg = svg.startsWith("<svg>") ? svg.replace("<svg>", "<svg >") : svg;
|
|
9
|
+
if (!useSvg.includes(" xmlns:xlink=") && useSvg.includes(" xlink:")) useSvg = useSvg.replace("<svg ", "<svg xmlns:xlink=\"http://www.w3.org/1999/xlink\" ");
|
|
10
|
+
if (!useSvg.includes(" xmlns=")) useSvg = useSvg.replace("<svg ", "<svg xmlns=\"http://www.w3.org/2000/svg\" ");
|
|
11
|
+
return encodeSVGforURL(useSvg);
|
|
12
|
+
}
|
|
13
|
+
export { encodeSvgForCss };
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Generate <svg>
|
|
3
|
+
*/
|
|
4
|
+
function iconToHTML(body, attributes) {
|
|
5
|
+
let renderAttribsHTML = body.indexOf("xlink:") === -1 ? "" : " xmlns:xlink=\"http://www.w3.org/1999/xlink\"";
|
|
6
|
+
for (const attr in attributes) renderAttribsHTML += " " + attr + "=\"" + attributes[attr] + "\"";
|
|
7
|
+
return "<svg xmlns=\"http://www.w3.org/2000/svg\"" + renderAttribsHTML + ">" + body + "</svg>";
|
|
8
|
+
}
|
|
9
|
+
export { iconToHTML };
|
|
@@ -0,0 +1,41 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Regular expression for finding ids
|
|
3
|
+
*/
|
|
4
|
+
const regex = /\sid="(\S+)"/g;
|
|
5
|
+
/**
|
|
6
|
+
* Counters
|
|
7
|
+
*/
|
|
8
|
+
const counters = /* @__PURE__ */ new Map();
|
|
9
|
+
/**
|
|
10
|
+
* Get unique new ID
|
|
11
|
+
*/
|
|
12
|
+
function nextID(id) {
|
|
13
|
+
id = id.replace(/[0-9]+$/, "") || "a";
|
|
14
|
+
const count = counters.get(id) || 0;
|
|
15
|
+
counters.set(id, count + 1);
|
|
16
|
+
return count ? `${id}${count}` : id;
|
|
17
|
+
}
|
|
18
|
+
/**
|
|
19
|
+
* Replace IDs in SVG output with unique IDs
|
|
20
|
+
*/
|
|
21
|
+
function replaceIDs(body) {
|
|
22
|
+
const ids = [];
|
|
23
|
+
let match;
|
|
24
|
+
while (match = regex.exec(body)) ids.push(match[1]);
|
|
25
|
+
if (!ids.length) return body;
|
|
26
|
+
const suffix = "suffix" + (Math.random() * 16777216 | Date.now()).toString(16);
|
|
27
|
+
ids.forEach((id) => {
|
|
28
|
+
const newID = nextID(id);
|
|
29
|
+
const escapedID = id.replace(/[.*+?^${}()|[\]\\]/g, "\\$&");
|
|
30
|
+
body = body.replace(new RegExp("([#;\"])(" + escapedID + ")([\")]|\\.[a-z])", "g"), "$1" + newID + suffix + "$3");
|
|
31
|
+
});
|
|
32
|
+
body = body.replace(new RegExp(suffix, "g"), "");
|
|
33
|
+
return body;
|
|
34
|
+
}
|
|
35
|
+
/**
|
|
36
|
+
* Clear ID cache
|
|
37
|
+
*/
|
|
38
|
+
function clearIDCache() {
|
|
39
|
+
counters.clear();
|
|
40
|
+
}
|
|
41
|
+
export { clearIDCache, replaceIDs };
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
let policy;
|
|
2
|
+
/**
|
|
3
|
+
* Attempt to create policy
|
|
4
|
+
*/
|
|
5
|
+
function createPolicy() {
|
|
6
|
+
try {
|
|
7
|
+
policy = window.trustedTypes.createPolicy("iconify", { createHTML: (s) => s });
|
|
8
|
+
} catch (err) {
|
|
9
|
+
policy = null;
|
|
10
|
+
}
|
|
11
|
+
}
|
|
12
|
+
/**
|
|
13
|
+
* Clean up value for innerHTML assignment
|
|
14
|
+
*
|
|
15
|
+
* This code doesn't actually clean up anything.
|
|
16
|
+
* It is intended be used with Iconify icon data, which has already been validated
|
|
17
|
+
*/
|
|
18
|
+
function cleanUpInnerHTML(html) {
|
|
19
|
+
if (policy === void 0) createPolicy();
|
|
20
|
+
return policy ? policy.createHTML(html) : html;
|
|
21
|
+
}
|
|
22
|
+
export { cleanUpInnerHTML };
|
|
@@ -0,0 +1,67 @@
|
|
|
1
|
+
import { wrapSVGContent } from "./defs.js";
|
|
2
|
+
import { getSVGViewBox } from "./viewbox.js";
|
|
3
|
+
/**
|
|
4
|
+
* Extract attributes and content from SVG
|
|
5
|
+
*/
|
|
6
|
+
function parseSVGContent(content) {
|
|
7
|
+
const match = content.trim().match(/(?:<(?:\?xml|!DOCTYPE)[^>]+>\s*)*<svg([^>]+)>([\s\S]+)<\/svg[^>]*>/);
|
|
8
|
+
if (!match) return;
|
|
9
|
+
const body = match[2].trim();
|
|
10
|
+
const attribsList = match[1].match(/[\w:-]+="[^"]*"/g);
|
|
11
|
+
const attribs = Object.create(null);
|
|
12
|
+
attribsList?.forEach((row) => {
|
|
13
|
+
const match = row.match(/([\w:-]+)="([^"]*)"/);
|
|
14
|
+
if (match) attribs[match[1]] = match[2];
|
|
15
|
+
});
|
|
16
|
+
return {
|
|
17
|
+
attribs,
|
|
18
|
+
body
|
|
19
|
+
};
|
|
20
|
+
}
|
|
21
|
+
function build(data) {
|
|
22
|
+
const attribs = data.attribs;
|
|
23
|
+
const viewBox = getSVGViewBox(attribs["viewBox"] ?? "");
|
|
24
|
+
if (!viewBox) return;
|
|
25
|
+
const groupAttributes = [];
|
|
26
|
+
for (const key in attribs) if (key === "style" || key.startsWith("fill") || key.startsWith("stroke")) groupAttributes.push(`${key}="${attribs[key]}"`);
|
|
27
|
+
let body = data.body;
|
|
28
|
+
if (groupAttributes.length) body = wrapSVGContent(body, "<g " + groupAttributes.join(" ") + ">", "</g>");
|
|
29
|
+
return {
|
|
30
|
+
width: attribs.width,
|
|
31
|
+
height: attribs.height,
|
|
32
|
+
viewBox,
|
|
33
|
+
body
|
|
34
|
+
};
|
|
35
|
+
}
|
|
36
|
+
/**
|
|
37
|
+
* Convert parsed SVG to IconifyIconBuildResult
|
|
38
|
+
*/
|
|
39
|
+
function buildParsedSVG(data) {
|
|
40
|
+
const result = build(data);
|
|
41
|
+
if (result) return {
|
|
42
|
+
attributes: {
|
|
43
|
+
width: result.width,
|
|
44
|
+
height: result.height,
|
|
45
|
+
viewBox: result.viewBox.join(" ")
|
|
46
|
+
},
|
|
47
|
+
viewBox: result.viewBox,
|
|
48
|
+
body: result.body
|
|
49
|
+
};
|
|
50
|
+
}
|
|
51
|
+
/**
|
|
52
|
+
* Convert parsed SVG to IconifyIcon
|
|
53
|
+
*/
|
|
54
|
+
function convertParsedSVG(data) {
|
|
55
|
+
const result = build(data);
|
|
56
|
+
if (result) {
|
|
57
|
+
const viewBox = result.viewBox;
|
|
58
|
+
return {
|
|
59
|
+
left: viewBox[0],
|
|
60
|
+
top: viewBox[1],
|
|
61
|
+
width: viewBox[2],
|
|
62
|
+
height: viewBox[3],
|
|
63
|
+
body: result.body
|
|
64
|
+
};
|
|
65
|
+
}
|
|
66
|
+
}
|
|
67
|
+
export { buildParsedSVG, convertParsedSVG, parseSVGContent };
|
|
@@ -0,0 +1,54 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Tags to skip
|
|
3
|
+
*/
|
|
4
|
+
const skipTags = ["script", "style"];
|
|
5
|
+
/**
|
|
6
|
+
* Prettify SVG
|
|
7
|
+
*/
|
|
8
|
+
function prettifySVG(content, tab = " ", depth = 0) {
|
|
9
|
+
let result = "";
|
|
10
|
+
let level = 0;
|
|
11
|
+
content = content.replace(/(\s)*\/>/g, " />");
|
|
12
|
+
while (content.length > 0) {
|
|
13
|
+
const openIndex = content.indexOf("<");
|
|
14
|
+
let closeIndex = content.indexOf(">");
|
|
15
|
+
if (openIndex === -1 && closeIndex === -1) return result;
|
|
16
|
+
if (openIndex === -1 || closeIndex === -1 || closeIndex < openIndex) return null;
|
|
17
|
+
const text = content.slice(0, openIndex);
|
|
18
|
+
const trimmedText = text.trim();
|
|
19
|
+
if (trimmedText.length) if (text.trimStart() !== text && text.trimEnd() !== text) result += trimmedText + "\n" + tab.repeat(level + depth);
|
|
20
|
+
else result = result.trim() + text;
|
|
21
|
+
content = content.slice(openIndex);
|
|
22
|
+
closeIndex -= openIndex;
|
|
23
|
+
const lastChar = content.slice(closeIndex - 1, closeIndex);
|
|
24
|
+
const isClosing = content.slice(0, 2) === "</";
|
|
25
|
+
let isSelfClosing = lastChar === "/" || lastChar === "?";
|
|
26
|
+
if (isClosing && isSelfClosing) return null;
|
|
27
|
+
const tagName = content.slice(isClosing ? 2 : 1).split(/[\s>]/).shift();
|
|
28
|
+
const ignoreTagContent = !isSelfClosing && !isClosing && skipTags.includes(tagName);
|
|
29
|
+
if (!ignoreTagContent) {
|
|
30
|
+
const nextOpenIndex = content.indexOf("<", 1);
|
|
31
|
+
if (nextOpenIndex !== -1 && nextOpenIndex < closeIndex) return null;
|
|
32
|
+
}
|
|
33
|
+
if (isClosing && tab.length) {
|
|
34
|
+
if (result.slice(0 - tab.length) === tab) result = result.slice(0, result.length - tab.length);
|
|
35
|
+
}
|
|
36
|
+
result += content.slice(0, closeIndex + 1);
|
|
37
|
+
content = content.slice(closeIndex + 1);
|
|
38
|
+
if (ignoreTagContent) {
|
|
39
|
+
const closingIndex = content.indexOf("</" + tagName);
|
|
40
|
+
const closingEnd = content.indexOf(">", closingIndex);
|
|
41
|
+
if (closingIndex < 0 || closingEnd < 0) return null;
|
|
42
|
+
result += content.slice(0, closingEnd + 1);
|
|
43
|
+
content = content.slice(closingEnd + 1);
|
|
44
|
+
isSelfClosing = true;
|
|
45
|
+
}
|
|
46
|
+
if (isClosing) {
|
|
47
|
+
level--;
|
|
48
|
+
if (level < 0) return null;
|
|
49
|
+
} else if (!isSelfClosing) level++;
|
|
50
|
+
result += "\n" + tab.repeat(level + depth);
|
|
51
|
+
}
|
|
52
|
+
return level === 0 ? result : null;
|
|
53
|
+
}
|
|
54
|
+
export { prettifySVG };
|