From 90cf3e9732b62b094a73ceee88aa3f3b41430da7 Mon Sep 17 00:00:00 2001 From: Hendrik de Graaf Date: Wed, 13 Nov 2024 16:07:04 +0100 Subject: [PATCH] chore: remove offline export related code (#1729) * chore: update yarn.lock * chore: remove offline export demo from storybook * chore: remove pdf export specific render code * chore: remove offline pdf export bugfix plugins * chore: remove offline export module --- .storybook/preview-head.html | 6 - src/__demo__/SingleValue.stories.js | 45 +-- .../events/loadCustomSVG/singleValue/index.js | 2 +- .../loadCustomSVG/singleValue/styles.js | 5 +- .../config/generators/highcharts/index.js | 4 - .../highcharts/pdfExportBugFixPlugin/index.js | 7 - .../pdfExportBugFixPlugin/nonASCIIFont.js | 9 - .../pdfExportBugFixPlugin/textShadow.js | 308 ------------------ yarn.lock | 257 ++------------- 9 files changed, 25 insertions(+), 618 deletions(-) delete mode 100644 .storybook/preview-head.html delete mode 100644 src/visualizations/config/generators/highcharts/pdfExportBugFixPlugin/index.js delete mode 100644 src/visualizations/config/generators/highcharts/pdfExportBugFixPlugin/nonASCIIFont.js delete mode 100644 src/visualizations/config/generators/highcharts/pdfExportBugFixPlugin/textShadow.js diff --git a/.storybook/preview-head.html b/.storybook/preview-head.html deleted file mode 100644 index 965f8201c..000000000 --- a/.storybook/preview-head.html +++ /dev/null @@ -1,6 +0,0 @@ - - - diff --git a/src/__demo__/SingleValue.stories.js b/src/__demo__/SingleValue.stories.js index 1276c6134..2b382123f 100644 --- a/src/__demo__/SingleValue.stories.js +++ b/src/__demo__/SingleValue.stories.js @@ -1,4 +1,4 @@ -import React, { useState, useMemo, useRef, useEffect, useCallback } from 'react' +import React, { useState, useMemo, useRef, useEffect } from 'react' import { createVisualization } from '../index.js' const constainerStyleBase = { width: 800, @@ -636,7 +636,6 @@ export const Default = () => { const [dashboard, setDashboard] = useState(false) const [showIcon, setShowIcon] = useState(true) const [indicatorType, setIndicatorType] = useState('plain') - const [exportAsPdf, setExportAsPdf] = useState(true) const [width, setWidth] = useState(constainerStyleBase.width) const [height, setHeight] = useState(constainerStyleBase.height) const containerStyle = useMemo( @@ -682,39 +681,6 @@ export const Default = () => { }) } }, [containerStyle, dashboard, showIcon, indicatorType]) - const downloadOffline = useCallback(() => { - if (newChartRef.current) { - const currentBackgroundColor = - newChartRef.current.userOptions.chart.backgroundColor - - newChartRef.current.update({ - exporting: { - chartOptions: { - isPdfExport: exportAsPdf, - }, - }, - }) - newChartRef.current.exportChartLocal( - { - sourceHeight: 768, - sourceWidth: 1024, - scale: 1, - fallbackToExportServer: false, - filename: 'testOfflineDownload', - showExportInProgress: true, - type: exportAsPdf ? 'application/pdf' : 'image/png', - }, - { - chart: { - backgroundColor: - currentBackgroundColor === 'transparent' - ? '#ffffff' - : currentBackgroundColor, - }, - } - ) - } - }, [exportAsPdf]) return ( <> @@ -782,15 +748,6 @@ export const Default = () => { })} - -
diff --git a/src/visualizations/config/adapters/dhis_highcharts/events/loadCustomSVG/singleValue/index.js b/src/visualizations/config/adapters/dhis_highcharts/events/loadCustomSVG/singleValue/index.js index 84cc83e7d..268d2c547 100644 --- a/src/visualizations/config/adapters/dhis_highcharts/events/loadCustomSVG/singleValue/index.js +++ b/src/visualizations/config/adapters/dhis_highcharts/events/loadCustomSVG/singleValue/index.js @@ -7,7 +7,7 @@ import { DynamicStyles } from './styles.js' export default function loadSingleValueSVG() { const { formattedValue, icon, subText, fontColor } = this.userOptions.customSVGOptions - const dynamicStyles = new DynamicStyles(this.userOptions?.isPdfExport) + const dynamicStyles = new DynamicStyles() const valueElement = this.renderer .text(formattedValue) .attr('data-test', 'visualization-primary-value') diff --git a/src/visualizations/config/adapters/dhis_highcharts/events/loadCustomSVG/singleValue/styles.js b/src/visualizations/config/adapters/dhis_highcharts/events/loadCustomSVG/singleValue/styles.js index f1b944ee2..e7ec189fd 100644 --- a/src/visualizations/config/adapters/dhis_highcharts/events/loadCustomSVG/singleValue/styles.js +++ b/src/visualizations/config/adapters/dhis_highcharts/events/loadCustomSVG/singleValue/styles.js @@ -28,15 +28,14 @@ const spacings = [ export const MIN_SIDE_WHITESPACE = 4 export class DynamicStyles { - constructor(isPdfExport) { + constructor() { this.currentIndex = 0 - this.isPdfExport = isPdfExport } getStyle() { return { value: { ...valueStyles[this.currentIndex], - 'font-weight': this.isPdfExport ? 'normal' : '300', + 'font-weight': '300', }, subText: subTextStyles[this.currentIndex], spacing: spacings[this.currentIndex], diff --git a/src/visualizations/config/generators/highcharts/index.js b/src/visualizations/config/generators/highcharts/index.js index 3620e81f5..f087f06bd 100644 --- a/src/visualizations/config/generators/highcharts/index.js +++ b/src/visualizations/config/generators/highcharts/index.js @@ -3,20 +3,16 @@ import HM from 'highcharts/highcharts-more' import HB from 'highcharts/modules/boost' import HE from 'highcharts/modules/exporting' import HNDTD from 'highcharts/modules/no-data-to-display' -import HOE from 'highcharts/modules/offline-exporting' import HPF from 'highcharts/modules/pattern-fill' import HSG from 'highcharts/modules/solid-gauge' -import PEBFP from './pdfExportBugFixPlugin/index.js' // apply HM(H) HSG(H) HNDTD(H) HE(H) -HOE(H) HPF(H) HB(H) -PEBFP(H) /* Whitelist some additional SVG attributes here. Without this, * the PDF export for the SingleValue visualization breaks. */ diff --git a/src/visualizations/config/generators/highcharts/pdfExportBugFixPlugin/index.js b/src/visualizations/config/generators/highcharts/pdfExportBugFixPlugin/index.js deleted file mode 100644 index 7b4899cde..000000000 --- a/src/visualizations/config/generators/highcharts/pdfExportBugFixPlugin/index.js +++ /dev/null @@ -1,7 +0,0 @@ -import nonASCIIFontBugfix from './nonASCIIFont.js' -import textShadowBugFix from './textShadow.js' - -export default function (H) { - textShadowBugFix(H) - nonASCIIFontBugfix(H) -} diff --git a/src/visualizations/config/generators/highcharts/pdfExportBugFixPlugin/nonASCIIFont.js b/src/visualizations/config/generators/highcharts/pdfExportBugFixPlugin/nonASCIIFont.js deleted file mode 100644 index d2c8d9835..000000000 --- a/src/visualizations/config/generators/highcharts/pdfExportBugFixPlugin/nonASCIIFont.js +++ /dev/null @@ -1,9 +0,0 @@ -/* This is a workaround for https://github.com/highcharts/highcharts/issues/22008 - * We add some transparent text in a non-ASCII script to the chart to prevent - * the chart from being exported in a serif font */ - -export default function (H) { - H.addEvent(H.Chart, 'load', function () { - this.renderer.text('ыки', 20, 20).attr({ opacity: 0 }).add() - }) -} diff --git a/src/visualizations/config/generators/highcharts/pdfExportBugFixPlugin/textShadow.js b/src/visualizations/config/generators/highcharts/pdfExportBugFixPlugin/textShadow.js deleted file mode 100644 index 21a96e1a5..000000000 --- a/src/visualizations/config/generators/highcharts/pdfExportBugFixPlugin/textShadow.js +++ /dev/null @@ -1,308 +0,0 @@ -/* This plugin was provided by HighCharts support and resolves an issue with label - * text that has a white outline, such as the one we use for stacked bar charts. - * For example: "ANC: 1-4 visits by districts this year (stacked)" - * This issue has actually been resolved in HighCharts v11, so once we have upgraded - * to that version, this plugin can be removed. */ - -export default function (H) { - const { AST, defaultOptions, downloadURL } = H, - { ajax } = H.HttpUtilities, - doc = document, - win = window, - OfflineExporting = - H._modules['Extensions/OfflineExporting/OfflineExporting.js'], - { getScript, svgToPdf, imageToDataUrl, svgToDataUrl } = OfflineExporting - - H.wrap( - OfflineExporting, - 'downloadSVGLocal', - function (proceed, svg, options, failCallback, successCallback) { - var dummySVGContainer = doc.createElement('div'), - imageType = options.type || 'image/png', - filename = - (options.filename || 'chart') + - '.' + - (imageType === 'image/svg+xml' - ? 'svg' - : imageType.split('/')[1]), - scale = options.scale || 1 - var svgurl, - blob, - finallyHandler, - libURL = options.libURL || defaultOptions.exporting.libURL, - objectURLRevoke = true, - pdfFont = options.pdfFont - // Allow libURL to end with or without fordward slash - libURL = libURL.slice(-1) !== '/' ? libURL + '/' : libURL - /* - * Detect if we need to load TTF fonts for the PDF, then load them and - * proceed. - * - * @private - */ - var loadPdfFonts = function (svgElement, callback) { - var hasNonASCII = function (s) { - return ( - // eslint-disable-next-line no-control-regex - /[^\u0000-\u007F\u200B]+/.test(s) - ) - } - // Register an event in order to add the font once jsPDF is - // initialized - var addFont = function (variant, base64) { - win.jspdf.jsPDF.API.events.push([ - 'initialized', - function () { - this.addFileToVFS(variant, base64) - this.addFont(variant, 'HighchartsFont', variant) - if (!this.getFontList().HighchartsFont) { - this.setFont('HighchartsFont') - } - }, - ]) - } - // If there are no non-ASCII characters in the SVG, do not use - // bother downloading the font files - if (pdfFont && !hasNonASCII(svgElement.textContent || '')) { - pdfFont = void 0 - } - // Add new font if the URL is declared, #6417. - var variants = ['normal', 'italic', 'bold', 'bolditalic'] - // Shift the first element off the variants and add as a font. - // Then asynchronously trigger the next variant until calling the - // callback when the variants are empty. - var normalBase64 - var shiftAndLoadVariant = function () { - var variant = variants.shift() - // All variants shifted and possibly loaded, proceed - if (!variant) { - return callback() - } - var url = pdfFont && pdfFont[variant] - if (url) { - ajax({ - url: url, - responseType: 'blob', - success: function (data, xhr) { - var reader = new FileReader() - reader.onloadend = function () { - if (typeof this.result === 'string') { - var base64 = this.result.split(',')[1] - addFont(variant, base64) - if (variant === 'normal') { - normalBase64 = base64 - } - } - shiftAndLoadVariant() - } - reader.readAsDataURL(xhr.response) - }, - error: shiftAndLoadVariant, - }) - } else { - // For other variants, fall back to normal text weight/style - if (normalBase64) { - addFont(variant, normalBase64) - } - shiftAndLoadVariant() - } - } - shiftAndLoadVariant() - } - /* - * @private - */ - var downloadPDF = function () { - AST.setElementHTML(dummySVGContainer, svg) - var textElements = - dummySVGContainer.getElementsByTagName('text'), - // Copy style property to element from parents if it's not - // there. Searches up hierarchy until it finds prop, or hits the - // chart container. - setStylePropertyFromParents = function (el, propName) { - var curParent = el - while (curParent && curParent !== dummySVGContainer) { - if (curParent.style[propName]) { - el.style[propName] = curParent.style[propName] - break - } - curParent = curParent.parentNode - } - } - var titleElements, - outlineElements - // Workaround for the text styling. Making sure it does pick up - // settings for parent elements. - ;[].forEach.call(textElements, function (el) { - // Workaround for the text styling. making sure it does pick up - // the root element - ;['font-family', 'font-size'].forEach(function (property) { - setStylePropertyFromParents(el, property) - }) - el.style.fontFamily = - pdfFont && pdfFont.normal - ? // Custom PDF font - 'HighchartsFont' - : // Generic font (serif, sans-serif etc) - String( - el.style.fontFamily && - el.style.fontFamily.split(' ').splice(-1) - ) - // Workaround for plotband with width, removing title from text - // nodes - titleElements = el.getElementsByTagName('title') - ;[].forEach.call(titleElements, function (titleElement) { - el.removeChild(titleElement) - }) - - // Remove all .highcharts-text-outline elements, #17170 - outlineElements = el.getElementsByClassName( - 'highcharts-text-outline' - ) - while (outlineElements.length > 0) { - const outline = outlineElements[0] - if (outline.parentNode) { - outline.parentNode.removeChild(outline) - } - } - }) - var svgNode = dummySVGContainer.querySelector('svg') - if (svgNode) { - loadPdfFonts(svgNode, function () { - svgToPdf(svgNode, 0, function (pdfData) { - try { - downloadURL(pdfData, filename) - if (successCallback) { - successCallback() - } - } catch (e) { - failCallback(e) - } - }) - }) - } - } - // Initiate download depending on file type - if (imageType === 'image/svg+xml') { - // SVG download. In this case, we want to use Microsoft specific - // Blob if available - try { - if (typeof win.navigator.msSaveOrOpenBlob !== 'undefined') { - // eslint-disable-next-line no-undef - blob = new MSBlobBuilder() - blob.append(svg) - svgurl = blob.getBlob('image/svg+xml') - } else { - svgurl = svgToDataUrl(svg) - } - downloadURL(svgurl, filename) - if (successCallback) { - successCallback() - } - } catch (e) { - failCallback(e) - } - } else if (imageType === 'application/pdf') { - if (win.jspdf && win.jspdf.jsPDF) { - downloadPDF() - } else { - // Must load pdf libraries first. // Don't destroy the object - // URL yet since we are doing things asynchronously. A cleaner - // solution would be nice, but this will do for now. - objectURLRevoke = true - getScript(libURL + 'jspdf.js', function () { - getScript(libURL + 'svg2pdf.js', downloadPDF) - }) - } - } else { - // PNG/JPEG download - create bitmap from SVG - svgurl = svgToDataUrl(svg) - finallyHandler = function () { - try { - OfflineExporting.domurl.revokeObjectURL(svgurl) - } catch (e) { - // Ignore - } - } - // First, try to get PNG by rendering on canvas - imageToDataUrl( - svgurl, - imageType, - {}, - scale, - function (imageURL) { - // Success - try { - downloadURL(imageURL, filename) - if (successCallback) { - successCallback() - } - } catch (e) { - failCallback(e) - } - }, - function () { - // Failed due to tainted canvas - // Create new and untainted canvas - var canvas = doc.createElement('canvas'), - ctx = canvas.getContext('2d'), - imageWidth = - svg.match( - // eslint-disable-next-line no-useless-escape - /^]*width\s*=\s*\"?(\d+)\"?[^>]*>/ - )[1] * scale, - imageHeight = - svg.match( - // eslint-disable-next-line no-useless-escape - /^]*height\s*=\s*\"?(\d+)\"?[^>]*>/ - )[1] * scale, - downloadWithCanVG = function () { - var v = win.canvg.Canvg.fromString(ctx, svg) - v.start() - try { - downloadURL( - win.navigator.msSaveOrOpenBlob - ? canvas.msToBlob() - : canvas.toDataURL(imageType), - filename - ) - if (successCallback) { - successCallback() - } - } catch (e) { - failCallback(e) - } finally { - finallyHandler() - } - } - canvas.width = imageWidth - canvas.height = imageHeight - if (win.canvg) { - // Use preloaded canvg - downloadWithCanVG() - } else { - // Must load canVG first. // Don't destroy the object - // URL yet since we are doing things asynchronously. A - // cleaner solution would be nice, but this will do for - // now. - objectURLRevoke = true - getScript(libURL + 'canvg.js', function () { - downloadWithCanVG() - }) - } - }, - // No canvas support - failCallback, - // Failed to load image - failCallback, - // Finally - function () { - if (objectURLRevoke) { - finallyHandler() - } - } - ) - } - } - ) -} diff --git a/yarn.lock b/yarn.lock index 0139fefa2..be96f5b14 100644 --- a/yarn.lock +++ b/yarn.lock @@ -36,23 +36,7 @@ dependencies: "@babel/highlight" "^7.10.4" -"@babel/code-frame@^7.0.0", "@babel/code-frame@^7.10.4", "@babel/code-frame@^7.12.13", "@babel/code-frame@^7.16.0", "@babel/code-frame@^7.16.7", "@babel/code-frame@^7.25.9", "@babel/code-frame@^7.8.3": - version "7.25.9" - resolved "https://registry.yarnpkg.com/@babel/code-frame/-/code-frame-7.25.9.tgz#895b6c7e04a7271a0cbfd575d2e8131751914cc7" - integrity sha512-z88xeGxnzehn2sqZ8UdGQEvYErF1odv2CftxInpSYJt6uHuPe9YjahKZITGs3l5LeI9d2ROG+obuDAoSlqbNfQ== - dependencies: - "@babel/highlight" "^7.25.9" - picocolors "^1.0.0" - -"@babel/code-frame@^7.22.13", "@babel/code-frame@^7.23.5": - version "7.23.5" - resolved "https://registry.yarnpkg.com/@babel/code-frame/-/code-frame-7.23.5.tgz#9009b69a8c602293476ad598ff53e4562e15c244" - integrity sha512-CgH3s1a96LipHCmSUmYFPwY7MNx8C3avkq7i4Wl3cfa662ldtUe4VM1TPXX70pfmrlWTb6jLqTYrZyT2ZTJBgA== - dependencies: - "@babel/highlight" "^7.23.4" - chalk "^2.4.2" - -"@babel/code-frame@^7.22.5": +"@babel/code-frame@^7.0.0", "@babel/code-frame@^7.10.4", "@babel/code-frame@^7.12.13", "@babel/code-frame@^7.16.0", "@babel/code-frame@^7.16.7", "@babel/code-frame@^7.22.13", "@babel/code-frame@^7.22.5", "@babel/code-frame@^7.23.5", "@babel/code-frame@^7.25.9", "@babel/code-frame@^7.8.3": version "7.26.2" resolved "https://registry.yarnpkg.com/@babel/code-frame/-/code-frame-7.26.2.tgz#4b5fab97d33338eff916235055f0ebc21e573a85" integrity sha512-RJlIHRueQgwWitWgF8OdFYGZX328Ax5BCemNGlqHfplnRT9ESi8JkFlvaVYbS+UubVY6dpv87Fs2u5M29iNFVQ== @@ -66,28 +50,7 @@ resolved "https://registry.yarnpkg.com/@babel/compat-data/-/compat-data-7.25.9.tgz#24b01c5db6a3ebf85661b4fb4a946a9bccc72ac8" integrity sha512-yD+hEuJ/+wAJ4Ox2/rpNv5HIuPG82x3ZlQvYVn8iYCprdxzE7P1udpGF1jyjQVBU4dgznN+k2h103vxZ7NdPyw== -"@babel/core@^7.1.0", "@babel/core@^7.11.1", "@babel/core@^7.12.3", "@babel/core@^7.6.2", "@babel/core@^7.7.2", "@babel/core@^7.8.0": - version "7.22.5" - resolved "https://registry.yarnpkg.com/@babel/core/-/core-7.22.5.tgz#d67d9747ecf26ee7ecd3ebae1ee22225fe902a89" - integrity sha512-SBuTAjg91A3eKOvD+bPEz3LlhHZRNu1nFOVts9lzDJTXshHTjII0BAtDS3Y2DAkdZdDKWVZGVwkDfc4Clxn1dg== - dependencies: - "@ampproject/remapping" "^2.2.0" - "@babel/code-frame" "^7.22.5" - "@babel/generator" "^7.22.5" - "@babel/helper-compilation-targets" "^7.22.5" - "@babel/helper-module-transforms" "^7.22.5" - "@babel/helpers" "^7.22.5" - "@babel/parser" "^7.22.5" - "@babel/template" "^7.22.5" - "@babel/traverse" "^7.22.5" - "@babel/types" "^7.22.5" - convert-source-map "^1.7.0" - debug "^4.1.0" - gensync "^1.0.0-beta.2" - json5 "^2.2.2" - semver "^6.3.0" - -"@babel/core@^7.16.0", "@babel/core@^7.18.9": +"@babel/core@^7.1.0", "@babel/core@^7.11.1", "@babel/core@^7.12.3", "@babel/core@^7.16.0", "@babel/core@^7.18.9", "@babel/core@^7.6.2", "@babel/core@^7.7.2", "@babel/core@^7.8.0": version "7.25.9" resolved "https://registry.yarnpkg.com/@babel/core/-/core-7.25.9.tgz#855a4cddcec4158f3f7afadacdab2a7de8af7434" integrity sha512-WYvQviPw+Qyib0v92AwNIrdLISTp7RfDkM7bPqBvpbnhY4wq8HvHBZREVdYDXk98C8BkOIVnHAY3yvj7AVISxQ== @@ -117,7 +80,7 @@ eslint-visitor-keys "^2.1.0" semver "^6.3.1" -"@babel/generator@^7.22.5": +"@babel/generator@^7.22.5", "@babel/generator@^7.23.6", "@babel/generator@^7.25.9", "@babel/generator@^7.4.0", "@babel/generator@^7.7.2": version "7.26.2" resolved "https://registry.yarnpkg.com/@babel/generator/-/generator-7.26.2.tgz#87b75813bec87916210e5e01939a4c823d6bb74f" integrity sha512-zevQbhbau95nkoxSq3f/DC/SC+EEOUZd3DYqfSkMhY2/wfSeaHV1Ew4vk8e+x8lja31IbyuUa2uQ3JONqKbysw== @@ -128,26 +91,6 @@ "@jridgewell/trace-mapping" "^0.3.25" jsesc "^3.0.2" -"@babel/generator@^7.23.6": - version "7.23.6" - resolved "https://registry.yarnpkg.com/@babel/generator/-/generator-7.23.6.tgz#9e1fca4811c77a10580d17d26b57b036133f3c2e" - integrity sha512-qrSfCYxYQB5owCmGLbl8XRpX1ytXlpueOb0N0UmQwA073KZxejgQTzAmJezxvpwQD9uGtK2shHdi55QT+MbjIw== - dependencies: - "@babel/types" "^7.23.6" - "@jridgewell/gen-mapping" "^0.3.2" - "@jridgewell/trace-mapping" "^0.3.17" - jsesc "^2.5.1" - -"@babel/generator@^7.25.9", "@babel/generator@^7.4.0", "@babel/generator@^7.7.2": - version "7.25.9" - resolved "https://registry.yarnpkg.com/@babel/generator/-/generator-7.25.9.tgz#c7e828ebe0c2baba103b712924699c9e8a6e32f0" - integrity sha512-omlUGkr5EaoIJrhLf9CJ0TvjBRpd9+AXRG//0GEQ9THSo8wPiTlbpy1/Ow8ZTrbXpjd9FHXfbFQx32I04ht0FA== - dependencies: - "@babel/types" "^7.25.9" - "@jridgewell/gen-mapping" "^0.3.5" - "@jridgewell/trace-mapping" "^0.3.25" - jsesc "^3.0.2" - "@babel/helper-annotate-as-pure@^7.25.9": version "7.25.9" resolved "https://registry.yarnpkg.com/@babel/helper-annotate-as-pure/-/helper-annotate-as-pure-7.25.9.tgz#d8eac4d2dc0d7b6e11fa6e535332e0d3184f06b4" @@ -243,7 +186,7 @@ "@babel/traverse" "^7.25.9" "@babel/types" "^7.25.9" -"@babel/helper-module-transforms@^7.22.5": +"@babel/helper-module-transforms@^7.22.5", "@babel/helper-module-transforms@^7.25.9": version "7.26.0" resolved "https://registry.yarnpkg.com/@babel/helper-module-transforms/-/helper-module-transforms-7.26.0.tgz#8ce54ec9d592695e58d84cd884b7b5c6a2fdeeae" integrity sha512-xO+xu6B5K2czEnQye6BHA7DolFFmS3LB7stHZFaOLb1pAwO1HWLS8fXA+eh0A2yIvltPVmx3eNNDBJA2SLHXFw== @@ -252,16 +195,6 @@ "@babel/helper-validator-identifier" "^7.25.9" "@babel/traverse" "^7.25.9" -"@babel/helper-module-transforms@^7.25.9": - version "7.25.9" - resolved "https://registry.yarnpkg.com/@babel/helper-module-transforms/-/helper-module-transforms-7.25.9.tgz#12e4fb2969197ef6d78ea8a2f24375ce85b425fb" - integrity sha512-TvLZY/F3+GvdRYFZFyxMvnsKi+4oJdgZzU3BoGN9Uc2d9C6zfNwJcKKhjqLAhK8i46mv93jsO74fDh3ih6rpHA== - dependencies: - "@babel/helper-module-imports" "^7.25.9" - "@babel/helper-simple-access" "^7.25.9" - "@babel/helper-validator-identifier" "^7.25.9" - "@babel/traverse" "^7.25.9" - "@babel/helper-optimise-call-expression@^7.25.9": version "7.25.9" resolved "https://registry.yarnpkg.com/@babel/helper-optimise-call-expression/-/helper-optimise-call-expression-7.25.9.tgz#3324ae50bae7e2ab3c33f60c9a877b6a0146b54e" @@ -315,27 +248,12 @@ dependencies: "@babel/types" "^7.22.5" -"@babel/helper-string-parser@^7.23.4": - version "7.23.4" - resolved "https://registry.yarnpkg.com/@babel/helper-string-parser/-/helper-string-parser-7.23.4.tgz#9478c707febcbbe1ddb38a3d91a2e054ae622d83" - integrity sha512-803gmbQdqwdf4olxrX4AJyFBV/RTr3rSmOj0rKwesmzlfhYNDEs+/iOcznzpNWlJlIlTJC2QfPFcHB6DlzdVLQ== - -"@babel/helper-string-parser@^7.25.9": +"@babel/helper-string-parser@^7.23.4", "@babel/helper-string-parser@^7.25.9": version "7.25.9" resolved "https://registry.yarnpkg.com/@babel/helper-string-parser/-/helper-string-parser-7.25.9.tgz#1aabb72ee72ed35789b4bbcad3ca2862ce614e8c" integrity sha512-4A/SCr/2KLd5jrtOMFzaKjVtAei3+2r/NChoBNoZ3EyP/+GlhoaEGoWOZUmFmoITP7zOJyHIMm+DYRd8o3PvHA== -"@babel/helper-validator-identifier@^7.14.9", "@babel/helper-validator-identifier@^7.22.5": - version "7.22.5" - resolved "https://registry.yarnpkg.com/@babel/helper-validator-identifier/-/helper-validator-identifier-7.22.5.tgz#9544ef6a33999343c8740fa51350f30eeaaaf193" - integrity sha512-aJXu+6lErq8ltp+JhkJUfk1MTGyuA4v7f3pA+BJ5HLfNC6nAQ0Cpi9uOquUj8Hehg0aUiHzWQbOVJGao6ztBAQ== - -"@babel/helper-validator-identifier@^7.22.20": - version "7.22.20" - resolved "https://registry.yarnpkg.com/@babel/helper-validator-identifier/-/helper-validator-identifier-7.22.20.tgz#c4ae002c61d2879e724581d96665583dbc1dc0e0" - integrity sha512-Y4OZ+ytlatR8AI+8KZfKuL5urKp7qey08ha31L8b3BwewJAoJamTzyvxPR/5D+KkdJCGPq/+8TukHBlY10FX9A== - -"@babel/helper-validator-identifier@^7.25.9": +"@babel/helper-validator-identifier@^7.14.9", "@babel/helper-validator-identifier@^7.22.20", "@babel/helper-validator-identifier@^7.22.5", "@babel/helper-validator-identifier@^7.25.9": version "7.25.9" resolved "https://registry.yarnpkg.com/@babel/helper-validator-identifier/-/helper-validator-identifier-7.25.9.tgz#24b64e2c3ec7cd3b3c547729b8d16871f22cbdc7" integrity sha512-Ed61U6XJc3CVRfkERJWDz4dJwKe7iLmmJsbOGu9wSloNSFttHV0I8g6UAgb7qnK5ly5bGLPd4oXZlxCdANBOWQ== @@ -354,7 +272,7 @@ "@babel/traverse" "^7.25.9" "@babel/types" "^7.25.9" -"@babel/helpers@^7.22.5": +"@babel/helpers@^7.22.5", "@babel/helpers@^7.25.9": version "7.26.0" resolved "https://registry.yarnpkg.com/@babel/helpers/-/helpers-7.26.0.tgz#30e621f1eba5aa45fe6f4868d2e9154d884119a4" integrity sha512-tbhNuIxNcVb21pInl3ZSjksLCvgdZy9KwJ8brv993QtIVKJBBkYXz4q4ZbAv31GdnC+R90np23L5FbEBlthAEw== @@ -362,33 +280,7 @@ "@babel/template" "^7.25.9" "@babel/types" "^7.26.0" -"@babel/helpers@^7.25.9": - version "7.25.9" - resolved "https://registry.yarnpkg.com/@babel/helpers/-/helpers-7.25.9.tgz#9e26aa6fbefdbca4f8c8a1d66dc6f1c00ddadb0a" - integrity sha512-oKWp3+usOJSzDZOucZUAMayhPz/xVjzymyDzUN8dk0Wd3RWMlGLXi07UCQ/CgQVb8LvXx3XBajJH4XGgkt7H7g== - dependencies: - "@babel/template" "^7.25.9" - "@babel/types" "^7.25.9" - -"@babel/highlight@^7.10.4": - version "7.22.5" - resolved "https://registry.yarnpkg.com/@babel/highlight/-/highlight-7.22.5.tgz#aa6c05c5407a67ebce408162b7ede789b4d22031" - integrity sha512-BSKlD1hgnedS5XRnGOljZawtag7H1yPfQp0tdNJCHoH6AZ+Pcm9VvkrK59/Yy593Ypg0zMxH2BxD1VPYUQ7UIw== - dependencies: - "@babel/helper-validator-identifier" "^7.22.5" - chalk "^2.0.0" - js-tokens "^4.0.0" - -"@babel/highlight@^7.23.4": - version "7.23.4" - resolved "https://registry.yarnpkg.com/@babel/highlight/-/highlight-7.23.4.tgz#edaadf4d8232e1a961432db785091207ead0621b" - integrity sha512-acGdbYSfp2WheJoJm/EBBBLh/ID8KDc64ISZ9DYtBmC8/Q204PZJLHyzeB5qMzJ5trcOkybd78M4x2KWsUq++A== - dependencies: - "@babel/helper-validator-identifier" "^7.22.20" - chalk "^2.4.2" - js-tokens "^4.0.0" - -"@babel/highlight@^7.25.9": +"@babel/highlight@^7.10.4", "@babel/highlight@^7.23.4", "@babel/highlight@^7.25.9": version "7.25.9" resolved "https://registry.yarnpkg.com/@babel/highlight/-/highlight-7.25.9.tgz#8141ce68fc73757946f983b343f1231f4691acc6" integrity sha512-llL88JShoCsth8fF8R4SJnIn+WLvR6ccFxu1H3FlMhDontdcmZWf2HgIZ7AIqV3Xcck1idlohrN4EUBQz6klbw== @@ -398,24 +290,7 @@ js-tokens "^4.0.0" picocolors "^1.0.0" -"@babel/parser@^7.1.0", "@babel/parser@^7.14.7", "@babel/parser@^7.22.5", "@babel/parser@^7.4.3", "@babel/parser@^7.7.0": - version "7.22.5" - resolved "https://registry.yarnpkg.com/@babel/parser/-/parser-7.22.5.tgz#721fd042f3ce1896238cf1b341c77eb7dee7dbea" - integrity sha512-DFZMC9LJUG9PLOclRC32G63UXwzqS2koQC8dkx+PLdmt1xSePYpbT/NbsrJy8Q/muXz7o/h/d4A7Fuyixm559Q== - -"@babel/parser@^7.20.7", "@babel/parser@^7.25.9": - version "7.25.9" - resolved "https://registry.yarnpkg.com/@babel/parser/-/parser-7.25.9.tgz#8fcaa079ac7458facfddc5cd705cc8005e4d3817" - integrity sha512-aI3jjAAO1fh7vY/pBGsn1i9LDbRP43+asrRlkPuTXW5yHXtd1NgTEMudbBoDDxrf1daEEfPJqR+JBMakzrR4Dg== - dependencies: - "@babel/types" "^7.25.9" - -"@babel/parser@^7.22.15", "@babel/parser@^7.23.6": - version "7.23.6" - resolved "https://registry.yarnpkg.com/@babel/parser/-/parser-7.23.6.tgz#ba1c9e512bda72a47e285ae42aff9d2a635a9e3b" - integrity sha512-Z2uID7YJ7oNvAI20O9X0bblw7Qqs8Q2hFy0R9tAfnfLkp5MW0UH9eUvnDSnFwKZ0AvgS1ucqR4KzvVHgnke1VQ== - -"@babel/parser@^7.26.2": +"@babel/parser@^7.1.0", "@babel/parser@^7.14.7", "@babel/parser@^7.20.7", "@babel/parser@^7.22.15", "@babel/parser@^7.22.5", "@babel/parser@^7.23.6", "@babel/parser@^7.25.9", "@babel/parser@^7.26.2", "@babel/parser@^7.4.3", "@babel/parser@^7.7.0": version "7.26.2" resolved "https://registry.yarnpkg.com/@babel/parser/-/parser-7.26.2.tgz#fd7b6f487cfea09889557ef5d4eeb9ff9a5abd11" integrity sha512-DWMCZH9WA4Maitz2q21SRKHo9QXZxkDsbNZoVD62gusNtNBBqDg9i7uOhASfTfIGNzW+O+r7+jAlM8dwphcJKQ== @@ -1237,16 +1112,7 @@ dependencies: regenerator-runtime "^0.14.0" -"@babel/template@^7.22.15": - version "7.22.15" - resolved "https://registry.yarnpkg.com/@babel/template/-/template-7.22.15.tgz#09576efc3830f0430f4548ef971dde1350ef2f38" - integrity sha512-QPErUVm4uyJa60rkI73qneDacvdvzxshT3kksGqlGWYdOTIUOwJ7RDUL8sGqslY1uXWSL6xMFKEXDS3ox2uF0w== - dependencies: - "@babel/code-frame" "^7.22.13" - "@babel/parser" "^7.22.15" - "@babel/types" "^7.22.15" - -"@babel/template@^7.22.5", "@babel/template@^7.25.9": +"@babel/template@^7.22.15", "@babel/template@^7.22.5", "@babel/template@^7.25.9", "@babel/template@^7.3.3", "@babel/template@^7.4.0": version "7.25.9" resolved "https://registry.yarnpkg.com/@babel/template/-/template-7.25.9.tgz#ecb62d81a8a6f5dc5fe8abfc3901fc52ddf15016" integrity sha512-9DGttpmPvIxBb/2uwpVo3dqJ+O6RooAFOS+lB+xDqoE2PVCE8nfoHMdZLpfCQRLwvohzXISPZcgxt80xLfsuwg== @@ -1255,16 +1121,7 @@ "@babel/parser" "^7.25.9" "@babel/types" "^7.25.9" -"@babel/template@^7.3.3", "@babel/template@^7.4.0": - version "7.22.5" - resolved "https://registry.yarnpkg.com/@babel/template/-/template-7.22.5.tgz#0c8c4d944509875849bd0344ff0050756eefc6ec" - integrity sha512-X7yV7eiwAxdj9k94NEylvbVHLiVG1nvzCV2EAowhxLTwODV1jl9UzZ48leOC0sH7OnuHrIkllaBgneUykIcZaw== - dependencies: - "@babel/code-frame" "^7.22.5" - "@babel/parser" "^7.22.5" - "@babel/types" "^7.22.5" - -"@babel/traverse@^7.18.9", "@babel/traverse@^7.22.5", "@babel/traverse@^7.25.9": +"@babel/traverse@^7.18.9", "@babel/traverse@^7.22.5", "@babel/traverse@^7.25.9", "@babel/traverse@^7.4.3", "@babel/traverse@^7.7.0", "@babel/traverse@^7.7.2": version "7.25.9" resolved "https://registry.yarnpkg.com/@babel/traverse/-/traverse-7.25.9.tgz#a50f8fe49e7f69f53de5bea7e413cd35c5e13c84" integrity sha512-ZCuvfwOwlz/bawvAuvcj8rrithP2/N55Tzz342AkTvq4qaWbGfmCk/tKhNaV2cthijKrPAA8SRJV5WWe7IBMJw== @@ -1277,22 +1134,6 @@ debug "^4.3.1" globals "^11.1.0" -"@babel/traverse@^7.4.3", "@babel/traverse@^7.7.0", "@babel/traverse@^7.7.2": - version "7.23.7" - resolved "https://registry.yarnpkg.com/@babel/traverse/-/traverse-7.23.7.tgz#9a7bf285c928cb99b5ead19c3b1ce5b310c9c305" - integrity sha512-tY3mM8rH9jM0YHFGyfC0/xf+SB5eKUu7HPj7/k3fpi9dAlsMc5YbQvDi0Sh2QTPXqMhyaAtzAr807TIyfQrmyg== - dependencies: - "@babel/code-frame" "^7.23.5" - "@babel/generator" "^7.23.6" - "@babel/helper-environment-visitor" "^7.22.20" - "@babel/helper-function-name" "^7.23.0" - "@babel/helper-hoist-variables" "^7.22.5" - "@babel/helper-split-export-declaration" "^7.22.6" - "@babel/parser" "^7.23.6" - "@babel/types" "^7.23.6" - debug "^4.3.1" - globals "^11.1.0" - "@babel/types@7.15.0": version "7.15.0" resolved "https://registry.yarnpkg.com/@babel/types/-/types-7.15.0.tgz#61af11f2286c4e9c69ca8deb5f4375a73c72dcbd" @@ -1301,24 +1142,7 @@ "@babel/helper-validator-identifier" "^7.14.9" to-fast-properties "^2.0.0" -"@babel/types@^7.0.0", "@babel/types@^7.12.6", "@babel/types@^7.18.9", "@babel/types@^7.20.7", "@babel/types@^7.25.9", "@babel/types@^7.3.3", "@babel/types@^7.4.0", "@babel/types@^7.4.4", "@babel/types@^7.7.0": - version "7.25.9" - resolved "https://registry.yarnpkg.com/@babel/types/-/types-7.25.9.tgz#620f35ea1f4233df529ec9a2668d2db26574deee" - integrity sha512-OwS2CM5KocvQ/k7dFJa8i5bNGJP0hXWfVCfDkqRFP1IreH1JDC7wG6eCYCi0+McbfT8OR/kNqsI0UU0xP9H6PQ== - dependencies: - "@babel/helper-string-parser" "^7.25.9" - "@babel/helper-validator-identifier" "^7.25.9" - -"@babel/types@^7.22.15", "@babel/types@^7.23.0", "@babel/types@^7.23.6": - version "7.23.6" - resolved "https://registry.yarnpkg.com/@babel/types/-/types-7.23.6.tgz#be33fdb151e1f5a56877d704492c240fc71c7ccd" - integrity sha512-+uarb83brBzPKN38NX1MkB6vb6+mwvR6amUulqAE7ccQw1pEl+bCia9TbdG1lsnFP7lZySvUn37CHyXQdfTwzg== - dependencies: - "@babel/helper-string-parser" "^7.23.4" - "@babel/helper-validator-identifier" "^7.22.20" - to-fast-properties "^2.0.0" - -"@babel/types@^7.22.5", "@babel/types@^7.26.0": +"@babel/types@^7.0.0", "@babel/types@^7.12.6", "@babel/types@^7.18.9", "@babel/types@^7.20.7", "@babel/types@^7.22.15", "@babel/types@^7.22.5", "@babel/types@^7.23.0", "@babel/types@^7.23.6", "@babel/types@^7.25.9", "@babel/types@^7.26.0", "@babel/types@^7.3.3", "@babel/types@^7.4.0", "@babel/types@^7.4.4", "@babel/types@^7.7.0": version "7.26.0" resolved "https://registry.yarnpkg.com/@babel/types/-/types-7.26.0.tgz#deabd08d6b753bc8e0f198f8709fb575e31774ff" integrity sha512-Z/yiTPj+lDVnF7lWeKCIJzaIkI0vYO87dMpZ4bg4TDrFe4XXLFWL1TbXU27gBP3QccxV9mZICCrnjnYlJjXHOA== @@ -5224,17 +5048,7 @@ browser-process-hrtime@^1.0.0: resolved "https://registry.yarnpkg.com/browser-process-hrtime/-/browser-process-hrtime-1.0.0.tgz#3c9b4b7d782c8121e56f10106d84c0d0ffc94626" integrity sha512-9o5UecI3GhkpM6DrXr69PblIuWxPKk9Y0jHBRhdocZ2y7YECBFCsHm79Pr3OyR2AvjhDkabFJaDJMYRazHgsow== -browserslist@^4.0.0: - version "4.21.9" - resolved "https://registry.yarnpkg.com/browserslist/-/browserslist-4.21.9.tgz#e11bdd3c313d7e2a9e87e8b4b0c7872b13897635" - integrity sha512-M0MFoZzbUrRU4KNfCrDLnvyE7gub+peetoTid3TBIqtunaDJyXlwhakT+/VkvSXcfIzFfK/nkCs4nmyTmxdNSg== - dependencies: - caniuse-lite "^1.0.30001503" - electron-to-chromium "^1.4.431" - node-releases "^2.0.12" - update-browserslist-db "^1.0.11" - -browserslist@^4.18.1, browserslist@^4.21.10, browserslist@^4.21.4, browserslist@^4.23.3, browserslist@^4.24.0: +browserslist@^4.0.0, browserslist@^4.18.1, browserslist@^4.21.10, browserslist@^4.21.4, browserslist@^4.23.3, browserslist@^4.24.0: version "4.24.2" resolved "https://registry.yarnpkg.com/browserslist/-/browserslist-4.24.2.tgz#f5845bc91069dbd55ee89faf9822e1d885d16580" integrity sha512-ZIc+Q62revdMcqC6aChtW4jz3My3klmCO1fEmINZY/8J3EpBg5/A/D0AKmBveUh6pgoeycoMkVMko84tuYS+Gg== @@ -5385,17 +5199,7 @@ caniuse-api@^3.0.0: lodash.memoize "^4.1.2" lodash.uniq "^4.5.0" -caniuse-lite@^1.0.0, caniuse-lite@^1.0.30001503: - version "1.0.30001663" - resolved "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001663.tgz" - integrity sha512-o9C3X27GLKbLeTYZ6HBOLU1tsAcBZsLis28wrVzddShCS16RujjHp9GDHKZqrB3meE0YjhawvMFsGb/igqiPzA== - -caniuse-lite@^1.0.30001646: - version "1.0.30001669" - resolved "https://registry.yarnpkg.com/caniuse-lite/-/caniuse-lite-1.0.30001669.tgz#fda8f1d29a8bfdc42de0c170d7f34a9cf19ed7a3" - integrity sha512-DlWzFDJqstqtIVx1zeSpIMLjunf5SmwOw0N2Ck/QSQdS8PLS4+9HrLaYei4w8BIAL7IB/UEDu889d8vhCTPA0w== - -caniuse-lite@^1.0.30001669: +caniuse-lite@^1.0.0, caniuse-lite@^1.0.30001503, caniuse-lite@^1.0.30001646, caniuse-lite@^1.0.30001669: version "1.0.30001678" resolved "https://registry.yarnpkg.com/caniuse-lite/-/caniuse-lite-1.0.30001678.tgz#b930b04cd0b295136405634aa32ad540d7eeb71e" integrity sha512-RR+4U/05gNtps58PEBDZcPWTgEO2MBeoPZ96aQcjmfkBWRIDfN451fW2qyDA9/+HohLLIL5GqiMwA+IB1pWarw== @@ -6363,12 +6167,12 @@ debug@2.6.9, debug@^2.2.0, debug@^2.3.3, debug@^2.6.0: dependencies: ms "2.0.0" -debug@4, debug@^4.0.1, debug@^4.1.0, debug@^4.1.1, debug@^4.3.1: - version "4.3.4" - resolved "https://registry.yarnpkg.com/debug/-/debug-4.3.4.tgz#1319f6579357f2338d3337d2cdd4914bb5dcc865" - integrity sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ== +debug@4, debug@^4.0.1, debug@^4.1.0, debug@^4.1.1, debug@^4.3.1, debug@^4.3.4, debug@^4.3.7: + version "4.3.7" + resolved "https://registry.yarnpkg.com/debug/-/debug-4.3.7.tgz#87945b4151a011d76d95a198d7111c865c360a52" + integrity sha512-Er2nc/H7RrMXZBFCEim6TCmMk02Z8vLC2Rbi1KEBggpo0fS6l0S1nnapwmIi3yW/+GOJap1Krg4w0Hg80oCqgQ== dependencies: - ms "2.1.2" + ms "^2.1.3" debug@^3.2.7: version "3.2.7" @@ -6377,13 +6181,6 @@ debug@^3.2.7: dependencies: ms "^2.1.1" -debug@^4.3.4, debug@^4.3.7: - version "4.3.7" - resolved "https://registry.yarnpkg.com/debug/-/debug-4.3.7.tgz#87945b4151a011d76d95a198d7111c865c360a52" - integrity sha512-Er2nc/H7RrMXZBFCEim6TCmMk02Z8vLC2Rbi1KEBggpo0fS6l0S1nnapwmIi3yW/+GOJap1Krg4w0Hg80oCqgQ== - dependencies: - ms "^2.1.3" - decamelize-keys@^1.1.0: version "1.1.0" resolved "https://registry.yarnpkg.com/decamelize-keys/-/decamelize-keys-1.1.0.tgz#d171a87933252807eb3cb61dc1c1445d078df2d9" @@ -7154,12 +6951,7 @@ esbuild-register@^3.5.0: "@esbuild/win32-ia32" "0.23.1" "@esbuild/win32-x64" "0.23.1" -escalade@^3.1.1: - version "3.1.1" - resolved "https://registry.yarnpkg.com/escalade/-/escalade-3.1.1.tgz#d8cfdc7000965c5a0174b4a82eaa5c0552742e40" - integrity sha512-k0er2gUkLf8O0zKJiAhmkTnJlTvINGv7ygDNPbeIsX/TJjGJZHuh9B2UxbsaEkmlEo9MfhrSzmhIlhRlI2GXnw== - -escalade@^3.2.0: +escalade@^3.1.1, escalade@^3.2.0: version "3.2.0" resolved "https://registry.yarnpkg.com/escalade/-/escalade-3.2.0.tgz#011a3f69856ba189dffa7dc8fcce99d2a87903e5" integrity sha512-WUj2qlxaQtO4g6Pq5c29GTcWGDyd8itL8zTlipgECz3JesAiiOKotd8JU6otB3PACgG6xkJUyVhboMS+bje/jA== @@ -13696,14 +13488,7 @@ semver@^6.0.0, semver@^6.2.0, semver@^6.3.0, semver@^6.3.1: resolved "https://registry.yarnpkg.com/semver/-/semver-6.3.1.tgz#556d2ef8689146e46dcea4bfdd095f3434dffcb4" integrity sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA== -semver@^7.2.1, semver@^7.3.2, semver@^7.3.5: - version "7.5.4" - resolved "https://registry.yarnpkg.com/semver/-/semver-7.5.4.tgz#483986ec4ed38e1c6c48c34894a9182dbff68a6e" - integrity sha512-1bCSESV6Pv+i21Hvpxp3Dx+pSD8lIPt8uVjRrxAUt/nbswYc+tK6Y2btiULjd4+fnq15PX+nqQDC7Oft7WkwcA== - dependencies: - lru-cache "^6.0.0" - -semver@^7.3.7, semver@^7.5.4, semver@^7.6.2: +semver@^7.2.1, semver@^7.3.2, semver@^7.3.5, semver@^7.3.7, semver@^7.5.4, semver@^7.6.2: version "7.6.3" resolved "https://registry.yarnpkg.com/semver/-/semver-7.6.3.tgz#980f7b5550bc175fb4dc09403085627f9eb33143" integrity sha512-oVekP1cKtI+CTDvHWYFUcMtsK/00wmAEfyqKfNdARm8u1wNVhSgaX7A8d4UuIlUI5e84iEwOhs7ZPYRmzU9U6A==