diff --git a/cypress-tests/cypress/constants/selectors/button.js b/cypress-tests/cypress/constants/selectors/button.js deleted file mode 100644 index b8b7106c39..0000000000 --- a/cypress-tests/cypress/constants/selectors/button.js +++ /dev/null @@ -1,118 +0,0 @@ -export const buttonSelector={ - buttonWidget: "[data-cy=button-widget]", - buttonProperties: "[data-rb-event-key=properties]", - buttonStyles: "[data-rb-event-key=styles]", - buttonName: "[data-cy=edit-widget-name]", - propertiesElements:{ - propertiesAccordion: "[data-cy=widget-accordion]:eq(0)", - buttonTextLabel:"[data-cy=accordion-components]:eq(0)", - buttonTextInput: '#collapse-0 > .accordion-body > :nth-child(1) > :nth-child(1) > .row > .col > .code-hinter-wrapper > [data-cy=accordion-input] > .CodeMirror >> .CodeMirror-sizer >>.CodeMirror-lines >> .CodeMirror-code >> span', - loadingState: "[data-cy=accordion-components]:eq(1)", - eventsAccordion: "[data-cy=widget-accordion]:eq(1)", - addEventListner: "[data-cy=add-event-handler]", - noEventHandler: "[data-cy=no-event-handler-message]", - generalAccordion: "[data-cy=widget-accordion]:eq(2)", - layoutAccordion: "[data-cy=widget-accordion]:eq(3)", - showOnDesktopLabel: "[data-cy=accordion-components]:eq(3)", - showOnMobileLabel: "[data-cy=accordion-components]:eq(4)", - documentationLink: "[data-cy=widget-documentation-link]", - }, - loadingStateFx: "[data-cy=fx-button]:eq(3)", - loadingStateToggle: "[data-cy=toggle-button]:eq(0)", - desktopFx:"[data-cy=fx-button]:eq(6)", - desktopToggle:"[data-cy=toggle-button]:eq(1)", - mobileFx: "[data-cy=fx-button]:eq(8)", - mobileToggle: "[data-cy=toggle-button]:eq(2)", - buttonInputField: "[data-cy=accordion-input] > .CodeMirror > .CodeMirror-scroll > .CodeMirror-sizer", - fxLoadingState:".cm-atom:eq(0)", - loadingStateInputFx: "[data-cy=fx-button]:eq(2)", - eventHandler: "[data-cy=event-handler]", - popoverCard: "[data-cy=popover-card]", - eventLabel: "[data-cy=event-label]", - eventSelection: "[data-cy=event-selection] > .select-search > .select-search__value > .select-search__input", - actionLabel: "[data-cy=action-label]", - actionSelection: "[data-cy=action-selection] ", - actionOption: "[data-cy=action-option]", - messageLabel: "[data-cy=message-label]", - messageText: "[data-cy=accordion-input] > .CodeMirror > .CodeMirror-scroll > .CodeMirror-sizer >:eq(11)", - alertTypeLabel: "[data-cy=alert-type-label]", - alertMessageType: "[data-cy=alert-message-type]", - fxDesktop:".cm-atom:eq(2)", - desktopInputFx: "[data-cy=fx-button]:eq(5)", - mobileInputFx: "[data-cy=fx-button]:eq(7)", - fxMobile: ".cm-atom:eq(4)", - stylesElements: { - backgroundColorLabel: "[data-cy=accordion-components]:eq(5)", - textColorLabel: "[data-cy=accordion-components]:eq(6)", - loaderColorLabel: "[data-cy=accordion-components]:eq(7)", - visibilityLabel: "[data-cy=accordion-components]:eq(8)", - disableLabel: "[data-cy=accordion-components]:eq(9)", - borderRadiusLabel: "[data-cy=accordion-components]:eq(10)", - }, - stylesInput: { - backgroundColorInputField: "[data-cy=color-picker-input]:eq(0)", - textColorInputField: "[data-cy=color-picker-input]:eq(1)", - loaderColorInputField: "[data-cy=color-picker-input]:eq(2)", - borderRadiusInputField: "[data-cy=border-radius-input]", - }, - stylesFx:{ - backgroundColor: "[data-cy=fx-button]:eq(10)", - textColor: "[data-cy=fx-button]:eq(12)", - loaderColor: "[data-cy=fx-button]:eq(14)", - visibility: "[data-cy=fx-button]:eq(16)", - disable: "[data-cy=fx-button]:eq(18)", - borderRadius: "[data-cy=fx-button]:eq(20)", - }, - backgroundColorSelector:"[data-cy=color-picker-input] > .col-auto:eq(0)", - colorPickCard: ".sketch-picker", - hexLabel:'[style="-webkit-box-flex: 2; flex: 2 1 0%;"] > div > label', - backgroundColorInput: "[data-cy=accordion-input] > .CodeMirror >> .CodeMirror-sizer .CodeMirror-lines >> .CodeMirror-code >> span:eq(1)", - backgroundColorCloseFx:"[data-cy=fx-button]:eq(9)", - backgroundColor:{ - inputHex: "#rc-editable-input-1", - inputR: "#rc-editable-input-2", - labelR: ":nth-child(2) > div > label", - inputG: "#rc-editable-input-3", - labelG:":nth-child(3) > div > label", - inputB: "#rc-editable-input-4", - labelB: ":nth-child(4) > div > label", - inputA: "#rc-editable-input-5", - labelA: ":nth-child(5) > div > label", - }, - textColorSelector: "[data-cy=color-picker-input] > .col-auto:eq(1)", - textColorInput: "[data-cy=accordion-input] > .CodeMirror >> .CodeMirror-sizer .CodeMirror-lines >> .CodeMirror-code >> span:eq(2)", - textColorCloseFx: "[data-cy=fx-button]:eq(11)", - textColor:{ - inputHex: "#rc-editable-input-6", - inputR: "#rc-editable-input-7", - labelR: ":nth-child(2) > div > label", - inputG: "#rc-editable-input-8", - labelG:":nth-child(3) > div > label", - inputB: "#rc-editable-input-9", - labelB: ":nth-child(4) > div > label", - inputA: "#rc-editable-input-10", - labelA: ":nth-child(5) > div > label", - }, - loaderColorSelector: "[data-cy=color-picker-input] > .col-auto:eq(2)", - loaderColorInput: "[data-cy=accordion-input] > .CodeMirror >> .CodeMirror-sizer .CodeMirror-lines >> .CodeMirror-code >> span:eq(3)", - loaderColorCloseFx: "[data-cy=fx-button]:eq(13)", - loaderColor: { - inputHex: "#rc-editable-input-11", - inputR: "#rc-editable-input-12", - labelR: ":nth-child(2) > div > label", - inputG: "#rc-editable-input-13", - labelG:":nth-child(3) > div > label", - inputB: "#rc-editable-input-14", - labelB: ":nth-child(4) > div > label", - inputA: "#rc-editable-input-15", - labelA: ":nth-child(5) > div > label", - }, - fxVisibility: ".cm-atom:eq(0)", - fxDisable: ".cm-atom:eq(2)", - visibilityToggle: "[data-cy=toggle-button]:eq(3)", - disableToggle: "[data-cy=toggle-button]:eq(4)", - visibilityCloseFx: "[data-cy=fx-button]:eq(15)", - disableCloseFx: "[data-cy=fx-button]:eq(17)", - borderRadiusCloseFx: "[data-cy=fx-button]:eq(15)", - fxBorderRadius: ".CodeMirror-code > .CodeMirror-line >> .cm-number" -}; \ No newline at end of file diff --git a/cypress-tests/cypress/constants/selectors/common.js b/cypress-tests/cypress/constants/selectors/common.js index b34589ceac..1f0a54bc9b 100644 --- a/cypress-tests/cypress/constants/selectors/common.js +++ b/cypress-tests/cypress/constants/selectors/common.js @@ -13,7 +13,7 @@ export const commonSelectors = { autoSave: "[data-cy=autosave-indicator]", skipButton: ".driver-close-btn", skipInstallationModal: "[data-cy=skip-button]", - homePageLogo: "[data-cy=home-page-logo]:eq(1)", + homePageLogo: "[data-cy=home-page-logo]", emailField: "[data-cy=email-text-field]", passwordField: "[data-cy=password-text-field]", signInButton: "[data-cy=login-button]", @@ -46,6 +46,8 @@ export const commonSelectors = { appCreatorName: "[data-cy=app-creator]", appCreatedTime: "[data-cy=app-creation-time]", homePageSearchBar: "[data-cy=home-page-search-bar]", + editorPageLogo: '[data-cy="editor-page-logo"]', + viewerPageLogo: '[data-cy="viewer-page-logo"]', folderListcard: (folderName) => { return `[data-cy="${cyParamName(folderName)}-list-card"]`; @@ -113,6 +115,18 @@ export const commonWidgetSelector = { colourPickerInput: (index) => { return `[id*="rc-editable-input-"]:eq(${index})`; }, + stylePicker: (paramName) => { + return `[data-cy="${cyParamName(paramName)}-picker"]`; + }, + stylePickerValueIcon: (paramName) => { + return `[data-cy="${cyParamName(paramName)}-picker-icon"]`; + }, + stylePickerValue: (paramName) => { + return `[data-cy="${cyParamName(paramName)}-value"]`; + }, + stylePickerFxInput: (paramName) => { + return `[data-cy="${cyParamName(paramName)}-input-field"]`; + }, buttonCloseEditorSideBar: "[data-rb-event-key='close-inpector-light']", buttonStylesEditorSideBar: "[data-rb-event-key='styles']", @@ -123,8 +137,15 @@ export const commonWidgetSelector = { noEventHandlerMessage: "[data-cy='no-event-handler-message']", addEventHandlerLink: "[data-cy='add-event-handler']", + addMoreEventHandlerLink: '[data-cy="add-more-event-handler"]', eventHandlerCard: "[data-cy='event-handler-card']", alertMessageInputField: "[data-cy='alert-message-input-field']", + actionSelection: '[data-cy="action-selection"]', + eventComponentSelection: + '[data-cy="action-options-component-selection-field"]', + eventComponentActionSelection: + '[data-cy="action-options-action-selection-field"]', + componentTextInput: '[data-cy="action-options-text-input-field"]', changeLayoutButton: "[data-cy= 'change-layout-button']", sidebarinspector: "[data-cy='left-sidebar-inspector-button']", @@ -135,4 +156,9 @@ export const commonWidgetSelector = { widgetDocumentationLink: "[data-cy='widget-documentation-link']", boxShadowDefaultParam: ["x", "y", "blur", "spread"], + colourPickerParent: "[data-cy='color-picker-parent']", + inputBoxShadow: "[data-cy= 'input-box-shadow']", + boxShadowColorPicker: "[data-cy='box-shadow-color-picker']", + textInputWidget: '[data-cy="draggable-widget-textinput1"]', + previewButton: `[data-cy="preview-link-button"]`, }; diff --git a/cypress-tests/cypress/constants/texts/button.js b/cypress-tests/cypress/constants/texts/button.js index 3069895e45..9c1d3dfc37 100644 --- a/cypress-tests/cypress/constants/texts/button.js +++ b/cypress-tests/cypress/constants/texts/button.js @@ -1,47 +1,14 @@ -export const buttonText={ - widgetName: "Button", - buttonProperties: "Properties", - buttonStyles: "Styles", - buttonName: "button1", - propertiesElements:{ - propertiesAccordion: "Properties", - buttonTextLabel: "Button Text", - buttonTextInput: "Button", - loadingState: "Loading State", - eventsAccordion: "Events", - addEventListner: "+ Add event handler", - noEventHandler: "This button doesn't have any event handlers", - generalAccordion: "General", - layoutAccordion: "Layout", - showOnDesktopLabel: "Show on desktop", - showOnMobileLabel: "Show on mobile", - documentationLink: "Button documentation", - }, - fxButton:"Fx", - savedToast: "Saved!", - invalidButtonName: "New Button", - buttonNameErrToast: "Invalid widget name. Should be unique and only include letters, numbers and underscore.", - validButtonName: "button", - buttonText:"Send", - trueText: "true", - falseText:"false", - eventLabel: "Event", - actionLabel: "Action", - actionOption: "Action options", - messageLabel: "Message", - alertTypeLabel: "Alert Type", - newMessage: " new toast", - newToast: "Hello world new toast", - stylesElements:{ - backgroundColorLabel: "Background color", - textColorLabel: "Text color", - loaderColorLabel: "Loader color", - visibilityLabel: "Visibility", - disableLabel: "Disable", - borderRadiusLabel: "Border radius", - }, - backgroundColorInput: "#375FCF", - textColorInput: "#fff", - loaderColorInput: "#fff", - borderRadiusInput: "15", -}; \ No newline at end of file +export const buttonText = { + defaultWidgetText: "Button", + defaultWidgetName: "button1", + buttonTextLabel: "Button Text", + loadingState: "Loading State", + buttonDocumentationLink: "Button documentation", + backgroundColor: "Background color", + textColor: "Text color", + loaderColor: "Loader color", + defaultBackgroundColor: "#375FCF", + defaultTextColor: "#fff", + defaultLoaderColor: "#fff", + borderRadiusInput: "20", +}; diff --git a/cypress-tests/cypress/constants/texts/common.js b/cypress-tests/cypress/constants/texts/common.js index 03ca3c0bcd..e1f7dae903 100644 --- a/cypress-tests/cypress/constants/texts/common.js +++ b/cypress-tests/cypress/constants/texts/common.js @@ -70,6 +70,8 @@ export const commonWidgetText = { parameterBoxShadow: "Box Shadow", boxShadowDefaultValue: "0px 0px 0px 0px #00000040", parameterOptionvalues: "Option values", + boxShadowColor: "Box Shadow Color", + boxShadowFxValue: "-5px 6px 5px 8px #ee121240", codeMirrorLabelTrue: "{{true}}", codeMirrorLabelFalse: "{{false}}", @@ -83,6 +85,9 @@ export const commonWidgetText = { parameterLabel: "Label", datepickerDocumentationLink: "Datepicker documentation", + text1: "text1", + toggleswitch1: "toggleswitch1", + toggleSwitch: "Toggle Switch", }; export const createBackspaceText = (text) => { diff --git a/cypress-tests/cypress/e2e/editor/widget/buttonHappyPath.cy.js b/cypress-tests/cypress/e2e/editor/widget/buttonHappyPath.cy.js index 8efda1780c..a7641784b4 100644 --- a/cypress-tests/cypress/e2e/editor/widget/buttonHappyPath.cy.js +++ b/cypress-tests/cypress/e2e/editor/widget/buttonHappyPath.cy.js @@ -1,100 +1,352 @@ -import { buttonSelector } from "Selectors/button"; -import {commonSelectors} from "Selectors/common"; +import { commonSelectors, commonWidgetSelector } from "Selectors/common"; import { buttonText } from "Texts/button"; -import * as button from "Support/utils/button"; import { fake } from "Fixtures/fake"; +import { commonWidgetText } from "Texts/common"; -describe("Editor- Test Button widget",()=>{ - const appName = (`${fake.companyName} App`); - beforeEach(()=>{ - cy.appUILogin(); - cy.createApp(appName); - button.navigateToEditor(appName); - cy.dragAndDropWidget(buttonText.widgetName); +import { + verifyControlComponentAction, +} from "Support/utils/button"; + +import { + openAccordion, + verifyAndModifyParameter, + openEditorSidebar, + verifyAndModifyToggleFx, + addDefaultEventHandler, + addAndVerifyTooltip, + verifyComponentFromInspector, + verifyAndModifyStylePickerFx, + verifyWidgetColorCss, + selectColourFromColourPicker, + verifyLoaderColor, + fillBoxShadowParams, + verifyBoxShadowCss, + verifyLayout, + verifyTooltip, + editAndVerifyWidgetName + +} from "Support/utils/commonWidget"; + +describe("Editor- Test Button widget", () => { + + beforeEach(() => { + cy.appUILogin(); + cy.createApp(); + cy.dragAndDropWidget(buttonText.defaultWidgetText); + }); + + it("should verify the properties of the button widget", () => { + const data = {}; + data.appName = `${fake.companyName}-App`; + data.alertMessage = fake.randomSentence; + data.widgetName = fake.widgetName; + data.customMessage = fake.randomSentence; + data.tooltipText = fake.randomSentence; + + cy.renameApp(data.appName); + + openEditorSidebar(buttonText.defaultWidgetName); + editAndVerifyWidgetName(data.widgetName) + + openAccordion(commonWidgetText.accordionProperties); + verifyAndModifyParameter(buttonText.buttonTextLabel, data.widgetName); + verifyComponentFromInspector(data.widgetName); + + verifyAndModifyToggleFx( + buttonText.loadingState, + commonWidgetText.codeMirrorLabelFalse + ); + cy.get(commonWidgetSelector.draggableWidget(data.widgetName)).should( + "have.class", + "btn-loading" + ); + + cy.get( + commonWidgetSelector.parameterTogglebutton(buttonText.loadingState) + ).click(); + cy.get(commonWidgetSelector.draggableWidget(data.widgetName)).should( + "not.have.class", + "btn-loading" + ); + + openEditorSidebar(data.widgetName); + openAccordion(commonWidgetText.accordionEvents); + addDefaultEventHandler(data.alertMessage); + cy.get(commonWidgetSelector.draggableWidget(data.widgetName)).click(); + cy.verifyToastMessage(commonSelectors.toastMessage, data.alertMessage); + + openEditorSidebar(data.widgetName); + openAccordion(commonWidgetText.accordionGenaral); + addAndVerifyTooltip( + commonWidgetSelector.draggableWidget(data.widgetName), + data.tooltipText + ); + + verifyLayout(data.widgetName); + + cy.get(commonWidgetSelector.changeLayoutButton).click(); + cy.get( + commonWidgetSelector.parameterTogglebutton( + commonWidgetText.parameterShowOnDesktop + ) + ).click(); + + cy.get(commonWidgetSelector.widgetDocumentationLink).should( + "have.text", + buttonText.buttonDocumentationLink + ); + + verifyControlComponentAction(data.widgetName, data.customMessage); + + cy.get(commonSelectors.editorPageLogo).click(); + cy.deleteApp(data.appName); }); - it("should verify the properties of the button widget",()=>{ - button.propertiesElements(); - - cy.get(buttonSelector.buttonInputField).first().click().type(`{selectall}${buttonText.buttonText}`); - cy.get(buttonSelector.buttonProperties).click(); - cy.get(buttonSelector.buttonWidget).should("have.text",buttonText.buttonText); - - cy.get(buttonSelector.buttonName).should("be.visible"); - cy.get(buttonSelector.buttonProperties).click(); - cy.get(buttonSelector.buttonName).clear().type(` ${buttonText.invalidButtonName}{enter}`); - cy.verifyToastMessage(commonSelectors.toastMessage,buttonText.buttonNameErrToast); - cy.get(buttonSelector.buttonName).clear().type(`{selectall}${buttonText.validButtonName}{enter}`); - - cy.get(buttonSelector.loadingStateFx).click(); - cy.get(buttonSelector.fxLoadingState).should("have.text", buttonText.falseText); - cy.get(buttonSelector.loadingStateInputFx).click(); - cy.get(buttonSelector.loadingStateToggle).check(); - cy.get(buttonSelector.loadingStateFx).click(); - cy.get(buttonSelector.fxLoadingState).should("have.text", buttonText.trueText); - cy.get(buttonSelector.loadingStateInputFx).click(); - cy.get(buttonSelector.loadingStateToggle).uncheck(); - cy.get(buttonSelector.propertiesElements.propertiesAccordion).click(); - - cy.get(buttonSelector.propertiesElements.addEventListner).click(); - cy.get(buttonSelector.eventHandler).click(); - cy.get(buttonSelector.popoverCard).should("be.visible"); - button.eventListnerCard(); - cy.get(buttonSelector.messageText).click().type(buttonText.newMessage); - cy.get(buttonSelector.buttonWidget).click({force:true}); - - cy.get(buttonSelector.desktopFx).click(); - cy.get(buttonSelector.fxDesktop).should("have.text", buttonText.trueText); - cy.get(buttonSelector.desktopInputFx).click(); - cy.get(buttonSelector.desktopToggle).uncheck(); - cy.get(buttonSelector.desktopFx).click(); - cy.get(buttonSelector.fxDesktop).should("have.text", buttonText.falseText); - cy.get(buttonSelector.desktopInputFx).click(); - cy.get(buttonSelector.desktopToggle).check(); - - cy.get(buttonSelector.mobileFx).click(); - cy.get(buttonSelector.fxMobile).should("have.text", buttonText.falseText); - cy.get(buttonSelector.mobileInputFx).click(); - cy.get(buttonSelector.mobileToggle).check(); - cy.get(buttonSelector.mobileFx).click(); - cy.get(buttonSelector.fxMobile).should("have.text", buttonText.trueText); - cy.get(buttonSelector.mobileInputFx).click(); - cy.get(buttonSelector.mobileToggle).uncheck(); - - button.deleteApp(); + it("should verify the styles of the button widget", () => { + const data = {}; + data.appName = `${fake.companyName}-App`; + data.backgroundColor = fake.randomRgba; + data.textColor = fake.randomRgba; + data.loaderColor = fake.randomRgba; + data.boxShadowColor = fake.randomRgba; + data.colourHex = fake.randomRgbaHex; + data.boxShadowParam = fake.boxShadowParam; + + cy.renameApp(data.appName); + + openEditorSidebar(buttonText.defaultWidgetName); + cy.get(commonWidgetSelector.buttonStylesEditorSideBar).click(); + + verifyAndModifyStylePickerFx( + buttonText.backgroundColor, + buttonText.defaultBackgroundColor, + data.colourHex + ); + + cy.get( + commonWidgetSelector.parameterFxButton(buttonText.backgroundColor) + ).click(); + + selectColourFromColourPicker(buttonText.backgroundColor, data.backgroundColor); + + verifyWidgetColorCss( + buttonText.defaultWidgetName, + "background-color", + data.backgroundColor + ); + + openEditorSidebar(buttonText.defaultWidgetName); + cy.get(commonWidgetSelector.buttonStylesEditorSideBar).click(); + + data.colourHex = fake.randomRgbaHex; + verifyAndModifyStylePickerFx( + buttonText.textColor, + buttonText.defaultTextColor, + data.colourHex + ); + + cy.get( + commonWidgetSelector.parameterFxButton(buttonText.textColor) + ).click(); + + selectColourFromColourPicker(buttonText.textColor, data.textColor); + + verifyWidgetColorCss(buttonText.defaultWidgetName, "color", data.textColor); + + openEditorSidebar(buttonText.defaultWidgetName); + cy.get(commonWidgetSelector.buttonStylesEditorSideBar).click(); + + data.colourHex = fake.randomRgbaHex; + verifyAndModifyStylePickerFx( + buttonText.loaderColor, + buttonText.defaultLoaderColor, + data.colourHex + ); + + cy.get( + commonWidgetSelector.parameterFxButton(buttonText.loaderColor) + ).click(); + selectColourFromColourPicker(buttonText.loaderColor, data.loaderColor); + + verifyLoaderColor(buttonText.defaultWidgetName, data.loaderColor); + + openEditorSidebar(buttonText.defaultWidgetName); + cy.get(commonWidgetSelector.buttonStylesEditorSideBar).click(); + + verifyAndModifyToggleFx( + commonWidgetText.parameterVisibility, + commonWidgetText.codeMirrorLabelTrue + ); + cy.get( + commonWidgetSelector.draggableWidget(buttonText.defaultWidgetName) + ).should("not.be.visible"); + cy.get(commonWidgetSelector.parameterTogglebutton("Visibility")).click(); + + verifyAndModifyToggleFx( + commonWidgetText.parameterDisable, + commonWidgetText.codeMirrorLabelFalse + ); + cy.waitForAutoSave(); + cy.get( + commonWidgetSelector.draggableWidget(buttonText.defaultWidgetName) + ).should("have.attr", "disabled"); + + cy.get(commonWidgetSelector.parameterTogglebutton("Disable")).click(); + + cy.get( + commonWidgetSelector.parameterFxButton( + commonWidgetText.parameterBorderRadius + ) + ) + .last() + .click(); + + verifyAndModifyParameter( + commonWidgetText.parameterBorderRadius, + buttonText.borderRadiusInput + ); + + cy.get(commonWidgetSelector.buttonCloseEditorSideBar).click(); + cy.get( + commonWidgetSelector.draggableWidget(buttonText.defaultWidgetName) + ).should("have.css", "border-radius", "20px"); + + openEditorSidebar(buttonText.defaultWidgetName); + cy.get(commonWidgetSelector.buttonStylesEditorSideBar).click(); + + data.colourHex = fake.randomRgbaHex; + openAccordion(commonWidgetText.accordionGenaral, "1"); + verifyAndModifyStylePickerFx( + commonWidgetText.parameterBoxShadow, + commonWidgetText.boxShadowDefaultValue, + `${(data.boxShadowParam)[0]}px ${(data.boxShadowParam)[1]}px ${(data.boxShadowParam)[2]}px ${(data.boxShadowParam)[3]}px ${data.colourHex}`, + ); + cy.get( + commonWidgetSelector.parameterFxButton( + commonWidgetText.parameterBoxShadow + ) + ).click(); + + cy.get( + commonWidgetSelector.stylePicker(commonWidgetText.parameterBoxShadow) + ).click(); + + fillBoxShadowParams( + commonWidgetSelector.boxShadowDefaultParam, + data.boxShadowParam + ); + selectColourFromColourPicker(commonWidgetText.boxShadowColor, data.boxShadowColor); + + verifyBoxShadowCss( + buttonText.defaultWidgetName, + data.boxShadowColor, + data.boxShadowParam + ); + cy.get(commonSelectors.editorPageLogo).click(); + cy.deleteApp(data.appName); }); - it("should verify the styles of the button widget",()=>{ - button.stylesElements(); - button.colorPickerCard(); - cy.get(buttonSelector.stylesFx.visibility).click(); - cy.get(buttonSelector.fxVisibility).should("have.text",buttonText.trueText); - cy.get(buttonSelector.visibilityCloseFx).click(); - cy.get(buttonSelector.visibilityToggle).uncheck(); - cy.get(buttonSelector.stylesFx.visibility).click(); - cy.get(buttonSelector.fxVisibility).should("have.text",buttonText.falseText); - cy.get(buttonSelector.visibilityCloseFx).click(); - cy.get(buttonSelector.buttonWidget).should("not.be.visible"); - cy.get(buttonSelector.visibilityToggle).check(); - - cy.get(buttonSelector.stylesFx.disable).click(); - cy.get(buttonSelector.fxDisable).should("have.text",buttonText.falseText); - cy.get(buttonSelector.disableCloseFx).click(); - cy.get(buttonSelector.disableToggle).check(); - cy.get(buttonSelector.stylesFx.disable).click(); - cy.get(buttonSelector.fxDisable).should("have.text",buttonText.trueText); - cy.get(buttonSelector.disableCloseFx).click(); - cy.get(buttonSelector.buttonWidget).should("be.disabled"); - cy.get(buttonSelector.disableToggle).uncheck(); - cy.get(buttonSelector.buttonWidget).should("be.enabled"); - - cy.get(buttonSelector.stylesInput.borderRadiusInputField).clear().type("15"); - cy.get(buttonSelector.stylesFx.borderRadius).click(); - cy.get(buttonSelector.fxBorderRadius).should("have.text", buttonText.borderRadiusInput) - - button.deleteApp(); + it("should verify the app preview", () => { + const data = {}; + data.appName = `${fake.companyName}-App`; + data.alertMessage = fake.randomSentence; + data.widgetName = fake.widgetName; + data.customMessage = fake.randomSentence; + data.backgroundColor = fake.randomRgba; + data.textColor = fake.randomRgba; + data.loaderColor = fake.randomRgba; + data.boxShadowColor = fake.randomRgba; + data.boxShadowParam = fake.boxShadowParam; + data.tooltipText = fake.randomSentence; + + cy.renameApp(data.appName); + + openEditorSidebar(buttonText.defaultWidgetName); + verifyAndModifyParameter(buttonText.buttonTextLabel, data.widgetName); + + openAccordion(commonWidgetText.accordionEvents); + addDefaultEventHandler(data.alertMessage); + + openAccordion(commonWidgetText.accordionGenaral); + addAndVerifyTooltip( + commonWidgetSelector.draggableWidget(buttonText.defaultWidgetName), + data.tooltipText + ); + + openEditorSidebar(buttonText.defaultWidgetName); + cy.get(commonWidgetSelector.buttonStylesEditorSideBar).click(); + selectColourFromColourPicker(buttonText.backgroundColor, data.backgroundColor); + + cy.get(commonWidgetSelector.buttonCloseEditorSideBar).click(); + openEditorSidebar(buttonText.defaultWidgetName); + cy.get(commonWidgetSelector.buttonStylesEditorSideBar).click(); + selectColourFromColourPicker(buttonText.textColor, data.textColor); + + cy.get(commonWidgetSelector.buttonCloseEditorSideBar).click(); + openEditorSidebar(buttonText.defaultWidgetName); + cy.get(commonWidgetSelector.buttonStylesEditorSideBar).click(); + selectColourFromColourPicker(buttonText.loaderColor, data.loaderColor); + + cy.get(commonWidgetSelector.buttonCloseEditorSideBar).click(); + openEditorSidebar(buttonText.defaultWidgetName); + cy.get(commonWidgetSelector.buttonStylesEditorSideBar).click(); + + cy.get( + commonWidgetSelector.parameterInputField( + commonWidgetText.parameterBorderRadius + ) + ) + .last() + .clear() + .type(buttonText.borderRadiusInput); + + openAccordion(commonWidgetText.accordionGenaral, "1"); + + cy.get( + commonWidgetSelector.stylePicker(commonWidgetText.parameterBoxShadow) + ).click(); + + fillBoxShadowParams( + commonWidgetSelector.boxShadowDefaultParam, + data.boxShadowParam + ); + selectColourFromColourPicker(commonWidgetText.boxShadowColor, data.boxShadowColor); + + verifyControlComponentAction(buttonText.defaultWidgetName, data.customMessage); + + cy.waitForAutoSave(); + cy.openInCurrentTab(commonWidgetSelector.previewButton); + + cy.get( + commonWidgetSelector.draggableWidget(buttonText.defaultWidgetName) + ).verifyVisibleElement("have.text", data.widgetName); + + cy.get(commonWidgetSelector.draggableWidget(buttonText.defaultWidgetName)).click(); + cy.verifyToastMessage(commonSelectors.toastMessage, data.alertMessage); + cy.get(commonWidgetSelector.draggableWidget('textinput1')).should( + "have.value", + data.customMessage + ); + + verifyTooltip( + commonWidgetSelector.draggableWidget(buttonText.defaultWidgetName), + data.tooltipText + ); + + verifyWidgetColorCss(buttonText.defaultWidgetName, "background-color", data.backgroundColor); + verifyWidgetColorCss(buttonText.defaultWidgetName, "color", data.textColor); + verifyLoaderColor(buttonText.defaultWidgetName, data.loaderColor); + + cy.get(commonWidgetSelector.draggableWidget(buttonText.defaultWidgetName)).should( + "have.css", + "border-radius", + "20px" + ); + + verifyBoxShadowCss(buttonText.defaultWidgetName, data.boxShadowColor, data.boxShadowParam); + cy.get(commonSelectors.viewerPageLogo).click(); + cy.deleteApp(data.appName); }); - -}); \ No newline at end of file +}); diff --git a/cypress-tests/cypress/e2e/editor/widget/datePickerHappyPath.cy.js b/cypress-tests/cypress/e2e/editor/widget/datePickerHappyPath.cy.js index 35d0a16567..186f4100d0 100644 --- a/cypress-tests/cypress/e2e/editor/widget/datePickerHappyPath.cy.js +++ b/cypress-tests/cypress/e2e/editor/widget/datePickerHappyPath.cy.js @@ -1,9 +1,11 @@ +import moment from "moment"; import { datePickerSelector } from "Selectors/datePicker"; import { datePickerText } from "Texts/datePicker"; import { commonText, commonWidgetText } from "Texts/common"; import { commonSelectors, commonWidgetSelector } from "Selectors/common"; import { fake } from "Fixtures/fake"; import { randomDateOrTime } from "Support/utils/common"; +import { multiselectSelector } from "Selectors/multiselect"; import { selectAndVerifyDate, @@ -19,6 +21,12 @@ import { addAndVerifyTooltip, editAndVerifyWidgetName, verifyComponentValueFromInspector, + fillBoxShadowParams, + selectColourFromColourPicker, + addTextWidgetToVerifyValue, + verifyBoxShadowCss, + verifyTooltip, + verifyWidgetText, } from "Support/utils/commonWidget"; describe("Date Picker widget", () => { @@ -36,51 +44,49 @@ describe("Date Picker widget", () => { data.customMessage = fake.randomSentence; data.randomTime = randomDateOrTime("hh:mm"); - openEditorSidebar( - datePickerSelector.draggableDatePicker, - datePickerText.datepicker1 - ); - editAndVerifyWidgetName( - datePickerSelector.draggableDatePicker, - data.widgetName - ); + openEditorSidebar(datePickerText.datepicker1); + editAndVerifyWidgetName(data.widgetName); openAccordion(commonWidgetText.accordionProperties); verifyAndModifyParameter(datePickerText.labelDefaultValue, data.date); verifyComponentValueFromInspector(data.widgetName, data.date); - verifyDate(data.date); + cy.get(commonWidgetSelector.buttonCloseEditorSideBar).click(); + verifyDate(data.widgetName, data.date); data.date = randomDateOrTime(); - selectAndVerifyDate(data.date); + selectAndVerifyDate(data.widgetName, data.date); - openEditorSidebar(datePickerSelector.draggableDatePicker, data.widgetName); + openEditorSidebar(data.widgetName); verifyAndModifyParameter(datePickerText.labelformat, "DD/MM/YY"); - verifyDate(data.date, "DD/MM/YY"); + cy.get(commonWidgetSelector.buttonCloseEditorSideBar).click(); + verifyDate(data.widgetName, data.date, "DD/MM/YY"); verifyComponentValueFromInspector(data.widgetName, data.date, "opened"); cy.get(commonSelectors.canvas).click({ force: true }); - openEditorSidebar(datePickerSelector.draggableDatePicker, data.widgetName); + openEditorSidebar(data.widgetName); verifyAndModifyParameter( datePickerText.labelEnableDateSection, commonWidgetText.codeMirrorInputFalse ); - verifyDate(""); + cy.get(commonWidgetSelector.buttonCloseEditorSideBar).click(); + // verifyDate(data.widgetName, ""); - openEditorSidebar(datePickerSelector.draggableDatePicker, data.widgetName); + openEditorSidebar(data.widgetName); verifyAndModifyParameter( datePickerText.labelEnableTimeSection, commonWidgetText.codeMirrorInputTrue ); - verifyDate(datePickerText.defaultTime, "hh:mm A"); - selectAndVerifyTime(data.randomTime); + cy.get(commonWidgetSelector.buttonCloseEditorSideBar).click(); + verifyDate(data.widgetName, datePickerText.defaultTime, "hh:mm A"); + selectAndVerifyTime(data.widgetName, data.randomTime); - openEditorSidebar(datePickerSelector.draggableDatePicker, data.widgetName); + openEditorSidebar(data.widgetName); verifyAndModifyParameter(datePickerText.labelDisabledDates, [ "{{", "[05-01]}}", ]); //WIP cy.get(commonWidgetSelector.buttonCloseEditorSideBar).click(); - openEditorSidebar(datePickerSelector.draggableDatePicker, data.widgetName); + openEditorSidebar(data.widgetName); openAccordion(commonWidgetText.accordionEvents); cy.get( @@ -101,50 +107,51 @@ describe("Date Picker widget", () => { addDefaultEventHandler(data.alertMessage); cy.get(commonWidgetSelector.buttonCloseEditorSideBar).click(); data.date = randomDateOrTime(); - selectAndVerifyDate(data.date, "DD/MM/YY"); + selectAndVerifyDate(data.widgetName, data.date, "DD/MM/YY"); cy.verifyToastMessage(commonSelectors.toastMessage, data.alertMessage); - openEditorSidebar(datePickerSelector.draggableDatePicker, data.widgetName); + openEditorSidebar(data.widgetName); openAccordion(commonWidgetText.accordionGenaral); addAndVerifyTooltip( - datePickerSelector.draggableDatePicker, + commonWidgetSelector.draggableWidget(data.widgetName), fake.randomSentence ); - openEditorSidebar(datePickerSelector.draggableDatePicker, data.widgetName); + openEditorSidebar(data.widgetName); openAccordion(commonWidgetText.accordionValidation); verifyAndModifyParameter( commonWidgetText.parameterCustomValidation, datePickerText.customValidation(data.widgetName, data.customMessage) ); data.date = randomDateOrTime(); - selectAndVerifyDate(data.date, "DD/MM/YY"); + selectAndVerifyDate(data.widgetName, data.date, "DD/MM/YY"); cy.get(datePickerSelector.validationFeedbackMessage).should( "have.text", data.customMessage ); - openEditorSidebar(datePickerSelector.draggableDatePicker, data.widgetName); + openEditorSidebar(data.widgetName); openAccordion(commonWidgetText.accordionLayout); verifyAndModifyToggleFx( commonWidgetText.parameterShowOnDesktop, commonWidgetText.codeMirrorLabelTrue ); - cy.get(datePickerSelector.draggableDatePicker).should("not.exist"); + cy.get(commonWidgetSelector.draggableWidget(data.widgetName)).should( + "not.exist" + ); verifyAndModifyToggleFx( commonWidgetText.parameterShowOnMobile, commonWidgetText.codeMirrorLabelFalse ); cy.get(commonWidgetSelector.changeLayoutButton).click(); - cy.get(datePickerSelector.draggableDatePicker).should("exist"); + cy.get(commonWidgetSelector.draggableWidget(data.widgetName)).should( + "exist" + ); }); it("should verify the styles of the date picker widget", () => { - openEditorSidebar( - datePickerSelector.draggableDatePicker, - datePickerText.datepicker1 - ); + openEditorSidebar(datePickerText.datepicker1); cy.get(commonWidgetSelector.buttonStylesEditorSideBar).click(); cy.get(commonWidgetSelector.widgetDocumentationLink).should( "have.text", @@ -155,7 +162,9 @@ describe("Date Picker widget", () => { commonWidgetText.parameterVisibility, commonWidgetText.codeMirrorLabelTrue ); - cy.get(datePickerSelector.draggableDatePicker).should("not.be.visible"); + cy.get( + commonWidgetSelector.draggableWidget(datePickerText.datepicker1) + ).should("not.be.visible"); cy.get(commonWidgetSelector.parameterTogglebutton("Visibility")).click(); verifyAndModifyToggleFx( @@ -166,7 +175,7 @@ describe("Date Picker widget", () => { "have.text", commonText.autoSave ); - cy.get(datePickerSelector.draggableDatePicker) + cy.get(commonWidgetSelector.draggableWidget(datePickerText.datepicker1)) .find("input") .should("have.css", "pointer-events", "none"); @@ -175,8 +184,127 @@ describe("Date Picker widget", () => { commonWidgetText.borderRadiusInput ); cy.get(commonWidgetSelector.buttonCloseEditorSideBar).click(); - cy.get(datePickerSelector.draggableDatePicker) + cy.get(commonWidgetSelector.draggableWidget(datePickerText.datepicker1)) .find("input") .should("have.css", "border-radius", "20px"); }); + + it("should verify widget in preview", () => { + const data = {}; + data.alertMessage = fake.randomSentence; + data.widgetName = fake.widgetName; + data.date = randomDateOrTime(); + data.customMessage = fake.randomSentence; + data.tooltipText = fake.randomSentence; + data.randomTime = randomDateOrTime("hh:mm"); + data.colour = fake.randomRgba; + data.boxShadowParam = fake.boxShadowParam; + + openEditorSidebar(datePickerText.datepicker1); + editAndVerifyWidgetName(data.widgetName); + + openAccordion(commonWidgetText.accordionProperties); + verifyAndModifyParameter(datePickerText.labelDefaultValue, data.date); + verifyAndModifyParameter(datePickerText.labelformat, "DD/MM/YY"); + + cy.get( + commonWidgetSelector.parameterInputField( + datePickerText.labelEnableDateSection + ) + ).clearAndTypeOnCodeMirror([ + `{{`, + `!components.${commonWidgetText.toggleswitch1}.value}}`, + ]); + cy.get( + commonWidgetSelector.parameterInputField( + datePickerText.labelEnableTimeSection + ) + ).clearAndTypeOnCodeMirror([ + `{{`, + `components.${commonWidgetText.toggleswitch1}.value}}`, + ]); + + openAccordion(commonWidgetText.accordionEvents); + addDefaultEventHandler(data.alertMessage); + + openAccordion(commonWidgetText.accordionGenaral); + addAndVerifyTooltip( + commonWidgetSelector.draggableWidget(data.widgetName), + data.tooltipText + ); + + openEditorSidebar(data.widgetName); + openAccordion(commonWidgetText.accordionValidation); + verifyAndModifyParameter( + commonWidgetText.parameterCustomValidation, + datePickerText.customValidation(data.widgetName, data.customMessage) + ); + + cy.get(commonWidgetSelector.buttonStylesEditorSideBar).click(); + verifyAndModifyParameter( + commonWidgetText.parameterBorderRadius, + commonWidgetText.borderRadiusInput + ); + + openAccordion(commonWidgetText.accordionGenaral, "1"); + + cy.get( + commonWidgetSelector.stylePicker(commonWidgetText.parameterBoxShadow) + ).click(); + + fillBoxShadowParams( + commonWidgetSelector.boxShadowDefaultParam, + data.boxShadowParam + ); + selectColourFromColourPicker(commonWidgetText.boxShadowColor, data.colour); + + addTextWidgetToVerifyValue(`components.${data.widgetName}.value`); + cy.dragAndDropWidget(commonWidgetText.toggleSwitch, 600, 160); + + cy.openInCurrentTab(commonWidgetSelector.previewButton); + + /* verifyDate(data.widgetName, data.date, "DD/MM/YY"); + verifyWidgetText( + commonWidgetText.text1, + moment(data.date, "DD/MM/YYYY").format("DD/MM/YY") + );*/ + + data.date = randomDateOrTime(); + selectAndVerifyDate(data.widgetName, data.date, "DD/MM/YY"); + verifyWidgetText( + commonWidgetText.text1, + moment(data.date, "DD/MM/YYYY").format("DD/MM/YY") + ); + + cy.verifyToastMessage(commonSelectors.toastMessage, data.alertMessage); + + verifyTooltip( + commonWidgetSelector.draggableWidget(data.widgetName), + data.tooltipText + ); + + cy.get(datePickerSelector.validationFeedbackMessage).should( + "have.text", + data.customMessage + ); + + cy.get(commonWidgetSelector.draggableWidget(data.widgetName)) + .find("input") + .should("have.css", "border-radius", "20px"); + + verifyBoxShadowCss(data.widgetName, data.colour, data.boxShadowParam); + + cy.get(commonWidgetSelector.draggableWidget(commonWidgetText.toggleswitch1)) + .find(".form-check-input") + .click(); + + verifyDate(data.widgetName, datePickerText.defaultTime, "hh:mm A"); + // verifyWidgetText(commonWidgetText.text1, datePickerText.defaultTime); + + selectAndVerifyTime(data.widgetName, data.randomTime); + verifyWidgetText( + commonWidgetText.text1, + moment(data.randomTime, "hh:mm").format("h:mm A") + ); + }); }); diff --git a/cypress-tests/cypress/e2e/editor/widget/multiselectHappyPath.cy.js b/cypress-tests/cypress/e2e/editor/widget/multiselectHappyPath.cy.js index 623018fc54..4595ab9b1d 100644 --- a/cypress-tests/cypress/e2e/editor/widget/multiselectHappyPath.cy.js +++ b/cypress-tests/cypress/e2e/editor/widget/multiselectHappyPath.cy.js @@ -26,16 +26,20 @@ import { selectColourFromColourPicker, fillBoxShadowParams, verifyBoxShadowCss, + verifyAndModifyStylePickerFx, + addTextWidgetToVerifyValue, + verifyTooltip, + verifyWidgetText, } from "Support/utils/commonWidget"; -describe("Date Picker widget", () => { +describe("Multiselect widget", () => { beforeEach(() => { cy.appUILogin(); cy.createApp(); cy.dragAndDropWidget(multiselectText.multiselect); }); - it("should verify the properties of the multiselect widget", () => { + it("should verify the properties of the widget", () => { const data = {}; data.widgetName = fake.widgetName; data.label = fake.widgetName; @@ -117,6 +121,7 @@ describe("Date Picker widget", () => { openEditorSidebar(data.widgetName); verifyAndModifyToggleFx(multiselectText.enableSelectAllOptions); + cy.get(commonWidgetSelector.draggableWidget(data.widgetName)) .find(multiselectSelector.multiselectHeader) .click(); @@ -125,6 +130,7 @@ describe("Date Picker widget", () => { .should("have.text", multiselectText.dropdwonOptionSelectAll) .click() .click(); + verifyMultiselectHeader( data.widgetName, multiselectText.labelAllItemsSelected @@ -169,7 +175,7 @@ describe("Date Picker widget", () => { ); }); - it("should verify the styles of the multiselect widget", () => { + it("should verify the styles of the widget", () => { const data = {}; data.colour = fake.randomRgba; data.boxShadowParam = fake.boxShadowParam; @@ -193,10 +199,7 @@ describe("Date Picker widget", () => { commonWidgetText.parameterDisable, commonWidgetText.codeMirrorLabelFalse ); - cy.get(commonSelectors.autoSave, { timeout: 9000 }).should( - "have.text", - commonText.autoSave - ); + cy.waitForAutoSave(); cy.get( commonWidgetSelector.draggableWidget(multiselectText.defaultWidgetName) ) @@ -218,27 +221,131 @@ describe("Date Picker widget", () => { cy.get(commonWidgetSelector.buttonStylesEditorSideBar).click(); openAccordion(commonWidgetText.accordionGenaral, "1"); - verifyAndModifyToggleFx( + verifyAndModifyStylePickerFx( commonWidgetText.parameterBoxShadow, commonWidgetText.boxShadowDefaultValue, - false + commonWidgetText.boxShadowFxValue ); - cy.get(multiselectSelector.inputBoxShadow).click(); + cy.get( + commonWidgetSelector.parameterFxButton( + commonWidgetText.parameterBoxShadow + ) + ).click(); + + cy.get( + commonWidgetSelector.stylePicker(commonWidgetText.parameterBoxShadow) + ).click(); fillBoxShadowParams( commonWidgetSelector.boxShadowDefaultParam, data.boxShadowParam ); - cy.get(multiselectSelector.boxShadowPopover) - .find(multiselectSelector.colourPickerInput) - .click(); - selectColourFromColourPicker( - multiselectSelector.colourPickerParent, - data.colour - ); + + selectColourFromColourPicker(commonWidgetText.boxShadowColor, data.colour); verifyBoxShadowCss( multiselectText.defaultWidgetName, data.colour, data.boxShadowParam ); }); + + it("should verify widget in preview", () => { + const data = {}; + data.widgetName = fake.widgetName; + data.label = fake.widgetName; + data.customMessage = fake.randomSentence; + data.alertMessage = fake.randomSentence; + data.colour = fake.randomRgba; + data.boxShadowParam = fake.boxShadowParam; + data.randomLabels = multiselectSelector.textArrayOfLength(3); + data.randomValues = multiselectSelector.textArrayOfLength(3); + + openEditorSidebar(multiselectText.defaultWidgetName); + editAndVerifyWidgetName(data.widgetName); + verifyAndModifyParameter(commonWidgetText.parameterLabel, data.label); + verifyAndModifyParameter( + commonWidgetText.labelDefaultValue, + codeMirrorInputLabel(`[${data.randomValues[0]}]`) + ); + + verifyAndModifyToggleFx(multiselectText.enableSelectAllOptions); + verifyAndModifyParameter( + commonWidgetText.parameterOptionvalues, + codeMirrorInputLabel(`[${data.randomValues}]`) + ); + + openAccordion(commonWidgetText.accordionEvents); + addDefaultEventHandler(data.alertMessage); + + openAccordion(commonWidgetText.accordionGenaral); + addAndVerifyTooltip( + commonWidgetSelector.draggableWidget(data.widgetName), + data.customMessage + ); + + openEditorSidebar(data.widgetName); + cy.get(commonWidgetSelector.buttonStylesEditorSideBar).click(); + openAccordion(commonWidgetText.accordionGenaral, "1"); + + cy.get( + commonWidgetSelector.stylePicker(commonWidgetText.parameterBoxShadow) + ).click(); + + fillBoxShadowParams( + commonWidgetSelector.boxShadowDefaultParam, + data.boxShadowParam + ); + selectColourFromColourPicker(commonWidgetText.boxShadowColor, data.colour); + verifyAndModifyParameter( + commonWidgetText.parameterBorderRadius, + commonWidgetText.borderRadiusInput + ); + + addTextWidgetToVerifyValue(`components.${data.widgetName}.values`); + + cy.openInCurrentTab(commonWidgetSelector.previewButton); + + cy.get(multiselectSelector.multiselectLabel(data.widgetName)).should( + "have.text", + `${data.label}` + ); + + verifyMultiselectOptions(data.widgetName, [ + "Select All", + "one", + "two", + "three", + ]); + verifyWidgetText( + commonWidgetText.text1, + `${data.randomValues[0].replaceAll('"', "")}` + ); + + selectFromMultiSelect(data.widgetName, ["", "", "true"]); + cy.verifyToastMessage(commonSelectors.toastMessage, data.alertMessage); + verifyWidgetText( + commonWidgetText.text1, + `${data.randomValues.slice(0, 2)}`.replaceAll('"', "") + ); + + selectFromMultiSelect(data.widgetName, ["true"]); + verifyWidgetText( + commonWidgetText.text1, + `${data.randomValues}`.replaceAll('"', "") + ); + + verifyMultiselectHeader( + data.widgetName, + multiselectText.labelAllItemsSelected + ); + + verifyTooltip( + commonWidgetSelector.draggableWidget(data.widgetName), + data.customMessage + ); + cy.get(commonWidgetSelector.draggableWidget(data.widgetName)) + .children(".h-100") + .should("have.css", "border-radius", "20px"); + + verifyBoxShadowCss(data.widgetName, data.colour, data.boxShadowParam); + }); }); diff --git a/cypress-tests/cypress/fixtures/fake.js b/cypress-tests/cypress/fixtures/fake.js index 8a0b89c90c..b05fda2394 100644 --- a/cypress-tests/cypress/fixtures/fake.js +++ b/cypress-tests/cypress/fixtures/fake.js @@ -57,6 +57,11 @@ function boxShadowParam() { return paramArray; } +function randomRgbaHex() { + let rgba = faker.color.rgb({ format: "hex", casing: "lower" }); + return rgba; +} + Object.defineProperty(fake, "email", { get: email }); Object.defineProperty(fake, "password", { get: password }); Object.defineProperty(fake, "firstName", { get: firstName }); @@ -67,3 +72,4 @@ Object.defineProperty(fake, "randomSentence", { get: randomSentence }); Object.defineProperty(fake, "randomRgba", { get: randomRgba }); Object.defineProperty(fake, "randomRgb", { get: randomRgb }); Object.defineProperty(fake, "boxShadowParam", { get: boxShadowParam }); +Object.defineProperty(fake, "randomRgbaHex", { get: randomRgbaHex }); diff --git a/cypress-tests/cypress/support/commands.js b/cypress-tests/cypress/support/commands.js index 26d4ca70ca..9f0a299eca 100644 --- a/cypress-tests/cypress/support/commands.js +++ b/cypress-tests/cypress/support/commands.js @@ -71,6 +71,13 @@ Cypress.Commands.add("appLogin", () => { cy.visit("/"); }); +Cypress.Commands.add("waitForAutoSave", () => { + cy.get(commonSelectors.autoSave, { timeout: 10000 }).should( + "have.text", + commonText.autoSave + ); +}); + Cypress.Commands.add("createApp", (appName) => { cy.get("body").then(($title) => { if ($title.text().includes(commonText.introductionMessage)) { @@ -88,10 +95,6 @@ Cypress.Commands.add("createApp", (appName) => { } }); }); - if (appName) { - cy.clearAndType(commonSelectors.appNameInput, appName); - cy.get(commonSelectors.backButton).click(); - } }); Cypress.Commands.add( @@ -99,7 +102,7 @@ Cypress.Commands.add( (widgetName, positionX = 190, positionY = 80) => { const dataTransfer = new DataTransfer(); - cy.get(commonSelectors.searchField).type(widgetName); + cy.clearAndType(commonSelectors.searchField, widgetName); cy.get(commonWidgetSelector.widgetBox(widgetName)).trigger( "dragstart", { dataTransfer }, @@ -109,10 +112,7 @@ Cypress.Commands.add( dataTransfer, force: true, }); - cy.get(commonSelectors.autoSave, { timeout: 10000 }).should( - "have.text", - commonText.autoSave - ); + cy.waitForAutoSave(); } ); @@ -186,3 +186,19 @@ Cypress.Commands.add( .and(assertion, value, ...arg); } ); + +Cypress.Commands.add("openInCurrentTab", (selector) => { + cy.get(selector).invoke("removeAttr", "target").click(); +}); + +Cypress.Commands.add("modifyCanvasSize", (x, y) => { + cy.get("[data-cy='left-sidebar-settings-button']").click(); + cy.clearAndType("[data-cy='maximum-canvas-width-input-field']", x); + cy.clearAndType("[data-cy='maximum-canvas-height-input-field']", y); + cy.forceClickOnCanvas(); +}); + +Cypress.Commands.add("renameApp", (appName) => { + cy.clearAndType(commonSelectors.appNameInput, appName); + cy.waitForAutoSave(); +}); diff --git a/cypress-tests/cypress/support/utils/button.js b/cypress-tests/cypress/support/utils/button.js index 07f7a5fd15..1ed2ed70e2 100644 --- a/cypress-tests/cypress/support/utils/button.js +++ b/cypress-tests/cypress/support/utils/button.js @@ -1,103 +1,28 @@ -import { buttonSelector } from "Selectors/button"; -import { buttonText } from "Texts/button"; -import {commonSelectors} from "Selectors/common"; -import { commonText } from "Texts/common"; - - - -export const propertiesElements = () => { - cy.get(buttonSelector.buttonWidget).dblclick(); - - cy.get(buttonSelector.buttonProperties).should("be.visible").and("have.text",buttonText.buttonProperties); - cy.get(buttonSelector.buttonName).should("be.visible"); - - cy.get(buttonSelector.propertiesElements.eventsAccordion).click(); - cy.get(buttonSelector.propertiesElements.layoutAccordion).click(); - for(const elements in buttonSelector.propertiesElements){ - cy.get(buttonSelector.propertiesElements[elements]).should("be.visible").and("have.text",buttonText.propertiesElements[elements]); - } - - cy.get(buttonSelector.loadingStateToggle).should("be.visible"); - cy.get(buttonSelector.loadingStateFx).should("be.visible").and("have.text",buttonText.fxButton); - cy.get(buttonSelector.desktopToggle).should("be.visible"); - cy.get(buttonSelector.desktopFx).should("be.visible").and("have.text",buttonText.fxButton); - cy.get(buttonSelector.mobileToggle).should("be.visible"); - cy.get(buttonSelector.mobileFx).should("be.visible").and("have.text",buttonText.fxButton); - +import { commonWidgetSelector } from "Selectors/common"; +import { openAccordion, openEditorSidebar } from "Support/utils/commonWidget"; +import { commonWidgetText } from "Texts/common"; + +export const verifyControlComponentAction = (widgetName, value) => { + cy.forceClickOnCanvas(); + cy.dragAndDropWidget("Text input", 280, 90); + + openEditorSidebar(widgetName); + openAccordion(commonWidgetText.accordionEvents); + + cy.get(commonWidgetSelector.addMoreEventHandlerLink).click(); + cy.get(commonWidgetSelector.eventHandlerCard).eq(1).click(); + + cy.get(commonWidgetSelector.actionSelection).type("Control component{Enter}"); + cy.get(commonWidgetSelector.eventComponentSelection).type( + "textinput1{Enter}" + ); + cy.get(commonWidgetSelector.eventComponentActionSelection).type( + "Set text{Enter}" + ); + cy.get(commonWidgetSelector.componentTextInput) + .find('[data-cy*="-input-field"]') + .clearAndTypeOnCodeMirror(value); + cy.get(commonWidgetSelector.draggableWidget(widgetName)).click(); + + cy.get(commonWidgetSelector.draggableWidget('textinput1')).should("have.value", value); }; - -export const stylesElements = () => { - cy.get(buttonSelector.buttonWidget).dblclick(); - cy.get(buttonSelector.buttonStyles).should("be.visible").and("have.text",buttonText.buttonStyles); - cy.get(buttonSelector.buttonStyles).click(); - for(const elements in buttonSelector.stylesElements){ - cy.get(buttonSelector.stylesElements[elements]).should("be.visible").and("have.text",buttonText.stylesElements[elements]); - } - for(const inputs in buttonSelector.stylesInput){ - cy.get(buttonSelector.stylesInput[inputs]).should("be.visible"); - } - for(const fx in buttonSelector.stylesFx){ - cy.get(buttonSelector.stylesFx[fx]).should("be.visible").and("have.text",buttonText.fxButton); - } - cy.get(buttonSelector.visibilityToggle).should("be.visible"); - cy.get(buttonSelector.disableToggle).should("be.visible"); - -}; - -export const deleteApp = () => { - cy.get(commonSelectors.autoSave, { timeout: 9000 }).should("have.text", commonText.autoSave); - - cy.get(commonSelectors.backButton).click(); - cy.get(commonSelectors.appCardOptions).first().click(); - cy.get(commonSelectors.deleteApp).click(); - cy.get(commonSelectors.confirmButton).click(); - -}; - -export const navigateToEditor = (appName) => { - cy.contains('div', appName).parent().within(() => { - cy.get('div, button').click(); - }); - cy.get(commonSelectors.editButton).first().click(); -}; - -export const eventListnerCard = () => { - cy.get(buttonSelector.eventLabel).should("be.visible").and("have.text", buttonText.eventLabel); - cy.get(buttonSelector.eventSelection).should("be.visible"); - cy.get(buttonSelector.actionLabel).should("be.visible").and("have.text", buttonText.actionLabel); - cy.get(buttonSelector.actionSelection).should("be.visible"); - cy.get(buttonSelector.actionOption).should("be.visible").and("have.text", buttonText.actionOption); - cy.get(buttonSelector.messageLabel).should("be.visible").and("have.text", buttonText.messageLabel); - cy.get(buttonSelector.messageText).should("be.visible"); - cy.get(buttonSelector.alertTypeLabel).should("be.visible").and("have.text", buttonText.alertTypeLabel); - cy.get(buttonSelector.alertMessageType).should("be.visible"); -}; - - export const colorPickerCard = () => { - cy.get(buttonSelector.backgroundColorSelector).should("be.visible").click(); - cy.get(buttonSelector.colorPickCard).should("be.visible"); - for(const elements in buttonSelector.backgroundColor){ - cy.get(buttonSelector.backgroundColor[elements]).should("be.visible"); - } - cy.get(buttonSelector.stylesFx.backgroundColor).click(); - cy.get(buttonSelector.backgroundColorInput).should("have.text", buttonText.backgroundColorInput); - cy.get(buttonSelector.backgroundColorCloseFx).click(); - - cy.get(buttonSelector.textColorSelector).should("be.visible").click(); - cy.get(buttonSelector.colorPickCard).should("be.visible"); - for(const elements in buttonSelector.textColor){ - cy.get(buttonSelector.textColor[elements]).should("be.visible"); - } - cy.get(buttonSelector.stylesFx.textColor).click(); - cy.get(buttonSelector.textColorInput).should("have.text", buttonText.textColorInput); - cy.get(buttonSelector.textColorCloseFx).click(); - - cy.get(buttonSelector.loaderColorSelector).should("be.visible").click(); - cy.get(buttonSelector.colorPickCard).should("be.visible"); - for(const elements in buttonSelector.loaderColor){ - cy.get(buttonSelector.loaderColor[elements]).should("be.visible"); - } - cy.get(buttonSelector.stylesFx.loaderColor).click(); - cy.get(buttonSelector.loaderColorInput).should("have.text", buttonText.loaderColorInput); - cy.get(buttonSelector.loaderColorCloseFx).click(); - }; \ No newline at end of file diff --git a/cypress-tests/cypress/support/utils/commonWidget.js b/cypress-tests/cypress/support/utils/commonWidget.js index 9bcb449c03..00ba474f27 100644 --- a/cypress-tests/cypress/support/utils/commonWidget.js +++ b/cypress-tests/cypress/support/utils/commonWidget.js @@ -1,8 +1,13 @@ import { commonSelectors, commonWidgetSelector } from "Selectors/common"; -import { commonWidgetText, commonText } from "Texts/common"; +import { + commonWidgetText, + commonText, + codeMirrorInputLabel, +} from "Texts/common"; export const openAccordion = (accordionName, index = "0") => { cy.get(commonWidgetSelector.accordion(accordionName, index)) + .scrollIntoView() .should("be.visible") .and("have.text", accordionName) .then(($accordion) => { @@ -13,10 +18,9 @@ export const openAccordion = (accordionName, index = "0") => { }; export const verifyAndModifyParameter = (paramName, value) => { - cy.get(commonWidgetSelector.parameterLabel(paramName)).should( - "have.text", - paramName - ); + cy.get(commonWidgetSelector.parameterLabel(paramName)) + .scrollIntoView() + .should("have.text", paramName); cy.get( commonWidgetSelector.parameterInputField(paramName) ).clearAndTypeOnCodeMirror(value); @@ -67,16 +71,11 @@ export const addAndVerifyTooltip = (widgetSelector, message) => { cy.get(commonWidgetSelector.tooltipInputField).clearAndTypeOnCodeMirror( message ); - cy.forceClickOnCanvas(); - cy.get(widgetSelector) - .trigger("mouseover") - .then(() => { - cy.get(commonWidgetSelector.tooltipLabel).should("have.text", message); - }); + verifyTooltip(widgetSelector, message); }; export const editAndVerifyWidgetName = (name) => { - cy.get(commonWidgetSelector.WidgetNameInputField).clear().type(name); + cy.clearAndType(commonWidgetSelector.WidgetNameInputField, name); cy.get(commonWidgetSelector.buttonCloseEditorSideBar).click(); cy.get(commonWidgetSelector.draggableWidget(name)).trigger("mouseover"); @@ -117,8 +116,9 @@ export const verifyMultipleComponentValuesFromInspector = ( cy.forceClickOnCanvas(); }; -export const selectColourFromColourPicker = (parentElement, colour) => { - cy.get(parentElement).within(() => { +export const selectColourFromColourPicker = (paramName, colour) => { + cy.get(commonWidgetSelector.stylePicker(paramName)).click(); + cy.get(commonWidgetSelector.colourPickerParent).within(() => { colour.forEach((value, i) => cy .get(commonWidgetSelector.colourPickerInput(i + 1)) @@ -135,10 +135,7 @@ export const selectColourFromColourPicker = (parentElement, colour) => { }) ); }); - cy.get(commonSelectors.autoSave, { timeout: 10000 }).should( - "have.text", - commonText.autoSave - ); + cy.waitForAutoSave(); }; export const fillBoxShadowParams = (paramLabels, values) => { @@ -162,7 +159,7 @@ export const fillBoxShadowParams = (paramLabels, values) => { export const verifyBoxShadowCss = (widgetName, color, shadowParam) => { cy.forceClickOnCanvas(); cy.get(commonWidgetSelector.draggableWidget(widgetName)) - .parent() + .parents('[role = "Box"]') .should( "have.css", "box-shadow", @@ -171,3 +168,124 @@ export const verifyBoxShadowCss = (widgetName, color, shadowParam) => { }px ${shadowParam[1]}px ${shadowParam[2]}px ${shadowParam[3]}px` ); }; + +export const verifyComponentFromInspector = ( + componentName, + openStatus = "closed" +) => { + cy.get(commonWidgetSelector.sidebarinspector).click(); + if (openStatus == "closed") { + cy.get(commonWidgetSelector.inspectorNodeComponents).click(); + cy.get( + commonWidgetSelector.nodeComponent(componentName) + ).verifyVisibleElement("have.text", componentName); + } +}; + +export const verifyAndModifyStylePickerFx = ( + paramName, + defaultValue, + value +) => { + cy.get(commonWidgetSelector.parameterLabel(paramName)).should( + "have.text", + paramName + ); + cy.get(commonWidgetSelector.stylePicker(paramName)).should("be.visible"); + cy.get(commonWidgetSelector.stylePickerValueIcon(paramName)).should( + "be.visible" + ); + + cy.get(commonWidgetSelector.stylePickerValue(paramName)) + .should("be.visible") + .verifyVisibleElement("have.text", defaultValue); + cy.get( + commonWidgetSelector.parameterFxButton( + paramName, + "[class*='fx-button unselectable']" + ) + ) + .should("have.text", "Fx") + .click(); + + cy.get(commonWidgetSelector.stylePickerFxInput(paramName)).within(() => { + cy.get(".CodeMirror-line") + .should("be.visible") + .and("have.text", defaultValue); + }); + + cy.get( + commonWidgetSelector.stylePickerFxInput(paramName) + ).clearAndTypeOnCodeMirror(value); + + cy.get(commonWidgetSelector.stylePickerFxInput(paramName)).within(() => { + cy.get(".CodeMirror-line").should("be.visible").and("have.text", value); + }); +}; + +export const verifyWidgetColorCss = (widgetName, cssProperty, color) => { + cy.forceClickOnCanvas(); + cy.get(commonWidgetSelector.draggableWidget(widgetName)).should( + "have.css", + cssProperty, + `rgba(${color[0]}, ${color[1]}, ${color[2]}, ${color[3] / 100})` + ); +}; + +export const verifyLoaderColor = (widgetName, color) => { + cy.forceClickOnCanvas(); + cy.get(commonWidgetSelector.draggableWidget(widgetName)) + .should("attr", "style") + .and( + "contains", + `--loader-color:rgba(${color[0]}, ${color[1]}, ${color[2]}, ${ + color[3] / 100 + })` + ); +}; + +export const verifyLayout = (widgetName) => { + openEditorSidebar(widgetName); + openAccordion(commonWidgetText.accordionLayout); + verifyAndModifyToggleFx( + commonWidgetText.parameterShowOnDesktop, + commonWidgetText.codeMirrorLabelTrue + ); + cy.get(commonWidgetSelector.draggableWidget(widgetName)).should("not.exist"); + + verifyAndModifyToggleFx( + commonWidgetText.parameterShowOnMobile, + commonWidgetText.codeMirrorLabelFalse + ); + cy.get(commonWidgetSelector.changeLayoutButton).click(); + cy.get(commonWidgetSelector.draggableWidget(widgetName)).should("exist"); +}; + +export const addTextWidgetToVerifyValue = (customfunction) => { + cy.forceClickOnCanvas(); + cy.dragAndDropWidget("Text", 600, 80); + openEditorSidebar("text1"); + verifyAndModifyParameter("Text", codeMirrorInputLabel(customfunction)); + cy.forceClickOnCanvas(); + cy.get(commonSelectors.autoSave, { timeout: 10000 }).should( + "have.text", + commonText.autoSave + ); +}; + +export const verifyTooltip = (widgetSelector, message) => { + cy.forceClickOnCanvas(); + cy.get(widgetSelector) + .trigger("mouseover", { timeout: 2000 }) + .trigger("mouseover") + .then(() => { + cy.get(commonWidgetSelector.tooltipLabel).should("have.text", message); + }); +}; + +export const verifyWidgetText = (widgetName, text) => { + cy.get(commonWidgetSelector.draggableWidget(widgetName)).should( + "have.text", + text + ); +}; diff --git a/cypress-tests/cypress/support/utils/datePickerWidget.js b/cypress-tests/cypress/support/utils/datePickerWidget.js index 8ff155b409..c9e497c5b3 100644 --- a/cypress-tests/cypress/support/utils/datePickerWidget.js +++ b/cypress-tests/cypress/support/utils/datePickerWidget.js @@ -2,11 +2,15 @@ import { commonSelectors, commonWidgetSelector } from "Selectors/common"; import { datePickerSelector } from "Selectors/datePicker"; import moment from "moment"; -export const selectAndVerifyDate = (date, outFormat = "DD/MM/YYYY") => { +export const selectAndVerifyDate = ( + widgetName, + date, + outFormat = "DD/MM/YYYY" +) => { const splitDate = date.split("/"); const month = moment(splitDate[1]).format("MMMM"); cy.get(commonSelectors.canvas).click({ force: true }); - cy.get(datePickerSelector.draggableDatePicker) + cy.get(commonWidgetSelector.draggableWidget(widgetName)) .click() .within(() => { cy.get(datePickerSelector.calendarYearSelect).select(splitDate[2], { @@ -25,20 +29,23 @@ export const selectAndVerifyDate = (date, outFormat = "DD/MM/YYYY") => { .should("have.value", moment(date, "DD/MM/YYYY").format(outFormat)); }; -export const verifyDate = (date, format = "DD/MM/YYYY") => { +export const verifyDate = (widgetName, date, format = "DD/MM/YYYY") => { date = date != "" ? moment(date, "DD MM YYYY").format(format) : date; - cy.get(commonWidgetSelector.buttonCloseEditorSideBar).click(); - cy.get(datePickerSelector.draggableDatePicker) + cy.get(commonWidgetSelector.draggableWidget(widgetName)) .find("input") .should("have.value", date); }; -export const selectAndVerifyTime = (time) => { +export const selectAndVerifyTime = (widgetName, time) => { cy.get(commonSelectors.canvas).click({ force: true }); - cy.get(datePickerSelector.draggableDatePicker) + cy.get(commonWidgetSelector.draggableWidget(widgetName)) + .scrollIntoView() .click() + .trigger("mouseleave") .within(() => { cy.get(datePickerSelector.calenderTimeInput) + .scrollIntoView() + .focus() .type(`${time}`) .should("have.value", time); }); diff --git a/cypress-tests/cypress/support/utils/multiselectWidget.js b/cypress-tests/cypress/support/utils/multiselectWidget.js index 4d6f774617..2516c0d4fd 100644 --- a/cypress-tests/cypress/support/utils/multiselectWidget.js +++ b/cypress-tests/cypress/support/utils/multiselectWidget.js @@ -31,12 +31,14 @@ export const verifyMultiselectStatus = ( export const selectFromMultiSelect = (widgetName, options) => { cy.get(commonWidgetSelector.draggableWidget(widgetName)) - .find(multiselectSelector.dropdownArrow) + .find(multiselectSelector.multiselectHeader) .click(); - cy.get(multiselectSelector.dropdownAllItems).each(($option, i) => { - if (options[i] == "true") - cy.wrap($option).find(multiselectSelector.dropdownCheckbox).click(); - }); + cy.get(multiselectSelector.dropdownAllItems, { timeout: 2000 }).each( + ($option, i) => { + if (options[i] == "true") + cy.wrap($option).find(multiselectSelector.dropdownCheckbox).click(); + } + ); cy.forceClickOnCanvas(); }; diff --git a/docs/docs/data-sources/airtable.md b/docs/docs/data-sources/airtable.md index ff4dee4393..50efb56f4c 100644 --- a/docs/docs/data-sources/airtable.md +++ b/docs/docs/data-sources/airtable.md @@ -8,11 +8,9 @@ title: Airtable ToolJet can connect to your Airtable account to read and write data. **Airtable API key** is required to create an Airtable data source on ToolJet. You can generate API key by visiting [Airtable account page](https://airtable.com/account). -
-![ToolJet - Data source - Airtable](/img/datasource-reference/airtable/airtableds.gif) +irtable record -
:::info Airtable API has a rate limit, and at the time of writing this documentation, the limit is five(5) requests per second per base. You can read more about rate limits here **[Airtable API]( https://airtable.com/api )**. @@ -44,11 +42,9 @@ This query lists all the records in a table. The results are paginated and each - **Page size:** The number of records returned in each request. Must be less than or equal to 100. Default is 100. - **offset:** If there are more records, the response will contain an offset. To fetch the next page of records, include offset in the next request's parameters. -
-![ToolJet - Data source - Airtable](/img/datasource-reference/airtable/airtable_list.png) +List airtable record -
Example response from Airtable: @@ -92,11 +88,9 @@ Example response from Airtable: - **Table name** - **Record ID** -
-![ToolJet - Data source - Airtable](/img/datasource-reference/airtable/airtable_retrieve.png) +Retrieve airtable record -
Example response from Airtable: @@ -118,11 +112,8 @@ Example response from Airtable: - **Table name** - **Records** -
- -![ToolJet - Data source - Airtable](/img/datasource-reference/airtable/airtable_create.png) -
+Create airtable record #### Example Records: @@ -183,20 +174,18 @@ Example response from Airtable: - **Table name** - **Record ID** -
- -![ToolJet - Data source - Airtable](/img/datasource-reference/airtable/airtable_update.png) -
+Update airtable record #### Example body:
-![ToolJet - Data source - Airtable](/img/datasource-reference/airtable/airtable-update-example-body.png) +Airtable update body
+ Click on the `run` button to run the query. :::info @@ -222,11 +211,7 @@ Example response from Airtable: - **Table name** - **Record ID** -
- -![ToolJet - Data source - Airtable](/img/datasource-reference/airtable/airtable_delete.png) - -
+Delete airtable record Click on the `run` button to run the query. diff --git a/docs/docs/data-sources/appwrite.md b/docs/docs/data-sources/appwrite.md index 7148101903..9f3cbe34ff 100644 --- a/docs/docs/data-sources/appwrite.md +++ b/docs/docs/data-sources/appwrite.md @@ -22,21 +22,16 @@ You should also set scope for access of particular resource. Learn more about th To connect Appwrite datasource to your ToolJet application, go to the data source manager on the left-sidebar and click on the `+` button. Select Appwrite from the list of available datasources, provide the credentials and click **Save**. It is recommended to the check the connection by clicking on 'Test connection' button to verify if the service account can access Appwrite from ToolJet server. -
-![ToolJet - Data source - Appwrite](/img/datasource-reference/appwrite/appwrite-init.gif) - -
+Appwrite intro ## Querying Appwrite After setting up the Appwrite datasource, you can click on the `+` button of the query manager at the bottom panel of the editor and select the Appwrite data source that you added in the previous step. -
-![ToolJet - Data source - Appwrite](/img/datasource-reference/appwrite/appwrite-query.gif) +Appwrite query -
After selecting Appwrite datasource, select the operation that you want to perform on Appwrite database and click **Save** to save the query. @@ -68,11 +63,9 @@ This operation can be used to get a list of all the user documents. - **Order types:** Array of order directions for sorting attribtues. Possible values are DESC for descending order, or ASC for ascending order. The order field value should be an `array`. - **Field, Operator, and Value:** For filtering the results, you can enter a field(attribute) name, use appropriate operator from the dropdown and set a value. -
-![ToolJet - Data source - Appwrite](/img/datasource-reference/appwrite/appwrite_list.png) +Appwrite List -
### Get document @@ -84,11 +77,7 @@ Use this operation to get a document from a collection by its unique ID. - **Document ID:** Enter the document ID of the document that you want to get. The document ID should be of `String` type. -
- -![ToolJet - Data source - Appwrite](/img/datasource-reference/appwrite/appwrite_get.png) - -
+Appwrite get ### Add Document to Collection @@ -100,11 +89,8 @@ Use this operation to create a new document in a collection. - **Body:** Enter the document data as JSON object. -
-![ToolJet - Data source - Appwrite](/img/datasource-reference/appwrite/appwrite_add.png) - -
+Appwrite add ### Update document @@ -118,11 +104,8 @@ Use this operation to update a document. - **Body:** Enter the document data as JSON object. -
- -![ToolJet - Data source - Appwrite](/img/datasource-reference/appwrite/appwrite_update.png) -
+Appwrite update ### Delete document @@ -134,11 +117,9 @@ Use this operation for deleting a document in collection. - **Document ID:** Enter the document ID of the document that you want to get. The document ID should be of `String` type. -
-![ToolJet - Data source - Appwrite](/img/datasource-reference/appwrite/appwrite_delete.png) +Appwrite delete -
### Bulk update using document id @@ -153,8 +134,5 @@ Use this operation for bulk updating a documents in a collection. - **Records:** The array of objects that will contain the data for updating each record in the database and these objects must contain a key value pair to point unique record in the database (key for document) -
- -![ToolJet - Data source - Appwrite](/img/datasource-reference/appwrite/appwrite_bulk.png) -
+Appwrite bulk update diff --git a/docs/docs/data-sources/athena.md b/docs/docs/data-sources/athena.md index 15bfe5d22c..c49c3d7866 100644 --- a/docs/docs/data-sources/athena.md +++ b/docs/docs/data-sources/athena.md @@ -21,21 +21,17 @@ ToolJet requires the following to connect to your Athena. You can also configure for **[additional optional parameters](https://github.com/ghdna/athena-express)**. ::: -
-![ToolJet - Amazon Athena - Connection](/img/datasource-reference/athena/athena-connection.png) +Athena connection -
## Querying Amazon Athena - Click on `+` button of the query manager at the bottom panel of the editor and select the database added in the previous step as the datasource. Query manager then can be used to write SQL queries. -
-![ToolJet - Querying- Amazon Athena](/img/datasource-reference/athena/athena-query.png) +Athena query -
- Click on the `run` button to run the query. diff --git a/docs/docs/data-sources/baserow.md b/docs/docs/data-sources/baserow.md index dc822d6ed8..749fa676d9 100644 --- a/docs/docs/data-sources/baserow.md +++ b/docs/docs/data-sources/baserow.md @@ -7,13 +7,16 @@ title: Baserow ## Connection -ToolJet can connect to your Baserow account to read and write data. Baserow API token is required to create an Baserow data source on ToolJet. You can follow the steps to create API token from [this link](https://baserow.io/api-docs). +ToolJet can connect to your Baserow account to read and write data. +Select the hosted version of Baserow or the self-host option. -
+For [**self-hosted**](https://baserow.io/docs/index#installation) option, base URL is required to connect. -![ToolJet - Data source - Baserow](/img/datasource-reference/baserow/baserow-intro.gif) +Baserow API token is required to create an Baserow data source on ToolJet. You can follow the steps to create API token from [this link](https://baserow.io/api-docs). + + +Baserow intro -
:::tip This guide assumes that you have already gone through [Adding a data source](/docs/tutorial/adding-a-datasource) tutorial. @@ -37,11 +40,9 @@ This query lists all the fields in a table. - **Table ID** -
-![ToolJet - Data source - Baserow](/img/datasource-reference/baserow/baserow-list-fields.png) +Baserow list fields -
Example response from Baserow: @@ -92,11 +93,9 @@ This query lists all the rows in a table. - **Table ID** -
-![ToolJet - Data source - Baserow](/img/datasource-reference/baserow/baserow-list-rows.png) +Baserow list -
Example response from Baserow: @@ -141,11 +140,9 @@ Example response from Baserow: - **Table ID** - **Row ID** -
-![ToolJet - Data source - Baserow](/img/datasource-reference/baserow/baserow-get-row.png) +Baserow get -
Example response from Baserow: @@ -167,11 +164,9 @@ Example response from Baserow: - **Table ID** - **Records** -
-![ToolJet - Data source - Baserow](/img/datasource-reference/baserow/baserow-create-row.png) +Bserow create -
#### Example Records: @@ -205,11 +200,8 @@ Example response from Baserow: - **Row ID** - **Records** -
- -![ToolJet - Data source - Baserow](/img/datasource-reference/baserow/baserow-update-row.png) -
+Baserow update #### Example Records: @@ -246,11 +238,9 @@ Example response from Baserow: - **Before ID** (The row will be moved before the entered ID. If not provided, then the row will be moved to the end ) -
-![ToolJet - Data source - Baserow](/img/datasource-reference/baserow/baserow-move-row.png) +Baserow move row -
Example response from Baserow: @@ -272,10 +262,8 @@ Example response from Baserow: - **Table ID** - **Row ID** -
-![ToolJet - Data source - Baserow](/img/datasource-reference/baserow/baserow-delete-row.png) +Baserow delete -
While deleting a row, the response will be either success or failure from Baserow diff --git a/docs/docs/data-sources/bigquery.md b/docs/docs/data-sources/bigquery.md index 0d5a10681b..c6d7103833 100644 --- a/docs/docs/data-sources/bigquery.md +++ b/docs/docs/data-sources/bigquery.md @@ -36,7 +36,7 @@ ToolJet requires the config json downloaded from your account to connect to BigQ
-![ToolJet - Data source - BigQuery](/img/datasource-reference/bigquery/bq-create.png) +BQ create
@@ -46,11 +46,9 @@ Click on **Test connection** button to verify if the credentials are correct and Click on `+` button of the query manager at the bottom panel of the editor and select the database added in the previous step as the data source. Select the operation that you want to perform and click **Save** to create the query. -
-![ToolJet - Data source - BigQuery](/img/datasource-reference/bigquery/bq-query.png) +BQ query -
Click on the **run** button to run the query. NOTE: Query should be saved before running. @@ -91,11 +89,8 @@ Retruns list of datasets. - **Options:** This can be used to filter the list. -
-![ToolJet - Data source - BigQuery](/img/datasource-reference/bigquery/list_datasets.png) - -
+BQ list datasets ### List Tables @@ -109,40 +104,31 @@ Return list of tables within a dataset - **Options:** This can be used to filter the list. -
-![ToolJet - Data source - BigQuery](/img/datasource-reference/bigquery/list_tables.png) +BQ list tables -
### Query Return data based on the `Query`. `Query options` ([Reference](https://cloud.google.com/bigquery/docs/reference/rest/v2/Job)), and `Query result options` ([Reference](https://cloud.google.com/nodejs/docs/reference/bigquery/latest/overview#_google_cloud_bigquery_QueryResultsOptions_type)). -
- -![ToolJet - Data source - BigQuery](/img/datasource-reference/bigquery/query.png) -
+BQ query ### Insert Record - To insert a record. -
-![ToolJet - Data source - BigQuery](/img/datasource-reference/bigquery/bq-insert.png) +BQ insert -
### Delete Record - To delete a record. -
-![ToolJet - Data source - BigQuery](/img/datasource-reference/bigquery/bq-delete.png) +BQ delete -
:::info NOTE: Be careful when deleting records in a table. If you omit the WHERE clause, all records in the table will be deleted! @@ -150,11 +136,9 @@ NOTE: Be careful when deleting records in a table. If you omit the WHERE clause, ### Update Record - To update a record. -
-![ToolJet - Data source - BigQuery](/img/datasource-reference/bigquery/bq-update.png) +BQ update -
:::info NOTE: Be careful when deleting records in a table. If you omit the WHERE clause, all records in the table will be updated! @@ -163,11 +147,9 @@ NOTE: Be careful when deleting records in a table. If you omit the WHERE clause, - To create a view. -
-![ToolJet - Data source - BigQuery](/img/datasource-reference/bigquery/bq-view.png) +BQ create view -
### Create Table diff --git a/docs/docs/data-sources/couchdb.md b/docs/docs/data-sources/couchdb.md index 37f49de7f8..2e6efc3144 100644 --- a/docs/docs/data-sources/couchdb.md +++ b/docs/docs/data-sources/couchdb.md @@ -7,11 +7,9 @@ title: CouchDB ToolJet can connect to CouchDB databases to read and write data. CocuhDB uses basic auth for authentication , username and password for the database is required to create an CouchDB data source on ToolJet. For more info visit [CouchDB docs](https://docs.couchdb.org/en/stable/). -
-![ToolJet - Data source - CouchDb](/img/datasource-reference/couchdb/auth_couch.gif) +Couch auth -
## Supported queries: @@ -48,11 +46,9 @@ include_docs (boolean) – include_docs key is set to false by default , if true ::: -
-![ToolJet - Data source - CouchDb](/img/datasource-reference/couchdb/listing.png) +Couch listing -
Example response from CouchDb: @@ -93,11 +89,9 @@ Example response from CouchDb: - **Record ID** -
-![ToolJet - Data source - CouchDb](/img/datasource-reference/couchdb/retrieving.png) +Couch retrive view -
Example response from CouchDb: @@ -116,11 +110,9 @@ The returned JSON is the JSON of the document, including the document ID and rev ### Creating a record -
-![ToolJet - Data source - CouchDb](/img/datasource-reference/couchdb/creating.png) +Couch create view -
#### Example Records: @@ -154,11 +146,9 @@ You get the document as JSON in the response. For each update to the document, t - **Revision ID** - **Record ID** -
-![ToolJet - Data source - CouchDb](/img/datasource-reference/couchdb/updating.png) +Couch update view -
#### Example body: @@ -188,11 +178,9 @@ Example response from CouchDb: - **Revision ID** - **Record ID** -
-![ToolJet - Data source - CouchDb](/img/datasource-reference/couchdb/deleting.png) +Couch delete view -
Click on the `run` button to run the query. @@ -220,11 +208,9 @@ NOTE: selector syntax: https://pouchdb.com/guides/mango-queries.html ::: -
-![ToolJet - Data source - CouchDb](/img/datasource-reference/couchdb/find.png) +Couch find -
#### Example body: @@ -249,11 +235,9 @@ More information : https://docs.couchdb.org/en/stable/api/database/find.html Example response from CouchDb: -
-![ToolJet - Data source - CouchDb](/img/datasource-reference/couchdb/find_response.png) +Couch find response -
### Retrieving a view @@ -264,11 +248,9 @@ Views are the primary tool used for querying and reporting on CouchDB documents. Reference for view :https://docs.couchdb.org/en/3.2.0/ddocs/views/intro.html#what-is-a-view -
-![ToolJet - Data source - CouchDb](/img/datasource-reference/couchdb/get_view.png) +Couch get view -
#### Optional parameters: diff --git a/docs/docs/data-sources/custom-js.md b/docs/docs/data-sources/custom-js.md index e35c6dbf25..baf52c465e 100644 --- a/docs/docs/data-sources/custom-js.md +++ b/docs/docs/data-sources/custom-js.md @@ -7,11 +7,9 @@ title: Custom JavaScript You can write custom JavaScript code to interact with components and queries. To do that, you just need to create a new query and select **Run JavaScript Code** from the data sources dropdown. -
-![ToolJet - Data source - Custom JavaScript](/img/datasource-reference/custom-javascript/custom-javascript.png) +custom js -
#### Example: Displaying random number @@ -31,11 +29,9 @@ The return value is used as the `data` of the query. - Add an event handler to the button - Select **On Click** event, **Run Query** action, and select the `runjs1` query that we created. This will run the JavaScript code every time the button is clicked. - Edit the property of text widget - In the text field enter **Random number: `{{queries.runjs1.data}}`**. It will display the output as Random number: *result from JS code* -
-![Display random number using JS](/img/datasource-reference/custom-javascript/jsrandom.gif) +jsrandom -
You can also write custom JavaScript code to get the data from **External APIs** and manipulate the response for graphical representation. Here's the [tutorial](https://blog.tooljet.com/build-github-stars-history-app-in-5-minutes-using-low-code/) on how we used custom JavaScript code to build an app using GitHub API. diff --git a/docs/docs/data-sources/dynamodb.md b/docs/docs/data-sources/dynamodb.md index df0189d671..76c0713505 100644 --- a/docs/docs/data-sources/dynamodb.md +++ b/docs/docs/data-sources/dynamodb.md @@ -19,7 +19,8 @@ ToolJet requires the following to connect to your DynamoDB. It is recommended to create a new IAM user for the database so that you can control the access levels of ToolJet. -ToolJet - Dynamo connection +ToolJet - Dynamo connection + Click on 'Test connection' button to verify if the credentials are correct and that the database is accessible to ToolJet server. Click on 'Save' button to save the data source. @@ -27,7 +28,8 @@ Click on 'Test connection' button to verify if the credentials are correct and t Click on `+` button of the query manager at the bottom panel of the editor and select the database added in the previous step as the data source. Select the operation that you want to perform and click 'Save' to save the query. -ToolJet - Dynamo query +ToolJet - Dynamo query + Click on the 'run' button to run the query. NOTE: Query should be saved before running. diff --git a/docs/docs/data-sources/elasticsearch.md b/docs/docs/data-sources/elasticsearch.md index a2473a8cc7..3f06fc7b3d 100644 --- a/docs/docs/data-sources/elasticsearch.md +++ b/docs/docs/data-sources/elasticsearch.md @@ -19,14 +19,16 @@ ToolJet requires the following to connect to your Elasticsearch cluster:
-![ToolJet - Data Source - Elasticsearch](/img/datasource-reference/elasticsearch/connect.png) +Elastic connect +
Elastic search datasource is also providing an option for connecting services with ssl certificates. - You can either use CA / Client certificates option. -![ToolJet - Data Source - Elasticsearch - SSL](/img/datasource-reference/elasticsearch/ssl.png) +Elastic ssl + ## Querying Elasticsearch @@ -36,7 +38,8 @@ Select the operation that you want to perform on your Elasticsearch cluster and
-![ToolJet - Data Source - Elasticsearch](/img/datasource-reference/elasticsearch/query.png) +Elastic query +
@@ -50,38 +53,28 @@ Query results can be transformed using transformations. Read our transformations This operation allows you to execute a search query and get back search hits that match the query. Read the Elasticsearch's `Search` guide **[here](https://www.elastic.co/guide/en/elasticsearch/reference/current/search-search.html)**. -
- -![ToolJet - Data Source - Elasticsearch](/img/datasource-reference/elasticsearch/elastic-search.png) -
+Elastic search #### Index a document This operation allows you to add a JSON document to the specified data stream or index. Read the Elasticsearch's `Index` guide **[here](https://www.elastic.co/guide/en/elasticsearch/reference/current/docs-index_.html)**. -
-![ToolJet - Data Source - Elasticsearch](/img/datasource-reference/elasticsearch/index.png) +Elastic index -
#### Get a document This operation allows you to retrieve the specified JSON document from the index. Read the Elasticsearch's `Get` guide **[here](https://www.elastic.co/guide/en/elasticsearch/reference/current/docs-get.html)**. -
-![ToolJet - Data Source - Elasticsearch](/img/datasource-reference/elasticsearch/get.png) +Elastic get -
#### Update a document This operation allows to update a document using the specified script. Read the Elasticsearch's `Update` guide **[here](https://www.elastic.co/guide/en/elasticsearch/reference/current/docs-update.html)**. -
- -![ToolJet - Data Source - Elasticsearch](/img/datasource-reference/elasticsearch/update.png) -
\ No newline at end of file +Elastic update diff --git a/docs/docs/data-sources/firestore.md b/docs/docs/data-sources/firestore.md index 6ee451f913..022a1ece82 100644 --- a/docs/docs/data-sources/firestore.md +++ b/docs/docs/data-sources/firestore.md @@ -11,21 +11,17 @@ To generate a new key, check out [Firestore's official documentation](https://cl Once the key is downloaded, click on `+` button of data sources panel at the left-bottom corner of the app editor. Select Firestore from the modal that pops up. Paste the key in the field for GCP key. Click on **Test connection** button to verify if the service account can access Firestore from ToolJet server. Click on **Save** button to save the datasource. -
-![ToolJet - Data source - Firestore](/img/datasource-reference/firestore/add-ds-firestore.gif) +firestore add ds -
## Querying Firestore Click on `+` button of the query manager at the bottom panel of the editor and select the database added in the previous step as the data source. -
-![ToolJet - Data source - Firestore](/img/datasource-reference/firestore/firestore-query.png) +firestore QUERY -
Select the operation that you want to perform on Firestore and click **Save** to save the query. @@ -50,11 +46,9 @@ Use this operation to get the data in a document. - **Path**: Enter the path of the document. Path format: `collection name/document id`. ex: `books/23e2wsds32` -
-![ToolJet - Data source - Firestore](/img/datasource-reference/firestore/get.png) +firestore get -
### Query collection @@ -72,11 +66,9 @@ Use this operation to query all the documents in a collection. Check firestore d - **Field, Operator, and Value**: For filtering the results, you can enter a document field name, use appropriate operator from the dropdown and set a value. -
-![ToolJet - Data source - Firestore](/img/datasource-reference/firestore/query-collection.png) +firestore collection -
### Add Document to Collection @@ -93,11 +85,9 @@ Use this operation for creating a new document in a collection. } ``` -
-![ToolJet - Data source - Firestore](/img/datasource-reference/firestore/add-document.png) +firestore document -
### Update document @@ -114,11 +104,9 @@ Use this operation for updating the existing document in a collection. Also, it } ``` -
-![ToolJet - Data source - Firestore](/img/datasource-reference/firestore/update.png) +firestore update -
### Set document @@ -135,11 +123,9 @@ This operation replaces your chosen object with the value that you provide. So i } ``` -
-![ToolJet - Data source - Firestore](/img/datasource-reference/firestore/set.png) +firestore set -
### Bulk update using document id @@ -152,11 +138,9 @@ Use this operation for bulk updating documents. - **Records**: -
-![ToolJet - Data source - Firestore](/img/datasource-reference/firestore/bulk.png) +firestore bulk -
### Delete document @@ -166,11 +150,9 @@ Use this operation for deleting a document in a collection. - **Path**: Enter the path of the document to be deleted in a collection. Path format: `collection name/document id`. ex: `books/33243dwe2332` -
-![ToolJet - Data source - Firestore](/img/datasource-reference/firestore/delete.png) +firestore delete -
## Transforming firestore query result for Table widget diff --git a/docs/docs/data-sources/gcs.md b/docs/docs/data-sources/gcs.md index c561ecf1cd..6483a43408 100644 --- a/docs/docs/data-sources/gcs.md +++ b/docs/docs/data-sources/gcs.md @@ -23,7 +23,7 @@ To add a new GCS source, click on the **Add or edit datasource** icon on the lef ToolJet requires the **json private key** of a service account to be able to connect to GCS. You can follow the [google documentation](https://cloud.google.com/docs/authentication/getting-started) to get started. -![ToolJet - GCS connection](/img/datasource-reference/gcs-connect.png) +gcs connection Click on **Test connection** button to verify if the credentials are correct and that the database is accessible to ToolJet server. Click on **Save** button to save the data source. @@ -31,7 +31,7 @@ Click on **Test connection** button to verify if the credentials are correct and Click on `+` button of the **query manager** at the bottom panel of the editor and select the data source added in the previous step as the data source. Select the operation that you want to perform and click **Save** to save the query. -![ToolJet - GCS query](/img/datasource-reference/gcs-query.png) +gcs query Click on the **run** button to run the query. **NOTE**: Query should be saved before running. diff --git a/docs/docs/data-sources/google.sheets.md b/docs/docs/data-sources/google.sheets.md index 483057ec14..2f8edae304 100644 --- a/docs/docs/data-sources/google.sheets.md +++ b/docs/docs/data-sources/google.sheets.md @@ -28,11 +28,9 @@ You can create a Google Sheets data source with one of either of the two permiss 1. **Read Only** 2. **Read and Write** -
-![ToolJet - ToolJet - Data source Google Sheets](/img/datasource-reference/google-sheets/googlesheets.gif) +google sheets -
## Operations @@ -55,11 +53,9 @@ This operation returns the table data from the spreadsheet in the form of json o | Sheet | This is optional. You can specify `sheet name` if it has more than 1 sheets, else it will automatically choose the first sheet. | -
-![ToolJet- Data source - Google Sheets](/img/datasource-reference/google-sheets/read-data-op.png) +google sheets read -
### Append data to a sheet @@ -71,11 +67,9 @@ You can add more rows to the table using the append operation. | Sheet | This is optional. You can specify `sheet name` if it has more than 1 sheets, else it will automatically choose the first sheet. | | Rows | Enter the row data in the json array form. Each object in an array will represent a single row. Example: `[ {"name":"John", "email":"John@tooljet.com"},{...},{...} ]` In each object, the `key` represents the **column name** and the `value` represents the **cell data**. | -
-![ToolJet - ToolJet - Data source Google Sheets](/img/datasource-reference/google-sheets/append-data-op.png) +google sheets append -
### Update single row of a sheet @@ -89,11 +83,9 @@ You can update the existing data in sheet using this operation. | Value | Enter the any `id` number/name that you want to update. | | Rows | Enter the row data. Example: `{{({id: components.textinput4.value, company: components.textinput1.value, position: components.textinput2.value, url: components.textinput3.value, 'date-applied': components.datepicker1.value, status: components.dropdown1.value})}}` | -
-![ToolJet - ToolJet - Data source - Google Sheets](/img/datasource-reference/google-sheets/update-data-op.png) +google sheets update -
### Delete row from a sheet @@ -106,11 +98,9 @@ Use this operation delete a specific row from the sheet. | Delete row number | Just enter the row number that you want to delete. | -
-![ToolJet - ToolJet - Data source Google Sheets](/img/datasource-reference/google-sheets/delete-row-op.png) +google sheets delete -
### Get spreadsheet info @@ -118,8 +108,5 @@ This operation can be used to get some basic information of the spreadsheet such Here is the `Preview` of the query that used the get spreadsheet info operation. -
-![ToolJet - ToolJet - Data source Google Sheets](/img/datasource-reference/google-sheets/get-info2.png) - -
+google sheets get info diff --git a/docs/docs/data-sources/graphql.md b/docs/docs/data-sources/graphql.md index 829300b5e7..b6fb7ecb28 100644 --- a/docs/docs/data-sources/graphql.md +++ b/docs/docs/data-sources/graphql.md @@ -34,11 +34,10 @@ Click on the **Save** button to save the data source. Click on `+` button of the query manager at the bottom panel of the editor and select the GraphQL endpoint added in the previous step as the data source. -
-![ToolJet - Data source - GraphQl](/img/datasource-reference/graphql/graphql-query.png) +graphql query + -
Click on the 'run' button to run the query. NOTE: Query should be saved before running. diff --git a/docs/docs/data-sources/influxdb.md b/docs/docs/data-sources/influxdb.md index 77ff88ba32..27f881e957 100644 --- a/docs/docs/data-sources/influxdb.md +++ b/docs/docs/data-sources/influxdb.md @@ -50,11 +50,9 @@ For generating API Token visit [InfluxDB docs](https://docs.influxdata.com/influ - [Delete a bucket](#delete-a-bucket) -
-![ToolJet - Data source - influxDB](/img/datasource-reference/influxdb/operations.png) +influx operations -
### Write data diff --git a/docs/docs/data-sources/mailgun.md b/docs/docs/data-sources/mailgun.md index ccfbc9d5ee..6b4c71ca78 100644 --- a/docs/docs/data-sources/mailgun.md +++ b/docs/docs/data-sources/mailgun.md @@ -42,10 +42,10 @@ Optional parameters: - Body as HTML -ToolJet - Query Mailgun +ToolJet - Query Mailgun :::info -**Send mail to** - accepts a single email id. +**Send mail to** - accepts a single email id. For example: `{{"dev@tooljet.io"}}`. diff --git a/docs/docs/data-sources/minio.md b/docs/docs/data-sources/minio.md index 052b332eb6..2a54a555ec 100644 --- a/docs/docs/data-sources/minio.md +++ b/docs/docs/data-sources/minio.md @@ -29,7 +29,7 @@ ToolJet requires the following to connect to your DynamoDB:
-![ToolJet - Minio connection](/img/datasource-reference/minio-connect.png) +miniIo connect
@@ -39,7 +39,7 @@ Click on **Test connection** button to verify if the credentials are correct and Click on `+` button of the **query manager** at the bottom panel of the editor and select the data source added in the previous step as the data source. Select the operation that you want to perform and click **Save** to save the query. -![ToolJet - Mino query](/img/datasource-reference/minio-query.png) +miniIo query Click on the **run** button to run the query. **NOTE**: Query should be saved before running. diff --git a/docs/docs/data-sources/mongodb.md b/docs/docs/data-sources/mongodb.md index 0b345cb57f..57f3a80154 100644 --- a/docs/docs/data-sources/mongodb.md +++ b/docs/docs/data-sources/mongodb.md @@ -22,7 +22,7 @@ ToolJet requires the following to connect to your MongoDB. It is recommended to create a new MongoDB user so that you can control the access levels of ToolJet. -ToolJet - Mongo connection +ToolJet - Mongo connection Click on 'Test connection' button to verify if the credentials are correct and that the database is accessible to ToolJet server. Click on 'Save' button to save the data source. @@ -30,7 +30,9 @@ Click on 'Test connection' button to verify if the credentials are correct and t Click on `+` button of the query manager at the bottom panel of the editor and select the database added in the previous step as the data source. Select the operation that you want to perform and click 'Save' to save the query. -ToolJet - Mongo query +ToolJet - Mongo query + + Click on the 'run' button to run the query. NOTE: Query should be saved before running. diff --git a/docs/docs/data-sources/mssql.md b/docs/docs/data-sources/mssql.md index feea0ec9d9..a8aa169ce5 100644 --- a/docs/docs/data-sources/mssql.md +++ b/docs/docs/data-sources/mssql.md @@ -26,7 +26,7 @@ It is recommended to create a new database user so that you can control the acce Click on 'Test connection' button to verify if the credentials are correct and that the database is accessible to ToolJet server. Click on 'Save' button to save the data source. -ToolJet - Redis connection +ToolJet - Redis connection ## Querying SQL Server / Azure SQL databases @@ -34,7 +34,7 @@ Click on '+' button of the query manager at the bottom panel of the editor and s Click on the 'run' button to run the query. NOTE: Query should be saved before running. -ToolJet - Redis connection +ToolJet - Redis connection :::tip diff --git a/docs/docs/data-sources/mysql.md b/docs/docs/data-sources/mysql.md index 44b167dae6..eb5d441cc1 100644 --- a/docs/docs/data-sources/mysql.md +++ b/docs/docs/data-sources/mysql.md @@ -24,7 +24,7 @@ It is recommended to create a new MySQL database user so that you can control th
-![ToolJet - Data source - MySQL](/img/datasource-reference/mysql/mysql.png) +mysql
@@ -43,11 +43,9 @@ SQL mode can be used to write raw SQL queries. Select SQL mode from the dropdown **NOTE**: Query should be saved before running. -
-![ToolJet - Data source - MySQL](/img/datasource-reference/mysql/mysql-sqlmode.png) +mysql mode -
#### GUI mode @@ -56,11 +54,9 @@ GUI mode can be used to query MySQL database without writing queries. Select GUI **Example**: `{{ [ {id: 1, channel: 33}, {id:2, channel:24} ] }}` -
-![ToolJet - Data source - MySQL](/img/datasource-reference/mysql/mysql-guimode.png) +mysql gui mode -
Click on the **run** button to run the query. **NOTE**: Query should be saved before running. diff --git a/docs/docs/data-sources/n8n.md b/docs/docs/data-sources/n8n.md index c0c01de98e..3228af72c2 100644 --- a/docs/docs/data-sources/n8n.md +++ b/docs/docs/data-sources/n8n.md @@ -20,7 +20,7 @@ n8n webhooks can be called with or without an **Authentication**. You can keep t
-![ToolJet - Data source - n8n](/img/datasource-reference/n8n/basicauth.png) +n8n basicauth
@@ -30,7 +30,7 @@ n8n webhooks can be called with or without an **Authentication**. You can keep t
-![ToolJet - Data source - n8n](/img/datasource-reference/n8n/headerauth.png) +n8n headerauth
@@ -46,8 +46,6 @@ You can trigger a workflow with `GET/POST` URL. Choose the request type from the - **URL parameters** (Support for GET & POST) `Optional` - **Body** (Only for POST URL) `Required` -
-![ToolJet - Data source - n8n](/img/datasource-reference/n8n/query.png) +n8n query -
diff --git a/docs/docs/data-sources/notion.md b/docs/docs/data-sources/notion.md index 1242765ef5..2b1a83271b 100644 --- a/docs/docs/data-sources/notion.md +++ b/docs/docs/data-sources/notion.md @@ -11,7 +11,7 @@ For integrating Notion with ToolJet we will need the API token. The API token ca
-![ToolJet - Data source - Notion](/img/datasource-reference/notion/api.png) +notion api
@@ -23,21 +23,17 @@ Notion API provides support for: - **[Block](#blocks)** - **[User](#user)** -
-![ToolJet - Data source - Notion](/img/datasource-reference/notion/querying.png) +notion querying -
:::tip Before querying Notion, you must share the database with your integration. Click the share button in your database view, find your integration name select it. -
-![ToolJet - Data source - Notion](/img/datasource-reference/notion/share.png) +notion share -
::: @@ -49,11 +45,9 @@ On database resource you can perform the following operations: - **[Create a database](#3-create-a-database)** - **[Update a database](#4-update-a-database)** -
-![ToolJet - Data source - Notion](/img/datasource-reference/notion/db_q.png) +notion db -
#### 1. Retrieve a database @@ -63,11 +57,9 @@ This operations retreives a Database object using the ID specified. - **Database ID**: You'll find the Database ID in the url. Suppose this is the example url: `https://www.notion.so/workspace/XXX?v=YYY&p=ZZZ` then `XXX` is the database ID, `YYY` is the view ID and `ZZZ` is the page ID. -
-![ToolJet - Data source - Notion](/img/datasource-reference/notion/db_retrieve.png) +notion db retreieve -
#### 2. Query a database @@ -126,11 +118,9 @@ On page resource you can perform the following operations: - **[Retrieve a page property](#4-retrieve-a-page-property-item)** - **[Archive a page](#5-archive-delete-a-page)** -
-![ToolJet - Data source - Notion](/img/datasource-reference/notion/page_q.png) +notion page -
#### 1. Retrieve a page This operation retrieves a **Page** object using the ID specified. @@ -180,11 +170,9 @@ The following operations can be performed on the block resource: - **[Update a block](#4-update-a-block)** - **[Delete a block](#5-delete-a-block)** -
-![ToolJet - Data source - Notion](/img/datasource-reference/notion/block_q.png) +notion block -
:::info To get the id for blocks, simply click on the menu icon for the block and click "Copy link". Afterwards, paste the link in the browser and it should look like this: `https://www.notion.so/Creating-Page-Sample-ee18b8779ae54f358b09221d6665ee15#7fcb3940a1264aadb2ad4ee9ffe11b0e` the string after **#** is the block id i.e. `7fcb3940a1264aadb2ad4ee9ffe11b0e`. @@ -229,11 +217,8 @@ The following operations can be performed on the user notion resource: #### 1. Retrieve a user from current workspace This operation retrieves a User using the ID specified. -
- -![ToolJet - Data source - Notion](/img/datasource-reference/notion/user_q.png) -
+notion user ##### Required parameters: - **User ID** diff --git a/docs/docs/data-sources/postgresql.md b/docs/docs/data-sources/postgresql.md index 16ce523412..c95cb7f587 100644 --- a/docs/docs/data-sources/postgresql.md +++ b/docs/docs/data-sources/postgresql.md @@ -22,11 +22,9 @@ ToolJet requires the following to connect to your PostgreSQL database. It is recommended to create a new PostgreSQL database user so that you can control the access levels of ToolJet. -
-![ToolJet - Data source - PostgreSQL](/img/datasource-reference/postgresql/pgconnect.png) +ppg connect -
Click on **Test connection** button to verify if the credentials are correct and that the database is accessible to ToolJet server. Click on **Save** button to save the data source. @@ -40,11 +38,9 @@ Select SQL mode from the dropdown and enter the query in the editor. Click on th **NOTE**: Query should be saved before running. -
-![ToolJet - Data source - PostgreSQL](/img/datasource-reference/postgresql/pg-sql.png) +ppg sql -
#### GUI mode @@ -52,11 +48,9 @@ Select GUI mode from the dropdown and then choose the operation **Bulk update us Click on the `run` button to run the query. **NOTE**: Query should be saved before running. -
-![ToolJet - Data source - PostgreSQL](/img/datasource-reference/postgresql/pg-gui.png) +ppg gui -
:::tip Query results can be transformed using transformations. Read our transformations documentation to see how: **[link](/docs/tutorial/transformations)** diff --git a/docs/docs/data-sources/s3.md b/docs/docs/data-sources/s3.md index 7d30f07f6a..17ab39b217 100644 --- a/docs/docs/data-sources/s3.md +++ b/docs/docs/data-sources/s3.md @@ -21,7 +21,8 @@ It is recommended to create a new IAM user for the database so that you can cont
-![ToolJet - AWS S3 connection](/img/datasource-reference/aws-s3/aws-s3-modal.png) +aws s3 modal +
@@ -31,11 +32,9 @@ Click on **Test connection** button to verify if the credentials are correct and Click on `+` button of the **query manager** at the bottom panel of the editor and select the data source added in the previous step as the data source. Select the operation that you want to perform and click **Save** to save the query. -
-![ToolJet - AWS S3 connection](/img/datasource-reference/aws-s3/aws-s3-query.png) +aws s3 query -
Click on the **run** button to run the query. @@ -59,11 +58,8 @@ You can create query for AWS S3 data source to perform several actions such as: You can read an object in a bucket by using this operation. It requires two parameters - **Bucket** name and **Key**. -
-![ToolJet - AWS S3 connection](/img/datasource-reference/aws-s3/read-object.png) - -
+aws s3 read object ### Upload object @@ -73,21 +69,17 @@ You can use this operation to upload objects(files) to your S3 bucket. It requir 3. **Content type**: Specify file type such as text, image etc. 4. **Upload data**: File/object that is to be uploaded. -
-![ToolJet - AWS S3 connection](/img/datasource-reference/aws-s3/upload-object.png) +aws s3 upload -
### List buckets This operation will list all the buckets in your S3. This does not require any parameter. -
-![ToolJet - AWS S3 connection](/img/datasource-reference/aws-s3/list-buckets.png) +aws s3 bucket -
### List objects in a bucket @@ -95,11 +87,9 @@ This operation will fetch the list of all the files in your bucket. It requires 1. **Bucket**: Bucket name (mandatory) 2. **Prefix**: To limit the response to keys that begin with the specified prefix (optional) -
-![ToolJet - AWS S3 connection](/img/datasource-reference/aws-s3/list-objects.png) +aws s3 list object -
### Signed url for download @@ -108,11 +98,9 @@ The object owner can optionally share objects with others by creating a presigne 2. **Key**: an object key 3. **Expires in**: an expiration time of URL -
-![ToolJet - AWS S3 connection](/img/datasource-reference/aws-s3/signed-download.png) +aws s3 signed download -
### Signed url for upload @@ -122,11 +110,10 @@ The presigned URLs are useful if you want your user/customer to be able to uploa 3. **Expires in**: an expiration time of URL 4. **Content type**: the content type such as text, image etc. -
-![ToolJet - AWS S3 connection](/img/datasource-reference/aws-s3/signed-upload.png) +aws s3 signed upload + -
:::info We built an app to view and upload files to AWS S3 buckets. Check out the complete tutorial **[here](https://blog.tooljet.com/building-an-app-to-view-and-upload-files-in-aws-s3-bucket/)**. diff --git a/docs/docs/data-sources/saphana.md b/docs/docs/data-sources/saphana.md index 6d8be6b449..1a18eea40b 100644 --- a/docs/docs/data-sources/saphana.md +++ b/docs/docs/data-sources/saphana.md @@ -39,11 +39,9 @@ Click on `+` button of the query manager at the bottom panel of the editor and s **NOTE**: Query should be saved before running. -
-![ToolJet - Data source - SAP HANA](/img/datasource-reference/saphana/query.png) +saphana query -
:::tip Query results can be transformed using transformations. Read our transformations documentation to see how: **[link](/docs/tutorial/transformations)** diff --git a/docs/docs/data-sources/smtp.md b/docs/docs/data-sources/smtp.md index 9f64a0f8b2..120f2b1d08 100644 --- a/docs/docs/data-sources/smtp.md +++ b/docs/docs/data-sources/smtp.md @@ -21,7 +21,7 @@ You can also test your connection before saving the configuration by clicking on
-![ToolJet - Data source - n8n](/img/datasource-reference/smtp/connect.png) +smtp connect
@@ -35,19 +35,14 @@ To create a query for sending email, you will need to provide the following prop - **To** `required` : Recipient's email address - **Subject** : Subject of the email -
-![ToolJet - Data source - n8n](/img/datasource-reference/smtp/query1.png) +smtp query1 -
- **Body** : You can enter the body text either in the form of `raw text` or `html` in their respective fields. - **Attachments** : Attachments can be added to a SMTP query by referencing the file from the `File Picker` component in the attachments field. For example, you can set the `Attachments` field value to `{{ components.filepicker1.file }}` or you can pass an array of `{{ name: 'filename.jpg', dataURL: '......' }}` object to accomplish this. -
- -![ToolJet - Data source - n8n](/img/datasource-reference/smtp/query2.png) -
\ No newline at end of file +smtp query2 diff --git a/docs/docs/data-sources/typesense.md b/docs/docs/data-sources/typesense.md index ba8ad30a66..48d885bd7f 100644 --- a/docs/docs/data-sources/typesense.md +++ b/docs/docs/data-sources/typesense.md @@ -17,7 +17,7 @@ ToolJet requires the following to connect to your TypeSense deployment:
-![ToolJet - Data Source - TypeSense](/img/datasource-reference/typesense/connect.png) +typesense connect
@@ -28,7 +28,7 @@ Select the operation that you want to perform on your TypeSense cluster and clic
-![ToolJet - Data Source - TypeSense](/img/datasource-reference/typesense/query.png) +typesense query
@@ -42,62 +42,50 @@ Query results can be transformed using transformations. Read our transformations With this operation you can easily create `Collections` in your TypeSense cluster. In the schema field, you'll need to define the schema for creating a new collection. Check out TypeSense docs to know more about collections **[here](https://typesense.org/docs/0.22.2/api/collections.html#create-a-collection)** -
-![ToolJet - Data Source - TypeSense](/img/datasource-reference/typesense/collection.png) +typesense collection -
#### 2. Index a document Use this operation to index a document to your collection. You'll need to specify the **Collection Name** where you want your document to be indexed and also provide the document data according the schema defined in the collection. Read more about Indexing a document in TypeSense **[here]( https://typesense.org/docs/0.22.2/api/documents.html#index-a-single-document)**. -
-![ToolJet - Data Source - TypeSense](/img/datasource-reference/typesense/index.png) +typesense index -
#### 3. Search Use this operation to perform a search within the specified collection. Know more about the search parameters in the TypeSense doc **[here](https://typesense.org/docs/0.22.2/api/documents.html#search)**. -
-![ToolJet - Data Source - TypeSense](/img/datasource-reference/typesense/search.png) +typesense search -
#### 4. Get a document Use this operation to fetch an individual document in a collection by providing the `id` of the document. Read more about it **[here](https://typesense.org/docs/0.22.2/api/documents.html#retrieve-a-document)**. -
-![ToolJet - Data Source - TypeSense](/img/datasource-reference/typesense/get.png) +typesense get -
#### 5. Update a document Use this operation to update an individual document by providing the **Collection Name** and **Id** of the document. You'll need to provide the updated document data in the form of specified schema. Check out the TypeSense's doc on updating a document **[here](https://typesense.org/docs/0.22.2/api/documents.html#update-a-document)**. -
-![ToolJet - Data Source - TypeSense](/img/datasource-reference/typesense/update.png) +typesense update -
#### 6. Delete a document Delete a document from collection by providing the `Id` of the document. Check out the TypeSense's doc on deleting documents **[here](https://typesense.org/docs/0.22.2/api/documents.html#delete-documents)**. -
-![ToolJet - Data Source - TypeSense](/img/datasource-reference/typesense/delete.png) +typesense delete -
:::tip Make sure that you supply JSON strings instead of JavaScript objects for any document or schema that is being passed to the server, in any of the above operations. diff --git a/docs/docs/how-to/access-users-groups.md b/docs/docs/how-to/access-users-groups.md new file mode 100644 index 0000000000..accede39d5 --- /dev/null +++ b/docs/docs/how-to/access-users-groups.md @@ -0,0 +1,54 @@ +--- +id: access-currentuser +title: Enable/Disable a component using current user's property +--- + +# Enable/Disable a component using current user's property + +Let's take look at the exposed variables of the current user property: + +- **email** : The value can accessed using `{{globals.currentUser.email}}` +- **firstName** : The value can accessed using `{{globals.currentUser.firstName}}` +- **lastName** : The value can accessed using `{{globals.currentUser.lastName}}` +- **lastName** : The value can accessed using `{{globals.currentUser.lastName}}` +- **groups** : By default, the admin will be in the two groups `all_users` and `admin`, and any user who is not admin will always be in the `all_users` group by default. Since the **groups** is an array you’ll have to provide the index ([0], [1], and so on) to return the group name. The value can be acccessed using `{{globals.currentUser.groups[1]}}`. + +
+ +Properties of current user + +
+ +### Example: Disable a button if a user is not admin + +- Click on the **Button** handle to open its properties, on the **Styles** tab go to the **Disable** property. + +
+ + Properties of button + +
+ +- Set a condition on the Disable field so that if the the user who is using the app does not have **admin** value in the first index of **groups** array return **true**. The condition can be: + + ```javascript + {{globals.currentUser.groups[1] !== "admin" ? true : false}} + ``` + +
+ + Disable Property of button + +
+ +- Now, when you'll **release** the app, if the user is not is not admin the button will be disabled. + +
+ + Released button disabled when user is not admin + +
+ +:::info +In this how-to we have used the **Groups** property of the **Current User**. You can use any of the exposed variables mentioned above according to your use. +::: diff --git a/docs/docs/how-to/bulk-update-multiple-rows-in-table.md b/docs/docs/how-to/bulk-update-multiple-rows-in-table.md index e610c3149f..b2919b6707 100644 --- a/docs/docs/how-to/bulk-update-multiple-rows-in-table.md +++ b/docs/docs/how-to/bulk-update-multiple-rows-in-table.md @@ -57,10 +57,11 @@ Let's create the query that will be getting the data from the database: We will create a new Custom JS query(**runjs1**) that will generate SQL query for updating multiple rows. ```js +const uniqueIdentifier = "id" const cols = Object.values(components.table1.changeSet).map((col, index) => { return { col: Object.keys(col), - id: components.table1.dataUpdates[index].id, + [uniqueIdentifier]: Object.values(components.table1.dataUpdates)[index][uniqueIdentifier], values: Object.values(col), }; }); @@ -73,6 +74,10 @@ const sql = cols.map((column) => { return sql ``` +:::info +Here the **Unique identifier** is **id**, this is the column name that is used to identify the row in the database. +Update the **Unique identifier** if you are using a different column name. +:::
![ToolJet - How To - Bulk update multiple rows in table](/img/how-to/bulk-update-multiple/runjs1.png) diff --git a/docs/docs/intro.md b/docs/docs/intro.md index 8a4afd1ec1..a50ff181ae 100644 --- a/docs/docs/intro.md +++ b/docs/docs/intro.md @@ -9,11 +9,7 @@ slug: / ToolJet is an **open-source low-code framework** to build and deploy custom internal tools. ToolJet can connect to your data sources such as databases ( PostgreSQL, MongoDB, MS SQL Server, Snowflake, , BigQuery, etc ), API/GraphQL endpoints, SaaS tools ( Airtable, Stripe, Google Sheets, etc ) and cloud object storage services ( AWS S3, Google Cloud Storage and Minio ). Once the data sources are connected, ToolJet can run queries on these data sources to fetch and update data. The data fetched from data sources can be visualised and modified using the UI widgets such as tables, charts, forms, etc. -
- - - -
+github star ## How ToolJet works diff --git a/docs/docs/setup/heroku.md b/docs/docs/setup/heroku.md index 15659f16eb..d91ed802bd 100644 --- a/docs/docs/setup/heroku.md +++ b/docs/docs/setup/heroku.md @@ -20,8 +20,8 @@ title: Heroku
-![ToolJet - Deployment- Heroku](/img/setup/heroku/appname.png) - + heroku appname +
3. Now let's enter the `Config vars` to configure additional [environment variables](/docs/setup/env-vars) that are required for the installation. @@ -39,7 +39,7 @@ title: Heroku
-![ToolJet - Deployment- Heroku](/img/setup/heroku/build.png) +heroku build
@@ -47,7 +47,7 @@ title: Heroku
-![ToolJet - Deployment- Heroku](/img/setup/heroku/login.png) +heroku login
diff --git a/docs/docs/setup/tooljet-subpath.md b/docs/docs/setup/tooljet-subpath.md new file mode 100644 index 0000000000..5bee3604e8 --- /dev/null +++ b/docs/docs/setup/tooljet-subpath.md @@ -0,0 +1,21 @@ +--- +id: tooljet-subpath +title: Deploying ToolJet on a subpath +--- + +ToolJet can now be deployed at a subpath rather than the root (`/`) of a public domain. Example subpath installation URL: **`http://www.yourcompany.com/apps/tooljet`** + +You'll need to setup the following environment variables if ToolJet installation is on a domain subpath: + +| variable | value | +| -------- | ---------------------- | +| TOOLJET_HOST | the public URL ( eg: https://www.yourcompany.com ) | +| SERVE_CLIENT | By default, this variable will be unset and the server will serve the client at its `/` end-point. You can set `SERVE_CLIENT` to `false` to disable this behaviour. | +| SUB_PATH | Set a subpath to this variable. The subpath is to be set with trailing `/` and is applicable only when the server is serving the frontend client. ( eg: `/apps/tooljet/` ) | + + +:::info +See all **[Environment Variables](/docs/setup/env-vars)** here. +::: + + diff --git a/docs/docs/tutorial/adding-a-datasource.md b/docs/docs/tutorial/adding-a-datasource.md index 75a1d2be88..a8e2d9fb8e 100644 --- a/docs/docs/tutorial/adding-a-datasource.md +++ b/docs/docs/tutorial/adding-a-datasource.md @@ -9,13 +9,11 @@ title: Adding a data source The data sources are created on app level and not on workspace level. ::: -**Datasource manager** is on the left-sidebar of the app builder. To add a new data source, click on the `Add datasource` button. +**Datasource manager** is on the left-sidebar of the app builder. To add a new data source, click on the
`Add datasource` button. -
-![ToolJet - Tutorial - Adding a data source](/img/tutorial/adding-datasource/add-datasource.png) +adding datasource -
You will be prompted to select the data source that you wish to add. Let's select PostgreSQL for this tutorial. You will then need to provide the credentials of your PostgreSQL database. The fields that are marked as `encrypted` will be encrypted before saving to ToolJet's database. @@ -33,6 +31,6 @@ If you are using ToolJet cloud and if your data source is not publicly accessibl
-![ToolJet - Tutorial - Adding a data source](/img/tutorial/adding-datasource/postgres.png) +postgre add datasource
\ No newline at end of file diff --git a/docs/docs/tutorial/adding-widget.md b/docs/docs/tutorial/adding-widget.md index 78ecedfb1d..b570f8f00b 100644 --- a/docs/docs/tutorial/adding-widget.md +++ b/docs/docs/tutorial/adding-widget.md @@ -7,11 +7,10 @@ title: Adding a widget To add a widget, navigate to the `Widget manager` on the right sidebar. It will display the list of built-in widgets that can be added to the app. Use the search functionality to quickly find the widget that you want. -
-![ToolJet - Tutorial - Adding a widget](/img/tutorial/adding-widget/widget.png) +widget + -
## Drag and drop a widget Let's add a `table` widget to the app to show the customer data from the query that we created in the previous steps. @@ -20,11 +19,10 @@ To add a widget, drag and drop the widget to the canvas. ## Resize a widget The widgets can be resized and repositioned within the canvas. -
-![ToolJet - Tutorial - Adding a widget](/img/tutorial/adding-widget/resize.gif) +resize + -
## Adding widgets to Modal To add a widget to Modal, we need to trigger [Show modal action](/docs/tutorial/actions#available-actions) @@ -38,29 +36,22 @@ Before triggering `Show modal action` we need to add a modal widget to the canva - Click on the canvas area for the `Widget manager` sidebar - Navigate to the Widget manager on the right sidebar and Drag and drop a widget into the Modal -
-![ToolJet - Tutorial - Adding a widget](/img/tutorial/adding-widget/modal.gif) +adding-widget -
## Resize table columns We can resize the column width using the resize handle of the column. -
-![ToolJet - Tutorial - Adding a widget](/img/tutorial/adding-widget/resize-table-column.gif) +resize-table-column -
## Change widget properties Click on the widget to open the inspect panel on right sidebar. Here you can change the properties of the widgets. Let's configure the table columns to display the customer data. The display order of columns can be changed by dragging icon near the column name. -
- -![ToolJet - Tutorial - Adding a widget](/img/tutorial/adding-widget/inspect-panel.gif) -
+inspect panel ## Connecting data with widget Now we will connect the `data` object of the `fetch customers` query with the table. Click on the table widget to open the inspector on right sidebar. We can see that the data property of the table have an empty array as the value. The data field, like almost every other field on the editor supports single-line javascript code within double brackets. Variable suggestions will be shows as a dropdown while you type the code in the field. @@ -71,11 +62,9 @@ Let's select `data` object of the 'postgresql' query. Since we have already run the query in previous step, the data will be immediately displayed in the table. -
-![ToolJet - Tutorial - Adding a widget](/img/tutorial/adding-widget/table-data.png) +table data -
So far in this tutorial, we have connected to a PostgreSQL database and displayed the data on a table. diff --git a/docs/docs/tutorial/building-queries.md b/docs/docs/tutorial/building-queries.md index dd845d2ccb..9598c2f9da 100644 --- a/docs/docs/tutorial/building-queries.md +++ b/docs/docs/tutorial/building-queries.md @@ -20,28 +20,22 @@ You can click on the 'enlarge' icon to enlarge query editor pane. SELECT * FROM customers; ``` -
-![ToolJet - Tutorial - Building a query](/img/tutorial/building-queries/query.png) +query -
Query results can be previewed by clicking the `preview` button. Previewing queries will not alter the state of the app. -
-![ToolJet - Tutorial - Building a query](/img/tutorial/building-queries/preview.png) +preview -
## Advanced options -
-![ToolJet - Tutorial - Building a query](/img/tutorial/building-queries/advanced-options.gif) +advanced options -
#### Run query on page load If this option is enabled, the query will be run when the app is loaded for the first time. The queries can have more than one trigger, ie the same query can later be triggered again using a button's click event or table's row selected event or any other events. @@ -51,7 +45,7 @@ Enable this option to show a prompt to confirm the action before a query is run.
-![ToolJet - Tutorial - Building a query](/img/tutorial/building-queries/confirm.png) +confirm
diff --git a/docs/docs/tutorial/creating-app.md b/docs/docs/tutorial/creating-app.md index 4196e0abde..08d97e2496 100644 --- a/docs/docs/tutorial/creating-app.md +++ b/docs/docs/tutorial/creating-app.md @@ -12,11 +12,9 @@ Apps in ToolJet binds the widgets, data sources and queries together. This tutorial will walk you through building a simple app to fetch customer information from a PostgreSQL database and display the data using the table widget. To create a new ToolJet app, click on the **'Create new application'** button on the ToolJet dashboard. -
-![ToolJet - Creating an app](/img/tutorial/creating-new-app/dashboard.png) +dashboard create new app -
You will be redirected to the visual app editor once the app has been created. Create the first version of your app to start building. The name of the app can be changed by clicking on the app name at top-left of the app builder. diff --git a/docs/docs/tutorial/debugger.md b/docs/docs/tutorial/debugger.md index c2b43eb394..bc61761ba4 100644 --- a/docs/docs/tutorial/debugger.md +++ b/docs/docs/tutorial/debugger.md @@ -7,18 +7,13 @@ title: Debugger The debugger captures errors that happens while running the queries. For example, when a database query fails due to the unavailability of a database or when a REST API query fails due to an incorrect URL, the errors will be displayed on the debugger. The debugger also displays relevant data related to the error along with the error message. Debugger is located on the left-sidebar. -
-![ToolJet - Debugger](/img/tutorial/debugger/debugger.gif) +debugger -
## Pin Debugger You can click on the `pin` icon at the top-right corner of the debugger if you do not want the debugger to close. The debugger will remain open until it is unpinned. -
-![ToolJet - Debugger](/img/tutorial/debugger/pinned-debugger.gif) - -
+pinned debugger diff --git a/docs/docs/tutorial/manage-users-groups.md b/docs/docs/tutorial/manage-users-groups.md index f1d62f21e1..490db9509d 100644 --- a/docs/docs/tutorial/manage-users-groups.md +++ b/docs/docs/tutorial/manage-users-groups.md @@ -9,11 +9,11 @@ title: Managing Users and Groups Admin of a workspace can add users to the workspace. To manage the users in your workspace, just go to the **Workspace menu** on top right corner and click on the **Manage Users**. -
-![ToolJet - Managing Users and Groups](/img/tutorial/manage-users-groups/menu1.png) -
+menu1 + + ### Inviting users @@ -21,19 +21,19 @@ Admins can invite anyone to a workspace using the email address. To invite a use - On the **Manage Users** page click on the `Invite new user` button. -
-![ToolJet - Managing Users and Groups](/img/tutorial/manage-users-groups/userspage.png) -
+userspage + + - Now enter the details of new user such as first name, last name, email, and then click on the **Create User**. -
-![ToolJet - Managing Users and Groups](/img/tutorial/manage-users-groups/addnewuser.png) -
+add new user + + - An email including the **Invite Link** to join your workspace will be send to the created user. The status will turn from **invited** to **active** after the user successfully joins your workspace using the invite link. @@ -43,41 +43,41 @@ You can also copy the invitation url by clicking on the copy icon next to `invit ::: -
-![ToolJet - Managing Users and Groups](/img/tutorial/manage-users-groups/status.png) -
+status + + ### Disabling a user's access You can disable any active user's access to your workspace by clicking on the **Archive** and then the status of the user will change from **active** to **archived**. -
-![ToolJet - Managing Users and Groups](/img/tutorial/manage-users-groups/archived.png) -
+archived + + ### Enabling a user's access Similar to archiving a user's access, you can enable it again by clicking on **Unarchive**. The status of user will change from **archived** to **invited** and the user will have to join again using the invite link recieved via the e-mail. -
-![ToolJet - Managing Users and Groups](/img/tutorial/manage-users-groups/status.png) -
+status + + ## Managing Groups On ToolJet, Admins can create groups for users added in a workspace and grant them access to particular app(s) with specific permissions. To manage groups, just go to the **Account menu** on top right corner and click on the **Manage Groups**. -
-![ToolJet - Managing Users and Groups](/img/tutorial/manage-users-groups/menu2.png) -
+menu2 + + ### Group properties @@ -87,31 +87,28 @@ Every group on ToolJet has three components: Admins can add or remove any number of apps for a group of users. To add an app to a group, select an app from the dropdown and click on `Add` button next to it. You can also set app permissions such as `View` or `Edit` for the group. You can set different permissions for different apps in a group. -
-![ToolJet - Managing Users and Groups](/img/tutorial/manage-users-groups/apps.png) -
+apps + + #### Users: Admins can add or remove any numbers of users in a group. Just select a user from the dropdown and click on `Add` button to add it to a group. To delete a user from a group, click on `Delete` button next to it. -
-![ToolJet - Managing Users and Groups](/img/tutorial/manage-users-groups/users.png) +users + -
#### Permissions: Admins can set granular permission like creating/deleting apps or creating folder for a group of users. -
-![ToolJet - Managing Users and Groups](/img/tutorial/manage-users-groups/permissions.png) +permissions -
:::tip @@ -131,11 +128,9 @@ This group contains all the users and admins. | ----------- | ----------- | ----------- | | You can add or remove apps. | Modification is disabled. This group will have all the users and admins added in a workspace. | You can edit permissions for all the users globally. | -
-![ToolJet - Managing Users and Groups](/img/tutorial/manage-users-groups/allusers.png) +all users -
**2. Admin** @@ -145,29 +140,21 @@ This group contains admins by default. Admins can add more admins or remove the | ----------- | ----------- | ----------- | | Modification is disabled. By default, this group has `Edit` permission for all the apps in a workspace | Admins can add or remove users in this group. | Modification is disabled. By default, all the admins can create and delete apps or create folders. | -
- -![ToolJet - Managing Users and Groups](/img/tutorial/manage-users-groups/admin.png) -
+admin ### Creating new group - Click on `Create new group` button in the **User Groups** page. -
-![ToolJet - Managing Users and Groups](/img/tutorial/manage-users-groups/newgroup1.png) +new group -
- Enter a name for the group and click `Create Group` button. -
- -![ToolJet - Managing Users and Groups](/img/tutorial/manage-users-groups/newgroup2.png) -
+new group 2 - Once the group is created, you can add **Apps**, **Users** and set their **Properties** for that group. @@ -175,8 +162,4 @@ This group contains admins by default. Admins can add more admins or remove the To delete a group, click on `Delete` next to it. It will confirm whether you want to delete it or not, Click on `Yes` to delete the group. -
- -![ToolJet - Managing Users and Groups](/img/tutorial/manage-users-groups/deletegroup.png) - -
+delete group diff --git a/docs/docs/tutorial/mobile-layout.md b/docs/docs/tutorial/mobile-layout.md index e7c2bddc49..6d53baf5fe 100644 --- a/docs/docs/tutorial/mobile-layout.md +++ b/docs/docs/tutorial/mobile-layout.md @@ -12,11 +12,8 @@ Widgets can be shown on desktop, mobile, or both. ::: -
+mobile layout -![ToolJet - widgets list](/img/tutorial/mobile-layout/mobile-layout.gif) - -
## Adding existing widget to mobile layout Click on the widget to open inspector. Scroll down to the `layout` section and enable mobile layout. The width of the widget will be adjusted to fit the mobile layout. diff --git a/docs/docs/tutorial/multiworkspace.md b/docs/docs/tutorial/multiworkspace.md index 48099d0573..3f1b8c2b48 100644 --- a/docs/docs/tutorial/multiworkspace.md +++ b/docs/docs/tutorial/multiworkspace.md @@ -8,13 +8,17 @@ title: Multi-Workspace User can create their own workspaces, user who created workspace will be having admin privileges for the workspace. -![ToolJet - Google create project](/img/multiworkspace/multi-workspace.gif) + +multi workspace + ## Hierarchy
-![ToolJet - Google create project](/img/multiworkspace/Tooljet-workspace.png) + +tooljet workspace +
diff --git a/docs/docs/tutorial/sharing-and-deploying.md b/docs/docs/tutorial/sharing-and-deploying.md index 0b871b2103..2c1f0bbf2d 100644 --- a/docs/docs/tutorial/sharing-and-deploying.md +++ b/docs/docs/tutorial/sharing-and-deploying.md @@ -9,11 +9,8 @@ title: Preview and Sharing Apps Clicking on `Preview` will open up the currently opened version of the app in the new tab. This is useful if you want to immediately check the app in production. -
- -![ToolJet - Managing Users and Groups](/img/tutorial/sharing/preview.gif) -
+preview ## Sharing an app @@ -23,7 +20,9 @@ Once you have released a version of your app, you can share the app with others
-![ToolJet - Managing Users and Groups](/img/tutorial/sharing/share.png) + +share +
@@ -31,7 +30,9 @@ Once you have released a version of your app, you can share the app with others
-![ToolJet - Managing Users and Groups](/img/tutorial/sharing/toggle.png) + +toggle +
@@ -39,7 +40,8 @@ Once you have released a version of your app, you can share the app with others
-![ToolJet - Managing Users and Groups](/img/tutorial/sharing/url.png) +url +
@@ -47,6 +49,7 @@ Once you have released a version of your app, you can share the app with others
-![ToolJet - Managing Users and Groups](/img/tutorial/sharing/embedd.png) +embedd +
diff --git a/docs/docs/tutorial/transformations.md b/docs/docs/tutorial/transformations.md index f292f1fa7d..0304dd2372 100644 --- a/docs/docs/tutorial/transformations.md +++ b/docs/docs/tutorial/transformations.md @@ -21,25 +21,21 @@ return data.map((row) => { The query will now look like this: -
-![ToolJet - Tutorial - Query result transformations](/img/tutorial/transformations/transform.png) +transform -
Click the `create` button to create the query. Saved queries can be run using the `run` icon near the query name. Queries run using the run button will behave just as if it was triggered by an app event like button click and thus will alter the state of the app. You can view the query results using the state inspector on the left side-bar of the app builder. -
-![ToolJet - Tutorial - Query result transformations](/img/tutorial/transformations/result.png) +result -
We can see that `first_name` and `last_name` are added to all the rows in the `data` object of the query. If you need the original data of the query, it will be available in the `rawData` object of the query.
-![ToolJet - Tutorial - Query result transformations](/img/tutorial/transformations/rawdata.png) +raw data
diff --git a/docs/docs/tutorial/versioning-and-release.md b/docs/docs/tutorial/versioning-and-release.md index f0e0742bfa..81a51cb8bd 100644 --- a/docs/docs/tutorial/versioning-and-release.md +++ b/docs/docs/tutorial/versioning-and-release.md @@ -19,7 +19,9 @@ You can create new versions from **App Version Manager** on the top-right corner
-![ToolJet - Managing Users and Groups](/img/tutorial/versioning-and-release/appversion.png) + +app version +
@@ -27,7 +29,9 @@ You can create new versions from **App Version Manager** on the top-right corner
-![ToolJet - Managing Users and Groups](/img/tutorial/versioning-and-release/modal.png) + +modal +
@@ -43,7 +47,8 @@ To release a version:
-![ToolJet - Managing Users and Groups](/img/tutorial/versioning-and-release/versiondropdown.png) +version dropdown +
@@ -51,7 +56,8 @@ To release a version:
-![ToolJet - Managing Users and Groups](/img/tutorial/versioning-and-release/release.png) +release +
diff --git a/docs/docs/tutorial/workspace-environment-variables.md b/docs/docs/tutorial/workspace-environment-variables.md index a6d2594dbd..e4a579d33f 100644 --- a/docs/docs/tutorial/workspace-environment-variables.md +++ b/docs/docs/tutorial/workspace-environment-variables.md @@ -16,11 +16,9 @@ Suppose there is an `API key` or a value that you want to use in the queries or - Give a `Name` to the variable, set the value, choose `Type`, toggle `Encryption`, and click **Add Variable** button - Now this variable can be used inside any application of this Workspace -
-![ToolJet - Workspace environment variables](/img/tutorial/use-env-org-vars/add-variable.gif) +add variable -
### Types of variables @@ -32,11 +30,8 @@ Suppose there is an `API key` or a value that you want to use in the queries or Variable Type cannot be changed once it has beed created. ::: -
-![ToolJet - Workspace environment variables](/img/tutorial/use-env-org-vars/variable-type.png) - -
+variable-type ### Encryption @@ -50,16 +45,10 @@ So, the syntax for using the variable that we created before will be `%%client.p **Example for client variable usage:** -
-![ToolJet - Workspace environment variables](/img/tutorial/use-env-org-vars/variable-usage.png) +variable-usage -
**Example for server variable usage:** -
- -![ToolJet - Workspace environment variables](/img/tutorial/use-env-org-vars/server-variable-usage.png) - -
\ No newline at end of file +server-variable-usage diff --git a/docs/docs/widgets/circular-progress-bar.md b/docs/docs/widgets/circular-progressbar.md similarity index 100% rename from docs/docs/widgets/circular-progress-bar.md rename to docs/docs/widgets/circular-progressbar.md diff --git a/docs/docs/widgets/kanban.md b/docs/docs/widgets/kanban-board.md similarity index 100% rename from docs/docs/widgets/kanban.md rename to docs/docs/widgets/kanban-board.md diff --git a/docs/docs/widgets/star.md b/docs/docs/widgets/star-rating.md similarity index 100% rename from docs/docs/widgets/star.md rename to docs/docs/widgets/star-rating.md diff --git a/docs/docs/widgets/svg-image.md b/docs/docs/widgets/svg-image.md new file mode 100644 index 0000000000..63acfbd49d --- /dev/null +++ b/docs/docs/widgets/svg-image.md @@ -0,0 +1,57 @@ +--- +id: svg-image +title: Svg Image +--- +# SVG Image + +It is used to render vector images. We can display images, icons, texts using this widget. SVGs are vector images and therefore are usually much smaller in file-size than bitmap-based images. + +Developers prefer having SVG **(Scalable Vector Graphics)** files as they are scalable and will render pixel-perfect at any resolution whereas JPEGs, PNGs and GIFs will not. + +ToolJet - SVG Image + +## Properties + +### Svg Data + +Enter the SVG data of the image to display it on the widget. + +:::tip +Refer to the resources where SVG files are downloaded for free. You copy-paste the below data in this field to see a new icon being rendered. +::: + +``` + +``` + + +### General + +#### Tooltip + +A Tooltip is often used to specify extra information about something when the user hovers the +mouse pointer over the widget. + +Under the General accordion, you can set the value in the string format. +Now hovering over the widget will display the string as the tooltip. + +
+ +![ToolJet - widget- button](/img/tooltip.png) + +
+ +## Layout + +### Show on desktop + +Toggle on or off to display the widget in desktop view. You can programmatically determine the value by clicking on `Fx` to set the value `{{true}}` or `{{false}}`. +### Show on mobile + +Toggle on or off to display the widget in mobile view. You can programmatically determine the value by clicking on `Fx` to set the value `{{true}}` or `{{false}}`. + +## Styles + +### Visibility + +Toggle on or off to control the visibility of the widget. You can programmatically change its value by clicking on the `Fx` button next to it. If `{{false}}` the widget will not be visible after the app is deployed. By default, it's set to `{{true}}`. \ No newline at end of file diff --git a/docs/docs/widgets/text-input.md b/docs/docs/widgets/text-input.md index 1c41283ea9..8c28b6c3f5 100644 --- a/docs/docs/widgets/text-input.md +++ b/docs/docs/widgets/text-input.md @@ -12,7 +12,7 @@ The Text Input should be preferred when user input is a single line of text. ## How To Use Text Input Widget - + ## Properties diff --git a/docs/docs/widgets/treeselect.md b/docs/docs/widgets/tree-select.md similarity index 100% rename from docs/docs/widgets/treeselect.md rename to docs/docs/widgets/tree-select.md diff --git a/docs/sidebars.js b/docs/sidebars.js index 184039f5b4..cb759ffc6c 100644 --- a/docs/sidebars.js +++ b/docs/sidebars.js @@ -14,7 +14,7 @@ const sidebars = { { type: 'category', label: 'Setup', - link: {type: 'doc', id: 'setup/index'}, + link: { type: 'doc', id: 'setup/index' }, items: [ 'setup/try-tooljet', 'setup/digitalocean', @@ -28,6 +28,7 @@ const sidebars = { 'setup/client', 'setup/env-vars', 'setup/http-proxy', + 'setup/tooljet-subpath', ], }, 'security', @@ -141,6 +142,7 @@ const sidebars = { 'widgets/star', 'widgets/statistics', 'widgets/steps', + 'widgets/svg-image', 'widgets/table', 'widgets/tabs', 'widgets/tags', @@ -162,7 +164,7 @@ const sidebars = { title: 'Actions Reference', description: "All the actions that can be performed through event handlers", - keywords: ['actions','events'], + keywords: ['actions', 'events'], }, items: [ 'actions/show-alert', @@ -195,6 +197,7 @@ const sidebars = { 'how-to/run-actions-from-runjs', 'how-to/bulk-update-multiple-rows', 'how-to/access-cellvalue-rowdata', + 'how-to/access-currentuser', 'how-to/oauth2-authorization', 'how-to/upload-files-aws', 'how-to/upload-files-gcs', @@ -216,7 +219,7 @@ const sidebars = { title: 'User Authentication', description: "Guides for setting up User Authentication and managing Single Sign-On", - keywords: ['SSO','authentication'], + keywords: ['SSO', 'authentication'], }, collapsed: true, items: [ @@ -229,23 +232,23 @@ const sidebars = { items: [ 'user-authentication/sso/github', 'user-authentication/sso/google', - { - type: 'category', - label: 'OpenId Connect', - link: { - type: 'generated-index', - title: 'OpenId Connect', - description:" ", - keywords: ['okta','openid','azureAD'], - }, - collapsed: false, - items: [ - 'user-authentication/sso/openid/setup', - 'user-authentication/sso/openid/azuread', - 'user-authentication/sso/openid/okta', - 'user-authentication/sso/openid/google-openid', - ], - } + { + type: 'category', + label: 'OpenId Connect', + link: { + type: 'generated-index', + title: 'OpenId Connect', + description: " ", + keywords: ['okta', 'openid', 'azureAD'], + }, + collapsed: false, + items: [ + 'user-authentication/sso/openid/setup', + 'user-authentication/sso/openid/azuread', + 'user-authentication/sso/openid/okta', + 'user-authentication/sso/openid/google-openid', + ], + } ], }, ], @@ -258,7 +261,7 @@ const sidebars = { title: 'Contributing Guide', description: "Guides for contributing to ToolJet", - keywords: ['contribute','contributing'], + keywords: ['contribute', 'contributing'], }, collapsed: false, items: [ diff --git a/docs/static/img/datasource-reference/baserow/baserow-intro.gif b/docs/static/img/datasource-reference/baserow/baserow-intro.gif deleted file mode 100644 index 32899c4d7a..0000000000 Binary files a/docs/static/img/datasource-reference/baserow/baserow-intro.gif and /dev/null differ diff --git a/docs/static/img/datasource-reference/baserow/baserow-intro.png b/docs/static/img/datasource-reference/baserow/baserow-intro.png new file mode 100644 index 0000000000..7ed43a1be5 Binary files /dev/null and b/docs/static/img/datasource-reference/baserow/baserow-intro.png differ diff --git a/docs/static/img/datasource-reference/mailgun/mailgun_query_body.png b/docs/static/img/datasource-reference/mailgun/mailgun_query_body.png new file mode 100644 index 0000000000..771c1950b1 Binary files /dev/null and b/docs/static/img/datasource-reference/mailgun/mailgun_query_body.png differ diff --git a/docs/static/img/how-to/access-currentuser/button.png b/docs/static/img/how-to/access-currentuser/button.png new file mode 100644 index 0000000000..fd7fb21053 Binary files /dev/null and b/docs/static/img/how-to/access-currentuser/button.png differ diff --git a/docs/static/img/how-to/access-currentuser/disable.png b/docs/static/img/how-to/access-currentuser/disable.png new file mode 100644 index 0000000000..76bd09f437 Binary files /dev/null and b/docs/static/img/how-to/access-currentuser/disable.png differ diff --git a/docs/static/img/how-to/access-currentuser/props.png b/docs/static/img/how-to/access-currentuser/props.png new file mode 100644 index 0000000000..1ea56ea34d Binary files /dev/null and b/docs/static/img/how-to/access-currentuser/props.png differ diff --git a/docs/static/img/how-to/access-currentuser/released.png b/docs/static/img/how-to/access-currentuser/released.png new file mode 100644 index 0000000000..09fe3cd7b0 Binary files /dev/null and b/docs/static/img/how-to/access-currentuser/released.png differ diff --git a/docs/static/img/how-to/bulk-update-multiple/runjs1.png b/docs/static/img/how-to/bulk-update-multiple/runjs1.png index ca7643facd..7138b70a69 100644 Binary files a/docs/static/img/how-to/bulk-update-multiple/runjs1.png and b/docs/static/img/how-to/bulk-update-multiple/runjs1.png differ diff --git a/docs/static/img/widgets/svg-image/svg-image.png b/docs/static/img/widgets/svg-image/svg-image.png new file mode 100644 index 0000000000..0fc8047648 Binary files /dev/null and b/docs/static/img/widgets/svg-image/svg-image.png differ diff --git a/frontend/assets/translations/en.json b/frontend/assets/translations/en.json new file mode 100644 index 0000000000..0d4f9a5dfa --- /dev/null +++ b/frontend/assets/translations/en.json @@ -0,0 +1,921 @@ +{ + "globals":{ + "readDocumentation":"Read documentation", + "cancel":"Cancel", + "save":"Save", + "back":"Back", + "edit":"Edit", + "search":"Search", + "update":"Update", + "delete":"Delete", + "add":"Add", + "view":"View", + "create":"Create", + "enabled":"Enabled", + "disabled":"Disabled", + "yes":"Yes", + "submit":"Submit", + "select":"Select", + "environmentVar":"Environment Variables", + "saving":"Saving...", + "saveDatasource":"Save data source", + "authorize":"Authorize", + "connect":"Connect", + "reconnect":"Reconnect", + "components":"components", + "send":"Send", + "noConnection":"could not connect", + "connectionVerifeid":"connection verified", + "left":"Left", + "center":"Center", + "right":"Right", + "justified":"Justified", + "host":"Host", + "operation":"Operation", + "header":"HEADER", + "path":"PATH", + "query":"QUERY", + "requestBody":"REQUEST BODY" + }, + "errorBoundary":"Something went wrong.", + "viewer":"Sorry!. This app is under maintenance", + "app":{ + "updateAvailable":"Update available", + "newVersionReleased":"A new version of ToolJet has been released.", + "readReleaseNotes":"Read release notes & update", + "skipVersion":"Skip this version" + }, + "stripe":"Please wait whle we load the OpenAPI specification for Stripe.", + "openApi":{ + "noValidOpenApi":"Valid OpenAPI Spec is not available!.", + "selectHost":"Select a host", + "selectOperation":"Select an operation" + }, + "slack":{ + "authorize":"Authorize", + "connectToolJetToSlack":"ToolJet can connect to Slack and list users, send messages, etc. Please select appropriate permission scopes.", + "chatWrite":"chat:write", + "listUsersAndSendMessage":"Your ToolJet app will be able to list users and send messages to users & channels.", + "connectSlack":"Connect to Slack" + }, + "googleSheets":{ + "readOnly":"Read only", + "enableReadAndWrite":"If you want your ToolJet apps to modify your Google sheets, make sure to select read and write access", + "readDataFromSheets":"Your ToolJet apps can only read data from Google sheets", + "readWrite":"Read and write", + "readModifySheets":"Your ToolJet apps can read data from sheets, modify sheets, and more.", + "toGoogleSheets":"to Google Sheets" + + }, + "profile": { + "profileSettings": "Profile Settings" + }, + "loginSignupPage":{ + "forgotPassword":"Forgot Password", + "emailAddress":"Email address", + "enterEmail":"Enter email", + "resetPassword":"Reset Password", + "dontHaveAccount":"Don't have account yet?", + "signIn":"Sign in", + "signUp":"Sign up", + "createToolJetAccount":"Create a ToolJet account", + "enterBusinessEmail":"Enter your business email", + "alreadyHaveAnAccount":"Already have an account?", + "password":"Password", + "showPassword":"show password", + "loginTo":"Login to", + "yourAccount":"your account", + "noLoginMethodsEnabled":"No login methods enabled for this workspace", + "emailConfirmLink":"Please check your email for confirmation link", + "newPassword":"New Password", + "passwordConfirmation":"Password Confirmation" + }, + "editor": { + "preview": "Preview", + "share":"Share", + "shareModal": { + "makeApplicationPublic":"Make application public ?", + "shareableLink":"Get shareable link for this application", + "copy":"copy", + "embeddableLink":"Get embeddable link for this application", + "manageUsers":"Manage Users" + }, + "appVersionManager":{ + "version":"Version", + "currentlyReleased":"Currently Released", + "createVersion":"Create Version", + "versionName":"Version Name", + "createVersionFrom":"Create version from", + "save":"Save", + "create":"Create Version", + "editVersion": "Edit Version", + "deleteVersion":"Do you really want to delete this version?", + "enterVersionName":"Enter version name", + "versionAlreadyReleased":"Version already released. Kindly create a new version or switch to a different version to continue making changes." + }, + "queries":"Queries", + "inspectComponent":"Please select a component to inspect", + "release":"Release", + "searchQueries":"Search queries", + "createQuery":"Create query", + "queryManager":{ + "general":"General", + "advanced":"Advanced", + "preview":"Preview", + "Save":"Save", + "selectDatasource":"Select Datasource", + "addDatasource":"Add datasource", + "dataSourceManager":{ + "toast":{ + "success": { + "dataSourceAdded": "Datasource Added", + "dataSourceSaved": "Datasource Saved" + }, + "error" :{ + "noEmptyDsName" :"The name of datasource should not be empty" + } + }, + "suggestDataSource":"Suggest Datasource", + "suggestAnIntegration":"Suggest an integration", + "whatLookingFor":"Tell us what you were looking for?", + "noResultFound":"Don't see what you were looking for?", + "suggest":"Suggest", + "addNewDataSource":"Add new datasource", + "whiteListIP":"Please white-list our IP address if the data source is not publicly accessible", + "copied":"Copied", + "copy":"Copy", + "saving":"Saving", + "noResultsFor":"No results for", + "noteTaken":"Thank you, we've taken a note of that!", + "goToAllDatasources":"Go to all Datasource", + "send":"Send" + }, + "runQueryOnPageLoad":"Run this query on page load?", + "confirmBeforeQueryRun":"Request confirmation before running query?", + "notificationOnSuccess":"Show notification on success?", + "successMessage":"Success Message", + "queryRanSuccessfully":"Query ran successfully", + "notificationDuration":"Notification duration (s)", + "events":"Events", + "transformation":{ + "transformationToolTip":"Transformations can be used to transform the results of queries. All the app variables are accessible from transformers and supports JS libraries such as Lodash & Moment.", + "transformations":"Transformations" + } + }, + "inspector":{ + "eventManager":{ + "event": "Event", + "action": "Action", + "actionOptions": "Action Options", + "message": "Message", + "alertType": "Alert Type", + "url": "URL", + "modal": "Modal", + "text": "Text", + "query": "Query", + "key": "Key", + "value": "Value", + "type": "Type", + "fileName": "File name", + "data": "Data", + "table": "Table", + "pageIndex": "Page index", + "component": "Component", + "addHandler": "+ Add handler", + "addEventHandler": "+ Add event handler", + "emptyMessage": "This {{componentName}} doesn't have any event handlers" + } + } + }, + "header":{ + "darkModeToggle":{ + "activateLightMode" :"Activate light mode", + "activateDarkMode":"Activate dark mode" + }, + "languageSelection":{ + "changeLanguage":"Change language", + "searchLanguage":"Search language" + }, + "notificationCenter":{ + "notifications":"Notifications", + "markAllAs":"Mark all as", + "read":"read", + "un":"un", + "youDontHaveany":"You don't have any", + "youAreCaughtUp":"You're all caught up!", + "view":"View" + }, + "organization":{ + "loadOrganizations":"Load Organizations", + "createWorkspace":"Create workspace", + "workspaceName":"workspace name", + "editWorkspace":"Edit workspace", + "menus": { + "addWorkspace":"Add workspace", + "menusList":{ + "manageUsers":"Manage Users", + "manageGroups":"Manage Groups", + "manageSso":"Manage SSO", + "manageEnv":"Manage Environment Variables" + }, + "manageUsers":{ + "usersAndPermission":"Users & Permissions", + "inviteNewUser":"Invite new user", + "name":"NAME", + "email":"EMAIL", + "status":"STATUS", + "archive":"Archive", + "unarchive":"Unarchive", + "addNewUser":"Add new user", + "emailAddress":"Email address", + "createUser":"Create User", + "enterFirstName":"Enter First Name", + "enterLastName":"Enter Last Name", + "enterEmail":"Enter Email" + }, + "manageGroups":{ + "permissions":{ + "userGroups":"User Groups", + "createNewGroup":"Create new group", + "udpateGroup":"Update group", + "addNewGroup":"Add new group", + "enterName":"Enter Name", + "createGroup":"Create Group", + "name":"Name" + }, + "permissionResources":{ + "userGroup":"User group", + "apps":"Apps", + "users":"User", + "permissions":"Permissions", + "addAppsToGroup":"Select apps to add to the group", + "name":"name", + "addUsersToGroup":"Select users to add to the group", + "email":"email", + "resource":"resource", + "createUpdateDelete":"Create/Update/Delete", + "folder":"Folder" + } + }, + "manageSSO":{ + "manageSso":"Manage SSO", + "generalSettings":{ + "title":"General Settings", + "enableSignup":"Enable Signup", + "newAccountWillBeCreated":"New account will be created for user's first time SSO sign in", + "allowedDomains":"Allowed domains", + "enterDomains":"Enter Domains", + "supportMultiDomains":"Support multiple domains. Enter domain names separated by comma. example: tooljet.com,tooljet.io,yourorganization.com", + "loginUrl":"Login URL", + "workspaceLogin":"Use this URL to login directly to this workspace", + "allowDefaultSso":"Allow default SSO", + "ssoAuth":"Allow users to authenticate via default SSO. Default SSO configurations can be overridden by workspace level SSO." + }, + "google":{ + "title":"Google", + "enabled":"Enabled", + "disabled":"Disabled", + "clientId":"Client Id", + "enterClientId":"Enter Client Id", + "redirectUrl":"Redirect URL" + }, + "github":{ + "title":"Github", + "hostName":"Host Name", + "enterHostName":"Enter Host Name", + "requiredGithub":"Required if GitHub is self hosted", + "clientId":"Client Id", + "enterClientId":"Enter Client Id", + "clientSecret":"Client Secret", + "enterClientSecret":"Enter Client Secret", + "encrypted":"Encrypted", + "redirectUrl":"Redirect URL" + }, + "passwordLogin":"Password Login", + "environmentVar" : { + "noEnvConfig":"You haven't configured any environment variables, press the 'Add new variable' button to create one", + "envWillBeDeleted":"Variable will be deleted, do you want to continue?", + "addNewVariable":"Add new variable", + "variableForm":{ + "addNewVariable":"Add new variable", + "updatevariable":"Update variable", + "name":"Name", + "value":"Value", + "enterVariableName":"Enter Variable Name", + "enterValue":"Enter Value", + "type":"Type", + "enableEncryption":"Enable encryption", + "addVariable":"Add variable" + }, + "variableTable":{ + "name":"name", + "value":"value", + "type":"type", + "secret":"secret" + } + } + } + } + }, + "profileSettingPage":{ + "profileSettings":"Profile Settings", + "firstName":"First name", + "lastName":"Last name", + "enterFirstName":"Enter First Name", + "enterLastName":"Enter Last Name", + "email":"Email", + "avatar":"Avatar", + "update":"Update", + "profile":"Profile", + "changePassword":"Change password", + "currentPassword":"Current password", + "newPassword":"New password", + "confirmNewPassword":"Confirm new password", + "enterCurrentPassword":"Enter current password", + "enterNewPassword":"Enter new password" + }, + "profile":"Profile", + "logout":"Logout" + }, + "homePage":{ + "appCard":{ + "changeIcon":"Change Icon", + "addToFolder":"Add to folder", + "move":"Move", + "to":"to", + "selectFolder":"Select folder", + "deleteApp":"Delete app", + "exportApp":"Export app", + "cloneApp":"Clone app", + "launch":"Launch", + "maintenance":"Maintenance", + "noDeployedVersion":"App does not have a deployed version", + "openInAppViewer":"Open in app viewer", + "removeFromFolder":"Remove from folder" + }, + "blankPage":{ + "welcomeToToolJet":"Welcome to ToolJet!", + "getStartedCreateNewApp":"You can get started by creating a new application or by creating an application using a template in ToolJet Library.", + "importApplication":"Import an application" + }, + "foldersSection":{ + "allApplications":"All applications", + "folders":"Folders", + "createNewFolder":"+ Create new folder", + "noFolders":"You haven't created any folders. Use folders to organize your apps", + "createFolder":"Create folder", + "updateFolder":"Update folder", + "editFolder":"Edit folder", + "deleteFolder":"Delete folder", + "folderName":"Folder name", + "wishToDeleteFolder":"Are you sure you want to delete the folder? Apps within the folder will not be deleted." + + }, + "header":{ + "createNewApplication":"Create new application", + "import":"Import", + "chooseFromTemplate":"Choose from template" + }, + "pagination":{ + "showing":"Showing", + "of":"of", + "to":"to" + }, + "noApplicationFound":"No Applications found", + "thisFolderIsEmpty":"This folder is empty", + "deleteAppAndData":"The app and the associated data will be permanently deleted, do you want to continue?", + "removeAppFromFolder":"The app will be removed from this folder, do you want to continue?", + "change":"Change", + "templateCard":{ + "use":"Use", + "preview":"Preview", + "leadGeneretion":"Lead generetion" + }, + "templateLibraryModal":{ + "select":"Select template", + "createAppfromTemplate":"Create application from template" + } + }, + "confirmationPage":{ + "setupAccount":"Set up your account", + "signupWithGoogle":"Sign up with Google", + "signupWithGitHub":"Sign up with GitHub", + "or":"OR", + "firstName":"First name", + "lastName":"Last name", + "company":"Company", + "role":"Role", + "pleaseSelect":"Please select", + "password":"Password", + "confirmPassword":"Confirm Password", + "clickAndAgree":"By clicking the button below, you agree to our", + "termsAndConditions":"Terms and Conditions", + "finishAccountSetup":"Finish account setup", + "acceptInvite":"accept invite", + "accountExists":"Already have an account?", + "and":"and" + + }, + "onBoarding":{ + "finishToolJetInstallation":"Finish ToolJet installation", + "organization":"Organization", + "name":"Name", + "email":"Email", + "receiveUpdatesFromToolJet":"You will receive updates from the ToolJet team ( 1-2 emails every month, we do not spam )", + "finishSetup":"Finish setup", + "skip":"Skip" + }, + "redirectSso":{ + "upgradingTov1.13.0":"Upgrading to v1.13.0 and above.", + "fromV1.13.0":"From v1.13.0 we have introduced", + "multiWorkspace":"Multi-Workspace", + "singleSignOnConfig":"The Single Sign-On related configurations are moved from environment variables to database. Please refer this", + "link":"Link", + "toConfigureSSO":"to configure SSO.", + "haveGoogleGithubSSo":"If you have Google or GitHub SSO configurations before upgrade and disabled Multi-Workspace, then theSSO configurations will be migrated while upgrade but you have to re-configure the redirect URL in the SSO provider side. Redirect URLs for each SSO are given below.", + "isMultiWorkspaceEnabled":"If you have enabled Multi-Workspace, then the SSO configurations will not be migrated while upgrade so you have to re-configure the SSO under the respective workspace.", + "youHaveEnabled":"You have Enabled", + "setupSsoWorkspace":"Please login with password and you can setup sso using workspace", + "manageSsoMenu":"Manage SSO menu.", + "youHaveDisabled":"You have Disabled", + "configureRedirectUrl":"Please configure redirect url in SSO provider side.", + "google":"Google", + "redirectUrl":"Redirect URL:", + "gitHub":"GitHub" + }, + "oAuth2": { + "pleaseWait":"Please wait...", + "authSuccess":"Auth successful, you can close this tab now.", + "authFailed":"Auth failed" + }, + "widgetManager": { + "commonlyUsed": "commonly used", + "layouts" : "layouts", + "forms" : "forms", + "intregrations" : "integrations", + "others":"others", + "noResults": "No results found", + "tryAdjustingFilterMessage": "Try adjusting your search or filter to find what you're looking for.", + "clearQuery": "clear query" + }, + "widget":{ + "common":{ + "properties": "Properties", + "events": "Events", + "layout": "Layout", + "styles": "Styles", + "general": "General", + "validation": "Validation", + "documentation": "{{componentMeta}} documentation", + "widgetNameEmptyError": "Widget name cannot be empty", + "componentNameExistsError": "Component name already exists", + "invalidWidgetName": "Invalid widget name. Should be unique and only include letters, numbers and underscore." + }, + "commonProperties": { + "visibility": "Visibility", + "disable": "Disable", + "borderRadius": "Border Radius", + "boxShadow": "Box Shadow", + "tooltip": "Tooltip", + "showOnDesktop": "Show on desktop", + "showOnMobile": "Show on mobile", + "showLoadingState": "Show loading state", + "backgroundColor": "Background Color", + "textColor": "Text color", + "loaderColor": "Loader color", + "defaultValue": "Default Value", + "placeholder": "Placeholder", + "label": "Label", + "title": "Title", + "code": "Code", + "data": "Data", + "tableData": "Table data", + "tableColumns": "Table columns", + "searverSideSearch": "Server-side search", + "loadingState": "Loading State", + "serverSidePagination": "Server-side pagination", + "clientSidePagination": "Client-side pagination", + "serverSideSearch": "Server-side search", + "showSearchBox": "Show search box", + "showDownloadButton": "Show download button", + "showFilterButton": "Show filter button", + "showBulkUpdateActions": "Show bulk update actions", + "bulkSelection": "Bulk selection", + "highlightSelectedRow": "Highlight selected row", + "actionButtonRadius": "Action Button Radius", + "tableType": "Table type", + "cellSize": "Cell size", + "setPage": "Set page", + "page": "Page", + "buttonText": "Button Text", + "click": "Click", + "setText": "Set text", + "text": "Text", + "markerColor": "Marker color", + "showAxes": "Show axes", + "showGridLines": "Show grid lines", + "chartType": "Chart type", + "jsonDescription": "Json Description", + "usePlotlyJsonSchema": "Use Plotly JSON schema", + "padding": "Padding", + "hideTitleBar": "Hide title bar", + "hideCloseButton": "Hide close button", + "hideOnEscape": "Hide on escape", + "modalSize": "Modal size", + "open": "Open", + "close": "Close", + "regex": "Regex", + "minLength": "Min length", + "maxLength": "Max length", + "customValidation": "Custom validation", + "clear": "Clear", + "minimumValue": "Minimum value", + "maximumValue": "Maximum value", + "format": "Format", + "enableTimeSelection": "Enable time selection?", + "enableDateSelection": "Enable date selection?", + "disabledDates": "Disabled dates", + "setChecked": "Set checked", + "status": "status", + "defaultStatus": "Default Status", + "checkboxColor": "Checkbox Color", + "optionValues": "Option values", + "optionLabels": "Option labels", + "activeColor": "Active Color", + "selectOption": "Select option", + "option": "Option", + "toggleSwitchColor": "Toggle Switch Color", + "defaultStartDate": "Default start date", + "defaultEndDate": "Default end date", + "textSize": "Text Size", + "alignText": "Align Text", + "url": "URL", + "alternativeText": "Alternative text", + "zoomButton": "Zoom button", + "borderType": "Border type", + "imageFit": "Image fit", + "optionsLoadingState": "Options loading state", + "selectedTextColor": "Selected Text Color", + "select": "Select", + "deselectOption": "Deselect Option", + "clearSelections": "Clear selections", + "enableSelectAllOption": "Enable select All option", + "initialLocation": "Initial location", + "defaultMarkers": "Default markers", + "addNewMarkers": "Add new markers", + "searchForPlaces": "Search for places", + "setLocation": "Set Location", + "latitude": "Latitude", + "longitude": "Longitude", + "numberOfStars": "Number of stars", + "defaultNoOfSelectedStars": "Default no of selected stars", + "enableHalfStar": "Enable half star", + "tooltips": "Tooltips", + "starColor": "Star Color", + "labelColor": "Label Color", + "dividerColor": "Divider Color", + "clearFiles": "Clear Files", + "instructionText": "Instruction Text", + "useDropZone": "Use Drop zone", + "useFilePicker": "Use File Picker", + "pickMultipleFiles": "Pick multiple files", + "maxFileCount": "Max file count", + "acceptFileTypes": "Accept file types", + "maxSizeLimitBytes": "Max size limit (Bytes)", + "minSizeLimitBytes": "Min size limit (Bytes)", + "parseContent": "Parse content", + "fileType": "File type", + "dateFormat": "Date format", + "defaultDate": "Default date", + "events": "Events", + "resources": "Resources", + "defaultView": "Default view", + "startTimeOnWeekAndDayView": "Start time on week and day view", + "endTimeOnWeekAndDayView": "End time on week and day view", + "showToolbar": "Show toolbar", + "showViewSwitcher": "Show view switcher", + "highlightToday": "Highlight today", + "showPopoverWhenEventIsClicked": "Show popover when event is clicked", + "cellSizeInViewsClassifiedByResource": "Cell size in views classified by resource", + "headerDateFormatOnWeekView": "Header date format on week view", + "showLineNumber": "Show Line Number", + "mode": "Mode", + "tabs": "Tabs", + "defaultTab": "Default tab", + "hideTabs": "Hide Tabs", + "highlightColor": "Highlight Color", + "tabWidth": "Tab width", + "setCurrentTab": "Set current tab", + "id": "Id", + "timerType": "Timer type", + "listData": "List data", + "rowHeight": "Row height", + "showBottomBorder": "Show bottom border", + "tags": "Tags", + "numberOfPages": "Number of pages", + "defaultPageIndex": "Default page index", + "progress": "Progress", + "color": "Color", + "strokeWidth": "Stroke Width", + "counterClockwise": "Counter Clockwise", + "circleRatio": "Circle Ratio", + "colour": "Colour", + "size": "Size", + "primaryValueLabel": "Primary value label", + "primaryValue": "Primary value", + "hideSecondaryValue": "Hide secondary value", + "secondaryValueLabel": "Secondary value label", + "secondaryValue": "Secondary value", + "secondarySignDisplay": "Secondary sign display", + "primaryLabelColour": "Primary Label Colour", + "primaryTextColour": "Primary Text Colour", + "secondaryLabelColour": "Secondary Label Colour", + "secondaryTextColour": "Secondary Text Colour", + "min": "Min", + "max": "Max", + "value": "Value", + "twoHandles": "Two handles", + "lineColor": "Line color", + "handleColor": "Handle color", + "trackColor": "Track color", + "timelineData": "Timeline data", + "hideDate": "Hide Date", + "svgData": "Svg data", + "rawHtml": "Raw HTML", + "values": "values", + "labels": "Labels", + "defaultSelected": "Default selected", + "enableMutipleSelection": "Enable mutiple selection", + "selectedTextColour": "Selected text colour", + "selectedBackgroundColor": "Selected background color", + "fileUrl": "File URL", + "scalePageToWidth": "Scale page to width", + "showPageControls": "Show page controls", + "steps": "Steps", + "currentStep": "Current step", + "stepsSelectable": "Steps selectable", + "theme": "Theme", + "columns": "Columns", + "cardData": "Card Data", + "enableAddCard": "Enable Add Card", + "width": "Width", + "minWidth": "Min Width", + "accentColor": "Accent color", + "defaultColor": "Default Color", + "setColor": "Set Color", + "structure": "Structure", + "checkedValues": "Checked Values", + "expandedValues": "Expanded Values" + }, + "Table": { + "displayName": "Table", + "description": "Display paginated tabular data", + "columnType": "Column type", + "columnName": "Column name", + "overflow": "Overflow", + "key": "key", + "textColor": "Text color", + "validation": "Validation", + "regex": "Regex", + "minLength": "Min length", + "maxLength": "Max length", + "customRule": "Custom rule", + "values": "Values", + "labels": "Labels", + "cellBgColor": "Cell Background Color", + "dateDisplayformat": "Date Display Format", + "dateParseformat": "Date Parse Format", + "showTime": "show time", + "makeEditable": "make editable", + "buttonText": "Button Text", + "buttonPosition": "Button Position", + "remove": "Remove", + "addButton": "+ Add button", + "addColumn": "+ Add column", + "noActionMessage": "This table doesn't have any action buttons" + }, + "Button": { + "displayName": "Button", + "description": "Trigger actions: queries, alerts etc" + }, + "Chart": { + "displayName": "Chart", + "description": "Display charts" + }, + "Modal" : { + "displayName": "Modal", + "description": "Modal triggered by events" + }, + "TextInput" : { + "displayName": "Text Input", + "description": "Text field for forms" + }, + "NumberInput" :{ + "displayName": "Number Input", + "description": "Number field for forms" + }, + "PasswordInput":{ + "displayName": "Password Input", + "description": "Password input field for forms" + }, + "Datepicker" :{ + "displayName": "Date Picker", + "description": "Select a date and time" + }, + "Checkbox":{ + "displayName": "Checkbox", + "description": "A single checkbox" + }, + "Radio-button":{ + "displayName": "Radio Button", + "description": "Radio buttons" + }, + "ToggleSwitch":{ + "displayName": "Toggle Switch", + "description": "Toggle Switch" + }, + "Textarea":{ + "displayName": "Textarea", + "description": "Text area form field" + }, + "DateRangePicker":{ + "displayName": "Range Picker", + "description": "Select a date range" + }, + "Text":{ + "displayName": "Text", + "description": "Display markdown or HTML" + }, + "Image":{ + "displayName": "Image", + "description": "Display an Image" + }, + "Container":{ + "displayName": "Container", + "description": "Wrapper for multiple components" + }, + "Dropdown":{ + "displayName": "Dropdown", + "description": "Select one value from options" + }, + "Multiselect":{ + "displayName": "Multiselect", + "description": "Select multiple values from options" + }, + "RichTextEditor":{ + "displayName": "Text Editor", + "description": "Rich text editor" + }, + "Map":{ + "displayName": "Map", + "description": "Display Google Maps" + }, + "QrScanner":{ + "displayName": "QR Scanner", + "description": "Scan QR codes and hold its data" + }, + "StarRating":{ + "displayName": "Rating", + "description": "Star rating" + }, + "Divider":{ + "displayName": "Divider", + "description": "Separator between components" + }, + "FilePicker":{ + "displayName": "File Picker", + "description": "File Picker" + }, + "Calendar":{ + "displayName": "Calendar", + "description": "Calendar" + }, + "Iframe":{ + "displayName": "Iframe", + "description": "Display an Iframe" + }, + "CodeEditor":{ + "displayName": "Code Editor", + "description": "Code Editor" + }, + "Tabs":{ + "displayName": "Tabs", + "description": "Tabs component" + }, + "Timer":{ + "displayName": "Timer", + "description": "timer" + }, + "Listview":{ + "displayName": "List View", + "description": "Wrapper for multiple components" + }, + "Tags":{ + "displayName": "Tags", + "description": "Content can be shown as tags" + }, + "Pagination":{ + "displayName": "Pagination", + "description": "Pagination " + }, + "CircularProgressbar":{ + "displayName": "Circular Progressbar", + "description": "Show the progress using circular progressbar" + }, + "Spinner":{ + "displayName": "Spinner", + "description": "Spinner can be used to display loading status" + }, + "Statistics":{ + "displayName": "Statistics", + "description": "Statistics can be used to display different statistical information" + }, + "RangeSlider":{ + "displayName": "Range Slider", + "description": "Can be used to show slider with a range" + }, + "Timeline":{ + "displayName": "Timeline", + "description": "Visual representation of a sequence of events" + }, + "SvgImage":{ + "displayName": "Svg Image", + "description": "Svg image" + }, + "Html":{ + "displayName": "HTML Viewer", + "description": "HTML Viewer" + }, + "VerticalDivider":{ + "displayName": "Vertical Divider", + "description": "Vertical Separator between components" + }, + "CustomComponent":{ + "displayName": "Custom Component", + "description": "Add your custom react component" + }, + "ButtonGroup":{ + "displayName": "Button Group", + "description": "ButtonGroup" + }, + "PDF":{ + "displayName": "PDF", + "description": "Embed PDF file" + }, + "Steps":{ + "displayName": "Steps", + "description": "Steps" + }, + "KanbanBoard":{ + "displayName": "Kanban Board", + "description": "Kanban Board" + }, + "ColorPicker":{ + "displayName": "Color Picker", + "description": "Color Picker Pallete" + }, + "TreeSelect":{ + "displayName": "Tree Select", + "description": "Select values from a tree view" + } + }, + "leftSidebar":{ + "Inspector":{ + "text":"Inspector", + "tip" : "Inspector" + }, + "Sources" :{ + "text":"Sources", + "tip" : "Add or edit datasources", + "dataSources":"Data sources", + "addDataSource":"+ add data source" + }, + "Debugger":{ + "text":"Debugger", + "tip" : "Debugger", + "errors":"Errors", + "noErrors":"No errors found", + "clear":"clear" + }, + "Comments":{ + "text":"Comments", + "tip" : "toggle comments", + "commentBody":"There are no comments to display", + "typeComment":"Type your comment here" + }, + "Settings":{ + "text":"Settings", + "tip" : "Global Settings", + "hideHeader": "Hide header for launched apps", + "maintenanceMode":"Maintenance mode", + "maxWidthOfCanvas":"Max width of canvas", + "maxHeightOfCanvas" :"Max height of canvas", + "backgroundColorOfCanvas":"Background color of canvas" + + }, + "Back":{ + "text":"Back", + "tip" : "Back to Home" + } + } +} diff --git a/frontend/assets/translations/fr.json b/frontend/assets/translations/fr.json new file mode 100644 index 0000000000..0d4f9a5dfa --- /dev/null +++ b/frontend/assets/translations/fr.json @@ -0,0 +1,921 @@ +{ + "globals":{ + "readDocumentation":"Read documentation", + "cancel":"Cancel", + "save":"Save", + "back":"Back", + "edit":"Edit", + "search":"Search", + "update":"Update", + "delete":"Delete", + "add":"Add", + "view":"View", + "create":"Create", + "enabled":"Enabled", + "disabled":"Disabled", + "yes":"Yes", + "submit":"Submit", + "select":"Select", + "environmentVar":"Environment Variables", + "saving":"Saving...", + "saveDatasource":"Save data source", + "authorize":"Authorize", + "connect":"Connect", + "reconnect":"Reconnect", + "components":"components", + "send":"Send", + "noConnection":"could not connect", + "connectionVerifeid":"connection verified", + "left":"Left", + "center":"Center", + "right":"Right", + "justified":"Justified", + "host":"Host", + "operation":"Operation", + "header":"HEADER", + "path":"PATH", + "query":"QUERY", + "requestBody":"REQUEST BODY" + }, + "errorBoundary":"Something went wrong.", + "viewer":"Sorry!. This app is under maintenance", + "app":{ + "updateAvailable":"Update available", + "newVersionReleased":"A new version of ToolJet has been released.", + "readReleaseNotes":"Read release notes & update", + "skipVersion":"Skip this version" + }, + "stripe":"Please wait whle we load the OpenAPI specification for Stripe.", + "openApi":{ + "noValidOpenApi":"Valid OpenAPI Spec is not available!.", + "selectHost":"Select a host", + "selectOperation":"Select an operation" + }, + "slack":{ + "authorize":"Authorize", + "connectToolJetToSlack":"ToolJet can connect to Slack and list users, send messages, etc. Please select appropriate permission scopes.", + "chatWrite":"chat:write", + "listUsersAndSendMessage":"Your ToolJet app will be able to list users and send messages to users & channels.", + "connectSlack":"Connect to Slack" + }, + "googleSheets":{ + "readOnly":"Read only", + "enableReadAndWrite":"If you want your ToolJet apps to modify your Google sheets, make sure to select read and write access", + "readDataFromSheets":"Your ToolJet apps can only read data from Google sheets", + "readWrite":"Read and write", + "readModifySheets":"Your ToolJet apps can read data from sheets, modify sheets, and more.", + "toGoogleSheets":"to Google Sheets" + + }, + "profile": { + "profileSettings": "Profile Settings" + }, + "loginSignupPage":{ + "forgotPassword":"Forgot Password", + "emailAddress":"Email address", + "enterEmail":"Enter email", + "resetPassword":"Reset Password", + "dontHaveAccount":"Don't have account yet?", + "signIn":"Sign in", + "signUp":"Sign up", + "createToolJetAccount":"Create a ToolJet account", + "enterBusinessEmail":"Enter your business email", + "alreadyHaveAnAccount":"Already have an account?", + "password":"Password", + "showPassword":"show password", + "loginTo":"Login to", + "yourAccount":"your account", + "noLoginMethodsEnabled":"No login methods enabled for this workspace", + "emailConfirmLink":"Please check your email for confirmation link", + "newPassword":"New Password", + "passwordConfirmation":"Password Confirmation" + }, + "editor": { + "preview": "Preview", + "share":"Share", + "shareModal": { + "makeApplicationPublic":"Make application public ?", + "shareableLink":"Get shareable link for this application", + "copy":"copy", + "embeddableLink":"Get embeddable link for this application", + "manageUsers":"Manage Users" + }, + "appVersionManager":{ + "version":"Version", + "currentlyReleased":"Currently Released", + "createVersion":"Create Version", + "versionName":"Version Name", + "createVersionFrom":"Create version from", + "save":"Save", + "create":"Create Version", + "editVersion": "Edit Version", + "deleteVersion":"Do you really want to delete this version?", + "enterVersionName":"Enter version name", + "versionAlreadyReleased":"Version already released. Kindly create a new version or switch to a different version to continue making changes." + }, + "queries":"Queries", + "inspectComponent":"Please select a component to inspect", + "release":"Release", + "searchQueries":"Search queries", + "createQuery":"Create query", + "queryManager":{ + "general":"General", + "advanced":"Advanced", + "preview":"Preview", + "Save":"Save", + "selectDatasource":"Select Datasource", + "addDatasource":"Add datasource", + "dataSourceManager":{ + "toast":{ + "success": { + "dataSourceAdded": "Datasource Added", + "dataSourceSaved": "Datasource Saved" + }, + "error" :{ + "noEmptyDsName" :"The name of datasource should not be empty" + } + }, + "suggestDataSource":"Suggest Datasource", + "suggestAnIntegration":"Suggest an integration", + "whatLookingFor":"Tell us what you were looking for?", + "noResultFound":"Don't see what you were looking for?", + "suggest":"Suggest", + "addNewDataSource":"Add new datasource", + "whiteListIP":"Please white-list our IP address if the data source is not publicly accessible", + "copied":"Copied", + "copy":"Copy", + "saving":"Saving", + "noResultsFor":"No results for", + "noteTaken":"Thank you, we've taken a note of that!", + "goToAllDatasources":"Go to all Datasource", + "send":"Send" + }, + "runQueryOnPageLoad":"Run this query on page load?", + "confirmBeforeQueryRun":"Request confirmation before running query?", + "notificationOnSuccess":"Show notification on success?", + "successMessage":"Success Message", + "queryRanSuccessfully":"Query ran successfully", + "notificationDuration":"Notification duration (s)", + "events":"Events", + "transformation":{ + "transformationToolTip":"Transformations can be used to transform the results of queries. All the app variables are accessible from transformers and supports JS libraries such as Lodash & Moment.", + "transformations":"Transformations" + } + }, + "inspector":{ + "eventManager":{ + "event": "Event", + "action": "Action", + "actionOptions": "Action Options", + "message": "Message", + "alertType": "Alert Type", + "url": "URL", + "modal": "Modal", + "text": "Text", + "query": "Query", + "key": "Key", + "value": "Value", + "type": "Type", + "fileName": "File name", + "data": "Data", + "table": "Table", + "pageIndex": "Page index", + "component": "Component", + "addHandler": "+ Add handler", + "addEventHandler": "+ Add event handler", + "emptyMessage": "This {{componentName}} doesn't have any event handlers" + } + } + }, + "header":{ + "darkModeToggle":{ + "activateLightMode" :"Activate light mode", + "activateDarkMode":"Activate dark mode" + }, + "languageSelection":{ + "changeLanguage":"Change language", + "searchLanguage":"Search language" + }, + "notificationCenter":{ + "notifications":"Notifications", + "markAllAs":"Mark all as", + "read":"read", + "un":"un", + "youDontHaveany":"You don't have any", + "youAreCaughtUp":"You're all caught up!", + "view":"View" + }, + "organization":{ + "loadOrganizations":"Load Organizations", + "createWorkspace":"Create workspace", + "workspaceName":"workspace name", + "editWorkspace":"Edit workspace", + "menus": { + "addWorkspace":"Add workspace", + "menusList":{ + "manageUsers":"Manage Users", + "manageGroups":"Manage Groups", + "manageSso":"Manage SSO", + "manageEnv":"Manage Environment Variables" + }, + "manageUsers":{ + "usersAndPermission":"Users & Permissions", + "inviteNewUser":"Invite new user", + "name":"NAME", + "email":"EMAIL", + "status":"STATUS", + "archive":"Archive", + "unarchive":"Unarchive", + "addNewUser":"Add new user", + "emailAddress":"Email address", + "createUser":"Create User", + "enterFirstName":"Enter First Name", + "enterLastName":"Enter Last Name", + "enterEmail":"Enter Email" + }, + "manageGroups":{ + "permissions":{ + "userGroups":"User Groups", + "createNewGroup":"Create new group", + "udpateGroup":"Update group", + "addNewGroup":"Add new group", + "enterName":"Enter Name", + "createGroup":"Create Group", + "name":"Name" + }, + "permissionResources":{ + "userGroup":"User group", + "apps":"Apps", + "users":"User", + "permissions":"Permissions", + "addAppsToGroup":"Select apps to add to the group", + "name":"name", + "addUsersToGroup":"Select users to add to the group", + "email":"email", + "resource":"resource", + "createUpdateDelete":"Create/Update/Delete", + "folder":"Folder" + } + }, + "manageSSO":{ + "manageSso":"Manage SSO", + "generalSettings":{ + "title":"General Settings", + "enableSignup":"Enable Signup", + "newAccountWillBeCreated":"New account will be created for user's first time SSO sign in", + "allowedDomains":"Allowed domains", + "enterDomains":"Enter Domains", + "supportMultiDomains":"Support multiple domains. Enter domain names separated by comma. example: tooljet.com,tooljet.io,yourorganization.com", + "loginUrl":"Login URL", + "workspaceLogin":"Use this URL to login directly to this workspace", + "allowDefaultSso":"Allow default SSO", + "ssoAuth":"Allow users to authenticate via default SSO. Default SSO configurations can be overridden by workspace level SSO." + }, + "google":{ + "title":"Google", + "enabled":"Enabled", + "disabled":"Disabled", + "clientId":"Client Id", + "enterClientId":"Enter Client Id", + "redirectUrl":"Redirect URL" + }, + "github":{ + "title":"Github", + "hostName":"Host Name", + "enterHostName":"Enter Host Name", + "requiredGithub":"Required if GitHub is self hosted", + "clientId":"Client Id", + "enterClientId":"Enter Client Id", + "clientSecret":"Client Secret", + "enterClientSecret":"Enter Client Secret", + "encrypted":"Encrypted", + "redirectUrl":"Redirect URL" + }, + "passwordLogin":"Password Login", + "environmentVar" : { + "noEnvConfig":"You haven't configured any environment variables, press the 'Add new variable' button to create one", + "envWillBeDeleted":"Variable will be deleted, do you want to continue?", + "addNewVariable":"Add new variable", + "variableForm":{ + "addNewVariable":"Add new variable", + "updatevariable":"Update variable", + "name":"Name", + "value":"Value", + "enterVariableName":"Enter Variable Name", + "enterValue":"Enter Value", + "type":"Type", + "enableEncryption":"Enable encryption", + "addVariable":"Add variable" + }, + "variableTable":{ + "name":"name", + "value":"value", + "type":"type", + "secret":"secret" + } + } + } + } + }, + "profileSettingPage":{ + "profileSettings":"Profile Settings", + "firstName":"First name", + "lastName":"Last name", + "enterFirstName":"Enter First Name", + "enterLastName":"Enter Last Name", + "email":"Email", + "avatar":"Avatar", + "update":"Update", + "profile":"Profile", + "changePassword":"Change password", + "currentPassword":"Current password", + "newPassword":"New password", + "confirmNewPassword":"Confirm new password", + "enterCurrentPassword":"Enter current password", + "enterNewPassword":"Enter new password" + }, + "profile":"Profile", + "logout":"Logout" + }, + "homePage":{ + "appCard":{ + "changeIcon":"Change Icon", + "addToFolder":"Add to folder", + "move":"Move", + "to":"to", + "selectFolder":"Select folder", + "deleteApp":"Delete app", + "exportApp":"Export app", + "cloneApp":"Clone app", + "launch":"Launch", + "maintenance":"Maintenance", + "noDeployedVersion":"App does not have a deployed version", + "openInAppViewer":"Open in app viewer", + "removeFromFolder":"Remove from folder" + }, + "blankPage":{ + "welcomeToToolJet":"Welcome to ToolJet!", + "getStartedCreateNewApp":"You can get started by creating a new application or by creating an application using a template in ToolJet Library.", + "importApplication":"Import an application" + }, + "foldersSection":{ + "allApplications":"All applications", + "folders":"Folders", + "createNewFolder":"+ Create new folder", + "noFolders":"You haven't created any folders. Use folders to organize your apps", + "createFolder":"Create folder", + "updateFolder":"Update folder", + "editFolder":"Edit folder", + "deleteFolder":"Delete folder", + "folderName":"Folder name", + "wishToDeleteFolder":"Are you sure you want to delete the folder? Apps within the folder will not be deleted." + + }, + "header":{ + "createNewApplication":"Create new application", + "import":"Import", + "chooseFromTemplate":"Choose from template" + }, + "pagination":{ + "showing":"Showing", + "of":"of", + "to":"to" + }, + "noApplicationFound":"No Applications found", + "thisFolderIsEmpty":"This folder is empty", + "deleteAppAndData":"The app and the associated data will be permanently deleted, do you want to continue?", + "removeAppFromFolder":"The app will be removed from this folder, do you want to continue?", + "change":"Change", + "templateCard":{ + "use":"Use", + "preview":"Preview", + "leadGeneretion":"Lead generetion" + }, + "templateLibraryModal":{ + "select":"Select template", + "createAppfromTemplate":"Create application from template" + } + }, + "confirmationPage":{ + "setupAccount":"Set up your account", + "signupWithGoogle":"Sign up with Google", + "signupWithGitHub":"Sign up with GitHub", + "or":"OR", + "firstName":"First name", + "lastName":"Last name", + "company":"Company", + "role":"Role", + "pleaseSelect":"Please select", + "password":"Password", + "confirmPassword":"Confirm Password", + "clickAndAgree":"By clicking the button below, you agree to our", + "termsAndConditions":"Terms and Conditions", + "finishAccountSetup":"Finish account setup", + "acceptInvite":"accept invite", + "accountExists":"Already have an account?", + "and":"and" + + }, + "onBoarding":{ + "finishToolJetInstallation":"Finish ToolJet installation", + "organization":"Organization", + "name":"Name", + "email":"Email", + "receiveUpdatesFromToolJet":"You will receive updates from the ToolJet team ( 1-2 emails every month, we do not spam )", + "finishSetup":"Finish setup", + "skip":"Skip" + }, + "redirectSso":{ + "upgradingTov1.13.0":"Upgrading to v1.13.0 and above.", + "fromV1.13.0":"From v1.13.0 we have introduced", + "multiWorkspace":"Multi-Workspace", + "singleSignOnConfig":"The Single Sign-On related configurations are moved from environment variables to database. Please refer this", + "link":"Link", + "toConfigureSSO":"to configure SSO.", + "haveGoogleGithubSSo":"If you have Google or GitHub SSO configurations before upgrade and disabled Multi-Workspace, then theSSO configurations will be migrated while upgrade but you have to re-configure the redirect URL in the SSO provider side. Redirect URLs for each SSO are given below.", + "isMultiWorkspaceEnabled":"If you have enabled Multi-Workspace, then the SSO configurations will not be migrated while upgrade so you have to re-configure the SSO under the respective workspace.", + "youHaveEnabled":"You have Enabled", + "setupSsoWorkspace":"Please login with password and you can setup sso using workspace", + "manageSsoMenu":"Manage SSO menu.", + "youHaveDisabled":"You have Disabled", + "configureRedirectUrl":"Please configure redirect url in SSO provider side.", + "google":"Google", + "redirectUrl":"Redirect URL:", + "gitHub":"GitHub" + }, + "oAuth2": { + "pleaseWait":"Please wait...", + "authSuccess":"Auth successful, you can close this tab now.", + "authFailed":"Auth failed" + }, + "widgetManager": { + "commonlyUsed": "commonly used", + "layouts" : "layouts", + "forms" : "forms", + "intregrations" : "integrations", + "others":"others", + "noResults": "No results found", + "tryAdjustingFilterMessage": "Try adjusting your search or filter to find what you're looking for.", + "clearQuery": "clear query" + }, + "widget":{ + "common":{ + "properties": "Properties", + "events": "Events", + "layout": "Layout", + "styles": "Styles", + "general": "General", + "validation": "Validation", + "documentation": "{{componentMeta}} documentation", + "widgetNameEmptyError": "Widget name cannot be empty", + "componentNameExistsError": "Component name already exists", + "invalidWidgetName": "Invalid widget name. Should be unique and only include letters, numbers and underscore." + }, + "commonProperties": { + "visibility": "Visibility", + "disable": "Disable", + "borderRadius": "Border Radius", + "boxShadow": "Box Shadow", + "tooltip": "Tooltip", + "showOnDesktop": "Show on desktop", + "showOnMobile": "Show on mobile", + "showLoadingState": "Show loading state", + "backgroundColor": "Background Color", + "textColor": "Text color", + "loaderColor": "Loader color", + "defaultValue": "Default Value", + "placeholder": "Placeholder", + "label": "Label", + "title": "Title", + "code": "Code", + "data": "Data", + "tableData": "Table data", + "tableColumns": "Table columns", + "searverSideSearch": "Server-side search", + "loadingState": "Loading State", + "serverSidePagination": "Server-side pagination", + "clientSidePagination": "Client-side pagination", + "serverSideSearch": "Server-side search", + "showSearchBox": "Show search box", + "showDownloadButton": "Show download button", + "showFilterButton": "Show filter button", + "showBulkUpdateActions": "Show bulk update actions", + "bulkSelection": "Bulk selection", + "highlightSelectedRow": "Highlight selected row", + "actionButtonRadius": "Action Button Radius", + "tableType": "Table type", + "cellSize": "Cell size", + "setPage": "Set page", + "page": "Page", + "buttonText": "Button Text", + "click": "Click", + "setText": "Set text", + "text": "Text", + "markerColor": "Marker color", + "showAxes": "Show axes", + "showGridLines": "Show grid lines", + "chartType": "Chart type", + "jsonDescription": "Json Description", + "usePlotlyJsonSchema": "Use Plotly JSON schema", + "padding": "Padding", + "hideTitleBar": "Hide title bar", + "hideCloseButton": "Hide close button", + "hideOnEscape": "Hide on escape", + "modalSize": "Modal size", + "open": "Open", + "close": "Close", + "regex": "Regex", + "minLength": "Min length", + "maxLength": "Max length", + "customValidation": "Custom validation", + "clear": "Clear", + "minimumValue": "Minimum value", + "maximumValue": "Maximum value", + "format": "Format", + "enableTimeSelection": "Enable time selection?", + "enableDateSelection": "Enable date selection?", + "disabledDates": "Disabled dates", + "setChecked": "Set checked", + "status": "status", + "defaultStatus": "Default Status", + "checkboxColor": "Checkbox Color", + "optionValues": "Option values", + "optionLabels": "Option labels", + "activeColor": "Active Color", + "selectOption": "Select option", + "option": "Option", + "toggleSwitchColor": "Toggle Switch Color", + "defaultStartDate": "Default start date", + "defaultEndDate": "Default end date", + "textSize": "Text Size", + "alignText": "Align Text", + "url": "URL", + "alternativeText": "Alternative text", + "zoomButton": "Zoom button", + "borderType": "Border type", + "imageFit": "Image fit", + "optionsLoadingState": "Options loading state", + "selectedTextColor": "Selected Text Color", + "select": "Select", + "deselectOption": "Deselect Option", + "clearSelections": "Clear selections", + "enableSelectAllOption": "Enable select All option", + "initialLocation": "Initial location", + "defaultMarkers": "Default markers", + "addNewMarkers": "Add new markers", + "searchForPlaces": "Search for places", + "setLocation": "Set Location", + "latitude": "Latitude", + "longitude": "Longitude", + "numberOfStars": "Number of stars", + "defaultNoOfSelectedStars": "Default no of selected stars", + "enableHalfStar": "Enable half star", + "tooltips": "Tooltips", + "starColor": "Star Color", + "labelColor": "Label Color", + "dividerColor": "Divider Color", + "clearFiles": "Clear Files", + "instructionText": "Instruction Text", + "useDropZone": "Use Drop zone", + "useFilePicker": "Use File Picker", + "pickMultipleFiles": "Pick multiple files", + "maxFileCount": "Max file count", + "acceptFileTypes": "Accept file types", + "maxSizeLimitBytes": "Max size limit (Bytes)", + "minSizeLimitBytes": "Min size limit (Bytes)", + "parseContent": "Parse content", + "fileType": "File type", + "dateFormat": "Date format", + "defaultDate": "Default date", + "events": "Events", + "resources": "Resources", + "defaultView": "Default view", + "startTimeOnWeekAndDayView": "Start time on week and day view", + "endTimeOnWeekAndDayView": "End time on week and day view", + "showToolbar": "Show toolbar", + "showViewSwitcher": "Show view switcher", + "highlightToday": "Highlight today", + "showPopoverWhenEventIsClicked": "Show popover when event is clicked", + "cellSizeInViewsClassifiedByResource": "Cell size in views classified by resource", + "headerDateFormatOnWeekView": "Header date format on week view", + "showLineNumber": "Show Line Number", + "mode": "Mode", + "tabs": "Tabs", + "defaultTab": "Default tab", + "hideTabs": "Hide Tabs", + "highlightColor": "Highlight Color", + "tabWidth": "Tab width", + "setCurrentTab": "Set current tab", + "id": "Id", + "timerType": "Timer type", + "listData": "List data", + "rowHeight": "Row height", + "showBottomBorder": "Show bottom border", + "tags": "Tags", + "numberOfPages": "Number of pages", + "defaultPageIndex": "Default page index", + "progress": "Progress", + "color": "Color", + "strokeWidth": "Stroke Width", + "counterClockwise": "Counter Clockwise", + "circleRatio": "Circle Ratio", + "colour": "Colour", + "size": "Size", + "primaryValueLabel": "Primary value label", + "primaryValue": "Primary value", + "hideSecondaryValue": "Hide secondary value", + "secondaryValueLabel": "Secondary value label", + "secondaryValue": "Secondary value", + "secondarySignDisplay": "Secondary sign display", + "primaryLabelColour": "Primary Label Colour", + "primaryTextColour": "Primary Text Colour", + "secondaryLabelColour": "Secondary Label Colour", + "secondaryTextColour": "Secondary Text Colour", + "min": "Min", + "max": "Max", + "value": "Value", + "twoHandles": "Two handles", + "lineColor": "Line color", + "handleColor": "Handle color", + "trackColor": "Track color", + "timelineData": "Timeline data", + "hideDate": "Hide Date", + "svgData": "Svg data", + "rawHtml": "Raw HTML", + "values": "values", + "labels": "Labels", + "defaultSelected": "Default selected", + "enableMutipleSelection": "Enable mutiple selection", + "selectedTextColour": "Selected text colour", + "selectedBackgroundColor": "Selected background color", + "fileUrl": "File URL", + "scalePageToWidth": "Scale page to width", + "showPageControls": "Show page controls", + "steps": "Steps", + "currentStep": "Current step", + "stepsSelectable": "Steps selectable", + "theme": "Theme", + "columns": "Columns", + "cardData": "Card Data", + "enableAddCard": "Enable Add Card", + "width": "Width", + "minWidth": "Min Width", + "accentColor": "Accent color", + "defaultColor": "Default Color", + "setColor": "Set Color", + "structure": "Structure", + "checkedValues": "Checked Values", + "expandedValues": "Expanded Values" + }, + "Table": { + "displayName": "Table", + "description": "Display paginated tabular data", + "columnType": "Column type", + "columnName": "Column name", + "overflow": "Overflow", + "key": "key", + "textColor": "Text color", + "validation": "Validation", + "regex": "Regex", + "minLength": "Min length", + "maxLength": "Max length", + "customRule": "Custom rule", + "values": "Values", + "labels": "Labels", + "cellBgColor": "Cell Background Color", + "dateDisplayformat": "Date Display Format", + "dateParseformat": "Date Parse Format", + "showTime": "show time", + "makeEditable": "make editable", + "buttonText": "Button Text", + "buttonPosition": "Button Position", + "remove": "Remove", + "addButton": "+ Add button", + "addColumn": "+ Add column", + "noActionMessage": "This table doesn't have any action buttons" + }, + "Button": { + "displayName": "Button", + "description": "Trigger actions: queries, alerts etc" + }, + "Chart": { + "displayName": "Chart", + "description": "Display charts" + }, + "Modal" : { + "displayName": "Modal", + "description": "Modal triggered by events" + }, + "TextInput" : { + "displayName": "Text Input", + "description": "Text field for forms" + }, + "NumberInput" :{ + "displayName": "Number Input", + "description": "Number field for forms" + }, + "PasswordInput":{ + "displayName": "Password Input", + "description": "Password input field for forms" + }, + "Datepicker" :{ + "displayName": "Date Picker", + "description": "Select a date and time" + }, + "Checkbox":{ + "displayName": "Checkbox", + "description": "A single checkbox" + }, + "Radio-button":{ + "displayName": "Radio Button", + "description": "Radio buttons" + }, + "ToggleSwitch":{ + "displayName": "Toggle Switch", + "description": "Toggle Switch" + }, + "Textarea":{ + "displayName": "Textarea", + "description": "Text area form field" + }, + "DateRangePicker":{ + "displayName": "Range Picker", + "description": "Select a date range" + }, + "Text":{ + "displayName": "Text", + "description": "Display markdown or HTML" + }, + "Image":{ + "displayName": "Image", + "description": "Display an Image" + }, + "Container":{ + "displayName": "Container", + "description": "Wrapper for multiple components" + }, + "Dropdown":{ + "displayName": "Dropdown", + "description": "Select one value from options" + }, + "Multiselect":{ + "displayName": "Multiselect", + "description": "Select multiple values from options" + }, + "RichTextEditor":{ + "displayName": "Text Editor", + "description": "Rich text editor" + }, + "Map":{ + "displayName": "Map", + "description": "Display Google Maps" + }, + "QrScanner":{ + "displayName": "QR Scanner", + "description": "Scan QR codes and hold its data" + }, + "StarRating":{ + "displayName": "Rating", + "description": "Star rating" + }, + "Divider":{ + "displayName": "Divider", + "description": "Separator between components" + }, + "FilePicker":{ + "displayName": "File Picker", + "description": "File Picker" + }, + "Calendar":{ + "displayName": "Calendar", + "description": "Calendar" + }, + "Iframe":{ + "displayName": "Iframe", + "description": "Display an Iframe" + }, + "CodeEditor":{ + "displayName": "Code Editor", + "description": "Code Editor" + }, + "Tabs":{ + "displayName": "Tabs", + "description": "Tabs component" + }, + "Timer":{ + "displayName": "Timer", + "description": "timer" + }, + "Listview":{ + "displayName": "List View", + "description": "Wrapper for multiple components" + }, + "Tags":{ + "displayName": "Tags", + "description": "Content can be shown as tags" + }, + "Pagination":{ + "displayName": "Pagination", + "description": "Pagination " + }, + "CircularProgressbar":{ + "displayName": "Circular Progressbar", + "description": "Show the progress using circular progressbar" + }, + "Spinner":{ + "displayName": "Spinner", + "description": "Spinner can be used to display loading status" + }, + "Statistics":{ + "displayName": "Statistics", + "description": "Statistics can be used to display different statistical information" + }, + "RangeSlider":{ + "displayName": "Range Slider", + "description": "Can be used to show slider with a range" + }, + "Timeline":{ + "displayName": "Timeline", + "description": "Visual representation of a sequence of events" + }, + "SvgImage":{ + "displayName": "Svg Image", + "description": "Svg image" + }, + "Html":{ + "displayName": "HTML Viewer", + "description": "HTML Viewer" + }, + "VerticalDivider":{ + "displayName": "Vertical Divider", + "description": "Vertical Separator between components" + }, + "CustomComponent":{ + "displayName": "Custom Component", + "description": "Add your custom react component" + }, + "ButtonGroup":{ + "displayName": "Button Group", + "description": "ButtonGroup" + }, + "PDF":{ + "displayName": "PDF", + "description": "Embed PDF file" + }, + "Steps":{ + "displayName": "Steps", + "description": "Steps" + }, + "KanbanBoard":{ + "displayName": "Kanban Board", + "description": "Kanban Board" + }, + "ColorPicker":{ + "displayName": "Color Picker", + "description": "Color Picker Pallete" + }, + "TreeSelect":{ + "displayName": "Tree Select", + "description": "Select values from a tree view" + } + }, + "leftSidebar":{ + "Inspector":{ + "text":"Inspector", + "tip" : "Inspector" + }, + "Sources" :{ + "text":"Sources", + "tip" : "Add or edit datasources", + "dataSources":"Data sources", + "addDataSource":"+ add data source" + }, + "Debugger":{ + "text":"Debugger", + "tip" : "Debugger", + "errors":"Errors", + "noErrors":"No errors found", + "clear":"clear" + }, + "Comments":{ + "text":"Comments", + "tip" : "toggle comments", + "commentBody":"There are no comments to display", + "typeComment":"Type your comment here" + }, + "Settings":{ + "text":"Settings", + "tip" : "Global Settings", + "hideHeader": "Hide header for launched apps", + "maintenanceMode":"Maintenance mode", + "maxWidthOfCanvas":"Max width of canvas", + "maxHeightOfCanvas" :"Max height of canvas", + "backgroundColorOfCanvas":"Background color of canvas" + + }, + "Back":{ + "text":"Back", + "tip" : "Back to Home" + } + } +} diff --git a/frontend/assets/translations/languages.json b/frontend/assets/translations/languages.json new file mode 100644 index 0000000000..8f3f7572cf --- /dev/null +++ b/frontend/assets/translations/languages.json @@ -0,0 +1,6 @@ +{ + "languageList": [ + { "lang": "English", "code": "en", "nativeLang": "English" }, + { "lang": "French", "code": "fr", "nativeLang": "Français" } + ] +} diff --git a/frontend/babel.config.js b/frontend/babel.config.js index 92d9fc1629..28a905b2a9 100644 --- a/frontend/babel.config.js +++ b/frontend/babel.config.js @@ -1,7 +1,6 @@ module.exports = { presets: ['@babel/preset-env', '@babel/preset-react'], plugins: [ - ['@babel/plugin-proposal-class-properties'], [ 'console-source', { diff --git a/frontend/package-lock.json b/frontend/package-lock.json index fe138e4756..7df9bd498a 100644 --- a/frontend/package-lock.json +++ b/frontend/package-lock.json @@ -8,8 +8,8 @@ "version": "0.1.0", "dependencies": { "@react-google-maps/api": "^2.1.1", - "@sentry/react": "^6.17.6", - "@sentry/tracing": "^6.17.6", + "@sentry/react": "^7.12.0", + "@sentry/tracing": "^7.12.0", "@tooljet/plugins": "../plugins", "@uiw/react-codemirror": "^3.0.6", "@y-presence/react": "^2.0.0", @@ -25,6 +25,11 @@ "emoji-mart": "^3.0.1", "fuse.js": "^6.4.6", "history": "^4.9.0", + "html-loader": "^3.1.0", + "html-webpack-plugin": "^5.3.2", + "i18next": "^21.8.14", + "i18next-browser-languagedetector": "^6.1.4", + "i18next-http-backend": "^1.4.1", "immer": "^9.0.6", "immutability-helper": "^3.1.1", "lodash": "^4.17.21", @@ -54,6 +59,7 @@ "react-google-login": "^5.2.2", "react-hot-toast": "^2.1.1", "react-hotkeys-hook": "^3.4.4", + "react-i18next": "^11.18.3", "react-json-tree": "^0.16.1", "react-json-view": "^1.21.3", "react-lazy-load-image-component": "^1.5.1", @@ -88,9 +94,8 @@ "devDependencies": { "@babel/core": "^7.4.3", "@babel/eslint-parser": "^7.18.9", - "@babel/plugin-proposal-class-properties": "^7.10.4", "@babel/plugin-transform-runtime": "^7.16.10", - "@babel/preset-env": "^7.4.3", + "@babel/preset-env": "^7.18.10", "@babel/preset-react": "^7.18.6", "@svgr/webpack": "^5.5.0", "@testing-library/jest-dom": "^4.2.4", @@ -134,6 +139,7 @@ "@tooljet-plugins/baserow": "file:packages/baserow", "@tooljet-plugins/bigquery": "file:packages/bigquery", "@tooljet-plugins/common": "file:packages/common", + "@tooljet-plugins/cosmosdb": "file:packages/cosmosdb", "@tooljet-plugins/couchdb": "file:packages/couchdb", "@tooljet-plugins/dynamodb": "file:packages/dynamodb", "@tooljet-plugins/elasticsearch": "file:packages/elasticsearch", @@ -13594,18 +13600,20 @@ } }, "node_modules/@babel/code-frame": { - "version": "7.16.7", - "integrity": "sha512-iAXqUn8IIeBTNd72xsFlgaXHkMBMt6y4HJp1tIaK465CWLT/fG1aqB7ykr95gHHmlBdGbFeWWfyB4NJJ0nmeIg==", + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.18.6.tgz", + "integrity": "sha512-TDCmlK5eOvH+eH7cdAFlNXeVJqWIQ7gW9tY1GJIpUtFb6CmjVyq2VM3u71bOyR8CRihcCgMUYoDNyLXao3+70Q==", "dependencies": { - "@babel/highlight": "^7.16.7" + "@babel/highlight": "^7.18.6" }, "engines": { "node": ">=6.9.0" } }, "node_modules/@babel/compat-data": { - "version": "7.17.0", - "integrity": "sha512-392byTlpGWXMv4FbyWw3sAZ/FrW/DrwqLGXpy0mbyNe9Taqv1mg9yON5/o0cnr8XYCkFTZbC1eV+c+LAROgrng==", + "version": "7.19.0", + "resolved": "https://registry.npmjs.org/@babel/compat-data/-/compat-data-7.19.0.tgz", + "integrity": "sha512-y5rqgTTPTmaF5e2nVhOxw+Ur9HDJLsWb6U/KpgUzRZEdPfE6VOubXBKLdbcUTijzRptednSBDQbYZBOSqJxpJw==", "devOptional": true, "engines": { "node": ">=6.9.0" @@ -13685,26 +13693,19 @@ } }, "node_modules/@babel/generator": { - "version": "7.17.3", - "integrity": "sha512-+R6Dctil/MgUsZsZAkYgK+ADNSZzJRRy0TvY65T71z/CR854xHQ1EweBYXdfT+HNeN7w0cSJJEzgxZMv40pxsg==", + "version": "7.19.0", + "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.19.0.tgz", + "integrity": "sha512-S1ahxf1gZ2dpoiFgA+ohK9DIpz50bJ0CWs7Zlzb54Z4sG8qmdIrGrVqmy1sAtTVRb+9CU6U8VqT9L0Zj7hxHVg==", "devOptional": true, "dependencies": { - "@babel/types": "^7.17.0", - "jsesc": "^2.5.1", - "source-map": "^0.5.0" + "@babel/types": "^7.19.0", + "@jridgewell/gen-mapping": "^0.3.2", + "jsesc": "^2.5.1" }, "engines": { "node": ">=6.9.0" } }, - "node_modules/@babel/generator/node_modules/source-map": { - "version": "0.5.7", - "integrity": "sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w=", - "devOptional": true, - "engines": { - "node": ">=0.10.0" - } - }, "node_modules/@babel/helper-annotate-as-pure": { "version": "7.18.6", "resolved": "https://registry.npmjs.org/@babel/helper-annotate-as-pure/-/helper-annotate-as-pure-7.18.6.tgz", @@ -13718,22 +13719,27 @@ } }, "node_modules/@babel/helper-builder-binary-assignment-operator-visitor": { - "version": "7.12.13", - "integrity": "sha512-CZOv9tGphhDRlVjVkAgm8Nhklm9RzSmWpX2my+t7Ua/KT616pEzXsQCjinzvkRvHWJ9itO4f296efroX23XCMA==", + "version": "7.18.9", + "resolved": "https://registry.npmjs.org/@babel/helper-builder-binary-assignment-operator-visitor/-/helper-builder-binary-assignment-operator-visitor-7.18.9.tgz", + "integrity": "sha512-yFQ0YCHoIqarl8BCRwBL8ulYUaZpz3bNsA7oFepAzee+8/+ImtADXNOmO5vJvsPff3qi+hvpkY/NYBTrBQgdNw==", "dev": true, "dependencies": { - "@babel/helper-explode-assignable-expression": "^7.12.13", - "@babel/types": "^7.12.13" + "@babel/helper-explode-assignable-expression": "^7.18.6", + "@babel/types": "^7.18.9" + }, + "engines": { + "node": ">=6.9.0" } }, "node_modules/@babel/helper-compilation-targets": { - "version": "7.16.7", - "integrity": "sha512-mGojBwIWcwGD6rfqgRXVlVYmPAv7eOpIemUG3dGnDdCY4Pae70ROij3XmfrH6Fa1h1aiDylpglbZyktfzyo/hA==", + "version": "7.19.0", + "resolved": "https://registry.npmjs.org/@babel/helper-compilation-targets/-/helper-compilation-targets-7.19.0.tgz", + "integrity": "sha512-Ai5bNWXIvwDvWM7njqsG3feMlL9hCVQsPYXodsZyLwshYkZVJt59Gftau4VrE8S9IT9asd2uSP1hG6wCNw+sXA==", "devOptional": true, "dependencies": { - "@babel/compat-data": "^7.16.4", - "@babel/helper-validator-option": "^7.16.7", - "browserslist": "^4.17.5", + "@babel/compat-data": "^7.19.0", + "@babel/helper-validator-option": "^7.18.6", + "browserslist": "^4.20.2", "semver": "^6.3.0" }, "engines": { @@ -13752,41 +13758,50 @@ } }, "node_modules/@babel/helper-create-class-features-plugin": { - "version": "7.13.11", - "integrity": "sha512-ays0I7XYq9xbjCSvT+EvysLgfc3tOkwCULHjrnscGT3A9qD4sk3wXnJ3of0MAWsWGjdinFvajHU2smYuqXKMrw==", + "version": "7.19.0", + "resolved": "https://registry.npmjs.org/@babel/helper-create-class-features-plugin/-/helper-create-class-features-plugin-7.19.0.tgz", + "integrity": "sha512-NRz8DwF4jT3UfrmUoZjd0Uph9HQnP30t7Ash+weACcyNkiYTywpIjDBgReJMKgr+n86sn2nPVVmJ28Dm053Kqw==", "dev": true, "dependencies": { - "@babel/helper-function-name": "^7.12.13", - "@babel/helper-member-expression-to-functions": "^7.13.0", - "@babel/helper-optimise-call-expression": "^7.12.13", - "@babel/helper-replace-supers": "^7.13.0", - "@babel/helper-split-export-declaration": "^7.12.13" + "@babel/helper-annotate-as-pure": "^7.18.6", + "@babel/helper-environment-visitor": "^7.18.9", + "@babel/helper-function-name": "^7.19.0", + "@babel/helper-member-expression-to-functions": "^7.18.9", + "@babel/helper-optimise-call-expression": "^7.18.6", + "@babel/helper-replace-supers": "^7.18.9", + "@babel/helper-split-export-declaration": "^7.18.6" + }, + "engines": { + "node": ">=6.9.0" }, "peerDependencies": { "@babel/core": "^7.0.0" } }, "node_modules/@babel/helper-create-regexp-features-plugin": { - "version": "7.12.17", - "integrity": "sha512-p2VGmBu9oefLZ2nQpgnEnG0ZlRPvL8gAGvPUMQwUdaE8k49rOMuZpOwdQoy5qJf6K8jL3bcAMhVUlHAjIgJHUg==", + "version": "7.19.0", + "resolved": "https://registry.npmjs.org/@babel/helper-create-regexp-features-plugin/-/helper-create-regexp-features-plugin-7.19.0.tgz", + "integrity": "sha512-htnV+mHX32DF81amCDrwIDr8nrp1PTm+3wfBN9/v8QJOLEioOCOG7qNyq0nHeFiWbT3Eb7gsPwEmV64UCQ1jzw==", "dev": true, "dependencies": { - "@babel/helper-annotate-as-pure": "^7.12.13", - "regexpu-core": "^4.7.1" + "@babel/helper-annotate-as-pure": "^7.18.6", + "regexpu-core": "^5.1.0" + }, + "engines": { + "node": ">=6.9.0" }, "peerDependencies": { "@babel/core": "^7.0.0" } }, "node_modules/@babel/helper-define-polyfill-provider": { - "version": "0.1.5", - "integrity": "sha512-nXuzCSwlJ/WKr8qxzW816gwyT6VZgiJG17zR40fou70yfAcqjoNyTLl/DQ+FExw5Hx5KNqshmN8Ldl/r2N7cTg==", + "version": "0.3.2", + "resolved": "https://registry.npmjs.org/@babel/helper-define-polyfill-provider/-/helper-define-polyfill-provider-0.3.2.tgz", + "integrity": "sha512-r9QJJ+uDWrd+94BSPcP6/de67ygLtvVy6cK4luE6MOuDsZIdoaPBnfSpbO/+LTifjPckbKXRuI9BB/Z2/y3iTg==", "dev": true, "dependencies": { - "@babel/helper-compilation-targets": "^7.13.0", - "@babel/helper-module-imports": "^7.12.13", - "@babel/helper-plugin-utils": "^7.13.0", - "@babel/traverse": "^7.13.0", + "@babel/helper-compilation-targets": "^7.17.7", + "@babel/helper-plugin-utils": "^7.16.7", "debug": "^4.1.1", "lodash.debounce": "^4.0.8", "resolve": "^1.14.2", @@ -13798,6 +13813,7 @@ }, "node_modules/@babel/helper-define-polyfill-provider/node_modules/semver": { "version": "6.3.0", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==", "dev": true, "bin": { @@ -13805,65 +13821,58 @@ } }, "node_modules/@babel/helper-environment-visitor": { - "version": "7.16.7", - "integrity": "sha512-SLLb0AAn6PkUeAfKJCCOl9e1R53pQlGAfc4y4XuMRZfqeMYLE0dM1LMhqbGAlGQY0lfw5/ohoYWAe9V1yibRag==", + "version": "7.18.9", + "resolved": "https://registry.npmjs.org/@babel/helper-environment-visitor/-/helper-environment-visitor-7.18.9.tgz", + "integrity": "sha512-3r/aACDJ3fhQ/EVgFy0hpj8oHyHpQc+LPtJoY9SzTThAsStm4Ptegq92vqKoE3vD706ZVFWITnMnxucw+S9Ipg==", "devOptional": true, - "dependencies": { - "@babel/types": "^7.16.7" - }, "engines": { "node": ">=6.9.0" } }, "node_modules/@babel/helper-explode-assignable-expression": { - "version": "7.13.0", - "integrity": "sha512-qS0peLTDP8kOisG1blKbaoBg/o9OSa1qoumMjTK5pM+KDTtpxpsiubnCGP34vK8BXGcb2M9eigwgvoJryrzwWA==", + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/helper-explode-assignable-expression/-/helper-explode-assignable-expression-7.18.6.tgz", + "integrity": "sha512-eyAYAsQmB80jNfg4baAtLeWAQHfHFiR483rzFK+BhETlGZaQC9bsfrugfXDCbRHLQbIA7U5NxhhOxN7p/dWIcg==", "dev": true, "dependencies": { - "@babel/types": "^7.13.0" - } - }, - "node_modules/@babel/helper-function-name": { - "version": "7.16.7", - "integrity": "sha512-QfDfEnIUyyBSR3HtrtGECuZ6DAyCkYFp7GHl75vFtTnn6pjKeK0T1DB5lLkFvBea8MdaiUABx3osbgLyInoejA==", - "devOptional": true, - "dependencies": { - "@babel/helper-get-function-arity": "^7.16.7", - "@babel/template": "^7.16.7", - "@babel/types": "^7.16.7" + "@babel/types": "^7.18.6" }, "engines": { "node": ">=6.9.0" } }, - "node_modules/@babel/helper-get-function-arity": { - "version": "7.16.7", - "integrity": "sha512-flc+RLSOBXzNzVhcLu6ujeHUrD6tANAOU5ojrRx/as+tbzf8+stUCj7+IfRRoAbEZqj/ahXEMsjhOhgeZsrnTw==", + "node_modules/@babel/helper-function-name": { + "version": "7.19.0", + "resolved": "https://registry.npmjs.org/@babel/helper-function-name/-/helper-function-name-7.19.0.tgz", + "integrity": "sha512-WAwHBINyrpqywkUH0nTnNgI5ina5TFn85HKS0pbPDfxFfhyR/aNQEn4hGi1P1JyT//I0t4OgXUlofzWILRvS5w==", "devOptional": true, "dependencies": { - "@babel/types": "^7.16.7" + "@babel/template": "^7.18.10", + "@babel/types": "^7.19.0" }, "engines": { "node": ">=6.9.0" } }, "node_modules/@babel/helper-hoist-variables": { - "version": "7.16.7", - "integrity": "sha512-m04d/0Op34H5v7pbZw6pSKP7weA6lsMvfiIAMeIvkY/R4xQtBSMFEigu9QTZ2qB/9l22vsxtM8a+Q8CzD255fg==", + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/helper-hoist-variables/-/helper-hoist-variables-7.18.6.tgz", + "integrity": "sha512-UlJQPkFqFULIcyW5sbzgbkxn2FKRgwWiRexcuaR8RNJRy8+LLveqPjwZV/bwrLZCN0eUHD/x8D0heK1ozuoo6Q==", "devOptional": true, "dependencies": { - "@babel/types": "^7.16.7" + "@babel/types": "^7.18.6" }, "engines": { "node": ">=6.9.0" } }, "node_modules/@babel/helper-member-expression-to-functions": { - "version": "7.15.0", - "integrity": "sha512-Jq8H8U2kYiafuj2xMTPQwkTBnEEdGKpT35lJEQsRRjnG0LW3neucsaMWLgKcwu3OHKNeYugfw+Z20BXBSEs2Lg==", + "version": "7.18.9", + "resolved": "https://registry.npmjs.org/@babel/helper-member-expression-to-functions/-/helper-member-expression-to-functions-7.18.9.tgz", + "integrity": "sha512-RxifAh2ZoVU67PyKIO4AMi1wTenGfMR/O/ae0CCRqwgBAt5v7xjdtRw7UoSbsreKrQn5t7r89eruK/9JjYHuDg==", "dev": true, "dependencies": { - "@babel/types": "^7.15.0" + "@babel/types": "^7.18.9" }, "engines": { "node": ">=6.9.0" @@ -13881,92 +13890,110 @@ } }, "node_modules/@babel/helper-module-transforms": { - "version": "7.17.6", - "integrity": "sha512-2ULmRdqoOMpdvkbT8jONrZML/XALfzxlb052bldftkicAUy8AxSCkD5trDPQcwHNmolcl7wP6ehNqMlyUw6AaA==", + "version": "7.19.0", + "resolved": "https://registry.npmjs.org/@babel/helper-module-transforms/-/helper-module-transforms-7.19.0.tgz", + "integrity": "sha512-3HBZ377Fe14RbLIA+ac3sY4PTgpxHVkFrESaWhoI5PuyXPBBX8+C34qblV9G89ZtycGJCmCI/Ut+VUDK4bltNQ==", "devOptional": true, "dependencies": { - "@babel/helper-environment-visitor": "^7.16.7", - "@babel/helper-module-imports": "^7.16.7", - "@babel/helper-simple-access": "^7.16.7", - "@babel/helper-split-export-declaration": "^7.16.7", - "@babel/helper-validator-identifier": "^7.16.7", - "@babel/template": "^7.16.7", - "@babel/traverse": "^7.17.3", - "@babel/types": "^7.17.0" + "@babel/helper-environment-visitor": "^7.18.9", + "@babel/helper-module-imports": "^7.18.6", + "@babel/helper-simple-access": "^7.18.6", + "@babel/helper-split-export-declaration": "^7.18.6", + "@babel/helper-validator-identifier": "^7.18.6", + "@babel/template": "^7.18.10", + "@babel/traverse": "^7.19.0", + "@babel/types": "^7.19.0" }, "engines": { "node": ">=6.9.0" } }, "node_modules/@babel/helper-optimise-call-expression": { - "version": "7.14.5", - "integrity": "sha512-IqiLIrODUOdnPU9/F8ib1Fx2ohlgDhxnIDU7OEVi+kAbEZcyiF7BLU8W6PfvPi9LzztjS7kcbzbmL7oG8kD6VA==", + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/helper-optimise-call-expression/-/helper-optimise-call-expression-7.18.6.tgz", + "integrity": "sha512-HP59oD9/fEHQkdcbgFCnbmgH5vIQTJbxh2yf+CdM89/glUNnuzr87Q8GIjGEnOktTROemO0Pe0iPAYbqZuOUiA==", "dev": true, "dependencies": { - "@babel/types": "^7.14.5" + "@babel/types": "^7.18.6" }, "engines": { "node": ">=6.9.0" } }, "node_modules/@babel/helper-plugin-utils": { - "version": "7.18.9", - "resolved": "https://registry.npmjs.org/@babel/helper-plugin-utils/-/helper-plugin-utils-7.18.9.tgz", - "integrity": "sha512-aBXPT3bmtLryXaoJLyYPXPlSD4p1ld9aYeR+sJNOZjJJGiOpb+fKfh3NkcCu7J54nUJwCERPBExCCpyCOHnu/w==", + "version": "7.19.0", + "resolved": "https://registry.npmjs.org/@babel/helper-plugin-utils/-/helper-plugin-utils-7.19.0.tgz", + "integrity": "sha512-40Ryx7I8mT+0gaNxm8JGTZFUITNqdLAgdg0hXzeVZxVD6nFsdhQvip6v8dqkRHzsz1VFpFAaOCHNn0vKBL7Czw==", "dev": true, "engines": { "node": ">=6.9.0" } }, "node_modules/@babel/helper-remap-async-to-generator": { - "version": "7.13.0", - "integrity": "sha512-pUQpFBE9JvC9lrQbpX0TmeNIy5s7GnZjna2lhhcHC7DzgBs6fWn722Y5cfwgrtrqc7NAJwMvOa0mKhq6XaE4jg==", + "version": "7.18.9", + "resolved": "https://registry.npmjs.org/@babel/helper-remap-async-to-generator/-/helper-remap-async-to-generator-7.18.9.tgz", + "integrity": "sha512-dI7q50YKd8BAv3VEfgg7PS7yD3Rtbi2J1XMXaalXO0W0164hYLnh8zpjRS0mte9MfVp/tltvr/cfdXPvJr1opA==", "dev": true, "dependencies": { - "@babel/helper-annotate-as-pure": "^7.12.13", - "@babel/helper-wrap-function": "^7.13.0", - "@babel/types": "^7.13.0" + "@babel/helper-annotate-as-pure": "^7.18.6", + "@babel/helper-environment-visitor": "^7.18.9", + "@babel/helper-wrap-function": "^7.18.9", + "@babel/types": "^7.18.9" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0" } }, "node_modules/@babel/helper-replace-supers": { - "version": "7.15.0", - "integrity": "sha512-6O+eWrhx+HEra/uJnifCwhwMd6Bp5+ZfZeJwbqUTuqkhIT6YcRhiZCOOFChRypOIe0cV46kFrRBlm+t5vHCEaA==", + "version": "7.18.9", + "resolved": "https://registry.npmjs.org/@babel/helper-replace-supers/-/helper-replace-supers-7.18.9.tgz", + "integrity": "sha512-dNsWibVI4lNT6HiuOIBr1oyxo40HvIVmbwPUm3XZ7wMh4k2WxrxTqZwSqw/eEmXDS9np0ey5M2bz9tBmO9c+YQ==", "dev": true, "dependencies": { - "@babel/helper-member-expression-to-functions": "^7.15.0", - "@babel/helper-optimise-call-expression": "^7.14.5", - "@babel/traverse": "^7.15.0", - "@babel/types": "^7.15.0" + "@babel/helper-environment-visitor": "^7.18.9", + "@babel/helper-member-expression-to-functions": "^7.18.9", + "@babel/helper-optimise-call-expression": "^7.18.6", + "@babel/traverse": "^7.18.9", + "@babel/types": "^7.18.9" }, "engines": { "node": ">=6.9.0" } }, "node_modules/@babel/helper-simple-access": { - "version": "7.16.7", - "integrity": "sha512-ZIzHVyoeLMvXMN/vok/a4LWRy8G2v205mNP0XOuf9XRLyX5/u9CnVulUtDgUTama3lT+bf/UqucuZjqiGuTS1g==", + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/helper-simple-access/-/helper-simple-access-7.18.6.tgz", + "integrity": "sha512-iNpIgTgyAvDQpDj76POqg+YEt8fPxx3yaNBg3S30dxNKm2SWfYhD0TGrK/Eu9wHpUW63VQU894TsTg+GLbUa1g==", "devOptional": true, "dependencies": { - "@babel/types": "^7.16.7" + "@babel/types": "^7.18.6" }, "engines": { "node": ">=6.9.0" } }, "node_modules/@babel/helper-skip-transparent-expression-wrappers": { - "version": "7.12.1", - "integrity": "sha512-Mf5AUuhG1/OCChOJ/HcADmvcHM42WJockombn8ATJG3OnyiSxBK/Mm5x78BQWvmtXZKHgbjdGL2kin/HOLlZGA==", + "version": "7.18.9", + "resolved": "https://registry.npmjs.org/@babel/helper-skip-transparent-expression-wrappers/-/helper-skip-transparent-expression-wrappers-7.18.9.tgz", + "integrity": "sha512-imytd2gHi3cJPsybLRbmFrF7u5BIEuI2cNheyKi3/iOBC63kNn3q8Crn2xVuESli0aM4KYsyEqKyS7lFL8YVtw==", "dev": true, "dependencies": { - "@babel/types": "^7.12.1" + "@babel/types": "^7.18.9" + }, + "engines": { + "node": ">=6.9.0" } }, "node_modules/@babel/helper-split-export-declaration": { - "version": "7.16.7", - "integrity": "sha512-xbWoy/PFoxSWazIToT9Sif+jJTlrMcndIsaOKvTA6u7QEo7ilkRZpjew18/W3c7nm8fXdUDXh02VXTbZ0pGDNw==", + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.18.6.tgz", + "integrity": "sha512-bde1etTx6ZyTmobl9LLMMQsaizFVZrquTEHOqKeQESMKo4PlObf+8+JA25ZsIpZhT/WEd39+vOdLXAFG/nELpA==", "devOptional": true, "dependencies": { - "@babel/types": "^7.16.7" + "@babel/types": "^7.18.6" }, "engines": { "node": ">=6.9.0" @@ -13998,14 +14025,18 @@ } }, "node_modules/@babel/helper-wrap-function": { - "version": "7.13.0", - "integrity": "sha512-1UX9F7K3BS42fI6qd2A4BjKzgGjToscyZTdp1DjknHLCIvpgne6918io+aL5LXFcER/8QWiwpoY902pVEqgTXA==", + "version": "7.19.0", + "resolved": "https://registry.npmjs.org/@babel/helper-wrap-function/-/helper-wrap-function-7.19.0.tgz", + "integrity": "sha512-txX8aN8CZyYGTwcLhlk87KRqncAzhh5TpQamZUa0/u3an36NtDpUP6bQgBCBcLeBs09R/OwQu3OjK0k/HwfNDg==", "dev": true, "dependencies": { - "@babel/helper-function-name": "^7.12.13", - "@babel/template": "^7.12.13", - "@babel/traverse": "^7.13.0", - "@babel/types": "^7.13.0" + "@babel/helper-function-name": "^7.19.0", + "@babel/template": "^7.18.10", + "@babel/traverse": "^7.19.0", + "@babel/types": "^7.19.0" + }, + "engines": { + "node": ">=6.9.0" } }, "node_modules/@babel/helpers": { @@ -14022,10 +14053,11 @@ } }, "node_modules/@babel/highlight": { - "version": "7.16.10", - "integrity": "sha512-5FnTQLSLswEj6IkgVw5KusNUUFY9ZGqe/TRFnP/BKYHYgfh7tc+C7mwiy95/yNP7Dh9x580Vv8r7u7ZfTBFxdw==", + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.18.6.tgz", + "integrity": "sha512-u7stbOuYjaPezCuLj29hNW1v64M2Md2qupEKP1fHc7WdOA3DgLh37suiSrZYY7haUB7iBeQZ9P1uiRF359do3g==", "dependencies": { - "@babel/helper-validator-identifier": "^7.16.7", + "@babel/helper-validator-identifier": "^7.18.6", "chalk": "^2.0.0", "js-tokens": "^4.0.0" }, @@ -14034,8 +14066,9 @@ } }, "node_modules/@babel/parser": { - "version": "7.17.3", - "integrity": "sha512-7yJPvPV+ESz2IUTPbOL+YkIGyCqOyNIzdguKQuJGnH7bg1WTIifuM21YqokFt/THWh1AkCRn9IgoykTRCBVpzA==", + "version": "7.19.0", + "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.19.0.tgz", + "integrity": "sha512-74bEXKX2h+8rrfQUfsBfuZZHzsEs6Eql4pqy/T4Nn6Y9wNPggQOqD6z6pn5Bl8ZfysKouFZT/UXEH94ummEeQw==", "devOptional": true, "bin": { "parser": "bin/babel-parser.js" @@ -14044,175 +14077,279 @@ "node": ">=6.0.0" } }, + "node_modules/@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression": { + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression/-/plugin-bugfix-safari-id-destructuring-collision-in-function-expression-7.18.6.tgz", + "integrity": "sha512-Dgxsyg54Fx1d4Nge8UnvTrED63vrwOdPmyvPzlNN/boaliRP54pm3pGzZD1SJUwrBA+Cs/xdG8kXX6Mn/RfISQ==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.18.6" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0" + } + }, "node_modules/@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining": { - "version": "7.13.12", - "integrity": "sha512-d0u3zWKcoZf379fOeJdr1a5WPDny4aOFZ6hlfKivgK0LY7ZxNfoaHL2fWwdGtHyVvra38FC+HVYkO+byfSA8AQ==", + "version": "7.18.9", + "resolved": "https://registry.npmjs.org/@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining/-/plugin-bugfix-v8-spread-parameters-in-optional-chaining-7.18.9.tgz", + "integrity": "sha512-AHrP9jadvH7qlOj6PINbgSuphjQUAK7AOT7DPjBo9EHoLhQTnnK5u45e1Hd4DbSQEO9nqPWtQ89r+XEOWFScKg==", "dev": true, "dependencies": { - "@babel/helper-plugin-utils": "^7.13.0", - "@babel/helper-skip-transparent-expression-wrappers": "^7.12.1", - "@babel/plugin-proposal-optional-chaining": "^7.13.12" + "@babel/helper-plugin-utils": "^7.18.9", + "@babel/helper-skip-transparent-expression-wrappers": "^7.18.9", + "@babel/plugin-proposal-optional-chaining": "^7.18.9" + }, + "engines": { + "node": ">=6.9.0" }, "peerDependencies": { "@babel/core": "^7.13.0" } }, "node_modules/@babel/plugin-proposal-async-generator-functions": { - "version": "7.13.8", - "integrity": "sha512-rPBnhj+WgoSmgq+4gQUtXx/vOcU+UYtjy1AA/aeD61Hwj410fwYyqfUcRP3lR8ucgliVJL/G7sXcNUecC75IXA==", + "version": "7.19.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-async-generator-functions/-/plugin-proposal-async-generator-functions-7.19.0.tgz", + "integrity": "sha512-nhEByMUTx3uZueJ/QkJuSlCfN4FGg+xy+vRsfGQGzSauq5ks2Deid2+05Q3KhfaUjvec1IGhw/Zm3cFm8JigTQ==", "dev": true, "dependencies": { - "@babel/helper-plugin-utils": "^7.13.0", - "@babel/helper-remap-async-to-generator": "^7.13.0", + "@babel/helper-environment-visitor": "^7.18.9", + "@babel/helper-plugin-utils": "^7.19.0", + "@babel/helper-remap-async-to-generator": "^7.18.9", "@babel/plugin-syntax-async-generators": "^7.8.4" }, + "engines": { + "node": ">=6.9.0" + }, "peerDependencies": { "@babel/core": "^7.0.0-0" } }, "node_modules/@babel/plugin-proposal-class-properties": { - "version": "7.13.0", - "integrity": "sha512-KnTDjFNC1g+45ka0myZNvSBFLhNCLN+GeGYLDEA8Oq7MZ6yMgfLoIRh86GRT0FjtJhZw8JyUskP9uvj5pHM9Zg==", + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-class-properties/-/plugin-proposal-class-properties-7.18.6.tgz", + "integrity": "sha512-cumfXOF0+nzZrrN8Rf0t7M+tF6sZc7vhQwYQck9q1/5w2OExlD+b4v4RpMJFaV1Z7WcDRgO6FqvxqxGlwo+RHQ==", "dev": true, "dependencies": { - "@babel/helper-create-class-features-plugin": "^7.13.0", - "@babel/helper-plugin-utils": "^7.13.0" + "@babel/helper-create-class-features-plugin": "^7.18.6", + "@babel/helper-plugin-utils": "^7.18.6" + }, + "engines": { + "node": ">=6.9.0" }, "peerDependencies": { "@babel/core": "^7.0.0-0" } }, + "node_modules/@babel/plugin-proposal-class-static-block": { + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-class-static-block/-/plugin-proposal-class-static-block-7.18.6.tgz", + "integrity": "sha512-+I3oIiNxrCpup3Gi8n5IGMwj0gOCAjcJUSQEcotNnCCPMEnixawOQ+KeJPlgfjzx+FKQ1QSyZOWe7wmoJp7vhw==", + "dev": true, + "dependencies": { + "@babel/helper-create-class-features-plugin": "^7.18.6", + "@babel/helper-plugin-utils": "^7.18.6", + "@babel/plugin-syntax-class-static-block": "^7.14.5" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.12.0" + } + }, "node_modules/@babel/plugin-proposal-dynamic-import": { - "version": "7.13.8", - "integrity": "sha512-ONWKj0H6+wIRCkZi9zSbZtE/r73uOhMVHh256ys0UzfM7I3d4n+spZNWjOnJv2gzopumP2Wxi186vI8N0Y2JyQ==", + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-dynamic-import/-/plugin-proposal-dynamic-import-7.18.6.tgz", + "integrity": "sha512-1auuwmK+Rz13SJj36R+jqFPMJWyKEDd7lLSdOj4oJK0UTgGueSAtkrCvz9ewmgyU/P941Rv2fQwZJN8s6QruXw==", "dev": true, "dependencies": { - "@babel/helper-plugin-utils": "^7.13.0", + "@babel/helper-plugin-utils": "^7.18.6", "@babel/plugin-syntax-dynamic-import": "^7.8.3" }, + "engines": { + "node": ">=6.9.0" + }, "peerDependencies": { "@babel/core": "^7.0.0-0" } }, "node_modules/@babel/plugin-proposal-export-namespace-from": { - "version": "7.12.13", - "integrity": "sha512-INAgtFo4OnLN3Y/j0VwAgw3HDXcDtX+C/erMvWzuV9v71r7urb6iyMXu7eM9IgLr1ElLlOkaHjJ0SbCmdOQ3Iw==", + "version": "7.18.9", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-export-namespace-from/-/plugin-proposal-export-namespace-from-7.18.9.tgz", + "integrity": "sha512-k1NtHyOMvlDDFeb9G5PhUXuGj8m/wiwojgQVEhJ/fsVsMCpLyOP4h0uGEjYJKrRI+EVPlb5Jk+Gt9P97lOGwtA==", "dev": true, "dependencies": { - "@babel/helper-plugin-utils": "^7.12.13", + "@babel/helper-plugin-utils": "^7.18.9", "@babel/plugin-syntax-export-namespace-from": "^7.8.3" }, + "engines": { + "node": ">=6.9.0" + }, "peerDependencies": { "@babel/core": "^7.0.0-0" } }, "node_modules/@babel/plugin-proposal-json-strings": { - "version": "7.13.8", - "integrity": "sha512-w4zOPKUFPX1mgvTmL/fcEqy34hrQ1CRcGxdphBc6snDnnqJ47EZDIyop6IwXzAC8G916hsIuXB2ZMBCExC5k7Q==", + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-json-strings/-/plugin-proposal-json-strings-7.18.6.tgz", + "integrity": "sha512-lr1peyn9kOdbYc0xr0OdHTZ5FMqS6Di+H0Fz2I/JwMzGmzJETNeOFq2pBySw6X/KFL5EWDjlJuMsUGRFb8fQgQ==", "dev": true, "dependencies": { - "@babel/helper-plugin-utils": "^7.13.0", + "@babel/helper-plugin-utils": "^7.18.6", "@babel/plugin-syntax-json-strings": "^7.8.3" }, + "engines": { + "node": ">=6.9.0" + }, "peerDependencies": { "@babel/core": "^7.0.0-0" } }, "node_modules/@babel/plugin-proposal-logical-assignment-operators": { - "version": "7.13.8", - "integrity": "sha512-aul6znYB4N4HGweImqKn59Su9RS8lbUIqxtXTOcAGtNIDczoEFv+l1EhmX8rUBp3G1jMjKJm8m0jXVp63ZpS4A==", + "version": "7.18.9", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-logical-assignment-operators/-/plugin-proposal-logical-assignment-operators-7.18.9.tgz", + "integrity": "sha512-128YbMpjCrP35IOExw2Fq+x55LMP42DzhOhX2aNNIdI9avSWl2PI0yuBWarr3RYpZBSPtabfadkH2yeRiMD61Q==", "dev": true, "dependencies": { - "@babel/helper-plugin-utils": "^7.13.0", + "@babel/helper-plugin-utils": "^7.18.9", "@babel/plugin-syntax-logical-assignment-operators": "^7.10.4" }, + "engines": { + "node": ">=6.9.0" + }, "peerDependencies": { "@babel/core": "^7.0.0-0" } }, "node_modules/@babel/plugin-proposal-nullish-coalescing-operator": { - "version": "7.13.8", - "integrity": "sha512-iePlDPBn//UhxExyS9KyeYU7RM9WScAG+D3Hhno0PLJebAEpDZMocbDe64eqynhNAnwz/vZoL/q/QB2T1OH39A==", + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-nullish-coalescing-operator/-/plugin-proposal-nullish-coalescing-operator-7.18.6.tgz", + "integrity": "sha512-wQxQzxYeJqHcfppzBDnm1yAY0jSRkUXR2z8RePZYrKwMKgMlE8+Z6LUno+bd6LvbGh8Gltvy74+9pIYkr+XkKA==", "dev": true, "dependencies": { - "@babel/helper-plugin-utils": "^7.13.0", + "@babel/helper-plugin-utils": "^7.18.6", "@babel/plugin-syntax-nullish-coalescing-operator": "^7.8.3" }, + "engines": { + "node": ">=6.9.0" + }, "peerDependencies": { "@babel/core": "^7.0.0-0" } }, "node_modules/@babel/plugin-proposal-numeric-separator": { - "version": "7.12.13", - "integrity": "sha512-O1jFia9R8BUCl3ZGB7eitaAPu62TXJRHn7rh+ojNERCFyqRwJMTmhz+tJ+k0CwI6CLjX/ee4qW74FSqlq9I35w==", + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-numeric-separator/-/plugin-proposal-numeric-separator-7.18.6.tgz", + "integrity": "sha512-ozlZFogPqoLm8WBr5Z8UckIoE4YQ5KESVcNudyXOR8uqIkliTEgJ3RoketfG6pmzLdeZF0H/wjE9/cCEitBl7Q==", "dev": true, "dependencies": { - "@babel/helper-plugin-utils": "^7.12.13", + "@babel/helper-plugin-utils": "^7.18.6", "@babel/plugin-syntax-numeric-separator": "^7.10.4" }, + "engines": { + "node": ">=6.9.0" + }, "peerDependencies": { "@babel/core": "^7.0.0-0" } }, "node_modules/@babel/plugin-proposal-object-rest-spread": { - "version": "7.13.8", - "integrity": "sha512-DhB2EuB1Ih7S3/IRX5AFVgZ16k3EzfRbq97CxAVI1KSYcW+lexV8VZb7G7L8zuPVSdQMRn0kiBpf/Yzu9ZKH0g==", + "version": "7.18.9", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-object-rest-spread/-/plugin-proposal-object-rest-spread-7.18.9.tgz", + "integrity": "sha512-kDDHQ5rflIeY5xl69CEqGEZ0KY369ehsCIEbTGb4siHG5BE9sga/T0r0OUwyZNLMmZE79E1kbsqAjwFCW4ds6Q==", "dev": true, "dependencies": { - "@babel/compat-data": "^7.13.8", - "@babel/helper-compilation-targets": "^7.13.8", - "@babel/helper-plugin-utils": "^7.13.0", + "@babel/compat-data": "^7.18.8", + "@babel/helper-compilation-targets": "^7.18.9", + "@babel/helper-plugin-utils": "^7.18.9", "@babel/plugin-syntax-object-rest-spread": "^7.8.3", - "@babel/plugin-transform-parameters": "^7.13.0" + "@babel/plugin-transform-parameters": "^7.18.8" + }, + "engines": { + "node": ">=6.9.0" }, "peerDependencies": { "@babel/core": "^7.0.0-0" } }, "node_modules/@babel/plugin-proposal-optional-catch-binding": { - "version": "7.13.8", - "integrity": "sha512-0wS/4DUF1CuTmGo+NiaHfHcVSeSLj5S3e6RivPTg/2k3wOv3jO35tZ6/ZWsQhQMvdgI7CwphjQa/ccarLymHVA==", + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-optional-catch-binding/-/plugin-proposal-optional-catch-binding-7.18.6.tgz", + "integrity": "sha512-Q40HEhs9DJQyaZfUjjn6vE8Cv4GmMHCYuMGIWUnlxH6400VGxOuwWsPt4FxXxJkC/5eOzgn0z21M9gMT4MOhbw==", "dev": true, "dependencies": { - "@babel/helper-plugin-utils": "^7.13.0", + "@babel/helper-plugin-utils": "^7.18.6", "@babel/plugin-syntax-optional-catch-binding": "^7.8.3" }, + "engines": { + "node": ">=6.9.0" + }, "peerDependencies": { "@babel/core": "^7.0.0-0" } }, "node_modules/@babel/plugin-proposal-optional-chaining": { - "version": "7.13.12", - "integrity": "sha512-fcEdKOkIB7Tf4IxrgEVeFC4zeJSTr78no9wTdBuZZbqF64kzllU0ybo2zrzm7gUQfxGhBgq4E39oRs8Zx/RMYQ==", + "version": "7.18.9", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-optional-chaining/-/plugin-proposal-optional-chaining-7.18.9.tgz", + "integrity": "sha512-v5nwt4IqBXihxGsW2QmCWMDS3B3bzGIk/EQVZz2ei7f3NJl8NzAJVvUmpDW5q1CRNY+Beb/k58UAH1Km1N411w==", "dev": true, "dependencies": { - "@babel/helper-plugin-utils": "^7.13.0", - "@babel/helper-skip-transparent-expression-wrappers": "^7.12.1", + "@babel/helper-plugin-utils": "^7.18.9", + "@babel/helper-skip-transparent-expression-wrappers": "^7.18.9", "@babel/plugin-syntax-optional-chaining": "^7.8.3" }, + "engines": { + "node": ">=6.9.0" + }, "peerDependencies": { "@babel/core": "^7.0.0-0" } }, "node_modules/@babel/plugin-proposal-private-methods": { - "version": "7.13.0", - "integrity": "sha512-MXyyKQd9inhx1kDYPkFRVOBXQ20ES8Pto3T7UZ92xj2mY0EVD8oAVzeyYuVfy/mxAdTSIayOvg+aVzcHV2bn6Q==", + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-private-methods/-/plugin-proposal-private-methods-7.18.6.tgz", + "integrity": "sha512-nutsvktDItsNn4rpGItSNV2sz1XwS+nfU0Rg8aCx3W3NOKVzdMjJRu0O5OkgDp3ZGICSTbgRpxZoWsxoKRvbeA==", "dev": true, "dependencies": { - "@babel/helper-create-class-features-plugin": "^7.13.0", - "@babel/helper-plugin-utils": "^7.13.0" + "@babel/helper-create-class-features-plugin": "^7.18.6", + "@babel/helper-plugin-utils": "^7.18.6" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-proposal-private-property-in-object": { + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-private-property-in-object/-/plugin-proposal-private-property-in-object-7.18.6.tgz", + "integrity": "sha512-9Rysx7FOctvT5ouj5JODjAFAkgGoudQuLPamZb0v1TGLpapdNaftzifU8NTWQm0IRjqoYypdrSmyWgkocDQ8Dw==", + "dev": true, + "dependencies": { + "@babel/helper-annotate-as-pure": "^7.18.6", + "@babel/helper-create-class-features-plugin": "^7.18.6", + "@babel/helper-plugin-utils": "^7.18.6", + "@babel/plugin-syntax-private-property-in-object": "^7.14.5" + }, + "engines": { + "node": ">=6.9.0" }, "peerDependencies": { "@babel/core": "^7.0.0-0" } }, "node_modules/@babel/plugin-proposal-unicode-property-regex": { - "version": "7.12.13", - "integrity": "sha512-XyJmZidNfofEkqFV5VC/bLabGmO5QzenPO/YOfGuEbgU+2sSwMmio3YLb4WtBgcmmdwZHyVyv8on77IUjQ5Gvg==", + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-unicode-property-regex/-/plugin-proposal-unicode-property-regex-7.18.6.tgz", + "integrity": "sha512-2BShG/d5yoZyXZfVePH91urL5wTG6ASZU9M4o03lKK8u8UW1y08OMttBSOADTcJrnPMpvDXRG3G8fyLh4ovs8w==", "dev": true, "dependencies": { - "@babel/helper-create-regexp-features-plugin": "^7.12.13", - "@babel/helper-plugin-utils": "^7.12.13" + "@babel/helper-create-regexp-features-plugin": "^7.18.6", + "@babel/helper-plugin-utils": "^7.18.6" }, "engines": { "node": ">=4" @@ -14254,8 +14391,24 @@ "@babel/core": "^7.0.0-0" } }, + "node_modules/@babel/plugin-syntax-class-static-block": { + "version": "7.14.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-class-static-block/-/plugin-syntax-class-static-block-7.14.5.tgz", + "integrity": "sha512-b+YyPmr6ldyNnM6sqYeMWE+bgJcJpO6yS4QD7ymxgH34GBPNDM/THBh8iunyvKIZztiwLH4CJZ0RxTk9emgpjw==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.14.5" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, "node_modules/@babel/plugin-syntax-dynamic-import": { "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-dynamic-import/-/plugin-syntax-dynamic-import-7.8.3.tgz", "integrity": "sha512-5gdGbFon+PszYzqs83S3E5mpi7/y/8M9eC90MRTZfduQOYW76ig6SOSPNe41IG5LoP3FGBn2N0RjVDSQiS94kQ==", "dev": true, "dependencies": { @@ -14267,6 +14420,7 @@ }, "node_modules/@babel/plugin-syntax-export-namespace-from": { "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-export-namespace-from/-/plugin-syntax-export-namespace-from-7.8.3.tgz", "integrity": "sha512-MXf5laXo6c1IbEbegDmzGPwGNTsHZmEy6QGznu5Sh2UCWvueywb2ee+CCE4zQiZstxU9BMoQO9i6zUFSY0Kj0Q==", "dev": true, "dependencies": { @@ -14276,6 +14430,21 @@ "@babel/core": "^7.0.0-0" } }, + "node_modules/@babel/plugin-syntax-import-assertions": { + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-import-assertions/-/plugin-syntax-import-assertions-7.18.6.tgz", + "integrity": "sha512-/DU3RXad9+bZwrgWJQKbr39gYbJpLJHezqEzRzi/BHRlJ9zsQb4CK2CA/5apllXNomwA1qHwzvHl+AdEmC5krQ==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.18.6" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, "node_modules/@babel/plugin-syntax-import-meta": { "version": "7.10.4", "integrity": "sha512-Yqfm+XDx0+Prh3VSeEQCPU81yC+JWZ2pDPFSS4ZdpfZhp4MkFMaDC1UqseovEKwSUpnIL7+vK+Clp7bfh0iD7g==", @@ -14379,12 +14548,31 @@ "@babel/core": "^7.0.0-0" } }, + "node_modules/@babel/plugin-syntax-private-property-in-object": { + "version": "7.14.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-private-property-in-object/-/plugin-syntax-private-property-in-object-7.14.5.tgz", + "integrity": "sha512-0wVnp9dxJ72ZUJDV27ZfbSj6iHLoytYZmh3rFcxNnvsJF3ktkzLDZPy/mA17HGsaQT3/DQsWYX1f1QGWkCoVUg==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.14.5" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, "node_modules/@babel/plugin-syntax-top-level-await": { - "version": "7.12.13", - "integrity": "sha512-A81F9pDwyS7yM//KwbCSDqy3Uj4NMIurtplxphWxoYtNPov7cJsDkAFNNyVlIZ3jwGycVsurZ+LtOA8gZ376iQ==", + "version": "7.14.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-top-level-await/-/plugin-syntax-top-level-await-7.14.5.tgz", + "integrity": "sha512-hx++upLv5U1rgYfwe1xBQUhRmU41NEvpUvrp8jkrSCdvGSnM5/qdRMtylJ6PG5OFkBaHkbTAKTnd3/YyESRHFw==", "dev": true, "dependencies": { - "@babel/helper-plugin-utils": "^7.12.13" + "@babel/helper-plugin-utils": "^7.14.5" + }, + "engines": { + "node": ">=6.9.0" }, "peerDependencies": { "@babel/core": "^7.0.0-0" @@ -14405,275 +14593,371 @@ } }, "node_modules/@babel/plugin-transform-arrow-functions": { - "version": "7.13.0", - "integrity": "sha512-96lgJagobeVmazXFaDrbmCLQxBysKu7U6Do3mLsx27gf5Dk85ezysrs2BZUpXD703U/Su1xTBDxxar2oa4jAGg==", + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-arrow-functions/-/plugin-transform-arrow-functions-7.18.6.tgz", + "integrity": "sha512-9S9X9RUefzrsHZmKMbDXxweEH+YlE8JJEuat9FdvW9Qh1cw7W64jELCtWNkPBPX5En45uy28KGvA/AySqUh8CQ==", "dev": true, "dependencies": { - "@babel/helper-plugin-utils": "^7.13.0" + "@babel/helper-plugin-utils": "^7.18.6" + }, + "engines": { + "node": ">=6.9.0" }, "peerDependencies": { "@babel/core": "^7.0.0-0" } }, "node_modules/@babel/plugin-transform-async-to-generator": { - "version": "7.13.0", - "integrity": "sha512-3j6E004Dx0K3eGmhxVJxwwI89CTJrce7lg3UrtFuDAVQ/2+SJ/h/aSFOeE6/n0WB1GsOffsJp6MnPQNQ8nmwhg==", + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-async-to-generator/-/plugin-transform-async-to-generator-7.18.6.tgz", + "integrity": "sha512-ARE5wZLKnTgPW7/1ftQmSi1CmkqqHo2DNmtztFhvgtOWSDfq0Cq9/9L+KnZNYSNrydBekhW3rwShduf59RoXag==", "dev": true, "dependencies": { - "@babel/helper-module-imports": "^7.12.13", - "@babel/helper-plugin-utils": "^7.13.0", - "@babel/helper-remap-async-to-generator": "^7.13.0" + "@babel/helper-module-imports": "^7.18.6", + "@babel/helper-plugin-utils": "^7.18.6", + "@babel/helper-remap-async-to-generator": "^7.18.6" + }, + "engines": { + "node": ">=6.9.0" }, "peerDependencies": { "@babel/core": "^7.0.0-0" } }, "node_modules/@babel/plugin-transform-block-scoped-functions": { - "version": "7.12.13", - "integrity": "sha512-zNyFqbc3kI/fVpqwfqkg6RvBgFpC4J18aKKMmv7KdQ/1GgREapSJAykLMVNwfRGO3BtHj3YQZl8kxCXPcVMVeg==", + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-block-scoped-functions/-/plugin-transform-block-scoped-functions-7.18.6.tgz", + "integrity": "sha512-ExUcOqpPWnliRcPqves5HJcJOvHvIIWfuS4sroBUenPuMdmW+SMHDakmtS7qOo13sVppmUijqeTv7qqGsvURpQ==", "dev": true, "dependencies": { - "@babel/helper-plugin-utils": "^7.12.13" + "@babel/helper-plugin-utils": "^7.18.6" + }, + "engines": { + "node": ">=6.9.0" }, "peerDependencies": { "@babel/core": "^7.0.0-0" } }, "node_modules/@babel/plugin-transform-block-scoping": { - "version": "7.12.13", - "integrity": "sha512-Pxwe0iqWJX4fOOM2kEZeUuAxHMWb9nK+9oh5d11bsLoB0xMg+mkDpt0eYuDZB7ETrY9bbcVlKUGTOGWy7BHsMQ==", + "version": "7.18.9", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-block-scoping/-/plugin-transform-block-scoping-7.18.9.tgz", + "integrity": "sha512-5sDIJRV1KtQVEbt/EIBwGy4T01uYIo4KRB3VUqzkhrAIOGx7AoctL9+Ux88btY0zXdDyPJ9mW+bg+v+XEkGmtw==", "dev": true, "dependencies": { - "@babel/helper-plugin-utils": "^7.12.13" + "@babel/helper-plugin-utils": "^7.18.9" + }, + "engines": { + "node": ">=6.9.0" }, "peerDependencies": { "@babel/core": "^7.0.0-0" } }, "node_modules/@babel/plugin-transform-classes": { - "version": "7.13.0", - "integrity": "sha512-9BtHCPUARyVH1oXGcSJD3YpsqRLROJx5ZNP6tN5vnk17N0SVf9WCtf8Nuh1CFmgByKKAIMstitKduoCmsaDK5g==", + "version": "7.19.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-classes/-/plugin-transform-classes-7.19.0.tgz", + "integrity": "sha512-YfeEE9kCjqTS9IitkgfJuxjcEtLUHMqa8yUJ6zdz8vR7hKuo6mOy2C05P0F1tdMmDCeuyidKnlrw/iTppHcr2A==", "dev": true, "dependencies": { - "@babel/helper-annotate-as-pure": "^7.12.13", - "@babel/helper-function-name": "^7.12.13", - "@babel/helper-optimise-call-expression": "^7.12.13", - "@babel/helper-plugin-utils": "^7.13.0", - "@babel/helper-replace-supers": "^7.13.0", - "@babel/helper-split-export-declaration": "^7.12.13", + "@babel/helper-annotate-as-pure": "^7.18.6", + "@babel/helper-compilation-targets": "^7.19.0", + "@babel/helper-environment-visitor": "^7.18.9", + "@babel/helper-function-name": "^7.19.0", + "@babel/helper-optimise-call-expression": "^7.18.6", + "@babel/helper-plugin-utils": "^7.19.0", + "@babel/helper-replace-supers": "^7.18.9", + "@babel/helper-split-export-declaration": "^7.18.6", "globals": "^11.1.0" }, + "engines": { + "node": ">=6.9.0" + }, "peerDependencies": { "@babel/core": "^7.0.0-0" } }, "node_modules/@babel/plugin-transform-computed-properties": { - "version": "7.13.0", - "integrity": "sha512-RRqTYTeZkZAz8WbieLTvKUEUxZlUTdmL5KGMyZj7FnMfLNKV4+r5549aORG/mgojRmFlQMJDUupwAMiF2Q7OUg==", + "version": "7.18.9", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-computed-properties/-/plugin-transform-computed-properties-7.18.9.tgz", + "integrity": "sha512-+i0ZU1bCDymKakLxn5srGHrsAPRELC2WIbzwjLhHW9SIE1cPYkLCL0NlnXMZaM1vhfgA2+M7hySk42VBvrkBRw==", "dev": true, "dependencies": { - "@babel/helper-plugin-utils": "^7.13.0" + "@babel/helper-plugin-utils": "^7.18.9" + }, + "engines": { + "node": ">=6.9.0" }, "peerDependencies": { "@babel/core": "^7.0.0-0" } }, "node_modules/@babel/plugin-transform-destructuring": { - "version": "7.13.0", - "integrity": "sha512-zym5em7tePoNT9s964c0/KU3JPPnuq7VhIxPRefJ4/s82cD+q1mgKfuGRDMCPL0HTyKz4dISuQlCusfgCJ86HA==", + "version": "7.18.13", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-destructuring/-/plugin-transform-destructuring-7.18.13.tgz", + "integrity": "sha512-TodpQ29XekIsex2A+YJPj5ax2plkGa8YYY6mFjCohk/IG9IY42Rtuj1FuDeemfg2ipxIFLzPeA83SIBnlhSIow==", "dev": true, "dependencies": { - "@babel/helper-plugin-utils": "^7.13.0" + "@babel/helper-plugin-utils": "^7.18.9" + }, + "engines": { + "node": ">=6.9.0" }, "peerDependencies": { "@babel/core": "^7.0.0-0" } }, "node_modules/@babel/plugin-transform-dotall-regex": { - "version": "7.12.13", - "integrity": "sha512-foDrozE65ZFdUC2OfgeOCrEPTxdB3yjqxpXh8CH+ipd9CHd4s/iq81kcUpyH8ACGNEPdFqbtzfgzbT/ZGlbDeQ==", + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-dotall-regex/-/plugin-transform-dotall-regex-7.18.6.tgz", + "integrity": "sha512-6S3jpun1eEbAxq7TdjLotAsl4WpQI9DxfkycRcKrjhQYzU87qpXdknpBg/e+TdcMehqGnLFi7tnFUBR02Vq6wg==", "dev": true, "dependencies": { - "@babel/helper-create-regexp-features-plugin": "^7.12.13", - "@babel/helper-plugin-utils": "^7.12.13" + "@babel/helper-create-regexp-features-plugin": "^7.18.6", + "@babel/helper-plugin-utils": "^7.18.6" + }, + "engines": { + "node": ">=6.9.0" }, "peerDependencies": { "@babel/core": "^7.0.0-0" } }, "node_modules/@babel/plugin-transform-duplicate-keys": { - "version": "7.12.13", - "integrity": "sha512-NfADJiiHdhLBW3pulJlJI2NB0t4cci4WTZ8FtdIuNc2+8pslXdPtRRAEWqUY+m9kNOk2eRYbTAOipAxlrOcwwQ==", + "version": "7.18.9", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-duplicate-keys/-/plugin-transform-duplicate-keys-7.18.9.tgz", + "integrity": "sha512-d2bmXCtZXYc59/0SanQKbiWINadaJXqtvIQIzd4+hNwkWBgyCd5F/2t1kXoUdvPMrxzPvhK6EMQRROxsue+mfw==", "dev": true, "dependencies": { - "@babel/helper-plugin-utils": "^7.12.13" + "@babel/helper-plugin-utils": "^7.18.9" + }, + "engines": { + "node": ">=6.9.0" }, "peerDependencies": { "@babel/core": "^7.0.0-0" } }, "node_modules/@babel/plugin-transform-exponentiation-operator": { - "version": "7.12.13", - "integrity": "sha512-fbUelkM1apvqez/yYx1/oICVnGo2KM5s63mhGylrmXUxK/IAXSIf87QIxVfZldWf4QsOafY6vV3bX8aMHSvNrA==", + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-exponentiation-operator/-/plugin-transform-exponentiation-operator-7.18.6.tgz", + "integrity": "sha512-wzEtc0+2c88FVR34aQmiz56dxEkxr2g8DQb/KfaFa1JYXOFVsbhvAonFN6PwVWj++fKmku8NP80plJ5Et4wqHw==", "dev": true, "dependencies": { - "@babel/helper-builder-binary-assignment-operator-visitor": "^7.12.13", - "@babel/helper-plugin-utils": "^7.12.13" + "@babel/helper-builder-binary-assignment-operator-visitor": "^7.18.6", + "@babel/helper-plugin-utils": "^7.18.6" + }, + "engines": { + "node": ">=6.9.0" }, "peerDependencies": { "@babel/core": "^7.0.0-0" } }, "node_modules/@babel/plugin-transform-for-of": { - "version": "7.13.0", - "integrity": "sha512-IHKT00mwUVYE0zzbkDgNRP6SRzvfGCYsOxIRz8KsiaaHCcT9BWIkO+H9QRJseHBLOGBZkHUdHiqj6r0POsdytg==", + "version": "7.18.8", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-for-of/-/plugin-transform-for-of-7.18.8.tgz", + "integrity": "sha512-yEfTRnjuskWYo0k1mHUqrVWaZwrdq8AYbfrpqULOJOaucGSp4mNMVps+YtA8byoevxS/urwU75vyhQIxcCgiBQ==", "dev": true, "dependencies": { - "@babel/helper-plugin-utils": "^7.13.0" + "@babel/helper-plugin-utils": "^7.18.6" + }, + "engines": { + "node": ">=6.9.0" }, "peerDependencies": { "@babel/core": "^7.0.0-0" } }, "node_modules/@babel/plugin-transform-function-name": { - "version": "7.12.13", - "integrity": "sha512-6K7gZycG0cmIwwF7uMK/ZqeCikCGVBdyP2J5SKNCXO5EOHcqi+z7Jwf8AmyDNcBgxET8DrEtCt/mPKPyAzXyqQ==", + "version": "7.18.9", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-function-name/-/plugin-transform-function-name-7.18.9.tgz", + "integrity": "sha512-WvIBoRPaJQ5yVHzcnJFor7oS5Ls0PYixlTYE63lCj2RtdQEl15M68FXQlxnG6wdraJIXRdR7KI+hQ7q/9QjrCQ==", "dev": true, "dependencies": { - "@babel/helper-function-name": "^7.12.13", - "@babel/helper-plugin-utils": "^7.12.13" + "@babel/helper-compilation-targets": "^7.18.9", + "@babel/helper-function-name": "^7.18.9", + "@babel/helper-plugin-utils": "^7.18.9" + }, + "engines": { + "node": ">=6.9.0" }, "peerDependencies": { "@babel/core": "^7.0.0-0" } }, "node_modules/@babel/plugin-transform-literals": { - "version": "7.12.13", - "integrity": "sha512-FW+WPjSR7hiUxMcKqyNjP05tQ2kmBCdpEpZHY1ARm96tGQCCBvXKnpjILtDplUnJ/eHZ0lALLM+d2lMFSpYJrQ==", + "version": "7.18.9", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-literals/-/plugin-transform-literals-7.18.9.tgz", + "integrity": "sha512-IFQDSRoTPnrAIrI5zoZv73IFeZu2dhu6irxQjY9rNjTT53VmKg9fenjvoiOWOkJ6mm4jKVPtdMzBY98Fp4Z4cg==", "dev": true, "dependencies": { - "@babel/helper-plugin-utils": "^7.12.13" + "@babel/helper-plugin-utils": "^7.18.9" + }, + "engines": { + "node": ">=6.9.0" }, "peerDependencies": { "@babel/core": "^7.0.0-0" } }, "node_modules/@babel/plugin-transform-member-expression-literals": { - "version": "7.12.13", - "integrity": "sha512-kxLkOsg8yir4YeEPHLuO2tXP9R/gTjpuTOjshqSpELUN3ZAg2jfDnKUvzzJxObun38sw3wm4Uu69sX/zA7iRvg==", + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-member-expression-literals/-/plugin-transform-member-expression-literals-7.18.6.tgz", + "integrity": "sha512-qSF1ihLGO3q+/g48k85tUjD033C29TNTVB2paCwZPVmOsjn9pClvYYrM2VeJpBY2bcNkuny0YUyTNRyRxJ54KA==", "dev": true, "dependencies": { - "@babel/helper-plugin-utils": "^7.12.13" + "@babel/helper-plugin-utils": "^7.18.6" + }, + "engines": { + "node": ">=6.9.0" }, "peerDependencies": { "@babel/core": "^7.0.0-0" } }, "node_modules/@babel/plugin-transform-modules-amd": { - "version": "7.13.0", - "integrity": "sha512-EKy/E2NHhY/6Vw5d1k3rgoobftcNUmp9fGjb9XZwQLtTctsRBOTRO7RHHxfIky1ogMN5BxN7p9uMA3SzPfotMQ==", + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-amd/-/plugin-transform-modules-amd-7.18.6.tgz", + "integrity": "sha512-Pra5aXsmTsOnjM3IajS8rTaLCy++nGM4v3YR4esk5PCsyg9z8NA5oQLwxzMUtDBd8F+UmVza3VxoAaWCbzH1rg==", "dev": true, "dependencies": { - "@babel/helper-module-transforms": "^7.13.0", - "@babel/helper-plugin-utils": "^7.13.0", + "@babel/helper-module-transforms": "^7.18.6", + "@babel/helper-plugin-utils": "^7.18.6", "babel-plugin-dynamic-import-node": "^2.3.3" }, + "engines": { + "node": ">=6.9.0" + }, "peerDependencies": { "@babel/core": "^7.0.0-0" } }, "node_modules/@babel/plugin-transform-modules-commonjs": { - "version": "7.13.8", - "integrity": "sha512-9QiOx4MEGglfYZ4XOnU79OHr6vIWUakIj9b4mioN8eQIoEh+pf5p/zEB36JpDFWA12nNMiRf7bfoRvl9Rn79Bw==", + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-commonjs/-/plugin-transform-modules-commonjs-7.18.6.tgz", + "integrity": "sha512-Qfv2ZOWikpvmedXQJDSbxNqy7Xr/j2Y8/KfijM0iJyKkBTmWuvCA1yeH1yDM7NJhBW/2aXxeucLj6i80/LAJ/Q==", "dev": true, "dependencies": { - "@babel/helper-module-transforms": "^7.13.0", - "@babel/helper-plugin-utils": "^7.13.0", - "@babel/helper-simple-access": "^7.12.13", + "@babel/helper-module-transforms": "^7.18.6", + "@babel/helper-plugin-utils": "^7.18.6", + "@babel/helper-simple-access": "^7.18.6", "babel-plugin-dynamic-import-node": "^2.3.3" }, + "engines": { + "node": ">=6.9.0" + }, "peerDependencies": { "@babel/core": "^7.0.0-0" } }, "node_modules/@babel/plugin-transform-modules-systemjs": { - "version": "7.13.8", - "integrity": "sha512-hwqctPYjhM6cWvVIlOIe27jCIBgHCsdH2xCJVAYQm7V5yTMoilbVMi9f6wKg0rpQAOn6ZG4AOyvCqFF/hUh6+A==", + "version": "7.19.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-systemjs/-/plugin-transform-modules-systemjs-7.19.0.tgz", + "integrity": "sha512-x9aiR0WXAWmOWsqcsnrzGR+ieaTMVyGyffPVA7F8cXAGt/UxefYv6uSHZLkAFChN5M5Iy1+wjE+xJuPt22H39A==", "dev": true, "dependencies": { - "@babel/helper-hoist-variables": "^7.13.0", - "@babel/helper-module-transforms": "^7.13.0", - "@babel/helper-plugin-utils": "^7.13.0", - "@babel/helper-validator-identifier": "^7.12.11", + "@babel/helper-hoist-variables": "^7.18.6", + "@babel/helper-module-transforms": "^7.19.0", + "@babel/helper-plugin-utils": "^7.19.0", + "@babel/helper-validator-identifier": "^7.18.6", "babel-plugin-dynamic-import-node": "^2.3.3" }, + "engines": { + "node": ">=6.9.0" + }, "peerDependencies": { "@babel/core": "^7.0.0-0" } }, "node_modules/@babel/plugin-transform-modules-umd": { - "version": "7.13.0", - "integrity": "sha512-D/ILzAh6uyvkWjKKyFE/W0FzWwasv6vPTSqPcjxFqn6QpX3u8DjRVliq4F2BamO2Wee/om06Vyy+vPkNrd4wxw==", + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-umd/-/plugin-transform-modules-umd-7.18.6.tgz", + "integrity": "sha512-dcegErExVeXcRqNtkRU/z8WlBLnvD4MRnHgNs3MytRO1Mn1sHRyhbcpYbVMGclAqOjdW+9cfkdZno9dFdfKLfQ==", "dev": true, "dependencies": { - "@babel/helper-module-transforms": "^7.13.0", - "@babel/helper-plugin-utils": "^7.13.0" + "@babel/helper-module-transforms": "^7.18.6", + "@babel/helper-plugin-utils": "^7.18.6" + }, + "engines": { + "node": ">=6.9.0" }, "peerDependencies": { "@babel/core": "^7.0.0-0" } }, "node_modules/@babel/plugin-transform-named-capturing-groups-regex": { - "version": "7.12.13", - "integrity": "sha512-Xsm8P2hr5hAxyYblrfACXpQKdQbx4m2df9/ZZSQ8MAhsadw06+jW7s9zsSw6he+mJZXRlVMyEnVktJo4zjk1WA==", + "version": "7.19.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-named-capturing-groups-regex/-/plugin-transform-named-capturing-groups-regex-7.19.0.tgz", + "integrity": "sha512-HDSuqOQzkU//kfGdiHBt71/hkDTApw4U/cMVgKgX7PqfB3LOaK+2GtCEsBu1dL9CkswDm0Gwehht1dCr421ULQ==", "dev": true, "dependencies": { - "@babel/helper-create-regexp-features-plugin": "^7.12.13" + "@babel/helper-create-regexp-features-plugin": "^7.19.0", + "@babel/helper-plugin-utils": "^7.19.0" + }, + "engines": { + "node": ">=6.9.0" }, "peerDependencies": { "@babel/core": "^7.0.0" } }, "node_modules/@babel/plugin-transform-new-target": { - "version": "7.12.13", - "integrity": "sha512-/KY2hbLxrG5GTQ9zzZSc3xWiOy379pIETEhbtzwZcw9rvuaVV4Fqy7BYGYOWZnaoXIQYbbJ0ziXLa/sKcGCYEQ==", + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-new-target/-/plugin-transform-new-target-7.18.6.tgz", + "integrity": "sha512-DjwFA/9Iu3Z+vrAn+8pBUGcjhxKguSMlsFqeCKbhb9BAV756v0krzVK04CRDi/4aqmk8BsHb4a/gFcaA5joXRw==", "dev": true, "dependencies": { - "@babel/helper-plugin-utils": "^7.12.13" + "@babel/helper-plugin-utils": "^7.18.6" + }, + "engines": { + "node": ">=6.9.0" }, "peerDependencies": { "@babel/core": "^7.0.0-0" } }, "node_modules/@babel/plugin-transform-object-super": { - "version": "7.12.13", - "integrity": "sha512-JzYIcj3XtYspZDV8j9ulnoMPZZnF/Cj0LUxPOjR89BdBVx+zYJI9MdMIlUZjbXDX+6YVeS6I3e8op+qQ3BYBoQ==", + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-object-super/-/plugin-transform-object-super-7.18.6.tgz", + "integrity": "sha512-uvGz6zk+pZoS1aTZrOvrbj6Pp/kK2mp45t2B+bTDre2UgsZZ8EZLSJtUg7m/no0zOJUWgFONpB7Zv9W2tSaFlA==", "dev": true, "dependencies": { - "@babel/helper-plugin-utils": "^7.12.13", - "@babel/helper-replace-supers": "^7.12.13" + "@babel/helper-plugin-utils": "^7.18.6", + "@babel/helper-replace-supers": "^7.18.6" + }, + "engines": { + "node": ">=6.9.0" }, "peerDependencies": { "@babel/core": "^7.0.0-0" } }, "node_modules/@babel/plugin-transform-parameters": { - "version": "7.13.0", - "integrity": "sha512-Jt8k/h/mIwE2JFEOb3lURoY5C85ETcYPnbuAJ96zRBzh1XHtQZfs62ChZ6EP22QlC8c7Xqr9q+e1SU5qttwwjw==", + "version": "7.18.8", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-parameters/-/plugin-transform-parameters-7.18.8.tgz", + "integrity": "sha512-ivfbE3X2Ss+Fj8nnXvKJS6sjRG4gzwPMsP+taZC+ZzEGjAYlvENixmt1sZ5Ca6tWls+BlKSGKPJ6OOXvXCbkFg==", "dev": true, "dependencies": { - "@babel/helper-plugin-utils": "^7.13.0" + "@babel/helper-plugin-utils": "^7.18.6" + }, + "engines": { + "node": ">=6.9.0" }, "peerDependencies": { "@babel/core": "^7.0.0-0" } }, "node_modules/@babel/plugin-transform-property-literals": { - "version": "7.12.13", - "integrity": "sha512-nqVigwVan+lR+g8Fj8Exl0UQX2kymtjcWfMOYM1vTYEKujeyv2SkMgazf2qNcK7l4SDiKyTA/nHCPqL4e2zo1A==", + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-property-literals/-/plugin-transform-property-literals-7.18.6.tgz", + "integrity": "sha512-cYcs6qlgafTud3PAzrrRNbQtfpQ8+y/+M5tKmksS9+M1ckbH6kzY8MrexEM9mcA6JDsukE19iIRvAyYl463sMg==", "dev": true, "dependencies": { - "@babel/helper-plugin-utils": "^7.12.13" + "@babel/helper-plugin-utils": "^7.18.6" + }, + "engines": { + "node": ">=6.9.0" }, "peerDependencies": { "@babel/core": "^7.0.0-0" @@ -14706,16 +14990,16 @@ } }, "node_modules/@babel/plugin-transform-react-jsx": { - "version": "7.18.10", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-react-jsx/-/plugin-transform-react-jsx-7.18.10.tgz", - "integrity": "sha512-gCy7Iikrpu3IZjYZolFE4M1Sm+nrh1/6za2Ewj77Z+XirT4TsbJcvOFOyF+fRPwU6AKKK136CZxx6L8AbSFG6A==", + "version": "7.19.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-react-jsx/-/plugin-transform-react-jsx-7.19.0.tgz", + "integrity": "sha512-UVEvX3tXie3Szm3emi1+G63jyw1w5IcMY0FSKM+CRnKRI5Mr1YbCNgsSTwoTwKphQEG9P+QqmuRFneJPZuHNhg==", "dev": true, "dependencies": { "@babel/helper-annotate-as-pure": "^7.18.6", "@babel/helper-module-imports": "^7.18.6", - "@babel/helper-plugin-utils": "^7.18.9", + "@babel/helper-plugin-utils": "^7.19.0", "@babel/plugin-syntax-jsx": "^7.18.6", - "@babel/types": "^7.18.10" + "@babel/types": "^7.19.0" }, "engines": { "node": ">=6.9.0" @@ -14756,22 +15040,31 @@ } }, "node_modules/@babel/plugin-transform-regenerator": { - "version": "7.12.13", - "integrity": "sha512-lxb2ZAvSLyJ2PEe47hoGWPmW22v7CtSl9jW8mingV4H2sEX/JOcrAj2nPuGWi56ERUm2bUpjKzONAuT6HCn2EA==", + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-regenerator/-/plugin-transform-regenerator-7.18.6.tgz", + "integrity": "sha512-poqRI2+qiSdeldcz4wTSTXBRryoq3Gc70ye7m7UD5Ww0nE29IXqMl6r7Nd15WBgRd74vloEMlShtH6CKxVzfmQ==", "dev": true, "dependencies": { - "regenerator-transform": "^0.14.2" + "@babel/helper-plugin-utils": "^7.18.6", + "regenerator-transform": "^0.15.0" + }, + "engines": { + "node": ">=6.9.0" }, "peerDependencies": { "@babel/core": "^7.0.0-0" } }, "node_modules/@babel/plugin-transform-reserved-words": { - "version": "7.12.13", - "integrity": "sha512-xhUPzDXxZN1QfiOy/I5tyye+TRz6lA7z6xaT4CLOjPRMVg1ldRf0LHw0TDBpYL4vG78556WuHdyO9oi5UmzZBg==", + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-reserved-words/-/plugin-transform-reserved-words-7.18.6.tgz", + "integrity": "sha512-oX/4MyMoypzHjFrT1CdivfKZ+XvIPMFXwwxHp/r0Ddy2Vuomt4HDFGmft1TAY2yiTKiNSsh3kjBAzcM8kSdsjA==", "dev": true, "dependencies": { - "@babel/helper-plugin-utils": "^7.12.13" + "@babel/helper-plugin-utils": "^7.18.6" + }, + "engines": { + "node": ">=6.9.0" }, "peerDependencies": { "@babel/core": "^7.0.0-0" @@ -14796,49 +15089,6 @@ "@babel/core": "^7.0.0-0" } }, - "node_modules/@babel/plugin-transform-runtime/node_modules/@babel/helper-define-polyfill-provider": { - "version": "0.3.1", - "integrity": "sha512-J9hGMpJQmtWmj46B3kBHmL38UhJGhYX7eqkcq+2gsstyYt341HmPeWspihX43yVRA0mS+8GGk2Gckc7bY/HCmA==", - "dev": true, - "dependencies": { - "@babel/helper-compilation-targets": "^7.13.0", - "@babel/helper-module-imports": "^7.12.13", - "@babel/helper-plugin-utils": "^7.13.0", - "@babel/traverse": "^7.13.0", - "debug": "^4.1.1", - "lodash.debounce": "^4.0.8", - "resolve": "^1.14.2", - "semver": "^6.1.2" - }, - "peerDependencies": { - "@babel/core": "^7.4.0-0" - } - }, - "node_modules/@babel/plugin-transform-runtime/node_modules/babel-plugin-polyfill-corejs2": { - "version": "0.3.1", - "integrity": "sha512-v7/T6EQcNfVLfcN2X8Lulb7DjprieyLWJK/zOWH5DUYcAgex9sP3h25Q+DLsX9TloXe3y1O8l2q2Jv9q8UVB9w==", - "dev": true, - "dependencies": { - "@babel/compat-data": "^7.13.11", - "@babel/helper-define-polyfill-provider": "^0.3.1", - "semver": "^6.1.1" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-transform-runtime/node_modules/babel-plugin-polyfill-corejs3": { - "version": "0.5.1", - "integrity": "sha512-TihqEe4sQcb/QcPJvxe94/9RZuLQuF1+To4WqQcRvc+3J3gLCPIPgDKzGLG6zmQLfH3nn25heRuDNkS2KR4I8A==", - "dev": true, - "dependencies": { - "@babel/helper-define-polyfill-provider": "^0.3.1", - "core-js-compat": "^3.20.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, "node_modules/@babel/plugin-transform-runtime/node_modules/babel-plugin-polyfill-regenerator": { "version": "0.3.1", "integrity": "sha512-Y2B06tvgHYt1x0yz17jGkGeeMr5FeKUu+ASJ+N6nB5lQ8Dapfg42i0OVrf8PNGJ3zKL4A23snMi1IRwrqqND7A==", @@ -14859,111 +15109,145 @@ } }, "node_modules/@babel/plugin-transform-shorthand-properties": { - "version": "7.12.13", - "integrity": "sha512-xpL49pqPnLtf0tVluuqvzWIgLEhuPpZzvs2yabUHSKRNlN7ScYU7aMlmavOeyXJZKgZKQRBlh8rHbKiJDraTSw==", + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-shorthand-properties/-/plugin-transform-shorthand-properties-7.18.6.tgz", + "integrity": "sha512-eCLXXJqv8okzg86ywZJbRn19YJHU4XUa55oz2wbHhaQVn/MM+XhukiT7SYqp/7o00dg52Rj51Ny+Ecw4oyoygw==", "dev": true, "dependencies": { - "@babel/helper-plugin-utils": "^7.12.13" + "@babel/helper-plugin-utils": "^7.18.6" + }, + "engines": { + "node": ">=6.9.0" }, "peerDependencies": { "@babel/core": "^7.0.0-0" } }, "node_modules/@babel/plugin-transform-spread": { - "version": "7.13.0", - "integrity": "sha512-V6vkiXijjzYeFmQTr3dBxPtZYLPcUfY34DebOU27jIl2M/Y8Egm52Hw82CSjjPqd54GTlJs5x+CR7HeNr24ckg==", + "version": "7.19.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-spread/-/plugin-transform-spread-7.19.0.tgz", + "integrity": "sha512-RsuMk7j6n+r752EtzyScnWkQyuJdli6LdO5Klv8Yx0OfPVTcQkIUfS8clx5e9yHXzlnhOZF3CbQ8C2uP5j074w==", "dev": true, "dependencies": { - "@babel/helper-plugin-utils": "^7.13.0", - "@babel/helper-skip-transparent-expression-wrappers": "^7.12.1" + "@babel/helper-plugin-utils": "^7.19.0", + "@babel/helper-skip-transparent-expression-wrappers": "^7.18.9" + }, + "engines": { + "node": ">=6.9.0" }, "peerDependencies": { "@babel/core": "^7.0.0-0" } }, "node_modules/@babel/plugin-transform-sticky-regex": { - "version": "7.12.13", - "integrity": "sha512-Jc3JSaaWT8+fr7GRvQP02fKDsYk4K/lYwWq38r/UGfaxo89ajud321NH28KRQ7xy1Ybc0VUE5Pz8psjNNDUglg==", + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-sticky-regex/-/plugin-transform-sticky-regex-7.18.6.tgz", + "integrity": "sha512-kfiDrDQ+PBsQDO85yj1icueWMfGfJFKN1KCkndygtu/C9+XUfydLC8Iv5UYJqRwy4zk8EcplRxEOeLyjq1gm6Q==", "dev": true, "dependencies": { - "@babel/helper-plugin-utils": "^7.12.13" + "@babel/helper-plugin-utils": "^7.18.6" + }, + "engines": { + "node": ">=6.9.0" }, "peerDependencies": { "@babel/core": "^7.0.0-0" } }, "node_modules/@babel/plugin-transform-template-literals": { - "version": "7.13.0", - "integrity": "sha512-d67umW6nlfmr1iehCcBv69eSUSySk1EsIS8aTDX4Xo9qajAh6mYtcl4kJrBkGXuxZPEgVr7RVfAvNW6YQkd4Mw==", + "version": "7.18.9", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-template-literals/-/plugin-transform-template-literals-7.18.9.tgz", + "integrity": "sha512-S8cOWfT82gTezpYOiVaGHrCbhlHgKhQt8XH5ES46P2XWmX92yisoZywf5km75wv5sYcXDUCLMmMxOLCtthDgMA==", "dev": true, "dependencies": { - "@babel/helper-plugin-utils": "^7.13.0" + "@babel/helper-plugin-utils": "^7.18.9" + }, + "engines": { + "node": ">=6.9.0" }, "peerDependencies": { "@babel/core": "^7.0.0-0" } }, "node_modules/@babel/plugin-transform-typeof-symbol": { - "version": "7.12.13", - "integrity": "sha512-eKv/LmUJpMnu4npgfvs3LiHhJua5fo/CysENxa45YCQXZwKnGCQKAg87bvoqSW1fFT+HA32l03Qxsm8ouTY3ZQ==", + "version": "7.18.9", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-typeof-symbol/-/plugin-transform-typeof-symbol-7.18.9.tgz", + "integrity": "sha512-SRfwTtF11G2aemAZWivL7PD+C9z52v9EvMqH9BuYbabyPuKUvSWks3oCg6041pT925L4zVFqaVBeECwsmlguEw==", "dev": true, "dependencies": { - "@babel/helper-plugin-utils": "^7.12.13" + "@babel/helper-plugin-utils": "^7.18.9" + }, + "engines": { + "node": ">=6.9.0" }, "peerDependencies": { "@babel/core": "^7.0.0-0" } }, "node_modules/@babel/plugin-transform-unicode-escapes": { - "version": "7.12.13", - "integrity": "sha512-0bHEkdwJ/sN/ikBHfSmOXPypN/beiGqjo+o4/5K+vxEFNPRPdImhviPakMKG4x96l85emoa0Z6cDflsdBusZbw==", + "version": "7.18.10", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-unicode-escapes/-/plugin-transform-unicode-escapes-7.18.10.tgz", + "integrity": "sha512-kKAdAI+YzPgGY/ftStBFXTI1LZFju38rYThnfMykS+IXy8BVx+res7s2fxf1l8I35DV2T97ezo6+SGrXz6B3iQ==", "dev": true, "dependencies": { - "@babel/helper-plugin-utils": "^7.12.13" + "@babel/helper-plugin-utils": "^7.18.9" + }, + "engines": { + "node": ">=6.9.0" }, "peerDependencies": { "@babel/core": "^7.0.0-0" } }, "node_modules/@babel/plugin-transform-unicode-regex": { - "version": "7.12.13", - "integrity": "sha512-mDRzSNY7/zopwisPZ5kM9XKCfhchqIYwAKRERtEnhYscZB79VRekuRSoYbN0+KVe3y8+q1h6A4svXtP7N+UoCA==", + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-unicode-regex/-/plugin-transform-unicode-regex-7.18.6.tgz", + "integrity": "sha512-gE7A6Lt7YLnNOL3Pb9BNeZvi+d8l7tcRrG4+pwJjK9hD2xX4mEvjlQW60G9EEmfXVYRPv9VRQcyegIVHCql/AA==", "dev": true, "dependencies": { - "@babel/helper-create-regexp-features-plugin": "^7.12.13", - "@babel/helper-plugin-utils": "^7.12.13" + "@babel/helper-create-regexp-features-plugin": "^7.18.6", + "@babel/helper-plugin-utils": "^7.18.6" + }, + "engines": { + "node": ">=6.9.0" }, "peerDependencies": { "@babel/core": "^7.0.0-0" } }, "node_modules/@babel/preset-env": { - "version": "7.13.12", - "integrity": "sha512-JzElc6jk3Ko6zuZgBtjOd01pf9yYDEIH8BcqVuYIuOkzOwDesoa/Nz4gIo4lBG6K861KTV9TvIgmFuT6ytOaAA==", - "dev": true, - "dependencies": { - "@babel/compat-data": "^7.13.12", - "@babel/helper-compilation-targets": "^7.13.10", - "@babel/helper-plugin-utils": "^7.13.0", - "@babel/helper-validator-option": "^7.12.17", - "@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining": "^7.13.12", - "@babel/plugin-proposal-async-generator-functions": "^7.13.8", - "@babel/plugin-proposal-class-properties": "^7.13.0", - "@babel/plugin-proposal-dynamic-import": "^7.13.8", - "@babel/plugin-proposal-export-namespace-from": "^7.12.13", - "@babel/plugin-proposal-json-strings": "^7.13.8", - "@babel/plugin-proposal-logical-assignment-operators": "^7.13.8", - "@babel/plugin-proposal-nullish-coalescing-operator": "^7.13.8", - "@babel/plugin-proposal-numeric-separator": "^7.12.13", - "@babel/plugin-proposal-object-rest-spread": "^7.13.8", - "@babel/plugin-proposal-optional-catch-binding": "^7.13.8", - "@babel/plugin-proposal-optional-chaining": "^7.13.12", - "@babel/plugin-proposal-private-methods": "^7.13.0", - "@babel/plugin-proposal-unicode-property-regex": "^7.12.13", + "version": "7.19.0", + "resolved": "https://registry.npmjs.org/@babel/preset-env/-/preset-env-7.19.0.tgz", + "integrity": "sha512-1YUju1TAFuzjIQqNM9WsF4U6VbD/8t3wEAlw3LFYuuEr+ywqLRcSXxFKz4DCEj+sN94l/XTDiUXYRrsvMpz9WQ==", + "dev": true, + "dependencies": { + "@babel/compat-data": "^7.19.0", + "@babel/helper-compilation-targets": "^7.19.0", + "@babel/helper-plugin-utils": "^7.19.0", + "@babel/helper-validator-option": "^7.18.6", + "@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression": "^7.18.6", + "@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining": "^7.18.9", + "@babel/plugin-proposal-async-generator-functions": "^7.19.0", + "@babel/plugin-proposal-class-properties": "^7.18.6", + "@babel/plugin-proposal-class-static-block": "^7.18.6", + "@babel/plugin-proposal-dynamic-import": "^7.18.6", + "@babel/plugin-proposal-export-namespace-from": "^7.18.9", + "@babel/plugin-proposal-json-strings": "^7.18.6", + "@babel/plugin-proposal-logical-assignment-operators": "^7.18.9", + "@babel/plugin-proposal-nullish-coalescing-operator": "^7.18.6", + "@babel/plugin-proposal-numeric-separator": "^7.18.6", + "@babel/plugin-proposal-object-rest-spread": "^7.18.9", + "@babel/plugin-proposal-optional-catch-binding": "^7.18.6", + "@babel/plugin-proposal-optional-chaining": "^7.18.9", + "@babel/plugin-proposal-private-methods": "^7.18.6", + "@babel/plugin-proposal-private-property-in-object": "^7.18.6", + "@babel/plugin-proposal-unicode-property-regex": "^7.18.6", "@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.18.6", "@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", @@ -14971,47 +15255,51 @@ "@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-top-level-await": "^7.12.13", - "@babel/plugin-transform-arrow-functions": "^7.13.0", - "@babel/plugin-transform-async-to-generator": "^7.13.0", - "@babel/plugin-transform-block-scoped-functions": "^7.12.13", - "@babel/plugin-transform-block-scoping": "^7.12.13", - "@babel/plugin-transform-classes": "^7.13.0", - "@babel/plugin-transform-computed-properties": "^7.13.0", - "@babel/plugin-transform-destructuring": "^7.13.0", - "@babel/plugin-transform-dotall-regex": "^7.12.13", - "@babel/plugin-transform-duplicate-keys": "^7.12.13", - "@babel/plugin-transform-exponentiation-operator": "^7.12.13", - "@babel/plugin-transform-for-of": "^7.13.0", - "@babel/plugin-transform-function-name": "^7.12.13", - "@babel/plugin-transform-literals": "^7.12.13", - "@babel/plugin-transform-member-expression-literals": "^7.12.13", - "@babel/plugin-transform-modules-amd": "^7.13.0", - "@babel/plugin-transform-modules-commonjs": "^7.13.8", - "@babel/plugin-transform-modules-systemjs": "^7.13.8", - "@babel/plugin-transform-modules-umd": "^7.13.0", - "@babel/plugin-transform-named-capturing-groups-regex": "^7.12.13", - "@babel/plugin-transform-new-target": "^7.12.13", - "@babel/plugin-transform-object-super": "^7.12.13", - "@babel/plugin-transform-parameters": "^7.13.0", - "@babel/plugin-transform-property-literals": "^7.12.13", - "@babel/plugin-transform-regenerator": "^7.12.13", - "@babel/plugin-transform-reserved-words": "^7.12.13", - "@babel/plugin-transform-shorthand-properties": "^7.12.13", - "@babel/plugin-transform-spread": "^7.13.0", - "@babel/plugin-transform-sticky-regex": "^7.12.13", - "@babel/plugin-transform-template-literals": "^7.13.0", - "@babel/plugin-transform-typeof-symbol": "^7.12.13", - "@babel/plugin-transform-unicode-escapes": "^7.12.13", - "@babel/plugin-transform-unicode-regex": "^7.12.13", - "@babel/preset-modules": "^0.1.4", - "@babel/types": "^7.13.12", - "babel-plugin-polyfill-corejs2": "^0.1.4", - "babel-plugin-polyfill-corejs3": "^0.1.3", - "babel-plugin-polyfill-regenerator": "^0.1.2", - "core-js-compat": "^3.9.0", + "@babel/plugin-syntax-private-property-in-object": "^7.14.5", + "@babel/plugin-syntax-top-level-await": "^7.14.5", + "@babel/plugin-transform-arrow-functions": "^7.18.6", + "@babel/plugin-transform-async-to-generator": "^7.18.6", + "@babel/plugin-transform-block-scoped-functions": "^7.18.6", + "@babel/plugin-transform-block-scoping": "^7.18.9", + "@babel/plugin-transform-classes": "^7.19.0", + "@babel/plugin-transform-computed-properties": "^7.18.9", + "@babel/plugin-transform-destructuring": "^7.18.13", + "@babel/plugin-transform-dotall-regex": "^7.18.6", + "@babel/plugin-transform-duplicate-keys": "^7.18.9", + "@babel/plugin-transform-exponentiation-operator": "^7.18.6", + "@babel/plugin-transform-for-of": "^7.18.8", + "@babel/plugin-transform-function-name": "^7.18.9", + "@babel/plugin-transform-literals": "^7.18.9", + "@babel/plugin-transform-member-expression-literals": "^7.18.6", + "@babel/plugin-transform-modules-amd": "^7.18.6", + "@babel/plugin-transform-modules-commonjs": "^7.18.6", + "@babel/plugin-transform-modules-systemjs": "^7.19.0", + "@babel/plugin-transform-modules-umd": "^7.18.6", + "@babel/plugin-transform-named-capturing-groups-regex": "^7.19.0", + "@babel/plugin-transform-new-target": "^7.18.6", + "@babel/plugin-transform-object-super": "^7.18.6", + "@babel/plugin-transform-parameters": "^7.18.8", + "@babel/plugin-transform-property-literals": "^7.18.6", + "@babel/plugin-transform-regenerator": "^7.18.6", + "@babel/plugin-transform-reserved-words": "^7.18.6", + "@babel/plugin-transform-shorthand-properties": "^7.18.6", + "@babel/plugin-transform-spread": "^7.19.0", + "@babel/plugin-transform-sticky-regex": "^7.18.6", + "@babel/plugin-transform-template-literals": "^7.18.9", + "@babel/plugin-transform-typeof-symbol": "^7.18.9", + "@babel/plugin-transform-unicode-escapes": "^7.18.10", + "@babel/plugin-transform-unicode-regex": "^7.18.6", + "@babel/preset-modules": "^0.1.5", + "@babel/types": "^7.19.0", + "babel-plugin-polyfill-corejs2": "^0.3.2", + "babel-plugin-polyfill-corejs3": "^0.5.3", + "babel-plugin-polyfill-regenerator": "^0.4.0", + "core-js-compat": "^3.22.1", "semver": "^6.3.0" }, + "engines": { + "node": ">=6.9.0" + }, "peerDependencies": { "@babel/core": "^7.0.0-0" } @@ -15025,8 +15313,9 @@ } }, "node_modules/@babel/preset-modules": { - "version": "0.1.4", - "integrity": "sha512-J36NhwnfdzpmH41M1DrnkkgAqhZaqr/NBdPfQ677mLzlaXo+oDiv1deyCDtgAhz8p328otdob0Du7+xgHGZbKg==", + "version": "0.1.5", + "resolved": "https://registry.npmjs.org/@babel/preset-modules/-/preset-modules-0.1.5.tgz", + "integrity": "sha512-A57th6YRG7oR3cq/yt/Y84MvGgE0eJG2F1JLhKuyG+jFxEgrd/HAMJatiFtmOiZurz+0DkrvbheCLaV5f2JfjA==", "dev": true, "dependencies": { "@babel/helper-plugin-utils": "^7.0.0", @@ -15076,31 +15365,33 @@ } }, "node_modules/@babel/template": { - "version": "7.16.7", - "integrity": "sha512-I8j/x8kHUrbYRTUxXrrMbfCa7jxkE7tZre39x3kjr9hvI82cK1FfqLygotcWN5kdPGWcLdWMHpSBavse5tWw3w==", + "version": "7.18.10", + "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.18.10.tgz", + "integrity": "sha512-TI+rCtooWHr3QJ27kJxfjutghu44DLnasDMwpDqCXVTal9RLp3RSYNh4NdBrRP2cQAoG9A8juOQl6P6oZG4JxA==", "devOptional": true, "dependencies": { - "@babel/code-frame": "^7.16.7", - "@babel/parser": "^7.16.7", - "@babel/types": "^7.16.7" + "@babel/code-frame": "^7.18.6", + "@babel/parser": "^7.18.10", + "@babel/types": "^7.18.10" }, "engines": { "node": ">=6.9.0" } }, "node_modules/@babel/traverse": { - "version": "7.17.3", - "integrity": "sha512-5irClVky7TxRWIRtxlh2WPUUOLhcPN06AGgaQSB8AEwuyEBgJVuJ5imdHm5zxk8w0QS5T+tDfnDxAlhWjpb7cw==", + "version": "7.19.0", + "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.19.0.tgz", + "integrity": "sha512-4pKpFRDh+utd2mbRC8JLnlsMUii3PMHjpL6a0SZ4NMZy7YFP9aXORxEhdMVOc9CpWtDF09IkciQLEhK7Ml7gRA==", "devOptional": true, "dependencies": { - "@babel/code-frame": "^7.16.7", - "@babel/generator": "^7.17.3", - "@babel/helper-environment-visitor": "^7.16.7", - "@babel/helper-function-name": "^7.16.7", - "@babel/helper-hoist-variables": "^7.16.7", - "@babel/helper-split-export-declaration": "^7.16.7", - "@babel/parser": "^7.17.3", - "@babel/types": "^7.17.0", + "@babel/code-frame": "^7.18.6", + "@babel/generator": "^7.19.0", + "@babel/helper-environment-visitor": "^7.18.9", + "@babel/helper-function-name": "^7.19.0", + "@babel/helper-hoist-variables": "^7.18.6", + "@babel/helper-split-export-declaration": "^7.18.6", + "@babel/parser": "^7.19.0", + "@babel/types": "^7.19.0", "debug": "^4.1.0", "globals": "^11.1.0" }, @@ -15109,9 +15400,9 @@ } }, "node_modules/@babel/types": { - "version": "7.18.13", - "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.18.13.tgz", - "integrity": "sha512-ePqfTihzW0W6XAU+aMw2ykilisStJfDnsejDCXRchCcMJ4O0+8DhPXf2YUbZ6wjBlsEmZwLK/sPweWtu8hcJYQ==", + "version": "7.19.0", + "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.19.0.tgz", + "integrity": "sha512-YuGopBq3ke25BVSiS6fgF49Ul9gH1x70Bcr6bqRLjWCkcX8Hre1/5+z+IiWOIerRMSSEfGZVB9z9kyq7wVs9YA==", "dependencies": { "@babel/helper-string-parser": "^7.18.10", "@babel/helper-validator-identifier": "^7.18.6", @@ -15285,9 +15576,9 @@ "integrity": "sha512-6U71C2Wp7r5XtFtQzYrW5iKFT67OixrSxjI4MptCHzdSVlgabczzqLe0ZSgnub/5Kp4hSbpDB1tMytZY9pwxxA==" }, "node_modules/@esbuild/linux-loong64": { - "version": "0.15.3", - "resolved": "https://registry.npmjs.org/@esbuild/linux-loong64/-/linux-loong64-0.15.3.tgz", - "integrity": "sha512-pe7L+LnITFHUSUnuhSQRyYN2E5Anl0r7x/jW+ufc+4fBcaK3Q51b/3ufFWWhmIiuCkr7oKtmVSpaJ1DxbtSfuw==", + "version": "0.15.7", + "resolved": "https://registry.npmjs.org/@esbuild/linux-loong64/-/linux-loong64-0.15.7.tgz", + "integrity": "sha512-IKznSJOsVUuyt7cDzzSZyqBEcZe+7WlBqTVXiF1OXP/4Nm387ToaXZ0fyLwI1iBlI/bzpxVq411QE2/Bt2XWWw==", "cpu": [ "loong64" ], @@ -16790,104 +17081,96 @@ } }, "node_modules/@sentry/browser": { - "version": "6.17.6", - "integrity": "sha512-VUyYBzAferaMg/40hmhEdaLznd3NlT7gkQ0YPHDZdDHMunJVA+413yqCHsRTbzfVxzfmlWQtz5QzPBLQeubdzg==", + "version": "7.12.1", + "resolved": "https://registry.npmjs.org/@sentry/browser/-/browser-7.12.1.tgz", + "integrity": "sha512-pgyL65CrGFLe8sKcEG8KXAuVTE8zkAsyTlv/AuME06cSdxzO/memPK/r3BI6EM7WupIdga+V5tQUldeT1kgHNA==", "dependencies": { - "@sentry/core": "6.17.6", - "@sentry/types": "6.17.6", - "@sentry/utils": "6.17.6", + "@sentry/core": "7.12.1", + "@sentry/types": "7.12.1", + "@sentry/utils": "7.12.1", "tslib": "^1.9.3" }, "engines": { - "node": ">=6" + "node": ">=8" } }, "node_modules/@sentry/core": { - "version": "6.17.6", - "integrity": "sha512-wSNsQSqsW8vQ2HEvUEXYOJnzTyVDSWbyH4RHrWV1pQM8zqGx/qfz0sKFM5XFnE9ZeaXKL8LXV3v5i73v+z8lew==", + "version": "7.12.1", + "resolved": "https://registry.npmjs.org/@sentry/core/-/core-7.12.1.tgz", + "integrity": "sha512-DFHbzHFjukhlkRZ5xzfebx0IBzblW43kmfnalBBq7xEMscUvnhsYnlvL9Y20tuPZ/PrTcq4JAHbFluAvw6M0QQ==", "dependencies": { - "@sentry/hub": "6.17.6", - "@sentry/minimal": "6.17.6", - "@sentry/types": "6.17.6", - "@sentry/utils": "6.17.6", + "@sentry/hub": "7.12.1", + "@sentry/types": "7.12.1", + "@sentry/utils": "7.12.1", "tslib": "^1.9.3" }, "engines": { - "node": ">=6" + "node": ">=8" } }, "node_modules/@sentry/hub": { - "version": "6.17.6", - "integrity": "sha512-Ps9nk+DoFia8jhZ1lucdRE0vDx8hqXOsKXJE8a3hK/Ndki0J9jedYqBeLqSgiFG4qRjXpNFcD6TEM6tnQrv5lw==", - "dependencies": { - "@sentry/types": "6.17.6", - "@sentry/utils": "6.17.6", - "tslib": "^1.9.3" - }, - "engines": { - "node": ">=6" - } - }, - "node_modules/@sentry/minimal": { - "version": "6.17.6", - "integrity": "sha512-PLGf8WlhtdHuY6ofwYR3nyClr/TYHHAW6i0r62OZCOXTqnFPJorZpAz3VCCP2jMJmbgVbo03wN+u/xAA/zwObA==", + "version": "7.12.1", + "resolved": "https://registry.npmjs.org/@sentry/hub/-/hub-7.12.1.tgz", + "integrity": "sha512-KLVnVqXf+CRmXNy9/T8K2/js7QvOQ94xtgP5KnWJbu2rl+JhxnIGiBRF51lPXFIatt7zWwB9qNdMS8lVsvLMGQ==", "dependencies": { - "@sentry/hub": "6.17.6", - "@sentry/types": "6.17.6", + "@sentry/types": "7.12.1", + "@sentry/utils": "7.12.1", "tslib": "^1.9.3" }, "engines": { - "node": ">=6" + "node": ">=8" } }, "node_modules/@sentry/react": { - "version": "6.17.6", - "integrity": "sha512-U8JueVaGnkbOqZvoppmfK/NioflF0cFW0pKIg+dho5S8z5qpS+OTVz+0AJcoioj6ZR2VWFBZuHiGwBMOfvO6RQ==", + "version": "7.12.1", + "resolved": "https://registry.npmjs.org/@sentry/react/-/react-7.12.1.tgz", + "integrity": "sha512-CmdiRzhPpjD29GxlDJs+VIoLlQcKp1BfISQOfPUZNppWbKyRad+J5Z8tgg5MCNPHjQtcOT+0V+MsSdRNqtXg4g==", "dependencies": { - "@sentry/browser": "6.17.6", - "@sentry/minimal": "6.17.6", - "@sentry/types": "6.17.6", - "@sentry/utils": "6.17.6", + "@sentry/browser": "7.12.1", + "@sentry/types": "7.12.1", + "@sentry/utils": "7.12.1", "hoist-non-react-statics": "^3.3.2", "tslib": "^1.9.3" }, "engines": { - "node": ">=6" + "node": ">=8" }, "peerDependencies": { - "react": "15.x || 16.x || 17.x" + "react": "15.x || 16.x || 17.x || 18.x" } }, "node_modules/@sentry/tracing": { - "version": "6.17.6", - "integrity": "sha512-+h5ov+zEm5WH9+vmFfdT4EIqBOW7Tggzh0BDz8QRStRc2JbvEiSZDs+HlsycBwWMQi/ucJs93FPtNnWjW+xvBw==", + "version": "7.12.1", + "resolved": "https://registry.npmjs.org/@sentry/tracing/-/tracing-7.12.1.tgz", + "integrity": "sha512-WnweIt//IqkEkJSjA8DtnIeCdItYIqJSxNQ6qK+r546/ufxRYFBck2fbmM0oKZJVg2evbwhadrBTIUzYkqNj4A==", "dependencies": { - "@sentry/hub": "6.17.6", - "@sentry/minimal": "6.17.6", - "@sentry/types": "6.17.6", - "@sentry/utils": "6.17.6", + "@sentry/hub": "7.12.1", + "@sentry/types": "7.12.1", + "@sentry/utils": "7.12.1", "tslib": "^1.9.3" }, "engines": { - "node": ">=6" + "node": ">=8" } }, "node_modules/@sentry/types": { - "version": "6.17.6", - "integrity": "sha512-peGM873lDJtHd/jwW9Egr/hhxLuF0bcPIf2kMZlvEvW/G5GCbuaCR4ArQJlh7vQyma+NLn/XdojpJkC0TomKrw==", + "version": "7.12.1", + "resolved": "https://registry.npmjs.org/@sentry/types/-/types-7.12.1.tgz", + "integrity": "sha512-VGZs39SZgMcCGv7H0VyFy1LEFGsnFZH590JUopmz6nG63EpeYQ2xzhIoPNAiLKbyUvBEwukn+faCg3u3MGqhgQ==", "engines": { - "node": ">=6" + "node": ">=8" } }, "node_modules/@sentry/utils": { - "version": "6.17.6", - "integrity": "sha512-RI797N8Ax5yuKUftVX6dc0XmXqo5CN7XqJYPFzYC8udutQ4L8ZYadtUcqNsdz1ZQxl+rp0XK9Q6wjoWmsI2RXA==", + "version": "7.12.1", + "resolved": "https://registry.npmjs.org/@sentry/utils/-/utils-7.12.1.tgz", + "integrity": "sha512-Dh8B13pC0u8uLM/zf+oZngyg808c6BDEO94F7H+h3IciCVVd92A0cOQwLGAEdf8srnJgpZJNAlSC8lFDhbFHzQ==", "dependencies": { - "@sentry/types": "6.17.6", + "@sentry/types": "7.12.1", "tslib": "^1.9.3" }, "engines": { - "node": ">=6" + "node": ">=8" } }, "node_modules/@sheerun/mutationobserver-shim": { @@ -18883,6 +19166,7 @@ }, "node_modules/babel-plugin-dynamic-import-node": { "version": "2.3.3", + "resolved": "https://registry.npmjs.org/babel-plugin-dynamic-import-node/-/babel-plugin-dynamic-import-node-2.3.3.tgz", "integrity": "sha512-jZVI+s9Zg3IqA/kdi0i6UDCybUI3aSBLnglhYbSSjKlV7yF1F/5LWv8MakQmvYpnbJDS6fcBL2KzHSxNCMtWSQ==", "dev": true, "dependencies": { @@ -19018,12 +19302,13 @@ } }, "node_modules/babel-plugin-polyfill-corejs2": { - "version": "0.1.10", - "integrity": "sha512-DO95wD4g0A8KRaHKi0D51NdGXzvpqVLnLu5BTvDlpqUEpTmeEtypgC1xqesORaWmiUOQI14UHKlzNd9iZ2G3ZA==", + "version": "0.3.2", + "resolved": "https://registry.npmjs.org/babel-plugin-polyfill-corejs2/-/babel-plugin-polyfill-corejs2-0.3.2.tgz", + "integrity": "sha512-LPnodUl3lS0/4wN3Rb+m+UK8s7lj2jcLRrjho4gLw+OJs+I4bvGXshINesY5xx/apM+biTnQ9reDI8yj+0M5+Q==", "dev": true, "dependencies": { - "@babel/compat-data": "^7.13.0", - "@babel/helper-define-polyfill-provider": "^0.1.5", + "@babel/compat-data": "^7.17.7", + "@babel/helper-define-polyfill-provider": "^0.3.2", "semver": "^6.1.1" }, "peerDependencies": { @@ -19032,6 +19317,7 @@ }, "node_modules/babel-plugin-polyfill-corejs2/node_modules/semver": { "version": "6.3.0", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==", "dev": true, "bin": { @@ -19039,23 +19325,25 @@ } }, "node_modules/babel-plugin-polyfill-corejs3": { - "version": "0.1.7", - "integrity": "sha512-u+gbS9bbPhZWEeyy1oR/YaaSpod/KDT07arZHb80aTpl8H5ZBq+uN1nN9/xtX7jQyfLdPfoqI4Rue/MQSWJquw==", + "version": "0.5.3", + "resolved": "https://registry.npmjs.org/babel-plugin-polyfill-corejs3/-/babel-plugin-polyfill-corejs3-0.5.3.tgz", + "integrity": "sha512-zKsXDh0XjnrUEW0mxIHLfjBfnXSMr5Q/goMe/fxpQnLm07mcOZiIZHBNWCMx60HmdvjxfXcalac0tfFg0wqxyw==", "dev": true, "dependencies": { - "@babel/helper-define-polyfill-provider": "^0.1.5", - "core-js-compat": "^3.8.1" + "@babel/helper-define-polyfill-provider": "^0.3.2", + "core-js-compat": "^3.21.0" }, "peerDependencies": { "@babel/core": "^7.0.0-0" } }, "node_modules/babel-plugin-polyfill-regenerator": { - "version": "0.1.6", - "integrity": "sha512-OUrYG9iKPKz8NxswXbRAdSwF0GhRdIEMTloQATJi4bDuFqrXaXcCUT/VGNrr8pBcjMh1RxZ7Xt9cytVJTJfvMg==", + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/babel-plugin-polyfill-regenerator/-/babel-plugin-polyfill-regenerator-0.4.0.tgz", + "integrity": "sha512-RW1cnryiADFeHmfLS+WW/G431p1PsW5qdRdz0SDRi7TKcUgc7Oh/uXkT7MZ/+tGsT1BkczEAmD5XjUyJ5SWDTw==", "dev": true, "dependencies": { - "@babel/helper-define-polyfill-provider": "^0.1.5" + "@babel/helper-define-polyfill-provider": "^0.3.2" }, "peerDependencies": { "@babel/core": "^7.0.0-0" @@ -19277,24 +19565,30 @@ "dev": true }, "node_modules/browserslist": { - "version": "4.19.1", - "integrity": "sha512-u2tbbG5PdKRTUoctO3NBD8FQ5HdPh1ZXPHzp1rwaa5jTc+RV9/+RlWiAIKmjRPQF+xbGM9Kklj5bZQFa2s/38A==", + "version": "4.21.3", + "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.21.3.tgz", + "integrity": "sha512-898rgRXLAyRkM1GryrrBHGkqA5hlpkV5MhtZwg9QXeiyLUYs2k00Un05aX5l2/yJIOObYKOpS2JNo8nJDE7fWQ==", + "funding": [ + { + "type": "opencollective", + "url": "https://opencollective.com/browserslist" + }, + { + "type": "tidelift", + "url": "https://tidelift.com/funding/github/npm/browserslist" + } + ], "dependencies": { - "caniuse-lite": "^1.0.30001286", - "electron-to-chromium": "^1.4.17", - "escalade": "^3.1.1", - "node-releases": "^2.0.1", - "picocolors": "^1.0.0" + "caniuse-lite": "^1.0.30001370", + "electron-to-chromium": "^1.4.202", + "node-releases": "^2.0.6", + "update-browserslist-db": "^1.0.5" }, "bin": { "browserslist": "cli.js" }, "engines": { "node": "^6 || ^7 || ^8 || ^9 || ^10 || ^11 || ^12 || >=13.7" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/browserslist" } }, "node_modules/bser": { @@ -19398,12 +19692,19 @@ } }, "node_modules/caniuse-lite": { - "version": "1.0.30001301", - "integrity": "sha512-csfD/GpHMqgEL3V3uIgosvh+SVIQvCh43SNu9HRbP1lnxkKm1kjDG4f32PP571JplkLjfS+mg2p1gxR7MYrrIA==", - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/browserslist" - } + "version": "1.0.30001393", + "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001393.tgz", + "integrity": "sha512-N/od11RX+Gsk+1qY/jbPa0R6zJupEa0lxeBG598EbrtblxVCTJsQwbRBm6+V+rxpc5lHKdsXb9RY83cZIPLseA==", + "funding": [ + { + "type": "opencollective", + "url": "https://opencollective.com/browserslist" + }, + { + "type": "tidelift", + "url": "https://tidelift.com/funding/github/npm/caniuse-lite" + } + ] }, "node_modules/caseless": { "version": "0.12.0", @@ -19848,26 +20149,18 @@ } }, "node_modules/core-js-compat": { - "version": "3.20.3", - "integrity": "sha512-c8M5h0IkNZ+I92QhIpuSijOxGAcj3lgpsWdkCqmUTZNwidujF4r3pi6x1DCN+Vcs5qTS2XWWMfWSuCqyupX8gw==", + "version": "3.25.1", + "resolved": "https://registry.npmjs.org/core-js-compat/-/core-js-compat-3.25.1.tgz", + "integrity": "sha512-pOHS7O0i8Qt4zlPW/eIFjwp+NrTPx+wTL0ctgI2fHn31sZOq89rDsmtc/A2vAX7r6shl+bmVI+678He46jgBlw==", "dev": true, "dependencies": { - "browserslist": "^4.19.1", - "semver": "7.0.0" + "browserslist": "^4.21.3" }, "funding": { "type": "opencollective", "url": "https://opencollective.com/core-js" } }, - "node_modules/core-js-compat/node_modules/semver": { - "version": "7.0.0", - "integrity": "sha512-+GB6zVA9LWh6zovYQLALHwv5rb2PHGlJi3lfiqIHxR0uuwCgefcOJc59v9fv1w8GbStwxuuqqAjI9NMAOOgq1A==", - "dev": true, - "bin": { - "semver": "bin/semver.js" - } - }, "node_modules/core-js-pure": { "version": "3.10.0", "integrity": "sha512-CC582enhrFZStO4F8lGI7QL3SYx7/AIRc+IdSi3btrQGrVsTawo5K/crmKbRrQ+MOMhNX4v+PATn0k2NN6wI7A==", @@ -20637,8 +20930,9 @@ "dev": true }, "node_modules/electron-to-chromium": { - "version": "1.4.51", - "integrity": "sha512-JNEmcYl3mk1tGQmy0EvL5eik/CKSBuzAyGP0QFdG6LIgxQe3II0BL1m2zKc2MZMf3uGqHWE1TFddJML0RpjSHQ==" + "version": "1.4.244", + "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.4.244.tgz", + "integrity": "sha512-E21saXLt2eTDaTxgUtiJtBUqanF9A32wZasAwDZ8gvrqXoxrBrbwtDCx7c/PQTLp81wj4X0OLDeoGQg7eMo3+w==" }, "node_modules/emittery": { "version": "0.8.1", @@ -20818,9 +21112,9 @@ } }, "node_modules/esbuild": { - "version": "0.15.3", - "resolved": "https://registry.npmjs.org/esbuild/-/esbuild-0.15.3.tgz", - "integrity": "sha512-D1qLizJTYlGIOK5m/1ckH8vR2U573eLMMA57qvWg/9jj8jPIhjpafv4kxb6ra2eeTlVq8tISxjsyRKbTaeF6PA==", + "version": "0.15.7", + "resolved": "https://registry.npmjs.org/esbuild/-/esbuild-0.15.7.tgz", + "integrity": "sha512-7V8tzllIbAQV1M4QoE52ImKu8hT/NLGlGXkiDsbEU5PS6K8Mn09ZnYoS+dcmHxOS9CRsV4IRAMdT3I67IyUNXw==", "dev": true, "hasInstallScript": true, "bin": { @@ -20830,33 +21124,33 @@ "node": ">=12" }, "optionalDependencies": { - "@esbuild/linux-loong64": "0.15.3", - "esbuild-android-64": "0.15.3", - "esbuild-android-arm64": "0.15.3", - "esbuild-darwin-64": "0.15.3", - "esbuild-darwin-arm64": "0.15.3", - "esbuild-freebsd-64": "0.15.3", - "esbuild-freebsd-arm64": "0.15.3", - "esbuild-linux-32": "0.15.3", - "esbuild-linux-64": "0.15.3", - "esbuild-linux-arm": "0.15.3", - "esbuild-linux-arm64": "0.15.3", - "esbuild-linux-mips64le": "0.15.3", - "esbuild-linux-ppc64le": "0.15.3", - "esbuild-linux-riscv64": "0.15.3", - "esbuild-linux-s390x": "0.15.3", - "esbuild-netbsd-64": "0.15.3", - "esbuild-openbsd-64": "0.15.3", - "esbuild-sunos-64": "0.15.3", - "esbuild-windows-32": "0.15.3", - "esbuild-windows-64": "0.15.3", - "esbuild-windows-arm64": "0.15.3" + "@esbuild/linux-loong64": "0.15.7", + "esbuild-android-64": "0.15.7", + "esbuild-android-arm64": "0.15.7", + "esbuild-darwin-64": "0.15.7", + "esbuild-darwin-arm64": "0.15.7", + "esbuild-freebsd-64": "0.15.7", + "esbuild-freebsd-arm64": "0.15.7", + "esbuild-linux-32": "0.15.7", + "esbuild-linux-64": "0.15.7", + "esbuild-linux-arm": "0.15.7", + "esbuild-linux-arm64": "0.15.7", + "esbuild-linux-mips64le": "0.15.7", + "esbuild-linux-ppc64le": "0.15.7", + "esbuild-linux-riscv64": "0.15.7", + "esbuild-linux-s390x": "0.15.7", + "esbuild-netbsd-64": "0.15.7", + "esbuild-openbsd-64": "0.15.7", + "esbuild-sunos-64": "0.15.7", + "esbuild-windows-32": "0.15.7", + "esbuild-windows-64": "0.15.7", + "esbuild-windows-arm64": "0.15.7" } }, "node_modules/esbuild-android-64": { - "version": "0.15.3", - "resolved": "https://registry.npmjs.org/esbuild-android-64/-/esbuild-android-64-0.15.3.tgz", - "integrity": "sha512-sHGQ50Bb80ow+DZ8s6mabWn/j+vgfsNDMhipv4v410O++C6gpEcR9A5jR9bTkMsVbr46Id0MMhUGpBasq8H92A==", + "version": "0.15.7", + "resolved": "https://registry.npmjs.org/esbuild-android-64/-/esbuild-android-64-0.15.7.tgz", + "integrity": "sha512-p7rCvdsldhxQr3YHxptf1Jcd86dlhvc3EQmQJaZzzuAxefO9PvcI0GLOa5nCWem1AJ8iMRu9w0r5TG8pHmbi9w==", "cpu": [ "x64" ], @@ -20870,9 +21164,9 @@ } }, "node_modules/esbuild-android-arm64": { - "version": "0.15.3", - "resolved": "https://registry.npmjs.org/esbuild-android-arm64/-/esbuild-android-arm64-0.15.3.tgz", - "integrity": "sha512-+Oiwzgp7HTyeNkgpQySGLCq3zFmvVVyBiNz8bO+7Tc6tlnxSYf8jjQBThRTUsy6vrrjG91h9vZNlYkiikzzWUg==", + "version": "0.15.7", + "resolved": "https://registry.npmjs.org/esbuild-android-arm64/-/esbuild-android-arm64-0.15.7.tgz", + "integrity": "sha512-L775l9ynJT7rVqRM5vo+9w5g2ysbOCfsdLV4CWanTZ1k/9Jb3IYlQ06VCI1edhcosTYJRECQFJa3eAvkx72eyQ==", "cpu": [ "arm64" ], @@ -20886,9 +21180,9 @@ } }, "node_modules/esbuild-darwin-64": { - "version": "0.15.3", - "resolved": "https://registry.npmjs.org/esbuild-darwin-64/-/esbuild-darwin-64-0.15.3.tgz", - "integrity": "sha512-n2BkxzCPHv6OOOs9gxp4AYsccawuw9bDeW9rpSASHao0zQ/u0kP6bjD4ATf2G4A3cml8HGwp18aROl4ws+4Ytg==", + "version": "0.15.7", + "resolved": "https://registry.npmjs.org/esbuild-darwin-64/-/esbuild-darwin-64-0.15.7.tgz", + "integrity": "sha512-KGPt3r1c9ww009t2xLB6Vk0YyNOXh7hbjZ3EecHoVDxgtbUlYstMPDaReimKe6eOEfyY4hBEEeTvKwPsiH5WZg==", "cpu": [ "x64" ], @@ -20902,9 +21196,9 @@ } }, "node_modules/esbuild-darwin-arm64": { - "version": "0.15.3", - "resolved": "https://registry.npmjs.org/esbuild-darwin-arm64/-/esbuild-darwin-arm64-0.15.3.tgz", - "integrity": "sha512-fSk5M1vQ+y48csVJ4QxweT//DdDytDAb0AvU1gYITqZGA1kL1/i4C5fjKDNZMjB7dkg2a+rfkMyrpZUli+To/w==", + "version": "0.15.7", + "resolved": "https://registry.npmjs.org/esbuild-darwin-arm64/-/esbuild-darwin-arm64-0.15.7.tgz", + "integrity": "sha512-kBIHvtVqbSGajN88lYMnR3aIleH3ABZLLFLxwL2stiuIGAjGlQW741NxVTpUHQXUmPzxi6POqc9npkXa8AcSZQ==", "cpu": [ "arm64" ], @@ -20918,9 +21212,9 @@ } }, "node_modules/esbuild-freebsd-64": { - "version": "0.15.3", - "resolved": "https://registry.npmjs.org/esbuild-freebsd-64/-/esbuild-freebsd-64-0.15.3.tgz", - "integrity": "sha512-b21XfM0Wrxu0CzFQN7B4xuAMGUNLT3F3J2NMeLxbUq6lcl2N3Isho1q2AF5bOCpCXVM04k1+PgoQLwNzGYtnjw==", + "version": "0.15.7", + "resolved": "https://registry.npmjs.org/esbuild-freebsd-64/-/esbuild-freebsd-64-0.15.7.tgz", + "integrity": "sha512-hESZB91qDLV5MEwNxzMxPfbjAhOmtfsr9Wnuci7pY6TtEh4UDuevmGmkUIjX/b+e/k4tcNBMf7SRQ2mdNuK/HQ==", "cpu": [ "x64" ], @@ -20934,9 +21228,9 @@ } }, "node_modules/esbuild-freebsd-arm64": { - "version": "0.15.3", - "resolved": "https://registry.npmjs.org/esbuild-freebsd-arm64/-/esbuild-freebsd-arm64-0.15.3.tgz", - "integrity": "sha512-E0LkWSz7Ch1B2WFXbGvfN3q9uUlQCahBi3S7wTSJO2T41x0BPnIFHw79/RuGKVyA17mX/I7RVOSRnrla2D4tag==", + "version": "0.15.7", + "resolved": "https://registry.npmjs.org/esbuild-freebsd-arm64/-/esbuild-freebsd-arm64-0.15.7.tgz", + "integrity": "sha512-dLFR0ChH5t+b3J8w0fVKGvtwSLWCv7GYT2Y2jFGulF1L5HftQLzVGN+6pi1SivuiVSmTh28FwUhi9PwQicXI6Q==", "cpu": [ "arm64" ], @@ -20950,9 +21244,9 @@ } }, "node_modules/esbuild-linux-32": { - "version": "0.15.3", - "resolved": "https://registry.npmjs.org/esbuild-linux-32/-/esbuild-linux-32-0.15.3.tgz", - "integrity": "sha512-af7BhXXKwzXL83bfJX8vkxsyDbOr9T5auxyBJnBfkd2w7VwXC1heDT2TQ1cWCWyjqVatyKudW5RCSAySDKDW2Q==", + "version": "0.15.7", + "resolved": "https://registry.npmjs.org/esbuild-linux-32/-/esbuild-linux-32-0.15.7.tgz", + "integrity": "sha512-v3gT/LsONGUZcjbt2swrMjwxo32NJzk+7sAgtxhGx1+ZmOFaTRXBAi1PPfgpeo/J//Un2jIKm/I+qqeo4caJvg==", "cpu": [ "ia32" ], @@ -20966,9 +21260,9 @@ } }, "node_modules/esbuild-linux-64": { - "version": "0.15.3", - "resolved": "https://registry.npmjs.org/esbuild-linux-64/-/esbuild-linux-64-0.15.3.tgz", - "integrity": "sha512-Wwq+5ZF2IPE/6W2kJLPnh7eXqtz5XtdPBRB77nhm02my6PsZR3aa/q/fRkJhwO6ExM+t9l3kFhWL4pMwk3wREA==", + "version": "0.15.7", + "resolved": "https://registry.npmjs.org/esbuild-linux-64/-/esbuild-linux-64-0.15.7.tgz", + "integrity": "sha512-LxXEfLAKwOVmm1yecpMmWERBshl+Kv5YJ/1KnyAr6HRHFW8cxOEsEfisD3sVl/RvHyW//lhYUVSuy9jGEfIRAQ==", "cpu": [ "x64" ], @@ -20982,9 +21276,9 @@ } }, "node_modules/esbuild-linux-arm": { - "version": "0.15.3", - "resolved": "https://registry.npmjs.org/esbuild-linux-arm/-/esbuild-linux-arm-0.15.3.tgz", - "integrity": "sha512-88ycpH4GrbOzaZIIXIzljbeCUkzoaJ5luP6+LATa5hk/Wl+OHkAieDfjAHdH8KuHkGYTojKE1npQq9gll9efUA==", + "version": "0.15.7", + "resolved": "https://registry.npmjs.org/esbuild-linux-arm/-/esbuild-linux-arm-0.15.7.tgz", + "integrity": "sha512-JKgAHtMR5f75wJTeuNQbyznZZa+pjiUHV7sRZp42UNdyXC6TiUYMW/8z8yIBAr2Fpad8hM1royZKQisqPABPvQ==", "cpu": [ "arm" ], @@ -20998,9 +21292,9 @@ } }, "node_modules/esbuild-linux-arm64": { - "version": "0.15.3", - "resolved": "https://registry.npmjs.org/esbuild-linux-arm64/-/esbuild-linux-arm64-0.15.3.tgz", - "integrity": "sha512-qNvYyYjNm4JPXJcCJv7gXEnyqw2k9W+SeYMoG7RiwWHWv1cMX6xlxPLGz5yIxjH9+VBXkA1nrY/YohaiKq2O3g==", + "version": "0.15.7", + "resolved": "https://registry.npmjs.org/esbuild-linux-arm64/-/esbuild-linux-arm64-0.15.7.tgz", + "integrity": "sha512-P3cfhudpzWDkglutWgXcT2S7Ft7o2e3YDMrP1n0z2dlbUZghUkKCyaWw0zhp4KxEEzt/E7lmrtRu/pGWnwb9vw==", "cpu": [ "arm64" ], @@ -21014,9 +21308,9 @@ } }, "node_modules/esbuild-linux-mips64le": { - "version": "0.15.3", - "resolved": "https://registry.npmjs.org/esbuild-linux-mips64le/-/esbuild-linux-mips64le-0.15.3.tgz", - "integrity": "sha512-t5TXW6Cw8S9Lts7SDZ8rlx/dqPJx8hndYKL6xEgA2vdlrE60eIYTAYWJqsGN0dgePtFC1RPyH6To15l7s9WdYA==", + "version": "0.15.7", + "resolved": "https://registry.npmjs.org/esbuild-linux-mips64le/-/esbuild-linux-mips64le-0.15.7.tgz", + "integrity": "sha512-T7XKuxl0VpeFLCJXub6U+iybiqh0kM/bWOTb4qcPyDDwNVhLUiPcGdG2/0S7F93czUZOKP57YiLV8YQewgLHKw==", "cpu": [ "mips64el" ], @@ -21030,9 +21324,9 @@ } }, "node_modules/esbuild-linux-ppc64le": { - "version": "0.15.3", - "resolved": "https://registry.npmjs.org/esbuild-linux-ppc64le/-/esbuild-linux-ppc64le-0.15.3.tgz", - "integrity": "sha512-TXxPgEWOPCY4F6ZMf7+915+H0eOB6AlcZBwjeBs+78ULpzvcmMzZ2ujF2IejKZXYWuMTORPNoG+MuVGBuyUysA==", + "version": "0.15.7", + "resolved": "https://registry.npmjs.org/esbuild-linux-ppc64le/-/esbuild-linux-ppc64le-0.15.7.tgz", + "integrity": "sha512-6mGuC19WpFN7NYbecMIJjeQgvDb5aMuvyk0PDYBJrqAEMkTwg3Z98kEKuCm6THHRnrgsdr7bp4SruSAxEM4eJw==", "cpu": [ "ppc64" ], @@ -21046,9 +21340,9 @@ } }, "node_modules/esbuild-linux-riscv64": { - "version": "0.15.3", - "resolved": "https://registry.npmjs.org/esbuild-linux-riscv64/-/esbuild-linux-riscv64-0.15.3.tgz", - "integrity": "sha512-04tvrbHA83N+tg+qQeJmUQ3jWStUP7+rw+v/l2h3PsNGbcH3WmsgR0Tf0e1ext09asV4x2PX2b2Nm/gBIOrpqg==", + "version": "0.15.7", + "resolved": "https://registry.npmjs.org/esbuild-linux-riscv64/-/esbuild-linux-riscv64-0.15.7.tgz", + "integrity": "sha512-uUJsezbswAYo/X7OU/P+PuL/EI9WzxsEQXDekfwpQ23uGiooxqoLFAPmXPcRAt941vjlY9jtITEEikWMBr+F/g==", "cpu": [ "riscv64" ], @@ -21062,9 +21356,9 @@ } }, "node_modules/esbuild-linux-s390x": { - "version": "0.15.3", - "resolved": "https://registry.npmjs.org/esbuild-linux-s390x/-/esbuild-linux-s390x-0.15.3.tgz", - "integrity": "sha512-LHxnvvFMhA/uy9CSrnlCtPZnTfWahR9NPLKwXBgfg16YqpKbRHty+mek1o7l+2G5qLeFEEvhB0a7c+hYgbW/3w==", + "version": "0.15.7", + "resolved": "https://registry.npmjs.org/esbuild-linux-s390x/-/esbuild-linux-s390x-0.15.7.tgz", + "integrity": "sha512-+tO+xOyTNMc34rXlSxK7aCwJgvQyffqEM5MMdNDEeMU3ss0S6wKvbBOQfgd5jRPblfwJ6b+bKiz0g5nABpY0QQ==", "cpu": [ "s390x" ], @@ -21078,9 +21372,9 @@ } }, "node_modules/esbuild-netbsd-64": { - "version": "0.15.3", - "resolved": "https://registry.npmjs.org/esbuild-netbsd-64/-/esbuild-netbsd-64-0.15.3.tgz", - "integrity": "sha512-8W0UxNuNsgBBa1SLjwqbbDLJF9mf+lvytaYPt5kXbBrz0DI4mKYFlujLQrxLKh8tvs2zRdFNy9HVqmMdbZ1OIQ==", + "version": "0.15.7", + "resolved": "https://registry.npmjs.org/esbuild-netbsd-64/-/esbuild-netbsd-64-0.15.7.tgz", + "integrity": "sha512-yVc4Wz+Pu3cP5hzm5kIygNPrjar/v5WCSoRmIjCPWfBVJkZNb5brEGKUlf+0Y759D48BCWa0WHrWXaNy0DULTQ==", "cpu": [ "x64" ], @@ -21094,9 +21388,9 @@ } }, "node_modules/esbuild-openbsd-64": { - "version": "0.15.3", - "resolved": "https://registry.npmjs.org/esbuild-openbsd-64/-/esbuild-openbsd-64-0.15.3.tgz", - "integrity": "sha512-QL7xYQ4noukuqh8UGnsrk1m+ShPMYIXjOnAQl3siA7VV6cjuUoCxx6cThgcUDzih8iL5u2xgsGRhsviQIMsUuA==", + "version": "0.15.7", + "resolved": "https://registry.npmjs.org/esbuild-openbsd-64/-/esbuild-openbsd-64-0.15.7.tgz", + "integrity": "sha512-GsimbwC4FSR4lN3wf8XmTQ+r8/0YSQo21rWDL0XFFhLHKlzEA4SsT1Tl8bPYu00IU6UWSJ+b3fG/8SB69rcuEQ==", "cpu": [ "x64" ], @@ -21110,9 +21404,9 @@ } }, "node_modules/esbuild-sunos-64": { - "version": "0.15.3", - "resolved": "https://registry.npmjs.org/esbuild-sunos-64/-/esbuild-sunos-64-0.15.3.tgz", - "integrity": "sha512-vID32ZCZahWDqlEoq9W7OAZDtofAY8aW0V58V5l+kXEvaKvR0m99FLNRuGGY3IDNwjUoOkvoFiMMiy+ONnN7GA==", + "version": "0.15.7", + "resolved": "https://registry.npmjs.org/esbuild-sunos-64/-/esbuild-sunos-64-0.15.7.tgz", + "integrity": "sha512-8CDI1aL/ts0mDGbWzjEOGKXnU7p3rDzggHSBtVryQzkSOsjCHRVe0iFYUuhczlxU1R3LN/E7HgUO4NXzGGP/Ag==", "cpu": [ "x64" ], @@ -21126,9 +21420,9 @@ } }, "node_modules/esbuild-windows-32": { - "version": "0.15.3", - "resolved": "https://registry.npmjs.org/esbuild-windows-32/-/esbuild-windows-32-0.15.3.tgz", - "integrity": "sha512-dnrlwu6T85QU9fO0a35HAzgAXm3vVqg+3Kr9EXkmnf5PHv9t7hT/EYW6g/8YYu91DDyGTk9JSyN32YzQ3OS9Lw==", + "version": "0.15.7", + "resolved": "https://registry.npmjs.org/esbuild-windows-32/-/esbuild-windows-32-0.15.7.tgz", + "integrity": "sha512-cOnKXUEPS8EGCzRSFa1x6NQjGhGsFlVgjhqGEbLTPsA7x4RRYiy2RKoArNUU4iR2vHmzqS5Gr84MEumO/wxYKA==", "cpu": [ "ia32" ], @@ -21142,9 +21436,9 @@ } }, "node_modules/esbuild-windows-64": { - "version": "0.15.3", - "resolved": "https://registry.npmjs.org/esbuild-windows-64/-/esbuild-windows-64-0.15.3.tgz", - "integrity": "sha512-HUSlVCpTtOnIKeIn05zz0McNCfZhnu5UgUypmpNrv4Ff1XTvl6vBpQwIZ49eIAkY9zI6oe1Mu6N5ZG7u6X4s7A==", + "version": "0.15.7", + "resolved": "https://registry.npmjs.org/esbuild-windows-64/-/esbuild-windows-64-0.15.7.tgz", + "integrity": "sha512-7MI08Ec2sTIDv+zH6StNBKO+2hGUYIT42GmFyW6MBBWWtJhTcQLinKS6ldIN1d52MXIbiJ6nXyCJ+LpL4jBm3Q==", "cpu": [ "x64" ], @@ -21158,9 +21452,9 @@ } }, "node_modules/esbuild-windows-arm64": { - "version": "0.15.3", - "resolved": "https://registry.npmjs.org/esbuild-windows-arm64/-/esbuild-windows-arm64-0.15.3.tgz", - "integrity": "sha512-sk6fVXCzGB0uW089+8LdeanZkQUZ+3/xdbWshgLGRawV0NyjSFH4sZPIy+DJnhEnT0pPt1DabZtqrq2DT0FWNw==", + "version": "0.15.7", + "resolved": "https://registry.npmjs.org/esbuild-windows-arm64/-/esbuild-windows-arm64-0.15.7.tgz", + "integrity": "sha512-R06nmqBlWjKHddhRJYlqDd3Fabx9LFdKcjoOy08YLimwmsswlFBJV4rXzZCxz/b7ZJXvrZgj8DDv1ewE9+StMw==", "cpu": [ "arm64" ], @@ -23482,6 +23776,14 @@ "node": ">= 6" } }, + "node_modules/html-parse-stringify": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/html-parse-stringify/-/html-parse-stringify-3.0.1.tgz", + "integrity": "sha512-KknJ50kTInJ7qIScF3jeaFRpMpE8/lfiTdzf/twXyPBLAGrLRTmkz3AdTnKeh40X8k9L2fdYwEp/42WGXIRGcg==", + "dependencies": { + "void-elements": "3.1.0" + } + }, "node_modules/html-webpack-plugin": { "version": "5.3.2", "integrity": "sha512-HvB33boVNCz2lTyBsSiMffsJ+m0YLIQ+pskblXgN9fnjS1BgEcuAfdInfXfGrkdXV406k9FiDi86eVCDBgJOyQ==", @@ -23752,6 +24054,66 @@ "node": ">=10.17.0" } }, + "node_modules/i18next": { + "version": "21.8.14", + "resolved": "https://registry.npmjs.org/i18next/-/i18next-21.8.14.tgz", + "integrity": "sha512-4Yi+DtexvMm/Yw3Q9fllzY12SgLk+Mcmar+rCAccsOPul/2UmnBzoHbTGn/L48IPkFcmrNaH7xTLboBWIbH6pw==", + "funding": [ + { + "type": "individual", + "url": "https://locize.com" + }, + { + "type": "individual", + "url": "https://locize.com/i18next.html" + }, + { + "type": "individual", + "url": "https://www.i18next.com/how-to/faq#i18next-is-awesome.-how-can-i-support-the-project" + } + ], + "dependencies": { + "@babel/runtime": "^7.17.2" + } + }, + "node_modules/i18next-browser-languagedetector": { + "version": "6.1.4", + "resolved": "https://registry.npmjs.org/i18next-browser-languagedetector/-/i18next-browser-languagedetector-6.1.4.tgz", + "integrity": "sha512-wukWnFeU7rKIWT66VU5i8I+3Zc4wReGcuDK2+kuFhtoxBRGWGdvYI9UQmqNL/yQH1KogWwh+xGEaIPH8V/i2Zg==", + "dependencies": { + "@babel/runtime": "^7.14.6" + } + }, + "node_modules/i18next-browser-languagedetector/node_modules/@babel/runtime": { + "version": "7.18.9", + "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.18.9.tgz", + "integrity": "sha512-lkqXDcvlFT5rvEjiu6+QYO+1GXrEHRo2LOtS7E4GtX5ESIZOgepqsZBVIj6Pv+a6zqsya9VCgiK1KAK4BvJDAw==", + "dependencies": { + "regenerator-runtime": "^0.13.4" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/i18next-http-backend": { + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/i18next-http-backend/-/i18next-http-backend-1.4.1.tgz", + "integrity": "sha512-s4Q9hK2jS29iyhniMP82z+yYY8riGTrWbnyvsSzi5TaF7Le4E7b5deTmtuaRuab9fdDcYXtcwdBgawZG+JCEjA==", + "dependencies": { + "cross-fetch": "3.1.5" + } + }, + "node_modules/i18next/node_modules/@babel/runtime": { + "version": "7.18.9", + "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.18.9.tgz", + "integrity": "sha512-lkqXDcvlFT5rvEjiu6+QYO+1GXrEHRo2LOtS7E4GtX5ESIZOgepqsZBVIj6Pv+a6zqsya9VCgiK1KAK4BvJDAw==", + "dependencies": { + "regenerator-runtime": "^0.13.4" + }, + "engines": { + "node": ">=6.9.0" + } + }, "node_modules/iconv-lite": { "version": "0.4.24", "integrity": "sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA==", @@ -28452,9 +28814,9 @@ } }, "node_modules/moment-timezone": { - "version": "0.5.34", - "resolved": "https://registry.npmjs.org/moment-timezone/-/moment-timezone-0.5.34.tgz", - "integrity": "sha512-3zAEHh2hKUs3EXLESx/wsgw6IQdusOT8Bxm3D9UrHPQR7zlMmzwybC8zHEM1tQ4LJwP7fcxrWr8tuBg05fFCbg==", + "version": "0.5.37", + "resolved": "https://registry.npmjs.org/moment-timezone/-/moment-timezone-0.5.37.tgz", + "integrity": "sha512-uEDzDNFhfaywRl+vwXxffjjq1q0Vzr+fcQpQ1bU0kbzorfS7zVtZnCnGc8mhWmF39d4g4YriF6kwA75mJKE/Zg==", "dependencies": { "moment": ">= 2.9.0" }, @@ -28610,8 +28972,9 @@ "dev": true }, "node_modules/node-releases": { - "version": "2.0.1", - "integrity": "sha512-CqyzN6z7Q6aMeF/ktcMVTzhAHCEpf8SOarwpzpf8pNBY2k5/oM34UHldUwp8VKI7uxct2HxSRdJjBaZeESzcxA==" + "version": "2.0.6", + "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-2.0.6.tgz", + "integrity": "sha512-PiVXnNuFm5+iYkLBNeq5211hvO38y63T0i2KKh2KnUs3RpzJ+JtODFjkD8yjLwnDkTYF1eKXheUwdssR+NRZdg==" }, "node_modules/node-sass": { "version": "4.14.1", @@ -30065,6 +30428,38 @@ "react-dom": ">=16.8.1" } }, + "node_modules/react-i18next": { + "version": "11.18.3", + "resolved": "https://registry.npmjs.org/react-i18next/-/react-i18next-11.18.3.tgz", + "integrity": "sha512-EttTX31HbqzZymUM3SIrMPuvamfSXFZVsDHm/ZAqoDfTLjhzlwyxqfbDNxcKNAGOi2mjZaXfR7hSNMlvLNpB/g==", + "dependencies": { + "@babel/runtime": "^7.14.5", + "html-parse-stringify": "^3.0.1" + }, + "peerDependencies": { + "i18next": ">= 19.0.0", + "react": ">= 16.8.0" + }, + "peerDependenciesMeta": { + "react-dom": { + "optional": true + }, + "react-native": { + "optional": true + } + } + }, + "node_modules/react-i18next/node_modules/@babel/runtime": { + "version": "7.18.9", + "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.18.9.tgz", + "integrity": "sha512-lkqXDcvlFT5rvEjiu6+QYO+1GXrEHRo2LOtS7E4GtX5ESIZOgepqsZBVIj6Pv+a6zqsya9VCgiK1KAK4BvJDAw==", + "dependencies": { + "regenerator-runtime": "^0.13.4" + }, + "engines": { + "node": ">=6.9.0" + } + }, "node_modules/react-input-autosize": { "version": "3.0.0", "integrity": "sha512-nL9uS7jEs/zu8sqwFE5MAPx6pPkNAriACQ2rGLlqmKr2sPGtN7TXTyDdQt4lbNXVx7Uzadb40x8qotIuru6Rhg==", @@ -30719,15 +31114,17 @@ }, "node_modules/regenerate": { "version": "1.4.2", + "resolved": "https://registry.npmjs.org/regenerate/-/regenerate-1.4.2.tgz", "integrity": "sha512-zrceR/XhGYU/d/opr2EKO7aRHUeiBI8qjtfHqADTwZd6Szfy16la6kqD0MIUs5z5hx6AaKa+PixpPrR289+I0A==", "dev": true }, "node_modules/regenerate-unicode-properties": { - "version": "8.2.0", - "integrity": "sha512-F9DjY1vKLo/tPePDycuH3dn9H1OTPIkVD9Kz4LODu+F2C75mgjAJ7x/gwy6ZcSNRAAkhNlJSOHRe8k3p+K9WhA==", + "version": "10.0.1", + "resolved": "https://registry.npmjs.org/regenerate-unicode-properties/-/regenerate-unicode-properties-10.0.1.tgz", + "integrity": "sha512-vn5DU6yg6h8hP/2OkQo3K7uVILvY4iu0oI4t3HFa81UPkhGJwkRwM10JEc3upjdhHjs/k8GJY1sRBhk5sr69Bw==", "dev": true, "dependencies": { - "regenerate": "^1.4.0" + "regenerate": "^1.4.2" }, "engines": { "node": ">=4" @@ -30738,8 +31135,9 @@ "integrity": "sha512-a54FxoJDIr27pgf7IgeQGxmqUNYrcV338lf/6gH456HZ/PhX+5BcwHXG9ajESmwe6WRO0tAzRUrRmNONWgkrew==" }, "node_modules/regenerator-transform": { - "version": "0.14.5", - "integrity": "sha512-eOf6vka5IO151Jfsw2NO9WpGX58W6wWmefK3I1zEGr0lOD0u8rwPaNqQL1aRxUaxLeKO3ArNh3VYg1KbaD+FFw==", + "version": "0.15.0", + "resolved": "https://registry.npmjs.org/regenerator-transform/-/regenerator-transform-0.15.0.tgz", + "integrity": "sha512-LsrGtPmbYg19bcPHwdtmXwbW+TqNvtY4riE3P83foeHRroMbH6/2ddFBfab3t7kbzc7v7p4wbkIecHImqt0QNg==", "dev": true, "dependencies": { "@babel/runtime": "^7.8.4" @@ -30772,29 +31170,32 @@ } }, "node_modules/regexpu-core": { - "version": "4.7.1", - "integrity": "sha512-ywH2VUraA44DZQuRKzARmw6S66mr48pQVva4LBeRhcOltJ6hExvWly5ZjFLYo67xbIxb6W1q4bAGtgfEl20zfQ==", + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/regexpu-core/-/regexpu-core-5.1.0.tgz", + "integrity": "sha512-bb6hk+xWd2PEOkj5It46A16zFMs2mv86Iwpdu94la4S3sJ7C973h2dHpYKwIBGaWSO7cIRJ+UX0IeMaWcO4qwA==", "dev": true, "dependencies": { - "regenerate": "^1.4.0", - "regenerate-unicode-properties": "^8.2.0", - "regjsgen": "^0.5.1", - "regjsparser": "^0.6.4", - "unicode-match-property-ecmascript": "^1.0.4", - "unicode-match-property-value-ecmascript": "^1.2.0" + "regenerate": "^1.4.2", + "regenerate-unicode-properties": "^10.0.1", + "regjsgen": "^0.6.0", + "regjsparser": "^0.8.2", + "unicode-match-property-ecmascript": "^2.0.0", + "unicode-match-property-value-ecmascript": "^2.0.0" }, "engines": { "node": ">=4" } }, "node_modules/regjsgen": { - "version": "0.5.2", - "integrity": "sha512-OFFT3MfrH90xIW8OOSyUrk6QHD5E9JOTeGodiJeBS3J6IwlgzJMNE/1bZklWz5oTg+9dCMyEetclvCVXOPoN3A==", + "version": "0.6.0", + "resolved": "https://registry.npmjs.org/regjsgen/-/regjsgen-0.6.0.tgz", + "integrity": "sha512-ozE883Uigtqj3bx7OhL1KNbCzGyW2NQZPl6Hs09WTvCuZD5sTI4JY58bkbQWa/Y9hxIsvJ3M8Nbf7j54IqeZbA==", "dev": true }, "node_modules/regjsparser": { - "version": "0.6.9", - "integrity": "sha512-ZqbNRz1SNjLAiYuwY0zoXW8Ne675IX5q+YHioAGbCw4X96Mjl2+dcX9B2ciaeyYjViDAfvIjFpQjJgLttTEERQ==", + "version": "0.8.4", + "resolved": "https://registry.npmjs.org/regjsparser/-/regjsparser-0.8.4.tgz", + "integrity": "sha512-J3LABycON/VNEu3abOviqGHuB/LOtOQj8SKmfP9anY5GfAVw/SPjwzSjxGjbZXIxbGfqTHtJw58C2Li/WkStmA==", "dev": true, "dependencies": { "jsesc": "~0.5.0" @@ -30805,7 +31206,8 @@ }, "node_modules/regjsparser/node_modules/jsesc": { "version": "0.5.0", - "integrity": "sha1-597mbjXW/Bb3EP6R1c9p9w8IkR0=", + "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-0.5.0.tgz", + "integrity": "sha512-uZz5UnB7u4T9LvwmFqXii7pZSouaRPorGs5who1Ip7VO0wxanFvBL7GkM6dTHlgX+jhBApRetaWpnDabOeTcnA==", "dev": true, "bin": { "jsesc": "bin/jsesc" @@ -32080,9 +32482,9 @@ } }, "node_modules/terser-webpack-plugin": { - "version": "5.3.4", - "resolved": "https://registry.npmjs.org/terser-webpack-plugin/-/terser-webpack-plugin-5.3.4.tgz", - "integrity": "sha512-SmnkUhBxLDcBfTIeaq+ZqJXLVEyXxSaNcCeSezECdKjfkMrTTnPvapBILylYwyEvHFZAn2cJ8dtiXel5XnfOfQ==", + "version": "5.3.6", + "resolved": "https://registry.npmjs.org/terser-webpack-plugin/-/terser-webpack-plugin-5.3.6.tgz", + "integrity": "sha512-kfLFk+PoLUQIbLmB1+PZDMRSZS99Mp+/MHqDNmMA6tOItzRt+Npe3E+fsMs5mfcM0wCtrrdU387UnV+vnSffXQ==", "dependencies": { "@jridgewell/trace-mapping": "^0.3.14", "jest-worker": "^27.4.5", @@ -32141,9 +32543,9 @@ } }, "node_modules/terser-webpack-plugin/node_modules/terser": { - "version": "5.14.2", - "resolved": "https://registry.npmjs.org/terser/-/terser-5.14.2.tgz", - "integrity": "sha512-oL0rGeM/WFQCUd0y2QrWxYnq7tfSuKBiqTjRPWrRgB46WD/kiwHwF8T23z78H6Q6kGCuuHcPB+KULHRdxvVGQA==", + "version": "5.15.0", + "resolved": "https://registry.npmjs.org/terser/-/terser-5.15.0.tgz", + "integrity": "sha512-L1BJiXVmheAQQy+as0oF3Pwtlo4s3Wi1X2zNZ2NxOB4wx9bdS9Vk67XQENLFdLYGCK/Z2di53mTj/hBafR+dTA==", "dependencies": { "@jridgewell/source-map": "^0.3.2", "acorn": "^8.5.0", @@ -32433,36 +32835,40 @@ } }, "node_modules/unicode-canonical-property-names-ecmascript": { - "version": "1.0.4", - "integrity": "sha512-jDrNnXWHd4oHiTZnx/ZG7gtUTVp+gCcTTKr8L0HjlwphROEW3+Him+IpvC+xcJEFegapiMZyZe02CyuOnRmbnQ==", + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/unicode-canonical-property-names-ecmascript/-/unicode-canonical-property-names-ecmascript-2.0.0.tgz", + "integrity": "sha512-yY5PpDlfVIU5+y/BSCxAJRBIS1Zc2dDG3Ujq+sR0U+JjUevW2JhocOF+soROYDSaAezOzOKuyyixhD6mBknSmQ==", "dev": true, "engines": { "node": ">=4" } }, "node_modules/unicode-match-property-ecmascript": { - "version": "1.0.4", - "integrity": "sha512-L4Qoh15vTfntsn4P1zqnHulG0LdXgjSO035fEpdtp6YxXhMT51Q6vgM5lYdG/5X3MjS+k/Y9Xw4SFCY9IkR0rg==", + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/unicode-match-property-ecmascript/-/unicode-match-property-ecmascript-2.0.0.tgz", + "integrity": "sha512-5kaZCrbp5mmbz5ulBkDkbY0SsPOjKqVS35VpL9ulMPfSl0J0Xsm+9Evphv9CoIZFwre7aJoa94AY6seMKGVN5Q==", "dev": true, "dependencies": { - "unicode-canonical-property-names-ecmascript": "^1.0.4", - "unicode-property-aliases-ecmascript": "^1.0.4" + "unicode-canonical-property-names-ecmascript": "^2.0.0", + "unicode-property-aliases-ecmascript": "^2.0.0" }, "engines": { "node": ">=4" } }, "node_modules/unicode-match-property-value-ecmascript": { - "version": "1.2.0", - "integrity": "sha512-wjuQHGQVofmSJv1uVISKLE5zO2rNGzM/KCYZch/QQvez7C1hUhBIuZ701fYXExuufJFMPhv2SyL8CyoIfMLbIQ==", + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/unicode-match-property-value-ecmascript/-/unicode-match-property-value-ecmascript-2.0.0.tgz", + "integrity": "sha512-7Yhkc0Ye+t4PNYzOGKedDhXbYIBe1XEQYQxOPyhcXNMJ0WCABqqj6ckydd6pWRZTHV4GuCPKdBAUiMc60tsKVw==", "dev": true, "engines": { "node": ">=4" } }, "node_modules/unicode-property-aliases-ecmascript": { - "version": "1.1.0", - "integrity": "sha512-PqSoPh/pWetQ2phoj5RLiaqIk4kCNwoV3CI+LfGmWLKI3rE3kl1h59XpX2BjgDrmbxD9ARtQobPGU1SguCYuQg==", + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/unicode-property-aliases-ecmascript/-/unicode-property-aliases-ecmascript-2.0.0.tgz", + "integrity": "sha512-5Zfuy9q/DFr4tfO7ZPeVXb1aPoeQSdeFMLpYuFebehDAhbuevLs5yxSZmIFN1tP5F9Wl4IpJrYojg85/zgyZHQ==", "dev": true, "engines": { "node": ">=4" @@ -32489,6 +32895,31 @@ "integrity": "sha1-j97XMk7G6IoP+LkF58CYzcCG1UQ=", "dev": true }, + "node_modules/update-browserslist-db": { + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/update-browserslist-db/-/update-browserslist-db-1.0.7.tgz", + "integrity": "sha512-iN/XYesmZ2RmmWAiI4Z5rq0YqSiv0brj9Ce9CfhNE4xIW2h+MFxcgkxIzZ+ShkFPUkjU3gQ+3oypadD3RAMtrg==", + "funding": [ + { + "type": "opencollective", + "url": "https://opencollective.com/browserslist" + }, + { + "type": "tidelift", + "url": "https://tidelift.com/funding/github/npm/browserslist" + } + ], + "dependencies": { + "escalade": "^3.1.1", + "picocolors": "^1.0.0" + }, + "bin": { + "browserslist-lint": "cli.js" + }, + "peerDependencies": { + "browserslist": ">= 4.21.0" + } + }, "node_modules/uri-js": { "version": "4.4.1", "integrity": "sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg==", @@ -32666,6 +33097,14 @@ "extsprintf": "^1.2.0" } }, + "node_modules/void-elements": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/void-elements/-/void-elements-3.1.0.tgz", + "integrity": "sha512-Dhxzh5HZuiHQhbvTW9AMetFfBHDMYpo23Uo9btPXgdYP+3T5S+p+jgNy7spra+veYhBP2dCSgxR/i2Y02h5/6w==", + "engines": { + "node": ">=0.10.0" + } + }, "node_modules/w3c-hr-time": { "version": "1.0.2", "integrity": "sha512-z8P5DvDNjKDoFIHK7q8r8lackT6l+jo/Ye3HOle7l9nICP9lf1Ci25fy9vHd0JOWewkIFzXIEig3TdKT7JQ5fQ==", @@ -33698,15 +34137,17 @@ } }, "@babel/code-frame": { - "version": "7.16.7", - "integrity": "sha512-iAXqUn8IIeBTNd72xsFlgaXHkMBMt6y4HJp1tIaK465CWLT/fG1aqB7ykr95gHHmlBdGbFeWWfyB4NJJ0nmeIg==", + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.18.6.tgz", + "integrity": "sha512-TDCmlK5eOvH+eH7cdAFlNXeVJqWIQ7gW9tY1GJIpUtFb6CmjVyq2VM3u71bOyR8CRihcCgMUYoDNyLXao3+70Q==", "requires": { - "@babel/highlight": "^7.16.7" + "@babel/highlight": "^7.18.6" } }, "@babel/compat-data": { - "version": "7.17.0", - "integrity": "sha512-392byTlpGWXMv4FbyWw3sAZ/FrW/DrwqLGXpy0mbyNe9Taqv1mg9yON5/o0cnr8XYCkFTZbC1eV+c+LAROgrng==", + "version": "7.19.0", + "resolved": "https://registry.npmjs.org/@babel/compat-data/-/compat-data-7.19.0.tgz", + "integrity": "sha512-y5rqgTTPTmaF5e2nVhOxw+Ur9HDJLsWb6U/KpgUzRZEdPfE6VOubXBKLdbcUTijzRptednSBDQbYZBOSqJxpJw==", "devOptional": true }, "@babel/core": { @@ -33764,20 +34205,14 @@ } }, "@babel/generator": { - "version": "7.17.3", - "integrity": "sha512-+R6Dctil/MgUsZsZAkYgK+ADNSZzJRRy0TvY65T71z/CR854xHQ1EweBYXdfT+HNeN7w0cSJJEzgxZMv40pxsg==", + "version": "7.19.0", + "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.19.0.tgz", + "integrity": "sha512-S1ahxf1gZ2dpoiFgA+ohK9DIpz50bJ0CWs7Zlzb54Z4sG8qmdIrGrVqmy1sAtTVRb+9CU6U8VqT9L0Zj7hxHVg==", "devOptional": true, "requires": { - "@babel/types": "^7.17.0", - "jsesc": "^2.5.1", - "source-map": "^0.5.0" - }, - "dependencies": { - "source-map": { - "version": "0.5.7", - "integrity": "sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w=", - "devOptional": true - } + "@babel/types": "^7.19.0", + "@jridgewell/gen-mapping": "^0.3.2", + "jsesc": "^2.5.1" } }, "@babel/helper-annotate-as-pure": { @@ -33790,22 +34225,24 @@ } }, "@babel/helper-builder-binary-assignment-operator-visitor": { - "version": "7.12.13", - "integrity": "sha512-CZOv9tGphhDRlVjVkAgm8Nhklm9RzSmWpX2my+t7Ua/KT616pEzXsQCjinzvkRvHWJ9itO4f296efroX23XCMA==", + "version": "7.18.9", + "resolved": "https://registry.npmjs.org/@babel/helper-builder-binary-assignment-operator-visitor/-/helper-builder-binary-assignment-operator-visitor-7.18.9.tgz", + "integrity": "sha512-yFQ0YCHoIqarl8BCRwBL8ulYUaZpz3bNsA7oFepAzee+8/+ImtADXNOmO5vJvsPff3qi+hvpkY/NYBTrBQgdNw==", "dev": true, "requires": { - "@babel/helper-explode-assignable-expression": "^7.12.13", - "@babel/types": "^7.12.13" + "@babel/helper-explode-assignable-expression": "^7.18.6", + "@babel/types": "^7.18.9" } }, "@babel/helper-compilation-targets": { - "version": "7.16.7", - "integrity": "sha512-mGojBwIWcwGD6rfqgRXVlVYmPAv7eOpIemUG3dGnDdCY4Pae70ROij3XmfrH6Fa1h1aiDylpglbZyktfzyo/hA==", + "version": "7.19.0", + "resolved": "https://registry.npmjs.org/@babel/helper-compilation-targets/-/helper-compilation-targets-7.19.0.tgz", + "integrity": "sha512-Ai5bNWXIvwDvWM7njqsG3feMlL9hCVQsPYXodsZyLwshYkZVJt59Gftau4VrE8S9IT9asd2uSP1hG6wCNw+sXA==", "devOptional": true, "requires": { - "@babel/compat-data": "^7.16.4", - "@babel/helper-validator-option": "^7.16.7", - "browserslist": "^4.17.5", + "@babel/compat-data": "^7.19.0", + "@babel/helper-validator-option": "^7.18.6", + "browserslist": "^4.20.2", "semver": "^6.3.0" }, "dependencies": { @@ -33817,35 +34254,38 @@ } }, "@babel/helper-create-class-features-plugin": { - "version": "7.13.11", - "integrity": "sha512-ays0I7XYq9xbjCSvT+EvysLgfc3tOkwCULHjrnscGT3A9qD4sk3wXnJ3of0MAWsWGjdinFvajHU2smYuqXKMrw==", + "version": "7.19.0", + "resolved": "https://registry.npmjs.org/@babel/helper-create-class-features-plugin/-/helper-create-class-features-plugin-7.19.0.tgz", + "integrity": "sha512-NRz8DwF4jT3UfrmUoZjd0Uph9HQnP30t7Ash+weACcyNkiYTywpIjDBgReJMKgr+n86sn2nPVVmJ28Dm053Kqw==", "dev": true, "requires": { - "@babel/helper-function-name": "^7.12.13", - "@babel/helper-member-expression-to-functions": "^7.13.0", - "@babel/helper-optimise-call-expression": "^7.12.13", - "@babel/helper-replace-supers": "^7.13.0", - "@babel/helper-split-export-declaration": "^7.12.13" + "@babel/helper-annotate-as-pure": "^7.18.6", + "@babel/helper-environment-visitor": "^7.18.9", + "@babel/helper-function-name": "^7.19.0", + "@babel/helper-member-expression-to-functions": "^7.18.9", + "@babel/helper-optimise-call-expression": "^7.18.6", + "@babel/helper-replace-supers": "^7.18.9", + "@babel/helper-split-export-declaration": "^7.18.6" } }, "@babel/helper-create-regexp-features-plugin": { - "version": "7.12.17", - "integrity": "sha512-p2VGmBu9oefLZ2nQpgnEnG0ZlRPvL8gAGvPUMQwUdaE8k49rOMuZpOwdQoy5qJf6K8jL3bcAMhVUlHAjIgJHUg==", + "version": "7.19.0", + "resolved": "https://registry.npmjs.org/@babel/helper-create-regexp-features-plugin/-/helper-create-regexp-features-plugin-7.19.0.tgz", + "integrity": "sha512-htnV+mHX32DF81amCDrwIDr8nrp1PTm+3wfBN9/v8QJOLEioOCOG7qNyq0nHeFiWbT3Eb7gsPwEmV64UCQ1jzw==", "dev": true, "requires": { - "@babel/helper-annotate-as-pure": "^7.12.13", - "regexpu-core": "^4.7.1" + "@babel/helper-annotate-as-pure": "^7.18.6", + "regexpu-core": "^5.1.0" } }, "@babel/helper-define-polyfill-provider": { - "version": "0.1.5", - "integrity": "sha512-nXuzCSwlJ/WKr8qxzW816gwyT6VZgiJG17zR40fou70yfAcqjoNyTLl/DQ+FExw5Hx5KNqshmN8Ldl/r2N7cTg==", + "version": "0.3.2", + "resolved": "https://registry.npmjs.org/@babel/helper-define-polyfill-provider/-/helper-define-polyfill-provider-0.3.2.tgz", + "integrity": "sha512-r9QJJ+uDWrd+94BSPcP6/de67ygLtvVy6cK4luE6MOuDsZIdoaPBnfSpbO/+LTifjPckbKXRuI9BB/Z2/y3iTg==", "dev": true, "requires": { - "@babel/helper-compilation-targets": "^7.13.0", - "@babel/helper-module-imports": "^7.12.13", - "@babel/helper-plugin-utils": "^7.13.0", - "@babel/traverse": "^7.13.0", + "@babel/helper-compilation-targets": "^7.17.7", + "@babel/helper-plugin-utils": "^7.16.7", "debug": "^4.1.1", "lodash.debounce": "^4.0.8", "resolve": "^1.14.2", @@ -33854,59 +34294,53 @@ "dependencies": { "semver": { "version": "6.3.0", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==", "dev": true } } }, "@babel/helper-environment-visitor": { - "version": "7.16.7", - "integrity": "sha512-SLLb0AAn6PkUeAfKJCCOl9e1R53pQlGAfc4y4XuMRZfqeMYLE0dM1LMhqbGAlGQY0lfw5/ohoYWAe9V1yibRag==", - "devOptional": true, - "requires": { - "@babel/types": "^7.16.7" - } + "version": "7.18.9", + "resolved": "https://registry.npmjs.org/@babel/helper-environment-visitor/-/helper-environment-visitor-7.18.9.tgz", + "integrity": "sha512-3r/aACDJ3fhQ/EVgFy0hpj8oHyHpQc+LPtJoY9SzTThAsStm4Ptegq92vqKoE3vD706ZVFWITnMnxucw+S9Ipg==", + "devOptional": true }, "@babel/helper-explode-assignable-expression": { - "version": "7.13.0", - "integrity": "sha512-qS0peLTDP8kOisG1blKbaoBg/o9OSa1qoumMjTK5pM+KDTtpxpsiubnCGP34vK8BXGcb2M9eigwgvoJryrzwWA==", + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/helper-explode-assignable-expression/-/helper-explode-assignable-expression-7.18.6.tgz", + "integrity": "sha512-eyAYAsQmB80jNfg4baAtLeWAQHfHFiR483rzFK+BhETlGZaQC9bsfrugfXDCbRHLQbIA7U5NxhhOxN7p/dWIcg==", "dev": true, "requires": { - "@babel/types": "^7.13.0" + "@babel/types": "^7.18.6" } }, "@babel/helper-function-name": { - "version": "7.16.7", - "integrity": "sha512-QfDfEnIUyyBSR3HtrtGECuZ6DAyCkYFp7GHl75vFtTnn6pjKeK0T1DB5lLkFvBea8MdaiUABx3osbgLyInoejA==", + "version": "7.19.0", + "resolved": "https://registry.npmjs.org/@babel/helper-function-name/-/helper-function-name-7.19.0.tgz", + "integrity": "sha512-WAwHBINyrpqywkUH0nTnNgI5ina5TFn85HKS0pbPDfxFfhyR/aNQEn4hGi1P1JyT//I0t4OgXUlofzWILRvS5w==", "devOptional": true, "requires": { - "@babel/helper-get-function-arity": "^7.16.7", - "@babel/template": "^7.16.7", - "@babel/types": "^7.16.7" - } - }, - "@babel/helper-get-function-arity": { - "version": "7.16.7", - "integrity": "sha512-flc+RLSOBXzNzVhcLu6ujeHUrD6tANAOU5ojrRx/as+tbzf8+stUCj7+IfRRoAbEZqj/ahXEMsjhOhgeZsrnTw==", - "devOptional": true, - "requires": { - "@babel/types": "^7.16.7" + "@babel/template": "^7.18.10", + "@babel/types": "^7.19.0" } }, "@babel/helper-hoist-variables": { - "version": "7.16.7", - "integrity": "sha512-m04d/0Op34H5v7pbZw6pSKP7weA6lsMvfiIAMeIvkY/R4xQtBSMFEigu9QTZ2qB/9l22vsxtM8a+Q8CzD255fg==", + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/helper-hoist-variables/-/helper-hoist-variables-7.18.6.tgz", + "integrity": "sha512-UlJQPkFqFULIcyW5sbzgbkxn2FKRgwWiRexcuaR8RNJRy8+LLveqPjwZV/bwrLZCN0eUHD/x8D0heK1ozuoo6Q==", "devOptional": true, "requires": { - "@babel/types": "^7.16.7" + "@babel/types": "^7.18.6" } }, "@babel/helper-member-expression-to-functions": { - "version": "7.15.0", - "integrity": "sha512-Jq8H8U2kYiafuj2xMTPQwkTBnEEdGKpT35lJEQsRRjnG0LW3neucsaMWLgKcwu3OHKNeYugfw+Z20BXBSEs2Lg==", + "version": "7.18.9", + "resolved": "https://registry.npmjs.org/@babel/helper-member-expression-to-functions/-/helper-member-expression-to-functions-7.18.9.tgz", + "integrity": "sha512-RxifAh2ZoVU67PyKIO4AMi1wTenGfMR/O/ae0CCRqwgBAt5v7xjdtRw7UoSbsreKrQn5t7r89eruK/9JjYHuDg==", "dev": true, "requires": { - "@babel/types": "^7.15.0" + "@babel/types": "^7.18.9" } }, "@babel/helper-module-imports": { @@ -33918,77 +34352,86 @@ } }, "@babel/helper-module-transforms": { - "version": "7.17.6", - "integrity": "sha512-2ULmRdqoOMpdvkbT8jONrZML/XALfzxlb052bldftkicAUy8AxSCkD5trDPQcwHNmolcl7wP6ehNqMlyUw6AaA==", + "version": "7.19.0", + "resolved": "https://registry.npmjs.org/@babel/helper-module-transforms/-/helper-module-transforms-7.19.0.tgz", + "integrity": "sha512-3HBZ377Fe14RbLIA+ac3sY4PTgpxHVkFrESaWhoI5PuyXPBBX8+C34qblV9G89ZtycGJCmCI/Ut+VUDK4bltNQ==", "devOptional": true, "requires": { - "@babel/helper-environment-visitor": "^7.16.7", - "@babel/helper-module-imports": "^7.16.7", - "@babel/helper-simple-access": "^7.16.7", - "@babel/helper-split-export-declaration": "^7.16.7", - "@babel/helper-validator-identifier": "^7.16.7", - "@babel/template": "^7.16.7", - "@babel/traverse": "^7.17.3", - "@babel/types": "^7.17.0" + "@babel/helper-environment-visitor": "^7.18.9", + "@babel/helper-module-imports": "^7.18.6", + "@babel/helper-simple-access": "^7.18.6", + "@babel/helper-split-export-declaration": "^7.18.6", + "@babel/helper-validator-identifier": "^7.18.6", + "@babel/template": "^7.18.10", + "@babel/traverse": "^7.19.0", + "@babel/types": "^7.19.0" } }, "@babel/helper-optimise-call-expression": { - "version": "7.14.5", - "integrity": "sha512-IqiLIrODUOdnPU9/F8ib1Fx2ohlgDhxnIDU7OEVi+kAbEZcyiF7BLU8W6PfvPi9LzztjS7kcbzbmL7oG8kD6VA==", + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/helper-optimise-call-expression/-/helper-optimise-call-expression-7.18.6.tgz", + "integrity": "sha512-HP59oD9/fEHQkdcbgFCnbmgH5vIQTJbxh2yf+CdM89/glUNnuzr87Q8GIjGEnOktTROemO0Pe0iPAYbqZuOUiA==", "dev": true, "requires": { - "@babel/types": "^7.14.5" + "@babel/types": "^7.18.6" } }, "@babel/helper-plugin-utils": { - "version": "7.18.9", - "resolved": "https://registry.npmjs.org/@babel/helper-plugin-utils/-/helper-plugin-utils-7.18.9.tgz", - "integrity": "sha512-aBXPT3bmtLryXaoJLyYPXPlSD4p1ld9aYeR+sJNOZjJJGiOpb+fKfh3NkcCu7J54nUJwCERPBExCCpyCOHnu/w==", + "version": "7.19.0", + "resolved": "https://registry.npmjs.org/@babel/helper-plugin-utils/-/helper-plugin-utils-7.19.0.tgz", + "integrity": "sha512-40Ryx7I8mT+0gaNxm8JGTZFUITNqdLAgdg0hXzeVZxVD6nFsdhQvip6v8dqkRHzsz1VFpFAaOCHNn0vKBL7Czw==", "dev": true }, "@babel/helper-remap-async-to-generator": { - "version": "7.13.0", - "integrity": "sha512-pUQpFBE9JvC9lrQbpX0TmeNIy5s7GnZjna2lhhcHC7DzgBs6fWn722Y5cfwgrtrqc7NAJwMvOa0mKhq6XaE4jg==", + "version": "7.18.9", + "resolved": "https://registry.npmjs.org/@babel/helper-remap-async-to-generator/-/helper-remap-async-to-generator-7.18.9.tgz", + "integrity": "sha512-dI7q50YKd8BAv3VEfgg7PS7yD3Rtbi2J1XMXaalXO0W0164hYLnh8zpjRS0mte9MfVp/tltvr/cfdXPvJr1opA==", "dev": true, "requires": { - "@babel/helper-annotate-as-pure": "^7.12.13", - "@babel/helper-wrap-function": "^7.13.0", - "@babel/types": "^7.13.0" + "@babel/helper-annotate-as-pure": "^7.18.6", + "@babel/helper-environment-visitor": "^7.18.9", + "@babel/helper-wrap-function": "^7.18.9", + "@babel/types": "^7.18.9" } }, "@babel/helper-replace-supers": { - "version": "7.15.0", - "integrity": "sha512-6O+eWrhx+HEra/uJnifCwhwMd6Bp5+ZfZeJwbqUTuqkhIT6YcRhiZCOOFChRypOIe0cV46kFrRBlm+t5vHCEaA==", + "version": "7.18.9", + "resolved": "https://registry.npmjs.org/@babel/helper-replace-supers/-/helper-replace-supers-7.18.9.tgz", + "integrity": "sha512-dNsWibVI4lNT6HiuOIBr1oyxo40HvIVmbwPUm3XZ7wMh4k2WxrxTqZwSqw/eEmXDS9np0ey5M2bz9tBmO9c+YQ==", "dev": true, "requires": { - "@babel/helper-member-expression-to-functions": "^7.15.0", - "@babel/helper-optimise-call-expression": "^7.14.5", - "@babel/traverse": "^7.15.0", - "@babel/types": "^7.15.0" + "@babel/helper-environment-visitor": "^7.18.9", + "@babel/helper-member-expression-to-functions": "^7.18.9", + "@babel/helper-optimise-call-expression": "^7.18.6", + "@babel/traverse": "^7.18.9", + "@babel/types": "^7.18.9" } }, "@babel/helper-simple-access": { - "version": "7.16.7", - "integrity": "sha512-ZIzHVyoeLMvXMN/vok/a4LWRy8G2v205mNP0XOuf9XRLyX5/u9CnVulUtDgUTama3lT+bf/UqucuZjqiGuTS1g==", + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/helper-simple-access/-/helper-simple-access-7.18.6.tgz", + "integrity": "sha512-iNpIgTgyAvDQpDj76POqg+YEt8fPxx3yaNBg3S30dxNKm2SWfYhD0TGrK/Eu9wHpUW63VQU894TsTg+GLbUa1g==", "devOptional": true, "requires": { - "@babel/types": "^7.16.7" + "@babel/types": "^7.18.6" } }, "@babel/helper-skip-transparent-expression-wrappers": { - "version": "7.12.1", - "integrity": "sha512-Mf5AUuhG1/OCChOJ/HcADmvcHM42WJockombn8ATJG3OnyiSxBK/Mm5x78BQWvmtXZKHgbjdGL2kin/HOLlZGA==", + "version": "7.18.9", + "resolved": "https://registry.npmjs.org/@babel/helper-skip-transparent-expression-wrappers/-/helper-skip-transparent-expression-wrappers-7.18.9.tgz", + "integrity": "sha512-imytd2gHi3cJPsybLRbmFrF7u5BIEuI2cNheyKi3/iOBC63kNn3q8Crn2xVuESli0aM4KYsyEqKyS7lFL8YVtw==", "dev": true, "requires": { - "@babel/types": "^7.12.1" + "@babel/types": "^7.18.9" } }, "@babel/helper-split-export-declaration": { - "version": "7.16.7", - "integrity": "sha512-xbWoy/PFoxSWazIToT9Sif+jJTlrMcndIsaOKvTA6u7QEo7ilkRZpjew18/W3c7nm8fXdUDXh02VXTbZ0pGDNw==", + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.18.6.tgz", + "integrity": "sha512-bde1etTx6ZyTmobl9LLMMQsaizFVZrquTEHOqKeQESMKo4PlObf+8+JA25ZsIpZhT/WEd39+vOdLXAFG/nELpA==", "devOptional": true, "requires": { - "@babel/types": "^7.16.7" + "@babel/types": "^7.18.6" } }, "@babel/helper-string-parser": { @@ -34008,14 +34451,15 @@ "devOptional": true }, "@babel/helper-wrap-function": { - "version": "7.13.0", - "integrity": "sha512-1UX9F7K3BS42fI6qd2A4BjKzgGjToscyZTdp1DjknHLCIvpgne6918io+aL5LXFcER/8QWiwpoY902pVEqgTXA==", + "version": "7.19.0", + "resolved": "https://registry.npmjs.org/@babel/helper-wrap-function/-/helper-wrap-function-7.19.0.tgz", + "integrity": "sha512-txX8aN8CZyYGTwcLhlk87KRqncAzhh5TpQamZUa0/u3an36NtDpUP6bQgBCBcLeBs09R/OwQu3OjK0k/HwfNDg==", "dev": true, "requires": { - "@babel/helper-function-name": "^7.12.13", - "@babel/template": "^7.12.13", - "@babel/traverse": "^7.13.0", - "@babel/types": "^7.13.0" + "@babel/helper-function-name": "^7.19.0", + "@babel/template": "^7.18.10", + "@babel/traverse": "^7.19.0", + "@babel/types": "^7.19.0" } }, "@babel/helpers": { @@ -34029,149 +34473,198 @@ } }, "@babel/highlight": { - "version": "7.16.10", - "integrity": "sha512-5FnTQLSLswEj6IkgVw5KusNUUFY9ZGqe/TRFnP/BKYHYgfh7tc+C7mwiy95/yNP7Dh9x580Vv8r7u7ZfTBFxdw==", + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.18.6.tgz", + "integrity": "sha512-u7stbOuYjaPezCuLj29hNW1v64M2Md2qupEKP1fHc7WdOA3DgLh37suiSrZYY7haUB7iBeQZ9P1uiRF359do3g==", "requires": { - "@babel/helper-validator-identifier": "^7.16.7", + "@babel/helper-validator-identifier": "^7.18.6", "chalk": "^2.0.0", "js-tokens": "^4.0.0" } }, "@babel/parser": { - "version": "7.17.3", - "integrity": "sha512-7yJPvPV+ESz2IUTPbOL+YkIGyCqOyNIzdguKQuJGnH7bg1WTIifuM21YqokFt/THWh1AkCRn9IgoykTRCBVpzA==", + "version": "7.19.0", + "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.19.0.tgz", + "integrity": "sha512-74bEXKX2h+8rrfQUfsBfuZZHzsEs6Eql4pqy/T4Nn6Y9wNPggQOqD6z6pn5Bl8ZfysKouFZT/UXEH94ummEeQw==", "devOptional": true }, + "@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression": { + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression/-/plugin-bugfix-safari-id-destructuring-collision-in-function-expression-7.18.6.tgz", + "integrity": "sha512-Dgxsyg54Fx1d4Nge8UnvTrED63vrwOdPmyvPzlNN/boaliRP54pm3pGzZD1SJUwrBA+Cs/xdG8kXX6Mn/RfISQ==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.18.6" + } + }, "@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining": { - "version": "7.13.12", - "integrity": "sha512-d0u3zWKcoZf379fOeJdr1a5WPDny4aOFZ6hlfKivgK0LY7ZxNfoaHL2fWwdGtHyVvra38FC+HVYkO+byfSA8AQ==", + "version": "7.18.9", + "resolved": "https://registry.npmjs.org/@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining/-/plugin-bugfix-v8-spread-parameters-in-optional-chaining-7.18.9.tgz", + "integrity": "sha512-AHrP9jadvH7qlOj6PINbgSuphjQUAK7AOT7DPjBo9EHoLhQTnnK5u45e1Hd4DbSQEO9nqPWtQ89r+XEOWFScKg==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.13.0", - "@babel/helper-skip-transparent-expression-wrappers": "^7.12.1", - "@babel/plugin-proposal-optional-chaining": "^7.13.12" + "@babel/helper-plugin-utils": "^7.18.9", + "@babel/helper-skip-transparent-expression-wrappers": "^7.18.9", + "@babel/plugin-proposal-optional-chaining": "^7.18.9" } }, "@babel/plugin-proposal-async-generator-functions": { - "version": "7.13.8", - "integrity": "sha512-rPBnhj+WgoSmgq+4gQUtXx/vOcU+UYtjy1AA/aeD61Hwj410fwYyqfUcRP3lR8ucgliVJL/G7sXcNUecC75IXA==", + "version": "7.19.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-async-generator-functions/-/plugin-proposal-async-generator-functions-7.19.0.tgz", + "integrity": "sha512-nhEByMUTx3uZueJ/QkJuSlCfN4FGg+xy+vRsfGQGzSauq5ks2Deid2+05Q3KhfaUjvec1IGhw/Zm3cFm8JigTQ==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.13.0", - "@babel/helper-remap-async-to-generator": "^7.13.0", + "@babel/helper-environment-visitor": "^7.18.9", + "@babel/helper-plugin-utils": "^7.19.0", + "@babel/helper-remap-async-to-generator": "^7.18.9", "@babel/plugin-syntax-async-generators": "^7.8.4" } }, "@babel/plugin-proposal-class-properties": { - "version": "7.13.0", - "integrity": "sha512-KnTDjFNC1g+45ka0myZNvSBFLhNCLN+GeGYLDEA8Oq7MZ6yMgfLoIRh86GRT0FjtJhZw8JyUskP9uvj5pHM9Zg==", + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-class-properties/-/plugin-proposal-class-properties-7.18.6.tgz", + "integrity": "sha512-cumfXOF0+nzZrrN8Rf0t7M+tF6sZc7vhQwYQck9q1/5w2OExlD+b4v4RpMJFaV1Z7WcDRgO6FqvxqxGlwo+RHQ==", "dev": true, "requires": { - "@babel/helper-create-class-features-plugin": "^7.13.0", - "@babel/helper-plugin-utils": "^7.13.0" + "@babel/helper-create-class-features-plugin": "^7.18.6", + "@babel/helper-plugin-utils": "^7.18.6" + } + }, + "@babel/plugin-proposal-class-static-block": { + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-class-static-block/-/plugin-proposal-class-static-block-7.18.6.tgz", + "integrity": "sha512-+I3oIiNxrCpup3Gi8n5IGMwj0gOCAjcJUSQEcotNnCCPMEnixawOQ+KeJPlgfjzx+FKQ1QSyZOWe7wmoJp7vhw==", + "dev": true, + "requires": { + "@babel/helper-create-class-features-plugin": "^7.18.6", + "@babel/helper-plugin-utils": "^7.18.6", + "@babel/plugin-syntax-class-static-block": "^7.14.5" } }, "@babel/plugin-proposal-dynamic-import": { - "version": "7.13.8", - "integrity": "sha512-ONWKj0H6+wIRCkZi9zSbZtE/r73uOhMVHh256ys0UzfM7I3d4n+spZNWjOnJv2gzopumP2Wxi186vI8N0Y2JyQ==", + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-dynamic-import/-/plugin-proposal-dynamic-import-7.18.6.tgz", + "integrity": "sha512-1auuwmK+Rz13SJj36R+jqFPMJWyKEDd7lLSdOj4oJK0UTgGueSAtkrCvz9ewmgyU/P941Rv2fQwZJN8s6QruXw==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.13.0", + "@babel/helper-plugin-utils": "^7.18.6", "@babel/plugin-syntax-dynamic-import": "^7.8.3" } }, "@babel/plugin-proposal-export-namespace-from": { - "version": "7.12.13", - "integrity": "sha512-INAgtFo4OnLN3Y/j0VwAgw3HDXcDtX+C/erMvWzuV9v71r7urb6iyMXu7eM9IgLr1ElLlOkaHjJ0SbCmdOQ3Iw==", + "version": "7.18.9", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-export-namespace-from/-/plugin-proposal-export-namespace-from-7.18.9.tgz", + "integrity": "sha512-k1NtHyOMvlDDFeb9G5PhUXuGj8m/wiwojgQVEhJ/fsVsMCpLyOP4h0uGEjYJKrRI+EVPlb5Jk+Gt9P97lOGwtA==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.12.13", + "@babel/helper-plugin-utils": "^7.18.9", "@babel/plugin-syntax-export-namespace-from": "^7.8.3" } }, "@babel/plugin-proposal-json-strings": { - "version": "7.13.8", - "integrity": "sha512-w4zOPKUFPX1mgvTmL/fcEqy34hrQ1CRcGxdphBc6snDnnqJ47EZDIyop6IwXzAC8G916hsIuXB2ZMBCExC5k7Q==", + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-json-strings/-/plugin-proposal-json-strings-7.18.6.tgz", + "integrity": "sha512-lr1peyn9kOdbYc0xr0OdHTZ5FMqS6Di+H0Fz2I/JwMzGmzJETNeOFq2pBySw6X/KFL5EWDjlJuMsUGRFb8fQgQ==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.13.0", + "@babel/helper-plugin-utils": "^7.18.6", "@babel/plugin-syntax-json-strings": "^7.8.3" } }, "@babel/plugin-proposal-logical-assignment-operators": { - "version": "7.13.8", - "integrity": "sha512-aul6znYB4N4HGweImqKn59Su9RS8lbUIqxtXTOcAGtNIDczoEFv+l1EhmX8rUBp3G1jMjKJm8m0jXVp63ZpS4A==", + "version": "7.18.9", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-logical-assignment-operators/-/plugin-proposal-logical-assignment-operators-7.18.9.tgz", + "integrity": "sha512-128YbMpjCrP35IOExw2Fq+x55LMP42DzhOhX2aNNIdI9avSWl2PI0yuBWarr3RYpZBSPtabfadkH2yeRiMD61Q==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.13.0", + "@babel/helper-plugin-utils": "^7.18.9", "@babel/plugin-syntax-logical-assignment-operators": "^7.10.4" } }, "@babel/plugin-proposal-nullish-coalescing-operator": { - "version": "7.13.8", - "integrity": "sha512-iePlDPBn//UhxExyS9KyeYU7RM9WScAG+D3Hhno0PLJebAEpDZMocbDe64eqynhNAnwz/vZoL/q/QB2T1OH39A==", + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-nullish-coalescing-operator/-/plugin-proposal-nullish-coalescing-operator-7.18.6.tgz", + "integrity": "sha512-wQxQzxYeJqHcfppzBDnm1yAY0jSRkUXR2z8RePZYrKwMKgMlE8+Z6LUno+bd6LvbGh8Gltvy74+9pIYkr+XkKA==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.13.0", + "@babel/helper-plugin-utils": "^7.18.6", "@babel/plugin-syntax-nullish-coalescing-operator": "^7.8.3" } }, "@babel/plugin-proposal-numeric-separator": { - "version": "7.12.13", - "integrity": "sha512-O1jFia9R8BUCl3ZGB7eitaAPu62TXJRHn7rh+ojNERCFyqRwJMTmhz+tJ+k0CwI6CLjX/ee4qW74FSqlq9I35w==", + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-numeric-separator/-/plugin-proposal-numeric-separator-7.18.6.tgz", + "integrity": "sha512-ozlZFogPqoLm8WBr5Z8UckIoE4YQ5KESVcNudyXOR8uqIkliTEgJ3RoketfG6pmzLdeZF0H/wjE9/cCEitBl7Q==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.12.13", + "@babel/helper-plugin-utils": "^7.18.6", "@babel/plugin-syntax-numeric-separator": "^7.10.4" } }, "@babel/plugin-proposal-object-rest-spread": { - "version": "7.13.8", - "integrity": "sha512-DhB2EuB1Ih7S3/IRX5AFVgZ16k3EzfRbq97CxAVI1KSYcW+lexV8VZb7G7L8zuPVSdQMRn0kiBpf/Yzu9ZKH0g==", + "version": "7.18.9", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-object-rest-spread/-/plugin-proposal-object-rest-spread-7.18.9.tgz", + "integrity": "sha512-kDDHQ5rflIeY5xl69CEqGEZ0KY369ehsCIEbTGb4siHG5BE9sga/T0r0OUwyZNLMmZE79E1kbsqAjwFCW4ds6Q==", "dev": true, "requires": { - "@babel/compat-data": "^7.13.8", - "@babel/helper-compilation-targets": "^7.13.8", - "@babel/helper-plugin-utils": "^7.13.0", + "@babel/compat-data": "^7.18.8", + "@babel/helper-compilation-targets": "^7.18.9", + "@babel/helper-plugin-utils": "^7.18.9", "@babel/plugin-syntax-object-rest-spread": "^7.8.3", - "@babel/plugin-transform-parameters": "^7.13.0" + "@babel/plugin-transform-parameters": "^7.18.8" } }, "@babel/plugin-proposal-optional-catch-binding": { - "version": "7.13.8", - "integrity": "sha512-0wS/4DUF1CuTmGo+NiaHfHcVSeSLj5S3e6RivPTg/2k3wOv3jO35tZ6/ZWsQhQMvdgI7CwphjQa/ccarLymHVA==", + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-optional-catch-binding/-/plugin-proposal-optional-catch-binding-7.18.6.tgz", + "integrity": "sha512-Q40HEhs9DJQyaZfUjjn6vE8Cv4GmMHCYuMGIWUnlxH6400VGxOuwWsPt4FxXxJkC/5eOzgn0z21M9gMT4MOhbw==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.13.0", + "@babel/helper-plugin-utils": "^7.18.6", "@babel/plugin-syntax-optional-catch-binding": "^7.8.3" } }, "@babel/plugin-proposal-optional-chaining": { - "version": "7.13.12", - "integrity": "sha512-fcEdKOkIB7Tf4IxrgEVeFC4zeJSTr78no9wTdBuZZbqF64kzllU0ybo2zrzm7gUQfxGhBgq4E39oRs8Zx/RMYQ==", + "version": "7.18.9", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-optional-chaining/-/plugin-proposal-optional-chaining-7.18.9.tgz", + "integrity": "sha512-v5nwt4IqBXihxGsW2QmCWMDS3B3bzGIk/EQVZz2ei7f3NJl8NzAJVvUmpDW5q1CRNY+Beb/k58UAH1Km1N411w==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.13.0", - "@babel/helper-skip-transparent-expression-wrappers": "^7.12.1", + "@babel/helper-plugin-utils": "^7.18.9", + "@babel/helper-skip-transparent-expression-wrappers": "^7.18.9", "@babel/plugin-syntax-optional-chaining": "^7.8.3" } }, "@babel/plugin-proposal-private-methods": { - "version": "7.13.0", - "integrity": "sha512-MXyyKQd9inhx1kDYPkFRVOBXQ20ES8Pto3T7UZ92xj2mY0EVD8oAVzeyYuVfy/mxAdTSIayOvg+aVzcHV2bn6Q==", + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-private-methods/-/plugin-proposal-private-methods-7.18.6.tgz", + "integrity": "sha512-nutsvktDItsNn4rpGItSNV2sz1XwS+nfU0Rg8aCx3W3NOKVzdMjJRu0O5OkgDp3ZGICSTbgRpxZoWsxoKRvbeA==", "dev": true, "requires": { - "@babel/helper-create-class-features-plugin": "^7.13.0", - "@babel/helper-plugin-utils": "^7.13.0" + "@babel/helper-create-class-features-plugin": "^7.18.6", + "@babel/helper-plugin-utils": "^7.18.6" + } + }, + "@babel/plugin-proposal-private-property-in-object": { + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-private-property-in-object/-/plugin-proposal-private-property-in-object-7.18.6.tgz", + "integrity": "sha512-9Rysx7FOctvT5ouj5JODjAFAkgGoudQuLPamZb0v1TGLpapdNaftzifU8NTWQm0IRjqoYypdrSmyWgkocDQ8Dw==", + "dev": true, + "requires": { + "@babel/helper-annotate-as-pure": "^7.18.6", + "@babel/helper-create-class-features-plugin": "^7.18.6", + "@babel/helper-plugin-utils": "^7.18.6", + "@babel/plugin-syntax-private-property-in-object": "^7.14.5" } }, "@babel/plugin-proposal-unicode-property-regex": { - "version": "7.12.13", - "integrity": "sha512-XyJmZidNfofEkqFV5VC/bLabGmO5QzenPO/YOfGuEbgU+2sSwMmio3YLb4WtBgcmmdwZHyVyv8on77IUjQ5Gvg==", + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-unicode-property-regex/-/plugin-proposal-unicode-property-regex-7.18.6.tgz", + "integrity": "sha512-2BShG/d5yoZyXZfVePH91urL5wTG6ASZU9M4o03lKK8u8UW1y08OMttBSOADTcJrnPMpvDXRG3G8fyLh4ovs8w==", "dev": true, "requires": { - "@babel/helper-create-regexp-features-plugin": "^7.12.13", - "@babel/helper-plugin-utils": "^7.12.13" + "@babel/helper-create-regexp-features-plugin": "^7.18.6", + "@babel/helper-plugin-utils": "^7.18.6" } }, "@babel/plugin-syntax-async-generators": { @@ -34198,8 +34691,18 @@ "@babel/helper-plugin-utils": "^7.12.13" } }, + "@babel/plugin-syntax-class-static-block": { + "version": "7.14.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-class-static-block/-/plugin-syntax-class-static-block-7.14.5.tgz", + "integrity": "sha512-b+YyPmr6ldyNnM6sqYeMWE+bgJcJpO6yS4QD7ymxgH34GBPNDM/THBh8iunyvKIZztiwLH4CJZ0RxTk9emgpjw==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.14.5" + } + }, "@babel/plugin-syntax-dynamic-import": { "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-dynamic-import/-/plugin-syntax-dynamic-import-7.8.3.tgz", "integrity": "sha512-5gdGbFon+PszYzqs83S3E5mpi7/y/8M9eC90MRTZfduQOYW76ig6SOSPNe41IG5LoP3FGBn2N0RjVDSQiS94kQ==", "dev": true, "requires": { @@ -34208,12 +34711,22 @@ }, "@babel/plugin-syntax-export-namespace-from": { "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-export-namespace-from/-/plugin-syntax-export-namespace-from-7.8.3.tgz", "integrity": "sha512-MXf5laXo6c1IbEbegDmzGPwGNTsHZmEy6QGznu5Sh2UCWvueywb2ee+CCE4zQiZstxU9BMoQO9i6zUFSY0Kj0Q==", "dev": true, "requires": { "@babel/helper-plugin-utils": "^7.8.3" } }, + "@babel/plugin-syntax-import-assertions": { + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-import-assertions/-/plugin-syntax-import-assertions-7.18.6.tgz", + "integrity": "sha512-/DU3RXad9+bZwrgWJQKbr39gYbJpLJHezqEzRzi/BHRlJ9zsQb4CK2CA/5apllXNomwA1qHwzvHl+AdEmC5krQ==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.18.6" + } + }, "@babel/plugin-syntax-import-meta": { "version": "7.10.4", "integrity": "sha512-Yqfm+XDx0+Prh3VSeEQCPU81yC+JWZ2pDPFSS4ZdpfZhp4MkFMaDC1UqseovEKwSUpnIL7+vK+Clp7bfh0iD7g==", @@ -34287,12 +34800,22 @@ "@babel/helper-plugin-utils": "^7.8.0" } }, + "@babel/plugin-syntax-private-property-in-object": { + "version": "7.14.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-private-property-in-object/-/plugin-syntax-private-property-in-object-7.14.5.tgz", + "integrity": "sha512-0wVnp9dxJ72ZUJDV27ZfbSj6iHLoytYZmh3rFcxNnvsJF3ktkzLDZPy/mA17HGsaQT3/DQsWYX1f1QGWkCoVUg==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.14.5" + } + }, "@babel/plugin-syntax-top-level-await": { - "version": "7.12.13", - "integrity": "sha512-A81F9pDwyS7yM//KwbCSDqy3Uj4NMIurtplxphWxoYtNPov7cJsDkAFNNyVlIZ3jwGycVsurZ+LtOA8gZ376iQ==", + "version": "7.14.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-top-level-await/-/plugin-syntax-top-level-await-7.14.5.tgz", + "integrity": "sha512-hx++upLv5U1rgYfwe1xBQUhRmU41NEvpUvrp8jkrSCdvGSnM5/qdRMtylJ6PG5OFkBaHkbTAKTnd3/YyESRHFw==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.12.13" + "@babel/helper-plugin-utils": "^7.14.5" } }, "@babel/plugin-syntax-typescript": { @@ -34304,209 +34827,236 @@ } }, "@babel/plugin-transform-arrow-functions": { - "version": "7.13.0", - "integrity": "sha512-96lgJagobeVmazXFaDrbmCLQxBysKu7U6Do3mLsx27gf5Dk85ezysrs2BZUpXD703U/Su1xTBDxxar2oa4jAGg==", + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-arrow-functions/-/plugin-transform-arrow-functions-7.18.6.tgz", + "integrity": "sha512-9S9X9RUefzrsHZmKMbDXxweEH+YlE8JJEuat9FdvW9Qh1cw7W64jELCtWNkPBPX5En45uy28KGvA/AySqUh8CQ==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.13.0" + "@babel/helper-plugin-utils": "^7.18.6" } }, "@babel/plugin-transform-async-to-generator": { - "version": "7.13.0", - "integrity": "sha512-3j6E004Dx0K3eGmhxVJxwwI89CTJrce7lg3UrtFuDAVQ/2+SJ/h/aSFOeE6/n0WB1GsOffsJp6MnPQNQ8nmwhg==", + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-async-to-generator/-/plugin-transform-async-to-generator-7.18.6.tgz", + "integrity": "sha512-ARE5wZLKnTgPW7/1ftQmSi1CmkqqHo2DNmtztFhvgtOWSDfq0Cq9/9L+KnZNYSNrydBekhW3rwShduf59RoXag==", "dev": true, "requires": { - "@babel/helper-module-imports": "^7.12.13", - "@babel/helper-plugin-utils": "^7.13.0", - "@babel/helper-remap-async-to-generator": "^7.13.0" + "@babel/helper-module-imports": "^7.18.6", + "@babel/helper-plugin-utils": "^7.18.6", + "@babel/helper-remap-async-to-generator": "^7.18.6" } }, "@babel/plugin-transform-block-scoped-functions": { - "version": "7.12.13", - "integrity": "sha512-zNyFqbc3kI/fVpqwfqkg6RvBgFpC4J18aKKMmv7KdQ/1GgREapSJAykLMVNwfRGO3BtHj3YQZl8kxCXPcVMVeg==", + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-block-scoped-functions/-/plugin-transform-block-scoped-functions-7.18.6.tgz", + "integrity": "sha512-ExUcOqpPWnliRcPqves5HJcJOvHvIIWfuS4sroBUenPuMdmW+SMHDakmtS7qOo13sVppmUijqeTv7qqGsvURpQ==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.12.13" + "@babel/helper-plugin-utils": "^7.18.6" } }, "@babel/plugin-transform-block-scoping": { - "version": "7.12.13", - "integrity": "sha512-Pxwe0iqWJX4fOOM2kEZeUuAxHMWb9nK+9oh5d11bsLoB0xMg+mkDpt0eYuDZB7ETrY9bbcVlKUGTOGWy7BHsMQ==", + "version": "7.18.9", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-block-scoping/-/plugin-transform-block-scoping-7.18.9.tgz", + "integrity": "sha512-5sDIJRV1KtQVEbt/EIBwGy4T01uYIo4KRB3VUqzkhrAIOGx7AoctL9+Ux88btY0zXdDyPJ9mW+bg+v+XEkGmtw==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.12.13" + "@babel/helper-plugin-utils": "^7.18.9" } }, "@babel/plugin-transform-classes": { - "version": "7.13.0", - "integrity": "sha512-9BtHCPUARyVH1oXGcSJD3YpsqRLROJx5ZNP6tN5vnk17N0SVf9WCtf8Nuh1CFmgByKKAIMstitKduoCmsaDK5g==", + "version": "7.19.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-classes/-/plugin-transform-classes-7.19.0.tgz", + "integrity": "sha512-YfeEE9kCjqTS9IitkgfJuxjcEtLUHMqa8yUJ6zdz8vR7hKuo6mOy2C05P0F1tdMmDCeuyidKnlrw/iTppHcr2A==", "dev": true, "requires": { - "@babel/helper-annotate-as-pure": "^7.12.13", - "@babel/helper-function-name": "^7.12.13", - "@babel/helper-optimise-call-expression": "^7.12.13", - "@babel/helper-plugin-utils": "^7.13.0", - "@babel/helper-replace-supers": "^7.13.0", - "@babel/helper-split-export-declaration": "^7.12.13", + "@babel/helper-annotate-as-pure": "^7.18.6", + "@babel/helper-compilation-targets": "^7.19.0", + "@babel/helper-environment-visitor": "^7.18.9", + "@babel/helper-function-name": "^7.19.0", + "@babel/helper-optimise-call-expression": "^7.18.6", + "@babel/helper-plugin-utils": "^7.19.0", + "@babel/helper-replace-supers": "^7.18.9", + "@babel/helper-split-export-declaration": "^7.18.6", "globals": "^11.1.0" } }, "@babel/plugin-transform-computed-properties": { - "version": "7.13.0", - "integrity": "sha512-RRqTYTeZkZAz8WbieLTvKUEUxZlUTdmL5KGMyZj7FnMfLNKV4+r5549aORG/mgojRmFlQMJDUupwAMiF2Q7OUg==", + "version": "7.18.9", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-computed-properties/-/plugin-transform-computed-properties-7.18.9.tgz", + "integrity": "sha512-+i0ZU1bCDymKakLxn5srGHrsAPRELC2WIbzwjLhHW9SIE1cPYkLCL0NlnXMZaM1vhfgA2+M7hySk42VBvrkBRw==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.13.0" + "@babel/helper-plugin-utils": "^7.18.9" } }, "@babel/plugin-transform-destructuring": { - "version": "7.13.0", - "integrity": "sha512-zym5em7tePoNT9s964c0/KU3JPPnuq7VhIxPRefJ4/s82cD+q1mgKfuGRDMCPL0HTyKz4dISuQlCusfgCJ86HA==", + "version": "7.18.13", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-destructuring/-/plugin-transform-destructuring-7.18.13.tgz", + "integrity": "sha512-TodpQ29XekIsex2A+YJPj5ax2plkGa8YYY6mFjCohk/IG9IY42Rtuj1FuDeemfg2ipxIFLzPeA83SIBnlhSIow==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.13.0" + "@babel/helper-plugin-utils": "^7.18.9" } }, "@babel/plugin-transform-dotall-regex": { - "version": "7.12.13", - "integrity": "sha512-foDrozE65ZFdUC2OfgeOCrEPTxdB3yjqxpXh8CH+ipd9CHd4s/iq81kcUpyH8ACGNEPdFqbtzfgzbT/ZGlbDeQ==", + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-dotall-regex/-/plugin-transform-dotall-regex-7.18.6.tgz", + "integrity": "sha512-6S3jpun1eEbAxq7TdjLotAsl4WpQI9DxfkycRcKrjhQYzU87qpXdknpBg/e+TdcMehqGnLFi7tnFUBR02Vq6wg==", "dev": true, "requires": { - "@babel/helper-create-regexp-features-plugin": "^7.12.13", - "@babel/helper-plugin-utils": "^7.12.13" + "@babel/helper-create-regexp-features-plugin": "^7.18.6", + "@babel/helper-plugin-utils": "^7.18.6" } }, "@babel/plugin-transform-duplicate-keys": { - "version": "7.12.13", - "integrity": "sha512-NfADJiiHdhLBW3pulJlJI2NB0t4cci4WTZ8FtdIuNc2+8pslXdPtRRAEWqUY+m9kNOk2eRYbTAOipAxlrOcwwQ==", + "version": "7.18.9", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-duplicate-keys/-/plugin-transform-duplicate-keys-7.18.9.tgz", + "integrity": "sha512-d2bmXCtZXYc59/0SanQKbiWINadaJXqtvIQIzd4+hNwkWBgyCd5F/2t1kXoUdvPMrxzPvhK6EMQRROxsue+mfw==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.12.13" + "@babel/helper-plugin-utils": "^7.18.9" } }, "@babel/plugin-transform-exponentiation-operator": { - "version": "7.12.13", - "integrity": "sha512-fbUelkM1apvqez/yYx1/oICVnGo2KM5s63mhGylrmXUxK/IAXSIf87QIxVfZldWf4QsOafY6vV3bX8aMHSvNrA==", + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-exponentiation-operator/-/plugin-transform-exponentiation-operator-7.18.6.tgz", + "integrity": "sha512-wzEtc0+2c88FVR34aQmiz56dxEkxr2g8DQb/KfaFa1JYXOFVsbhvAonFN6PwVWj++fKmku8NP80plJ5Et4wqHw==", "dev": true, "requires": { - "@babel/helper-builder-binary-assignment-operator-visitor": "^7.12.13", - "@babel/helper-plugin-utils": "^7.12.13" + "@babel/helper-builder-binary-assignment-operator-visitor": "^7.18.6", + "@babel/helper-plugin-utils": "^7.18.6" } }, "@babel/plugin-transform-for-of": { - "version": "7.13.0", - "integrity": "sha512-IHKT00mwUVYE0zzbkDgNRP6SRzvfGCYsOxIRz8KsiaaHCcT9BWIkO+H9QRJseHBLOGBZkHUdHiqj6r0POsdytg==", + "version": "7.18.8", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-for-of/-/plugin-transform-for-of-7.18.8.tgz", + "integrity": "sha512-yEfTRnjuskWYo0k1mHUqrVWaZwrdq8AYbfrpqULOJOaucGSp4mNMVps+YtA8byoevxS/urwU75vyhQIxcCgiBQ==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.13.0" + "@babel/helper-plugin-utils": "^7.18.6" } }, "@babel/plugin-transform-function-name": { - "version": "7.12.13", - "integrity": "sha512-6K7gZycG0cmIwwF7uMK/ZqeCikCGVBdyP2J5SKNCXO5EOHcqi+z7Jwf8AmyDNcBgxET8DrEtCt/mPKPyAzXyqQ==", + "version": "7.18.9", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-function-name/-/plugin-transform-function-name-7.18.9.tgz", + "integrity": "sha512-WvIBoRPaJQ5yVHzcnJFor7oS5Ls0PYixlTYE63lCj2RtdQEl15M68FXQlxnG6wdraJIXRdR7KI+hQ7q/9QjrCQ==", "dev": true, "requires": { - "@babel/helper-function-name": "^7.12.13", - "@babel/helper-plugin-utils": "^7.12.13" + "@babel/helper-compilation-targets": "^7.18.9", + "@babel/helper-function-name": "^7.18.9", + "@babel/helper-plugin-utils": "^7.18.9" } }, "@babel/plugin-transform-literals": { - "version": "7.12.13", - "integrity": "sha512-FW+WPjSR7hiUxMcKqyNjP05tQ2kmBCdpEpZHY1ARm96tGQCCBvXKnpjILtDplUnJ/eHZ0lALLM+d2lMFSpYJrQ==", + "version": "7.18.9", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-literals/-/plugin-transform-literals-7.18.9.tgz", + "integrity": "sha512-IFQDSRoTPnrAIrI5zoZv73IFeZu2dhu6irxQjY9rNjTT53VmKg9fenjvoiOWOkJ6mm4jKVPtdMzBY98Fp4Z4cg==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.12.13" + "@babel/helper-plugin-utils": "^7.18.9" } }, "@babel/plugin-transform-member-expression-literals": { - "version": "7.12.13", - "integrity": "sha512-kxLkOsg8yir4YeEPHLuO2tXP9R/gTjpuTOjshqSpELUN3ZAg2jfDnKUvzzJxObun38sw3wm4Uu69sX/zA7iRvg==", + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-member-expression-literals/-/plugin-transform-member-expression-literals-7.18.6.tgz", + "integrity": "sha512-qSF1ihLGO3q+/g48k85tUjD033C29TNTVB2paCwZPVmOsjn9pClvYYrM2VeJpBY2bcNkuny0YUyTNRyRxJ54KA==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.12.13" + "@babel/helper-plugin-utils": "^7.18.6" } }, "@babel/plugin-transform-modules-amd": { - "version": "7.13.0", - "integrity": "sha512-EKy/E2NHhY/6Vw5d1k3rgoobftcNUmp9fGjb9XZwQLtTctsRBOTRO7RHHxfIky1ogMN5BxN7p9uMA3SzPfotMQ==", + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-amd/-/plugin-transform-modules-amd-7.18.6.tgz", + "integrity": "sha512-Pra5aXsmTsOnjM3IajS8rTaLCy++nGM4v3YR4esk5PCsyg9z8NA5oQLwxzMUtDBd8F+UmVza3VxoAaWCbzH1rg==", "dev": true, "requires": { - "@babel/helper-module-transforms": "^7.13.0", - "@babel/helper-plugin-utils": "^7.13.0", + "@babel/helper-module-transforms": "^7.18.6", + "@babel/helper-plugin-utils": "^7.18.6", "babel-plugin-dynamic-import-node": "^2.3.3" } }, "@babel/plugin-transform-modules-commonjs": { - "version": "7.13.8", - "integrity": "sha512-9QiOx4MEGglfYZ4XOnU79OHr6vIWUakIj9b4mioN8eQIoEh+pf5p/zEB36JpDFWA12nNMiRf7bfoRvl9Rn79Bw==", + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-commonjs/-/plugin-transform-modules-commonjs-7.18.6.tgz", + "integrity": "sha512-Qfv2ZOWikpvmedXQJDSbxNqy7Xr/j2Y8/KfijM0iJyKkBTmWuvCA1yeH1yDM7NJhBW/2aXxeucLj6i80/LAJ/Q==", "dev": true, "requires": { - "@babel/helper-module-transforms": "^7.13.0", - "@babel/helper-plugin-utils": "^7.13.0", - "@babel/helper-simple-access": "^7.12.13", + "@babel/helper-module-transforms": "^7.18.6", + "@babel/helper-plugin-utils": "^7.18.6", + "@babel/helper-simple-access": "^7.18.6", "babel-plugin-dynamic-import-node": "^2.3.3" } }, "@babel/plugin-transform-modules-systemjs": { - "version": "7.13.8", - "integrity": "sha512-hwqctPYjhM6cWvVIlOIe27jCIBgHCsdH2xCJVAYQm7V5yTMoilbVMi9f6wKg0rpQAOn6ZG4AOyvCqFF/hUh6+A==", + "version": "7.19.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-systemjs/-/plugin-transform-modules-systemjs-7.19.0.tgz", + "integrity": "sha512-x9aiR0WXAWmOWsqcsnrzGR+ieaTMVyGyffPVA7F8cXAGt/UxefYv6uSHZLkAFChN5M5Iy1+wjE+xJuPt22H39A==", "dev": true, "requires": { - "@babel/helper-hoist-variables": "^7.13.0", - "@babel/helper-module-transforms": "^7.13.0", - "@babel/helper-plugin-utils": "^7.13.0", - "@babel/helper-validator-identifier": "^7.12.11", + "@babel/helper-hoist-variables": "^7.18.6", + "@babel/helper-module-transforms": "^7.19.0", + "@babel/helper-plugin-utils": "^7.19.0", + "@babel/helper-validator-identifier": "^7.18.6", "babel-plugin-dynamic-import-node": "^2.3.3" } }, "@babel/plugin-transform-modules-umd": { - "version": "7.13.0", - "integrity": "sha512-D/ILzAh6uyvkWjKKyFE/W0FzWwasv6vPTSqPcjxFqn6QpX3u8DjRVliq4F2BamO2Wee/om06Vyy+vPkNrd4wxw==", + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-umd/-/plugin-transform-modules-umd-7.18.6.tgz", + "integrity": "sha512-dcegErExVeXcRqNtkRU/z8WlBLnvD4MRnHgNs3MytRO1Mn1sHRyhbcpYbVMGclAqOjdW+9cfkdZno9dFdfKLfQ==", "dev": true, "requires": { - "@babel/helper-module-transforms": "^7.13.0", - "@babel/helper-plugin-utils": "^7.13.0" + "@babel/helper-module-transforms": "^7.18.6", + "@babel/helper-plugin-utils": "^7.18.6" } }, "@babel/plugin-transform-named-capturing-groups-regex": { - "version": "7.12.13", - "integrity": "sha512-Xsm8P2hr5hAxyYblrfACXpQKdQbx4m2df9/ZZSQ8MAhsadw06+jW7s9zsSw6he+mJZXRlVMyEnVktJo4zjk1WA==", + "version": "7.19.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-named-capturing-groups-regex/-/plugin-transform-named-capturing-groups-regex-7.19.0.tgz", + "integrity": "sha512-HDSuqOQzkU//kfGdiHBt71/hkDTApw4U/cMVgKgX7PqfB3LOaK+2GtCEsBu1dL9CkswDm0Gwehht1dCr421ULQ==", "dev": true, "requires": { - "@babel/helper-create-regexp-features-plugin": "^7.12.13" + "@babel/helper-create-regexp-features-plugin": "^7.19.0", + "@babel/helper-plugin-utils": "^7.19.0" } }, "@babel/plugin-transform-new-target": { - "version": "7.12.13", - "integrity": "sha512-/KY2hbLxrG5GTQ9zzZSc3xWiOy379pIETEhbtzwZcw9rvuaVV4Fqy7BYGYOWZnaoXIQYbbJ0ziXLa/sKcGCYEQ==", + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-new-target/-/plugin-transform-new-target-7.18.6.tgz", + "integrity": "sha512-DjwFA/9Iu3Z+vrAn+8pBUGcjhxKguSMlsFqeCKbhb9BAV756v0krzVK04CRDi/4aqmk8BsHb4a/gFcaA5joXRw==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.12.13" + "@babel/helper-plugin-utils": "^7.18.6" } }, "@babel/plugin-transform-object-super": { - "version": "7.12.13", - "integrity": "sha512-JzYIcj3XtYspZDV8j9ulnoMPZZnF/Cj0LUxPOjR89BdBVx+zYJI9MdMIlUZjbXDX+6YVeS6I3e8op+qQ3BYBoQ==", + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-object-super/-/plugin-transform-object-super-7.18.6.tgz", + "integrity": "sha512-uvGz6zk+pZoS1aTZrOvrbj6Pp/kK2mp45t2B+bTDre2UgsZZ8EZLSJtUg7m/no0zOJUWgFONpB7Zv9W2tSaFlA==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.12.13", - "@babel/helper-replace-supers": "^7.12.13" + "@babel/helper-plugin-utils": "^7.18.6", + "@babel/helper-replace-supers": "^7.18.6" } }, "@babel/plugin-transform-parameters": { - "version": "7.13.0", - "integrity": "sha512-Jt8k/h/mIwE2JFEOb3lURoY5C85ETcYPnbuAJ96zRBzh1XHtQZfs62ChZ6EP22QlC8c7Xqr9q+e1SU5qttwwjw==", + "version": "7.18.8", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-parameters/-/plugin-transform-parameters-7.18.8.tgz", + "integrity": "sha512-ivfbE3X2Ss+Fj8nnXvKJS6sjRG4gzwPMsP+taZC+ZzEGjAYlvENixmt1sZ5Ca6tWls+BlKSGKPJ6OOXvXCbkFg==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.13.0" + "@babel/helper-plugin-utils": "^7.18.6" } }, "@babel/plugin-transform-property-literals": { - "version": "7.12.13", - "integrity": "sha512-nqVigwVan+lR+g8Fj8Exl0UQX2kymtjcWfMOYM1vTYEKujeyv2SkMgazf2qNcK7l4SDiKyTA/nHCPqL4e2zo1A==", + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-property-literals/-/plugin-transform-property-literals-7.18.6.tgz", + "integrity": "sha512-cYcs6qlgafTud3PAzrrRNbQtfpQ8+y/+M5tKmksS9+M1ckbH6kzY8MrexEM9mcA6JDsukE19iIRvAyYl463sMg==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.12.13" + "@babel/helper-plugin-utils": "^7.18.6" } }, "@babel/plugin-transform-react-constant-elements": { @@ -34527,16 +35077,16 @@ } }, "@babel/plugin-transform-react-jsx": { - "version": "7.18.10", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-react-jsx/-/plugin-transform-react-jsx-7.18.10.tgz", - "integrity": "sha512-gCy7Iikrpu3IZjYZolFE4M1Sm+nrh1/6za2Ewj77Z+XirT4TsbJcvOFOyF+fRPwU6AKKK136CZxx6L8AbSFG6A==", + "version": "7.19.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-react-jsx/-/plugin-transform-react-jsx-7.19.0.tgz", + "integrity": "sha512-UVEvX3tXie3Szm3emi1+G63jyw1w5IcMY0FSKM+CRnKRI5Mr1YbCNgsSTwoTwKphQEG9P+QqmuRFneJPZuHNhg==", "dev": true, "requires": { "@babel/helper-annotate-as-pure": "^7.18.6", "@babel/helper-module-imports": "^7.18.6", - "@babel/helper-plugin-utils": "^7.18.9", + "@babel/helper-plugin-utils": "^7.19.0", "@babel/plugin-syntax-jsx": "^7.18.6", - "@babel/types": "^7.18.10" + "@babel/types": "^7.19.0" } }, "@babel/plugin-transform-react-jsx-development": { @@ -34559,19 +35109,22 @@ } }, "@babel/plugin-transform-regenerator": { - "version": "7.12.13", - "integrity": "sha512-lxb2ZAvSLyJ2PEe47hoGWPmW22v7CtSl9jW8mingV4H2sEX/JOcrAj2nPuGWi56ERUm2bUpjKzONAuT6HCn2EA==", + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-regenerator/-/plugin-transform-regenerator-7.18.6.tgz", + "integrity": "sha512-poqRI2+qiSdeldcz4wTSTXBRryoq3Gc70ye7m7UD5Ww0nE29IXqMl6r7Nd15WBgRd74vloEMlShtH6CKxVzfmQ==", "dev": true, "requires": { - "regenerator-transform": "^0.14.2" + "@babel/helper-plugin-utils": "^7.18.6", + "regenerator-transform": "^0.15.0" } }, "@babel/plugin-transform-reserved-words": { - "version": "7.12.13", - "integrity": "sha512-xhUPzDXxZN1QfiOy/I5tyye+TRz6lA7z6xaT4CLOjPRMVg1ldRf0LHw0TDBpYL4vG78556WuHdyO9oi5UmzZBg==", + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-reserved-words/-/plugin-transform-reserved-words-7.18.6.tgz", + "integrity": "sha512-oX/4MyMoypzHjFrT1CdivfKZ+XvIPMFXwwxHp/r0Ddy2Vuomt4HDFGmft1TAY2yiTKiNSsh3kjBAzcM8kSdsjA==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.12.13" + "@babel/helper-plugin-utils": "^7.18.6" } }, "@babel/plugin-transform-runtime": { @@ -34587,40 +35140,6 @@ "semver": "^6.3.0" }, "dependencies": { - "@babel/helper-define-polyfill-provider": { - "version": "0.3.1", - "integrity": "sha512-J9hGMpJQmtWmj46B3kBHmL38UhJGhYX7eqkcq+2gsstyYt341HmPeWspihX43yVRA0mS+8GGk2Gckc7bY/HCmA==", - "dev": true, - "requires": { - "@babel/helper-compilation-targets": "^7.13.0", - "@babel/helper-module-imports": "^7.12.13", - "@babel/helper-plugin-utils": "^7.13.0", - "@babel/traverse": "^7.13.0", - "debug": "^4.1.1", - "lodash.debounce": "^4.0.8", - "resolve": "^1.14.2", - "semver": "^6.1.2" - } - }, - "babel-plugin-polyfill-corejs2": { - "version": "0.3.1", - "integrity": "sha512-v7/T6EQcNfVLfcN2X8Lulb7DjprieyLWJK/zOWH5DUYcAgex9sP3h25Q+DLsX9TloXe3y1O8l2q2Jv9q8UVB9w==", - "dev": true, - "requires": { - "@babel/compat-data": "^7.13.11", - "@babel/helper-define-polyfill-provider": "^0.3.1", - "semver": "^6.1.1" - } - }, - "babel-plugin-polyfill-corejs3": { - "version": "0.5.1", - "integrity": "sha512-TihqEe4sQcb/QcPJvxe94/9RZuLQuF1+To4WqQcRvc+3J3gLCPIPgDKzGLG6zmQLfH3nn25heRuDNkS2KR4I8A==", - "dev": true, - "requires": { - "@babel/helper-define-polyfill-provider": "^0.3.1", - "core-js-compat": "^3.20.0" - } - }, "babel-plugin-polyfill-regenerator": { "version": "0.3.1", "integrity": "sha512-Y2B06tvgHYt1x0yz17jGkGeeMr5FeKUu+ASJ+N6nB5lQ8Dapfg42i0OVrf8PNGJ3zKL4A23snMi1IRwrqqND7A==", @@ -34637,90 +35156,103 @@ } }, "@babel/plugin-transform-shorthand-properties": { - "version": "7.12.13", - "integrity": "sha512-xpL49pqPnLtf0tVluuqvzWIgLEhuPpZzvs2yabUHSKRNlN7ScYU7aMlmavOeyXJZKgZKQRBlh8rHbKiJDraTSw==", + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-shorthand-properties/-/plugin-transform-shorthand-properties-7.18.6.tgz", + "integrity": "sha512-eCLXXJqv8okzg86ywZJbRn19YJHU4XUa55oz2wbHhaQVn/MM+XhukiT7SYqp/7o00dg52Rj51Ny+Ecw4oyoygw==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.12.13" + "@babel/helper-plugin-utils": "^7.18.6" } }, "@babel/plugin-transform-spread": { - "version": "7.13.0", - "integrity": "sha512-V6vkiXijjzYeFmQTr3dBxPtZYLPcUfY34DebOU27jIl2M/Y8Egm52Hw82CSjjPqd54GTlJs5x+CR7HeNr24ckg==", + "version": "7.19.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-spread/-/plugin-transform-spread-7.19.0.tgz", + "integrity": "sha512-RsuMk7j6n+r752EtzyScnWkQyuJdli6LdO5Klv8Yx0OfPVTcQkIUfS8clx5e9yHXzlnhOZF3CbQ8C2uP5j074w==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.13.0", - "@babel/helper-skip-transparent-expression-wrappers": "^7.12.1" + "@babel/helper-plugin-utils": "^7.19.0", + "@babel/helper-skip-transparent-expression-wrappers": "^7.18.9" } }, "@babel/plugin-transform-sticky-regex": { - "version": "7.12.13", - "integrity": "sha512-Jc3JSaaWT8+fr7GRvQP02fKDsYk4K/lYwWq38r/UGfaxo89ajud321NH28KRQ7xy1Ybc0VUE5Pz8psjNNDUglg==", + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-sticky-regex/-/plugin-transform-sticky-regex-7.18.6.tgz", + "integrity": "sha512-kfiDrDQ+PBsQDO85yj1icueWMfGfJFKN1KCkndygtu/C9+XUfydLC8Iv5UYJqRwy4zk8EcplRxEOeLyjq1gm6Q==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.12.13" + "@babel/helper-plugin-utils": "^7.18.6" } }, "@babel/plugin-transform-template-literals": { - "version": "7.13.0", - "integrity": "sha512-d67umW6nlfmr1iehCcBv69eSUSySk1EsIS8aTDX4Xo9qajAh6mYtcl4kJrBkGXuxZPEgVr7RVfAvNW6YQkd4Mw==", + "version": "7.18.9", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-template-literals/-/plugin-transform-template-literals-7.18.9.tgz", + "integrity": "sha512-S8cOWfT82gTezpYOiVaGHrCbhlHgKhQt8XH5ES46P2XWmX92yisoZywf5km75wv5sYcXDUCLMmMxOLCtthDgMA==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.13.0" + "@babel/helper-plugin-utils": "^7.18.9" } }, "@babel/plugin-transform-typeof-symbol": { - "version": "7.12.13", - "integrity": "sha512-eKv/LmUJpMnu4npgfvs3LiHhJua5fo/CysENxa45YCQXZwKnGCQKAg87bvoqSW1fFT+HA32l03Qxsm8ouTY3ZQ==", + "version": "7.18.9", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-typeof-symbol/-/plugin-transform-typeof-symbol-7.18.9.tgz", + "integrity": "sha512-SRfwTtF11G2aemAZWivL7PD+C9z52v9EvMqH9BuYbabyPuKUvSWks3oCg6041pT925L4zVFqaVBeECwsmlguEw==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.12.13" + "@babel/helper-plugin-utils": "^7.18.9" } }, "@babel/plugin-transform-unicode-escapes": { - "version": "7.12.13", - "integrity": "sha512-0bHEkdwJ/sN/ikBHfSmOXPypN/beiGqjo+o4/5K+vxEFNPRPdImhviPakMKG4x96l85emoa0Z6cDflsdBusZbw==", + "version": "7.18.10", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-unicode-escapes/-/plugin-transform-unicode-escapes-7.18.10.tgz", + "integrity": "sha512-kKAdAI+YzPgGY/ftStBFXTI1LZFju38rYThnfMykS+IXy8BVx+res7s2fxf1l8I35DV2T97ezo6+SGrXz6B3iQ==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.12.13" + "@babel/helper-plugin-utils": "^7.18.9" } }, "@babel/plugin-transform-unicode-regex": { - "version": "7.12.13", - "integrity": "sha512-mDRzSNY7/zopwisPZ5kM9XKCfhchqIYwAKRERtEnhYscZB79VRekuRSoYbN0+KVe3y8+q1h6A4svXtP7N+UoCA==", + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-unicode-regex/-/plugin-transform-unicode-regex-7.18.6.tgz", + "integrity": "sha512-gE7A6Lt7YLnNOL3Pb9BNeZvi+d8l7tcRrG4+pwJjK9hD2xX4mEvjlQW60G9EEmfXVYRPv9VRQcyegIVHCql/AA==", "dev": true, "requires": { - "@babel/helper-create-regexp-features-plugin": "^7.12.13", - "@babel/helper-plugin-utils": "^7.12.13" + "@babel/helper-create-regexp-features-plugin": "^7.18.6", + "@babel/helper-plugin-utils": "^7.18.6" } }, "@babel/preset-env": { - "version": "7.13.12", - "integrity": "sha512-JzElc6jk3Ko6zuZgBtjOd01pf9yYDEIH8BcqVuYIuOkzOwDesoa/Nz4gIo4lBG6K861KTV9TvIgmFuT6ytOaAA==", - "dev": true, - "requires": { - "@babel/compat-data": "^7.13.12", - "@babel/helper-compilation-targets": "^7.13.10", - "@babel/helper-plugin-utils": "^7.13.0", - "@babel/helper-validator-option": "^7.12.17", - "@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining": "^7.13.12", - "@babel/plugin-proposal-async-generator-functions": "^7.13.8", - "@babel/plugin-proposal-class-properties": "^7.13.0", - "@babel/plugin-proposal-dynamic-import": "^7.13.8", - "@babel/plugin-proposal-export-namespace-from": "^7.12.13", - "@babel/plugin-proposal-json-strings": "^7.13.8", - "@babel/plugin-proposal-logical-assignment-operators": "^7.13.8", - "@babel/plugin-proposal-nullish-coalescing-operator": "^7.13.8", - "@babel/plugin-proposal-numeric-separator": "^7.12.13", - "@babel/plugin-proposal-object-rest-spread": "^7.13.8", - "@babel/plugin-proposal-optional-catch-binding": "^7.13.8", - "@babel/plugin-proposal-optional-chaining": "^7.13.12", - "@babel/plugin-proposal-private-methods": "^7.13.0", - "@babel/plugin-proposal-unicode-property-regex": "^7.12.13", + "version": "7.19.0", + "resolved": "https://registry.npmjs.org/@babel/preset-env/-/preset-env-7.19.0.tgz", + "integrity": "sha512-1YUju1TAFuzjIQqNM9WsF4U6VbD/8t3wEAlw3LFYuuEr+ywqLRcSXxFKz4DCEj+sN94l/XTDiUXYRrsvMpz9WQ==", + "dev": true, + "requires": { + "@babel/compat-data": "^7.19.0", + "@babel/helper-compilation-targets": "^7.19.0", + "@babel/helper-plugin-utils": "^7.19.0", + "@babel/helper-validator-option": "^7.18.6", + "@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression": "^7.18.6", + "@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining": "^7.18.9", + "@babel/plugin-proposal-async-generator-functions": "^7.19.0", + "@babel/plugin-proposal-class-properties": "^7.18.6", + "@babel/plugin-proposal-class-static-block": "^7.18.6", + "@babel/plugin-proposal-dynamic-import": "^7.18.6", + "@babel/plugin-proposal-export-namespace-from": "^7.18.9", + "@babel/plugin-proposal-json-strings": "^7.18.6", + "@babel/plugin-proposal-logical-assignment-operators": "^7.18.9", + "@babel/plugin-proposal-nullish-coalescing-operator": "^7.18.6", + "@babel/plugin-proposal-numeric-separator": "^7.18.6", + "@babel/plugin-proposal-object-rest-spread": "^7.18.9", + "@babel/plugin-proposal-optional-catch-binding": "^7.18.6", + "@babel/plugin-proposal-optional-chaining": "^7.18.9", + "@babel/plugin-proposal-private-methods": "^7.18.6", + "@babel/plugin-proposal-private-property-in-object": "^7.18.6", + "@babel/plugin-proposal-unicode-property-regex": "^7.18.6", "@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.18.6", "@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", @@ -34728,45 +35260,46 @@ "@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-top-level-await": "^7.12.13", - "@babel/plugin-transform-arrow-functions": "^7.13.0", - "@babel/plugin-transform-async-to-generator": "^7.13.0", - "@babel/plugin-transform-block-scoped-functions": "^7.12.13", - "@babel/plugin-transform-block-scoping": "^7.12.13", - "@babel/plugin-transform-classes": "^7.13.0", - "@babel/plugin-transform-computed-properties": "^7.13.0", - "@babel/plugin-transform-destructuring": "^7.13.0", - "@babel/plugin-transform-dotall-regex": "^7.12.13", - "@babel/plugin-transform-duplicate-keys": "^7.12.13", - "@babel/plugin-transform-exponentiation-operator": "^7.12.13", - "@babel/plugin-transform-for-of": "^7.13.0", - "@babel/plugin-transform-function-name": "^7.12.13", - "@babel/plugin-transform-literals": "^7.12.13", - "@babel/plugin-transform-member-expression-literals": "^7.12.13", - "@babel/plugin-transform-modules-amd": "^7.13.0", - "@babel/plugin-transform-modules-commonjs": "^7.13.8", - "@babel/plugin-transform-modules-systemjs": "^7.13.8", - "@babel/plugin-transform-modules-umd": "^7.13.0", - "@babel/plugin-transform-named-capturing-groups-regex": "^7.12.13", - "@babel/plugin-transform-new-target": "^7.12.13", - "@babel/plugin-transform-object-super": "^7.12.13", - "@babel/plugin-transform-parameters": "^7.13.0", - "@babel/plugin-transform-property-literals": "^7.12.13", - "@babel/plugin-transform-regenerator": "^7.12.13", - "@babel/plugin-transform-reserved-words": "^7.12.13", - "@babel/plugin-transform-shorthand-properties": "^7.12.13", - "@babel/plugin-transform-spread": "^7.13.0", - "@babel/plugin-transform-sticky-regex": "^7.12.13", - "@babel/plugin-transform-template-literals": "^7.13.0", - "@babel/plugin-transform-typeof-symbol": "^7.12.13", - "@babel/plugin-transform-unicode-escapes": "^7.12.13", - "@babel/plugin-transform-unicode-regex": "^7.12.13", - "@babel/preset-modules": "^0.1.4", - "@babel/types": "^7.13.12", - "babel-plugin-polyfill-corejs2": "^0.1.4", - "babel-plugin-polyfill-corejs3": "^0.1.3", - "babel-plugin-polyfill-regenerator": "^0.1.2", - "core-js-compat": "^3.9.0", + "@babel/plugin-syntax-private-property-in-object": "^7.14.5", + "@babel/plugin-syntax-top-level-await": "^7.14.5", + "@babel/plugin-transform-arrow-functions": "^7.18.6", + "@babel/plugin-transform-async-to-generator": "^7.18.6", + "@babel/plugin-transform-block-scoped-functions": "^7.18.6", + "@babel/plugin-transform-block-scoping": "^7.18.9", + "@babel/plugin-transform-classes": "^7.19.0", + "@babel/plugin-transform-computed-properties": "^7.18.9", + "@babel/plugin-transform-destructuring": "^7.18.13", + "@babel/plugin-transform-dotall-regex": "^7.18.6", + "@babel/plugin-transform-duplicate-keys": "^7.18.9", + "@babel/plugin-transform-exponentiation-operator": "^7.18.6", + "@babel/plugin-transform-for-of": "^7.18.8", + "@babel/plugin-transform-function-name": "^7.18.9", + "@babel/plugin-transform-literals": "^7.18.9", + "@babel/plugin-transform-member-expression-literals": "^7.18.6", + "@babel/plugin-transform-modules-amd": "^7.18.6", + "@babel/plugin-transform-modules-commonjs": "^7.18.6", + "@babel/plugin-transform-modules-systemjs": "^7.19.0", + "@babel/plugin-transform-modules-umd": "^7.18.6", + "@babel/plugin-transform-named-capturing-groups-regex": "^7.19.0", + "@babel/plugin-transform-new-target": "^7.18.6", + "@babel/plugin-transform-object-super": "^7.18.6", + "@babel/plugin-transform-parameters": "^7.18.8", + "@babel/plugin-transform-property-literals": "^7.18.6", + "@babel/plugin-transform-regenerator": "^7.18.6", + "@babel/plugin-transform-reserved-words": "^7.18.6", + "@babel/plugin-transform-shorthand-properties": "^7.18.6", + "@babel/plugin-transform-spread": "^7.19.0", + "@babel/plugin-transform-sticky-regex": "^7.18.6", + "@babel/plugin-transform-template-literals": "^7.18.9", + "@babel/plugin-transform-typeof-symbol": "^7.18.9", + "@babel/plugin-transform-unicode-escapes": "^7.18.10", + "@babel/plugin-transform-unicode-regex": "^7.18.6", + "@babel/preset-modules": "^0.1.5", + "@babel/types": "^7.19.0", + "babel-plugin-polyfill-corejs2": "^0.3.2", + "babel-plugin-polyfill-corejs3": "^0.5.3", + "babel-plugin-polyfill-regenerator": "^0.4.0", + "core-js-compat": "^3.22.1", "semver": "^6.3.0" }, "dependencies": { @@ -34778,8 +35311,9 @@ } }, "@babel/preset-modules": { - "version": "0.1.4", - "integrity": "sha512-J36NhwnfdzpmH41M1DrnkkgAqhZaqr/NBdPfQ677mLzlaXo+oDiv1deyCDtgAhz8p328otdob0Du7+xgHGZbKg==", + "version": "0.1.5", + "resolved": "https://registry.npmjs.org/@babel/preset-modules/-/preset-modules-0.1.5.tgz", + "integrity": "sha512-A57th6YRG7oR3cq/yt/Y84MvGgE0eJG2F1JLhKuyG+jFxEgrd/HAMJatiFtmOiZurz+0DkrvbheCLaV5f2JfjA==", "dev": true, "requires": { "@babel/helper-plugin-utils": "^7.0.0", @@ -34820,36 +35354,38 @@ } }, "@babel/template": { - "version": "7.16.7", - "integrity": "sha512-I8j/x8kHUrbYRTUxXrrMbfCa7jxkE7tZre39x3kjr9hvI82cK1FfqLygotcWN5kdPGWcLdWMHpSBavse5tWw3w==", + "version": "7.18.10", + "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.18.10.tgz", + "integrity": "sha512-TI+rCtooWHr3QJ27kJxfjutghu44DLnasDMwpDqCXVTal9RLp3RSYNh4NdBrRP2cQAoG9A8juOQl6P6oZG4JxA==", "devOptional": true, "requires": { - "@babel/code-frame": "^7.16.7", - "@babel/parser": "^7.16.7", - "@babel/types": "^7.16.7" + "@babel/code-frame": "^7.18.6", + "@babel/parser": "^7.18.10", + "@babel/types": "^7.18.10" } }, "@babel/traverse": { - "version": "7.17.3", - "integrity": "sha512-5irClVky7TxRWIRtxlh2WPUUOLhcPN06AGgaQSB8AEwuyEBgJVuJ5imdHm5zxk8w0QS5T+tDfnDxAlhWjpb7cw==", + "version": "7.19.0", + "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.19.0.tgz", + "integrity": "sha512-4pKpFRDh+utd2mbRC8JLnlsMUii3PMHjpL6a0SZ4NMZy7YFP9aXORxEhdMVOc9CpWtDF09IkciQLEhK7Ml7gRA==", "devOptional": true, "requires": { - "@babel/code-frame": "^7.16.7", - "@babel/generator": "^7.17.3", - "@babel/helper-environment-visitor": "^7.16.7", - "@babel/helper-function-name": "^7.16.7", - "@babel/helper-hoist-variables": "^7.16.7", - "@babel/helper-split-export-declaration": "^7.16.7", - "@babel/parser": "^7.17.3", - "@babel/types": "^7.17.0", + "@babel/code-frame": "^7.18.6", + "@babel/generator": "^7.19.0", + "@babel/helper-environment-visitor": "^7.18.9", + "@babel/helper-function-name": "^7.19.0", + "@babel/helper-hoist-variables": "^7.18.6", + "@babel/helper-split-export-declaration": "^7.18.6", + "@babel/parser": "^7.19.0", + "@babel/types": "^7.19.0", "debug": "^4.1.0", "globals": "^11.1.0" } }, "@babel/types": { - "version": "7.18.13", - "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.18.13.tgz", - "integrity": "sha512-ePqfTihzW0W6XAU+aMw2ykilisStJfDnsejDCXRchCcMJ4O0+8DhPXf2YUbZ6wjBlsEmZwLK/sPweWtu8hcJYQ==", + "version": "7.19.0", + "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.19.0.tgz", + "integrity": "sha512-YuGopBq3ke25BVSiS6fgF49Ul9gH1x70Bcr6bqRLjWCkcX8Hre1/5+z+IiWOIerRMSSEfGZVB9z9kyq7wVs9YA==", "requires": { "@babel/helper-string-parser": "^7.18.10", "@babel/helper-validator-identifier": "^7.18.6", @@ -35006,9 +35542,9 @@ "integrity": "sha512-6U71C2Wp7r5XtFtQzYrW5iKFT67OixrSxjI4MptCHzdSVlgabczzqLe0ZSgnub/5Kp4hSbpDB1tMytZY9pwxxA==" }, "@esbuild/linux-loong64": { - "version": "0.15.3", - "resolved": "https://registry.npmjs.org/@esbuild/linux-loong64/-/linux-loong64-0.15.3.tgz", - "integrity": "sha512-pe7L+LnITFHUSUnuhSQRyYN2E5Anl0r7x/jW+ufc+4fBcaK3Q51b/3ufFWWhmIiuCkr7oKtmVSpaJ1DxbtSfuw==", + "version": "0.15.7", + "resolved": "https://registry.npmjs.org/@esbuild/linux-loong64/-/linux-loong64-0.15.7.tgz", + "integrity": "sha512-IKznSJOsVUuyt7cDzzSZyqBEcZe+7WlBqTVXiF1OXP/4Nm387ToaXZ0fyLwI1iBlI/bzpxVq411QE2/Bt2XWWw==", "dev": true, "optional": true }, @@ -36153,76 +36689,71 @@ } }, "@sentry/browser": { - "version": "6.17.6", - "integrity": "sha512-VUyYBzAferaMg/40hmhEdaLznd3NlT7gkQ0YPHDZdDHMunJVA+413yqCHsRTbzfVxzfmlWQtz5QzPBLQeubdzg==", + "version": "7.12.1", + "resolved": "https://registry.npmjs.org/@sentry/browser/-/browser-7.12.1.tgz", + "integrity": "sha512-pgyL65CrGFLe8sKcEG8KXAuVTE8zkAsyTlv/AuME06cSdxzO/memPK/r3BI6EM7WupIdga+V5tQUldeT1kgHNA==", "requires": { - "@sentry/core": "6.17.6", - "@sentry/types": "6.17.6", - "@sentry/utils": "6.17.6", + "@sentry/core": "7.12.1", + "@sentry/types": "7.12.1", + "@sentry/utils": "7.12.1", "tslib": "^1.9.3" } }, "@sentry/core": { - "version": "6.17.6", - "integrity": "sha512-wSNsQSqsW8vQ2HEvUEXYOJnzTyVDSWbyH4RHrWV1pQM8zqGx/qfz0sKFM5XFnE9ZeaXKL8LXV3v5i73v+z8lew==", + "version": "7.12.1", + "resolved": "https://registry.npmjs.org/@sentry/core/-/core-7.12.1.tgz", + "integrity": "sha512-DFHbzHFjukhlkRZ5xzfebx0IBzblW43kmfnalBBq7xEMscUvnhsYnlvL9Y20tuPZ/PrTcq4JAHbFluAvw6M0QQ==", "requires": { - "@sentry/hub": "6.17.6", - "@sentry/minimal": "6.17.6", - "@sentry/types": "6.17.6", - "@sentry/utils": "6.17.6", + "@sentry/hub": "7.12.1", + "@sentry/types": "7.12.1", + "@sentry/utils": "7.12.1", "tslib": "^1.9.3" } }, "@sentry/hub": { - "version": "6.17.6", - "integrity": "sha512-Ps9nk+DoFia8jhZ1lucdRE0vDx8hqXOsKXJE8a3hK/Ndki0J9jedYqBeLqSgiFG4qRjXpNFcD6TEM6tnQrv5lw==", - "requires": { - "@sentry/types": "6.17.6", - "@sentry/utils": "6.17.6", - "tslib": "^1.9.3" - } - }, - "@sentry/minimal": { - "version": "6.17.6", - "integrity": "sha512-PLGf8WlhtdHuY6ofwYR3nyClr/TYHHAW6i0r62OZCOXTqnFPJorZpAz3VCCP2jMJmbgVbo03wN+u/xAA/zwObA==", + "version": "7.12.1", + "resolved": "https://registry.npmjs.org/@sentry/hub/-/hub-7.12.1.tgz", + "integrity": "sha512-KLVnVqXf+CRmXNy9/T8K2/js7QvOQ94xtgP5KnWJbu2rl+JhxnIGiBRF51lPXFIatt7zWwB9qNdMS8lVsvLMGQ==", "requires": { - "@sentry/hub": "6.17.6", - "@sentry/types": "6.17.6", + "@sentry/types": "7.12.1", + "@sentry/utils": "7.12.1", "tslib": "^1.9.3" } }, "@sentry/react": { - "version": "6.17.6", - "integrity": "sha512-U8JueVaGnkbOqZvoppmfK/NioflF0cFW0pKIg+dho5S8z5qpS+OTVz+0AJcoioj6ZR2VWFBZuHiGwBMOfvO6RQ==", + "version": "7.12.1", + "resolved": "https://registry.npmjs.org/@sentry/react/-/react-7.12.1.tgz", + "integrity": "sha512-CmdiRzhPpjD29GxlDJs+VIoLlQcKp1BfISQOfPUZNppWbKyRad+J5Z8tgg5MCNPHjQtcOT+0V+MsSdRNqtXg4g==", "requires": { - "@sentry/browser": "6.17.6", - "@sentry/minimal": "6.17.6", - "@sentry/types": "6.17.6", - "@sentry/utils": "6.17.6", + "@sentry/browser": "7.12.1", + "@sentry/types": "7.12.1", + "@sentry/utils": "7.12.1", "hoist-non-react-statics": "^3.3.2", "tslib": "^1.9.3" } }, "@sentry/tracing": { - "version": "6.17.6", - "integrity": "sha512-+h5ov+zEm5WH9+vmFfdT4EIqBOW7Tggzh0BDz8QRStRc2JbvEiSZDs+HlsycBwWMQi/ucJs93FPtNnWjW+xvBw==", + "version": "7.12.1", + "resolved": "https://registry.npmjs.org/@sentry/tracing/-/tracing-7.12.1.tgz", + "integrity": "sha512-WnweIt//IqkEkJSjA8DtnIeCdItYIqJSxNQ6qK+r546/ufxRYFBck2fbmM0oKZJVg2evbwhadrBTIUzYkqNj4A==", "requires": { - "@sentry/hub": "6.17.6", - "@sentry/minimal": "6.17.6", - "@sentry/types": "6.17.6", - "@sentry/utils": "6.17.6", + "@sentry/hub": "7.12.1", + "@sentry/types": "7.12.1", + "@sentry/utils": "7.12.1", "tslib": "^1.9.3" } }, "@sentry/types": { - "version": "6.17.6", - "integrity": "sha512-peGM873lDJtHd/jwW9Egr/hhxLuF0bcPIf2kMZlvEvW/G5GCbuaCR4ArQJlh7vQyma+NLn/XdojpJkC0TomKrw==" + "version": "7.12.1", + "resolved": "https://registry.npmjs.org/@sentry/types/-/types-7.12.1.tgz", + "integrity": "sha512-VGZs39SZgMcCGv7H0VyFy1LEFGsnFZH590JUopmz6nG63EpeYQ2xzhIoPNAiLKbyUvBEwukn+faCg3u3MGqhgQ==" }, "@sentry/utils": { - "version": "6.17.6", - "integrity": "sha512-RI797N8Ax5yuKUftVX6dc0XmXqo5CN7XqJYPFzYC8udutQ4L8ZYadtUcqNsdz1ZQxl+rp0XK9Q6wjoWmsI2RXA==", + "version": "7.12.1", + "resolved": "https://registry.npmjs.org/@sentry/utils/-/utils-7.12.1.tgz", + "integrity": "sha512-Dh8B13pC0u8uLM/zf+oZngyg808c6BDEO94F7H+h3IciCVVd92A0cOQwLGAEdf8srnJgpZJNAlSC8lFDhbFHzQ==", "requires": { - "@sentry/types": "6.17.6", + "@sentry/types": "7.12.1", "tslib": "^1.9.3" } }, @@ -36601,6 +37132,7 @@ "@tooljet-plugins/baserow": "file:packages/baserow", "@tooljet-plugins/bigquery": "file:packages/bigquery", "@tooljet-plugins/common": "file:packages/common", + "@tooljet-plugins/cosmosdb": "file:packages/cosmosdb", "@tooljet-plugins/couchdb": "file:packages/couchdb", "@tooljet-plugins/dynamodb": "file:packages/dynamodb", "@tooljet-plugins/elasticsearch": "file:packages/elasticsearch", @@ -47905,6 +48437,7 @@ }, "babel-plugin-dynamic-import-node": { "version": "2.3.3", + "resolved": "https://registry.npmjs.org/babel-plugin-dynamic-import-node/-/babel-plugin-dynamic-import-node-2.3.3.tgz", "integrity": "sha512-jZVI+s9Zg3IqA/kdi0i6UDCybUI3aSBLnglhYbSSjKlV7yF1F/5LWv8MakQmvYpnbJDS6fcBL2KzHSxNCMtWSQ==", "dev": true, "requires": { @@ -48014,37 +48547,41 @@ } }, "babel-plugin-polyfill-corejs2": { - "version": "0.1.10", - "integrity": "sha512-DO95wD4g0A8KRaHKi0D51NdGXzvpqVLnLu5BTvDlpqUEpTmeEtypgC1xqesORaWmiUOQI14UHKlzNd9iZ2G3ZA==", + "version": "0.3.2", + "resolved": "https://registry.npmjs.org/babel-plugin-polyfill-corejs2/-/babel-plugin-polyfill-corejs2-0.3.2.tgz", + "integrity": "sha512-LPnodUl3lS0/4wN3Rb+m+UK8s7lj2jcLRrjho4gLw+OJs+I4bvGXshINesY5xx/apM+biTnQ9reDI8yj+0M5+Q==", "dev": true, "requires": { - "@babel/compat-data": "^7.13.0", - "@babel/helper-define-polyfill-provider": "^0.1.5", + "@babel/compat-data": "^7.17.7", + "@babel/helper-define-polyfill-provider": "^0.3.2", "semver": "^6.1.1" }, "dependencies": { "semver": { "version": "6.3.0", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==", "dev": true } } }, "babel-plugin-polyfill-corejs3": { - "version": "0.1.7", - "integrity": "sha512-u+gbS9bbPhZWEeyy1oR/YaaSpod/KDT07arZHb80aTpl8H5ZBq+uN1nN9/xtX7jQyfLdPfoqI4Rue/MQSWJquw==", + "version": "0.5.3", + "resolved": "https://registry.npmjs.org/babel-plugin-polyfill-corejs3/-/babel-plugin-polyfill-corejs3-0.5.3.tgz", + "integrity": "sha512-zKsXDh0XjnrUEW0mxIHLfjBfnXSMr5Q/goMe/fxpQnLm07mcOZiIZHBNWCMx60HmdvjxfXcalac0tfFg0wqxyw==", "dev": true, "requires": { - "@babel/helper-define-polyfill-provider": "^0.1.5", - "core-js-compat": "^3.8.1" + "@babel/helper-define-polyfill-provider": "^0.3.2", + "core-js-compat": "^3.21.0" } }, "babel-plugin-polyfill-regenerator": { - "version": "0.1.6", - "integrity": "sha512-OUrYG9iKPKz8NxswXbRAdSwF0GhRdIEMTloQATJi4bDuFqrXaXcCUT/VGNrr8pBcjMh1RxZ7Xt9cytVJTJfvMg==", + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/babel-plugin-polyfill-regenerator/-/babel-plugin-polyfill-regenerator-0.4.0.tgz", + "integrity": "sha512-RW1cnryiADFeHmfLS+WW/G431p1PsW5qdRdz0SDRi7TKcUgc7Oh/uXkT7MZ/+tGsT1BkczEAmD5XjUyJ5SWDTw==", "dev": true, "requires": { - "@babel/helper-define-polyfill-provider": "^0.1.5" + "@babel/helper-define-polyfill-provider": "^0.3.2" } }, "babel-plugin-syntax-jsx": { @@ -48214,14 +48751,14 @@ "dev": true }, "browserslist": { - "version": "4.19.1", - "integrity": "sha512-u2tbbG5PdKRTUoctO3NBD8FQ5HdPh1ZXPHzp1rwaa5jTc+RV9/+RlWiAIKmjRPQF+xbGM9Kklj5bZQFa2s/38A==", + "version": "4.21.3", + "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.21.3.tgz", + "integrity": "sha512-898rgRXLAyRkM1GryrrBHGkqA5hlpkV5MhtZwg9QXeiyLUYs2k00Un05aX5l2/yJIOObYKOpS2JNo8nJDE7fWQ==", "requires": { - "caniuse-lite": "^1.0.30001286", - "electron-to-chromium": "^1.4.17", - "escalade": "^3.1.1", - "node-releases": "^2.0.1", - "picocolors": "^1.0.0" + "caniuse-lite": "^1.0.30001370", + "electron-to-chromium": "^1.4.202", + "node-releases": "^2.0.6", + "update-browserslist-db": "^1.0.5" } }, "bser": { @@ -48298,8 +48835,9 @@ } }, "caniuse-lite": { - "version": "1.0.30001301", - "integrity": "sha512-csfD/GpHMqgEL3V3uIgosvh+SVIQvCh43SNu9HRbP1lnxkKm1kjDG4f32PP571JplkLjfS+mg2p1gxR7MYrrIA==" + "version": "1.0.30001393", + "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001393.tgz", + "integrity": "sha512-N/od11RX+Gsk+1qY/jbPa0R6zJupEa0lxeBG598EbrtblxVCTJsQwbRBm6+V+rxpc5lHKdsXb9RY83cZIPLseA==" }, "caseless": { "version": "0.12.0", @@ -48646,19 +49184,12 @@ "integrity": "sha512-MQx/7TLgmmDVamSyfE+O+5BHvG1aUGj/gHhLn1wVtm2B5u1eVIPvh7vkfjwWKNCjrTJB8+He99IntSQ1qP+vYQ==" }, "core-js-compat": { - "version": "3.20.3", - "integrity": "sha512-c8M5h0IkNZ+I92QhIpuSijOxGAcj3lgpsWdkCqmUTZNwidujF4r3pi6x1DCN+Vcs5qTS2XWWMfWSuCqyupX8gw==", + "version": "3.25.1", + "resolved": "https://registry.npmjs.org/core-js-compat/-/core-js-compat-3.25.1.tgz", + "integrity": "sha512-pOHS7O0i8Qt4zlPW/eIFjwp+NrTPx+wTL0ctgI2fHn31sZOq89rDsmtc/A2vAX7r6shl+bmVI+678He46jgBlw==", "dev": true, "requires": { - "browserslist": "^4.19.1", - "semver": "7.0.0" - }, - "dependencies": { - "semver": { - "version": "7.0.0", - "integrity": "sha512-+GB6zVA9LWh6zovYQLALHwv5rb2PHGlJi3lfiqIHxR0uuwCgefcOJc59v9fv1w8GbStwxuuqqAjI9NMAOOgq1A==", - "dev": true - } + "browserslist": "^4.21.3" } }, "core-js-pure": { @@ -49270,8 +49801,9 @@ "dev": true }, "electron-to-chromium": { - "version": "1.4.51", - "integrity": "sha512-JNEmcYl3mk1tGQmy0EvL5eik/CKSBuzAyGP0QFdG6LIgxQe3II0BL1m2zKc2MZMf3uGqHWE1TFddJML0RpjSHQ==" + "version": "1.4.244", + "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.4.244.tgz", + "integrity": "sha512-E21saXLt2eTDaTxgUtiJtBUqanF9A32wZasAwDZ8gvrqXoxrBrbwtDCx7c/PQTLp81wj4X0OLDeoGQg7eMo3+w==" }, "emittery": { "version": "0.8.1", @@ -49402,171 +49934,171 @@ } }, "esbuild": { - "version": "0.15.3", - "resolved": "https://registry.npmjs.org/esbuild/-/esbuild-0.15.3.tgz", - "integrity": "sha512-D1qLizJTYlGIOK5m/1ckH8vR2U573eLMMA57qvWg/9jj8jPIhjpafv4kxb6ra2eeTlVq8tISxjsyRKbTaeF6PA==", - "dev": true, - "requires": { - "@esbuild/linux-loong64": "0.15.3", - "esbuild-android-64": "0.15.3", - "esbuild-android-arm64": "0.15.3", - "esbuild-darwin-64": "0.15.3", - "esbuild-darwin-arm64": "0.15.3", - "esbuild-freebsd-64": "0.15.3", - "esbuild-freebsd-arm64": "0.15.3", - "esbuild-linux-32": "0.15.3", - "esbuild-linux-64": "0.15.3", - "esbuild-linux-arm": "0.15.3", - "esbuild-linux-arm64": "0.15.3", - "esbuild-linux-mips64le": "0.15.3", - "esbuild-linux-ppc64le": "0.15.3", - "esbuild-linux-riscv64": "0.15.3", - "esbuild-linux-s390x": "0.15.3", - "esbuild-netbsd-64": "0.15.3", - "esbuild-openbsd-64": "0.15.3", - "esbuild-sunos-64": "0.15.3", - "esbuild-windows-32": "0.15.3", - "esbuild-windows-64": "0.15.3", - "esbuild-windows-arm64": "0.15.3" + "version": "0.15.7", + "resolved": "https://registry.npmjs.org/esbuild/-/esbuild-0.15.7.tgz", + "integrity": "sha512-7V8tzllIbAQV1M4QoE52ImKu8hT/NLGlGXkiDsbEU5PS6K8Mn09ZnYoS+dcmHxOS9CRsV4IRAMdT3I67IyUNXw==", + "dev": true, + "requires": { + "@esbuild/linux-loong64": "0.15.7", + "esbuild-android-64": "0.15.7", + "esbuild-android-arm64": "0.15.7", + "esbuild-darwin-64": "0.15.7", + "esbuild-darwin-arm64": "0.15.7", + "esbuild-freebsd-64": "0.15.7", + "esbuild-freebsd-arm64": "0.15.7", + "esbuild-linux-32": "0.15.7", + "esbuild-linux-64": "0.15.7", + "esbuild-linux-arm": "0.15.7", + "esbuild-linux-arm64": "0.15.7", + "esbuild-linux-mips64le": "0.15.7", + "esbuild-linux-ppc64le": "0.15.7", + "esbuild-linux-riscv64": "0.15.7", + "esbuild-linux-s390x": "0.15.7", + "esbuild-netbsd-64": "0.15.7", + "esbuild-openbsd-64": "0.15.7", + "esbuild-sunos-64": "0.15.7", + "esbuild-windows-32": "0.15.7", + "esbuild-windows-64": "0.15.7", + "esbuild-windows-arm64": "0.15.7" } }, "esbuild-android-64": { - "version": "0.15.3", - "resolved": "https://registry.npmjs.org/esbuild-android-64/-/esbuild-android-64-0.15.3.tgz", - "integrity": "sha512-sHGQ50Bb80ow+DZ8s6mabWn/j+vgfsNDMhipv4v410O++C6gpEcR9A5jR9bTkMsVbr46Id0MMhUGpBasq8H92A==", + "version": "0.15.7", + "resolved": "https://registry.npmjs.org/esbuild-android-64/-/esbuild-android-64-0.15.7.tgz", + "integrity": "sha512-p7rCvdsldhxQr3YHxptf1Jcd86dlhvc3EQmQJaZzzuAxefO9PvcI0GLOa5nCWem1AJ8iMRu9w0r5TG8pHmbi9w==", "dev": true, "optional": true }, "esbuild-android-arm64": { - "version": "0.15.3", - "resolved": "https://registry.npmjs.org/esbuild-android-arm64/-/esbuild-android-arm64-0.15.3.tgz", - "integrity": "sha512-+Oiwzgp7HTyeNkgpQySGLCq3zFmvVVyBiNz8bO+7Tc6tlnxSYf8jjQBThRTUsy6vrrjG91h9vZNlYkiikzzWUg==", + "version": "0.15.7", + "resolved": "https://registry.npmjs.org/esbuild-android-arm64/-/esbuild-android-arm64-0.15.7.tgz", + "integrity": "sha512-L775l9ynJT7rVqRM5vo+9w5g2ysbOCfsdLV4CWanTZ1k/9Jb3IYlQ06VCI1edhcosTYJRECQFJa3eAvkx72eyQ==", "dev": true, "optional": true }, "esbuild-darwin-64": { - "version": "0.15.3", - "resolved": "https://registry.npmjs.org/esbuild-darwin-64/-/esbuild-darwin-64-0.15.3.tgz", - "integrity": "sha512-n2BkxzCPHv6OOOs9gxp4AYsccawuw9bDeW9rpSASHao0zQ/u0kP6bjD4ATf2G4A3cml8HGwp18aROl4ws+4Ytg==", + "version": "0.15.7", + "resolved": "https://registry.npmjs.org/esbuild-darwin-64/-/esbuild-darwin-64-0.15.7.tgz", + "integrity": "sha512-KGPt3r1c9ww009t2xLB6Vk0YyNOXh7hbjZ3EecHoVDxgtbUlYstMPDaReimKe6eOEfyY4hBEEeTvKwPsiH5WZg==", "dev": true, "optional": true }, "esbuild-darwin-arm64": { - "version": "0.15.3", - "resolved": "https://registry.npmjs.org/esbuild-darwin-arm64/-/esbuild-darwin-arm64-0.15.3.tgz", - "integrity": "sha512-fSk5M1vQ+y48csVJ4QxweT//DdDytDAb0AvU1gYITqZGA1kL1/i4C5fjKDNZMjB7dkg2a+rfkMyrpZUli+To/w==", + "version": "0.15.7", + "resolved": "https://registry.npmjs.org/esbuild-darwin-arm64/-/esbuild-darwin-arm64-0.15.7.tgz", + "integrity": "sha512-kBIHvtVqbSGajN88lYMnR3aIleH3ABZLLFLxwL2stiuIGAjGlQW741NxVTpUHQXUmPzxi6POqc9npkXa8AcSZQ==", "dev": true, "optional": true }, "esbuild-freebsd-64": { - "version": "0.15.3", - "resolved": "https://registry.npmjs.org/esbuild-freebsd-64/-/esbuild-freebsd-64-0.15.3.tgz", - "integrity": "sha512-b21XfM0Wrxu0CzFQN7B4xuAMGUNLT3F3J2NMeLxbUq6lcl2N3Isho1q2AF5bOCpCXVM04k1+PgoQLwNzGYtnjw==", + "version": "0.15.7", + "resolved": "https://registry.npmjs.org/esbuild-freebsd-64/-/esbuild-freebsd-64-0.15.7.tgz", + "integrity": "sha512-hESZB91qDLV5MEwNxzMxPfbjAhOmtfsr9Wnuci7pY6TtEh4UDuevmGmkUIjX/b+e/k4tcNBMf7SRQ2mdNuK/HQ==", "dev": true, "optional": true }, "esbuild-freebsd-arm64": { - "version": "0.15.3", - "resolved": "https://registry.npmjs.org/esbuild-freebsd-arm64/-/esbuild-freebsd-arm64-0.15.3.tgz", - "integrity": "sha512-E0LkWSz7Ch1B2WFXbGvfN3q9uUlQCahBi3S7wTSJO2T41x0BPnIFHw79/RuGKVyA17mX/I7RVOSRnrla2D4tag==", + "version": "0.15.7", + "resolved": "https://registry.npmjs.org/esbuild-freebsd-arm64/-/esbuild-freebsd-arm64-0.15.7.tgz", + "integrity": "sha512-dLFR0ChH5t+b3J8w0fVKGvtwSLWCv7GYT2Y2jFGulF1L5HftQLzVGN+6pi1SivuiVSmTh28FwUhi9PwQicXI6Q==", "dev": true, "optional": true }, "esbuild-linux-32": { - "version": "0.15.3", - "resolved": "https://registry.npmjs.org/esbuild-linux-32/-/esbuild-linux-32-0.15.3.tgz", - "integrity": "sha512-af7BhXXKwzXL83bfJX8vkxsyDbOr9T5auxyBJnBfkd2w7VwXC1heDT2TQ1cWCWyjqVatyKudW5RCSAySDKDW2Q==", + "version": "0.15.7", + "resolved": "https://registry.npmjs.org/esbuild-linux-32/-/esbuild-linux-32-0.15.7.tgz", + "integrity": "sha512-v3gT/LsONGUZcjbt2swrMjwxo32NJzk+7sAgtxhGx1+ZmOFaTRXBAi1PPfgpeo/J//Un2jIKm/I+qqeo4caJvg==", "dev": true, "optional": true }, "esbuild-linux-64": { - "version": "0.15.3", - "resolved": "https://registry.npmjs.org/esbuild-linux-64/-/esbuild-linux-64-0.15.3.tgz", - "integrity": "sha512-Wwq+5ZF2IPE/6W2kJLPnh7eXqtz5XtdPBRB77nhm02my6PsZR3aa/q/fRkJhwO6ExM+t9l3kFhWL4pMwk3wREA==", + "version": "0.15.7", + "resolved": "https://registry.npmjs.org/esbuild-linux-64/-/esbuild-linux-64-0.15.7.tgz", + "integrity": "sha512-LxXEfLAKwOVmm1yecpMmWERBshl+Kv5YJ/1KnyAr6HRHFW8cxOEsEfisD3sVl/RvHyW//lhYUVSuy9jGEfIRAQ==", "dev": true, "optional": true }, "esbuild-linux-arm": { - "version": "0.15.3", - "resolved": "https://registry.npmjs.org/esbuild-linux-arm/-/esbuild-linux-arm-0.15.3.tgz", - "integrity": "sha512-88ycpH4GrbOzaZIIXIzljbeCUkzoaJ5luP6+LATa5hk/Wl+OHkAieDfjAHdH8KuHkGYTojKE1npQq9gll9efUA==", + "version": "0.15.7", + "resolved": "https://registry.npmjs.org/esbuild-linux-arm/-/esbuild-linux-arm-0.15.7.tgz", + "integrity": "sha512-JKgAHtMR5f75wJTeuNQbyznZZa+pjiUHV7sRZp42UNdyXC6TiUYMW/8z8yIBAr2Fpad8hM1royZKQisqPABPvQ==", "dev": true, "optional": true }, "esbuild-linux-arm64": { - "version": "0.15.3", - "resolved": "https://registry.npmjs.org/esbuild-linux-arm64/-/esbuild-linux-arm64-0.15.3.tgz", - "integrity": "sha512-qNvYyYjNm4JPXJcCJv7gXEnyqw2k9W+SeYMoG7RiwWHWv1cMX6xlxPLGz5yIxjH9+VBXkA1nrY/YohaiKq2O3g==", + "version": "0.15.7", + "resolved": "https://registry.npmjs.org/esbuild-linux-arm64/-/esbuild-linux-arm64-0.15.7.tgz", + "integrity": "sha512-P3cfhudpzWDkglutWgXcT2S7Ft7o2e3YDMrP1n0z2dlbUZghUkKCyaWw0zhp4KxEEzt/E7lmrtRu/pGWnwb9vw==", "dev": true, "optional": true }, "esbuild-linux-mips64le": { - "version": "0.15.3", - "resolved": "https://registry.npmjs.org/esbuild-linux-mips64le/-/esbuild-linux-mips64le-0.15.3.tgz", - "integrity": "sha512-t5TXW6Cw8S9Lts7SDZ8rlx/dqPJx8hndYKL6xEgA2vdlrE60eIYTAYWJqsGN0dgePtFC1RPyH6To15l7s9WdYA==", + "version": "0.15.7", + "resolved": "https://registry.npmjs.org/esbuild-linux-mips64le/-/esbuild-linux-mips64le-0.15.7.tgz", + "integrity": "sha512-T7XKuxl0VpeFLCJXub6U+iybiqh0kM/bWOTb4qcPyDDwNVhLUiPcGdG2/0S7F93czUZOKP57YiLV8YQewgLHKw==", "dev": true, "optional": true }, "esbuild-linux-ppc64le": { - "version": "0.15.3", - "resolved": "https://registry.npmjs.org/esbuild-linux-ppc64le/-/esbuild-linux-ppc64le-0.15.3.tgz", - "integrity": "sha512-TXxPgEWOPCY4F6ZMf7+915+H0eOB6AlcZBwjeBs+78ULpzvcmMzZ2ujF2IejKZXYWuMTORPNoG+MuVGBuyUysA==", + "version": "0.15.7", + "resolved": "https://registry.npmjs.org/esbuild-linux-ppc64le/-/esbuild-linux-ppc64le-0.15.7.tgz", + "integrity": "sha512-6mGuC19WpFN7NYbecMIJjeQgvDb5aMuvyk0PDYBJrqAEMkTwg3Z98kEKuCm6THHRnrgsdr7bp4SruSAxEM4eJw==", "dev": true, "optional": true }, "esbuild-linux-riscv64": { - "version": "0.15.3", - "resolved": "https://registry.npmjs.org/esbuild-linux-riscv64/-/esbuild-linux-riscv64-0.15.3.tgz", - "integrity": "sha512-04tvrbHA83N+tg+qQeJmUQ3jWStUP7+rw+v/l2h3PsNGbcH3WmsgR0Tf0e1ext09asV4x2PX2b2Nm/gBIOrpqg==", + "version": "0.15.7", + "resolved": "https://registry.npmjs.org/esbuild-linux-riscv64/-/esbuild-linux-riscv64-0.15.7.tgz", + "integrity": "sha512-uUJsezbswAYo/X7OU/P+PuL/EI9WzxsEQXDekfwpQ23uGiooxqoLFAPmXPcRAt941vjlY9jtITEEikWMBr+F/g==", "dev": true, "optional": true }, "esbuild-linux-s390x": { - "version": "0.15.3", - "resolved": "https://registry.npmjs.org/esbuild-linux-s390x/-/esbuild-linux-s390x-0.15.3.tgz", - "integrity": "sha512-LHxnvvFMhA/uy9CSrnlCtPZnTfWahR9NPLKwXBgfg16YqpKbRHty+mek1o7l+2G5qLeFEEvhB0a7c+hYgbW/3w==", + "version": "0.15.7", + "resolved": "https://registry.npmjs.org/esbuild-linux-s390x/-/esbuild-linux-s390x-0.15.7.tgz", + "integrity": "sha512-+tO+xOyTNMc34rXlSxK7aCwJgvQyffqEM5MMdNDEeMU3ss0S6wKvbBOQfgd5jRPblfwJ6b+bKiz0g5nABpY0QQ==", "dev": true, "optional": true }, "esbuild-netbsd-64": { - "version": "0.15.3", - "resolved": "https://registry.npmjs.org/esbuild-netbsd-64/-/esbuild-netbsd-64-0.15.3.tgz", - "integrity": "sha512-8W0UxNuNsgBBa1SLjwqbbDLJF9mf+lvytaYPt5kXbBrz0DI4mKYFlujLQrxLKh8tvs2zRdFNy9HVqmMdbZ1OIQ==", + "version": "0.15.7", + "resolved": "https://registry.npmjs.org/esbuild-netbsd-64/-/esbuild-netbsd-64-0.15.7.tgz", + "integrity": "sha512-yVc4Wz+Pu3cP5hzm5kIygNPrjar/v5WCSoRmIjCPWfBVJkZNb5brEGKUlf+0Y759D48BCWa0WHrWXaNy0DULTQ==", "dev": true, "optional": true }, "esbuild-openbsd-64": { - "version": "0.15.3", - "resolved": "https://registry.npmjs.org/esbuild-openbsd-64/-/esbuild-openbsd-64-0.15.3.tgz", - "integrity": "sha512-QL7xYQ4noukuqh8UGnsrk1m+ShPMYIXjOnAQl3siA7VV6cjuUoCxx6cThgcUDzih8iL5u2xgsGRhsviQIMsUuA==", + "version": "0.15.7", + "resolved": "https://registry.npmjs.org/esbuild-openbsd-64/-/esbuild-openbsd-64-0.15.7.tgz", + "integrity": "sha512-GsimbwC4FSR4lN3wf8XmTQ+r8/0YSQo21rWDL0XFFhLHKlzEA4SsT1Tl8bPYu00IU6UWSJ+b3fG/8SB69rcuEQ==", "dev": true, "optional": true }, "esbuild-sunos-64": { - "version": "0.15.3", - "resolved": "https://registry.npmjs.org/esbuild-sunos-64/-/esbuild-sunos-64-0.15.3.tgz", - "integrity": "sha512-vID32ZCZahWDqlEoq9W7OAZDtofAY8aW0V58V5l+kXEvaKvR0m99FLNRuGGY3IDNwjUoOkvoFiMMiy+ONnN7GA==", + "version": "0.15.7", + "resolved": "https://registry.npmjs.org/esbuild-sunos-64/-/esbuild-sunos-64-0.15.7.tgz", + "integrity": "sha512-8CDI1aL/ts0mDGbWzjEOGKXnU7p3rDzggHSBtVryQzkSOsjCHRVe0iFYUuhczlxU1R3LN/E7HgUO4NXzGGP/Ag==", "dev": true, "optional": true }, "esbuild-windows-32": { - "version": "0.15.3", - "resolved": "https://registry.npmjs.org/esbuild-windows-32/-/esbuild-windows-32-0.15.3.tgz", - "integrity": "sha512-dnrlwu6T85QU9fO0a35HAzgAXm3vVqg+3Kr9EXkmnf5PHv9t7hT/EYW6g/8YYu91DDyGTk9JSyN32YzQ3OS9Lw==", + "version": "0.15.7", + "resolved": "https://registry.npmjs.org/esbuild-windows-32/-/esbuild-windows-32-0.15.7.tgz", + "integrity": "sha512-cOnKXUEPS8EGCzRSFa1x6NQjGhGsFlVgjhqGEbLTPsA7x4RRYiy2RKoArNUU4iR2vHmzqS5Gr84MEumO/wxYKA==", "dev": true, "optional": true }, "esbuild-windows-64": { - "version": "0.15.3", - "resolved": "https://registry.npmjs.org/esbuild-windows-64/-/esbuild-windows-64-0.15.3.tgz", - "integrity": "sha512-HUSlVCpTtOnIKeIn05zz0McNCfZhnu5UgUypmpNrv4Ff1XTvl6vBpQwIZ49eIAkY9zI6oe1Mu6N5ZG7u6X4s7A==", + "version": "0.15.7", + "resolved": "https://registry.npmjs.org/esbuild-windows-64/-/esbuild-windows-64-0.15.7.tgz", + "integrity": "sha512-7MI08Ec2sTIDv+zH6StNBKO+2hGUYIT42GmFyW6MBBWWtJhTcQLinKS6ldIN1d52MXIbiJ6nXyCJ+LpL4jBm3Q==", "dev": true, "optional": true }, "esbuild-windows-arm64": { - "version": "0.15.3", - "resolved": "https://registry.npmjs.org/esbuild-windows-arm64/-/esbuild-windows-arm64-0.15.3.tgz", - "integrity": "sha512-sk6fVXCzGB0uW089+8LdeanZkQUZ+3/xdbWshgLGRawV0NyjSFH4sZPIy+DJnhEnT0pPt1DabZtqrq2DT0FWNw==", + "version": "0.15.7", + "resolved": "https://registry.npmjs.org/esbuild-windows-arm64/-/esbuild-windows-arm64-0.15.7.tgz", + "integrity": "sha512-R06nmqBlWjKHddhRJYlqDd3Fabx9LFdKcjoOy08YLimwmsswlFBJV4rXzZCxz/b7ZJXvrZgj8DDv1ewE9+StMw==", "dev": true, "optional": true }, @@ -51288,6 +51820,14 @@ } } }, + "html-parse-stringify": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/html-parse-stringify/-/html-parse-stringify-3.0.1.tgz", + "integrity": "sha512-KknJ50kTInJ7qIScF3jeaFRpMpE8/lfiTdzf/twXyPBLAGrLRTmkz3AdTnKeh40X8k9L2fdYwEp/42WGXIRGcg==", + "requires": { + "void-elements": "3.1.0" + } + }, "html-webpack-plugin": { "version": "5.3.2", "integrity": "sha512-HvB33boVNCz2lTyBsSiMffsJ+m0YLIQ+pskblXgN9fnjS1BgEcuAfdInfXfGrkdXV406k9FiDi86eVCDBgJOyQ==", @@ -51482,6 +52022,50 @@ "integrity": "sha512-B4FFZ6q/T2jhhksgkbEW3HBvWIfDW85snkQgawt07S7J5QXTk6BkNV+0yAeZrM5QpMAdYlocGoljn0sJ/WQkFw==", "dev": true }, + "i18next": { + "version": "21.8.14", + "resolved": "https://registry.npmjs.org/i18next/-/i18next-21.8.14.tgz", + "integrity": "sha512-4Yi+DtexvMm/Yw3Q9fllzY12SgLk+Mcmar+rCAccsOPul/2UmnBzoHbTGn/L48IPkFcmrNaH7xTLboBWIbH6pw==", + "requires": { + "@babel/runtime": "^7.17.2" + }, + "dependencies": { + "@babel/runtime": { + "version": "7.18.9", + "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.18.9.tgz", + "integrity": "sha512-lkqXDcvlFT5rvEjiu6+QYO+1GXrEHRo2LOtS7E4GtX5ESIZOgepqsZBVIj6Pv+a6zqsya9VCgiK1KAK4BvJDAw==", + "requires": { + "regenerator-runtime": "^0.13.4" + } + } + } + }, + "i18next-browser-languagedetector": { + "version": "6.1.4", + "resolved": "https://registry.npmjs.org/i18next-browser-languagedetector/-/i18next-browser-languagedetector-6.1.4.tgz", + "integrity": "sha512-wukWnFeU7rKIWT66VU5i8I+3Zc4wReGcuDK2+kuFhtoxBRGWGdvYI9UQmqNL/yQH1KogWwh+xGEaIPH8V/i2Zg==", + "requires": { + "@babel/runtime": "^7.14.6" + }, + "dependencies": { + "@babel/runtime": { + "version": "7.18.9", + "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.18.9.tgz", + "integrity": "sha512-lkqXDcvlFT5rvEjiu6+QYO+1GXrEHRo2LOtS7E4GtX5ESIZOgepqsZBVIj6Pv+a6zqsya9VCgiK1KAK4BvJDAw==", + "requires": { + "regenerator-runtime": "^0.13.4" + } + } + } + }, + "i18next-http-backend": { + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/i18next-http-backend/-/i18next-http-backend-1.4.1.tgz", + "integrity": "sha512-s4Q9hK2jS29iyhniMP82z+yYY8riGTrWbnyvsSzi5TaF7Le4E7b5deTmtuaRuab9fdDcYXtcwdBgawZG+JCEjA==", + "requires": { + "cross-fetch": "3.1.5" + } + }, "iconv-lite": { "version": "0.4.24", "integrity": "sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA==", @@ -54968,9 +55552,9 @@ "integrity": "sha512-c6YRvhEo//6T2Jz/vVtYzqBzwvPT95JBQ+smCytzf7c50oMZRsR/a4w88aD34I+/QVSfnoAnSBFPJHItlOMJVw==" }, "moment-timezone": { - "version": "0.5.34", - "resolved": "https://registry.npmjs.org/moment-timezone/-/moment-timezone-0.5.34.tgz", - "integrity": "sha512-3zAEHh2hKUs3EXLESx/wsgw6IQdusOT8Bxm3D9UrHPQR7zlMmzwybC8zHEM1tQ4LJwP7fcxrWr8tuBg05fFCbg==", + "version": "0.5.37", + "resolved": "https://registry.npmjs.org/moment-timezone/-/moment-timezone-0.5.37.tgz", + "integrity": "sha512-uEDzDNFhfaywRl+vwXxffjjq1q0Vzr+fcQpQ1bU0kbzorfS7zVtZnCnGc8mhWmF39d4g4YriF6kwA75mJKE/Zg==", "requires": { "moment": ">= 2.9.0" } @@ -55087,8 +55671,9 @@ "dev": true }, "node-releases": { - "version": "2.0.1", - "integrity": "sha512-CqyzN6z7Q6aMeF/ktcMVTzhAHCEpf8SOarwpzpf8pNBY2k5/oM34UHldUwp8VKI7uxct2HxSRdJjBaZeESzcxA==" + "version": "2.0.6", + "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-2.0.6.tgz", + "integrity": "sha512-PiVXnNuFm5+iYkLBNeq5211hvO38y63T0i2KKh2KnUs3RpzJ+JtODFjkD8yjLwnDkTYF1eKXheUwdssR+NRZdg==" }, "node-sass": { "version": "4.14.1", @@ -56158,6 +56743,25 @@ "hotkeys-js": "3.8.7" } }, + "react-i18next": { + "version": "11.18.3", + "resolved": "https://registry.npmjs.org/react-i18next/-/react-i18next-11.18.3.tgz", + "integrity": "sha512-EttTX31HbqzZymUM3SIrMPuvamfSXFZVsDHm/ZAqoDfTLjhzlwyxqfbDNxcKNAGOi2mjZaXfR7hSNMlvLNpB/g==", + "requires": { + "@babel/runtime": "^7.14.5", + "html-parse-stringify": "^3.0.1" + }, + "dependencies": { + "@babel/runtime": { + "version": "7.18.9", + "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.18.9.tgz", + "integrity": "sha512-lkqXDcvlFT5rvEjiu6+QYO+1GXrEHRo2LOtS7E4GtX5ESIZOgepqsZBVIj6Pv+a6zqsya9VCgiK1KAK4BvJDAw==", + "requires": { + "regenerator-runtime": "^0.13.4" + } + } + } + }, "react-input-autosize": { "version": "3.0.0", "integrity": "sha512-nL9uS7jEs/zu8sqwFE5MAPx6pPkNAriACQ2rGLlqmKr2sPGtN7TXTyDdQt4lbNXVx7Uzadb40x8qotIuru6Rhg==", @@ -56656,15 +57260,17 @@ }, "regenerate": { "version": "1.4.2", + "resolved": "https://registry.npmjs.org/regenerate/-/regenerate-1.4.2.tgz", "integrity": "sha512-zrceR/XhGYU/d/opr2EKO7aRHUeiBI8qjtfHqADTwZd6Szfy16la6kqD0MIUs5z5hx6AaKa+PixpPrR289+I0A==", "dev": true }, "regenerate-unicode-properties": { - "version": "8.2.0", - "integrity": "sha512-F9DjY1vKLo/tPePDycuH3dn9H1OTPIkVD9Kz4LODu+F2C75mgjAJ7x/gwy6ZcSNRAAkhNlJSOHRe8k3p+K9WhA==", + "version": "10.0.1", + "resolved": "https://registry.npmjs.org/regenerate-unicode-properties/-/regenerate-unicode-properties-10.0.1.tgz", + "integrity": "sha512-vn5DU6yg6h8hP/2OkQo3K7uVILvY4iu0oI4t3HFa81UPkhGJwkRwM10JEc3upjdhHjs/k8GJY1sRBhk5sr69Bw==", "dev": true, "requires": { - "regenerate": "^1.4.0" + "regenerate": "^1.4.2" } }, "regenerator-runtime": { @@ -56672,8 +57278,9 @@ "integrity": "sha512-a54FxoJDIr27pgf7IgeQGxmqUNYrcV338lf/6gH456HZ/PhX+5BcwHXG9ajESmwe6WRO0tAzRUrRmNONWgkrew==" }, "regenerator-transform": { - "version": "0.14.5", - "integrity": "sha512-eOf6vka5IO151Jfsw2NO9WpGX58W6wWmefK3I1zEGr0lOD0u8rwPaNqQL1aRxUaxLeKO3ArNh3VYg1KbaD+FFw==", + "version": "0.15.0", + "resolved": "https://registry.npmjs.org/regenerator-transform/-/regenerator-transform-0.15.0.tgz", + "integrity": "sha512-LsrGtPmbYg19bcPHwdtmXwbW+TqNvtY4riE3P83foeHRroMbH6/2ddFBfab3t7kbzc7v7p4wbkIecHImqt0QNg==", "dev": true, "requires": { "@babel/runtime": "^7.8.4" @@ -56694,26 +57301,29 @@ "dev": true }, "regexpu-core": { - "version": "4.7.1", - "integrity": "sha512-ywH2VUraA44DZQuRKzARmw6S66mr48pQVva4LBeRhcOltJ6hExvWly5ZjFLYo67xbIxb6W1q4bAGtgfEl20zfQ==", + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/regexpu-core/-/regexpu-core-5.1.0.tgz", + "integrity": "sha512-bb6hk+xWd2PEOkj5It46A16zFMs2mv86Iwpdu94la4S3sJ7C973h2dHpYKwIBGaWSO7cIRJ+UX0IeMaWcO4qwA==", "dev": true, "requires": { - "regenerate": "^1.4.0", - "regenerate-unicode-properties": "^8.2.0", - "regjsgen": "^0.5.1", - "regjsparser": "^0.6.4", - "unicode-match-property-ecmascript": "^1.0.4", - "unicode-match-property-value-ecmascript": "^1.2.0" + "regenerate": "^1.4.2", + "regenerate-unicode-properties": "^10.0.1", + "regjsgen": "^0.6.0", + "regjsparser": "^0.8.2", + "unicode-match-property-ecmascript": "^2.0.0", + "unicode-match-property-value-ecmascript": "^2.0.0" } }, "regjsgen": { - "version": "0.5.2", - "integrity": "sha512-OFFT3MfrH90xIW8OOSyUrk6QHD5E9JOTeGodiJeBS3J6IwlgzJMNE/1bZklWz5oTg+9dCMyEetclvCVXOPoN3A==", + "version": "0.6.0", + "resolved": "https://registry.npmjs.org/regjsgen/-/regjsgen-0.6.0.tgz", + "integrity": "sha512-ozE883Uigtqj3bx7OhL1KNbCzGyW2NQZPl6Hs09WTvCuZD5sTI4JY58bkbQWa/Y9hxIsvJ3M8Nbf7j54IqeZbA==", "dev": true }, "regjsparser": { - "version": "0.6.9", - "integrity": "sha512-ZqbNRz1SNjLAiYuwY0zoXW8Ne675IX5q+YHioAGbCw4X96Mjl2+dcX9B2ciaeyYjViDAfvIjFpQjJgLttTEERQ==", + "version": "0.8.4", + "resolved": "https://registry.npmjs.org/regjsparser/-/regjsparser-0.8.4.tgz", + "integrity": "sha512-J3LABycON/VNEu3abOviqGHuB/LOtOQj8SKmfP9anY5GfAVw/SPjwzSjxGjbZXIxbGfqTHtJw58C2Li/WkStmA==", "dev": true, "requires": { "jsesc": "~0.5.0" @@ -56721,7 +57331,8 @@ "dependencies": { "jsesc": { "version": "0.5.0", - "integrity": "sha1-597mbjXW/Bb3EP6R1c9p9w8IkR0=", + "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-0.5.0.tgz", + "integrity": "sha512-uZz5UnB7u4T9LvwmFqXii7pZSouaRPorGs5who1Ip7VO0wxanFvBL7GkM6dTHlgX+jhBApRetaWpnDabOeTcnA==", "dev": true } } @@ -57705,9 +58316,9 @@ } }, "terser-webpack-plugin": { - "version": "5.3.4", - "resolved": "https://registry.npmjs.org/terser-webpack-plugin/-/terser-webpack-plugin-5.3.4.tgz", - "integrity": "sha512-SmnkUhBxLDcBfTIeaq+ZqJXLVEyXxSaNcCeSezECdKjfkMrTTnPvapBILylYwyEvHFZAn2cJ8dtiXel5XnfOfQ==", + "version": "5.3.6", + "resolved": "https://registry.npmjs.org/terser-webpack-plugin/-/terser-webpack-plugin-5.3.6.tgz", + "integrity": "sha512-kfLFk+PoLUQIbLmB1+PZDMRSZS99Mp+/MHqDNmMA6tOItzRt+Npe3E+fsMs5mfcM0wCtrrdU387UnV+vnSffXQ==", "requires": { "@jridgewell/trace-mapping": "^0.3.14", "jest-worker": "^27.4.5", @@ -57732,9 +58343,9 @@ } }, "terser": { - "version": "5.14.2", - "resolved": "https://registry.npmjs.org/terser/-/terser-5.14.2.tgz", - "integrity": "sha512-oL0rGeM/WFQCUd0y2QrWxYnq7tfSuKBiqTjRPWrRgB46WD/kiwHwF8T23z78H6Q6kGCuuHcPB+KULHRdxvVGQA==", + "version": "5.15.0", + "resolved": "https://registry.npmjs.org/terser/-/terser-5.15.0.tgz", + "integrity": "sha512-L1BJiXVmheAQQy+as0oF3Pwtlo4s3Wi1X2zNZ2NxOB4wx9bdS9Vk67XQENLFdLYGCK/Z2di53mTj/hBafR+dTA==", "requires": { "@jridgewell/source-map": "^0.3.2", "acorn": "^8.5.0", @@ -57952,27 +58563,31 @@ } }, "unicode-canonical-property-names-ecmascript": { - "version": "1.0.4", - "integrity": "sha512-jDrNnXWHd4oHiTZnx/ZG7gtUTVp+gCcTTKr8L0HjlwphROEW3+Him+IpvC+xcJEFegapiMZyZe02CyuOnRmbnQ==", + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/unicode-canonical-property-names-ecmascript/-/unicode-canonical-property-names-ecmascript-2.0.0.tgz", + "integrity": "sha512-yY5PpDlfVIU5+y/BSCxAJRBIS1Zc2dDG3Ujq+sR0U+JjUevW2JhocOF+soROYDSaAezOzOKuyyixhD6mBknSmQ==", "dev": true }, "unicode-match-property-ecmascript": { - "version": "1.0.4", - "integrity": "sha512-L4Qoh15vTfntsn4P1zqnHulG0LdXgjSO035fEpdtp6YxXhMT51Q6vgM5lYdG/5X3MjS+k/Y9Xw4SFCY9IkR0rg==", + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/unicode-match-property-ecmascript/-/unicode-match-property-ecmascript-2.0.0.tgz", + "integrity": "sha512-5kaZCrbp5mmbz5ulBkDkbY0SsPOjKqVS35VpL9ulMPfSl0J0Xsm+9Evphv9CoIZFwre7aJoa94AY6seMKGVN5Q==", "dev": true, "requires": { - "unicode-canonical-property-names-ecmascript": "^1.0.4", - "unicode-property-aliases-ecmascript": "^1.0.4" + "unicode-canonical-property-names-ecmascript": "^2.0.0", + "unicode-property-aliases-ecmascript": "^2.0.0" } }, "unicode-match-property-value-ecmascript": { - "version": "1.2.0", - "integrity": "sha512-wjuQHGQVofmSJv1uVISKLE5zO2rNGzM/KCYZch/QQvez7C1hUhBIuZ701fYXExuufJFMPhv2SyL8CyoIfMLbIQ==", + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/unicode-match-property-value-ecmascript/-/unicode-match-property-value-ecmascript-2.0.0.tgz", + "integrity": "sha512-7Yhkc0Ye+t4PNYzOGKedDhXbYIBe1XEQYQxOPyhcXNMJ0WCABqqj6ckydd6pWRZTHV4GuCPKdBAUiMc60tsKVw==", "dev": true }, "unicode-property-aliases-ecmascript": { - "version": "1.1.0", - "integrity": "sha512-PqSoPh/pWetQ2phoj5RLiaqIk4kCNwoV3CI+LfGmWLKI3rE3kl1h59XpX2BjgDrmbxD9ARtQobPGU1SguCYuQg==", + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/unicode-property-aliases-ecmascript/-/unicode-property-aliases-ecmascript-2.0.0.tgz", + "integrity": "sha512-5Zfuy9q/DFr4tfO7ZPeVXb1aPoeQSdeFMLpYuFebehDAhbuevLs5yxSZmIFN1tP5F9Wl4IpJrYojg85/zgyZHQ==", "dev": true }, "universalify": { @@ -57990,6 +58605,15 @@ "integrity": "sha1-j97XMk7G6IoP+LkF58CYzcCG1UQ=", "dev": true }, + "update-browserslist-db": { + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/update-browserslist-db/-/update-browserslist-db-1.0.7.tgz", + "integrity": "sha512-iN/XYesmZ2RmmWAiI4Z5rq0YqSiv0brj9Ce9CfhNE4xIW2h+MFxcgkxIzZ+ShkFPUkjU3gQ+3oypadD3RAMtrg==", + "requires": { + "escalade": "^3.1.1", + "picocolors": "^1.0.0" + } + }, "uri-js": { "version": "4.4.1", "integrity": "sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg==", @@ -58126,6 +58750,11 @@ "extsprintf": "^1.2.0" } }, + "void-elements": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/void-elements/-/void-elements-3.1.0.tgz", + "integrity": "sha512-Dhxzh5HZuiHQhbvTW9AMetFfBHDMYpo23Uo9btPXgdYP+3T5S+p+jgNy7spra+veYhBP2dCSgxR/i2Y02h5/6w==" + }, "w3c-hr-time": { "version": "1.0.2", "integrity": "sha512-z8P5DvDNjKDoFIHK7q8r8lackT6l+jo/Ye3HOle7l9nICP9lf1Ci25fy9vHd0JOWewkIFzXIEig3TdKT7JQ5fQ==", diff --git a/frontend/package.json b/frontend/package.json index 70c286cce1..1eb1e10b8b 100644 --- a/frontend/package.json +++ b/frontend/package.json @@ -4,8 +4,8 @@ "private": true, "dependencies": { "@react-google-maps/api": "^2.1.1", - "@sentry/react": "^6.17.6", - "@sentry/tracing": "^6.17.6", + "@sentry/react": "^7.12.0", + "@sentry/tracing": "^7.12.0", "@tooljet/plugins": "../plugins", "@uiw/react-codemirror": "^3.0.6", "@y-presence/react": "^2.0.0", @@ -21,6 +21,11 @@ "emoji-mart": "^3.0.1", "fuse.js": "^6.4.6", "history": "^4.9.0", + "html-loader": "^3.1.0", + "html-webpack-plugin": "^5.3.2", + "i18next": "^21.8.14", + "i18next-browser-languagedetector": "^6.1.4", + "i18next-http-backend": "^1.4.1", "immer": "^9.0.6", "immutability-helper": "^3.1.1", "lodash": "^4.17.21", @@ -50,6 +55,7 @@ "react-google-login": "^5.2.2", "react-hot-toast": "^2.1.1", "react-hotkeys-hook": "^3.4.4", + "react-i18next": "^11.18.3", "react-json-tree": "^0.16.1", "react-json-view": "^1.21.3", "react-lazy-load-image-component": "^1.5.1", @@ -84,10 +90,13 @@ "devDependencies": { "@babel/core": "^7.4.3", "@babel/eslint-parser": "^7.18.9", - "@babel/plugin-proposal-class-properties": "^7.10.4", "@babel/plugin-transform-runtime": "^7.16.10", - "@babel/preset-env": "^7.4.3", + "@babel/preset-env": "^7.18.10", "@babel/preset-react": "^7.18.6", + "@svgr/webpack": "^5.5.0", + "@testing-library/jest-dom": "^4.2.4", + "@testing-library/react": "^9.5.0", + "@testing-library/user-event": "^7.2.1", "babel-loader": "^8.0.5", "babel-plugin-console-source": "^2.0.5", "babel-plugin-import": "^1.13.3", @@ -113,11 +122,7 @@ "terser-webpack-plugin": "^5.3.4", "webpack": "^5.55.1", "webpack-cli": "^4.8.0", - "webpack-dev-server": "^4.7.4", - "@svgr/webpack": "^5.5.0", - "@testing-library/jest-dom": "^4.2.4", - "@testing-library/react": "^9.5.0", - "@testing-library/user-event": "^7.2.1" + "webpack-dev-server": "^4.7.4" }, "scripts": { "start": "webpack serve --port 8082 --host 0.0.0.0", @@ -156,4 +161,4 @@ "jsx" ] } -} \ No newline at end of file +} diff --git a/frontend/src/App/App.jsx b/frontend/src/App/App.jsx index fc2872b215..44530bf71c 100644 --- a/frontend/src/App/App.jsx +++ b/frontend/src/App/App.jsx @@ -1,4 +1,4 @@ -import React from 'react'; +import React, { Suspense } from 'react'; import config from 'config'; import { BrowserRouter, Route, Redirect } from 'react-router-dom'; import { history } from '@/_helpers'; @@ -86,7 +86,7 @@ class App extends React.Component { } return ( - <> +
{updateAvailable && ( @@ -261,7 +261,7 @@ class App extends React.Component {
- +
); } } diff --git a/frontend/src/ConfirmationPage/ConfirmationPage.jsx b/frontend/src/ConfirmationPage/ConfirmationPage.jsx index 511ea470b0..bd88bb3ab6 100644 --- a/frontend/src/ConfirmationPage/ConfirmationPage.jsx +++ b/frontend/src/ConfirmationPage/ConfirmationPage.jsx @@ -4,8 +4,9 @@ import { toast } from 'react-hot-toast'; import GoogleSSOLoginButton from '@ee/components/LoginPage/GoogleSSOLoginButton'; import GitSSOLoginButton from '@ee/components/LoginPage/GitSSOLoginButton'; import { ShowLoading } from '@/_components'; +import { withTranslation } from 'react-i18next'; -class ConfirmationPage extends React.Component { +class ConfirmationPageComponent extends React.Component { constructor(props) { super(props); @@ -150,30 +151,33 @@ class ConfirmationPage extends React.Component { ) : (

- Set up your account + {this.props.t('confirmationPage.setupAccount', 'Set up your account')}

{this.state.configs?.enable_sign_up && (
{this.state.configs?.google?.enabled && ( )} {this.state.configs?.git?.enabled && ( - + )}

- OR + {this.props.t('confirmationPage.or', 'OR')}

)}
- Role + {this.props.t('confirmationPage.role', 'Role')}

- By clicking the button below, you agree to our{' '} - Terms and Conditions. + {this.props.t('confirmationPage.clickAndAgree', 'By clicking the button below, you agree to our')}{' '} + + {this.props.t('confirmationPage.termsAndConditions', 'Terms and Conditions')} + + .

@@ -291,4 +298,4 @@ class ConfirmationPage extends React.Component { } } -export { ConfirmationPage }; +export const ConfirmationPage = withTranslation()(ConfirmationPageComponent); diff --git a/frontend/src/ConfirmationPage/OrganizationInvitationPage.jsx b/frontend/src/ConfirmationPage/OrganizationInvitationPage.jsx index 9de472f7b0..9297cc98d2 100644 --- a/frontend/src/ConfirmationPage/OrganizationInvitationPage.jsx +++ b/frontend/src/ConfirmationPage/OrganizationInvitationPage.jsx @@ -4,8 +4,9 @@ import { toast } from 'react-hot-toast'; import GoogleSSOLoginButton from '@ee/components/LoginPage/GoogleSSOLoginButton'; import GitSSOLoginButton from '@ee/components/LoginPage/GitSSOLoginButton'; import { ShowLoading } from '@/_components'; +import { withTranslation } from 'react-i18next'; -class OrganizationInvitationPage extends React.Component { +class OrganizationInvitationPageComponent extends React.Component { constructor(props) { super(props); @@ -101,7 +102,7 @@ class OrganizationInvitationPage extends React.Component { {!this.single_organization ? ( <>

- Already have an account? + {this.props.t('confirmationPage.accountExists', 'Already have an account?')}

) : ( <>

- Set up your account + {this.props.t('confirmationPage.setupAccount', 'Set up your account')}

{this.state.configs?.enable_sign_up && (
{this.state.configs?.google?.enabled && ( )} {this.state.configs?.git?.enabled && ( - + )}

- OR + {this.props.t('confirmationPage.or', 'OR')}

)}

- By clicking the button below, you agree to our{' '} - Terms and Conditions. + {this.props.t( + 'confirmationPage.clickAndAgree', + 'By clicking the button below, you agree to our' + )}{' '} + + {this.props.t('confirmationPage.termsAndConditions', 'Terms and Conditions')} + + .

@@ -195,4 +207,4 @@ class OrganizationInvitationPage extends React.Component { } } -export { OrganizationInvitationPage }; +export const OrganizationInvitationPage = withTranslation()(OrganizationInvitationPageComponent); diff --git a/frontend/src/Editor/AppVersionsManager.jsx b/frontend/src/Editor/AppVersionsManager.jsx index 7ae6ad689f..3ba27f5d1e 100644 --- a/frontend/src/Editor/AppVersionsManager.jsx +++ b/frontend/src/Editor/AppVersionsManager.jsx @@ -5,6 +5,8 @@ import { appVersionService } from '@/_services'; import { Confirm } from './Viewer/Confirm'; import Select from '../_ui/Select'; import defaultStyle from '../_ui/Select/styles'; +import { useTranslation } from 'react-i18next'; + export const AppVersionsManager = function AppVersionsManager({ appId, editingVersion, @@ -13,6 +15,7 @@ export const AppVersionsManager = function AppVersionsManager({ showCreateVersionModalPrompt, closeCreateVersionModalPrompt, }) { + const { t } = useTranslation(); const [showDropDown, setShowDropDown] = useState(false); const [showModal, setShowModal] = useState(false); const [isCreatingVersion, setIsCreatingVersion] = useState(false); @@ -173,7 +176,7 @@ export const AppVersionsManager = function AppVersionsManager({ return (
- Version + {t('editor.appVersionManager.version', 'Version')} { @@ -198,8 +201,10 @@ export const AppVersionsManager = function AppVersionsManager({ >
{version.name}
- - Currently Released + + + {t('editor.appVersionManager.currentlyReleased', 'Currently Released')} +
@@ -271,11 +276,13 @@ export const AppVersionsManager = function AppVersionsManager({ setShowModal(true); }} > - Create Version + + {t('editor.appVersionManager.createVersion', 'Create Version')} +
deleteAppVersion(versionId)} queryConfirmationData={deletingVersionId} @@ -297,14 +304,18 @@ export const AppVersionsManager = function AppVersionsManager({ showCreateVersionModalPrompt={showCreateVersionModalPrompt} /> - setShowVersionUpdateModal(false)} title="Edit version"> + setShowVersionUpdateModal(false)} + title={t('editor.appVersionManager.editVersion', 'Edit Version')} + >
setVersionName(e.target.value)} className="form-control" - placeholder="version name" + placeholder={t('editor.appVersionManager.versionName', 'Version name')} disabled={isEditingVersion} value={versionName} maxLength={25} @@ -314,10 +325,10 @@ export const AppVersionsManager = function AppVersionsManager({
@@ -338,6 +349,7 @@ const CreateVersionModal = function CreateVersionModal({ appVersions, showCreateVersionModalPrompt, }) { + const { t } = useTranslation(); const handleKeyPress = (event) => { if (event.key === 'Enter') { // eslint-disable-next-line no-undef @@ -379,18 +391,18 @@ const CreateVersionModal = function CreateVersionModal({ setShowModal(false)} >
- + setVersionName(e.target.value)} className="form-control" - placeholder="Enter version name" + placeholder={t('editor.appVersionManager.enterVersionName', 'Enter version name')} disabled={isCreatingVersion} value={versionName} autoFocus={true} @@ -400,7 +412,7 @@ const CreateVersionModal = function CreateVersionModal({
- +
{ onChange(`{{${e.target.value}}}`); }} value={number} + data-cy={`${String(cyLabel)}-input-field`} />
- +
diff --git a/frontend/src/Editor/Comment/CommentActions.jsx b/frontend/src/Editor/Comment/CommentActions.jsx index e36f1c6f20..bac9e1cc2f 100644 --- a/frontend/src/Editor/Comment/CommentActions.jsx +++ b/frontend/src/Editor/Comment/CommentActions.jsx @@ -1,14 +1,14 @@ import React from 'react'; import cx from 'classnames'; -import { useSpring, animated } from 'react-spring'; +import { useSpring, animated, useTransition } from 'react-spring'; import usePopover from '@/_hooks/use-popover'; - import OptionsIcon from './icons/options.svg'; // import OptionsSelectedIcon from './icons/options-selected.svg'; import useRouter from '@/_hooks/use-router'; import { commentsService } from '@/_services'; +import { useTranslation } from 'react-i18next'; const CommentActions = ({ socket, @@ -22,6 +22,7 @@ const CommentActions = ({ const [open, trigger, content, setOpen] = usePopover(false); const popoverFadeStyle = useSpring({ opacity: open ? 1 : 0 }); const router = useRouter(); + const { t } = useTranslation(); const handleDelete = async () => { await commentsService.deleteComment(commentId); @@ -58,11 +59,11 @@ const CommentActions = ({ >
- Edit + {t('globals.edit', 'Edit')}
{/* TODO: Add a popup confirmation on delete */}
- Delete + {t('globals.delete', 'Delete')}
diff --git a/frontend/src/Editor/Comment/CommentBody.jsx b/frontend/src/Editor/Comment/CommentBody.jsx index 8e660d442d..fea4ca721f 100644 --- a/frontend/src/Editor/Comment/CommentBody.jsx +++ b/frontend/src/Editor/Comment/CommentBody.jsx @@ -1,7 +1,7 @@ import React from 'react'; import cx from 'classnames'; import Spinner from '@/_ui/Spinner'; - +import { useTranslation } from 'react-i18next'; import { isEmpty } from 'lodash'; import moment from 'moment'; import CommentActions from './CommentActions'; @@ -16,6 +16,7 @@ moment.updateLocale('en', { const CommentBody = ({ socket, thread, isLoading, setEditComment, setEditCommentId, fetchComments }) => { const bottomRef = React.useRef(); + const { t } = useTranslation(); const scrollToBottom = () => { bottomRef?.current?.scrollIntoView({ @@ -33,7 +34,10 @@ const CommentBody = ({ socket, thread, isLoading, setEditComment, setEditComment }, []); const getContent = () => { - if (isEmpty(thread)) return
There are no comments to display
; + if (isEmpty(thread)) + return ( +
{t('leftSidebar.Comments.commentBody', 'There are no comments to display')}
+ ); const currentUser = JSON.parse(localStorage.getItem('currentUser')); return ( diff --git a/frontend/src/Editor/Comment/CommentFooter.jsx b/frontend/src/Editor/Comment/CommentFooter.jsx index ccbd40fd31..b462c464c4 100644 --- a/frontend/src/Editor/Comment/CommentFooter.jsx +++ b/frontend/src/Editor/Comment/CommentFooter.jsx @@ -6,11 +6,13 @@ import TextareaMentions from '@/_ui/Mentions'; import Button from '@/_ui/Button'; import usePopover from '@/_hooks/use-popover'; import { useHotkeys } from 'react-hotkeys-hook'; +import { useTranslation } from 'react-i18next'; function CommentFooter({ users, editComment = '', setMentionedUsers, editCommentId, setEditCommentId, handleSubmit }) { const [comment, setComment] = React.useState(editComment); const [loading, setLoading] = React.useState(false); const [open, trigger, content, setOpen] = usePopover(false); + const { t } = useTranslation(); React.useEffect(() => { setComment(editComment); @@ -44,7 +46,7 @@ function CommentFooter({ users, editComment = '', setMentionedUsers, editComment setMentionedUsers={setMentionedUsers} value={comment} setValue={setComment} - placeholder="Type your comment here" + placeholder={t('leftSidebar.Comments.typeComment', 'Type your comment here')} darkMode={darkMode} />
@@ -66,7 +68,7 @@ function CommentFooter({ users, editComment = '', setMentionedUsers, editComment })} >
diff --git a/frontend/src/Editor/Components/Button.jsx b/frontend/src/Editor/Components/Button.jsx index a2dc54729b..8945794ec9 100644 --- a/frontend/src/Editor/Components/Button.jsx +++ b/frontend/src/Editor/Components/Button.jsx @@ -2,7 +2,7 @@ import React, { useEffect, useState } from 'react'; import cx from 'classnames'; var tinycolor = require('tinycolor2'); -export const Button = function Button({ height, properties, styles, fireEvent, registerAction }) { +export const Button = function Button({ height, properties, styles, fireEvent, registerAction, component }) { const { loadingState, text } = properties; const { backgroundColor, textColor, borderRadius, visibility, disabledState, loaderColor } = styles; @@ -40,7 +40,7 @@ export const Button = function Button({ height, properties, styles, fireEvent, r event.stopPropagation(); fireEvent('onClick'); }} - data-cy="button-widget" + data-cy={`draggable-widget-${String(component.name).toLowerCase()}`} > {label} diff --git a/frontend/src/Editor/Components/ButtonGroup.jsx b/frontend/src/Editor/Components/ButtonGroup.jsx index 719561db93..44353066be 100644 --- a/frontend/src/Editor/Components/ButtonGroup.jsx +++ b/frontend/src/Editor/Components/ButtonGroup.jsx @@ -1,6 +1,6 @@ import React, { useEffect, useState } from 'react'; -export const ButtonGroup = function Button({ height, properties, styles, fireEvent, setExposedVariable }) { +export const ButtonGroup = function Button({ height, properties, styles, fireEvent, setExposedVariable, darkMode }) { const { values, labels, label, defaultSelected, multiSelection } = properties; const { backgroundColor, @@ -61,7 +61,7 @@ export const ButtonGroup = function Button({ height, properties, styles, fireEve }; return (
- {label &&

{label}

} + {label &&

{label}

}
{data?.map((item, index) => ( )} @@ -632,7 +669,7 @@ class DataSourceManager extends React.Component { target="_blank" rel="noreferrer" > - Read documentation + {this.props.t('globals.readDocumentation', 'Read documentation')}
@@ -651,7 +688,7 @@ class DataSourceManager extends React.Component { variant="primary" onClick={this.createDataSource} > - {'Save'} + {this.props.t('globals.save', 'Save')}
@@ -666,13 +703,15 @@ class DataSourceManager extends React.Component { target="_blank" rel="noreferrer" > - Read documentation + {this.props.t('globals.readDocumentation', 'Read documentation')}
@@ -690,6 +729,7 @@ const EmptyStateContainer = ({ darkMode, placeholder, }) => { + const { t } = useTranslation(); const [inputValue, set] = React.useState(() => ''); const [status, setStatus] = React.useState(false); @@ -706,17 +746,26 @@ const EmptyStateContainer = ({ return (
- {queryString && !suggestionUI &&

No results for "{queryString} "

} + {queryString && !suggestionUI && ( +

+ {t( + `editor.queryManager.dataSourceManager.noResultsFor + "${queryString}"`, + `No results for "${queryString}"` + )} +

+ )}
{status ? (
-

Thank you, we've taken a note of that!

+

+ {t('editor.queryManager.dataSourceManager.noteTaken', `Thank you, we've taken a note of that!`)} +

) : ( @@ -734,7 +783,7 @@ const EmptyStateContainer = ({
@@ -746,7 +795,7 @@ const EmptyStateContainer = ({ const SearchBoxContainer = ({ onChange, onClear, queryString, activeDatasourceList }) => { const [searchText, setSearchText] = React.useState(queryString ?? ''); - + const { t } = useTranslation(); const handleChange = (e) => { setSearchText(e.target.value); onChange(e.target.value, activeDatasourceList); @@ -832,7 +881,7 @@ const SearchBoxContainer = ({ onChange, onClear, queryString, activeDatasourceLi value={searchText} onChange={handleChange} className="form-control" - placeholder="Search" + placeholder={t('globals.search', 'Search')} autoFocus />
@@ -840,4 +889,4 @@ const SearchBoxContainer = ({ onChange, onClear, queryString, activeDatasourceLi ); }; -export { DataSourceManager }; +export const DataSourceManager = withTranslation()(DataSourceManagerComponent); diff --git a/frontend/src/Editor/DataSourceManager/TestConnection.jsx b/frontend/src/Editor/DataSourceManager/TestConnection.jsx index 1e7447e6bb..e83228b056 100644 --- a/frontend/src/Editor/DataSourceManager/TestConnection.jsx +++ b/frontend/src/Editor/DataSourceManager/TestConnection.jsx @@ -1,11 +1,13 @@ import React, { useEffect, useState } from 'react'; import { toast } from 'react-hot-toast'; import { datasourceService } from '@/_services'; +import { useTranslation } from 'react-i18next'; export const TestConnection = ({ kind, options, onConnectionTestFailed, darkMode }) => { const [isTesting, setTestingStatus] = useState(false); const [connectionStatus, setConnectionStatus] = useState('unknown'); const [buttonText, setButtonText] = useState('Test Connection'); + const { t } = useTranslation(); useEffect(() => { if (isTesting) { @@ -44,9 +46,13 @@ export const TestConnection = ({ kind, options, onConnectionTestFailed, darkMode return (
- {connectionStatus === 'failed' && could not connect} + {connectionStatus === 'failed' && ( + {t('globals.noConnection', 'could not connect')} + )} - {connectionStatus === 'success' && connection verified} + {connectionStatus === 'success' && ( + {t('globals.connectionVerifeid', 'connection verified')} + )} {connectionStatus === 'unknown' && (

- +

@@ -1297,8 +1257,9 @@ class Editor extends React.Component { target="_blank" className="btn btn-sm font-500 color-primary border-0" rel="noreferrer" + data-cy="preview-link-button" > - Preview + {this.props.t('editor.preview', 'Preview')}
@@ -1399,7 +1360,7 @@ class Editor extends React.Component { minHeight: +this.state.appDefinition.globalSettings.canvasMaxHeight, maxWidth: +this.state.appDefinition.globalSettings.canvasMaxWidth, maxHeight: +this.state.appDefinition.globalSettings.canvasMaxHeight, - backgroundColor: this.state.appDefinition.globalSettings.canvasBackgroundColor, + backgroundColor: this.computeCanvasBackgroundColor(), }} > {config.ENABLE_MULTIPLAYER_EDITING && ( @@ -1480,18 +1441,7 @@ class Editor extends React.Component {
-
+
@@ -1502,7 +1452,7 @@ class Editor extends React.Component {
@@ -1515,7 +1465,7 @@ class Editor extends React.Component { style={{ fontSize: '14px', marginLeft: ' 6px' }} className="py-1 px-3 mt-2 text-muted" > - Queries + {this.props.t('editor.queries', 'Queries')}
@@ -1580,7 +1530,7 @@ class Editor extends React.Component { }) } > - {'Create query'} + {this.props.t('editor.createQuery', 'Create query')}
@@ -1605,7 +1555,7 @@ class Editor extends React.Component { editingVersionId={editingVersion?.id} addingQuery={addingQuery} editingQuery={editingQuery} - queryPaneHeight={queryPaneHeight} + queryPanelHeight={queryPanelHeight} currentState={currentState} darkMode={this.props.darkMode} apps={apps} @@ -1624,7 +1574,7 @@ class Editor extends React.Component { )}
-
+
@@ -1709,7 +1659,9 @@ class Editor extends React.Component { handleEditorEscapeKeyPress={this.handleEditorEscapeKeyPress} > ) : ( -
Please select a component to inspect
+
+ {this.props.t('editor.inspectComponent', 'Please select a component to inspect')} +
)}
)} @@ -1738,4 +1690,4 @@ class Editor extends React.Component { } } -export { Editor }; +export const Editor = withTranslation()(EditorComponent); diff --git a/frontend/src/Editor/ErrorBoundary.jsx b/frontend/src/Editor/ErrorBoundary.jsx index 46968f5bf8..aa1ab2e9a8 100644 --- a/frontend/src/Editor/ErrorBoundary.jsx +++ b/frontend/src/Editor/ErrorBoundary.jsx @@ -1,11 +1,11 @@ import React, { Component } from 'react'; +import { withTranslation } from 'react-i18next'; class ErrorBoundary extends Component { constructor(props) { super(props); this.state = { hasError: false }; } - // eslint-disable-next-line no-unused-vars static getDerivedStateFromError(error) { // Update state so the next render will show the fallback UI. @@ -20,11 +20,11 @@ class ErrorBoundary extends Component { render() { if (this.state.hasError) { // You can render any custom fallback UI - return this.props.showFallback ?

Something went wrong.

:
; + return this.props.showFallback ?

{this.props.t('errorBoundary', 'Something went wrong.')}

:
; } return this.props.children; } } -export default ErrorBoundary; +export default withTranslation()(ErrorBoundary); diff --git a/frontend/src/Editor/Inspector/ActionConfigurationPanels/GotoApp.jsx b/frontend/src/Editor/Inspector/ActionConfigurationPanels/GotoApp.jsx index 8ce62e2a0e..3e52b10dca 100644 --- a/frontend/src/Editor/Inspector/ActionConfigurationPanels/GotoApp.jsx +++ b/frontend/src/Editor/Inspector/ActionConfigurationPanels/GotoApp.jsx @@ -1,12 +1,15 @@ import React, { useState, useEffect } from 'react'; -import SelectSearch, { fuzzySearch } from 'react-select-search'; +import Select from '@/_ui/Select'; +import defaultStyles from '@/_ui/Select/styles'; import { CodeHinter } from '../../CodeBuilder/CodeHinter'; +import { useTranslation } from 'react-i18next'; -export function GotoApp({ getAllApps, currentState, event, handlerChanged, eventIndex }) { +export function GotoApp({ getAllApps, currentState, event, handlerChanged, eventIndex, darkMode }) { const queryParamChangeHandler = (index, key, value) => { event.queryParams[index][key] = value; handlerChanged(eventIndex, 'queryParams', event.queryParams); }; + const { t } = useTranslation(); const addQueryParam = () => { if (!event.queryParams) { @@ -34,18 +37,28 @@ export function GotoApp({ getAllApps, currentState, event, handlerChanged, event } }); + const styles = { + ...defaultStyles(darkMode), + menuPortal: (provided) => ({ ...provided, zIndex: 9999 }), + menuList: (base) => ({ + ...base, + }), + }; + return ( -
+
- { handlerChanged(eventIndex, 'slug', value); }} - filterOptions={fuzzySearch} - placeholder="Select.." + placeholder={t('globals.select', 'Select') + '...'} + styles={styles} + useMenuPortal={false} + className={`${darkMode ? 'select-search-dark' : 'select-search'}`} /> diff --git a/frontend/src/Editor/Inspector/Components/Chart.jsx b/frontend/src/Editor/Inspector/Components/Chart.jsx index 944b59e2c2..5874a1d4a0 100644 --- a/frontend/src/Editor/Inspector/Components/Chart.jsx +++ b/frontend/src/Editor/Inspector/Components/Chart.jsx @@ -177,7 +177,6 @@ class Chart extends React.Component { currentState )} {renderElement(component, componentMeta, paramUpdated, dataQueries, 'showAxes', 'properties', currentState)} - , {renderElement( component, componentMeta, diff --git a/frontend/src/Editor/Inspector/Components/DefaultComponent.jsx b/frontend/src/Editor/Inspector/Components/DefaultComponent.jsx index a79a392631..24db43e330 100644 --- a/frontend/src/Editor/Inspector/Components/DefaultComponent.jsx +++ b/frontend/src/Editor/Inspector/Components/DefaultComponent.jsx @@ -2,6 +2,8 @@ import React from 'react'; import Accordion from '@/_ui/Accordion'; import { EventManager } from '../EventManager'; import { renderElement } from '../Utils'; +// eslint-disable-next-line import/no-unresolved +import i18next from 'i18next'; export const DefaultComponent = ({ componentMeta, darkMode, ...restProps }) => { const { @@ -64,7 +66,7 @@ export const baseComponentProperties = ( let items = []; if (properties.length > 0) { items.push({ - title: 'Properties', + title: `${i18next.t('widget.common.properties', 'Properties')}`, children: properties.map((property) => renderElement( component, @@ -83,7 +85,7 @@ export const baseComponentProperties = ( if (events.length > 0) { items.push({ - title: 'Events', + title: `${i18next.t('widget.common.events', 'Events')}`, isOpen: false, children: ( 0) { items.push({ - title: 'Validation', + title: `${i18next.t('widget.common.validation', 'Validation')}`, children: validations.map((property) => renderElement( component, @@ -120,7 +122,7 @@ export const baseComponentProperties = ( } items.push({ - title: 'General', + title: `${i18next.t('widget.common.general', 'General')}`, isOpen: false, children: ( <> @@ -139,7 +141,7 @@ export const baseComponentProperties = ( }); items.push({ - title: 'Layout', + title: `${i18next.t('widget.common.layout', 'Layout')}`, isOpen: false, children: ( <> diff --git a/frontend/src/Editor/Inspector/Components/Table.jsx b/frontend/src/Editor/Inspector/Components/Table.jsx index 7f06e142f8..fa6f7803f2 100644 --- a/frontend/src/Editor/Inspector/Components/Table.jsx +++ b/frontend/src/Editor/Inspector/Components/Table.jsx @@ -13,8 +13,8 @@ import SelectSearch, { fuzzySearch } from 'react-select-search'; import { v4 as uuidv4 } from 'uuid'; import { EventManager } from '../EventManager'; import { CodeHinter } from '../../CodeBuilder/CodeHinter'; - -class Table extends React.Component { +import { withTranslation } from 'react-i18next'; +class TableComponent extends React.Component { constructor(props) { super(props); @@ -164,7 +164,7 @@ class Table extends React.Component {
- +
- + {(column.columnType === 'string' || column.columnType === undefined || column.columnType === 'default') && (
- +
)}
- +
- + {column.isEditable && (
-
Validation
+
{this.props.t('widget.Table.validation', 'Validation')}
- +
- +
- +
- +
- +
- + {column.isEditable && (
-
Validation
+
{this.props.t('widget.Table.validation', 'Validation')}
- + - + - +
- +
- show time + {this.props.t('widget.Table.showTime', 'show time')}
@@ -498,7 +500,7 @@ class Table extends React.Component { onClick={() => this.onColumnItemChange(index, 'isEditable', !column.isEditable)} checked={column.isEditable} /> - make editable + {this.props.t('widget.Table.makeEditable', 'make editable')}
@@ -518,7 +520,7 @@ class Table extends React.Component {
- +
- + @@ -717,7 +719,7 @@ class Table extends React.Component { onClick={this.addNewColumn} className="btn btn-sm border-0 font-weight-normal padding-2 col-auto color-primary inspector-add-button" > - + Add column + {this.props.t('widget.Table.addColumn', '+ Add column')}
@@ -803,14 +805,16 @@ class Table extends React.Component { onClick={this.addNewAction} className="btn btn-sm border-0 font-weight-normal padding-2 col-auto color-primary inspector-add-button" > - + Add button + {this.props.t('widget.Table.addButton', '+ Add button')}
{actions.value.map((action, index) => this.actionButton(action, index))}
{actions.value.length === 0 && (
- This table doesn't have any action buttons + + {this.props.t('widget.Table.noActionMessage', "This table doesn't have any action buttons")} +
)}
@@ -896,4 +900,4 @@ class Table extends React.Component { } } -export { Table }; +export const Table = withTranslation()(TableComponent); diff --git a/frontend/src/Editor/Inspector/Elements/AlignButtons.jsx b/frontend/src/Editor/Inspector/Elements/AlignButtons.jsx index 9c80d46b81..27fbfdd1dd 100644 --- a/frontend/src/Editor/Inspector/Elements/AlignButtons.jsx +++ b/frontend/src/Editor/Inspector/Elements/AlignButtons.jsx @@ -1,11 +1,13 @@ import React from 'react'; import { ToolTip } from './Components/ToolTip'; +import { useTranslation } from 'react-i18next'; export const AlignButtons = ({ param, definition, onChange, paramType, componentMeta }) => { const initialValue = definition ? definition.value : ''; const paramMeta = componentMeta[paramType][param.name]; const displayName = paramMeta.displayName || param.name; const options = paramMeta.options || {}; + const { t } = useTranslation(); function handleOptionChanged(event) { onChange(param, 'value', event.currentTarget.value, paramType); @@ -33,7 +35,7 @@ export const AlignButtons = ({ param, definition, onChange, paramType, component />
- Left + {t('globals.left', 'Left')}
- Center + {t('globals.center', 'Center')}
- Right + {t('globals.right', 'Right')}
- Justified + {t('globals.justified', 'Justified')}
diff --git a/frontend/src/Editor/Inspector/Elements/Color.jsx b/frontend/src/Editor/Inspector/Elements/Color.jsx index 48c78a1ce4..fc82f41abd 100644 --- a/frontend/src/Editor/Inspector/Elements/Color.jsx +++ b/frontend/src/Editor/Inspector/Elements/Color.jsx @@ -2,7 +2,7 @@ import React, { useState } from 'react'; import { SketchPicker } from 'react-color'; import { ToolTip } from './Components/ToolTip'; -export const Color = ({ param, definition, onChange, paramType, componentMeta }) => { +export const Color = ({ param, definition, onChange, paramType, componentMeta, cyLabel }) => { const [showPicker, setShowPicker] = useState(false); const coverStyles = { @@ -40,7 +40,11 @@ export const Color = ({ param, definition, onChange, paramType, componentMeta })
)} -
setShowPicker(true)}> +
setShowPicker(true)} + data-cy={`${String(cyLabel)}-picker`} + >
{ const paramMeta = componentMeta[paramType][param.name]; const displayName = paramMeta.displayName || param.name; const options = paramMeta.options; const value = definition ? definition.value : ''; + const { t } = useTranslation(); return (
@@ -17,7 +19,7 @@ export const Select = ({ param, definition, onChange, paramType, componentMeta } search={true} onChange={(newVal) => onChange(param, 'value', newVal, paramType)} filterOptions={fuzzySearch} - placeholder="Select.." + placeholder={t('globals.select', 'Select') + '...'} />
); diff --git a/frontend/src/Editor/Inspector/EventManager.jsx b/frontend/src/Editor/Inspector/EventManager.jsx index b8bdd72699..407ced9f6e 100644 --- a/frontend/src/Editor/Inspector/EventManager.jsx +++ b/frontend/src/Editor/Inspector/EventManager.jsx @@ -10,6 +10,7 @@ import _ from 'lodash'; import { componentTypes } from '../WidgetManager/components'; import Select from '@/_ui/Select'; import defaultStyles from '@/_ui/Select/styles'; +import { useTranslation } from 'react-i18next'; export const EventManager = ({ component, @@ -24,6 +25,7 @@ export const EventManager = ({ popoverPlacement, }) => { const [focusedEventIndex, setFocusedEventIndex] = useState(null); + const { t } = useTranslation(); let actionOptions = ActionTypes.map((action) => { return { name: action.name, value: action.id }; @@ -196,7 +198,7 @@ export const EventManager = ({
- Event + {t('editor.inspector.eventManager.event', 'Event')}
handlerChanged(index, 'actionId', value)} - placeholder="Select.." + placeholder={t('globals.select', 'Select') + '...'} styles={styles} useMenuPortal={false} /> @@ -231,7 +233,7 @@ export const EventManager = ({ {actionLookup[event.actionId].options?.length > 0 && (
- Action options + {t('editor.inspector.eventManager.actionOptions', 'Action options')}
)}
@@ -239,7 +241,7 @@ export const EventManager = ({ <>
- Message + {t('editor.inspector.eventManager.message', 'Message')}
- Alert Type + {t('editor.inspector.eventManager.alertType', 'Alert Type')}
{ handlerChanged(index, 'modal', value); }} - placeholder="Select.." + placeholder={t('globals.select', 'Select') + '...'} styles={styles} useMenuPortal={false} /> @@ -316,7 +319,7 @@ export const EventManager = ({ {event.actionId === 'close-modal' && (
-
Modal
+
{t('editor.inspector.eventManager.modal', 'Modal')}
@@ -373,7 +376,7 @@ export const EventManager = ({ {event.actionId === 'set-localstorage-value' && ( <>
-
Key
+
{t('editor.inspector.eventManager.key', 'Key')}
-
Value
+
{t('editor.inspector.eventManager.value', 'Value')}
-
Type
+
{t('editor.inspector.eventManager.type', 'Type')}
{ handlerChanged(index, 'table', value); }} - placeholder="Select.." + placeholder={t('globals.select', 'Select') + '...'} styles={styles} useMenuPortal={false} />
-
Page index
+
{t('editor.inspector.eventManager.pageIndex', 'Page index')}
-
Key
+
{t('editor.inspector.eventManager.key', 'Key')}
-
Value
+
{t('editor.inspector.eventManager.value', 'Value')}
-
Key
+
{t('editor.inspector.eventManager.key', 'Key')}
-
Component
-
+
+ {t('editor.inspector.eventManager.component', 'Component')} +
+
@@ -572,11 +579,14 @@ export const EventManager = ({ event?.componentSpecificActionHandle && (getAction(event?.componentId, event?.componentSpecificActionHandle).params ?? []).map((param) => (
-
{param.displayName}
+
+ {param.displayName} +
- + Add event handler + {t('editor.inspector.eventManager.addEventHandler', '+ Add event handler')}
- This {componentName.toLowerCase()} doesn't have any event handlers + {t('editor.inspector.eventManager.emptyMessage', "This {{componentName}} doesn't have any event handlers", { + componentName: componentName.toLowerCase(), + })}
@@ -792,7 +804,7 @@ export const EventManager = ({ onClick={addHandler} data-cy="add-more-event-handler" > - + Add handler + {t('editor.inspector.eventManager.addHandler', '+ Add handler')}
{renderHandlers(events)} diff --git a/frontend/src/Editor/Inspector/Inspector.jsx b/frontend/src/Editor/Inspector/Inspector.jsx index a330da2ccb..b236ce6627 100644 --- a/frontend/src/Editor/Inspector/Inspector.jsx +++ b/frontend/src/Editor/Inspector/Inspector.jsx @@ -14,6 +14,7 @@ import { FilePicker } from './Components/FilePicker'; import { CustomComponent } from './Components/CustomComponent'; import useFocus from '@/_hooks/use-focus'; import Accordion from '@/_ui/Accordion'; +import { useTranslation } from 'react-i18next'; export const Inspector = ({ selectedComponentId, @@ -41,6 +42,7 @@ export const Inspector = ({ const componentNameRef = useRef(null); const [newComponentName, setNewComponentName] = useState(component.component.name); const [inputRef, setInputFocus] = useFocus(); + const { t } = useTranslation(); useHotkeys('backspace', () => setWidgetDeleteConfirmation(true)); useHotkeys('escape', () => switchSidebarTab(2)); @@ -78,12 +80,12 @@ export const Inspector = ({ function handleComponentNameChange(newName) { if (component.component.name === newName) return; if (newName.length === 0) { - toast.error('Widget name cannot be empty'); + toast.error(t('widget.common.widgetNameEmptyError', 'Widget name cannot be empty')); return setInputFocus(); } if (!validateComponentName(newName)) { - toast.error('Component name already exists'); + toast.error(t('widget.common.componentNameExistsError', 'Component name already exists')); return setInputFocus(); } @@ -92,7 +94,12 @@ export const Inspector = ({ newComponent.component.name = newName; componentDefinitionChanged(newComponent); } else { - toast.error('Invalid widget name. Should be unique and only include letters, numbers and underscore.'); + toast.error( + t( + 'widget.common.invalidWidgetName', + 'Invalid widget name. Should be unique and only include letters, numbers and underscore.' + ) + ); setInputFocus(); } } @@ -318,7 +325,7 @@ export const Inspector = ({ const items = []; items.push({ - title: 'General', + title: `${t('widget.common.general', 'General')}`, isOpen: false, children: ( <> @@ -359,7 +366,7 @@ export const Inspector = ({ />
handleTabSelect(k)} className={`tabs-inspector ${darkMode && 'dark'}`}> - +
@@ -388,7 +395,7 @@ export const Inspector = ({
{getAccordion(componentMeta.component)} - +
{Object.keys(componentMeta.styles).map((style) => @@ -440,7 +447,9 @@ export const Inspector = ({ rel="noreferrer" data-cy="widget-documentation-link" > - {componentMeta.name} documentation + + {t('widget.common.documentation', '{{componentMeta}} documentation', { componentMeta: componentMeta.name })} +
diff --git a/frontend/src/Editor/Inspector/QuerySelector.jsx b/frontend/src/Editor/Inspector/QuerySelector.jsx index 61853acc5f..a045ee4f53 100644 --- a/frontend/src/Editor/Inspector/QuerySelector.jsx +++ b/frontend/src/Editor/Inspector/QuerySelector.jsx @@ -1,9 +1,11 @@ import React, { useState } from 'react'; import SelectSearch, { fuzzySearch } from 'react-select-search'; import Collapse from 'react-bootstrap/Collapse'; +import { useTranslation } from 'react-i18next'; export const QuerySelector = ({ param, definition, eventOptionUpdated, dataQueries, extraData, eventMeta }) => { const [open, setOpen] = useState(false); + const { t } = useTranslation(); function onChange(value) { const query = dataQueries.find((dataquery) => dataquery.id === value); @@ -42,7 +44,7 @@ export const QuerySelector = ({ param, definition, eventOptionUpdated, dataQueri onChange(value); }} filterOptions={fuzzySearch} - placeholder="Select.." + placeholder={t('globals.select', 'Select') + '...'} />
diff --git a/frontend/src/Editor/LeftSidebar/SidebarDatasources.jsx b/frontend/src/Editor/LeftSidebar/SidebarDatasources.jsx index 6d0460aec2..9c0d67aa9f 100644 --- a/frontend/src/Editor/LeftSidebar/SidebarDatasources.jsx +++ b/frontend/src/Editor/LeftSidebar/SidebarDatasources.jsx @@ -10,7 +10,7 @@ import { getSvgIcon } from '@/_helpers/appUtils'; import { datasourceService } from '@/_services'; import { ConfirmDialog } from '@/_components'; import toast from 'react-hot-toast'; - +import { useTranslation } from 'react-i18next'; export const LeftSidebarDataSources = ({ appId, editingVersionId, @@ -124,12 +124,13 @@ export const LeftSidebarDataSources = ({ }; const LeftSidebarDataSourcesContainer = ({ renderDataSource, dataSources = [], toggleDataSourceManagerModal }) => { + const { t } = useTranslation(); return (
-
Data sources
+
{t('leftSidebar.Sources.dataSources', 'Data sources')}
{dataSources.length === 0 ? (
toggleDataSourceManagerModal(true)} className="p-2 color-primary cursor-pointer"> - + add data source + {t(`leftSidebar.Sources.addDataSource`, '+ add data source')}
) : (
{dataSources?.map((source, idx) => renderDataSource(source, idx))}
diff --git a/frontend/src/Editor/LeftSidebar/SidebarDebugger.jsx b/frontend/src/Editor/LeftSidebar/SidebarDebugger.jsx index ff726db7bd..2d16b33c3e 100644 --- a/frontend/src/Editor/LeftSidebar/SidebarDebugger.jsx +++ b/frontend/src/Editor/LeftSidebar/SidebarDebugger.jsx @@ -4,9 +4,11 @@ import { LeftSidebarItem } from './SidebarItem'; import _ from 'lodash'; import moment from 'moment'; import { SidebarPinnedButton } from './SidebarPinnedButton'; +import { useTranslation } from 'react-i18next'; import JSONTreeViewer from '@/_ui/JSONTreeViewer'; export const LeftSidebarDebugger = ({ darkMode, errors, debuggerActions }) => { + const { t } = useTranslation(); const [open, trigger, content, popoverPinned, updatePopoverPinnedState] = usePinnedPopover(false); const [errorLogs, setErrorLogs] = React.useState([]); const [unReadErrorCount, setUnReadErrorCount] = React.useState({ read: 0, unread: 0 }); @@ -84,7 +86,7 @@ export const LeftSidebarDebugger = ({ darkMode, errors, debuggerActions }) => {
  • - Errors + {t(`leftSidebar.Debugger.errors`, 'Errors')}
  • {errorLogs.length > 0 && ( @@ -94,7 +96,7 @@ export const LeftSidebarDebugger = ({ darkMode, errors, debuggerActions }) => { className="btn btn-light btn-sm m-1 py-1" aria-label="clear button" > - clear + {t(`leftSidebar.Debugger.clear`, 'clear')} )} {
- {errorLogs.length === 0 &&
No errors found.
} + {errorLogs.length === 0 && ( +
{t(`leftSidebar.Debugger.noErrors`, 'No errors found.')}
+ )}
{errorLogs.map((error, index) => ( diff --git a/frontend/src/Editor/LeftSidebar/SidebarGlobalSettings.jsx b/frontend/src/Editor/LeftSidebar/SidebarGlobalSettings.jsx index 5de0a57e86..66e3460841 100644 --- a/frontend/src/Editor/LeftSidebar/SidebarGlobalSettings.jsx +++ b/frontend/src/Editor/LeftSidebar/SidebarGlobalSettings.jsx @@ -7,6 +7,7 @@ import { LeftSidebarItem } from './SidebarItem'; import FxButton from '../CodeBuilder/Elements/FxButton'; import { CodeHinter } from '../CodeBuilder/CodeHinter'; import { resolveReferences } from '@/_helpers/utils'; +import { useTranslation } from 'react-i18next'; export const LeftSidebarGlobalSettings = ({ globalSettings, @@ -16,6 +17,7 @@ export const LeftSidebarGlobalSettings = ({ is_maintenance_on, currentState, }) => { + const { t } = useTranslation(); const [open, trigger, content] = usePopover(false); const { hideHeader, canvasMaxWidth, canvasMaxHeight, canvasBackgroundColor, backgroundFxQuery } = globalSettings; const [showPicker, setShowPicker] = React.useState(false); @@ -65,7 +67,7 @@ export const LeftSidebarGlobalSettings = ({
- Hide header for launched apps + {t('leftSidebar.Settings.hideHeader', 'Hide header for launched apps')}
- Maintenance mode + {t('leftSidebar.Settings.maintenanceMode', 'Maintenance mode')}
- Max width of canvas + {t('leftSidebar.Settings.maxWidthOfCanvas', 'Max width of canvas')}
- Max height of canvas + + {t('leftSidebar.Settings.maxHeightOfCanvas', 'Max height of canvas')} +
- Background color of canvas + + {t('leftSidebar.Settings.backgroundColorOfCanvas', 'Background color of canvas')} +
{showPicker && (
diff --git a/frontend/src/Editor/LeftSidebar/SidebarItem.jsx b/frontend/src/Editor/LeftSidebar/SidebarItem.jsx index d26050e909..5c9fa005d5 100644 --- a/frontend/src/Editor/LeftSidebar/SidebarItem.jsx +++ b/frontend/src/Editor/LeftSidebar/SidebarItem.jsx @@ -1,6 +1,7 @@ import React from 'react'; import OverlayTrigger from 'react-bootstrap/OverlayTrigger'; import Tooltip from 'react-bootstrap/Tooltip'; +import { useTranslation } from 'react-i18next'; export const LeftSidebarItem = ({ tip = '', @@ -13,12 +14,13 @@ export const LeftSidebarItem = ({ count, ...rest }) => { + const { t } = useTranslation(); return ( {tip}} + overlay={{t(`leftSidebar.${text}.tip`, tip)}} >
)} {badge && } -

{text && text}

+

{text && t(`leftSidebar.${text}.text`, text)}

diff --git a/frontend/src/Editor/ManageAppUsers.jsx b/frontend/src/Editor/ManageAppUsers.jsx index 96fd878f3e..8f141157e7 100644 --- a/frontend/src/Editor/ManageAppUsers.jsx +++ b/frontend/src/Editor/ManageAppUsers.jsx @@ -7,8 +7,10 @@ import { CopyToClipboard } from 'react-copy-to-clipboard'; import Skeleton from 'react-loading-skeleton'; import { debounce } from 'lodash'; import Textarea from '@/_ui/Textarea'; +import { withTranslation } from 'react-i18next'; import { Link } from 'react-router-dom'; -class ManageAppUsers extends React.Component { + +class ManageAppUsersComponent extends React.Component { constructor(props) { super(props); @@ -133,7 +135,7 @@ class ManageAppUsers extends React.Component { return (
- Share + {this.props.t('editor.share', 'Share')}
{appLink} @@ -200,7 +206,9 @@ class ManageAppUsers extends React.Component {
toast.success('Link copied to clipboard')}> - +
{slugError}
@@ -209,10 +217,17 @@ class ManageAppUsers extends React.Component {
-