From 808fe7019acc393869c2f16186fb6f0c1fe62b0d Mon Sep 17 00:00:00 2001 From: Rodri Sanchez Date: Wed, 7 Jun 2023 22:41:24 -0300 Subject: [PATCH 01/23] Add ga4mp package --- package.json | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/package.json b/package.json index 9c35f8bcd..b5d5ec0d8 100644 --- a/package.json +++ b/package.json @@ -13,10 +13,11 @@ "tts", "text-to-speech" ], - "homepage": "https://app.cboard.io", + "homepage": ".", "private": false, "license": "GPL-3.0-only", "dependencies": { + "@analytics-debugger/ga4mp": "git+https://github.com/RodriSanchez1/ga4mp#fix/fullVersionList", "@cospired/i18n-iso-languages": "^2.2.0", "@crowdin/crowdin-api-client": "^1.22.0", "@ctrl/react-adsense": "^1.5.0", From cab7bfeb271e1771622a242130020c2d7ed867fa Mon Sep 17 00:00:00 2001 From: Rodri Sanchez Date: Wed, 7 Jun 2023 22:55:27 -0300 Subject: [PATCH 02/23] Add GA4_MEASUREMENT_ID to constants --- src/constants.js | 3 +++ 1 file changed, 3 insertions(+) diff --git a/src/constants.js b/src/constants.js index 607b67d4f..e3e695d70 100644 --- a/src/constants.js +++ b/src/constants.js @@ -53,3 +53,6 @@ export const PAYPAL_CLIENT_ID = HOSTNAME === 'app.cboard.io' && NODE_ENV === 'production' ? 'AVQiWeMc55uBVqvgXY2yifS6v9Pt2jYxtJhA3JV0UEhLiV4Mf5W9Hanxoix8542FYACVizlyU8M0yO0S' : 'AZ2vK0luRWMX9zzwLs-Ko_B_TJxeHYvIFCgXWcNBt50wmj7oZcUw8n4cf11GgdClTVnYMuEs5vRnxVEk'; + +// Google Analytics related constants +export const GA4_MEASUREMENT_ID = 'G-60S79265FY'; From c5a15db537239d942ae31416d9fa5ffa561840f0 Mon Sep 17 00:00:00 2001 From: Rodri Sanchez Date: Wed, 7 Jun 2023 22:56:09 -0300 Subject: [PATCH 03/23] Create ga4mp file for track events --- src/ga4mp.js | 11 +++++++++++ 1 file changed, 11 insertions(+) create mode 100644 src/ga4mp.js diff --git a/src/ga4mp.js b/src/ga4mp.js new file mode 100644 index 000000000..73063971e --- /dev/null +++ b/src/ga4mp.js @@ -0,0 +1,11 @@ +import ga4mp from '@analytics-debugger/ga4mp'; +import { GA4_MEASUREMENT_ID } from './constants'; + +const ga4track = ga4mp([GA4_MEASUREMENT_ID], { + non_personalized_ads: true, + debug: true, + user_agent: + 'Mozilla/5.0 (compatible; Googlebot/2.1; +http://www.google.com/bot.html)' +}); + +export default ga4track; From ecec8967fd493228c7e4d635527bc589d3c35396 Mon Sep 17 00:00:00 2001 From: Rodri Sanchez Date: Wed, 7 Jun 2023 23:09:32 -0300 Subject: [PATCH 04/23] Initialize ga4track with first page view event --- src/components/App/App.container.js | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/src/components/App/App.container.js b/src/components/App/App.container.js index 0330dd8e3..c873b9752 100644 --- a/src/components/App/App.container.js +++ b/src/components/App/App.container.js @@ -15,6 +15,10 @@ import { updateLoggedUserLocation, updateUnloggedUserLocation } from '../App/App.actions'; + +import { isElectron } from '../../cordova-util'; +import ga4track from '../../ga4mp'; + export class AppContainer extends Component { static propTypes = { /** @@ -64,6 +68,10 @@ export class AppContainer extends Component { ); localizeUser(); + + if (isElectron()) { + ga4track.trackEvent('page_view'); + } } handleNewContentAvailable = () => { From 849ffbdbe197c5fbefa8d951c23ac8c2ba4275fe Mon Sep 17 00:00:00 2001 From: Rodri Sanchez Date: Wed, 7 Jun 2023 23:21:06 -0300 Subject: [PATCH 05/23] Diferentiate cordova platforms for track events --- src/components/Board/Board.analytics.js | 38 +++++++++++++++---- .../SpeechProvider.analytics.js | 23 ++++++++--- 2 files changed, 48 insertions(+), 13 deletions(-) diff --git a/src/components/Board/Board.analytics.js b/src/components/Board/Board.analytics.js index 2efb3e871..7a6789a10 100644 --- a/src/components/Board/Board.analytics.js +++ b/src/components/Board/Board.analytics.js @@ -1,4 +1,10 @@ import { trackEvent } from '@redux-beacon/google-analytics-gtag'; +import { + cvaTrackEvent, + isElectron, + isAndroid, + isIOS +} from '../../cordova-util'; import { isCordova, cvaTrackEvent } from '../../cordova-util'; import { @@ -26,9 +32,11 @@ const importBoards = trackEvent((action, prevState, nextState) => { category: 'Backup', action: 'Import Boards' }; - if (isCordova()) { + if (isAndroid() || isIOS()) { cvaTrackEvent(gaEvent.category, gaEvent.action); } + if (isElectron()) { + } return gaEvent; }); @@ -45,9 +53,11 @@ const changeBoard = trackEvent((action, prevState, nextState) => { action: 'Change Board', label: boardName }; - if (isCordova()) { + if (isAndroid() || isIOS()) { cvaTrackEvent(gaEvent.category, gaEvent.action, gaEvent.label); } + if (isElectron()) { + } return gaEvent; }); @@ -57,9 +67,11 @@ const createBoard = trackEvent((action, prevState, nextState) => { action: 'Create Board', label: action.boardName }; - if (isCordova()) { + if (isAndroid() || isIOS()) { cvaTrackEvent(gaEvent.category, gaEvent.action, gaEvent.label); } + if (isElectron()) { + } return gaEvent; }); @@ -69,9 +81,11 @@ const createTile = trackEvent((action, prevState, nextState) => { action: 'Create Tile', label: action.tile.label }; - if (isCordova()) { + if (isAndroid() || isIOS()) { cvaTrackEvent(gaEvent.category, gaEvent.action, gaEvent.label); } + if (isElectron()) { + } return gaEvent; }); @@ -86,9 +100,11 @@ const deleteTiles = trackEvent((action, prevState, nextState) => { action: 'Delete Tiles', label: deletedTiles }; - if (isCordova()) { + if (isAndroid() || isIOS()) { cvaTrackEvent(gaEvent.category, gaEvent.action, gaEvent.label); } + if (isElectron()) { + } return gaEvent; }); @@ -102,9 +118,11 @@ const editTiles = trackEvent((action, prevState, nextState) => { action: 'Edit Tiles', label: editedTiles }; - if (isCordova()) { + if (isAndroid() || isIOS()) { cvaTrackEvent(gaEvent.category, gaEvent.action, gaEvent.label); } + if (isElectron()) { + } return gaEvent; }); @@ -114,9 +132,11 @@ const clickSymbol = trackEvent((action, prevState, nextState) => { action: 'Click Symbol', label: action.symbolLabel }; - if (isCordova()) { + if (isAndroid() || isIOS()) { cvaTrackEvent(gaEvent.category, gaEvent.action, gaEvent.label); } + if (isElectron()) { + } return gaEvent; }); @@ -126,9 +146,11 @@ const clickOutput = trackEvent((action, prevState, nextState) => { action: 'Click Output', label: action.outputPhrase }; - if (isCordova()) { + if (isAndroid() || isIOS()) { cvaTrackEvent(gaEvent.category, gaEvent.action, gaEvent.label); } + if (isElectron()) { + } return gaEvent; }); diff --git a/src/providers/SpeechProvider/SpeechProvider.analytics.js b/src/providers/SpeechProvider/SpeechProvider.analytics.js index c8a5c1c11..b0b3174f1 100644 --- a/src/providers/SpeechProvider/SpeechProvider.analytics.js +++ b/src/providers/SpeechProvider/SpeechProvider.analytics.js @@ -7,7 +7,12 @@ import { START_SPEECH, EMPTY_VOICES } from './SpeechProvider.constants'; -import { isCordova, cvaTrackEvent } from '../../cordova-util'; +import { + cvaTrackEvent, + isElectron, + isAndroid, + isIOS +} from '../../cordova-util'; const changeVoice = trackEvent((action, prevState, nextState) => { const gaEvent = { @@ -15,9 +20,11 @@ const changeVoice = trackEvent((action, prevState, nextState) => { action: 'Changed Voice', label: action ? action.voiceURI : EMPTY_VOICES }; - if (isCordova()) { + if (isAndroid() || isIOS()) { cvaTrackEvent(gaEvent.category, gaEvent.action, gaEvent.label); } + if (isElectron()) { + } return gaEvent; }); @@ -27,9 +34,11 @@ const changePitch = trackEvent((action, prevState, nextState) => { action: 'Changed Pitch', label: action.pitch }; - if (isCordova()) { + if (isAndroid() || isIOS()) { cvaTrackEvent(gaEvent.category, gaEvent.action, gaEvent.label); } + if (isElectron()) { + } return gaEvent; }); @@ -39,9 +48,11 @@ const changeRate = trackEvent((action, prevState, nextState) => { action: 'Changed Rate', label: action.rate }; - if (isCordova()) { + if (isAndroid() || isIOS()) { cvaTrackEvent(gaEvent.category, gaEvent.action, gaEvent.label); } + if (isElectron()) { + } return gaEvent; }); @@ -51,9 +62,11 @@ const startSpeech = trackEvent((action, prevState, nextState) => { action: 'Start Speech', label: action.text }; - if (isCordova()) { + if (isAndroid() || isIOS()) { cvaTrackEvent(gaEvent.category, gaEvent.action, gaEvent.label); } + if (isElectron()) { + } return gaEvent; }); From 3faa6fe634d5e051182b2b9b05039bebbaa05ef8 Mon Sep 17 00:00:00 2001 From: Rodri Sanchez Date: Thu, 8 Jun 2023 16:01:42 -0300 Subject: [PATCH 06/23] Init Ga4mp on electronc devices --- src/components/App/App.container.js | 18 +++++++++++++++--- 1 file changed, 15 insertions(+), 3 deletions(-) diff --git a/src/components/App/App.container.js b/src/components/App/App.container.js index c873b9752..cfbd47449 100644 --- a/src/components/App/App.container.js +++ b/src/components/App/App.container.js @@ -41,7 +41,11 @@ export class AppContainer extends Component { * App language */ lang: PropTypes.string.isRequired, - displaySettings: PropTypes.object.isRequired + displaySettings: PropTypes.object.isRequired, + /** + * User Id + */ + userId: PropTypes.string }; componentDidMount() { @@ -62,6 +66,13 @@ export class AppContainer extends Component { } }; + const initGa4mp = () => { + const { isLogged, userId } = this.props; + + if (isLogged) ga4track.setUserId(userId); + ga4track.trackEvent('page_view'); + }; + registerServiceWorker( this.handleNewContentAvailable, this.handleContentCached @@ -70,7 +81,7 @@ export class AppContainer extends Component { localizeUser(); if (isElectron()) { - ga4track.trackEvent('page_view'); + initGa4mp(); } } @@ -127,7 +138,8 @@ const mapStateToProps = state => ({ isLogged: isLogged(state), lang: state.language.lang, displaySettings: state.app.displaySettings, - isDownloadingLang: state.language.downloadingLang.isdownloading + isDownloadingLang: state.language.downloadingLang.isdownloading, + userId: state.app.userData.id }); const mapDispatchToProps = { From 376c502bc74dd77d639c625ca2f496d625df0e6d Mon Sep 17 00:00:00 2001 From: Rodri Sanchez Date: Thu, 8 Jun 2023 16:02:44 -0300 Subject: [PATCH 07/23] Add ga4mp trackEvent on Board analytics --- src/components/Board/Board.analytics.js | 34 +++++++++++++++++++++++-- 1 file changed, 32 insertions(+), 2 deletions(-) diff --git a/src/components/Board/Board.analytics.js b/src/components/Board/Board.analytics.js index 7a6789a10..a85654625 100644 --- a/src/components/Board/Board.analytics.js +++ b/src/components/Board/Board.analytics.js @@ -5,8 +5,7 @@ import { isAndroid, isIOS } from '../../cordova-util'; -import { isCordova, cvaTrackEvent } from '../../cordova-util'; - +import ga4track from '../../ga4mp'; import { IMPORT_BOARDS, CREATE_BOARD, @@ -36,6 +35,9 @@ const importBoards = trackEvent((action, prevState, nextState) => { cvaTrackEvent(gaEvent.category, gaEvent.action); } if (isElectron()) { + ga4track.trackEvent(gaEvent.action, { + event_category: gaEvent.category + }); } return gaEvent; }); @@ -57,6 +59,10 @@ const changeBoard = trackEvent((action, prevState, nextState) => { cvaTrackEvent(gaEvent.category, gaEvent.action, gaEvent.label); } if (isElectron()) { + ga4track.trackEvent(gaEvent.action, { + event_category: gaEvent.category, + event_label: gaEvent.label + }); } return gaEvent; }); @@ -71,6 +77,10 @@ const createBoard = trackEvent((action, prevState, nextState) => { cvaTrackEvent(gaEvent.category, gaEvent.action, gaEvent.label); } if (isElectron()) { + ga4track.trackEvent(gaEvent.action, { + event_category: gaEvent.category, + event_label: gaEvent.label + }); } return gaEvent; }); @@ -85,6 +95,10 @@ const createTile = trackEvent((action, prevState, nextState) => { cvaTrackEvent(gaEvent.category, gaEvent.action, gaEvent.label); } if (isElectron()) { + ga4track.trackEvent(gaEvent.action, { + event_category: gaEvent.category, + event_label: gaEvent.label + }); } return gaEvent; }); @@ -104,6 +118,10 @@ const deleteTiles = trackEvent((action, prevState, nextState) => { cvaTrackEvent(gaEvent.category, gaEvent.action, gaEvent.label); } if (isElectron()) { + ga4track.trackEvent(gaEvent.action, { + event_category: gaEvent.category, + event_label: gaEvent.label + }); } return gaEvent; }); @@ -122,6 +140,10 @@ const editTiles = trackEvent((action, prevState, nextState) => { cvaTrackEvent(gaEvent.category, gaEvent.action, gaEvent.label); } if (isElectron()) { + ga4track.trackEvent(gaEvent.action, { + event_category: gaEvent.category, + event_label: gaEvent.label + }); } return gaEvent; }); @@ -136,6 +158,10 @@ const clickSymbol = trackEvent((action, prevState, nextState) => { cvaTrackEvent(gaEvent.category, gaEvent.action, gaEvent.label); } if (isElectron()) { + ga4track.trackEvent(gaEvent.action, { + event_category: gaEvent.category, + event_label: gaEvent.label + }); } return gaEvent; }); @@ -150,6 +176,10 @@ const clickOutput = trackEvent((action, prevState, nextState) => { cvaTrackEvent(gaEvent.category, gaEvent.action, gaEvent.label); } if (isElectron()) { + ga4track.trackEvent(gaEvent.action, { + event_category: gaEvent.category, + event_label: gaEvent.label + }); } return gaEvent; }); From dbf2e78b62479d987961be999f0d0055326af4b4 Mon Sep 17 00:00:00 2001 From: Rodri Sanchez Date: Thu, 8 Jun 2023 16:03:06 -0300 Subject: [PATCH 08/23] Add ga4mp trackEvent on SpeechPro analytics --- .../SpeechProvider/SpeechProvider.analytics.js | 17 +++++++++++++++++ 1 file changed, 17 insertions(+) diff --git a/src/providers/SpeechProvider/SpeechProvider.analytics.js b/src/providers/SpeechProvider/SpeechProvider.analytics.js index b0b3174f1..79fae3efd 100644 --- a/src/providers/SpeechProvider/SpeechProvider.analytics.js +++ b/src/providers/SpeechProvider/SpeechProvider.analytics.js @@ -13,6 +13,7 @@ import { isAndroid, isIOS } from '../../cordova-util'; +import ga4track from '../../ga4mp'; const changeVoice = trackEvent((action, prevState, nextState) => { const gaEvent = { @@ -24,6 +25,10 @@ const changeVoice = trackEvent((action, prevState, nextState) => { cvaTrackEvent(gaEvent.category, gaEvent.action, gaEvent.label); } if (isElectron()) { + ga4track.trackEvent(gaEvent.action, { + event_category: gaEvent.category, + event_label: gaEvent.label + }); } return gaEvent; }); @@ -38,6 +43,10 @@ const changePitch = trackEvent((action, prevState, nextState) => { cvaTrackEvent(gaEvent.category, gaEvent.action, gaEvent.label); } if (isElectron()) { + ga4track.trackEvent(gaEvent.action, { + event_category: gaEvent.category, + event_label: gaEvent.label + }); } return gaEvent; }); @@ -52,6 +61,10 @@ const changeRate = trackEvent((action, prevState, nextState) => { cvaTrackEvent(gaEvent.category, gaEvent.action, gaEvent.label); } if (isElectron()) { + ga4track.trackEvent(gaEvent.action, { + event_category: gaEvent.category, + event_label: gaEvent.label + }); } return gaEvent; }); @@ -66,6 +79,10 @@ const startSpeech = trackEvent((action, prevState, nextState) => { cvaTrackEvent(gaEvent.category, gaEvent.action, gaEvent.label); } if (isElectron()) { + ga4track.trackEvent(gaEvent.action, { + event_category: gaEvent.category, + event_label: gaEvent.label + }); } return gaEvent; }); From 017a39370cfb16b8b70a91e5412a34fc4a2fa475 Mon Sep 17 00:00:00 2001 From: Rodri Sanchez Date: Thu, 8 Jun 2023 16:03:42 -0300 Subject: [PATCH 09/23] Set user Id for ga4mp on login and logout --- src/components/Account/Login/Login.actions.js | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/src/components/Account/Login/Login.actions.js b/src/components/Account/Login/Login.actions.js index a3ea05701..45a70e159 100644 --- a/src/components/Account/Login/Login.actions.js +++ b/src/components/Account/Login/Login.actions.js @@ -13,6 +13,8 @@ import { enableAllTours } from '../../App/App.actions'; import { getVoiceURI } from '../../../i18n'; +import { isElectron } from '../../../cordova-util'; +import ga4track from '../../../ga4mp'; export function loginSuccess(payload) { return dispatch => { @@ -21,6 +23,7 @@ export function loginSuccess(payload) { payload }); if (payload.isFirstLogin) firstLoginActions(dispatch, payload); + if (isElectron()) setUserIdGa4mp(payload.id); }; } @@ -29,7 +32,12 @@ function firstLoginActions(dispatch, payload) { dispatch(enableAllTours()); } +function setUserIdGa4mp(userId) { + ga4track.setUserId(userId); +} + export function logout() { + if (isElectron()) setUserIdGa4mp(undefined); return async dispatch => { dispatch(setUnloggedUserLocation(null)); dispatch(updateUnloggedUserLocation()); From 3462fedb0ce0045993ba46f3560c2cc839a28848 Mon Sep 17 00:00:00 2001 From: Rodri Sanchez Date: Thu, 8 Jun 2023 16:04:29 -0300 Subject: [PATCH 10/23] Avoid intialize cdv ga plugin on Electron --- src/cordova-util.js | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/cordova-util.js b/src/cordova-util.js index f62c7a8c6..57d84d3df 100644 --- a/src/cordova-util.js +++ b/src/cordova-util.js @@ -21,7 +21,7 @@ export const initCordovaPlugins = () => { console.log('now cordova is ready '); if (isCordova()) { try { - window.ga.startTrackerWithId('UA-152065055-1', 20); + if (!isElectron()) window.ga.startTrackerWithId('UA-152065055-1', 20); } catch (err) { console.log(err.message); } @@ -46,7 +46,7 @@ export const initCordovaPlugins = () => { console.log(err.message); } try { - if (isAndroid) configAppPurchasePlugin(); + if (isAndroid()) configAppPurchasePlugin(); } catch (err) { console.log(err.message); } From 61a8a9b497726b35ab63f5c8e8f705c7c7433085 Mon Sep 17 00:00:00 2001 From: Rodri Sanchez Date: Thu, 8 Jun 2023 16:07:17 -0300 Subject: [PATCH 11/23] Fix package json --- package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/package.json b/package.json index b5d5ec0d8..9726f9c7a 100644 --- a/package.json +++ b/package.json @@ -13,7 +13,7 @@ "tts", "text-to-speech" ], - "homepage": ".", + "homepage": "https://app.cboard.io", "private": false, "license": "GPL-3.0-only", "dependencies": { From 2e56eaa05bf973cd75635576e6556963e126d3d0 Mon Sep 17 00:00:00 2001 From: Rodri Sanchez Date: Tue, 13 Jun 2023 18:23:48 -0300 Subject: [PATCH 12/23] Fix ga4mp dependency --- package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/package.json b/package.json index 9726f9c7a..5b4649165 100644 --- a/package.json +++ b/package.json @@ -17,7 +17,7 @@ "private": false, "license": "GPL-3.0-only", "dependencies": { - "@analytics-debugger/ga4mp": "git+https://github.com/RodriSanchez1/ga4mp#fix/fullVersionList", + "@analytics-debugger/ga4mp": "git+https://github.com/RodriSanchez1/ga4mp.git#fix/fullVersionList", "@cospired/i18n-iso-languages": "^2.2.0", "@crowdin/crowdin-api-client": "^1.22.0", "@ctrl/react-adsense": "^1.5.0", From 3735ee0d0a8c657db3b66128db491d7a19af477f Mon Sep 17 00:00:00 2001 From: Rodri Sanchez Date: Thu, 15 Jun 2023 13:09:28 -0300 Subject: [PATCH 13/23] Add ga4mp library to jest transformIgnorePatterns --- package.json | 3 +++ 1 file changed, 3 insertions(+) diff --git a/package.json b/package.json index 5b4649165..905130d00 100644 --- a/package.json +++ b/package.json @@ -131,6 +131,9 @@ "!src/components/Board/SymbolSearch/SymbolSearch.component.js", "!src/components/Board/TileEditor/TileEditor.component.js", "!src/registerServiceWorker.js" + ], + "transformIgnorePatterns": [ + "/node_modules/(?!(@analytics-debugger/ga4mp)/)" ] }, "scripts": { From ad6c41ed68395cc64044edfdb8b2b20dd4e69233 Mon Sep 17 00:00:00 2001 From: Rodri Sanchez Date: Thu, 15 Jun 2023 20:14:02 -0300 Subject: [PATCH 14/23] Add babelrc file --- src/.babelrc | 12 ++++++++++++ 1 file changed, 12 insertions(+) create mode 100644 src/.babelrc diff --git a/src/.babelrc b/src/.babelrc new file mode 100644 index 000000000..f5fe79b39 --- /dev/null +++ b/src/.babelrc @@ -0,0 +1,12 @@ +{ + "presets": [ + "@babel/env", + "@babel/react", + "@babel/typescript" + ], + "plugins": [ + "@babel/plugin-transform-object-assign", + "@babel/plugin-proposal-class-properties", + "@babel/plugin-syntax-dynamic-import" + ] +} \ No newline at end of file From 2d01917052cf8c67f42bf556b75f2ca74f808d8b Mon Sep 17 00:00:00 2001 From: Rodri Sanchez Date: Thu, 15 Jun 2023 20:56:52 -0300 Subject: [PATCH 15/23] Fix test --- package.json | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/package.json b/package.json index 905130d00..b5a373007 100644 --- a/package.json +++ b/package.json @@ -95,6 +95,7 @@ "enzyme": "^3.11.0", "enzyme-to-json": "3.3.5", "husky": "^1.1.4", + "identity-obj-proxy": "^3.0.0", "jest-mock-axios": "^3.2.0", "lint-staged": "^10.0.3", "prettier": "1.15.3", @@ -134,7 +135,11 @@ ], "transformIgnorePatterns": [ "/node_modules/(?!(@analytics-debugger/ga4mp)/)" - ] + ], + "moduleNameMapper": { + "\\.(jpg|jpeg|png|gif|eot|otf|webp|svg|ttf|woff|woff2|mp4|webm|wav|mp3|m4a|aac|oga)$": "/__mocks__/fileMock.js", + "\\.(css|less)$": "identity-obj-proxy" + } }, "scripts": { "analyze": "source-map-explorer build/static/js/**/*.js", From 9e21104c83c4a85ab1463a5175261d6c7ec18478 Mon Sep 17 00:00:00 2001 From: Rodri Sanchez Date: Tue, 15 Aug 2023 18:11:55 -0300 Subject: [PATCH 16/23] Fix jest configuration --- package.json | 14 ++++---------- src/.babelrc | 12 ------------ 2 files changed, 4 insertions(+), 22 deletions(-) delete mode 100644 src/.babelrc diff --git a/package.json b/package.json index c1df8e27e..5783733b9 100644 --- a/package.json +++ b/package.json @@ -123,10 +123,11 @@ }, "jest": { "transformIgnorePatterns": [ - "node_modules/(?!idb)" + "node_modules/(?!idb|@analytics-debugger/ga4mp)" ], "moduleNameMapper": { - "\\.(css|less)$": "/src/__mocks__/styleMock.js" + "\\.(css|less)$": "/src/__mocks__/styleMock.js", + "\\.(jpg|jpeg|png|gif|eot|otf|webp|svg|ttf|woff|woff2|mp4|webm|wav|mp3|m4a|aac|oga)$": "/__mocks__/fileMock.js" }, "collectCoverageFrom": [ "src/**/*.js", @@ -142,14 +143,7 @@ "!src/components/Board/SymbolSearch/SymbolSearch.component.js", "!src/components/Board/TileEditor/TileEditor.component.js", "!src/registerServiceWorker.js" - ], - "transformIgnorePatterns": [ - "/node_modules/(?!(@analytics-debugger/ga4mp)/)" - ], - "moduleNameMapper": { - "\\.(jpg|jpeg|png|gif|eot|otf|webp|svg|ttf|woff|woff2|mp4|webm|wav|mp3|m4a|aac|oga)$": "/__mocks__/fileMock.js", - "\\.(css|less)$": "identity-obj-proxy" - } + ] }, "scripts": { "analyze": "source-map-explorer build/static/js/**/*.js", diff --git a/src/.babelrc b/src/.babelrc deleted file mode 100644 index f5fe79b39..000000000 --- a/src/.babelrc +++ /dev/null @@ -1,12 +0,0 @@ -{ - "presets": [ - "@babel/env", - "@babel/react", - "@babel/typescript" - ], - "plugins": [ - "@babel/plugin-transform-object-assign", - "@babel/plugin-proposal-class-properties", - "@babel/plugin-syntax-dynamic-import" - ] -} \ No newline at end of file From bd91f0ba8e3a37ec0b7a4b75b4537ae9369bd91e Mon Sep 17 00:00:00 2001 From: Rodri Sanchez Date: Tue, 15 Aug 2023 19:12:46 -0300 Subject: [PATCH 17/23] Electron support for cvaTrackEvent function --- src/cordova-util.js | 10 +++++++--- 1 file changed, 7 insertions(+), 3 deletions(-) diff --git a/src/cordova-util.js b/src/cordova-util.js index 2add7fd00..86a978258 100644 --- a/src/cordova-util.js +++ b/src/cordova-util.js @@ -112,7 +112,7 @@ const configFacebookPlugin = () => { ); }; -export const cvaTrackEvent = (category, action, label) => { +export const cvaTrackEvent = (category, action, label, ga4mp) => { try { const convertEventToNewNomenclature = name => { const inLowerCase = name.toLowerCase(); @@ -129,9 +129,13 @@ export const cvaTrackEvent = (category, action, label) => { : { event_category: category }; - if (!isElectron()) window.FirebasePlugin.logEvent(event_name, eventOptions); + + if (isAndroid() || isIOS()) + window.FirebasePlugin.logEvent(event_name, eventOptions); + + if (isElectron()) ga4mp.trackEvent(event_name, eventOptions); } catch (err) { - console.log(err.message); + console.error(err.message); } }; From e542cfc1a0c449ef7e559e3f601888db1e87a3ee Mon Sep 17 00:00:00 2001 From: Rodri Sanchez Date: Tue, 15 Aug 2023 19:20:21 -0300 Subject: [PATCH 18/23] Refactor GA4 initialization on cordova devices --- src/components/Account/Login/Login.actions.js | 18 +++++------ src/components/App/App.container.js | 31 +++++++------------ 2 files changed, 19 insertions(+), 30 deletions(-) diff --git a/src/components/Account/Login/Login.actions.js b/src/components/Account/Login/Login.actions.js index 56ff527a3..8bf4fe411 100644 --- a/src/components/Account/Login/Login.actions.js +++ b/src/components/Account/Login/Login.actions.js @@ -23,10 +23,11 @@ export function loginSuccess(payload) { payload }); if (payload.isFirstLogin) firstLoginActions(dispatch, payload); - if (isElectron()) setUserIdGa4mp(payload.id); - if (isCordova() && !isElectron()) + if (isCordova()) try { - window.FirebasePlugin.setUserId(payload.id); + isElectron() + ? ga4track.setUserId(payload.id) + : window.FirebasePlugin.setUserId(payload.id); } catch (err) { console.error(err); } @@ -42,15 +43,12 @@ async function firstLoginActions(dispatch, payload) { dispatch(enableAllTours()); } -function setUserIdGa4mp(userId) { - ga4track.setUserId(userId); -} - export function logout() { - if (isElectron()) setUserIdGa4mp(undefined); - if (isCordova() && !isElectron()) + if (isCordova()) try { - window.FirebasePlugin.setUserId(undefined); + isElectron() + ? ga4track.setUserId(undefined) + : window.FirebasePlugin.setUserId(undefined); } catch (err) { console.error(err); } diff --git a/src/components/App/App.container.js b/src/components/App/App.container.js index cfad5d731..3004f302e 100644 --- a/src/components/App/App.container.js +++ b/src/components/App/App.container.js @@ -67,25 +67,20 @@ export class AppContainer extends Component { const initCVAGa4 = () => { const { isLogged, userId } = this.props; - if (!isElectron()) { - try { - if (isLogged) { - window.FirebasePlugin.setUserId(userId); - } - window.FirebasePlugin.logEvent('page_view'); - } catch (err) { - console.error(err); - } + try { + if (isLogged) + isElectron() + ? ga4track.setUserId(userId) + : window.FirebasePlugin.setUserId(userId); + + isElectron() + ? ga4track.trackEvent('page_view') + : window.FirebasePlugin.logEvent('page_view'); + } catch (err) { + console.error(err); } }; - const initGa4mp = () => { - const { isLogged, userId } = this.props; - - if (isLogged) ga4track.setUserId(userId); - ga4track.trackEvent('page_view'); - }; - registerServiceWorker( this.handleNewContentAvailable, this.handleContentCached @@ -93,10 +88,6 @@ export class AppContainer extends Component { localizeUser(); - if (isElectron()) { - initGa4mp(); - } - if (isCordova()) initCVAGa4(); } From 732886cf0c70ec693eda0d13cf12f1771d5179af Mon Sep 17 00:00:00 2001 From: Rodri Sanchez Date: Tue, 15 Aug 2023 19:21:19 -0300 Subject: [PATCH 19/23] Use cvaTrackEvent function on Electron devices --- src/components/Board/Board.analytics.js | 86 ++++--------------- .../SpeechProvider.analytics.js | 47 ++-------- 2 files changed, 26 insertions(+), 107 deletions(-) diff --git a/src/components/Board/Board.analytics.js b/src/components/Board/Board.analytics.js index a85654625..5e25e3647 100644 --- a/src/components/Board/Board.analytics.js +++ b/src/components/Board/Board.analytics.js @@ -1,10 +1,5 @@ import { trackEvent } from '@redux-beacon/google-analytics-gtag'; -import { - cvaTrackEvent, - isElectron, - isAndroid, - isIOS -} from '../../cordova-util'; +import { isCordova, cvaTrackEvent } from '../../cordova-util'; import ga4track from '../../ga4mp'; import { IMPORT_BOARDS, @@ -31,13 +26,8 @@ const importBoards = trackEvent((action, prevState, nextState) => { category: 'Backup', action: 'Import Boards' }; - if (isAndroid() || isIOS()) { - cvaTrackEvent(gaEvent.category, gaEvent.action); - } - if (isElectron()) { - ga4track.trackEvent(gaEvent.action, { - event_category: gaEvent.category - }); + if (isCordova()) { + cvaTrackEvent(gaEvent.category, gaEvent.action, false, ga4track); } return gaEvent; }); @@ -55,14 +45,8 @@ const changeBoard = trackEvent((action, prevState, nextState) => { action: 'Change Board', label: boardName }; - if (isAndroid() || isIOS()) { - cvaTrackEvent(gaEvent.category, gaEvent.action, gaEvent.label); - } - if (isElectron()) { - ga4track.trackEvent(gaEvent.action, { - event_category: gaEvent.category, - event_label: gaEvent.label - }); + if (isCordova()) { + cvaTrackEvent(gaEvent.category, gaEvent.action, gaEvent.label, ga4track); } return gaEvent; }); @@ -73,14 +57,8 @@ const createBoard = trackEvent((action, prevState, nextState) => { action: 'Create Board', label: action.boardName }; - if (isAndroid() || isIOS()) { - cvaTrackEvent(gaEvent.category, gaEvent.action, gaEvent.label); - } - if (isElectron()) { - ga4track.trackEvent(gaEvent.action, { - event_category: gaEvent.category, - event_label: gaEvent.label - }); + if (isCordova()) { + cvaTrackEvent(gaEvent.category, gaEvent.action, gaEvent.label, ga4track); } return gaEvent; }); @@ -91,14 +69,8 @@ const createTile = trackEvent((action, prevState, nextState) => { action: 'Create Tile', label: action.tile.label }; - if (isAndroid() || isIOS()) { - cvaTrackEvent(gaEvent.category, gaEvent.action, gaEvent.label); - } - if (isElectron()) { - ga4track.trackEvent(gaEvent.action, { - event_category: gaEvent.category, - event_label: gaEvent.label - }); + if (isCordova()) { + cvaTrackEvent(gaEvent.category, gaEvent.action, gaEvent.label, ga4track); } return gaEvent; }); @@ -114,14 +86,8 @@ const deleteTiles = trackEvent((action, prevState, nextState) => { action: 'Delete Tiles', label: deletedTiles }; - if (isAndroid() || isIOS()) { - cvaTrackEvent(gaEvent.category, gaEvent.action, gaEvent.label); - } - if (isElectron()) { - ga4track.trackEvent(gaEvent.action, { - event_category: gaEvent.category, - event_label: gaEvent.label - }); + if (isCordova()) { + cvaTrackEvent(gaEvent.category, gaEvent.action, gaEvent.label, ga4track); } return gaEvent; }); @@ -136,14 +102,8 @@ const editTiles = trackEvent((action, prevState, nextState) => { action: 'Edit Tiles', label: editedTiles }; - if (isAndroid() || isIOS()) { - cvaTrackEvent(gaEvent.category, gaEvent.action, gaEvent.label); - } - if (isElectron()) { - ga4track.trackEvent(gaEvent.action, { - event_category: gaEvent.category, - event_label: gaEvent.label - }); + if (isCordova()) { + cvaTrackEvent(gaEvent.category, gaEvent.action, gaEvent.label, ga4track); } return gaEvent; }); @@ -154,14 +114,8 @@ const clickSymbol = trackEvent((action, prevState, nextState) => { action: 'Click Symbol', label: action.symbolLabel }; - if (isAndroid() || isIOS()) { - cvaTrackEvent(gaEvent.category, gaEvent.action, gaEvent.label); - } - if (isElectron()) { - ga4track.trackEvent(gaEvent.action, { - event_category: gaEvent.category, - event_label: gaEvent.label - }); + if (isCordova()) { + cvaTrackEvent(gaEvent.category, gaEvent.action, gaEvent.label, ga4track); } return gaEvent; }); @@ -172,14 +126,8 @@ const clickOutput = trackEvent((action, prevState, nextState) => { action: 'Click Output', label: action.outputPhrase }; - if (isAndroid() || isIOS()) { - cvaTrackEvent(gaEvent.category, gaEvent.action, gaEvent.label); - } - if (isElectron()) { - ga4track.trackEvent(gaEvent.action, { - event_category: gaEvent.category, - event_label: gaEvent.label - }); + if (isCordova()) { + cvaTrackEvent(gaEvent.category, gaEvent.action, gaEvent.label, ga4track); } return gaEvent; }); diff --git a/src/providers/SpeechProvider/SpeechProvider.analytics.js b/src/providers/SpeechProvider/SpeechProvider.analytics.js index 79fae3efd..753c60bc9 100644 --- a/src/providers/SpeechProvider/SpeechProvider.analytics.js +++ b/src/providers/SpeechProvider/SpeechProvider.analytics.js @@ -7,12 +7,7 @@ import { START_SPEECH, EMPTY_VOICES } from './SpeechProvider.constants'; -import { - cvaTrackEvent, - isElectron, - isAndroid, - isIOS -} from '../../cordova-util'; +import { isCordova, cvaTrackEvent } from '../../cordova-util'; import ga4track from '../../ga4mp'; const changeVoice = trackEvent((action, prevState, nextState) => { @@ -21,14 +16,8 @@ const changeVoice = trackEvent((action, prevState, nextState) => { action: 'Changed Voice', label: action ? action.voiceURI : EMPTY_VOICES }; - if (isAndroid() || isIOS()) { - cvaTrackEvent(gaEvent.category, gaEvent.action, gaEvent.label); - } - if (isElectron()) { - ga4track.trackEvent(gaEvent.action, { - event_category: gaEvent.category, - event_label: gaEvent.label - }); + if (isCordova()) { + cvaTrackEvent(gaEvent.category, gaEvent.action, gaEvent.label, ga4track); } return gaEvent; }); @@ -39,14 +28,8 @@ const changePitch = trackEvent((action, prevState, nextState) => { action: 'Changed Pitch', label: action.pitch }; - if (isAndroid() || isIOS()) { - cvaTrackEvent(gaEvent.category, gaEvent.action, gaEvent.label); - } - if (isElectron()) { - ga4track.trackEvent(gaEvent.action, { - event_category: gaEvent.category, - event_label: gaEvent.label - }); + if (isCordova()) { + cvaTrackEvent(gaEvent.category, gaEvent.action, gaEvent.label, ga4track); } return gaEvent; }); @@ -57,14 +40,8 @@ const changeRate = trackEvent((action, prevState, nextState) => { action: 'Changed Rate', label: action.rate }; - if (isAndroid() || isIOS()) { - cvaTrackEvent(gaEvent.category, gaEvent.action, gaEvent.label); - } - if (isElectron()) { - ga4track.trackEvent(gaEvent.action, { - event_category: gaEvent.category, - event_label: gaEvent.label - }); + if (isCordova()) { + cvaTrackEvent(gaEvent.category, gaEvent.action, gaEvent.label, ga4track); } return gaEvent; }); @@ -75,14 +52,8 @@ const startSpeech = trackEvent((action, prevState, nextState) => { action: 'Start Speech', label: action.text }; - if (isAndroid() || isIOS()) { - cvaTrackEvent(gaEvent.category, gaEvent.action, gaEvent.label); - } - if (isElectron()) { - ga4track.trackEvent(gaEvent.action, { - event_category: gaEvent.category, - event_label: gaEvent.label - }); + if (isCordova()) { + cvaTrackEvent(gaEvent.category, gaEvent.action, gaEvent.label, ga4track); } return gaEvent; }); From 162db16e06f1f45813f1a2f50bc9a8b2fa8f3a90 Mon Sep 17 00:00:00 2001 From: Rodri Sanchez Date: Tue, 15 Aug 2023 19:43:16 -0300 Subject: [PATCH 20/23] Remove debug for GA4mp --- src/ga4mp.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/ga4mp.js b/src/ga4mp.js index 73063971e..4853a4465 100644 --- a/src/ga4mp.js +++ b/src/ga4mp.js @@ -3,7 +3,7 @@ import { GA4_MEASUREMENT_ID } from './constants'; const ga4track = ga4mp([GA4_MEASUREMENT_ID], { non_personalized_ads: true, - debug: true, + debug: false, user_agent: 'Mozilla/5.0 (compatible; Googlebot/2.1; +http://www.google.com/bot.html)' }); From 7f2d928b05f40f6e8309eeb2594fd26649cc18ae Mon Sep 17 00:00:00 2001 From: Rodri Sanchez Date: Thu, 14 Dec 2023 15:35:24 -0300 Subject: [PATCH 21/23] Add babel-jest on devDependecies --- package.json | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/package.json b/package.json index e6eda9d43..ee7264763 100644 --- a/package.json +++ b/package.json @@ -92,10 +92,11 @@ }, "devDependencies": { "@babel/plugin-proposal-private-property-in-object": "^7.21.11", - "babel-plugin-transform-import-meta": "^2.2.1", "@craco/craco": "^7.1.0", "@types/mime-types": "^2.1.1", "@wojtekmaj/enzyme-adapter-react-17": "^0.6.0", + "babel-plugin-transform-import-meta": "^2.2.1", + "babel-jest": "^29.7.0", "decompress-zip": "^0.3.1", "enzyme": "^3.11.0", "enzyme-to-json": "3.3.5", From 21d93e31675c49c52c7155c5681364dda0608dea Mon Sep 17 00:00:00 2001 From: Rodri Sanchez Date: Thu, 14 Dec 2023 15:35:45 -0300 Subject: [PATCH 22/23] Lock file --- yarn.lock | 505 ++++++++++++++++++++++++++++++++++++++++++++++++++++-- 1 file changed, 491 insertions(+), 14 deletions(-) diff --git a/yarn.lock b/yarn.lock index 17e56b47d..68e5de1da 100644 --- a/yarn.lock +++ b/yarn.lock @@ -20,6 +20,20 @@ "@jridgewell/gen-mapping" "^0.3.0" "@jridgewell/trace-mapping" "^0.3.9" +"@analytics-debugger/ga4mp@git+https://github.com/RodriSanchez1/ga4mp.git#fix/fullVersionList": + version "0.0.5" + resolved "git+https://github.com/RodriSanchez1/ga4mp.git#07c260239041a3ce6192ecf2b1391bdb04f59c2b" + dependencies: + "@babel/core" "^7.20.5" + "@babel/plugin-transform-object-assign" "^7.18.6" + "@babel/preset-env" "^7.20.2" + "@rollup/plugin-babel" "^6.0.3" + "@rollup/plugin-json" "^6.0.0" + "@rollup/plugin-node-resolve" "^15.0.1" + "@rollup/plugin-terser" "^0.2.0" + rollup "^3.7.1" + rollup-plugin-license "^3.0.1" + "@apideck/better-ajv-errors@^0.3.1": version "0.3.6" resolved "https://registry.yarnpkg.com/@apideck/better-ajv-errors/-/better-ajv-errors-0.3.6.tgz#957d4c28e886a64a8141f7522783be65733ff097" @@ -552,6 +566,27 @@ json5 "^2.2.3" semver "^6.3.1" +"@babel/core@^7.11.6", "@babel/core@^7.20.5": + version "7.23.6" + resolved "https://registry.yarnpkg.com/@babel/core/-/core-7.23.6.tgz#8be77cd77c55baadcc1eae1c33df90ab6d2151d4" + integrity sha512-FxpRyGjrMJXh7X3wGLGhNDCRiwpWEF74sKjTLDJSG5Kyvow3QZaG0Adbqzi9ZrVjTWpsX+2cxWXD71NMg93kdw== + dependencies: + "@ampproject/remapping" "^2.2.0" + "@babel/code-frame" "^7.23.5" + "@babel/generator" "^7.23.6" + "@babel/helper-compilation-targets" "^7.23.6" + "@babel/helper-module-transforms" "^7.23.3" + "@babel/helpers" "^7.23.6" + "@babel/parser" "^7.23.6" + "@babel/template" "^7.22.15" + "@babel/traverse" "^7.23.6" + "@babel/types" "^7.23.6" + convert-source-map "^2.0.0" + debug "^4.1.0" + gensync "^1.0.0-beta.2" + json5 "^2.2.3" + semver "^6.3.1" + "@babel/eslint-parser@^7.16.3": version "7.23.3" resolved "https://registry.yarnpkg.com/@babel/eslint-parser/-/eslint-parser-7.23.3.tgz#7bf0db1c53b54da0c8a12627373554a0828479ca" @@ -571,6 +606,16 @@ "@jridgewell/trace-mapping" "^0.3.17" jsesc "^2.5.1" +"@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/helper-annotate-as-pure@^7.18.6", "@babel/helper-annotate-as-pure@^7.22.5": version "7.22.5" resolved "https://registry.yarnpkg.com/@babel/helper-annotate-as-pure/-/helper-annotate-as-pure-7.22.5.tgz#e7f06737b197d580a01edf75d97e2c8be99d3882" @@ -596,6 +641,17 @@ lru-cache "^5.1.1" semver "^6.3.1" +"@babel/helper-compilation-targets@^7.23.6": + version "7.23.6" + resolved "https://registry.yarnpkg.com/@babel/helper-compilation-targets/-/helper-compilation-targets-7.23.6.tgz#4d79069b16cbcf1461289eccfbbd81501ae39991" + integrity sha512-9JB548GZoQVmzrFgp8o7KxdgkTGm6xs9DW0o/Pim72UDjzr5ObUQ6ZzYPqA+g9OTS2bBQoctLJrky0RDCAWRgQ== + dependencies: + "@babel/compat-data" "^7.23.5" + "@babel/helper-validator-option" "^7.23.5" + browserslist "^4.22.2" + lru-cache "^5.1.1" + semver "^6.3.1" + "@babel/helper-create-class-features-plugin@^7.18.6", "@babel/helper-create-class-features-plugin@^7.21.0", "@babel/helper-create-class-features-plugin@^7.22.15", "@babel/helper-create-class-features-plugin@^7.23.5": version "7.23.5" resolved "https://registry.yarnpkg.com/@babel/helper-create-class-features-plugin/-/helper-create-class-features-plugin-7.23.5.tgz#2a8792357008ae9ce8c0f2b78b9f646ac96b314b" @@ -658,7 +714,7 @@ dependencies: "@babel/types" "^7.23.0" -"@babel/helper-module-imports@^7.10.4", "@babel/helper-module-imports@^7.22.15": +"@babel/helper-module-imports@^7.10.4", "@babel/helper-module-imports@^7.18.6", "@babel/helper-module-imports@^7.22.15": version "7.22.15" resolved "https://registry.yarnpkg.com/@babel/helper-module-imports/-/helper-module-imports-7.22.15.tgz#16146307acdc40cc00c3b2c647713076464bdbf0" integrity sha512-0pYVBnDKZO2fnSPCrgM/6WMc7eS20Fbok+0r88fp+YtWVLZrp4CkafFGIp+W0VKw4a22sgebPT99y+FDNMdP4w== @@ -760,6 +816,15 @@ "@babel/traverse" "^7.23.5" "@babel/types" "^7.23.5" +"@babel/helpers@^7.23.6": + version "7.23.6" + resolved "https://registry.yarnpkg.com/@babel/helpers/-/helpers-7.23.6.tgz#d03af2ee5fb34691eec0cda90f5ecbb4d4da145a" + integrity sha512-wCfsbN4nBidDRhpDhvcKlzHWCTlgJYUUdSJfzXb2NuBssDSIjc3xcb+znA7l+zYsFljAcGM0aFkN40cR3lXiGA== + dependencies: + "@babel/template" "^7.22.15" + "@babel/traverse" "^7.23.6" + "@babel/types" "^7.23.6" + "@babel/highlight@^7.23.4": version "7.23.4" resolved "https://registry.yarnpkg.com/@babel/highlight/-/highlight-7.23.4.tgz#edaadf4d8232e1a961432db785091207ead0621b" @@ -774,6 +839,11 @@ resolved "https://registry.yarnpkg.com/@babel/parser/-/parser-7.23.5.tgz#37dee97c4752af148e1d38c34b856b2507660563" integrity sha512-hOOqoiNXrmGdFbhgCzu6GiURxUgM27Xwd/aPuu8RfHEZPBzL1Z54okAHAQjXfcQNwvrlkAmAp4SlRTZ45vlthQ== +"@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/plugin-bugfix-safari-id-destructuring-collision-in-function-expression@^7.23.3": version "7.23.3" resolved "https://registry.yarnpkg.com/@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression/-/plugin-bugfix-safari-id-destructuring-collision-in-function-expression-7.23.3.tgz#5cd1c87ba9380d0afb78469292c954fee5d2411a" @@ -1168,6 +1238,14 @@ dependencies: "@babel/helper-plugin-utils" "^7.22.5" +"@babel/plugin-transform-for-of@^7.23.6": + version "7.23.6" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-for-of/-/plugin-transform-for-of-7.23.6.tgz#81c37e24171b37b370ba6aaffa7ac86bcb46f94e" + integrity sha512-aYH4ytZ0qSuBbpfhuofbg/e96oQ7U2w1Aw/UQmKT+1l39uEhUPoFS3fHevDc1G0OvewyDudfMKY1OulczHzWIw== + dependencies: + "@babel/helper-plugin-utils" "^7.22.5" + "@babel/helper-skip-transparent-expression-wrappers" "^7.22.5" + "@babel/plugin-transform-function-name@^7.23.3": version "7.23.3" resolved "https://registry.yarnpkg.com/@babel/plugin-transform-function-name/-/plugin-transform-function-name-7.23.3.tgz#8f424fcd862bf84cb9a1a6b42bc2f47ed630f8dc" @@ -1273,6 +1351,13 @@ "@babel/helper-plugin-utils" "^7.22.5" "@babel/plugin-syntax-numeric-separator" "^7.10.4" +"@babel/plugin-transform-object-assign@^7.18.6": + version "7.23.3" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-object-assign/-/plugin-transform-object-assign-7.23.3.tgz#64177e8cf943460c7f0e1c410277546804f59625" + integrity sha512-TPJ6O7gVC2rlQH2hvQGRH273G1xdoloCj9Pc07Q7JbIZYDi+Sv5gaE2fu+r5E7qK4zyt6vj0FbZaZTRU5C3OMA== + dependencies: + "@babel/helper-plugin-utils" "^7.22.5" + "@babel/plugin-transform-object-rest-spread@^7.23.4": version "7.23.4" resolved "https://registry.yarnpkg.com/@babel/plugin-transform-object-rest-spread/-/plugin-transform-object-rest-spread-7.23.4.tgz#2b9c2d26bf62710460bdc0d1730d4f1048361b83" @@ -1571,6 +1656,92 @@ core-js-compat "^3.31.0" semver "^6.3.1" +"@babel/preset-env@^7.20.2": + version "7.23.6" + resolved "https://registry.yarnpkg.com/@babel/preset-env/-/preset-env-7.23.6.tgz#ad0ea799d5a3c07db5b9a172819bbd444092187a" + integrity sha512-2XPn/BqKkZCpzYhUUNZ1ssXw7DcXfKQEjv/uXZUXgaebCMYmkEsfZ2yY+vv+xtXv50WmL5SGhyB6/xsWxIvvOQ== + dependencies: + "@babel/compat-data" "^7.23.5" + "@babel/helper-compilation-targets" "^7.23.6" + "@babel/helper-plugin-utils" "^7.22.5" + "@babel/helper-validator-option" "^7.23.5" + "@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression" "^7.23.3" + "@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining" "^7.23.3" + "@babel/plugin-bugfix-v8-static-class-fields-redefine-readonly" "^7.23.3" + "@babel/plugin-proposal-private-property-in-object" "7.21.0-placeholder-for-preset-env.2" + "@babel/plugin-syntax-async-generators" "^7.8.4" + "@babel/plugin-syntax-class-properties" "^7.12.13" + "@babel/plugin-syntax-class-static-block" "^7.14.5" + "@babel/plugin-syntax-dynamic-import" "^7.8.3" + "@babel/plugin-syntax-export-namespace-from" "^7.8.3" + "@babel/plugin-syntax-import-assertions" "^7.23.3" + "@babel/plugin-syntax-import-attributes" "^7.23.3" + "@babel/plugin-syntax-import-meta" "^7.10.4" + "@babel/plugin-syntax-json-strings" "^7.8.3" + "@babel/plugin-syntax-logical-assignment-operators" "^7.10.4" + "@babel/plugin-syntax-nullish-coalescing-operator" "^7.8.3" + "@babel/plugin-syntax-numeric-separator" "^7.10.4" + "@babel/plugin-syntax-object-rest-spread" "^7.8.3" + "@babel/plugin-syntax-optional-catch-binding" "^7.8.3" + "@babel/plugin-syntax-optional-chaining" "^7.8.3" + "@babel/plugin-syntax-private-property-in-object" "^7.14.5" + "@babel/plugin-syntax-top-level-await" "^7.14.5" + "@babel/plugin-syntax-unicode-sets-regex" "^7.18.6" + "@babel/plugin-transform-arrow-functions" "^7.23.3" + "@babel/plugin-transform-async-generator-functions" "^7.23.4" + "@babel/plugin-transform-async-to-generator" "^7.23.3" + "@babel/plugin-transform-block-scoped-functions" "^7.23.3" + "@babel/plugin-transform-block-scoping" "^7.23.4" + "@babel/plugin-transform-class-properties" "^7.23.3" + "@babel/plugin-transform-class-static-block" "^7.23.4" + "@babel/plugin-transform-classes" "^7.23.5" + "@babel/plugin-transform-computed-properties" "^7.23.3" + "@babel/plugin-transform-destructuring" "^7.23.3" + "@babel/plugin-transform-dotall-regex" "^7.23.3" + "@babel/plugin-transform-duplicate-keys" "^7.23.3" + "@babel/plugin-transform-dynamic-import" "^7.23.4" + "@babel/plugin-transform-exponentiation-operator" "^7.23.3" + "@babel/plugin-transform-export-namespace-from" "^7.23.4" + "@babel/plugin-transform-for-of" "^7.23.6" + "@babel/plugin-transform-function-name" "^7.23.3" + "@babel/plugin-transform-json-strings" "^7.23.4" + "@babel/plugin-transform-literals" "^7.23.3" + "@babel/plugin-transform-logical-assignment-operators" "^7.23.4" + "@babel/plugin-transform-member-expression-literals" "^7.23.3" + "@babel/plugin-transform-modules-amd" "^7.23.3" + "@babel/plugin-transform-modules-commonjs" "^7.23.3" + "@babel/plugin-transform-modules-systemjs" "^7.23.3" + "@babel/plugin-transform-modules-umd" "^7.23.3" + "@babel/plugin-transform-named-capturing-groups-regex" "^7.22.5" + "@babel/plugin-transform-new-target" "^7.23.3" + "@babel/plugin-transform-nullish-coalescing-operator" "^7.23.4" + "@babel/plugin-transform-numeric-separator" "^7.23.4" + "@babel/plugin-transform-object-rest-spread" "^7.23.4" + "@babel/plugin-transform-object-super" "^7.23.3" + "@babel/plugin-transform-optional-catch-binding" "^7.23.4" + "@babel/plugin-transform-optional-chaining" "^7.23.4" + "@babel/plugin-transform-parameters" "^7.23.3" + "@babel/plugin-transform-private-methods" "^7.23.3" + "@babel/plugin-transform-private-property-in-object" "^7.23.4" + "@babel/plugin-transform-property-literals" "^7.23.3" + "@babel/plugin-transform-regenerator" "^7.23.3" + "@babel/plugin-transform-reserved-words" "^7.23.3" + "@babel/plugin-transform-shorthand-properties" "^7.23.3" + "@babel/plugin-transform-spread" "^7.23.3" + "@babel/plugin-transform-sticky-regex" "^7.23.3" + "@babel/plugin-transform-template-literals" "^7.23.3" + "@babel/plugin-transform-typeof-symbol" "^7.23.3" + "@babel/plugin-transform-unicode-escapes" "^7.23.3" + "@babel/plugin-transform-unicode-property-regex" "^7.23.3" + "@babel/plugin-transform-unicode-regex" "^7.23.3" + "@babel/plugin-transform-unicode-sets-regex" "^7.23.3" + "@babel/preset-modules" "0.1.6-no-external-plugins" + babel-plugin-polyfill-corejs2 "^0.4.6" + babel-plugin-polyfill-corejs3 "^0.8.5" + babel-plugin-polyfill-regenerator "^0.5.3" + core-js-compat "^3.31.0" + semver "^6.3.1" + "@babel/preset-modules@0.1.6-no-external-plugins": version "0.1.6-no-external-plugins" resolved "https://registry.yarnpkg.com/@babel/preset-modules/-/preset-modules-0.1.6-no-external-plugins.tgz#ccb88a2c49c817236861fee7826080573b8a923a" @@ -1640,6 +1811,22 @@ debug "^4.1.0" globals "^11.1.0" +"@babel/traverse@^7.23.6": + version "7.23.6" + resolved "https://registry.yarnpkg.com/@babel/traverse/-/traverse-7.23.6.tgz#b53526a2367a0dd6edc423637f3d2d0f2521abc5" + integrity sha512-czastdK1e8YByZqezMPFiZ8ahwVMh/ESl9vPgvgdB9AmFMGP5jfpFax74AQgl5zj4XHzqeYAg2l8PuUeRS1MgQ== + 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.0.0", "@babel/types@^7.12.6", "@babel/types@^7.20.7", "@babel/types@^7.22.15", "@babel/types@^7.22.19", "@babel/types@^7.22.5", "@babel/types@^7.23.0", "@babel/types@^7.23.4", "@babel/types@^7.23.5", "@babel/types@^7.3.3", "@babel/types@^7.4.4": version "7.23.5" resolved "https://registry.yarnpkg.com/@babel/types/-/types-7.23.5.tgz#48d730a00c95109fa4393352705954d74fb5b602" @@ -1649,6 +1836,15 @@ "@babel/helper-validator-identifier" "^7.22.20" to-fast-properties "^2.0.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" + "@bcoe/v8-coverage@^0.2.3": version "0.2.3" resolved "https://registry.yarnpkg.com/@bcoe/v8-coverage/-/v8-coverage-0.2.3.tgz#75a2e8b51cb758a7553d6804a5932d7aace75c39" @@ -2068,6 +2264,13 @@ dependencies: "@sinclair/typebox" "^0.24.1" +"@jest/schemas@^29.6.3": + version "29.6.3" + resolved "https://registry.yarnpkg.com/@jest/schemas/-/schemas-29.6.3.tgz#430b5ce8a4e0044a7e3819663305a7b3091c8e03" + integrity sha512-mo5j5X+jIZmJQveBKeS/clAueipV7KgiX1vMgCxam1RNYiqE1w62n0/tJJnHtjW8ZHcQco5gY85jA3mi0L+nSA== + dependencies: + "@sinclair/typebox" "^0.27.8" + "@jest/source-map@^27.5.1": version "27.5.1" resolved "https://registry.yarnpkg.com/@jest/source-map/-/source-map-27.5.1.tgz#6608391e465add4205eae073b55e7f279e04e8cf" @@ -2128,6 +2331,27 @@ source-map "^0.6.1" write-file-atomic "^3.0.0" +"@jest/transform@^29.7.0": + version "29.7.0" + resolved "https://registry.yarnpkg.com/@jest/transform/-/transform-29.7.0.tgz#df2dd9c346c7d7768b8a06639994640c642e284c" + integrity sha512-ok/BTPFzFKVMwO5eOHRrvnBVHdRy9IrsrW1GpMaQ9MCnilNLXQKmAX8s1YXDFaai9xJpac2ySzV0YeRRECr2Vw== + dependencies: + "@babel/core" "^7.11.6" + "@jest/types" "^29.6.3" + "@jridgewell/trace-mapping" "^0.3.18" + babel-plugin-istanbul "^6.1.1" + chalk "^4.0.0" + convert-source-map "^2.0.0" + fast-json-stable-stringify "^2.1.0" + graceful-fs "^4.2.9" + jest-haste-map "^29.7.0" + jest-regex-util "^29.6.3" + jest-util "^29.7.0" + micromatch "^4.0.4" + pirates "^4.0.4" + slash "^3.0.0" + write-file-atomic "^4.0.2" + "@jest/types@^27.5.1": version "27.5.1" resolved "https://registry.yarnpkg.com/@jest/types/-/types-27.5.1.tgz#3c79ec4a8ba61c170bf937bcf9e98a9df175ec80" @@ -2151,6 +2375,18 @@ "@types/yargs" "^17.0.8" chalk "^4.0.0" +"@jest/types@^29.6.3": + version "29.6.3" + resolved "https://registry.yarnpkg.com/@jest/types/-/types-29.6.3.tgz#1131f8cf634e7e84c5e77bab12f052af585fba59" + integrity sha512-u3UPsIilWKOM3F9CXtrG8LEJmNxwoCQC/XVj4IKYXvvpx7QIi/Kg1LI5uDmDpKlac62NUtX7eLjRh+jVZcLOzw== + dependencies: + "@jest/schemas" "^29.6.3" + "@types/istanbul-lib-coverage" "^2.0.0" + "@types/istanbul-reports" "^3.0.0" + "@types/node" "*" + "@types/yargs" "^17.0.8" + chalk "^4.0.0" + "@jridgewell/gen-mapping@^0.3.0", "@jridgewell/gen-mapping@^0.3.2": version "0.3.3" resolved "https://registry.yarnpkg.com/@jridgewell/gen-mapping/-/gen-mapping-0.3.3.tgz#7e02e6eb5df901aaedb08514203b096614024098" @@ -2178,7 +2414,7 @@ "@jridgewell/gen-mapping" "^0.3.0" "@jridgewell/trace-mapping" "^0.3.9" -"@jridgewell/sourcemap-codec@^1.4.10", "@jridgewell/sourcemap-codec@^1.4.14": +"@jridgewell/sourcemap-codec@^1.4.10", "@jridgewell/sourcemap-codec@^1.4.14", "@jridgewell/sourcemap-codec@^1.4.15": version "1.4.15" resolved "https://registry.yarnpkg.com/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.4.15.tgz#d7c6e6755c78567a951e04ab52ef0fd26de59f32" integrity sha512-eF2rxCRulEKXHTRiDrDy6erMYWqNw4LPdQ8UQA4huuxaQsVeRPFl2oM8oDGxMFhJUWZf9McpLtJasDDZb/Bpeg== @@ -2191,7 +2427,7 @@ "@jridgewell/resolve-uri" "^3.0.3" "@jridgewell/sourcemap-codec" "^1.4.10" -"@jridgewell/trace-mapping@^0.3.17", "@jridgewell/trace-mapping@^0.3.9": +"@jridgewell/trace-mapping@^0.3.17", "@jridgewell/trace-mapping@^0.3.18", "@jridgewell/trace-mapping@^0.3.9": version "0.3.20" resolved "https://registry.yarnpkg.com/@jridgewell/trace-mapping/-/trace-mapping-0.3.20.tgz#72e45707cf240fa6b081d0366f8265b0cd10197f" integrity sha512-R8LcPeWZol2zR8mmH3JeKQ6QRCFb7XgUhV9ZlGhHLGyg4wpPiPZNQOOWhFZhxKw8u//yTbNGI42Bx/3paXEQ+Q== @@ -2477,6 +2713,21 @@ "@babel/helper-module-imports" "^7.10.4" "@rollup/pluginutils" "^3.1.0" +"@rollup/plugin-babel@^6.0.3": + version "6.0.4" + resolved "https://registry.yarnpkg.com/@rollup/plugin-babel/-/plugin-babel-6.0.4.tgz#bd698e351fa9aa9619fcae780aea2a603d98e4c4" + integrity sha512-YF7Y52kFdFT/xVSuVdjkV5ZdX/3YtmX0QulG+x0taQOtJdHYzVU61aSSkAgVJ7NOv6qPkIYiJSgSWWN/DM5sGw== + dependencies: + "@babel/helper-module-imports" "^7.18.6" + "@rollup/pluginutils" "^5.0.1" + +"@rollup/plugin-json@^6.0.0": + version "6.1.0" + resolved "https://registry.yarnpkg.com/@rollup/plugin-json/-/plugin-json-6.1.0.tgz#fbe784e29682e9bb6dee28ea75a1a83702e7b805" + integrity sha512-EGI2te5ENk1coGeADSIwZ7G2Q8CJS2sF120T7jLw4xFw9n7wIOXHo+kIYRAoVpJAN+kmqZSoO3Fp4JtoNF4ReA== + dependencies: + "@rollup/pluginutils" "^5.1.0" + "@rollup/plugin-node-resolve@^11.2.1": version "11.2.1" resolved "https://registry.yarnpkg.com/@rollup/plugin-node-resolve/-/plugin-node-resolve-11.2.1.tgz#82aa59397a29cd4e13248b106e6a4a1880362a60" @@ -2489,6 +2740,18 @@ is-module "^1.0.0" resolve "^1.19.0" +"@rollup/plugin-node-resolve@^15.0.1": + version "15.2.3" + resolved "https://registry.yarnpkg.com/@rollup/plugin-node-resolve/-/plugin-node-resolve-15.2.3.tgz#e5e0b059bd85ca57489492f295ce88c2d4b0daf9" + integrity sha512-j/lym8nf5E21LwBT4Df1VD6hRO2L2iwUeUmP7litikRsVp1H6NWx20NEp0Y7su+7XGc476GnXXc4kFeZNGmaSQ== + dependencies: + "@rollup/pluginutils" "^5.0.1" + "@types/resolve" "1.20.2" + deepmerge "^4.2.2" + is-builtin-module "^3.2.1" + is-module "^1.0.0" + resolve "^1.22.1" + "@rollup/plugin-replace@^2.4.1": version "2.4.2" resolved "https://registry.yarnpkg.com/@rollup/plugin-replace/-/plugin-replace-2.4.2.tgz#a2d539314fbc77c244858faa523012825068510a" @@ -2497,6 +2760,15 @@ "@rollup/pluginutils" "^3.1.0" magic-string "^0.25.7" +"@rollup/plugin-terser@^0.2.0": + version "0.2.1" + resolved "https://registry.yarnpkg.com/@rollup/plugin-terser/-/plugin-terser-0.2.1.tgz#dcf0b163216dafb64611b170a7667e76a7f03d2b" + integrity sha512-hV52c8Oo6/cXZZxVVoRNBb4zh+EKSHS4I1sedWV5pf0O+hTLSkrf6w86/V0AZutYtwBguB6HLKwz89WDBfwGOA== + dependencies: + serialize-javascript "^6.0.0" + smob "^0.0.6" + terser "^5.15.1" + "@rollup/pluginutils@^3.1.0": version "3.1.0" resolved "https://registry.yarnpkg.com/@rollup/pluginutils/-/pluginutils-3.1.0.tgz#706b4524ee6dc8b103b3c995533e5ad680c02b9b" @@ -2506,6 +2778,15 @@ estree-walker "^1.0.1" picomatch "^2.2.2" +"@rollup/pluginutils@^5.0.1", "@rollup/pluginutils@^5.1.0": + version "5.1.0" + resolved "https://registry.yarnpkg.com/@rollup/pluginutils/-/pluginutils-5.1.0.tgz#7e53eddc8c7f483a4ad0b94afb1f7f5fd3c771e0" + integrity sha512-XTIWOPPcpvyKI6L1NHo0lFlCyznUEyPmPY1mc3KpPVDYulHSTvyeLNVW00QTLIAFNhR3kYnJTQHeGqU4M3n09g== + dependencies: + "@types/estree" "^1.0.0" + estree-walker "^2.0.2" + picomatch "^2.3.1" + "@rushstack/eslint-patch@^1.1.0": version "1.6.0" resolved "https://registry.yarnpkg.com/@rushstack/eslint-patch/-/eslint-patch-1.6.0.tgz#1898e7a7b943680d757417a47fb10f5fcc230b39" @@ -2516,6 +2797,11 @@ resolved "https://registry.yarnpkg.com/@sinclair/typebox/-/typebox-0.24.51.tgz#645f33fe4e02defe26f2f5c0410e1c094eac7f5f" integrity sha512-1P1OROm/rdubP5aFDSZQILU0vrLCJ4fvHt6EoqHEM+2D/G5MK3bIaymUKLit8Js9gbns5UyJnkP/TZROLw4tUA== +"@sinclair/typebox@^0.27.8": + version "0.27.8" + resolved "https://registry.yarnpkg.com/@sinclair/typebox/-/typebox-0.27.8.tgz#6667fac16c436b5434a387a34dedb013198f6e6e" + integrity sha512-+Fj43pSMwJs4KRrH/938Uf+uAELIgVBmQzg/q1YG10djyfA3TnrU8N8XzqCh/okZdszqBQTZf96idMfE5lnwTA== + "@sinonjs/commons@^1.7.0": version "1.8.6" resolved "https://registry.yarnpkg.com/@sinonjs/commons/-/commons-1.8.6.tgz#80c516a4dc264c2a69115e7578d62581ff455ed9" @@ -3142,7 +3428,7 @@ "@types/qs" "*" "@types/serve-static" "*" -"@types/graceful-fs@^4.1.2": +"@types/graceful-fs@^4.1.2", "@types/graceful-fs@^4.1.3": version "4.1.9" resolved "https://registry.yarnpkg.com/@types/graceful-fs/-/graceful-fs-4.1.9.tgz#2a06bc0f68a20ab37b3e36aa238be6abdf49e8b4" integrity sha512-olP3sd1qOEe5dXTSaFvQG+02VdRXcdytWLAZsAq1PecU8uqQAhkrnbli7DagjtXKW/Bl7YJbUsa8MPcuc8LHEQ== @@ -3297,6 +3583,11 @@ dependencies: "@types/node" "*" +"@types/resolve@1.20.2": + version "1.20.2" + resolved "https://registry.yarnpkg.com/@types/resolve/-/resolve-1.20.2.tgz#97d26e00cd4a0423b4af620abecf3e6f442b7975" + integrity sha512-60BCwRFOZCQhDncwQdxxeOEEkbc5dIMccYLwbxsS4TUNeVECQ/pBJ0j09mrHOl/JJvpRPGwO9SvE4nR2Nb/a4Q== + "@types/retry@0.12.0": version "0.12.0" resolved "https://registry.yarnpkg.com/@types/retry/-/retry-0.12.0.tgz#2b35eccfcee7d38cd72ad99232fbd58bffb3c84d" @@ -3908,7 +4199,7 @@ array-buffer-byte-length@^1.0.0: call-bind "^1.0.2" is-array-buffer "^3.0.1" -array-find-index@^1.0.1: +array-find-index@^1.0.1, array-find-index@^1.0.2: version "1.0.2" resolved "https://registry.yarnpkg.com/array-find-index/-/array-find-index-1.0.2.tgz#df010aa1287e164bbda6f9723b0a96a1ec4187a1" integrity sha512-M1HQyIXcBGtVywBt8WVdim+lrNaK7VHp99Qt5pSNziXznKHViIBbXWtfRTpEFpF/c4FdfxNAsCCwPp5phBYJtw== @@ -4157,6 +4448,19 @@ babel-jest@^27.4.2, babel-jest@^27.5.1: graceful-fs "^4.2.9" slash "^3.0.0" +babel-jest@^29.7.0: + version "29.7.0" + resolved "https://registry.yarnpkg.com/babel-jest/-/babel-jest-29.7.0.tgz#f4369919225b684c56085998ac63dbd05be020d5" + integrity sha512-BrvGY3xZSwEcCzKvKsCi2GgHqDqsYkOP4/by5xCgIwGXQxIEh+8ew3gmrE1y7XRR6LHZIj6yLYnUi/mm2KXKBg== + dependencies: + "@jest/transform" "^29.7.0" + "@types/babel__core" "^7.1.14" + babel-plugin-istanbul "^6.1.1" + babel-preset-jest "^29.6.3" + chalk "^4.0.0" + graceful-fs "^4.2.9" + slash "^3.0.0" + babel-loader@^8.2.3: version "8.3.0" resolved "https://registry.yarnpkg.com/babel-loader/-/babel-loader-8.3.0.tgz#124936e841ba4fe8176786d6ff28add1f134d6a8" @@ -4188,6 +4492,16 @@ babel-plugin-jest-hoist@^27.5.1: "@types/babel__core" "^7.0.0" "@types/babel__traverse" "^7.0.6" +babel-plugin-jest-hoist@^29.6.3: + version "29.6.3" + resolved "https://registry.yarnpkg.com/babel-plugin-jest-hoist/-/babel-plugin-jest-hoist-29.6.3.tgz#aadbe943464182a8922c3c927c3067ff40d24626" + integrity sha512-ESAc/RJvGTFEzRwOTT4+lNDk/GNHMkKbNzsvT0qKRfDyyYTskxB5rnU2njIDYVxXCBHHEI1c0YwHob3WaYujOg== + dependencies: + "@babel/template" "^7.3.3" + "@babel/types" "^7.3.3" + "@types/babel__core" "^7.1.14" + "@types/babel__traverse" "^7.0.6" + babel-plugin-macros@^3.1.0: version "3.1.0" resolved "https://registry.yarnpkg.com/babel-plugin-macros/-/babel-plugin-macros-3.1.0.tgz#9ef6dc74deb934b4db344dc973ee851d148c50c1" @@ -4265,6 +4579,14 @@ babel-preset-jest@^27.5.1: babel-plugin-jest-hoist "^27.5.1" babel-preset-current-node-syntax "^1.0.0" +babel-preset-jest@^29.6.3: + version "29.6.3" + resolved "https://registry.yarnpkg.com/babel-preset-jest/-/babel-preset-jest-29.6.3.tgz#fa05fa510e7d493896d7b0dd2033601c840f171c" + integrity sha512-0B3bhxR6snWXJZtR/RliHTDPRgn1sNHOR0yVtq/IiQFyuOVjFS+wuio/R4gSNkyYmKmJB4wGZv2NZanmKmTnNA== + dependencies: + babel-plugin-jest-hoist "^29.6.3" + babel-preset-current-node-syntax "^1.0.0" + babel-preset-react-app@^10.0.1: version "10.0.1" resolved "https://registry.yarnpkg.com/babel-preset-react-app/-/babel-preset-react-app-10.0.1.tgz#ed6005a20a24f2c88521809fa9aea99903751584" @@ -4565,7 +4887,7 @@ browserify-zlib@^0.2.0: dependencies: pako "~1.0.5" -browserslist@^4.0.0, browserslist@^4.14.5, browserslist@^4.18.1, browserslist@^4.21.10, browserslist@^4.21.4, browserslist@^4.21.9, browserslist@^4.22.1: +browserslist@^4.0.0, browserslist@^4.14.5, browserslist@^4.18.1, browserslist@^4.21.10, browserslist@^4.21.4, browserslist@^4.21.9, browserslist@^4.22.1, browserslist@^4.22.2: version "4.22.2" resolved "https://registry.yarnpkg.com/browserslist/-/browserslist-4.22.2.tgz#704c4943072bd81ea18997f3bd2180e89c77874b" integrity sha512-0UgcrvQmBDvZHFGdYUehrCNIazki7/lUP3kkoi/r3YB2amZbFM9J43ZRkJTXBUZK4gmx56+Sqk9+Vs9mwZx9+A== @@ -4630,7 +4952,7 @@ buffers@~0.1.1: resolved "https://registry.yarnpkg.com/buffers/-/buffers-0.1.1.tgz#b24579c3bed4d6d396aeee6d9a8ae7f5482ab7bb" integrity sha512-9q/rDEGSb/Qsvv2qvzIzdluL5k7AaJOTrw23z9reQthrbF7is4CtlT0DXyO1oei2DCp4uojjzQ7igaSHp1kAEQ== -builtin-modules@^3.1.0: +builtin-modules@^3.1.0, builtin-modules@^3.3.0: version "3.3.0" resolved "https://registry.yarnpkg.com/builtin-modules/-/builtin-modules-3.3.0.tgz#cae62812b89801e9656336e46223e030386be7b6" integrity sha512-zhaCDicdLuWN5UbN5IMnFqNMhNfo919sH85y2/ea+5Yg9TsTkeZxpL+JLbp6cgYFS4sRLp3YV4S6yDuqVWHYOw== @@ -5036,6 +5358,11 @@ commander@^8.3.0: resolved "https://registry.yarnpkg.com/commander/-/commander-8.3.0.tgz#4837ea1b2da67b9c616a67afbb0fafee567bca66" integrity sha512-OkTL9umf+He2DZkUq8f8J9of7yL6RJKI24dVITBmNfZBmri9zYZQrKkuXiKhyfPSu8tUhnVBB1iKXevvnlR4Ww== +commenting@~1.1.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/commenting/-/commenting-1.1.0.tgz#fae14345c6437b8554f30bc6aa6c1e1633033590" + integrity sha512-YeNK4tavZwtH7jEgK1ZINXzLKm6DZdEMfsaaieOsCAN0S8vsY7UeuO3Q7d/M018EFgE+IeUAuBOKkFccBZsUZA== + common-path-prefix@^3.0.0: version "3.0.0" resolved "https://registry.yarnpkg.com/common-path-prefix/-/common-path-prefix-3.0.0.tgz#7d007a7e07c58c4b4d5f433131a19141b29f11e0" @@ -5599,7 +5926,7 @@ debug@2.6.9, debug@^2.1.3, debug@^2.6.0: dependencies: ms "2.0.0" -debug@4, debug@4.x, debug@^4.0.0, debug@^4.1.0, debug@^4.1.1, debug@^4.2.0, debug@^4.3.2, debug@^4.3.4: +debug@4, debug@4.x, debug@^4.0.0, debug@^4.1.0, debug@^4.1.1, debug@^4.2.0, debug@^4.3.1, debug@^4.3.2, debug@^4.3.4: version "4.3.4" resolved "https://registry.yarnpkg.com/debug/-/debug-4.3.4.tgz#1319f6579357f2338d3337d2cdd4914bb5dcc865" integrity sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ== @@ -6699,6 +7026,11 @@ estree-walker@^1.0.1: resolved "https://registry.yarnpkg.com/estree-walker/-/estree-walker-1.0.1.tgz#31bc5d612c96b704106b477e6dd5d8aa138cb700" integrity sha512-1fMXF3YP4pZZVozF8j/ZLfvnR8NSIljt56UhbZ5PeeDmmGHpgpdwQt7ITlGvYaQukCvuBRMLEiKiYC+oeIg4cg== +estree-walker@^2.0.2: + version "2.0.2" + resolved "https://registry.yarnpkg.com/estree-walker/-/estree-walker-2.0.2.tgz#52f010178c2a4c117a7757cfe942adb7d2da4cac" + integrity sha512-Rfkk/Mp/DL7JVje3u18FxFujQlTNR2q6QfMSMB7AvCBx91NGj/ba3kCfza0f6dVDbw7YlRf/nDrn7pQrCCyQ/w== + esutils@^2.0.2: version "2.0.3" resolved "https://registry.yarnpkg.com/esutils/-/esutils-2.0.3.tgz#74d2eb4de0b8da1293711910d50775b9b710ef64" @@ -7311,7 +7643,7 @@ glob@7.1.6: once "^1.3.0" path-is-absolute "^1.0.0" -glob@^7.1.1, glob@^7.1.2, glob@^7.1.3, glob@^7.1.4, glob@^7.1.6: +glob@^7.1.1, glob@^7.1.2, glob@^7.1.3, glob@^7.1.4, glob@^7.1.6, glob@~7.2.0: version "7.2.3" resolved "https://registry.yarnpkg.com/glob/-/glob-7.2.3.tgz#b8df0fb802bbfa8e89bd1d938b4e16578ed44f2b" integrity sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q== @@ -8015,6 +8347,13 @@ is-buffer@^2.0.0: resolved "https://registry.yarnpkg.com/is-buffer/-/is-buffer-2.0.5.tgz#ebc252e400d22ff8d77fa09888821a24a658c191" integrity sha512-i2R6zNFDwgEHJyQUtJEk0XFi1i0dPFn/oqjK3/vPCcDeJvW5NQ83V8QbicfF1SupOaB0h8ntgBC2YiE7dfyctQ== +is-builtin-module@^3.2.1: + version "3.2.1" + resolved "https://registry.yarnpkg.com/is-builtin-module/-/is-builtin-module-3.2.1.tgz#f03271717d8654cfcaf07ab0463faa3571581169" + integrity sha512-BSLE3HnV2syZ0FK0iMA/yUGplUeMmNz4AW5fnTunbCIqZi4vG3WjJT9FHMy5D69xmAYBHXQhJdALdpwVxV501A== + dependencies: + builtin-modules "^3.3.0" + is-callable@^1.1.3, is-callable@^1.1.4, is-callable@^1.1.5, is-callable@^1.2.7: version "1.2.7" resolved "https://registry.yarnpkg.com/is-callable/-/is-callable-1.2.7.tgz#3bc2a85ea742d9e36205dcacdd72ca1fdc51b055" @@ -8610,6 +8949,25 @@ jest-haste-map@^27.5.1: optionalDependencies: fsevents "^2.3.2" +jest-haste-map@^29.7.0: + version "29.7.0" + resolved "https://registry.yarnpkg.com/jest-haste-map/-/jest-haste-map-29.7.0.tgz#3c2396524482f5a0506376e6c858c3bbcc17b104" + integrity sha512-fP8u2pyfqx0K1rGn1R9pyE0/KTn+G7PxktWidOBTqFPLYX0b9ksaMFkhK5vrS3DVun09pckLdlx90QthlW7AmA== + dependencies: + "@jest/types" "^29.6.3" + "@types/graceful-fs" "^4.1.3" + "@types/node" "*" + anymatch "^3.0.3" + fb-watchman "^2.0.0" + graceful-fs "^4.2.9" + jest-regex-util "^29.6.3" + jest-util "^29.7.0" + jest-worker "^29.7.0" + micromatch "^4.0.4" + walker "^1.0.8" + optionalDependencies: + fsevents "^2.3.2" + jest-jasmine2@^27.5.1: version "27.5.1" resolved "https://registry.yarnpkg.com/jest-jasmine2/-/jest-jasmine2-27.5.1.tgz#a037b0034ef49a9f3d71c4375a796f3b230d1ac4" @@ -8711,6 +9069,11 @@ jest-regex-util@^28.0.0: resolved "https://registry.yarnpkg.com/jest-regex-util/-/jest-regex-util-28.0.2.tgz#afdc377a3b25fb6e80825adcf76c854e5bf47ead" integrity sha512-4s0IgyNIy0y9FK+cjoVYoxamT7Zeo7MhzqRGx7YDYmaQn1wucY9rotiGkBzzcMXTtjrCAP/f7f+E0F7+fxPNdw== +jest-regex-util@^29.6.3: + version "29.6.3" + resolved "https://registry.yarnpkg.com/jest-regex-util/-/jest-regex-util-29.6.3.tgz#4a556d9c776af68e1c5f48194f4d0327d24e8a52" + integrity sha512-KJJBsRCyyLNWCNBOvZyRDnAIfUiRJ8v+hOBQYGn8gDyF3UegwiP4gwRR3/SDa42g1YbVycTidUF3rKjyLFDWbg== + jest-resolve-dependencies@^27.5.1: version "27.5.1" resolved "https://registry.yarnpkg.com/jest-resolve-dependencies/-/jest-resolve-dependencies-27.5.1.tgz#d811ecc8305e731cc86dd79741ee98fed06f1da8" @@ -8851,6 +9214,18 @@ jest-util@^28.1.3: graceful-fs "^4.2.9" picomatch "^2.2.3" +jest-util@^29.7.0: + version "29.7.0" + resolved "https://registry.yarnpkg.com/jest-util/-/jest-util-29.7.0.tgz#23c2b62bfb22be82b44de98055802ff3710fc0bc" + integrity sha512-z6EbKajIpqGKU56y5KBUgy1dt1ihhQJgWzUlZHArA/+X2ad7Cb5iF+AK1EWVL/Bo7Rz9uurpqw6SiBCefUbCGA== + dependencies: + "@jest/types" "^29.6.3" + "@types/node" "*" + chalk "^4.0.0" + ci-info "^3.2.0" + graceful-fs "^4.2.9" + picomatch "^2.2.3" + jest-validate@^27.5.1: version "27.5.1" resolved "https://registry.yarnpkg.com/jest-validate/-/jest-validate-27.5.1.tgz#9197d54dc0bdb52260b8db40b46ae668e04df067" @@ -8930,6 +9305,16 @@ jest-worker@^28.0.2: merge-stream "^2.0.0" supports-color "^8.0.0" +jest-worker@^29.7.0: + version "29.7.0" + resolved "https://registry.yarnpkg.com/jest-worker/-/jest-worker-29.7.0.tgz#acad073acbbaeb7262bd5389e1bcf43e10058d4a" + integrity sha512-eIz2msL/EzL9UFTFFx7jBTkeZfku0yUAyZZZmJ93H2TYEiroIx2PQjEXcwYtYl8zXCxb+PAmA2hLIt/6ZEkPHw== + dependencies: + "@types/node" "*" + jest-util "^29.7.0" + merge-stream "^2.0.0" + supports-color "^8.0.0" + jest@^27.4.3: version "27.5.1" resolved "https://registry.yarnpkg.com/jest/-/jest-27.5.1.tgz#dadf33ba70a779be7a6fc33015843b51494f63fc" @@ -9455,7 +9840,7 @@ lodash.uniq@^4.5.0: resolved "https://registry.yarnpkg.com/lodash.uniq/-/lodash.uniq-4.5.0.tgz#d0225373aeb652adc1bc82e4945339a842754773" integrity sha512-xfBaXQd9ryd9dlSDvnvI0lvxfLJlYAZzXomUYzLKtUeOQvOP5piqAWuGtrhWeqaXK9hhoM/iyJc5AV+XfsX3HQ== -lodash@^4.17.14, lodash@^4.17.20, lodash@^4.17.21, lodash@^4.17.4, lodash@^4.7.0: +lodash@^4.17.14, lodash@^4.17.20, lodash@^4.17.21, lodash@^4.17.4, lodash@^4.7.0, lodash@~4.17.21: version "4.17.21" resolved "https://registry.yarnpkg.com/lodash/-/lodash-4.17.21.tgz#679591c564c3bffaae8454cf0b3df370c3d6911c" integrity sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg== @@ -9541,6 +9926,13 @@ magic-string@^0.25.0, magic-string@^0.25.7: dependencies: sourcemap-codec "^1.4.8" +magic-string@~0.30.0: + version "0.30.5" + resolved "https://registry.yarnpkg.com/magic-string/-/magic-string-0.30.5.tgz#1994d980bd1c8835dc6e78db7cbd4ae4f24746f9" + integrity sha512-7xlpfBaQaP/T6Vh8MO/EqXSW5En6INHEvEXQiuff7Gku0PWjU3uf6w/j9o7O+SpB5fOAkrI5HeoNgwjEO0pFsA== + dependencies: + "@jridgewell/sourcemap-codec" "^1.4.15" + make-dir@^1.0.0: version "1.3.0" resolved "https://registry.yarnpkg.com/make-dir/-/make-dir-1.3.0.tgz#79c1033b80515bd6d24ec9933e860ca75ee27f0c" @@ -9796,12 +10188,17 @@ mkdirp@^0.5.1, mkdirp@~0.5.1: dependencies: minimist "^1.2.6" +mkdirp@~3.0.0: + version "3.0.1" + resolved "https://registry.yarnpkg.com/mkdirp/-/mkdirp-3.0.1.tgz#e44e4c5607fb279c168241713cc6e0fea9adcb50" + integrity sha512-+NsyUUAZDmo6YVHzL/stxSu3t9YS1iljliy3BSDrXJ/dkn1KYdmtZODGGjLcc9XLgVVpH4KshHB8XmZgMhaBXg== + mkpath@^0.1.0: version "0.1.0" resolved "https://registry.yarnpkg.com/mkpath/-/mkpath-0.1.0.tgz#7554a6f8d871834cc97b5462b122c4c124d6de91" integrity sha512-bauHShmaxVQiEvlrAPWxSPn8spSL8gDVRl11r8vLT4r/KdnknLqtqwQbToZ2Oa8sJkExYY1z6/d+X7pNiqo4yg== -moment@2.29.4: +moment@2.29.4, moment@~2.29.3: version "2.29.4" resolved "https://registry.yarnpkg.com/moment/-/moment-2.29.4.tgz#3dbe052889fe7c1b2ed966fcb3a77328964ef108" integrity sha512-5LC9SOxjSc2HF6vO2CyuTDNivEdoz2IvyJJGj6X8DJ0eFyfszE0QiEd+iXmBvUP3WHxSjFH/vIsA0EN00cgr8w== @@ -10330,6 +10727,11 @@ package-json@^4.0.0: registry-url "^3.0.3" semver "^5.1.0" +package-name-regex@~2.0.6: + version "2.0.6" + resolved "https://registry.yarnpkg.com/package-name-regex/-/package-name-regex-2.0.6.tgz#b54bcb04d950e38082b7bb38fa558e01c1679334" + integrity sha512-gFL35q7kbE/zBaPA3UKhp2vSzcPYx2ecbYuwv1ucE9Il6IIgBDweBlH8D68UFGZic2MkllKa2KHCfC1IQBQUYA== + pako@^0.2.5: version "0.2.9" resolved "https://registry.yarnpkg.com/pako/-/pako-0.2.9.tgz#f3f7522f4ef782348da8161bad9ecfd51bf83a75" @@ -12209,7 +12611,7 @@ resolve@1.1.7: resolved "https://registry.yarnpkg.com/resolve/-/resolve-1.1.7.tgz#203114d82ad2c5ed9e8e0411b3932875e889e97b" integrity sha512-9znBF0vBcaSN3W2j7wKvdERPwqTxSpCq+if5C0WoTCyV9n24rua28jeuQ2pL/HOf+yUe/Mef+H/5p60K0Id3bg== -resolve@^1.1.5, resolve@^1.1.7, resolve@^1.10.0, resolve@^1.14.2, resolve@^1.19.0, resolve@^1.20.0, resolve@^1.22.2, resolve@^1.22.4: +resolve@^1.1.5, resolve@^1.1.7, resolve@^1.10.0, resolve@^1.14.2, resolve@^1.19.0, resolve@^1.20.0, resolve@^1.22.1, resolve@^1.22.2, resolve@^1.22.4: version "1.22.8" resolved "https://registry.yarnpkg.com/resolve/-/resolve-1.22.8.tgz#b6c87a9f2aa06dfab52e3d70ac8cde321fa5a48d" integrity sha512-oKWePCxqpd6FlLvGV1VU0x7bkPmmCNolxzjMf4NczoDnQcIWrAF+cPtZn5i6n+RfD2d9i0tzpKnG6Yk168yIyw== @@ -12277,6 +12679,21 @@ ripemd160@^2.0.0, ripemd160@^2.0.1: hash-base "^3.0.0" inherits "^2.0.1" +rollup-plugin-license@^3.0.1: + version "3.2.0" + resolved "https://registry.yarnpkg.com/rollup-plugin-license/-/rollup-plugin-license-3.2.0.tgz#99958a5ed2ce4796a3a59bdcc6836dfd1c4df0e1" + integrity sha512-gLtSOTE3hZ/mDgxg1HvYz87timTpLlyWXnV7OTyYMhn+Esek+xKxAOjtTsYnfMFGtsBWX+hvqC4b2Ct5ABpE6A== + dependencies: + commenting "~1.1.0" + glob "~7.2.0" + lodash "~4.17.21" + magic-string "~0.30.0" + mkdirp "~3.0.0" + moment "~2.29.3" + package-name-regex "~2.0.6" + spdx-expression-validate "~2.0.0" + spdx-satisfies "~5.0.1" + rollup-plugin-terser@^7.0.0: version "7.0.2" resolved "https://registry.yarnpkg.com/rollup-plugin-terser/-/rollup-plugin-terser-7.0.2.tgz#e8fbba4869981b2dc35ae7e8a502d5c6c04d324d" @@ -12294,6 +12711,13 @@ rollup@^2.43.1: optionalDependencies: fsevents "~2.3.2" +rollup@^3.7.1: + version "3.29.4" + resolved "https://registry.yarnpkg.com/rollup/-/rollup-3.29.4.tgz#4d70c0f9834146df8705bfb69a9a19c9e1109981" + integrity sha512-oWzmBZwvYrU0iJHtDmhsm662rC15FRXmcjCk1xD771dFDx5jJ02ufAQQTn0etB2emNk4J9EZg/yWKpsn9BWGRw== + optionalDependencies: + fsevents "~2.3.2" + rst-selector-parser@^2.2.3: version "2.2.3" resolved "https://registry.yarnpkg.com/rst-selector-parser/-/rst-selector-parser-2.2.3.tgz#81b230ea2fcc6066c89e3472de794285d9b03d91" @@ -12687,7 +13111,7 @@ sift@16.0.1: resolved "https://registry.yarnpkg.com/sift/-/sift-16.0.1.tgz#e9c2ccc72191585008cf3e36fc447b2d2633a053" integrity sha512-Wv6BjQ5zbhW7VFefWusVP33T/EM0vYikCaQ2qR8yULbsilAT8/wQaXvuQ3ptGLpoKx+lihJE3y2UTgKDyyNHZQ== -signal-exit@^3.0.0, signal-exit@^3.0.2, signal-exit@^3.0.3: +signal-exit@^3.0.0, signal-exit@^3.0.2, signal-exit@^3.0.3, signal-exit@^3.0.7: version "3.0.7" resolved "https://registry.yarnpkg.com/signal-exit/-/signal-exit-3.0.7.tgz#a9a1767f8af84155114eaabd73f99273c8f59ad9" integrity sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ== @@ -12740,6 +13164,11 @@ smart-buffer@^4.2.0: resolved "https://registry.yarnpkg.com/smart-buffer/-/smart-buffer-4.2.0.tgz#6e1d71fa4f18c05f7d0ff216dd16a481d0e8d9ae" integrity sha512-94hK0Hh8rPqQl2xXc3HsaBoOXKV20MToPkcXvwbISWLEs+64sBq5kFgn2kJDHb1Pry9yrP0dxrCI9RRci7RXKg== +smob@^0.0.6: + version "0.0.6" + resolved "https://registry.yarnpkg.com/smob/-/smob-0.0.6.tgz#09b268fea916158a2781c152044c6155adbb8aa1" + integrity sha512-V21+XeNni+tTyiST1MHsa84AQhT1aFZipzPpOFAVB8DkHzwJyjjAmt9bgwnuZiZWnIbMo2duE29wybxv/7HWUw== + sockjs@^0.3.24: version "0.3.24" resolved "https://registry.yarnpkg.com/sockjs/-/sockjs-0.3.24.tgz#c9bc8995f33a111bea0395ec30aa3206bdb5ccce" @@ -12843,6 +13272,15 @@ sparse-bitfield@^3.0.3: dependencies: memory-pager "^1.0.2" +spdx-compare@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/spdx-compare/-/spdx-compare-1.0.0.tgz#2c55f117362078d7409e6d7b08ce70a857cd3ed7" + integrity sha512-C1mDZOX0hnu0ep9dfmuoi03+eOdDoz2yvK79RxbcrVEG1NO1Ph35yW102DHWKN4pk80nwCgeMmSY5L25VE4D9A== + dependencies: + array-find-index "^1.0.2" + spdx-expression-parse "^3.0.0" + spdx-ranges "^2.0.0" + spdx-correct@^3.0.0: version "3.2.0" resolved "https://registry.yarnpkg.com/spdx-correct/-/spdx-correct-3.2.0.tgz#4f5ab0668f0059e34f9c00dce331784a12de4e9c" @@ -12864,11 +13302,32 @@ spdx-expression-parse@^3.0.0: spdx-exceptions "^2.1.0" spdx-license-ids "^3.0.0" +spdx-expression-validate@~2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/spdx-expression-validate/-/spdx-expression-validate-2.0.0.tgz#25c9408e1c63fad94fff5517bb7101ffcd23350b" + integrity sha512-b3wydZLM+Tc6CFvaRDBOF9d76oGIHNCLYFeHbftFXUWjnfZWganmDmvtM5sm1cRwJc/VDBMLyGGrsLFd1vOxbg== + dependencies: + spdx-expression-parse "^3.0.0" + spdx-license-ids@^3.0.0: version "3.0.16" resolved "https://registry.yarnpkg.com/spdx-license-ids/-/spdx-license-ids-3.0.16.tgz#a14f64e0954f6e25cc6587bd4f392522db0d998f" integrity sha512-eWN+LnM3GR6gPu35WxNgbGl8rmY1AEmoMDvL/QD6zYmPWgywxWqJWNdLGT+ke8dKNWrcYgYjPpG5gbTfghP8rw== +spdx-ranges@^2.0.0: + version "2.1.1" + resolved "https://registry.yarnpkg.com/spdx-ranges/-/spdx-ranges-2.1.1.tgz#87573927ba51e92b3f4550ab60bfc83dd07bac20" + integrity sha512-mcdpQFV7UDAgLpXEE/jOMqvK4LBoO0uTQg0uvXUewmEFhpiZx5yJSZITHB8w1ZahKdhfZqP5GPEOKLyEq5p8XA== + +spdx-satisfies@~5.0.1: + version "5.0.1" + resolved "https://registry.yarnpkg.com/spdx-satisfies/-/spdx-satisfies-5.0.1.tgz#9feeb2524686c08e5f7933c16248d4fdf07ed6a6" + integrity sha512-Nwor6W6gzFp8XX4neaKQ7ChV4wmpSh2sSDemMFSzHxpTw460jxFYeOn+jq4ybnSSw/5sc3pjka9MQPouksQNpw== + dependencies: + spdx-compare "^1.0.0" + spdx-expression-parse "^3.0.0" + spdx-ranges "^2.0.0" + spdy-transport@^3.0.0: version "3.0.0" resolved "https://registry.yarnpkg.com/spdy-transport/-/spdy-transport-3.0.0.tgz#00d4863a6400ad75df93361a1608605e5dcdcf31" @@ -13415,6 +13874,16 @@ terser@^5.0.0, terser@^5.10.0, terser@^5.16.8: commander "^2.20.0" source-map-support "~0.5.20" +terser@^5.15.1: + version "5.26.0" + resolved "https://registry.yarnpkg.com/terser/-/terser-5.26.0.tgz#ee9f05d929f4189a9c28a0feb889d96d50126fe1" + integrity sha512-dytTGoE2oHgbNV9nTzgBEPaqAWvcJNl66VZ0BkJqlvp71IjO8CxdBx/ykCNb47cLnCmCvRZ6ZR0tLkqvZCdVBQ== + dependencies: + "@jridgewell/source-map" "^0.3.3" + acorn "^8.8.2" + commander "^2.20.0" + source-map-support "~0.5.20" + test-exclude@^6.0.0: version "6.0.0" resolved "https://registry.yarnpkg.com/test-exclude/-/test-exclude-6.0.0.tgz#04a8698661d805ea6fa293b6cb9e63ac044ef15e" @@ -14141,7 +14610,7 @@ w3c-xmlserializer@^2.0.0: dependencies: xml-name-validator "^3.0.0" -walker@^1.0.7: +walker@^1.0.7, walker@^1.0.8: version "1.0.8" resolved "https://registry.yarnpkg.com/walker/-/walker-1.0.8.tgz#bd498db477afe573dc04185f011d3ab8a8d7653f" integrity sha512-ts/8E8l5b7kY0vlWLewOkDXMmPdLcVV4GmOQLyxuSswIJsweeFZtAsMF7k1Nszz+TYBQrlYRmzOnr398y1JemQ== @@ -14647,6 +15116,14 @@ write-file-atomic@^3.0.0: signal-exit "^3.0.2" typedarray-to-buffer "^3.1.5" +write-file-atomic@^4.0.2: + version "4.0.2" + resolved "https://registry.yarnpkg.com/write-file-atomic/-/write-file-atomic-4.0.2.tgz#a9df01ae5b77858a027fd2e80768ee433555fcfd" + integrity sha512-7KxauUdBmSdWnmpaGFg+ppNjKF8uNLry8LyzjauQDOVONfFLNKrKvQOxZ/VuTIcS/gge/YNahf5RIIQWTSarlg== + dependencies: + imurmurhash "^0.1.4" + signal-exit "^3.0.7" + ws@^7.4.6, ws@^7.5.6: version "7.5.9" resolved "https://registry.yarnpkg.com/ws/-/ws-7.5.9.tgz#54fa7db29f4c7cec68b1ddd3a89de099942bb591" From b372a3c57d79b619761d0f06ef2268718e6a07c4 Mon Sep 17 00:00:00 2001 From: Rodri Sanchez Date: Thu, 14 Dec 2023 15:48:52 -0300 Subject: [PATCH 23/23] Remove unnecesary package --- package.json | 6 ++---- 1 file changed, 2 insertions(+), 4 deletions(-) diff --git a/package.json b/package.json index ee7264763..7b0b13e48 100644 --- a/package.json +++ b/package.json @@ -95,14 +95,13 @@ "@craco/craco": "^7.1.0", "@types/mime-types": "^2.1.1", "@wojtekmaj/enzyme-adapter-react-17": "^0.6.0", - "babel-plugin-transform-import-meta": "^2.2.1", "babel-jest": "^29.7.0", + "babel-plugin-transform-import-meta": "^2.2.1", "decompress-zip": "^0.3.1", "enzyme": "^3.11.0", "enzyme-to-json": "3.3.5", "fake-indexeddb": "^4.0.1", "husky": "^1.1.4", - "identity-obj-proxy": "^3.0.0", "jest-mock-axios": "^3.2.0", "lint-staged": "^10.0.3", "node-polyfill-webpack-plugin": "^2.0.1", @@ -131,8 +130,7 @@ "node_modules/(?!idb|microsoft-cognitiveservices-speech-sdk|@analytics-debugger/ga4mp)" ], "moduleNameMapper": { - "\\.(css|less)$": "/src/__mocks__/styleMock.js", - "\\.(jpg|jpeg|png|gif|eot|otf|webp|svg|ttf|woff|woff2|mp4|webm|wav|mp3|m4a|aac|oga)$": "/__mocks__/fileMock.js" + "\\.(css|less)$": "/src/__mocks__/styleMock.js" }, "collectCoverageFrom": [ "src/**/*.js",