businesslens 0.2.2
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/.output/nitro.json +15 -0
- package/.output/public/_nuxt/ANTr5GBv.js +1 -0
- package/.output/public/_nuxt/B3Z-Zt7l.js +37 -0
- package/.output/public/_nuxt/Bd76-HGM.js +1 -0
- package/.output/public/_nuxt/Bf4VrETn.js +1 -0
- package/.output/public/_nuxt/CR3jGlpM.js +1 -0
- package/.output/public/_nuxt/CntoM1kL.js +1 -0
- package/.output/public/_nuxt/DogqooqX.js +1 -0
- package/.output/public/_nuxt/Zsu92SSr.js +1 -0
- package/.output/public/_nuxt/builds/latest.json +1 -0
- package/.output/public/_nuxt/builds/meta/e74555da-0c18-4e95-b959-2bdcc538677b.json +1 -0
- package/.output/public/_nuxt/default.CRZmPCG_.css +1 -0
- package/.output/public/_nuxt/e3lOfLH3.js +1 -0
- package/.output/public/_nuxt/entry.SgkJh-3P.css +1 -0
- package/.output/public/_nuxt/error-404.CTIGkQtd.css +1 -0
- package/.output/public/_nuxt/error-500.CKBWIF4V.css +1 -0
- package/.output/public/_nuxt/fCd72uLR.js +1 -0
- package/.output/public/_nuxt/inter-cyrillic-ext-wght-normal.BOeWTOD4.woff2 +0 -0
- package/.output/public/_nuxt/inter-cyrillic-wght-normal.DqGufNeO.woff2 +0 -0
- package/.output/public/_nuxt/inter-greek-ext-wght-normal.DlzME5K_.woff2 +0 -0
- package/.output/public/_nuxt/inter-greek-wght-normal.CkhJZR-_.woff2 +0 -0
- package/.output/public/_nuxt/inter-latin-ext-wght-normal.DO1Apj_S.woff2 +0 -0
- package/.output/public/_nuxt/inter-latin-wght-normal.Dx4kXJAl.woff2 +0 -0
- package/.output/public/_nuxt/inter-vietnamese-wght-normal.CBcvBZtf.woff2 +0 -0
- package/.output/public/_nuxt/vk0fkBN0.js +1 -0
- package/.output/public/_nuxt/zg6VsE4d.js +39 -0
- package/.output/public/brand/logo/businesslens-mark.svg +20 -0
- package/.output/public/favicon.svg +13 -0
- package/.output/server/chunks/_/error-500.mjs +19 -0
- package/.output/server/chunks/_/error-500.mjs.map +1 -0
- package/.output/server/chunks/_/icons.mjs +6150 -0
- package/.output/server/chunks/_/icons.mjs.map +1 -0
- package/.output/server/chunks/build/Card-DJ5Lo0Cn.mjs +161 -0
- package/.output/server/chunks/build/Card-DJ5Lo0Cn.mjs.map +1 -0
- package/.output/server/chunks/build/EntityInspector-fTjbuYoq.mjs +4412 -0
- package/.output/server/chunks/build/EntityInspector-fTjbuYoq.mjs.map +1 -0
- package/.output/server/chunks/build/Slideover-KOfskX1l.mjs +4226 -0
- package/.output/server/chunks/build/Slideover-KOfskX1l.mjs.map +1 -0
- package/.output/server/chunks/build/Tooltip-DkxwLaX6.mjs +1338 -0
- package/.output/server/chunks/build/Tooltip-DkxwLaX6.mjs.map +1 -0
- package/.output/server/chunks/build/client.precomputed.mjs +4 -0
- package/.output/server/chunks/build/client.precomputed.mjs.map +1 -0
- package/.output/server/chunks/build/default-BJSthw3t.mjs +8999 -0
- package/.output/server/chunks/build/default-BJSthw3t.mjs.map +1 -0
- package/.output/server/chunks/build/default-styles.BYgqaNao.mjs +8 -0
- package/.output/server/chunks/build/default-styles.BYgqaNao.mjs.map +1 -0
- package/.output/server/chunks/build/error-404-BOiGLcfP.mjs +96 -0
- package/.output/server/chunks/build/error-404-BOiGLcfP.mjs.map +1 -0
- package/.output/server/chunks/build/error-404-styles.DA-UkGXW.mjs +8 -0
- package/.output/server/chunks/build/error-404-styles.DA-UkGXW.mjs.map +1 -0
- package/.output/server/chunks/build/error-500-Bwyw373t.mjs +79 -0
- package/.output/server/chunks/build/error-500-Bwyw373t.mjs.map +1 -0
- package/.output/server/chunks/build/error-500-styles.De7qbKJ2.mjs +8 -0
- package/.output/server/chunks/build/error-500-styles.De7qbKJ2.mjs.map +1 -0
- package/.output/server/chunks/build/index-BuhKSZfH.mjs +313 -0
- package/.output/server/chunks/build/index-BuhKSZfH.mjs.map +1 -0
- package/.output/server/chunks/build/journeys-DHHOyxCM.mjs +244 -0
- package/.output/server/chunks/build/journeys-DHHOyxCM.mjs.map +1 -0
- package/.output/server/chunks/build/server.mjs +14099 -0
- package/.output/server/chunks/build/server.mjs.map +1 -0
- package/.output/server/chunks/build/styles.mjs +9 -0
- package/.output/server/chunks/build/styles.mjs.map +1 -0
- package/.output/server/chunks/build/topology-BJfDB_jA.mjs +295 -0
- package/.output/server/chunks/build/topology-BJfDB_jA.mjs.map +1 -0
- package/.output/server/chunks/build/useReport-pDAk-ETG.mjs +406 -0
- package/.output/server/chunks/build/useReport-pDAk-ETG.mjs.map +1 -0
- package/.output/server/chunks/nitro/nitro.mjs +5770 -0
- package/.output/server/chunks/nitro/nitro.mjs.map +1 -0
- package/.output/server/chunks/routes/api/report.get.mjs +617 -0
- package/.output/server/chunks/routes/api/report.get.mjs.map +1 -0
- package/.output/server/chunks/routes/renderer.mjs +451 -0
- package/.output/server/chunks/routes/renderer.mjs.map +1 -0
- package/.output/server/chunks/virtual/_virtual_spa-template.mjs +4 -0
- package/.output/server/chunks/virtual/_virtual_spa-template.mjs.map +1 -0
- package/.output/server/index.mjs +12 -0
- package/.output/server/index.mjs.map +1 -0
- package/.output/server/node_modules/.nitro/hookable@5.5.3/dist/index.mjs +290 -0
- package/.output/server/node_modules/.nitro/hookable@5.5.3/package.json +49 -0
- package/.output/server/node_modules/.nitro/hookable@6.1.1/dist/index.mjs +257 -0
- package/.output/server/node_modules/.nitro/hookable@6.1.1/package.json +53 -0
- package/.output/server/node_modules/@babel/parser/lib/index.js +14599 -0
- package/.output/server/node_modules/@babel/parser/package.json +50 -0
- package/.output/server/node_modules/@iconify/utils/lib/colors/index.js +295 -0
- package/.output/server/node_modules/@iconify/utils/lib/colors/keywords.js +701 -0
- package/.output/server/node_modules/@iconify/utils/lib/css/common.js +75 -0
- package/.output/server/node_modules/@iconify/utils/lib/css/format.js +39 -0
- package/.output/server/node_modules/@iconify/utils/lib/css/icon.js +47 -0
- package/.output/server/node_modules/@iconify/utils/lib/css/icons.js +128 -0
- package/.output/server/node_modules/@iconify/utils/lib/customisations/bool.js +19 -0
- package/.output/server/node_modules/@iconify/utils/lib/customisations/defaults.js +13 -0
- package/.output/server/node_modules/@iconify/utils/lib/customisations/flip.js +17 -0
- package/.output/server/node_modules/@iconify/utils/lib/customisations/merge.js +16 -0
- package/.output/server/node_modules/@iconify/utils/lib/customisations/rotate.js +30 -0
- package/.output/server/node_modules/@iconify/utils/lib/emoji/cleanup.js +78 -0
- package/.output/server/node_modules/@iconify/utils/lib/emoji/convert.js +100 -0
- package/.output/server/node_modules/@iconify/utils/lib/emoji/data.js +28 -0
- package/.output/server/node_modules/@iconify/utils/lib/emoji/format.js +58 -0
- package/.output/server/node_modules/@iconify/utils/lib/emoji/parse.js +48 -0
- package/.output/server/node_modules/@iconify/utils/lib/emoji/regex/base.js +203 -0
- package/.output/server/node_modules/@iconify/utils/lib/emoji/regex/create.js +33 -0
- package/.output/server/node_modules/@iconify/utils/lib/emoji/regex/numbers.js +132 -0
- package/.output/server/node_modules/@iconify/utils/lib/emoji/regex/similar.js +165 -0
- package/.output/server/node_modules/@iconify/utils/lib/emoji/regex/tree.js +79 -0
- package/.output/server/node_modules/@iconify/utils/lib/emoji/replace/find.js +92 -0
- package/.output/server/node_modules/@iconify/utils/lib/emoji/replace/replace.js +26 -0
- package/.output/server/node_modules/@iconify/utils/lib/emoji/test/components.js +76 -0
- package/.output/server/node_modules/@iconify/utils/lib/emoji/test/missing.js +66 -0
- package/.output/server/node_modules/@iconify/utils/lib/emoji/test/name.js +45 -0
- package/.output/server/node_modules/@iconify/utils/lib/emoji/test/parse.js +103 -0
- package/.output/server/node_modules/@iconify/utils/lib/emoji/test/similar.js +36 -0
- package/.output/server/node_modules/@iconify/utils/lib/emoji/test/tree.js +92 -0
- package/.output/server/node_modules/@iconify/utils/lib/emoji/test/variations.js +62 -0
- package/.output/server/node_modules/@iconify/utils/lib/icon/defaults.js +25 -0
- package/.output/server/node_modules/@iconify/utils/lib/icon/merge.js +16 -0
- package/.output/server/node_modules/@iconify/utils/lib/icon/name.js +57 -0
- package/.output/server/node_modules/@iconify/utils/lib/icon/square.js +33 -0
- package/.output/server/node_modules/@iconify/utils/lib/icon/transformations.js +12 -0
- package/.output/server/node_modules/@iconify/utils/lib/icon-set/convert-info.js +125 -0
- package/.output/server/node_modules/@iconify/utils/lib/icon-set/expand.js +19 -0
- package/.output/server/node_modules/@iconify/utils/lib/icon-set/get-icon.js +25 -0
- package/.output/server/node_modules/@iconify/utils/lib/icon-set/get-icons.js +36 -0
- package/.output/server/node_modules/@iconify/utils/lib/icon-set/minify.js +91 -0
- package/.output/server/node_modules/@iconify/utils/lib/icon-set/parse.js +46 -0
- package/.output/server/node_modules/@iconify/utils/lib/icon-set/tree.js +23 -0
- package/.output/server/node_modules/@iconify/utils/lib/icon-set/validate-basic.js +42 -0
- package/.output/server/node_modules/@iconify/utils/lib/icon-set/validate.js +123 -0
- package/.output/server/node_modules/@iconify/utils/lib/index.js +52 -0
- package/.output/server/node_modules/@iconify/utils/lib/loader/custom.js +30 -0
- package/.output/server/node_modules/@iconify/utils/lib/loader/loader.js +26 -0
- package/.output/server/node_modules/@iconify/utils/lib/loader/modern.js +27 -0
- package/.output/server/node_modules/@iconify/utils/lib/loader/utils.js +105 -0
- package/.output/server/node_modules/@iconify/utils/lib/misc/objects.js +26 -0
- package/.output/server/node_modules/@iconify/utils/lib/misc/strings.js +26 -0
- package/.output/server/node_modules/@iconify/utils/lib/misc/title.js +9 -0
- package/.output/server/node_modules/@iconify/utils/lib/svg/build.js +113 -0
- package/.output/server/node_modules/@iconify/utils/lib/svg/defs.js +31 -0
- package/.output/server/node_modules/@iconify/utils/lib/svg/encode-svg-for-css.js +13 -0
- package/.output/server/node_modules/@iconify/utils/lib/svg/html.js +9 -0
- package/.output/server/node_modules/@iconify/utils/lib/svg/id.js +41 -0
- package/.output/server/node_modules/@iconify/utils/lib/svg/inner-html.js +22 -0
- package/.output/server/node_modules/@iconify/utils/lib/svg/parse.js +67 -0
- package/.output/server/node_modules/@iconify/utils/lib/svg/pretty.js +54 -0
- package/.output/server/node_modules/@iconify/utils/lib/svg/size.js +27 -0
- package/.output/server/node_modules/@iconify/utils/lib/svg/trim.js +7 -0
- package/.output/server/node_modules/@iconify/utils/lib/svg/url.js +22 -0
- package/.output/server/node_modules/@iconify/utils/lib/svg/viewbox.js +8 -0
- package/.output/server/node_modules/@iconify/utils/package.json +119 -0
- package/.output/server/node_modules/@vue/compiler-core/dist/compiler-core.cjs.prod.js +6759 -0
- package/.output/server/node_modules/@vue/compiler-core/package.json +58 -0
- package/.output/server/node_modules/@vue/compiler-dom/dist/compiler-dom.cjs.prod.js +689 -0
- package/.output/server/node_modules/@vue/compiler-dom/package.json +57 -0
- package/.output/server/node_modules/@vue/compiler-ssr/dist/compiler-ssr.cjs.js +1413 -0
- package/.output/server/node_modules/@vue/compiler-ssr/package.json +34 -0
- package/.output/server/node_modules/@vue/devtools-api/dist/index.js +2 -0
- package/.output/server/node_modules/@vue/devtools-api/package.json +34 -0
- package/.output/server/node_modules/@vue/devtools-kit/dist/index.js +5670 -0
- package/.output/server/node_modules/@vue/devtools-kit/package.json +44 -0
- package/.output/server/node_modules/@vue/devtools-shared/dist/index.js +239 -0
- package/.output/server/node_modules/@vue/devtools-shared/package.json +33 -0
- package/.output/server/node_modules/@vue/reactivity/dist/reactivity.cjs.prod.js +1899 -0
- package/.output/server/node_modules/@vue/reactivity/package.json +55 -0
- package/.output/server/node_modules/@vue/runtime-core/dist/runtime-core.cjs.prod.js +6940 -0
- package/.output/server/node_modules/@vue/runtime-core/package.json +52 -0
- package/.output/server/node_modules/@vue/runtime-dom/dist/runtime-dom.cjs.prod.js +1822 -0
- package/.output/server/node_modules/@vue/runtime-dom/package.json +60 -0
- package/.output/server/node_modules/@vue/server-renderer/dist/server-renderer.cjs.prod.js +896 -0
- package/.output/server/node_modules/@vue/server-renderer/package.json +55 -0
- package/.output/server/node_modules/@vue/shared/dist/shared.cjs.prod.js +604 -0
- package/.output/server/node_modules/@vue/shared/package.json +47 -0
- package/.output/server/node_modules/@vue-flow/core/dist/vue-flow-core.mjs +10186 -0
- package/.output/server/node_modules/@vue-flow/core/package.json +95 -0
- package/.output/server/node_modules/ajv/dist/2020.js +55 -0
- package/.output/server/node_modules/ajv/dist/ajv.js +50 -0
- package/.output/server/node_modules/ajv/dist/compile/codegen/code.js +156 -0
- package/.output/server/node_modules/ajv/dist/compile/codegen/index.js +697 -0
- package/.output/server/node_modules/ajv/dist/compile/codegen/scope.js +143 -0
- package/.output/server/node_modules/ajv/dist/compile/errors.js +123 -0
- package/.output/server/node_modules/ajv/dist/compile/index.js +242 -0
- package/.output/server/node_modules/ajv/dist/compile/names.js +28 -0
- package/.output/server/node_modules/ajv/dist/compile/ref_error.js +12 -0
- package/.output/server/node_modules/ajv/dist/compile/resolve.js +155 -0
- package/.output/server/node_modules/ajv/dist/compile/rules.js +26 -0
- package/.output/server/node_modules/ajv/dist/compile/util.js +178 -0
- package/.output/server/node_modules/ajv/dist/compile/validate/applicability.js +19 -0
- package/.output/server/node_modules/ajv/dist/compile/validate/boolSchema.js +50 -0
- package/.output/server/node_modules/ajv/dist/compile/validate/dataType.js +203 -0
- package/.output/server/node_modules/ajv/dist/compile/validate/defaults.js +35 -0
- package/.output/server/node_modules/ajv/dist/compile/validate/index.js +520 -0
- package/.output/server/node_modules/ajv/dist/compile/validate/keyword.js +124 -0
- package/.output/server/node_modules/ajv/dist/compile/validate/subschema.js +81 -0
- package/.output/server/node_modules/ajv/dist/core.js +618 -0
- package/.output/server/node_modules/ajv/dist/refs/data.json +13 -0
- package/.output/server/node_modules/ajv/dist/refs/json-schema-2020-12/index.js +30 -0
- package/.output/server/node_modules/ajv/dist/refs/json-schema-2020-12/meta/applicator.json +48 -0
- package/.output/server/node_modules/ajv/dist/refs/json-schema-2020-12/meta/content.json +17 -0
- package/.output/server/node_modules/ajv/dist/refs/json-schema-2020-12/meta/core.json +51 -0
- package/.output/server/node_modules/ajv/dist/refs/json-schema-2020-12/meta/format-annotation.json +14 -0
- package/.output/server/node_modules/ajv/dist/refs/json-schema-2020-12/meta/meta-data.json +37 -0
- package/.output/server/node_modules/ajv/dist/refs/json-schema-2020-12/meta/unevaluated.json +15 -0
- package/.output/server/node_modules/ajv/dist/refs/json-schema-2020-12/meta/validation.json +90 -0
- package/.output/server/node_modules/ajv/dist/refs/json-schema-2020-12/schema.json +55 -0
- package/.output/server/node_modules/ajv/dist/refs/json-schema-draft-07.json +151 -0
- package/.output/server/node_modules/ajv/dist/runtime/equal.js +7 -0
- package/.output/server/node_modules/ajv/dist/runtime/ucs2length.js +24 -0
- package/.output/server/node_modules/ajv/dist/runtime/uri.js +6 -0
- package/.output/server/node_modules/ajv/dist/runtime/validation_error.js +11 -0
- package/.output/server/node_modules/ajv/dist/vocabularies/applicator/additionalItems.js +49 -0
- package/.output/server/node_modules/ajv/dist/vocabularies/applicator/additionalProperties.js +106 -0
- package/.output/server/node_modules/ajv/dist/vocabularies/applicator/allOf.js +23 -0
- package/.output/server/node_modules/ajv/dist/vocabularies/applicator/anyOf.js +12 -0
- package/.output/server/node_modules/ajv/dist/vocabularies/applicator/contains.js +95 -0
- package/.output/server/node_modules/ajv/dist/vocabularies/applicator/dependencies.js +85 -0
- package/.output/server/node_modules/ajv/dist/vocabularies/applicator/dependentSchemas.js +11 -0
- package/.output/server/node_modules/ajv/dist/vocabularies/applicator/if.js +66 -0
- package/.output/server/node_modules/ajv/dist/vocabularies/applicator/index.js +44 -0
- package/.output/server/node_modules/ajv/dist/vocabularies/applicator/items.js +52 -0
- package/.output/server/node_modules/ajv/dist/vocabularies/applicator/items2020.js +30 -0
- package/.output/server/node_modules/ajv/dist/vocabularies/applicator/not.js +26 -0
- package/.output/server/node_modules/ajv/dist/vocabularies/applicator/oneOf.js +60 -0
- package/.output/server/node_modules/ajv/dist/vocabularies/applicator/patternProperties.js +75 -0
- package/.output/server/node_modules/ajv/dist/vocabularies/applicator/prefixItems.js +12 -0
- package/.output/server/node_modules/ajv/dist/vocabularies/applicator/properties.js +54 -0
- package/.output/server/node_modules/ajv/dist/vocabularies/applicator/propertyNames.js +38 -0
- package/.output/server/node_modules/ajv/dist/vocabularies/applicator/thenElse.js +13 -0
- package/.output/server/node_modules/ajv/dist/vocabularies/code.js +131 -0
- package/.output/server/node_modules/ajv/dist/vocabularies/core/id.js +10 -0
- package/.output/server/node_modules/ajv/dist/vocabularies/core/index.js +16 -0
- package/.output/server/node_modules/ajv/dist/vocabularies/core/ref.js +122 -0
- package/.output/server/node_modules/ajv/dist/vocabularies/discriminator/index.js +104 -0
- package/.output/server/node_modules/ajv/dist/vocabularies/discriminator/types.js +9 -0
- package/.output/server/node_modules/ajv/dist/vocabularies/draft2020.js +23 -0
- package/.output/server/node_modules/ajv/dist/vocabularies/draft7.js +17 -0
- package/.output/server/node_modules/ajv/dist/vocabularies/dynamic/dynamicAnchor.js +30 -0
- package/.output/server/node_modules/ajv/dist/vocabularies/dynamic/dynamicRef.js +51 -0
- package/.output/server/node_modules/ajv/dist/vocabularies/dynamic/index.js +9 -0
- package/.output/server/node_modules/ajv/dist/vocabularies/dynamic/recursiveAnchor.js +16 -0
- package/.output/server/node_modules/ajv/dist/vocabularies/dynamic/recursiveRef.js +10 -0
- package/.output/server/node_modules/ajv/dist/vocabularies/format/format.js +92 -0
- package/.output/server/node_modules/ajv/dist/vocabularies/format/index.js +6 -0
- package/.output/server/node_modules/ajv/dist/vocabularies/metadata.js +18 -0
- package/.output/server/node_modules/ajv/dist/vocabularies/next.js +8 -0
- package/.output/server/node_modules/ajv/dist/vocabularies/unevaluated/index.js +7 -0
- package/.output/server/node_modules/ajv/dist/vocabularies/unevaluated/unevaluatedItems.js +40 -0
- package/.output/server/node_modules/ajv/dist/vocabularies/unevaluated/unevaluatedProperties.js +65 -0
- package/.output/server/node_modules/ajv/dist/vocabularies/validation/const.js +25 -0
- package/.output/server/node_modules/ajv/dist/vocabularies/validation/dependentRequired.js +12 -0
- package/.output/server/node_modules/ajv/dist/vocabularies/validation/enum.js +48 -0
- package/.output/server/node_modules/ajv/dist/vocabularies/validation/index.js +33 -0
- package/.output/server/node_modules/ajv/dist/vocabularies/validation/limitContains.js +15 -0
- package/.output/server/node_modules/ajv/dist/vocabularies/validation/limitItems.js +24 -0
- package/.output/server/node_modules/ajv/dist/vocabularies/validation/limitLength.js +27 -0
- package/.output/server/node_modules/ajv/dist/vocabularies/validation/limitNumber.js +27 -0
- package/.output/server/node_modules/ajv/dist/vocabularies/validation/limitProperties.js +24 -0
- package/.output/server/node_modules/ajv/dist/vocabularies/validation/multipleOf.js +26 -0
- package/.output/server/node_modules/ajv/dist/vocabularies/validation/pattern.js +24 -0
- package/.output/server/node_modules/ajv/dist/vocabularies/validation/required.js +79 -0
- package/.output/server/node_modules/ajv/dist/vocabularies/validation/uniqueItems.js +64 -0
- package/.output/server/node_modules/ajv/package.json +126 -0
- package/.output/server/node_modules/ajv-formats/dist/formats.js +208 -0
- package/.output/server/node_modules/ajv-formats/dist/index.js +37 -0
- package/.output/server/node_modules/ajv-formats/dist/limit.js +69 -0
- package/.output/server/node_modules/ajv-formats/package.json +74 -0
- package/.output/server/node_modules/birpc/dist/index.mjs +291 -0
- package/.output/server/node_modules/birpc/package.json +57 -0
- package/.output/server/node_modules/consola/dist/chunks/prompt.mjs +280 -0
- package/.output/server/node_modules/consola/dist/core.mjs +512 -0
- package/.output/server/node_modules/consola/dist/index.mjs +651 -0
- package/.output/server/node_modules/consola/dist/shared/consola.DRwqZj3T.mjs +72 -0
- package/.output/server/node_modules/consola/dist/shared/consola.DXBYu-KD.mjs +288 -0
- package/.output/server/node_modules/consola/package.json +136 -0
- package/.output/server/node_modules/devalue/index.js +4 -0
- package/.output/server/node_modules/devalue/package.json +40 -0
- package/.output/server/node_modules/devalue/src/base64.js +60 -0
- package/.output/server/node_modules/devalue/src/constants.js +12 -0
- package/.output/server/node_modules/devalue/src/parse.js +283 -0
- package/.output/server/node_modules/devalue/src/stringify.js +401 -0
- package/.output/server/node_modules/devalue/src/uneval.js +552 -0
- package/.output/server/node_modules/devalue/src/utils.js +160 -0
- package/.output/server/node_modules/entities/dist/commonjs/decode-codepoint.js +77 -0
- package/.output/server/node_modules/entities/dist/commonjs/decode.js +568 -0
- package/.output/server/node_modules/entities/dist/commonjs/generated/decode-data-html.js +7 -0
- package/.output/server/node_modules/entities/dist/commonjs/generated/decode-data-xml.js +7 -0
- package/.output/server/node_modules/entities/dist/commonjs/internal/bin-trie-flags.js +21 -0
- package/.output/server/node_modules/entities/dist/commonjs/internal/decode-shared.js +31 -0
- package/.output/server/node_modules/entities/dist/commonjs/package.json +3 -0
- package/.output/server/node_modules/entities/package.json +120 -0
- package/.output/server/node_modules/estree-walker/dist/umd/estree-walker.js +344 -0
- package/.output/server/node_modules/estree-walker/package.json +37 -0
- package/.output/server/node_modules/fast-deep-equal/index.js +46 -0
- package/.output/server/node_modules/fast-deep-equal/package.json +61 -0
- package/.output/server/node_modules/fast-uri/index.js +406 -0
- package/.output/server/node_modules/fast-uri/lib/schemes.js +267 -0
- package/.output/server/node_modules/fast-uri/lib/utils.js +443 -0
- package/.output/server/node_modules/fast-uri/package.json +68 -0
- package/.output/server/node_modules/json-schema-traverse/index.js +93 -0
- package/.output/server/node_modules/json-schema-traverse/package.json +43 -0
- package/.output/server/node_modules/perfect-debounce/dist/index.mjs +89 -0
- package/.output/server/node_modules/perfect-debounce/package.json +41 -0
- package/.output/server/node_modules/source-map-js/lib/array-set.js +121 -0
- package/.output/server/node_modules/source-map-js/lib/base64-vlq.js +140 -0
- package/.output/server/node_modules/source-map-js/lib/base64.js +67 -0
- package/.output/server/node_modules/source-map-js/lib/binary-search.js +111 -0
- package/.output/server/node_modules/source-map-js/lib/mapping-list.js +79 -0
- package/.output/server/node_modules/source-map-js/lib/quick-sort.js +132 -0
- package/.output/server/node_modules/source-map-js/lib/source-map-consumer.js +1188 -0
- package/.output/server/node_modules/source-map-js/lib/source-map-generator.js +444 -0
- package/.output/server/node_modules/source-map-js/lib/source-node.js +413 -0
- package/.output/server/node_modules/source-map-js/lib/util.js +594 -0
- package/.output/server/node_modules/source-map-js/package.json +71 -0
- package/.output/server/node_modules/source-map-js/source-map.js +8 -0
- package/.output/server/node_modules/tailwindcss/dist/chunk-X4GG3EDV.mjs +1 -0
- package/.output/server/node_modules/tailwindcss/dist/colors.mjs +1 -0
- package/.output/server/node_modules/tailwindcss/package.json +89 -0
- package/.output/server/node_modules/ufo/dist/index.mjs +645 -0
- package/.output/server/node_modules/ufo/package.json +48 -0
- package/.output/server/node_modules/unhead/dist/index.mjs +9 -0
- package/.output/server/node_modules/unhead/dist/parser.mjs +508 -0
- package/.output/server/node_modules/unhead/dist/plugins.mjs +101 -0
- package/.output/server/node_modules/unhead/dist/scripts.mjs +30 -0
- package/.output/server/node_modules/unhead/dist/server.mjs +180 -0
- package/.output/server/node_modules/unhead/dist/shared/unhead.B3VbJo7Y.mjs +207 -0
- package/.output/server/node_modules/unhead/dist/shared/unhead.BYvz9V1x.mjs +43 -0
- package/.output/server/node_modules/unhead/dist/shared/unhead.BnoAbrHA.mjs +269 -0
- package/.output/server/node_modules/unhead/dist/shared/unhead.CaI5ZD4O.mjs +182 -0
- package/.output/server/node_modules/unhead/dist/shared/unhead.CbpEuj3y.mjs +71 -0
- package/.output/server/node_modules/unhead/dist/shared/unhead.D4vSFytZ.mjs +236 -0
- package/.output/server/node_modules/unhead/dist/shared/unhead.DQc16pHI.mjs +196 -0
- package/.output/server/node_modules/unhead/dist/shared/unhead.Dh1cQCTe.mjs +44 -0
- package/.output/server/node_modules/unhead/dist/shared/unhead.TxTMM7cM.mjs +166 -0
- package/.output/server/node_modules/unhead/dist/shared/unhead.yem5I2v_.mjs +38 -0
- package/.output/server/node_modules/unhead/dist/utils.mjs +5 -0
- package/.output/server/node_modules/unhead/package.json +105 -0
- package/.output/server/node_modules/vue/dist/vue.cjs.js +80 -0
- package/.output/server/node_modules/vue/dist/vue.cjs.prod.js +66 -0
- package/.output/server/node_modules/vue/index.js +7 -0
- package/.output/server/node_modules/vue/index.mjs +1 -0
- package/.output/server/node_modules/vue/package.json +112 -0
- package/.output/server/node_modules/vue/server-renderer/index.mjs +1 -0
- package/.output/server/node_modules/vue-bundle-renderer/dist/runtime.mjs +249 -0
- package/.output/server/node_modules/vue-bundle-renderer/package.json +57 -0
- package/.output/server/node_modules/vue-router/dist/devtools-DCoWQoU_.js +1034 -0
- package/.output/server/node_modules/vue-router/dist/useApi-s_02lHjl.js +181 -0
- package/.output/server/node_modules/vue-router/dist/vue-router.js +1499 -0
- package/.output/server/node_modules/vue-router/package.json +226 -0
- package/.output/server/node_modules/vue-router/vue-router.node.mjs +2 -0
- package/.output/server/package.json +41 -0
- package/README.md +114 -0
- package/THIRD_PARTY_NOTICES.md +28 -0
- package/bin/businesslens.mjs +181 -0
- package/package.json +68 -0
- package/packages/report-schema/schemas/report.schema.json +235 -0
- package/packages/report-schema/types/index.ts +1 -0
- package/packages/report-schema/types/report.ts +101 -0
- package/packages/report-schema/validate.mjs +111 -0
|
@@ -0,0 +1,267 @@
|
|
|
1
|
+
'use strict'
|
|
2
|
+
|
|
3
|
+
const { isUUID } = require('./utils')
|
|
4
|
+
const URN_REG = /([\da-z][\d\-a-z]{0,31}):((?:[\w!$'()*+,\-.:;=@]|%[\da-f]{2})+)/iu
|
|
5
|
+
|
|
6
|
+
const supportedSchemeNames = /** @type {const} */ (['http', 'https', 'ws',
|
|
7
|
+
'wss', 'urn', 'urn:uuid'])
|
|
8
|
+
|
|
9
|
+
/** @typedef {supportedSchemeNames[number]} SchemeName */
|
|
10
|
+
|
|
11
|
+
/**
|
|
12
|
+
* @param {string} name
|
|
13
|
+
* @returns {name is SchemeName}
|
|
14
|
+
*/
|
|
15
|
+
function isValidSchemeName (name) {
|
|
16
|
+
return supportedSchemeNames.indexOf(/** @type {*} */ (name)) !== -1
|
|
17
|
+
}
|
|
18
|
+
|
|
19
|
+
/**
|
|
20
|
+
* @callback SchemeFn
|
|
21
|
+
* @param {import('../types/index').URIComponent} component
|
|
22
|
+
* @param {import('../types/index').Options} options
|
|
23
|
+
* @returns {import('../types/index').URIComponent}
|
|
24
|
+
*/
|
|
25
|
+
|
|
26
|
+
/**
|
|
27
|
+
* @typedef {Object} SchemeHandler
|
|
28
|
+
* @property {SchemeName} scheme - The scheme name.
|
|
29
|
+
* @property {boolean} [domainHost] - Indicates if the scheme supports domain hosts.
|
|
30
|
+
* @property {SchemeFn} parse - Function to parse the URI component for this scheme.
|
|
31
|
+
* @property {SchemeFn} serialize - Function to serialize the URI component for this scheme.
|
|
32
|
+
* @property {boolean} [skipNormalize] - Indicates if normalization should be skipped for this scheme.
|
|
33
|
+
* @property {boolean} [absolutePath] - Indicates if the scheme uses absolute paths.
|
|
34
|
+
* @property {boolean} [unicodeSupport] - Indicates if the scheme supports Unicode.
|
|
35
|
+
*/
|
|
36
|
+
|
|
37
|
+
/**
|
|
38
|
+
* @param {import('../types/index').URIComponent} wsComponent
|
|
39
|
+
* @returns {boolean}
|
|
40
|
+
*/
|
|
41
|
+
function wsIsSecure (wsComponent) {
|
|
42
|
+
if (wsComponent.secure === true) {
|
|
43
|
+
return true
|
|
44
|
+
} else if (wsComponent.secure === false) {
|
|
45
|
+
return false
|
|
46
|
+
} else if (wsComponent.scheme) {
|
|
47
|
+
return (
|
|
48
|
+
wsComponent.scheme.length === 3 &&
|
|
49
|
+
(wsComponent.scheme[0] === 'w' || wsComponent.scheme[0] === 'W') &&
|
|
50
|
+
(wsComponent.scheme[1] === 's' || wsComponent.scheme[1] === 'S') &&
|
|
51
|
+
(wsComponent.scheme[2] === 's' || wsComponent.scheme[2] === 'S')
|
|
52
|
+
)
|
|
53
|
+
} else {
|
|
54
|
+
return false
|
|
55
|
+
}
|
|
56
|
+
}
|
|
57
|
+
|
|
58
|
+
/** @type {SchemeFn} */
|
|
59
|
+
function httpParse (component) {
|
|
60
|
+
if (!component.host) {
|
|
61
|
+
component.error = component.error || 'HTTP URIs must have a host.'
|
|
62
|
+
}
|
|
63
|
+
|
|
64
|
+
return component
|
|
65
|
+
}
|
|
66
|
+
|
|
67
|
+
/** @type {SchemeFn} */
|
|
68
|
+
function httpSerialize (component) {
|
|
69
|
+
const secure = String(component.scheme).toLowerCase() === 'https'
|
|
70
|
+
|
|
71
|
+
// normalize the default port
|
|
72
|
+
if (component.port === (secure ? 443 : 80) || component.port === '') {
|
|
73
|
+
component.port = undefined
|
|
74
|
+
}
|
|
75
|
+
|
|
76
|
+
// normalize the empty path
|
|
77
|
+
if (!component.path) {
|
|
78
|
+
component.path = '/'
|
|
79
|
+
}
|
|
80
|
+
|
|
81
|
+
// NOTE: We do not parse query strings for HTTP URIs
|
|
82
|
+
// as WWW Form Url Encoded query strings are part of the HTML4+ spec,
|
|
83
|
+
// and not the HTTP spec.
|
|
84
|
+
|
|
85
|
+
return component
|
|
86
|
+
}
|
|
87
|
+
|
|
88
|
+
/** @type {SchemeFn} */
|
|
89
|
+
function wsParse (wsComponent) {
|
|
90
|
+
// indicate if the secure flag is set
|
|
91
|
+
wsComponent.secure = wsIsSecure(wsComponent)
|
|
92
|
+
|
|
93
|
+
// construct resouce name
|
|
94
|
+
wsComponent.resourceName = (wsComponent.path || '/') + (wsComponent.query ? '?' + wsComponent.query : '')
|
|
95
|
+
wsComponent.path = undefined
|
|
96
|
+
wsComponent.query = undefined
|
|
97
|
+
|
|
98
|
+
return wsComponent
|
|
99
|
+
}
|
|
100
|
+
|
|
101
|
+
/** @type {SchemeFn} */
|
|
102
|
+
function wsSerialize (wsComponent) {
|
|
103
|
+
// normalize the default port
|
|
104
|
+
if (wsComponent.port === (wsIsSecure(wsComponent) ? 443 : 80) || wsComponent.port === '') {
|
|
105
|
+
wsComponent.port = undefined
|
|
106
|
+
}
|
|
107
|
+
|
|
108
|
+
// ensure scheme matches secure flag
|
|
109
|
+
if (typeof wsComponent.secure === 'boolean') {
|
|
110
|
+
wsComponent.scheme = (wsComponent.secure ? 'wss' : 'ws')
|
|
111
|
+
wsComponent.secure = undefined
|
|
112
|
+
}
|
|
113
|
+
|
|
114
|
+
// reconstruct path from resource name
|
|
115
|
+
if (wsComponent.resourceName) {
|
|
116
|
+
const [path, query] = wsComponent.resourceName.split('?')
|
|
117
|
+
wsComponent.path = (path && path !== '/' ? path : undefined)
|
|
118
|
+
wsComponent.query = query
|
|
119
|
+
wsComponent.resourceName = undefined
|
|
120
|
+
}
|
|
121
|
+
|
|
122
|
+
// forbid fragment component
|
|
123
|
+
wsComponent.fragment = undefined
|
|
124
|
+
|
|
125
|
+
return wsComponent
|
|
126
|
+
}
|
|
127
|
+
|
|
128
|
+
/** @type {SchemeFn} */
|
|
129
|
+
function urnParse (urnComponent, options) {
|
|
130
|
+
if (!urnComponent.path) {
|
|
131
|
+
urnComponent.error = 'URN can not be parsed'
|
|
132
|
+
return urnComponent
|
|
133
|
+
}
|
|
134
|
+
const matches = urnComponent.path.match(URN_REG)
|
|
135
|
+
if (matches) {
|
|
136
|
+
const scheme = options.scheme || urnComponent.scheme || 'urn'
|
|
137
|
+
urnComponent.nid = matches[1].toLowerCase()
|
|
138
|
+
urnComponent.nss = matches[2]
|
|
139
|
+
const urnScheme = `${scheme}:${options.nid || urnComponent.nid}`
|
|
140
|
+
const schemeHandler = getSchemeHandler(urnScheme)
|
|
141
|
+
urnComponent.path = undefined
|
|
142
|
+
|
|
143
|
+
if (schemeHandler) {
|
|
144
|
+
urnComponent = schemeHandler.parse(urnComponent, options)
|
|
145
|
+
}
|
|
146
|
+
} else {
|
|
147
|
+
urnComponent.error = urnComponent.error || 'URN can not be parsed.'
|
|
148
|
+
}
|
|
149
|
+
|
|
150
|
+
return urnComponent
|
|
151
|
+
}
|
|
152
|
+
|
|
153
|
+
/** @type {SchemeFn} */
|
|
154
|
+
function urnSerialize (urnComponent, options) {
|
|
155
|
+
if (urnComponent.nid === undefined) {
|
|
156
|
+
throw new Error('URN without nid cannot be serialized')
|
|
157
|
+
}
|
|
158
|
+
const scheme = options.scheme || urnComponent.scheme || 'urn'
|
|
159
|
+
const nid = urnComponent.nid.toLowerCase()
|
|
160
|
+
const urnScheme = `${scheme}:${options.nid || nid}`
|
|
161
|
+
const schemeHandler = getSchemeHandler(urnScheme)
|
|
162
|
+
|
|
163
|
+
if (schemeHandler) {
|
|
164
|
+
urnComponent = schemeHandler.serialize(urnComponent, options)
|
|
165
|
+
}
|
|
166
|
+
|
|
167
|
+
const uriComponent = urnComponent
|
|
168
|
+
const nss = urnComponent.nss
|
|
169
|
+
uriComponent.path = `${nid || options.nid}:${nss}`
|
|
170
|
+
|
|
171
|
+
options.skipEscape = true
|
|
172
|
+
return uriComponent
|
|
173
|
+
}
|
|
174
|
+
|
|
175
|
+
/** @type {SchemeFn} */
|
|
176
|
+
function urnuuidParse (urnComponent, options) {
|
|
177
|
+
const uuidComponent = urnComponent
|
|
178
|
+
uuidComponent.uuid = uuidComponent.nss
|
|
179
|
+
uuidComponent.nss = undefined
|
|
180
|
+
|
|
181
|
+
if (!options.tolerant && (!uuidComponent.uuid || !isUUID(uuidComponent.uuid))) {
|
|
182
|
+
uuidComponent.error = uuidComponent.error || 'UUID is not valid.'
|
|
183
|
+
}
|
|
184
|
+
|
|
185
|
+
return uuidComponent
|
|
186
|
+
}
|
|
187
|
+
|
|
188
|
+
/** @type {SchemeFn} */
|
|
189
|
+
function urnuuidSerialize (uuidComponent) {
|
|
190
|
+
const urnComponent = uuidComponent
|
|
191
|
+
// normalize UUID
|
|
192
|
+
urnComponent.nss = (uuidComponent.uuid || '').toLowerCase()
|
|
193
|
+
return urnComponent
|
|
194
|
+
}
|
|
195
|
+
|
|
196
|
+
const http = /** @type {SchemeHandler} */ ({
|
|
197
|
+
scheme: 'http',
|
|
198
|
+
domainHost: true,
|
|
199
|
+
parse: httpParse,
|
|
200
|
+
serialize: httpSerialize
|
|
201
|
+
})
|
|
202
|
+
|
|
203
|
+
const https = /** @type {SchemeHandler} */ ({
|
|
204
|
+
scheme: 'https',
|
|
205
|
+
domainHost: http.domainHost,
|
|
206
|
+
parse: httpParse,
|
|
207
|
+
serialize: httpSerialize
|
|
208
|
+
})
|
|
209
|
+
|
|
210
|
+
const ws = /** @type {SchemeHandler} */ ({
|
|
211
|
+
scheme: 'ws',
|
|
212
|
+
domainHost: true,
|
|
213
|
+
parse: wsParse,
|
|
214
|
+
serialize: wsSerialize
|
|
215
|
+
})
|
|
216
|
+
|
|
217
|
+
const wss = /** @type {SchemeHandler} */ ({
|
|
218
|
+
scheme: 'wss',
|
|
219
|
+
domainHost: ws.domainHost,
|
|
220
|
+
parse: ws.parse,
|
|
221
|
+
serialize: ws.serialize
|
|
222
|
+
})
|
|
223
|
+
|
|
224
|
+
const urn = /** @type {SchemeHandler} */ ({
|
|
225
|
+
scheme: 'urn',
|
|
226
|
+
parse: urnParse,
|
|
227
|
+
serialize: urnSerialize,
|
|
228
|
+
skipNormalize: true
|
|
229
|
+
})
|
|
230
|
+
|
|
231
|
+
const urnuuid = /** @type {SchemeHandler} */ ({
|
|
232
|
+
scheme: 'urn:uuid',
|
|
233
|
+
parse: urnuuidParse,
|
|
234
|
+
serialize: urnuuidSerialize,
|
|
235
|
+
skipNormalize: true
|
|
236
|
+
})
|
|
237
|
+
|
|
238
|
+
const SCHEMES = /** @type {Record<SchemeName, SchemeHandler>} */ ({
|
|
239
|
+
http,
|
|
240
|
+
https,
|
|
241
|
+
ws,
|
|
242
|
+
wss,
|
|
243
|
+
urn,
|
|
244
|
+
'urn:uuid': urnuuid
|
|
245
|
+
})
|
|
246
|
+
|
|
247
|
+
Object.setPrototypeOf(SCHEMES, null)
|
|
248
|
+
|
|
249
|
+
/**
|
|
250
|
+
* @param {string|undefined} scheme
|
|
251
|
+
* @returns {SchemeHandler|undefined}
|
|
252
|
+
*/
|
|
253
|
+
function getSchemeHandler (scheme) {
|
|
254
|
+
return (
|
|
255
|
+
scheme && (
|
|
256
|
+
SCHEMES[/** @type {SchemeName} */ (scheme)] ||
|
|
257
|
+
SCHEMES[/** @type {SchemeName} */(scheme.toLowerCase())])
|
|
258
|
+
) ||
|
|
259
|
+
undefined
|
|
260
|
+
}
|
|
261
|
+
|
|
262
|
+
module.exports = {
|
|
263
|
+
wsIsSecure,
|
|
264
|
+
SCHEMES,
|
|
265
|
+
isValidSchemeName,
|
|
266
|
+
getSchemeHandler,
|
|
267
|
+
}
|
|
@@ -0,0 +1,443 @@
|
|
|
1
|
+
'use strict'
|
|
2
|
+
|
|
3
|
+
/** @type {(value: string) => boolean} */
|
|
4
|
+
const isUUID = RegExp.prototype.test.bind(/^[\da-f]{8}-[\da-f]{4}-[\da-f]{4}-[\da-f]{4}-[\da-f]{12}$/iu)
|
|
5
|
+
|
|
6
|
+
/** @type {(value: string) => boolean} */
|
|
7
|
+
const isIPv4 = RegExp.prototype.test.bind(/^(?:(?:25[0-5]|2[0-4]\d|1\d{2}|[1-9]\d|\d)\.){3}(?:25[0-5]|2[0-4]\d|1\d{2}|[1-9]\d|\d)$/u)
|
|
8
|
+
|
|
9
|
+
/** @type {(value: string) => boolean} */
|
|
10
|
+
const isHexPair = RegExp.prototype.test.bind(/^[\da-f]{2}$/iu)
|
|
11
|
+
|
|
12
|
+
/** @type {(value: string) => boolean} */
|
|
13
|
+
const isUnreserved = RegExp.prototype.test.bind(/^[\da-z\-._~]$/iu)
|
|
14
|
+
|
|
15
|
+
/** @type {(value: string) => boolean} */
|
|
16
|
+
const isPathCharacter = RegExp.prototype.test.bind(/^[\da-z\-._~!$&'()*+,;=:@/]$/iu)
|
|
17
|
+
|
|
18
|
+
/**
|
|
19
|
+
* @param {Array<string>} input
|
|
20
|
+
* @returns {string}
|
|
21
|
+
*/
|
|
22
|
+
function stringArrayToHexStripped (input) {
|
|
23
|
+
let acc = ''
|
|
24
|
+
let code = 0
|
|
25
|
+
let i = 0
|
|
26
|
+
|
|
27
|
+
for (i = 0; i < input.length; i++) {
|
|
28
|
+
code = input[i].charCodeAt(0)
|
|
29
|
+
if (code === 48) {
|
|
30
|
+
continue
|
|
31
|
+
}
|
|
32
|
+
if (!((code >= 48 && code <= 57) || (code >= 65 && code <= 70) || (code >= 97 && code <= 102))) {
|
|
33
|
+
return ''
|
|
34
|
+
}
|
|
35
|
+
acc += input[i]
|
|
36
|
+
break
|
|
37
|
+
}
|
|
38
|
+
|
|
39
|
+
for (i += 1; i < input.length; i++) {
|
|
40
|
+
code = input[i].charCodeAt(0)
|
|
41
|
+
if (!((code >= 48 && code <= 57) || (code >= 65 && code <= 70) || (code >= 97 && code <= 102))) {
|
|
42
|
+
return ''
|
|
43
|
+
}
|
|
44
|
+
acc += input[i]
|
|
45
|
+
}
|
|
46
|
+
return acc
|
|
47
|
+
}
|
|
48
|
+
|
|
49
|
+
/**
|
|
50
|
+
* @typedef {Object} GetIPV6Result
|
|
51
|
+
* @property {boolean} error - Indicates if there was an error parsing the IPv6 address.
|
|
52
|
+
* @property {string} address - The parsed IPv6 address.
|
|
53
|
+
* @property {string} [zone] - The zone identifier, if present.
|
|
54
|
+
*/
|
|
55
|
+
|
|
56
|
+
/**
|
|
57
|
+
* @param {string} value
|
|
58
|
+
* @returns {boolean}
|
|
59
|
+
*/
|
|
60
|
+
const nonSimpleDomain = RegExp.prototype.test.bind(/[^!"$&'()*+,\-.;=_`a-z{}~]/u)
|
|
61
|
+
|
|
62
|
+
/**
|
|
63
|
+
* @param {Array<string>} buffer
|
|
64
|
+
* @returns {boolean}
|
|
65
|
+
*/
|
|
66
|
+
function consumeIsZone (buffer) {
|
|
67
|
+
buffer.length = 0
|
|
68
|
+
return true
|
|
69
|
+
}
|
|
70
|
+
|
|
71
|
+
/**
|
|
72
|
+
* @param {Array<string>} buffer
|
|
73
|
+
* @param {Array<string>} address
|
|
74
|
+
* @param {GetIPV6Result} output
|
|
75
|
+
* @returns {boolean}
|
|
76
|
+
*/
|
|
77
|
+
function consumeHextets (buffer, address, output) {
|
|
78
|
+
if (buffer.length) {
|
|
79
|
+
const hex = stringArrayToHexStripped(buffer)
|
|
80
|
+
if (hex !== '') {
|
|
81
|
+
address.push(hex)
|
|
82
|
+
} else {
|
|
83
|
+
output.error = true
|
|
84
|
+
return false
|
|
85
|
+
}
|
|
86
|
+
buffer.length = 0
|
|
87
|
+
}
|
|
88
|
+
return true
|
|
89
|
+
}
|
|
90
|
+
|
|
91
|
+
/**
|
|
92
|
+
* @param {string} input
|
|
93
|
+
* @returns {GetIPV6Result}
|
|
94
|
+
*/
|
|
95
|
+
function getIPV6 (input) {
|
|
96
|
+
let tokenCount = 0
|
|
97
|
+
const output = { error: false, address: '', zone: '' }
|
|
98
|
+
/** @type {Array<string>} */
|
|
99
|
+
const address = []
|
|
100
|
+
/** @type {Array<string>} */
|
|
101
|
+
const buffer = []
|
|
102
|
+
let endipv6Encountered = false
|
|
103
|
+
let endIpv6 = false
|
|
104
|
+
|
|
105
|
+
let consume = consumeHextets
|
|
106
|
+
|
|
107
|
+
for (let i = 0; i < input.length; i++) {
|
|
108
|
+
const cursor = input[i]
|
|
109
|
+
if (cursor === '[' || cursor === ']') { continue }
|
|
110
|
+
if (cursor === ':') {
|
|
111
|
+
if (endipv6Encountered === true) {
|
|
112
|
+
endIpv6 = true
|
|
113
|
+
}
|
|
114
|
+
if (!consume(buffer, address, output)) { break }
|
|
115
|
+
if (++tokenCount > 7) {
|
|
116
|
+
// not valid
|
|
117
|
+
output.error = true
|
|
118
|
+
break
|
|
119
|
+
}
|
|
120
|
+
if (i > 0 && input[i - 1] === ':') {
|
|
121
|
+
endipv6Encountered = true
|
|
122
|
+
}
|
|
123
|
+
address.push(':')
|
|
124
|
+
continue
|
|
125
|
+
} else if (cursor === '%') {
|
|
126
|
+
if (!consume(buffer, address, output)) { break }
|
|
127
|
+
// switch to zone detection
|
|
128
|
+
consume = consumeIsZone
|
|
129
|
+
} else {
|
|
130
|
+
buffer.push(cursor)
|
|
131
|
+
continue
|
|
132
|
+
}
|
|
133
|
+
}
|
|
134
|
+
if (buffer.length) {
|
|
135
|
+
if (consume === consumeIsZone) {
|
|
136
|
+
output.zone = buffer.join('')
|
|
137
|
+
} else if (endIpv6) {
|
|
138
|
+
address.push(buffer.join(''))
|
|
139
|
+
} else {
|
|
140
|
+
address.push(stringArrayToHexStripped(buffer))
|
|
141
|
+
}
|
|
142
|
+
}
|
|
143
|
+
output.address = address.join('')
|
|
144
|
+
return output
|
|
145
|
+
}
|
|
146
|
+
|
|
147
|
+
/**
|
|
148
|
+
* @typedef {Object} NormalizeIPv6Result
|
|
149
|
+
* @property {string} host - The normalized host.
|
|
150
|
+
* @property {string} [escapedHost] - The escaped host.
|
|
151
|
+
* @property {boolean} isIPV6 - Indicates if the host is an IPv6 address.
|
|
152
|
+
*/
|
|
153
|
+
|
|
154
|
+
/**
|
|
155
|
+
* @param {string} host
|
|
156
|
+
* @returns {NormalizeIPv6Result}
|
|
157
|
+
*/
|
|
158
|
+
function normalizeIPv6 (host) {
|
|
159
|
+
if (findToken(host, ':') < 2) { return { host, isIPV6: false } }
|
|
160
|
+
const ipv6 = getIPV6(host)
|
|
161
|
+
|
|
162
|
+
if (!ipv6.error) {
|
|
163
|
+
let newHost = ipv6.address
|
|
164
|
+
let escapedHost = ipv6.address
|
|
165
|
+
if (ipv6.zone) {
|
|
166
|
+
newHost += '%' + ipv6.zone
|
|
167
|
+
escapedHost += '%25' + ipv6.zone
|
|
168
|
+
}
|
|
169
|
+
return { host: newHost, isIPV6: true, escapedHost }
|
|
170
|
+
} else {
|
|
171
|
+
return { host, isIPV6: false }
|
|
172
|
+
}
|
|
173
|
+
}
|
|
174
|
+
|
|
175
|
+
/**
|
|
176
|
+
* @param {string} str
|
|
177
|
+
* @param {string} token
|
|
178
|
+
* @returns {number}
|
|
179
|
+
*/
|
|
180
|
+
function findToken (str, token) {
|
|
181
|
+
let ind = 0
|
|
182
|
+
for (let i = 0; i < str.length; i++) {
|
|
183
|
+
if (str[i] === token) ind++
|
|
184
|
+
}
|
|
185
|
+
return ind
|
|
186
|
+
}
|
|
187
|
+
|
|
188
|
+
/**
|
|
189
|
+
* @param {string} path
|
|
190
|
+
* @returns {string}
|
|
191
|
+
*
|
|
192
|
+
* @see https://datatracker.ietf.org/doc/html/rfc3986#section-5.2.4
|
|
193
|
+
*/
|
|
194
|
+
function removeDotSegments (path) {
|
|
195
|
+
let input = path
|
|
196
|
+
const output = []
|
|
197
|
+
let nextSlash = -1
|
|
198
|
+
let len = 0
|
|
199
|
+
|
|
200
|
+
// eslint-disable-next-line no-cond-assign
|
|
201
|
+
while (len = input.length) {
|
|
202
|
+
if (len === 1) {
|
|
203
|
+
if (input === '.') {
|
|
204
|
+
break
|
|
205
|
+
} else if (input === '/') {
|
|
206
|
+
output.push('/')
|
|
207
|
+
break
|
|
208
|
+
} else {
|
|
209
|
+
output.push(input)
|
|
210
|
+
break
|
|
211
|
+
}
|
|
212
|
+
} else if (len === 2) {
|
|
213
|
+
if (input[0] === '.') {
|
|
214
|
+
if (input[1] === '.') {
|
|
215
|
+
break
|
|
216
|
+
} else if (input[1] === '/') {
|
|
217
|
+
input = input.slice(2)
|
|
218
|
+
continue
|
|
219
|
+
}
|
|
220
|
+
} else if (input[0] === '/') {
|
|
221
|
+
if (input[1] === '.' || input[1] === '/') {
|
|
222
|
+
output.push('/')
|
|
223
|
+
break
|
|
224
|
+
}
|
|
225
|
+
}
|
|
226
|
+
} else if (len === 3) {
|
|
227
|
+
if (input === '/..') {
|
|
228
|
+
if (output.length !== 0) {
|
|
229
|
+
output.pop()
|
|
230
|
+
}
|
|
231
|
+
output.push('/')
|
|
232
|
+
break
|
|
233
|
+
}
|
|
234
|
+
}
|
|
235
|
+
if (input[0] === '.') {
|
|
236
|
+
if (input[1] === '.') {
|
|
237
|
+
if (input[2] === '/') {
|
|
238
|
+
input = input.slice(3)
|
|
239
|
+
continue
|
|
240
|
+
}
|
|
241
|
+
} else if (input[1] === '/') {
|
|
242
|
+
input = input.slice(2)
|
|
243
|
+
continue
|
|
244
|
+
}
|
|
245
|
+
} else if (input[0] === '/') {
|
|
246
|
+
if (input[1] === '.') {
|
|
247
|
+
if (input[2] === '/') {
|
|
248
|
+
input = input.slice(2)
|
|
249
|
+
continue
|
|
250
|
+
} else if (input[2] === '.') {
|
|
251
|
+
if (input[3] === '/') {
|
|
252
|
+
input = input.slice(3)
|
|
253
|
+
if (output.length !== 0) {
|
|
254
|
+
output.pop()
|
|
255
|
+
}
|
|
256
|
+
continue
|
|
257
|
+
}
|
|
258
|
+
}
|
|
259
|
+
}
|
|
260
|
+
}
|
|
261
|
+
|
|
262
|
+
// Rule 2E: Move normal path segment to output
|
|
263
|
+
if ((nextSlash = input.indexOf('/', 1)) === -1) {
|
|
264
|
+
output.push(input)
|
|
265
|
+
break
|
|
266
|
+
} else {
|
|
267
|
+
output.push(input.slice(0, nextSlash))
|
|
268
|
+
input = input.slice(nextSlash)
|
|
269
|
+
}
|
|
270
|
+
}
|
|
271
|
+
|
|
272
|
+
return output.join('')
|
|
273
|
+
}
|
|
274
|
+
|
|
275
|
+
/**
|
|
276
|
+
* Re-escape RFC 3986 gen-delims that must not appear literally in the host.
|
|
277
|
+
* After the URI regex parses, these characters cannot be literal in the host
|
|
278
|
+
* field, so any that appear after decoding came from percent-encoding and
|
|
279
|
+
* must be restored to prevent authority structure changes.
|
|
280
|
+
*
|
|
281
|
+
* @param {string} host
|
|
282
|
+
* @param {boolean} isIP - true for IPv4/IPv6 hosts (skip colon re-escaping)
|
|
283
|
+
* @returns {string}
|
|
284
|
+
*/
|
|
285
|
+
const HOST_DELIMS = { '@': '%40', '/': '%2F', '?': '%3F', '#': '%23', ':': '%3A' }
|
|
286
|
+
const HOST_DELIM_RE = /[@/?#:]/g
|
|
287
|
+
const HOST_DELIM_NO_COLON_RE = /[@/?#]/g
|
|
288
|
+
|
|
289
|
+
function reescapeHostDelimiters (host, isIP) {
|
|
290
|
+
const re = isIP ? HOST_DELIM_NO_COLON_RE : HOST_DELIM_RE
|
|
291
|
+
re.lastIndex = 0
|
|
292
|
+
return host.replace(re, (ch) => HOST_DELIMS[ch])
|
|
293
|
+
}
|
|
294
|
+
|
|
295
|
+
/**
|
|
296
|
+
* Normalizes percent escapes and optionally decodes only unreserved ASCII bytes.
|
|
297
|
+
* Reserved delimiters such as `%2F` and `%2E` stay escaped.
|
|
298
|
+
*
|
|
299
|
+
* @param {string} input
|
|
300
|
+
* @param {boolean} [decodeUnreserved=false]
|
|
301
|
+
* @returns {string}
|
|
302
|
+
*/
|
|
303
|
+
function normalizePercentEncoding (input, decodeUnreserved = false) {
|
|
304
|
+
if (input.indexOf('%') === -1) {
|
|
305
|
+
return input
|
|
306
|
+
}
|
|
307
|
+
|
|
308
|
+
let output = ''
|
|
309
|
+
|
|
310
|
+
for (let i = 0; i < input.length; i++) {
|
|
311
|
+
if (input[i] === '%' && i + 2 < input.length) {
|
|
312
|
+
const hex = input.slice(i + 1, i + 3)
|
|
313
|
+
if (isHexPair(hex)) {
|
|
314
|
+
const normalizedHex = hex.toUpperCase()
|
|
315
|
+
const decoded = String.fromCharCode(parseInt(normalizedHex, 16))
|
|
316
|
+
|
|
317
|
+
if (decodeUnreserved && isUnreserved(decoded)) {
|
|
318
|
+
output += decoded
|
|
319
|
+
} else {
|
|
320
|
+
output += '%' + normalizedHex
|
|
321
|
+
}
|
|
322
|
+
|
|
323
|
+
i += 2
|
|
324
|
+
continue
|
|
325
|
+
}
|
|
326
|
+
}
|
|
327
|
+
|
|
328
|
+
output += input[i]
|
|
329
|
+
}
|
|
330
|
+
|
|
331
|
+
return output
|
|
332
|
+
}
|
|
333
|
+
|
|
334
|
+
/**
|
|
335
|
+
* Normalizes path data without turning reserved escapes into live path syntax.
|
|
336
|
+
* Valid escapes are uppercased, raw unsafe characters are escaped, and only
|
|
337
|
+
* unreserved bytes that are not `.` are decoded.
|
|
338
|
+
*
|
|
339
|
+
* @param {string} input
|
|
340
|
+
* @returns {string}
|
|
341
|
+
*/
|
|
342
|
+
function normalizePathEncoding (input) {
|
|
343
|
+
let output = ''
|
|
344
|
+
|
|
345
|
+
for (let i = 0; i < input.length; i++) {
|
|
346
|
+
if (input[i] === '%' && i + 2 < input.length) {
|
|
347
|
+
const hex = input.slice(i + 1, i + 3)
|
|
348
|
+
if (isHexPair(hex)) {
|
|
349
|
+
const normalizedHex = hex.toUpperCase()
|
|
350
|
+
const decoded = String.fromCharCode(parseInt(normalizedHex, 16))
|
|
351
|
+
|
|
352
|
+
if (decoded !== '.' && isUnreserved(decoded)) {
|
|
353
|
+
output += decoded
|
|
354
|
+
} else {
|
|
355
|
+
output += '%' + normalizedHex
|
|
356
|
+
}
|
|
357
|
+
|
|
358
|
+
i += 2
|
|
359
|
+
continue
|
|
360
|
+
}
|
|
361
|
+
}
|
|
362
|
+
|
|
363
|
+
if (isPathCharacter(input[i])) {
|
|
364
|
+
output += input[i]
|
|
365
|
+
} else {
|
|
366
|
+
output += escape(input[i])
|
|
367
|
+
}
|
|
368
|
+
}
|
|
369
|
+
|
|
370
|
+
return output
|
|
371
|
+
}
|
|
372
|
+
|
|
373
|
+
/**
|
|
374
|
+
* Escapes a component while preserving existing valid percent escapes.
|
|
375
|
+
*
|
|
376
|
+
* @param {string} input
|
|
377
|
+
* @returns {string}
|
|
378
|
+
*/
|
|
379
|
+
function escapePreservingEscapes (input) {
|
|
380
|
+
let output = ''
|
|
381
|
+
|
|
382
|
+
for (let i = 0; i < input.length; i++) {
|
|
383
|
+
if (input[i] === '%' && i + 2 < input.length) {
|
|
384
|
+
const hex = input.slice(i + 1, i + 3)
|
|
385
|
+
if (isHexPair(hex)) {
|
|
386
|
+
output += '%' + hex.toUpperCase()
|
|
387
|
+
i += 2
|
|
388
|
+
continue
|
|
389
|
+
}
|
|
390
|
+
}
|
|
391
|
+
|
|
392
|
+
output += escape(input[i])
|
|
393
|
+
}
|
|
394
|
+
|
|
395
|
+
return output
|
|
396
|
+
}
|
|
397
|
+
|
|
398
|
+
/**
|
|
399
|
+
* @param {import('../types/index').URIComponent} component
|
|
400
|
+
* @returns {string|undefined}
|
|
401
|
+
*/
|
|
402
|
+
function recomposeAuthority (component) {
|
|
403
|
+
const uriTokens = []
|
|
404
|
+
|
|
405
|
+
if (component.userinfo !== undefined) {
|
|
406
|
+
uriTokens.push(component.userinfo)
|
|
407
|
+
uriTokens.push('@')
|
|
408
|
+
}
|
|
409
|
+
|
|
410
|
+
if (component.host !== undefined) {
|
|
411
|
+
let host = unescape(component.host)
|
|
412
|
+
if (!isIPv4(host)) {
|
|
413
|
+
const ipV6res = normalizeIPv6(host)
|
|
414
|
+
if (ipV6res.isIPV6 === true) {
|
|
415
|
+
host = `[${ipV6res.escapedHost}]`
|
|
416
|
+
} else {
|
|
417
|
+
host = reescapeHostDelimiters(host, false)
|
|
418
|
+
}
|
|
419
|
+
}
|
|
420
|
+
uriTokens.push(host)
|
|
421
|
+
}
|
|
422
|
+
|
|
423
|
+
if (typeof component.port === 'number' || typeof component.port === 'string') {
|
|
424
|
+
uriTokens.push(':')
|
|
425
|
+
uriTokens.push(String(component.port))
|
|
426
|
+
}
|
|
427
|
+
|
|
428
|
+
return uriTokens.length ? uriTokens.join('') : undefined
|
|
429
|
+
};
|
|
430
|
+
|
|
431
|
+
module.exports = {
|
|
432
|
+
nonSimpleDomain,
|
|
433
|
+
recomposeAuthority,
|
|
434
|
+
reescapeHostDelimiters,
|
|
435
|
+
normalizePercentEncoding,
|
|
436
|
+
normalizePathEncoding,
|
|
437
|
+
escapePreservingEscapes,
|
|
438
|
+
removeDotSegments,
|
|
439
|
+
isIPv4,
|
|
440
|
+
isUUID,
|
|
441
|
+
normalizeIPv6,
|
|
442
|
+
stringArrayToHexStripped
|
|
443
|
+
}
|