From 1462d8dd5527c621d1b5a30980c432f283c3e8db Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Keviin=20=C3=85berg=20Kultalahti?= Date: Fri, 19 Mar 2021 13:51:21 +0100 Subject: [PATCH 01/50] improve database.select performance --- .../builder/src/builderStore/store/backend.js | 17 +-- packages/builder/tests/stores/backend.spec.js | 0 packages/builder/tests/testData.js | 111 ------------------ 3 files changed, 9 insertions(+), 119 deletions(-) create mode 100644 packages/builder/tests/stores/backend.spec.js delete mode 100644 packages/builder/tests/testData.js diff --git a/packages/builder/src/builderStore/store/backend.js b/packages/builder/src/builderStore/store/backend.js index 0a5b9f0461..d4894cbd11 100644 --- a/packages/builder/src/builderStore/store/backend.js +++ b/packages/builder/src/builderStore/store/backend.js @@ -22,14 +22,15 @@ export const getBackendUiStore = () => { reset: () => store.set({ ...INITIAL_BACKEND_UI_STATE }), database: { select: async db => { - const tablesResponse = await api.get(`/api/tables`) - const tables = await tablesResponse.json() - const datasourcesResponse = await api.get(`/api/datasources`) - const datasources = await datasourcesResponse.json() - const queriesResponse = await api.get(`/api/queries`) - const queries = await queriesResponse.json() - const integrationsResponse = await api.get("/api/integrations") - const integrations = await integrationsResponse.json() + const [tables, datasources, queries, integrations] = await Promise.all([ + api.get(`/api/tables`).then(r => r.json()), + api.get(`/api/datasources`).then(r => r.json()), + api.get(`/api/queries`).then(r => r.json()), + api.get("/api/integrations").then(r => r.json()) + ]) + + console.log(tables) + const permissionLevels = await store.actions.permissions.fetchLevels() store.update(state => { diff --git a/packages/builder/tests/stores/backend.spec.js b/packages/builder/tests/stores/backend.spec.js new file mode 100644 index 0000000000..e69de29bb2 diff --git a/packages/builder/tests/testData.js b/packages/builder/tests/testData.js deleted file mode 100644 index 02b4e59da2..0000000000 --- a/packages/builder/tests/testData.js +++ /dev/null @@ -1,111 +0,0 @@ -export const componentsAndScreens = () => ({ - components: [ - { - _instanceName: "TextBox", - tags: ["Text", "input"], - children: false, - props: { - size: { type: "options", options: ["small", "medium", "large"] }, - isPassword: "bool", - placeholder: "string", - label: "string", - }, - }, - { - _instanceName: "Button", - tags: ["input"], - children: true, - props: { - size: { type: "options", options: ["small", "medium", "large"] }, - css: "string", - contentText: "string", - }, - }, - { - _instanceName: "div", - tags: ["input"], - props: { - width: "number", - }, - }, - { - _instanceName: "Row View", - tags: ["row"], - props: { - data: "state", - }, - }, - ], - screens: [ - { - props: { - _component: "budibase-components/TextBox", - _instanceName: "SmallTextbox", - size: "small", - }, - }, - - { - name: "common/PasswordBox", - tags: ["mask"], - props: { - _component: "budibase-components/TextBox", - _instanceName: "PasswordBox", - isPassword: true, - size: "small", - }, - }, - - { - props: { - _component: "budibase-components/Button", - _instanceName: "PrimaryButton", - css: "btn-primary", - }, - }, - - { - route: "", - props: { - _component: "budibase-components/div", - width: 100, - _instanceName: "Screen 1", - _children: [ - { - _component: "budibase-components/Button", - contentText: "Button 1", - _instanceName: "Button 1", - }, - { - _component: "budibase-components/Button", - contentText: "Button 2", - _instanceName: "Button 2", - }, - { - _component: "budibase-components/TextBox", - _instanceName: "TextBox", - isPassword: true, - size: "small", - }, - ], - }, - }, - - { - props: { - _component: "budibase-components/div", - _instanceName: "Field", - _children: [ - { - _component: "common/SmallTextbox", - }, - ], - }, - }, - ], -}) - -export const stripStandardProps = props => { - delete props._id - delete props._styles -} From f4c30bd360c7d11c5c570baf1a206d6f6c502ef9 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Keviin=20=C3=85berg=20Kultalahti?= Date: Fri, 19 Mar 2021 13:58:05 +0100 Subject: [PATCH 02/50] remove console.log --- packages/builder/src/builderStore/store/backend.js | 2 -- 1 file changed, 2 deletions(-) diff --git a/packages/builder/src/builderStore/store/backend.js b/packages/builder/src/builderStore/store/backend.js index d4894cbd11..a47a231d2b 100644 --- a/packages/builder/src/builderStore/store/backend.js +++ b/packages/builder/src/builderStore/store/backend.js @@ -28,8 +28,6 @@ export const getBackendUiStore = () => { api.get(`/api/queries`).then(r => r.json()), api.get("/api/integrations").then(r => r.json()) ]) - - console.log(tables) const permissionLevels = await store.actions.permissions.fetchLevels() From 4b3891f68ac18ea5d143c5827bdcdfd66e44ffdb Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Keviin=20=C3=85berg=20Kultalahti?= Date: Mon, 22 Mar 2021 09:59:22 +0100 Subject: [PATCH 03/50] moves permissions to a separate store --- .../builder/src/builderStore/store/backend.js | 6 ++-- .../src/builderStore/store/backend/index.js | 1 + .../builderStore/store/backend/permissions.js | 29 +++++++++++++++++++ .../buttons/ManageAccessButton.svelte | 16 ++++------ 4 files changed, 38 insertions(+), 14 deletions(-) create mode 100644 packages/builder/src/builderStore/store/backend/index.js create mode 100644 packages/builder/src/builderStore/store/backend/permissions.js diff --git a/packages/builder/src/builderStore/store/backend.js b/packages/builder/src/builderStore/store/backend.js index a47a231d2b..47dc6725b6 100644 --- a/packages/builder/src/builderStore/store/backend.js +++ b/packages/builder/src/builderStore/store/backend.js @@ -1,6 +1,7 @@ import { writable, get } from "svelte/store" import { cloneDeep } from "lodash/fp" import api from "../api" +import { permissions } from './backend/permissions' const INITIAL_BACKEND_UI_STATE = { tables: [], @@ -26,18 +27,15 @@ export const getBackendUiStore = () => { api.get(`/api/tables`).then(r => r.json()), api.get(`/api/datasources`).then(r => r.json()), api.get(`/api/queries`).then(r => r.json()), - api.get("/api/integrations").then(r => r.json()) + api.get("/api/integrations").then(r => r.json()), ]) - const permissionLevels = await store.actions.permissions.fetchLevels() - store.update(state => { state.selectedDatabase = db state.tables = tables state.datasources = datasources state.queries = queries state.integrations = integrations - state.permissionLevels = permissionLevels return state }) }, diff --git a/packages/builder/src/builderStore/store/backend/index.js b/packages/builder/src/builderStore/store/backend/index.js new file mode 100644 index 0000000000..011663961c --- /dev/null +++ b/packages/builder/src/builderStore/store/backend/index.js @@ -0,0 +1 @@ +export { permissions } from "./permissions" diff --git a/packages/builder/src/builderStore/store/backend/permissions.js b/packages/builder/src/builderStore/store/backend/permissions.js new file mode 100644 index 0000000000..70070f9072 --- /dev/null +++ b/packages/builder/src/builderStore/store/backend/permissions.js @@ -0,0 +1,29 @@ +import { writable } from "svelte/store" +import api from "../../api" + +function createPermissionStore() { + const { subscribe, set } = writable([]) + + return { + subscribe, + fetchLevels: async () => { + const response = await api.get("/api/permission/levels") + const json = await response.json() + set(json) + }, + forResource: async resourceId => { + const response = await api.get(`/api/permission/${resourceId}`) + const json = await response.json() + return json + }, + save: async ({ role, resource, level }) => { + const response = await api.post( + `/api/permission/${role}/${resource}/${level}` + ) + const json = await response.json() + return json + }, + } +} + +export const permissions = createPermissionStore() diff --git a/packages/builder/src/components/backend/DataTable/buttons/ManageAccessButton.svelte b/packages/builder/src/components/backend/DataTable/buttons/ManageAccessButton.svelte index 2540267d72..ac3550d5b5 100644 --- a/packages/builder/src/components/backend/DataTable/buttons/ManageAccessButton.svelte +++ b/packages/builder/src/components/backend/DataTable/buttons/ManageAccessButton.svelte @@ -1,22 +1,18 @@ @@ -30,8 +26,8 @@ From 2ddb2e3fbb3943e4177a67924674dc29163fca3b Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Keviin=20=C3=85berg=20Kultalahti?= Date: Mon, 22 Mar 2021 10:14:17 +0100 Subject: [PATCH 04/50] removes unused users field in backend store --- packages/builder/src/builderStore/store/backend.js | 9 --------- 1 file changed, 9 deletions(-) diff --git a/packages/builder/src/builderStore/store/backend.js b/packages/builder/src/builderStore/store/backend.js index 47dc6725b6..d7cc857483 100644 --- a/packages/builder/src/builderStore/store/backend.js +++ b/packages/builder/src/builderStore/store/backend.js @@ -6,7 +6,6 @@ import { permissions } from './backend/permissions' const INITIAL_BACKEND_UI_STATE = { tables: [], views: [], - users: [], roles: [], datasources: [], queries: [], @@ -302,14 +301,6 @@ export const getBackendUiStore = () => { }) }, }, - users: { - create: user => - store.update(state => { - state.users.push(user) - state.users = state.users - return state - }), - }, roles: { fetch: async () => { const response = await api.get("/api/roles") From 98607ca1bdec1a7f1f578e0661b5f20972e61671 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Keviin=20=C3=85berg=20Kultalahti?= Date: Mon, 22 Mar 2021 10:55:23 +0100 Subject: [PATCH 05/50] moves roles in backendstore to a separate store --- .../builder/src/builderStore/store/backend.js | 27 ----------------- .../src/builderStore/store/backend/roles.js | 30 +++++++++++++++++++ .../backend/DataTable/cells/RoleCell.svelte | 4 +-- .../DataTable/modals/CreateEditUser.svelte | 3 +- .../backend/DataTable/modals/EditRoles.svelte | 12 ++++---- .../popovers/ManageAccessPopover.svelte | 3 +- .../FrontendNavigatePane.svelte | 4 +-- .../NavigationPanel/NewScreenModal.svelte | 3 +- .../PropertyControls/RoleSelect.svelte | 4 +-- .../src/pages/[application]/_reset.svelte | 3 +- 10 files changed, 50 insertions(+), 43 deletions(-) create mode 100644 packages/builder/src/builderStore/store/backend/roles.js diff --git a/packages/builder/src/builderStore/store/backend.js b/packages/builder/src/builderStore/store/backend.js index d7cc857483..0eb5aaaf7a 100644 --- a/packages/builder/src/builderStore/store/backend.js +++ b/packages/builder/src/builderStore/store/backend.js @@ -1,12 +1,10 @@ import { writable, get } from "svelte/store" import { cloneDeep } from "lodash/fp" import api from "../api" -import { permissions } from './backend/permissions' const INITIAL_BACKEND_UI_STATE = { tables: [], views: [], - roles: [], datasources: [], queries: [], integrations: {}, @@ -50,11 +48,6 @@ export const getBackendUiStore = () => { state.selectedView = state.selectedView return state }), - select: row => - store.update(state => { - state.selectedRow = row - return state - }), }, datasources: { fetch: async () => { @@ -301,26 +294,6 @@ export const getBackendUiStore = () => { }) }, }, - roles: { - fetch: async () => { - const response = await api.get("/api/roles") - const roles = await response.json() - store.update(state => { - state.roles = roles - return state - }) - }, - delete: async role => { - const response = await api.delete(`/api/roles/${role._id}/${role._rev}`) - await store.actions.roles.fetch() - return response - }, - save: async role => { - const response = await api.post("/api/roles", role) - await store.actions.roles.fetch() - return response - }, - }, permissions: { fetchLevels: async () => { const response = await api.get("/api/permission/levels") diff --git a/packages/builder/src/builderStore/store/backend/roles.js b/packages/builder/src/builderStore/store/backend/roles.js new file mode 100644 index 0000000000..fc8bf57b23 --- /dev/null +++ b/packages/builder/src/builderStore/store/backend/roles.js @@ -0,0 +1,30 @@ +import { writable } from "svelte/store" +import api from "../../api" + +function createRolesStore() { + const { subscribe, set } = writable([]) + + return { + subscribe, + fetch: async () => { + set(await getRoles()) + }, + delete: async role => { + const response = await api.delete(`/api/roles/${role._id}/${role._rev}`) + set(await getRoles()) + return response + }, + save: async role => { + const response = await api.post("/api/roles", role) + set(await getRoles()) + return response + }, + } +} + +async function getRoles() { + const response = await api.get("/api/roles") + return await response.json() +} + +export const roles = createRolesStore() diff --git a/packages/builder/src/components/backend/DataTable/cells/RoleCell.svelte b/packages/builder/src/components/backend/DataTable/cells/RoleCell.svelte index a45f376a3e..784272c534 100644 --- a/packages/builder/src/components/backend/DataTable/cells/RoleCell.svelte +++ b/packages/builder/src/components/backend/DataTable/cells/RoleCell.svelte @@ -1,9 +1,9 @@ diff --git a/packages/builder/src/components/backend/DataTable/modals/CreateEditUser.svelte b/packages/builder/src/components/backend/DataTable/modals/CreateEditUser.svelte index db92abc065..61da9f61bf 100644 --- a/packages/builder/src/components/backend/DataTable/modals/CreateEditUser.svelte +++ b/packages/builder/src/components/backend/DataTable/modals/CreateEditUser.svelte @@ -1,5 +1,6 @@ diff --git a/packages/builder/src/pages/[application]/_reset.svelte b/packages/builder/src/pages/[application]/_reset.svelte index 2411fad0c9..8e34989a23 100644 --- a/packages/builder/src/pages/[application]/_reset.svelte +++ b/packages/builder/src/pages/[application]/_reset.svelte @@ -1,5 +1,6 @@ {#if $backendUiStore.selectedDatabase && $backendUiStore.selectedDatabase._id}
- {#each $backendUiStore.datasources as datasource, idx} + {#each $datasources.sources as datasource, idx} 0} text={datasource.name} - selected={$backendUiStore.selectedDatasourceId === datasource._id} + selected={$datasources.selected === datasource._id} on:click={() => selectDatasource(datasource)}>
import { goto, params } from "@sveltech/routify" - import { backendUiStore, store } from "builderStore" + import { datasources } from 'builderStore/store/backend/' import { notifier } from "builderStore/store/notifications" - import { Input, Label, ModalContent, Button, Spacer } from "@budibase/bbui" + import { Input, Label, ModalContent } from "@budibase/bbui" import TableIntegrationMenu from "../TableIntegrationMenu/index.svelte" import analytics from "analytics" @@ -14,7 +14,7 @@ function checkValid(evt) { const datasourceName = evt.target.value if ( - $backendUiStore.datasources?.some( + $datasources?.sources.some( datasource => datasource.name === datasourceName ) ) { @@ -28,7 +28,7 @@ const { type, ...config } = integration // Create datasource - const response = await backendUiStore.actions.datasources.save({ + const response = await datasources.save({ name, source: type, config, diff --git a/packages/builder/src/components/backend/DatasourceNavigator/popovers/EditDatasourcePopover.svelte b/packages/builder/src/components/backend/DatasourceNavigator/popovers/EditDatasourcePopover.svelte index c7842001d0..ca0442e3c7 100644 --- a/packages/builder/src/components/backend/DatasourceNavigator/popovers/EditDatasourcePopover.svelte +++ b/packages/builder/src/components/backend/DatasourceNavigator/popovers/EditDatasourcePopover.svelte @@ -1,6 +1,6 @@ diff --git a/packages/builder/src/pages/[application]/data/datasource/[selectedDatasource]/index.svelte b/packages/builder/src/pages/[application]/data/datasource/[selectedDatasource]/index.svelte index 46ae11bd07..23a08522f8 100644 --- a/packages/builder/src/pages/[application]/data/datasource/[selectedDatasource]/index.svelte +++ b/packages/builder/src/pages/[application]/data/datasource/[selectedDatasource]/index.svelte @@ -2,20 +2,21 @@ import { goto, beforeUrlChange } from "@sveltech/routify" import { Button, Heading, Body, Spacer } from "@budibase/bbui" import { backendUiStore } from "builderStore" + import { datasources } from 'builderStore/store/backend/' import { notifier } from "builderStore/store/notifications" import IntegrationConfigForm from "components/backend/DatasourceNavigator/TableIntegrationMenu/IntegrationConfigForm.svelte" import ICONS from "components/backend/DatasourceNavigator/icons" let unsaved = false - $: datasource = $backendUiStore.datasources.find( - ds => ds._id === $backendUiStore.selectedDatasourceId + $: datasource = $datasources.sources.find( + ds => ds._id === $datasources.selected ) $: integration = datasource && $backendUiStore.integrations[datasource.source] async function saveDatasource() { // Create datasource - await backendUiStore.actions.datasources.save(datasource) + await datasources.save(datasource) notifier.success(`Datasource ${name} saved successfully.`) unsaved = false } diff --git a/packages/builder/src/pages/[application]/data/datasource/_layout.svelte b/packages/builder/src/pages/[application]/data/datasource/_layout.svelte index e67316ca65..ebffcf91c9 100644 --- a/packages/builder/src/pages/[application]/data/datasource/_layout.svelte +++ b/packages/builder/src/pages/[application]/data/datasource/_layout.svelte @@ -1,5 +1,5 @@ diff --git a/packages/builder/src/pages/[application]/data/datasource/index.svelte b/packages/builder/src/pages/[application]/data/datasource/index.svelte index b1c7708465..7f85d4ed14 100644 --- a/packages/builder/src/pages/[application]/data/datasource/index.svelte +++ b/packages/builder/src/pages/[application]/data/datasource/index.svelte @@ -1,11 +1,12 @@ From 58aefcec04241b751fd985812f4bd5c943be88fa Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Keviin=20=C3=85berg=20Kultalahti?= Date: Mon, 22 Mar 2021 12:57:42 +0100 Subject: [PATCH 07/50] fixes permissions problem --- .../DataTable/popovers/ManageAccessPopover.svelte | 10 +++------- 1 file changed, 3 insertions(+), 7 deletions(-) diff --git a/packages/builder/src/components/backend/DataTable/popovers/ManageAccessPopover.svelte b/packages/builder/src/components/backend/DataTable/popovers/ManageAccessPopover.svelte index 7a6b420e8a..e96f6d319c 100644 --- a/packages/builder/src/components/backend/DataTable/popovers/ManageAccessPopover.svelte +++ b/packages/builder/src/components/backend/DataTable/popovers/ManageAccessPopover.svelte @@ -1,6 +1,6 @@ diff --git a/packages/builder/src/components/design/PropertiesPanel/PropertyControls/EventsEditor/actions/ExecuteQuery.svelte b/packages/builder/src/components/design/PropertiesPanel/PropertyControls/EventsEditor/actions/ExecuteQuery.svelte index 53f5d8b51b..2187f384e9 100644 --- a/packages/builder/src/components/design/PropertiesPanel/PropertyControls/EventsEditor/actions/ExecuteQuery.svelte +++ b/packages/builder/src/components/design/PropertiesPanel/PropertyControls/EventsEditor/actions/ExecuteQuery.svelte @@ -1,7 +1,7 @@ diff --git a/packages/builder/src/components/integration/QueryViewer.svelte b/packages/builder/src/components/integration/QueryViewer.svelte index 869697f109..2019e8bd0c 100644 --- a/packages/builder/src/components/integration/QueryViewer.svelte +++ b/packages/builder/src/components/integration/QueryViewer.svelte @@ -16,7 +16,7 @@ import ExternalDataSourceTable from "components/backend/DataTable/ExternalDataSourceTable.svelte" import ParameterBuilder from "components/integration/QueryParameterBuilder.svelte" import { backendUiStore } from "builderStore" - import { datasources } from 'builderStore/store/backend/' + import { datasources, integrations } from 'builderStore/store/backend/' const PREVIEW_HEADINGS = [ { @@ -57,7 +57,7 @@ $: datasourceType = datasource?.source - $: integrationInfo = $backendUiStore.integrations[datasourceType] + $: integrationInfo = $integrations[datasourceType] $: queryConfig = integrationInfo?.query $: shouldShowQueryConfig = queryConfig && query.queryVerb diff --git a/packages/builder/src/pages/[application]/data/datasource/[selectedDatasource]/index.svelte b/packages/builder/src/pages/[application]/data/datasource/[selectedDatasource]/index.svelte index 23a08522f8..8bf2f48dc0 100644 --- a/packages/builder/src/pages/[application]/data/datasource/[selectedDatasource]/index.svelte +++ b/packages/builder/src/pages/[application]/data/datasource/[selectedDatasource]/index.svelte @@ -2,7 +2,7 @@ import { goto, beforeUrlChange } from "@sveltech/routify" import { Button, Heading, Body, Spacer } from "@budibase/bbui" import { backendUiStore } from "builderStore" - import { datasources } from 'builderStore/store/backend/' + import { datasources, integrations } from 'builderStore/store/backend/' import { notifier } from "builderStore/store/notifications" import IntegrationConfigForm from "components/backend/DatasourceNavigator/TableIntegrationMenu/IntegrationConfigForm.svelte" import ICONS from "components/backend/DatasourceNavigator/icons" @@ -12,7 +12,7 @@ $: datasource = $datasources.sources.find( ds => ds._id === $datasources.selected ) - $: integration = datasource && $backendUiStore.integrations[datasource.source] + $: integration = datasource && $integrations[datasource.source] async function saveDatasource() { // Create datasource From cb3a4b549ac2a36af90fca3c4982b7b4489ca1ae Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Keviin=20=C3=85berg=20Kultalahti?= Date: Mon, 22 Mar 2021 14:47:21 +0100 Subject: [PATCH 09/50] moves queries part of backendstore to separate store --- .../builder/src/builderStore/store/backend.js | 2 - .../builderStore/store/backend/datasources.js | 10 +-- .../src/builderStore/store/backend/index.js | 1 + .../src/builderStore/store/backend/queries.js | 69 +++++++++++++++++++ .../src/builderStore/store/frontend.js | 10 +-- .../DatasourceNavigator.svelte | 12 ++-- .../popovers/EditQueryPopover.svelte | 2 +- .../PropertyControls/DatasourceSelect.svelte | 6 +- .../EventsEditor/actions/ExecuteQuery.svelte | 14 ++-- .../components/integration/QueryViewer.svelte | 4 +- .../[query]/_layout.svelte | 6 +- .../[selectedDatasource]/[query]/index.svelte | 3 +- .../[selectedDatasource]/_layout.svelte | 2 +- .../[selectedDatasource]/index.svelte | 8 +-- .../data/datasource/_layout.svelte | 4 +- .../data/datasource/index.svelte | 2 +- 16 files changed, 113 insertions(+), 42 deletions(-) create mode 100644 packages/builder/src/builderStore/store/backend/queries.js diff --git a/packages/builder/src/builderStore/store/backend.js b/packages/builder/src/builderStore/store/backend.js index fb01bd5f95..9a13471ec8 100644 --- a/packages/builder/src/builderStore/store/backend.js +++ b/packages/builder/src/builderStore/store/backend.js @@ -21,13 +21,11 @@ export const getBackendUiStore = () => { select: async db => { const [tables, queries] = await Promise.all([ api.get(`/api/tables`).then(r => r.json()), - api.get(`/api/queries`).then(r => r.json()), ]) store.update(state => { state.selectedDatabase = db state.tables = tables - state.queries = queries return state }) }, diff --git a/packages/builder/src/builderStore/store/backend/datasources.js b/packages/builder/src/builderStore/store/backend/datasources.js index 1a2cba18da..509c6479ae 100644 --- a/packages/builder/src/builderStore/store/backend/datasources.js +++ b/packages/builder/src/builderStore/store/backend/datasources.js @@ -3,7 +3,7 @@ import api from "../../api" function createDatasourcesStore() { const { subscribe, update, set } = writable({ - sources: [], + list: [], selected: null, }) @@ -14,7 +14,7 @@ function createDatasourcesStore() { fetch: async () => { const response = await api.get(`/api/datasources`) const json = await response.json() - update(state => ({ ...state, sources: json })) + update(state => ({ ...state, list: json })) return json }, select: async datasourceId => { @@ -25,9 +25,9 @@ function createDatasourcesStore() { const json = await response.json() update(state => { - const currentIdx = state.sources.findIndex(ds => ds._id === json._id) + const currentIdx = state.list.findIndex(ds => ds._id === json._id) - const sources = state.sources + const sources = state.list if (currentIdx >= 0) { sources.splice(currentIdx, 1, json) @@ -42,7 +42,7 @@ function createDatasourcesStore() { delete: async datasource => { await api.delete(`/api/datasources/${datasource._id}/${datasource._rev}`) update(state => { - const sources = state.sources.filter( + const sources = state.list.filter( existing => existing._id !== datasource._id ) return { sources, selected: null } diff --git a/packages/builder/src/builderStore/store/backend/index.js b/packages/builder/src/builderStore/store/backend/index.js index 8cdbffbe4a..3022f6791e 100644 --- a/packages/builder/src/builderStore/store/backend/index.js +++ b/packages/builder/src/builderStore/store/backend/index.js @@ -2,3 +2,4 @@ export { permissions } from "./permissions" export { roles } from "./roles" export { datasources } from "./datasources" export { integrations } from "./integrations" +export { queries } from "./queries" diff --git a/packages/builder/src/builderStore/store/backend/queries.js b/packages/builder/src/builderStore/store/backend/queries.js new file mode 100644 index 0000000000..edb0c0577b --- /dev/null +++ b/packages/builder/src/builderStore/store/backend/queries.js @@ -0,0 +1,69 @@ +import { writable } from "svelte/store" +import { datasources, integrations } from "./" +import api from "../../api" + +function createQueriesStore() { + const { subscribe, set, update } = writable({list: [], selected: null}) + + return { + subscribe, + set, + fetch: async () => { + const response = await api.get(`/api/queries`) + const json = await response.json() + update(state => ({...state, list: json})) + return json + }, + save: async (datasourceId, query) => { + const _integrations = get(integrations) + const dataSource = get(datasources).list.filter( + ds => ds._id === datasourceId + ) + // check if readable attribute is found + if (dataSource.length !== 0) { + const integration = _integrations[dataSource[0].source] + const readable = integration.query[query.queryVerb].readable + if (readable) { + query.readable = readable + } + } + query.datasourceId = datasourceId + const response = await api.post(`/api/queries`, query) + if (response.status !== 200) { + throw new Error("Failed saving query.") + } + const json = await response.json() + update(state => { + const currentIdx = state.list.findIndex(query => query._id === json._id) + + const queries = state.list + + if (currentIdx >= 0) { + queries.splice(currentIdx, 1, json) + } else { + queries.push(json) + } + return { list: queries, selected: json._id} + }) + return json + }, + select: query => { + datasources.update(state => ({ ...state, selected: query.datasourceId })) + }, + delete: async query => { + await api.delete(`/api/queries/${query._id}/${query._rev}`) + update(state => { + state.list = state.list.filter( + existing => existing._id !== query._id + ) + if (state.selected === query._id) { + state.selected = null + } + + return state + }) + }, + } +} + +export const queries = createQueriesStore() diff --git a/packages/builder/src/builderStore/store/frontend.js b/packages/builder/src/builderStore/store/frontend.js index f4977db705..270a24c295 100644 --- a/packages/builder/src/builderStore/store/frontend.js +++ b/packages/builder/src/builderStore/store/frontend.js @@ -10,7 +10,7 @@ import { selectedAccessRole, } from "builderStore" // Backendstores -import { datasources, integrations } from 'builderStore/store/backend/' +import { datasources, integrations, queries } from 'builderStore/store/backend/' import { fetchComponentLibDefinitions } from "../loadComponentLibraries" import api from "../api" @@ -62,12 +62,14 @@ export const getFrontendStore = () => { await hostingStore.actions.fetch() // Initialise backend stores - const [_datasources, _integrations] = await Promise.all([ + const [_datasources, _integrations, _queries] = await Promise.all([ api.get(`/api/datasources`).then(r => r.json()), - api.get("/api/integrations").then(r => r.json()) + api.get("/api/integrations").then(r => r.json()), + api.get(`/api/queries`).then(r => r.json()) ]) - datasources.set({sources: _datasources, selected: null}) + datasources.set({ list: _datasources, selected: null }) integrations.set(_integrations) + queries.set({ list: _queries, selected: null }) await backendUiStore.actions.database.select(application.instance) }, diff --git a/packages/builder/src/components/backend/DatasourceNavigator/DatasourceNavigator.svelte b/packages/builder/src/components/backend/DatasourceNavigator/DatasourceNavigator.svelte index b026fe7631..f94967dee9 100644 --- a/packages/builder/src/components/backend/DatasourceNavigator/DatasourceNavigator.svelte +++ b/packages/builder/src/components/backend/DatasourceNavigator/DatasourceNavigator.svelte @@ -2,7 +2,7 @@ import { onMount } from "svelte" import { goto } from "@sveltech/routify" import { backendUiStore } from "builderStore" - import { datasources } from 'builderStore/store/backend/' + import { datasources, queries } from 'builderStore/store/backend/' import EditDatasourcePopover from "./popovers/EditDatasourcePopover.svelte" import EditQueryPopover from "./popovers/EditQueryPopover.svelte" import NavItem from "components/common/NavItem.svelte" @@ -17,19 +17,19 @@ if ($backendUiStore.selectedQueryId === query._id) { return } - backendUiStore.actions.queries.select(query) + queries.select(query) $goto(`./datasource/${query.datasourceId}/${query._id}`) } onMount(() => { datasources.fetch() - backendUiStore.actions.queries.fetch() + queries.fetch() }) {#if $backendUiStore.selectedDatabase && $backendUiStore.selectedDatabase._id}
- {#each $datasources.sources as datasource, idx} + {#each $datasources.list as datasource, idx} 0} text={datasource.name} @@ -43,12 +43,12 @@
- {#each $backendUiStore.queries.filter(query => query.datasourceId === datasource._id) as query} + {#each $queries.list.filter(query => query.datasourceId === datasource._id) as query} onClickQuery(query)}> diff --git a/packages/builder/src/components/backend/DatasourceNavigator/popovers/EditQueryPopover.svelte b/packages/builder/src/components/backend/DatasourceNavigator/popovers/EditQueryPopover.svelte index dc07b31645..517e7b1297 100644 --- a/packages/builder/src/components/backend/DatasourceNavigator/popovers/EditQueryPopover.svelte +++ b/packages/builder/src/components/backend/DatasourceNavigator/popovers/EditQueryPopover.svelte @@ -23,7 +23,7 @@ } async function deleteQuery() { - await backendUiStore.actions.queries.delete(query) + await queries.delete(query) notifier.success("Query deleted") hideEditor() } diff --git a/packages/builder/src/components/design/PropertiesPanel/PropertyControls/DatasourceSelect.svelte b/packages/builder/src/components/design/PropertiesPanel/PropertyControls/DatasourceSelect.svelte index 24422150fc..344564d15e 100644 --- a/packages/builder/src/components/design/PropertiesPanel/PropertyControls/DatasourceSelect.svelte +++ b/packages/builder/src/components/design/PropertiesPanel/PropertyControls/DatasourceSelect.svelte @@ -37,7 +37,7 @@ })) return [...acc, ...viewsArr] }, []) - $: queries = $backendUiStore.queries + $: queries = $queries.list .filter( query => showAllQueries || query.queryVerb === "read" || query.readable ) @@ -82,7 +82,7 @@ } function fetchQueryDefinition(query) { - const source = $datasources.sources.find( + const source = $datasources.list.find( ds => ds._id === query.datasourceId ).source return $integrations[source].query[query.queryVerb] @@ -124,7 +124,7 @@ height={200} query={value} schema={fetchQueryDefinition(value)} - datasource={$datasources.sources.find(ds => ds._id === value.datasourceId)} + datasource={$datasources.list.find(ds => ds._id === value.datasourceId)} editable={false} />
diff --git a/packages/builder/src/components/design/PropertiesPanel/PropertyControls/EventsEditor/actions/ExecuteQuery.svelte b/packages/builder/src/components/design/PropertiesPanel/PropertyControls/EventsEditor/actions/ExecuteQuery.svelte index 2187f384e9..bb60eff64c 100644 --- a/packages/builder/src/components/design/PropertiesPanel/PropertyControls/EventsEditor/actions/ExecuteQuery.svelte +++ b/packages/builder/src/components/design/PropertiesPanel/PropertyControls/EventsEditor/actions/ExecuteQuery.svelte @@ -1,15 +1,15 @@ diff --git a/packages/builder/src/pages/[application]/data/datasource/[selectedDatasource]/[query]/index.svelte b/packages/builder/src/pages/[application]/data/datasource/[selectedDatasource]/[query]/index.svelte index 2080480fce..62332f405d 100644 --- a/packages/builder/src/pages/[application]/data/datasource/[selectedDatasource]/[query]/index.svelte +++ b/packages/builder/src/pages/[application]/data/datasource/[selectedDatasource]/[query]/index.svelte @@ -1,6 +1,7 @@ diff --git a/packages/builder/src/pages/[application]/data/datasource/index.svelte b/packages/builder/src/pages/[application]/data/datasource/index.svelte index 7f85d4ed14..62bd7acd47 100644 --- a/packages/builder/src/pages/[application]/data/datasource/index.svelte +++ b/packages/builder/src/pages/[application]/data/datasource/index.svelte @@ -6,7 +6,7 @@ onMount(async () => { // navigate to first table in list, if not already selected - $datasources.sources.length > 0 && $goto(`../${$datasources.sources[0]._id}`) + $datasources.list.length > 0 && $goto(`../${$datasources.list[0]._id}`) }) From 526283d40614854b48962e132d1d7a77bef2a148 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Keviin=20=C3=85berg=20Kultalahti?= Date: Mon, 22 Mar 2021 16:33:08 +0100 Subject: [PATCH 10/50] fixes and splits out database to it's separate store --- .../builder/src/builderStore/store/backend.js | 70 +------------------ .../builderStore/store/backend/database.js | 3 + .../builderStore/store/backend/datasources.js | 4 +- .../src/builderStore/store/backend/index.js | 1 + .../src/builderStore/store/backend/queries.js | 1 + .../src/builderStore/store/frontend.js | 6 +- .../DatasourceNavigator.svelte | 7 +- .../modals/CreateDatasourceModal.svelte | 4 +- 8 files changed, 17 insertions(+), 79 deletions(-) create mode 100644 packages/builder/src/builderStore/store/backend/database.js diff --git a/packages/builder/src/builderStore/store/backend.js b/packages/builder/src/builderStore/store/backend.js index 9a13471ec8..8f12661284 100644 --- a/packages/builder/src/builderStore/store/backend.js +++ b/packages/builder/src/builderStore/store/backend.js @@ -6,7 +6,6 @@ const INITIAL_BACKEND_UI_STATE = { tables: [], views: [], datasources: [], - queries: [], selectedDatabase: {}, selectedTable: {}, draftTable: {}, @@ -19,12 +18,11 @@ export const getBackendUiStore = () => { reset: () => store.set({ ...INITIAL_BACKEND_UI_STATE }), database: { select: async db => { - const [tables, queries] = await Promise.all([ + const [tables] = await Promise.all([ api.get(`/api/tables`).then(r => r.json()), ]) store.update(state => { - state.selectedDatabase = db state.tables = tables return state }) @@ -42,72 +40,6 @@ export const getBackendUiStore = () => { return state }), }, - queries: { - fetch: async () => { - const response = await api.get(`/api/queries`) - const json = await response.json() - store.update(state => { - state.queries = json - return state - }) - return json - }, - save: async (datasourceId, query) => { - const integrations = get(store).integrations - const dataSource = get(store).datasources.filter( - ds => ds._id === datasourceId - ) - // check if readable attribute is found - if (dataSource.length !== 0) { - const integration = integrations[dataSource[0].source] - const readable = integration.query[query.queryVerb].readable - if (readable) { - query.readable = readable - } - } - query.datasourceId = datasourceId - const response = await api.post(`/api/queries`, query) - if (response.status !== 200) { - throw new Error("Failed saving query.") - } - const json = await response.json() - store.update(state => { - const currentIdx = state.queries.findIndex( - query => query._id === json._id - ) - - if (currentIdx >= 0) { - state.queries.splice(currentIdx, 1, json) - } else { - state.queries.push(json) - } - - state.queries = state.queries - state.selectedQueryId = json._id - return state - }) - return json - }, - select: query => - store.update(state => { - state.selectedDatasourceId = query.datasourceId - state.selectedQueryId = query._id - return state - }), - delete: async query => { - await api.delete(`/api/queries/${query._id}/${query._rev}`) - store.update(state => { - state.queries = state.queries.filter( - existing => existing._id !== query._id - ) - if (state.selectedQueryId === query._id) { - state.selectedQueryId = null - } - - return state - }) - }, - }, tables: { fetch: async () => { const tablesResponse = await api.get(`/api/tables`) diff --git a/packages/builder/src/builderStore/store/backend/database.js b/packages/builder/src/builderStore/store/backend/database.js new file mode 100644 index 0000000000..c619ca200d --- /dev/null +++ b/packages/builder/src/builderStore/store/backend/database.js @@ -0,0 +1,3 @@ +import { writable } from "svelte/store" + +export const database = writable({}) \ No newline at end of file diff --git a/packages/builder/src/builderStore/store/backend/datasources.js b/packages/builder/src/builderStore/store/backend/datasources.js index 509c6479ae..d84e66d344 100644 --- a/packages/builder/src/builderStore/store/backend/datasources.js +++ b/packages/builder/src/builderStore/store/backend/datasources.js @@ -1,4 +1,5 @@ import { writable } from "svelte/store" +import { queries } from "./" import api from "../../api" function createDatasourcesStore() { @@ -19,6 +20,7 @@ function createDatasourcesStore() { }, select: async datasourceId => { update(state => ({ ...state, selected: datasourceId })) + queries.update(state => ({...state, selected: null})) }, save: async datasource => { const response = await api.post("/api/datasources", datasource) @@ -35,7 +37,7 @@ function createDatasourcesStore() { sources.push(json) } - return { sources, selected: json._id } + return { list: sources, selected: json._id } }) return json }, diff --git a/packages/builder/src/builderStore/store/backend/index.js b/packages/builder/src/builderStore/store/backend/index.js index 3022f6791e..11a5613459 100644 --- a/packages/builder/src/builderStore/store/backend/index.js +++ b/packages/builder/src/builderStore/store/backend/index.js @@ -1,3 +1,4 @@ +export { database } from "./database" export { permissions } from "./permissions" export { roles } from "./roles" export { datasources } from "./datasources" diff --git a/packages/builder/src/builderStore/store/backend/queries.js b/packages/builder/src/builderStore/store/backend/queries.js index edb0c0577b..68851f59ee 100644 --- a/packages/builder/src/builderStore/store/backend/queries.js +++ b/packages/builder/src/builderStore/store/backend/queries.js @@ -8,6 +8,7 @@ function createQueriesStore() { return { subscribe, set, + update, fetch: async () => { const response = await api.get(`/api/queries`) const json = await response.json() diff --git a/packages/builder/src/builderStore/store/frontend.js b/packages/builder/src/builderStore/store/frontend.js index 270a24c295..e506ecb4f1 100644 --- a/packages/builder/src/builderStore/store/frontend.js +++ b/packages/builder/src/builderStore/store/frontend.js @@ -10,7 +10,7 @@ import { selectedAccessRole, } from "builderStore" // Backendstores -import { datasources, integrations, queries } from 'builderStore/store/backend/' +import { datasources, integrations, queries, database } from 'builderStore/store/backend/' import { fetchComponentLibDefinitions } from "../loadComponentLibraries" import api from "../api" @@ -70,8 +70,8 @@ export const getFrontendStore = () => { datasources.set({ list: _datasources, selected: null }) integrations.set(_integrations) queries.set({ list: _queries, selected: null }) - - await backendUiStore.actions.database.select(application.instance) + database.set(application.instance) + }, routing: { fetch: async () => { diff --git a/packages/builder/src/components/backend/DatasourceNavigator/DatasourceNavigator.svelte b/packages/builder/src/components/backend/DatasourceNavigator/DatasourceNavigator.svelte index f94967dee9..f101bee181 100644 --- a/packages/builder/src/components/backend/DatasourceNavigator/DatasourceNavigator.svelte +++ b/packages/builder/src/components/backend/DatasourceNavigator/DatasourceNavigator.svelte @@ -1,8 +1,7 @@ -{#if $backendUiStore.selectedDatabase && $backendUiStore.selectedDatabase._id} +{#if $database?._id}
{#each $datasources.list as datasource, idx} - import { goto, params } from "@sveltech/routify" + import { goto } from "@sveltech/routify" import { datasources } from 'builderStore/store/backend/' import { notifier } from "builderStore/store/notifications" import { Input, Label, ModalContent } from "@budibase/bbui" @@ -14,7 +14,7 @@ function checkValid(evt) { const datasourceName = evt.target.value if ( - $datasources?.sources.some( + $datasources?.list.some( datasource => datasource.name === datasourceName ) ) { From c4413076114c8f1da8db9f7c6b3e0b3dd007be46 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Keviin=20=C3=85berg=20Kultalahti?= Date: Tue, 23 Mar 2021 10:56:53 +0100 Subject: [PATCH 11/50] fixes issues with queries not getting selected correctly --- packages/builder/src/builderStore/store/backend/queries.js | 1 + .../backend/DatasourceNavigator/DatasourceNavigator.svelte | 2 ++ .../datasource/[selectedDatasource]/[query]/index.svelte | 7 +++---- 3 files changed, 6 insertions(+), 4 deletions(-) diff --git a/packages/builder/src/builderStore/store/backend/queries.js b/packages/builder/src/builderStore/store/backend/queries.js index 68851f59ee..9e4490a7f0 100644 --- a/packages/builder/src/builderStore/store/backend/queries.js +++ b/packages/builder/src/builderStore/store/backend/queries.js @@ -49,6 +49,7 @@ function createQueriesStore() { return json }, select: query => { + update(state => ({ ...state, selected: query._id })) datasources.update(state => ({ ...state, selected: query.datasourceId })) }, delete: async query => { diff --git a/packages/builder/src/components/backend/DatasourceNavigator/DatasourceNavigator.svelte b/packages/builder/src/components/backend/DatasourceNavigator/DatasourceNavigator.svelte index f101bee181..a0e5c783b9 100644 --- a/packages/builder/src/components/backend/DatasourceNavigator/DatasourceNavigator.svelte +++ b/packages/builder/src/components/backend/DatasourceNavigator/DatasourceNavigator.svelte @@ -24,6 +24,8 @@ datasources.fetch() queries.fetch() }) + + $: console.log($queries) {#if $database?._id} diff --git a/packages/builder/src/pages/[application]/data/datasource/[selectedDatasource]/[query]/index.svelte b/packages/builder/src/pages/[application]/data/datasource/[selectedDatasource]/[query]/index.svelte index 62332f405d..8fc21249b7 100644 --- a/packages/builder/src/pages/[application]/data/datasource/[selectedDatasource]/[query]/index.svelte +++ b/packages/builder/src/pages/[application]/data/datasource/[selectedDatasource]/[query]/index.svelte @@ -1,7 +1,6 @@ {#if $database?._id} From a440e7631be1d91435ce771636dd86c04be90cd5 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Keviin=20=C3=85berg=20Kultalahti?= Date: Tue, 23 Mar 2021 11:54:03 +0100 Subject: [PATCH 13/50] move tables to separate store --- .../builder/src/builderStore/store/backend.js | 95 ---------------- .../src/builderStore/store/backend/index.js | 1 + .../src/builderStore/store/backend/tables.js | 107 ++++++++++++++++++ .../src/builderStore/store/frontend.js | 12 +- .../FlowChart/AutomationBlockTagline.svelte | 4 +- .../automation/SetupPanel/RowSelector.svelte | 6 +- .../SetupPanel/TableSelector.svelte | 4 +- .../DataTable/RelationshipDataTable.svelte | 6 +- .../backend/DataTable/ViewDataTable.svelte | 7 +- .../DataTable/modals/CreateEditColumn.svelte | 32 +++--- .../DataTable/modals/CreateEditRow.svelte | 5 +- .../DataTable/modals/CreateEditUser.svelte | 5 +- .../popovers/CalculatePopover.svelte | 3 +- .../popovers/CreateViewPopover.svelte | 8 +- .../DataTable/popovers/FilterPopover.svelte | 3 +- .../DataTable/popovers/GroupByPopover.svelte | 3 +- .../TableNavigator/TableNavigator.svelte | 7 +- .../modals/CreateTableModal.svelte | 7 +- .../common/LinkedRowSelector.svelte | 4 +- .../NavigationPanel/NewScreenModal.svelte | 5 +- .../PropertyControls/DatasourceSelect.svelte | 7 +- .../PropertyControls/TableSelect.svelte | 4 +- .../data/datasource/index.svelte | 5 +- .../data/table/[selectedTable]/_layout.svelte | 6 +- .../[application]/data/table/_layout.svelte | 8 +- .../[application]/data/table/index.svelte | 6 +- .../data/view/[selectedView]/_layout.svelte | 4 +- 27 files changed, 194 insertions(+), 170 deletions(-) create mode 100644 packages/builder/src/builderStore/store/backend/tables.js diff --git a/packages/builder/src/builderStore/store/backend.js b/packages/builder/src/builderStore/store/backend.js index 8f12661284..a7947f3e5e 100644 --- a/packages/builder/src/builderStore/store/backend.js +++ b/packages/builder/src/builderStore/store/backend.js @@ -40,101 +40,6 @@ export const getBackendUiStore = () => { return state }), }, - tables: { - fetch: async () => { - const tablesResponse = await api.get(`/api/tables`) - const tables = await tablesResponse.json() - store.update(state => { - state.tables = tables - return state - }) - }, - select: table => - store.update(state => { - state.selectedTable = table - state.draftTable = cloneDeep(table) - state.selectedView = { name: `all_${table._id}` } - return state - }), - save: async table => { - const updatedTable = cloneDeep(table) - const oldTable = get(store).tables.filter(t => t._id === table._id)[0] - - const fieldNames = [] - // update any renamed schema keys to reflect their names - for (let key of Object.keys(updatedTable.schema)) { - // if field name has been seen before remove it - if (fieldNames.indexOf(key.toLowerCase()) !== -1) { - delete updatedTable.schema[key] - continue - } - const field = updatedTable.schema[key] - const oldField = oldTable?.schema[key] - // if the type has changed then revert back to the old field - if (oldField != null && oldField.type !== field.type) { - updatedTable.schema[key] = oldField - } - // field has been renamed - if (field.name && field.name !== key) { - updatedTable.schema[field.name] = field - updatedTable._rename = { old: key, updated: field.name } - delete updatedTable.schema[key] - } - // finally record this field has been used - fieldNames.push(key.toLowerCase()) - } - - const SAVE_TABLE_URL = `/api/tables` - const response = await api.post(SAVE_TABLE_URL, updatedTable) - const savedTable = await response.json() - await store.actions.tables.fetch() - store.actions.tables.select(savedTable) - return savedTable - }, - delete: async table => { - await api.delete(`/api/tables/${table._id}/${table._rev}`) - store.update(state => { - state.tables = state.tables.filter( - existing => existing._id !== table._id - ) - state.selectedTable = {} - return state - }) - }, - saveField: ({ originalName, field, primaryDisplay = false, indexes }) => { - store.update(state => { - // delete the original if renaming - // need to handle if the column had no name, empty string - if (originalName || originalName === "") { - delete state.draftTable.schema[originalName] - state.draftTable._rename = { - old: originalName, - updated: field.name, - } - } - - // Optionally set display column - if (primaryDisplay) { - state.draftTable.primaryDisplay = field.name - } - - if (indexes) { - state.draftTable.indexes = indexes - } - - state.draftTable.schema[field.name] = cloneDeep(field) - store.actions.tables.save(state.draftTable) - return state - }) - }, - deleteField: field => { - store.update(state => { - delete state.draftTable.schema[field.name] - store.actions.tables.save(state.draftTable) - return state - }) - }, - }, views: { select: view => store.update(state => { diff --git a/packages/builder/src/builderStore/store/backend/index.js b/packages/builder/src/builderStore/store/backend/index.js index 11a5613459..303891e33b 100644 --- a/packages/builder/src/builderStore/store/backend/index.js +++ b/packages/builder/src/builderStore/store/backend/index.js @@ -1,4 +1,5 @@ export { database } from "./database" +export { tables } from "./tables" export { permissions } from "./permissions" export { roles } from "./roles" export { datasources } from "./datasources" diff --git a/packages/builder/src/builderStore/store/backend/tables.js b/packages/builder/src/builderStore/store/backend/tables.js new file mode 100644 index 0000000000..29c09839dc --- /dev/null +++ b/packages/builder/src/builderStore/store/backend/tables.js @@ -0,0 +1,107 @@ +import { writable } from "svelte/store" +import { cloneDeep } from "lodash/fp" +import api from "../../api" + +function createTablesStore() { + const store = writable({ + list: [], + selected: {}, + draft: {}, + view: {} + }) + const { subscribe, update, set } = store + + return { + subscribe, + set, + fetch: async () => { + const tablesResponse = await api.get(`/api/tables`) + const tables = await tablesResponse.json() + update(state => ({...state, list: tables})) + }, + select: table => + update(state => ({ + ...state, + selected: table, + draft: cloneDeep(table), + view: { name: `all_${table._id}` } + })), + save: async table => { + const updatedTable = cloneDeep(table) + const oldTable = get(store).list.filter(t => t._id === table._id)[0] + + const fieldNames = [] + // update any renamed schema keys to reflect their names + for (let key of Object.keys(updatedTable.schema)) { + // if field name has been seen before remove it + if (fieldNames.indexOf(key.toLowerCase()) !== -1) { + delete updatedTable.schema[key] + continue + } + const field = updatedTable.schema[key] + const oldField = oldTable?.schema[key] + // if the type has changed then revert back to the old field + if (oldField != null && oldField?.type !== field.type) { + updatedTable.schema[key] = oldField + } + // field has been renamed + if (field.name && field.name !== key) { + updatedTable.schema[field.name] = field + updatedTable._rename = { old: key, updated: field.name } + delete updatedTable.schema[key] + } + // finally record this field has been used + fieldNames.push(key.toLowerCase()) + } + + const response = await api.post(`/api/tables`, updatedTable) + const savedTable = await response.json() + await store.fetch() + await store.select(savedTable) + return savedTable + }, + delete: async table => { + await api.delete(`/api/tables/${table._id}/${table._rev}`) + update(state => ({ + ...state, + list: state.list.filter(existing => existing._id !== table._id), + selected: {} + })) + }, + saveField: ({ originalName, field, primaryDisplay = false, indexes }) => { + update(state => { + // delete the original if renaming + // need to handle if the column had no name, empty string + if (originalName || originalName === "") { + delete state.draft.schema[originalName] + state.draft._rename = { + old: originalName, + updated: field.name, + } + } + + // Optionally set display column + if (primaryDisplay) { + state.draft.primaryDisplay = field.name + } + + if (indexes) { + state.draft.indexes = indexes + } + + state.draft.schema[field.name] = cloneDeep(field) + store.save(state.draft) + return state + }) + }, + deleteField: field => { + update(state => { + delete state.draft.schema[field.name] + store.save(state.draft) + return state + }) + }, + } +} + +export const tables = createTablesStore() diff --git a/packages/builder/src/builderStore/store/frontend.js b/packages/builder/src/builderStore/store/frontend.js index e506ecb4f1..2b450eb49f 100644 --- a/packages/builder/src/builderStore/store/frontend.js +++ b/packages/builder/src/builderStore/store/frontend.js @@ -10,7 +10,7 @@ import { selectedAccessRole, } from "builderStore" // Backendstores -import { datasources, integrations, queries, database } from 'builderStore/store/backend/' +import { datasources, integrations, queries, database, tables } from 'builderStore/store/backend/' import { fetchComponentLibDefinitions } from "../loadComponentLibraries" import api from "../api" @@ -62,15 +62,21 @@ export const getFrontendStore = () => { await hostingStore.actions.fetch() // Initialise backend stores - const [_datasources, _integrations, _queries] = await Promise.all([ + const [_datasources, _integrations, _queries, _tables] = await Promise.all([ api.get(`/api/datasources`).then(r => r.json()), api.get("/api/integrations").then(r => r.json()), - api.get(`/api/queries`).then(r => r.json()) + api.get(`/api/queries`).then(r => r.json()), + api.get(`/api/tables`).then(r => r.json()), ]) datasources.set({ list: _datasources, selected: null }) integrations.set(_integrations) queries.set({ list: _queries, selected: null }) database.set(application.instance) + tables.set({ + list: _tables, + selected: {}, + draft: {} + }) }, routing: { diff --git a/packages/builder/src/components/automation/AutomationBuilder/FlowChart/AutomationBlockTagline.svelte b/packages/builder/src/components/automation/AutomationBuilder/FlowChart/AutomationBlockTagline.svelte index 2afe7dbbfa..318d54943f 100644 --- a/packages/builder/src/components/automation/AutomationBuilder/FlowChart/AutomationBlockTagline.svelte +++ b/packages/builder/src/components/automation/AutomationBuilder/FlowChart/AutomationBlockTagline.svelte @@ -1,7 +1,7 @@ -{#if $backendUiStore.selectedDatabase && $backendUiStore.selectedDatabase._id} +{#if $database?.selected?._id}
- {#each $backendUiStore.tables as table, idx} + {#each $tables.list as table, idx} 0} icon={`ri-${table._id === TableNames.USERS ? 'user' : 'table'}-line`} diff --git a/packages/builder/src/components/backend/TableNavigator/modals/CreateTableModal.svelte b/packages/builder/src/components/backend/TableNavigator/modals/CreateTableModal.svelte index 1bd1a29eb7..2259f6d5de 100644 --- a/packages/builder/src/components/backend/TableNavigator/modals/CreateTableModal.svelte +++ b/packages/builder/src/components/backend/TableNavigator/modals/CreateTableModal.svelte @@ -1,6 +1,7 @@ @@ -8,7 +8,7 @@
diff --git a/packages/builder/src/pages/[application]/data/datasource/index.svelte b/packages/builder/src/pages/[application]/data/datasource/index.svelte index 62bd7acd47..2d72709750 100644 --- a/packages/builder/src/pages/[application]/data/datasource/index.svelte +++ b/packages/builder/src/pages/[application]/data/datasource/index.svelte @@ -1,6 +1,5 @@ - {#if $backendUiStore.tables.length === 0} + {#if $tables.list.length === 0} Connect your first datasource to start building. {:else}Select a datasource to edit{/if} diff --git a/packages/builder/src/pages/[application]/data/table/[selectedTable]/_layout.svelte b/packages/builder/src/pages/[application]/data/table/[selectedTable]/_layout.svelte index 9892da00db..348cdbf67a 100644 --- a/packages/builder/src/pages/[application]/data/table/[selectedTable]/_layout.svelte +++ b/packages/builder/src/pages/[application]/data/table/[selectedTable]/_layout.svelte @@ -1,13 +1,13 @@ diff --git a/packages/builder/src/pages/[application]/data/table/_layout.svelte b/packages/builder/src/pages/[application]/data/table/_layout.svelte index 2eea0be4c2..f94954b840 100644 --- a/packages/builder/src/pages/[application]/data/table/_layout.svelte +++ b/packages/builder/src/pages/[application]/data/table/_layout.svelte @@ -1,5 +1,5 @@ diff --git a/packages/builder/src/pages/[application]/data/table/index.svelte b/packages/builder/src/pages/[application]/data/table/index.svelte index d1659257d4..a3c67cb0db 100644 --- a/packages/builder/src/pages/[application]/data/table/index.svelte +++ b/packages/builder/src/pages/[application]/data/table/index.svelte @@ -1,14 +1,14 @@ -{#if $backendUiStore.tables.length === 0} +{#if $tables.list.length === 0} Create your first table to start building {:else}Select a table to edit{/if} diff --git a/packages/builder/src/pages/[application]/data/view/[selectedView]/_layout.svelte b/packages/builder/src/pages/[application]/data/view/[selectedView]/_layout.svelte index e890c7e276..cfa3961dc5 100644 --- a/packages/builder/src/pages/[application]/data/view/[selectedView]/_layout.svelte +++ b/packages/builder/src/pages/[application]/data/view/[selectedView]/_layout.svelte @@ -1,11 +1,11 @@ -{#if $backendUiStore.selectedDatabase._id && selectedTable.name} +{#if $database._id && selectedTable.name} {:else}Create your first table to start building{/if} diff --git a/packages/builder/src/pages/[application]/data/view/[selectedView]/index.svelte b/packages/builder/src/pages/[application]/data/view/[selectedView]/index.svelte index 312e799005..f18f6742b0 100644 --- a/packages/builder/src/pages/[application]/data/view/[selectedView]/index.svelte +++ b/packages/builder/src/pages/[application]/data/view/[selectedView]/index.svelte @@ -1,11 +1,11 @@ -{#if $backendUiStore.selectedDatabase._id && selectedView} +{#if $database._id && selectedView} {:else}Create your first table to start building{/if} From c924e0351917788004b7c8cf5ae483893459b589 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Keviin=20=C3=85berg=20Kultalahti?= Date: Tue, 23 Mar 2021 12:19:10 +0100 Subject: [PATCH 17/50] remove unused stuff in backendUiStore --- packages/builder/src/builderStore/store/backend.js | 13 +------------ 1 file changed, 1 insertion(+), 12 deletions(-) diff --git a/packages/builder/src/builderStore/store/backend.js b/packages/builder/src/builderStore/store/backend.js index 62826b3b61..967f9c7545 100644 --- a/packages/builder/src/builderStore/store/backend.js +++ b/packages/builder/src/builderStore/store/backend.js @@ -1,20 +1,9 @@ import { writable } from "svelte/store" -import api from "../api" - -const INITIAL_BACKEND_UI_STATE = { - tables: [], - views: [], - datasources: [], - selectedDatabase: {}, - selectedTable: {}, - draftTable: {}, -} export const getBackendUiStore = () => { - const store = writable({ ...INITIAL_BACKEND_UI_STATE }) + const store = writable({}) store.actions = { - reset: () => store.set({ ...INITIAL_BACKEND_UI_STATE }), rows: { save: () => store.update(state => { From 8a2ccbc1a972818604950b194b3d6a7fa9588802 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Keviin=20=C3=85berg=20Kultalahti?= Date: Tue, 23 Mar 2021 12:27:10 +0100 Subject: [PATCH 18/50] wip: cleanup of components --- .../src/components/backend/DataTable/DataTable.svelte | 2 +- .../backend/DataTable/popovers/CreateViewPopover.svelte | 4 ++-- .../backend/DataTable/popovers/ManageAccessPopover.svelte | 1 - .../TableNavigator/popovers/EditTablePopover.svelte | 7 ++++--- .../backend/TableNavigator/popovers/EditViewPopover.svelte | 6 +++--- .../builder/src/components/integration/QueryViewer.svelte | 1 - .../[application]/data/view/[selectedView]/_layout.svelte | 4 ++-- 7 files changed, 12 insertions(+), 13 deletions(-) diff --git a/packages/builder/src/components/backend/DataTable/DataTable.svelte b/packages/builder/src/components/backend/DataTable/DataTable.svelte index 6f7af72a98..b13ad14cef 100644 --- a/packages/builder/src/components/backend/DataTable/DataTable.svelte +++ b/packages/builder/src/components/backend/DataTable/DataTable.svelte @@ -22,7 +22,7 @@ $: schema = $tables.selected.schema $: tableView = { schema, - name: $views.selected.name, + name: $views.selected?.name, } // Fetch rows for specified table diff --git a/packages/builder/src/components/backend/DataTable/popovers/CreateViewPopover.svelte b/packages/builder/src/components/backend/DataTable/popovers/CreateViewPopover.svelte index 9d3a488732..9be42fecbe 100644 --- a/packages/builder/src/components/backend/DataTable/popovers/CreateViewPopover.svelte +++ b/packages/builder/src/components/backend/DataTable/popovers/CreateViewPopover.svelte @@ -1,7 +1,7 @@ -{#if $database?.selected?._id} +{#if $database?._id}
{#each $tables.list as table, idx} Date: Tue, 23 Mar 2021 13:06:04 +0100 Subject: [PATCH 22/50] extract out select and fetch methods in tables store --- .../src/builderStore/store/backend/tables.js | 30 +++++++++++-------- 1 file changed, 18 insertions(+), 12 deletions(-) diff --git a/packages/builder/src/builderStore/store/backend/tables.js b/packages/builder/src/builderStore/store/backend/tables.js index 18a29ded32..ecd3b28042 100644 --- a/packages/builder/src/builderStore/store/backend/tables.js +++ b/packages/builder/src/builderStore/store/backend/tables.js @@ -1,4 +1,5 @@ -import { writable } from "svelte/store" +import { writable, get } from "svelte/store" +import { views } from './' import { cloneDeep } from "lodash/fp" import api from "../../api" @@ -7,33 +8,38 @@ function createTablesStore() { list: [], selected: {}, draft: {}, - view: {} }) const { subscribe, update, set } = store - return { - subscribe, - set, - fetch: async () => { + async function fetch() { const tablesResponse = await api.get(`/api/tables`) const tables = await tablesResponse.json() update(state => ({...state, list: tables})) - }, - select: table => { + } + + async function select(table) { if (!table) { + console.log('Setting selected to null') update(state => ({ ...state, selected: {} })) } else { + console.log('Setting selected to null') update(state => ({ ...state, selected: table, draft: cloneDeep(table), - view: { name: `all_${table._id}` } })) + views.select({ name: `all_${table._id}` }) } - }, + } + + return { + subscribe, + set, + fetch, + select, save: async table => { const updatedTable = cloneDeep(table) const oldTable = get(store).list.filter(t => t._id === table._id)[0] @@ -64,8 +70,8 @@ function createTablesStore() { const response = await api.post(`/api/tables`, updatedTable) const savedTable = await response.json() - await store.fetch() - await store.select(savedTable) + await fetch() + await select(savedTable) return savedTable }, delete: async table => { From d27e03c2155bb59f4986ed346a75d14586e9500a Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Keviin=20=C3=85berg=20Kultalahti?= Date: Tue, 23 Mar 2021 13:19:34 +0100 Subject: [PATCH 23/50] extract save function in tables store --- .../src/builderStore/store/backend/tables.js | 20 ++++++++++--------- 1 file changed, 11 insertions(+), 9 deletions(-) diff --git a/packages/builder/src/builderStore/store/backend/tables.js b/packages/builder/src/builderStore/store/backend/tables.js index ecd3b28042..c78cdbb1a3 100644 --- a/packages/builder/src/builderStore/store/backend/tables.js +++ b/packages/builder/src/builderStore/store/backend/tables.js @@ -35,12 +35,7 @@ function createTablesStore() { } } - return { - subscribe, - set, - fetch, - select, - save: async table => { + async function save(table) { const updatedTable = cloneDeep(table) const oldTable = get(store).list.filter(t => t._id === table._id)[0] @@ -73,7 +68,14 @@ function createTablesStore() { await fetch() await select(savedTable) return savedTable - }, + } + + return { + subscribe, + set, + fetch, + select, + save, delete: async table => { await api.delete(`/api/tables/${table._id}/${table._rev}`) update(state => ({ @@ -104,14 +106,14 @@ function createTablesStore() { } state.draft.schema[field.name] = cloneDeep(field) - store.save(state.draft) + save(state.draft) return state }) }, deleteField: field => { update(state => { delete state.draft.schema[field.name] - store.save(state.draft) + save(state.draft) return state }) }, From 9d3088c3f3e915a2386b3ed5d83686927762d734 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Keviin=20=C3=85berg=20Kultalahti?= Date: Tue, 23 Mar 2021 13:27:16 +0100 Subject: [PATCH 24/50] table route fix --- .../[application]/data/table/[selectedTable]/index.svelte | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/packages/builder/src/pages/[application]/data/table/[selectedTable]/index.svelte b/packages/builder/src/pages/[application]/data/table/[selectedTable]/index.svelte index 90413341d0..f19778dc30 100644 --- a/packages/builder/src/pages/[application]/data/table/[selectedTable]/index.svelte +++ b/packages/builder/src/pages/[application]/data/table/[selectedTable]/index.svelte @@ -2,10 +2,10 @@ import TableDataTable from "components/backend/DataTable/DataTable.svelte" import { tables, database } from 'builderStore/store/backend/' - $: selectedTable = $tables.selected + $: console.log('Tables: ', $tables) -{#if $database._id && selectedTable.name} +{#if $database?._id && $tables?.selected?.name} {:else}Create your first table to start building{/if} From 3e58ad903116448db5186ac31228153fcd348f10 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Keviin=20=C3=85berg=20Kultalahti?= Date: Tue, 23 Mar 2021 13:27:45 +0100 Subject: [PATCH 25/50] move rows to it's separate store --- .../builder/src/builderStore/store/backend.js | 18 +++++------------- .../src/builderStore/store/backend/index.js | 1 + .../src/builderStore/store/backend/rows.js | 15 +++++++++++++++ .../src/builderStore/store/backend/views.js | 3 +-- .../DataTable/modals/CreateEditRow.svelte | 5 ++--- .../DataTable/modals/CreateEditUser.svelte | 5 ++--- .../backend/DataTable/modals/DeleteRow.svelte | 4 ++-- 7 files changed, 28 insertions(+), 23 deletions(-) create mode 100644 packages/builder/src/builderStore/store/backend/rows.js diff --git a/packages/builder/src/builderStore/store/backend.js b/packages/builder/src/builderStore/store/backend.js index 967f9c7545..3295b82006 100644 --- a/packages/builder/src/builderStore/store/backend.js +++ b/packages/builder/src/builderStore/store/backend.js @@ -1,21 +1,13 @@ import { writable } from "svelte/store" +const INITIAL_BACKEND_UI_STATE = { +} + export const getBackendUiStore = () => { - const store = writable({}) + const store = writable({ ...INITIAL_BACKEND_UI_STATE }) store.actions = { - rows: { - save: () => - store.update(state => { - state.selectedView = state.selectedView - return state - }), - delete: () => - store.update(state => { - state.selectedView = state.selectedView - return state - }), - }, + reset: () => store.set({ ...INITIAL_BACKEND_UI_STATE }), } return store diff --git a/packages/builder/src/builderStore/store/backend/index.js b/packages/builder/src/builderStore/store/backend/index.js index 441d9d6b5e..e020baaf4b 100644 --- a/packages/builder/src/builderStore/store/backend/index.js +++ b/packages/builder/src/builderStore/store/backend/index.js @@ -1,6 +1,7 @@ export { database } from "./database" export { tables } from "./tables" export { views } from "./views" +export { rows } from "./rows" export { permissions } from "./permissions" export { roles } from "./roles" export { datasources } from "./datasources" diff --git a/packages/builder/src/builderStore/store/backend/rows.js b/packages/builder/src/builderStore/store/backend/rows.js new file mode 100644 index 0000000000..0d63bbb64f --- /dev/null +++ b/packages/builder/src/builderStore/store/backend/rows.js @@ -0,0 +1,15 @@ +import { writable,get } from "svelte/store" +import { views } from './' + +function createRowsStore() { + const { subscribe } = writable([]) + + return { + subscribe, + save: () => views.select(get(views).selected), + delete: () => views.select(get(views).selected), + } +} + +export const rows = createRowsStore() + diff --git a/packages/builder/src/builderStore/store/backend/views.js b/packages/builder/src/builderStore/store/backend/views.js index 1b98ef9f8a..9c32c3da9f 100644 --- a/packages/builder/src/builderStore/store/backend/views.js +++ b/packages/builder/src/builderStore/store/backend/views.js @@ -3,7 +3,7 @@ import { tables } from "./" import api from "../../api" function createViewsStore() { - const { subscribe, set, update } = writable({ + const { subscribe, update } = writable({ list: [], selected: null }) @@ -15,7 +15,6 @@ function createViewsStore() { ...state, selected: view, })) - tables.select() }, delete: async view => { await api.delete(`/api/views/${view}`) diff --git a/packages/builder/src/components/backend/DataTable/modals/CreateEditRow.svelte b/packages/builder/src/components/backend/DataTable/modals/CreateEditRow.svelte index bc2098a9fa..d1fb8771a9 100644 --- a/packages/builder/src/components/backend/DataTable/modals/CreateEditRow.svelte +++ b/packages/builder/src/components/backend/DataTable/modals/CreateEditRow.svelte @@ -1,6 +1,5 @@ diff --git a/packages/builder/src/components/backend/DataTable/modals/CreateEditUser.svelte b/packages/builder/src/components/backend/DataTable/modals/CreateEditUser.svelte index a7b4df5058..9d020f7c6e 100644 --- a/packages/builder/src/components/backend/DataTable/modals/CreateEditUser.svelte +++ b/packages/builder/src/components/backend/DataTable/modals/CreateEditUser.svelte @@ -1,6 +1,5 @@ diff --git a/packages/builder/src/components/backend/DataTable/modals/DeleteRow.svelte b/packages/builder/src/components/backend/DataTable/modals/DeleteRow.svelte index a28d90de0c..dc20a65562 100644 --- a/packages/builder/src/components/backend/DataTable/modals/DeleteRow.svelte +++ b/packages/builder/src/components/backend/DataTable/modals/DeleteRow.svelte @@ -1,5 +1,5 @@ From d37778d809c2cf36c47ff80bf5919b3ca6560239 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Keviin=20=C3=85berg=20Kultalahti?= Date: Tue, 23 Mar 2021 13:31:18 +0100 Subject: [PATCH 26/50] lint fix --- .../builder/src/builderStore/dataBinding.js | 5 +- .../builder/src/builderStore/store/backend.js | 3 +- .../builderStore/store/backend/database.js | 2 +- .../builderStore/store/backend/datasources.js | 2 +- .../src/builderStore/store/backend/queries.js | 12 +- .../src/builderStore/store/backend/roles.js | 4 +- .../src/builderStore/store/backend/rows.js | 5 +- .../src/builderStore/store/backend/tables.js | 160 +++++++++--------- .../src/builderStore/store/backend/views.js | 48 +++--- .../src/builderStore/store/frontend.js | 18 +- 10 files changed, 134 insertions(+), 125 deletions(-) diff --git a/packages/builder/src/builderStore/dataBinding.js b/packages/builder/src/builderStore/dataBinding.js index fa6f10c98c..f53fc66a01 100644 --- a/packages/builder/src/builderStore/dataBinding.js +++ b/packages/builder/src/builderStore/dataBinding.js @@ -1,7 +1,10 @@ import { cloneDeep } from "lodash/fp" import { get } from "svelte/store" import { store } from "builderStore" -import { tables as tablesStore, queries as queriesStores } from 'builderStore/store/backend/' +import { + tables as tablesStore, + queries as queriesStores, +} from "builderStore/store/backend/" import { findComponentPath } from "./storeUtils" import { makePropSafe } from "@budibase/string-templates" import { TableNames } from "../constants" diff --git a/packages/builder/src/builderStore/store/backend.js b/packages/builder/src/builderStore/store/backend.js index 3295b82006..bd41964492 100644 --- a/packages/builder/src/builderStore/store/backend.js +++ b/packages/builder/src/builderStore/store/backend.js @@ -1,7 +1,6 @@ import { writable } from "svelte/store" -const INITIAL_BACKEND_UI_STATE = { -} +const INITIAL_BACKEND_UI_STATE = {} export const getBackendUiStore = () => { const store = writable({ ...INITIAL_BACKEND_UI_STATE }) diff --git a/packages/builder/src/builderStore/store/backend/database.js b/packages/builder/src/builderStore/store/backend/database.js index c619ca200d..a2946c2488 100644 --- a/packages/builder/src/builderStore/store/backend/database.js +++ b/packages/builder/src/builderStore/store/backend/database.js @@ -1,3 +1,3 @@ import { writable } from "svelte/store" -export const database = writable({}) \ No newline at end of file +export const database = writable({}) diff --git a/packages/builder/src/builderStore/store/backend/datasources.js b/packages/builder/src/builderStore/store/backend/datasources.js index d84e66d344..3fb54dd624 100644 --- a/packages/builder/src/builderStore/store/backend/datasources.js +++ b/packages/builder/src/builderStore/store/backend/datasources.js @@ -20,7 +20,7 @@ function createDatasourcesStore() { }, select: async datasourceId => { update(state => ({ ...state, selected: datasourceId })) - queries.update(state => ({...state, selected: null})) + queries.update(state => ({ ...state, selected: null })) }, save: async datasource => { const response = await api.post("/api/datasources", datasource) diff --git a/packages/builder/src/builderStore/store/backend/queries.js b/packages/builder/src/builderStore/store/backend/queries.js index 9e4490a7f0..ff2eda67ff 100644 --- a/packages/builder/src/builderStore/store/backend/queries.js +++ b/packages/builder/src/builderStore/store/backend/queries.js @@ -1,9 +1,9 @@ -import { writable } from "svelte/store" +import { writable, get } from "svelte/store" import { datasources, integrations } from "./" import api from "../../api" function createQueriesStore() { - const { subscribe, set, update } = writable({list: [], selected: null}) + const { subscribe, set, update } = writable({ list: [], selected: null }) return { subscribe, @@ -12,7 +12,7 @@ function createQueriesStore() { fetch: async () => { const response = await api.get(`/api/queries`) const json = await response.json() - update(state => ({...state, list: json})) + update(state => ({ ...state, list: json })) return json }, save: async (datasourceId, query) => { @@ -44,7 +44,7 @@ function createQueriesStore() { } else { queries.push(json) } - return { list: queries, selected: json._id} + return { list: queries, selected: json._id } }) return json }, @@ -55,9 +55,7 @@ function createQueriesStore() { delete: async query => { await api.delete(`/api/queries/${query._id}/${query._rev}`) update(state => { - state.list = state.list.filter( - existing => existing._id !== query._id - ) + state.list = state.list.filter(existing => existing._id !== query._id) if (state.selected === query._id) { state.selected = null } diff --git a/packages/builder/src/builderStore/store/backend/roles.js b/packages/builder/src/builderStore/store/backend/roles.js index fc8bf57b23..1d353e433f 100644 --- a/packages/builder/src/builderStore/store/backend/roles.js +++ b/packages/builder/src/builderStore/store/backend/roles.js @@ -23,8 +23,8 @@ function createRolesStore() { } async function getRoles() { - const response = await api.get("/api/roles") - return await response.json() + const response = await api.get("/api/roles") + return await response.json() } export const roles = createRolesStore() diff --git a/packages/builder/src/builderStore/store/backend/rows.js b/packages/builder/src/builderStore/store/backend/rows.js index 0d63bbb64f..c16941925c 100644 --- a/packages/builder/src/builderStore/store/backend/rows.js +++ b/packages/builder/src/builderStore/store/backend/rows.js @@ -1,5 +1,5 @@ -import { writable,get } from "svelte/store" -import { views } from './' +import { writable, get } from "svelte/store" +import { views } from "./" function createRowsStore() { const { subscribe } = writable([]) @@ -12,4 +12,3 @@ function createRowsStore() { } export const rows = createRowsStore() - diff --git a/packages/builder/src/builderStore/store/backend/tables.js b/packages/builder/src/builderStore/store/backend/tables.js index c78cdbb1a3..00ace52f18 100644 --- a/packages/builder/src/builderStore/store/backend/tables.js +++ b/packages/builder/src/builderStore/store/backend/tables.js @@ -1,121 +1,121 @@ import { writable, get } from "svelte/store" -import { views } from './' +import { views } from "./" import { cloneDeep } from "lodash/fp" import api from "../../api" function createTablesStore() { const store = writable({ - list: [], - selected: {}, - draft: {}, + list: [], + selected: {}, + draft: {}, }) - const { subscribe, update, set } = store + const { subscribe, update, set } = store - async function fetch() { - const tablesResponse = await api.get(`/api/tables`) - const tables = await tablesResponse.json() - update(state => ({...state, list: tables})) + async function fetch() { + const tablesResponse = await api.get(`/api/tables`) + const tables = await tablesResponse.json() + update(state => ({ ...state, list: tables })) + } + + async function select(table) { + if (!table) { + console.log("Setting selected to null") + update(state => ({ + ...state, + selected: {}, + })) + } else { + console.log("Setting selected to null") + update(state => ({ + ...state, + selected: table, + draft: cloneDeep(table), + })) + views.select({ name: `all_${table._id}` }) + } + } + + async function save(table) { + const updatedTable = cloneDeep(table) + const oldTable = get(store).list.filter(t => t._id === table._id)[0] + + const fieldNames = [] + // update any renamed schema keys to reflect their names + for (let key of Object.keys(updatedTable.schema)) { + // if field name has been seen before remove it + if (fieldNames.indexOf(key.toLowerCase()) !== -1) { + delete updatedTable.schema[key] + continue + } + const field = updatedTable.schema[key] + const oldField = oldTable?.schema[key] + // if the type has changed then revert back to the old field + if (oldField != null && oldField?.type !== field.type) { + updatedTable.schema[key] = oldField + } + // field has been renamed + if (field.name && field.name !== key) { + updatedTable.schema[field.name] = field + updatedTable._rename = { old: key, updated: field.name } + delete updatedTable.schema[key] + } + // finally record this field has been used + fieldNames.push(key.toLowerCase()) } - async function select(table) { - if (!table) { - console.log('Setting selected to null') - update(state => ({ - ...state, - selected: {} - })) - } else { - console.log('Setting selected to null') - update(state => ({ - ...state, - selected: table, - draft: cloneDeep(table), - })) - views.select({ name: `all_${table._id}` }) - } - } - - async function save(table) { - const updatedTable = cloneDeep(table) - const oldTable = get(store).list.filter(t => t._id === table._id)[0] - - const fieldNames = [] - // update any renamed schema keys to reflect their names - for (let key of Object.keys(updatedTable.schema)) { - // if field name has been seen before remove it - if (fieldNames.indexOf(key.toLowerCase()) !== -1) { - delete updatedTable.schema[key] - continue - } - const field = updatedTable.schema[key] - const oldField = oldTable?.schema[key] - // if the type has changed then revert back to the old field - if (oldField != null && oldField?.type !== field.type) { - updatedTable.schema[key] = oldField - } - // field has been renamed - if (field.name && field.name !== key) { - updatedTable.schema[field.name] = field - updatedTable._rename = { old: key, updated: field.name } - delete updatedTable.schema[key] - } - // finally record this field has been used - fieldNames.push(key.toLowerCase()) - } - - const response = await api.post(`/api/tables`, updatedTable) - const savedTable = await response.json() - await fetch() - await select(savedTable) - return savedTable - } + const response = await api.post(`/api/tables`, updatedTable) + const savedTable = await response.json() + await fetch() + await select(savedTable) + return savedTable + } return { subscribe, set, fetch, select, - save, + save, delete: async table => { - await api.delete(`/api/tables/${table._id}/${table._rev}`) - update(state => ({ - ...state, - list: state.list.filter(existing => existing._id !== table._id), - selected: {} - })) + await api.delete(`/api/tables/${table._id}/${table._rev}`) + update(state => ({ + ...state, + list: state.list.filter(existing => existing._id !== table._id), + selected: {}, + })) }, saveField: ({ originalName, field, primaryDisplay = false, indexes }) => { - update(state => { + update(state => { // delete the original if renaming // need to handle if the column had no name, empty string if (originalName || originalName === "") { - delete state.draft.schema[originalName] - state.draft._rename = { + delete state.draft.schema[originalName] + state.draft._rename = { old: originalName, updated: field.name, - } + } } // Optionally set display column if (primaryDisplay) { - state.draft.primaryDisplay = field.name + state.draft.primaryDisplay = field.name } if (indexes) { - state.draft.indexes = indexes + state.draft.indexes = indexes } state.draft.schema[field.name] = cloneDeep(field) save(state.draft) return state - }) + }) }, deleteField: field => { - update(state => { - delete state.draft.schema[field.name] - save(state.draft) - return state - }) + update(state => { + delete state.draft.schema[field.name] + save(state.draft) + return state + }) }, } } diff --git a/packages/builder/src/builderStore/store/backend/views.js b/packages/builder/src/builderStore/store/backend/views.js index 9c32c3da9f..7a97a9d325 100644 --- a/packages/builder/src/builderStore/store/backend/views.js +++ b/packages/builder/src/builderStore/store/backend/views.js @@ -4,43 +4,43 @@ import api from "../../api" function createViewsStore() { const { subscribe, update } = writable({ - list: [], - selected: null + list: [], + selected: null, }) return { subscribe, select: view => { - update(state => ({ - ...state, - selected: view, - })) + update(state => ({ + ...state, + selected: view, + })) }, delete: async view => { - await api.delete(`/api/views/${view}`) - await tables.fetch() + await api.delete(`/api/views/${view}`) + await tables.fetch() }, save: async view => { - const response = await api.post(`/api/views`, view) - const json = await response.json() + const response = await api.post(`/api/views`, view) + const json = await response.json() - const viewMeta = { - name: view.name, - ...json, - } + const viewMeta = { + name: view.name, + ...json, + } - update(state => { - const viewTable = get(tables).list.find( - table => table._id === view.tableId - ) + update(state => { + const viewTable = get(tables).list.find( + table => table._id === view.tableId + ) - if (view.originalName) delete viewTable.views[view.originalName] - viewTable.views[view.name] = viewMeta + if (view.originalName) delete viewTable.views[view.originalName] + viewTable.views[view.name] = viewMeta - state.tables = state.tables - state.selectedView = viewMeta - return state - }) + state.tables = state.tables + state.selectedView = viewMeta + return state + }) }, } } diff --git a/packages/builder/src/builderStore/store/frontend.js b/packages/builder/src/builderStore/store/frontend.js index 8c890cc5f5..58717050dc 100644 --- a/packages/builder/src/builderStore/store/frontend.js +++ b/packages/builder/src/builderStore/store/frontend.js @@ -9,7 +9,13 @@ import { selectedAccessRole, } from "builderStore" // Backendstores -import { datasources, integrations, queries, database, tables } from 'builderStore/store/backend/' +import { + datasources, + integrations, + queries, + database, + tables, +} from "builderStore/store/backend/" import { fetchComponentLibDefinitions } from "../loadComponentLibraries" import api from "../api" @@ -61,7 +67,12 @@ export const getFrontendStore = () => { await hostingStore.actions.fetch() // Initialise backend stores - const [_datasources, _integrations, _queries, _tables] = await Promise.all([ + const [ + _datasources, + _integrations, + _queries, + _tables, + ] = await Promise.all([ api.get(`/api/datasources`).then(r => r.json()), api.get("/api/integrations").then(r => r.json()), api.get(`/api/queries`).then(r => r.json()), @@ -74,9 +85,8 @@ export const getFrontendStore = () => { tables.set({ list: _tables, selected: {}, - draft: {} + draft: {}, }) - }, routing: { fetch: async () => { From 3b7e798859e4544719145112721ae8619591ec9c Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Keviin=20=C3=85berg=20Kultalahti?= Date: Tue, 23 Mar 2021 13:35:31 +0100 Subject: [PATCH 27/50] remove console log --- .../pages/[application]/data/table/[selectedTable]/index.svelte | 2 -- 1 file changed, 2 deletions(-) diff --git a/packages/builder/src/pages/[application]/data/table/[selectedTable]/index.svelte b/packages/builder/src/pages/[application]/data/table/[selectedTable]/index.svelte index f19778dc30..866a505e60 100644 --- a/packages/builder/src/pages/[application]/data/table/[selectedTable]/index.svelte +++ b/packages/builder/src/pages/[application]/data/table/[selectedTable]/index.svelte @@ -1,8 +1,6 @@ {#if $database?._id && $tables?.selected?.name} From 9445b1efdca393723fcf4fa22d58a266a2724eb8 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Keviin=20=C3=85berg=20Kultalahti?= Date: Tue, 23 Mar 2021 13:39:18 +0100 Subject: [PATCH 28/50] remove logs --- packages/builder/src/builderStore/store/backend/tables.js | 2 -- 1 file changed, 2 deletions(-) diff --git a/packages/builder/src/builderStore/store/backend/tables.js b/packages/builder/src/builderStore/store/backend/tables.js index 00ace52f18..74fd19bef9 100644 --- a/packages/builder/src/builderStore/store/backend/tables.js +++ b/packages/builder/src/builderStore/store/backend/tables.js @@ -19,13 +19,11 @@ function createTablesStore() { async function select(table) { if (!table) { - console.log("Setting selected to null") update(state => ({ ...state, selected: {}, })) } else { - console.log("Setting selected to null") update(state => ({ ...state, selected: table, From 5deceb7928c8c7d9d4be6835da48e19e58672b88 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Keviin=20=C3=85berg=20Kultalahti?= Date: Tue, 23 Mar 2021 13:42:03 +0100 Subject: [PATCH 29/50] remove backendUiStore --- packages/builder/src/builderStore/index.js | 2 -- packages/builder/src/builderStore/store/backend.js | 13 ------------- .../TableNavigator/popovers/EditTablePopover.svelte | 13 ++++--------- .../src/components/start/CreateAppModal.svelte | 3 +-- .../builder/src/pages/[application]/_reset.svelte | 2 +- 5 files changed, 6 insertions(+), 27 deletions(-) delete mode 100644 packages/builder/src/builderStore/store/backend.js diff --git a/packages/builder/src/builderStore/index.js b/packages/builder/src/builderStore/index.js index 8b0cde8658..6fecda84c0 100644 --- a/packages/builder/src/builderStore/index.js +++ b/packages/builder/src/builderStore/index.js @@ -1,5 +1,4 @@ import { getFrontendStore } from "./store/frontend" -import { getBackendUiStore } from "./store/backend" import { getAutomationStore } from "./store/automation" import { getHostingStore } from "./store/hosting" import { getThemeStore } from "./store/theme" @@ -9,7 +8,6 @@ import { FrontendTypes, LAYOUT_NAMES } from "../constants" import { findComponent } from "./storeUtils" export const store = getFrontendStore() -export const backendUiStore = getBackendUiStore() export const automationStore = getAutomationStore() export const themeStore = getThemeStore() export const hostingStore = getHostingStore() diff --git a/packages/builder/src/builderStore/store/backend.js b/packages/builder/src/builderStore/store/backend.js deleted file mode 100644 index bd41964492..0000000000 --- a/packages/builder/src/builderStore/store/backend.js +++ /dev/null @@ -1,13 +0,0 @@ -import { writable } from "svelte/store" - -const INITIAL_BACKEND_UI_STATE = {} - -export const getBackendUiStore = () => { - const store = writable({ ...INITIAL_BACKEND_UI_STATE }) - - store.actions = { - reset: () => store.set({ ...INITIAL_BACKEND_UI_STATE }), - } - - return store -} diff --git a/packages/builder/src/components/backend/TableNavigator/popovers/EditTablePopover.svelte b/packages/builder/src/components/backend/TableNavigator/popovers/EditTablePopover.svelte index b1c09f3aa3..70ea11f759 100644 --- a/packages/builder/src/components/backend/TableNavigator/popovers/EditTablePopover.svelte +++ b/packages/builder/src/components/backend/TableNavigator/popovers/EditTablePopover.svelte @@ -1,5 +1,5 @@ diff --git a/packages/builder/src/components/start/CreateAppModal.svelte b/packages/builder/src/components/start/CreateAppModal.svelte index 5102179cde..79b4c1f7c3 100644 --- a/packages/builder/src/components/start/CreateAppModal.svelte +++ b/packages/builder/src/components/start/CreateAppModal.svelte @@ -4,7 +4,6 @@ import { store, automationStore, - backendUiStore, hostingStore, } from "builderStore" import { string, object } from "yup" @@ -152,7 +151,7 @@ ) const pkg = await applicationPkg.json() if (applicationPkg.ok) { - backendUiStore.actions.reset() + // backendUiStore.actions.reset() await store.actions.initialise(pkg) await automationStore.actions.fetch() } else { diff --git a/packages/builder/src/pages/[application]/_reset.svelte b/packages/builder/src/pages/[application]/_reset.svelte index 8e34989a23..48314232bc 100644 --- a/packages/builder/src/pages/[application]/_reset.svelte +++ b/packages/builder/src/pages/[application]/_reset.svelte @@ -18,7 +18,7 @@ const pkg = await res.json() if (res.ok) { - backendUiStore.actions.reset() + // backendUiStore.actions.reset() await store.actions.initialise(pkg) await automationStore.actions.fetch() await roles.fetch() From a40a13af93661d55189bcd650b592c851d255876 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Keviin=20=C3=85berg=20Kultalahti?= Date: Tue, 23 Mar 2021 14:01:28 +0100 Subject: [PATCH 30/50] remove backendUiStore imports --- packages/builder/src/components/start/CreateAppModal.svelte | 4 +--- packages/builder/src/pages/[application]/_reset.svelte | 2 +- 2 files changed, 2 insertions(+), 4 deletions(-) diff --git a/packages/builder/src/components/start/CreateAppModal.svelte b/packages/builder/src/components/start/CreateAppModal.svelte index 79b4c1f7c3..77513efe58 100644 --- a/packages/builder/src/components/start/CreateAppModal.svelte +++ b/packages/builder/src/components/start/CreateAppModal.svelte @@ -10,7 +10,7 @@ import api, { get } from "builderStore/api" import Form from "@svelteschool/svelte-forms" import Spinner from "components/common/Spinner.svelte" - import { API, Info, User } from "./Steps" + import { Info, User } from "./Steps" import Indicator from "./Indicator.svelte" import { Button } from "@budibase/bbui" import { goto } from "@sveltech/routify" @@ -24,8 +24,6 @@ export let template - let lastApiKey - let fetchApiKeyPromise const infoValidation = { applicationName: string().required("Your application must have a name."), diff --git a/packages/builder/src/pages/[application]/_reset.svelte b/packages/builder/src/pages/[application]/_reset.svelte index 48314232bc..dcc19e16c1 100644 --- a/packages/builder/src/pages/[application]/_reset.svelte +++ b/packages/builder/src/pages/[application]/_reset.svelte @@ -1,5 +1,5 @@ diff --git a/packages/builder/src/components/design/PropertiesPanel/PropertyControls/TableSelect.svelte b/packages/builder/src/components/design/PropertiesPanel/PropertyControls/TableSelect.svelte index bde14adcb1..75a0a740f8 100644 --- a/packages/builder/src/components/design/PropertiesPanel/PropertyControls/TableSelect.svelte +++ b/packages/builder/src/components/design/PropertiesPanel/PropertyControls/TableSelect.svelte @@ -1,6 +1,6 @@ diff --git a/packages/builder/src/components/integration/QueryViewer.svelte b/packages/builder/src/components/integration/QueryViewer.svelte index ebdeb997b4..063bbf2309 100644 --- a/packages/builder/src/components/integration/QueryViewer.svelte +++ b/packages/builder/src/components/integration/QueryViewer.svelte @@ -15,7 +15,7 @@ import IntegrationQueryEditor from "components/integration/index.svelte" import ExternalDataSourceTable from "components/backend/DataTable/ExternalDataSourceTable.svelte" import ParameterBuilder from "components/integration/QueryParameterBuilder.svelte" - import { datasources, integrations } from 'builderStore/store/backend/' + import { datasources, integrations } from 'stores/backend/' const PREVIEW_HEADINGS = [ { diff --git a/packages/builder/src/components/settings/tabs/APIKeys.svelte b/packages/builder/src/components/settings/tabs/APIKeys.svelte index 546f24c106..e48af500dc 100644 --- a/packages/builder/src/components/settings/tabs/APIKeys.svelte +++ b/packages/builder/src/components/settings/tabs/APIKeys.svelte @@ -2,7 +2,7 @@ import { Input, Label, TextButton } from "@budibase/bbui" import api from "builderStore/api" import { notifier } from "builderStore/store/notifications" - import { database } from 'builderStore/store/backend/' + import { database } from 'stores/backend/' import analytics from "analytics" let keys = { budibase: "" } diff --git a/packages/builder/src/pages/[application]/_reset.svelte b/packages/builder/src/pages/[application]/_reset.svelte index dcc19e16c1..67df37de01 100644 --- a/packages/builder/src/pages/[application]/_reset.svelte +++ b/packages/builder/src/pages/[application]/_reset.svelte @@ -1,6 +1,6 @@ {#if $database?._id && $tables?.selected?.name} diff --git a/packages/builder/src/pages/[application]/data/table/_layout.svelte b/packages/builder/src/pages/[application]/data/table/_layout.svelte index f94954b840..1a542d9ad8 100644 --- a/packages/builder/src/pages/[application]/data/table/_layout.svelte +++ b/packages/builder/src/pages/[application]/data/table/_layout.svelte @@ -1,5 +1,5 @@ diff --git a/packages/builder/src/builderStore/store/backend/database.js b/packages/builder/src/stores/backend/database.js similarity index 100% rename from packages/builder/src/builderStore/store/backend/database.js rename to packages/builder/src/stores/backend/database.js diff --git a/packages/builder/src/builderStore/store/backend/datasources.js b/packages/builder/src/stores/backend/datasources.js similarity index 94% rename from packages/builder/src/builderStore/store/backend/datasources.js rename to packages/builder/src/stores/backend/datasources.js index 3fb54dd624..0f30695ea3 100644 --- a/packages/builder/src/builderStore/store/backend/datasources.js +++ b/packages/builder/src/stores/backend/datasources.js @@ -1,8 +1,8 @@ import { writable } from "svelte/store" import { queries } from "./" -import api from "../../api" +import api from "builderStore/api" -function createDatasourcesStore() { +export function createDatasourcesStore(_api = api) { const { subscribe, update, set } = writable({ list: [], selected: null, diff --git a/packages/builder/src/builderStore/store/backend/index.js b/packages/builder/src/stores/backend/index.js similarity index 100% rename from packages/builder/src/builderStore/store/backend/index.js rename to packages/builder/src/stores/backend/index.js diff --git a/packages/builder/src/builderStore/store/backend/integrations.js b/packages/builder/src/stores/backend/integrations.js similarity index 100% rename from packages/builder/src/builderStore/store/backend/integrations.js rename to packages/builder/src/stores/backend/integrations.js diff --git a/packages/builder/src/builderStore/store/backend/permissions.js b/packages/builder/src/stores/backend/permissions.js similarity index 90% rename from packages/builder/src/builderStore/store/backend/permissions.js rename to packages/builder/src/stores/backend/permissions.js index 70070f9072..6669ef3270 100644 --- a/packages/builder/src/builderStore/store/backend/permissions.js +++ b/packages/builder/src/stores/backend/permissions.js @@ -1,7 +1,8 @@ import { writable } from "svelte/store" -import api from "../../api" +import api from "builderStore/api" -function createPermissionStore() { + +export function createPermissionStore() { const { subscribe, set } = writable([]) return { diff --git a/packages/builder/src/builderStore/store/backend/queries.js b/packages/builder/src/stores/backend/queries.js similarity index 96% rename from packages/builder/src/builderStore/store/backend/queries.js rename to packages/builder/src/stores/backend/queries.js index ff2eda67ff..8bda870179 100644 --- a/packages/builder/src/builderStore/store/backend/queries.js +++ b/packages/builder/src/stores/backend/queries.js @@ -1,8 +1,9 @@ import { writable, get } from "svelte/store" import { datasources, integrations } from "./" -import api from "../../api" +import api from "builderStore/api" -function createQueriesStore() { + +export function createQueriesStore() { const { subscribe, set, update } = writable({ list: [], selected: null }) return { diff --git a/packages/builder/src/builderStore/store/backend/roles.js b/packages/builder/src/stores/backend/roles.js similarity index 89% rename from packages/builder/src/builderStore/store/backend/roles.js rename to packages/builder/src/stores/backend/roles.js index 1d353e433f..146ba9fbd8 100644 --- a/packages/builder/src/builderStore/store/backend/roles.js +++ b/packages/builder/src/stores/backend/roles.js @@ -1,7 +1,8 @@ import { writable } from "svelte/store" -import api from "../../api" +import api from "builderStore/api" -function createRolesStore() { + +export function createRolesStore() { const { subscribe, set } = writable([]) return { diff --git a/packages/builder/src/builderStore/store/backend/rows.js b/packages/builder/src/stores/backend/rows.js similarity index 88% rename from packages/builder/src/builderStore/store/backend/rows.js rename to packages/builder/src/stores/backend/rows.js index c16941925c..e3872d5873 100644 --- a/packages/builder/src/builderStore/store/backend/rows.js +++ b/packages/builder/src/stores/backend/rows.js @@ -1,7 +1,7 @@ import { writable, get } from "svelte/store" import { views } from "./" -function createRowsStore() { +export function createRowsStore() { const { subscribe } = writable([]) return { diff --git a/packages/builder/src/builderStore/store/backend/tables.js b/packages/builder/src/stores/backend/tables.js similarity index 97% rename from packages/builder/src/builderStore/store/backend/tables.js rename to packages/builder/src/stores/backend/tables.js index 74fd19bef9..c13a3d46ce 100644 --- a/packages/builder/src/builderStore/store/backend/tables.js +++ b/packages/builder/src/stores/backend/tables.js @@ -1,9 +1,10 @@ import { writable, get } from "svelte/store" import { views } from "./" import { cloneDeep } from "lodash/fp" -import api from "../../api" +import api from "builderStore/api" -function createTablesStore() { + +export function createTablesStore() { const store = writable({ list: [], selected: {}, diff --git a/packages/builder/src/stores/backend/tests/database.spec.js b/packages/builder/src/stores/backend/tests/database.spec.js new file mode 100644 index 0000000000..ccaf9c0570 --- /dev/null +++ b/packages/builder/src/stores/backend/tests/database.spec.js @@ -0,0 +1,26 @@ +import { database } from "../" + +describe("Backend DataSources Store", () => { + + let state; + let unsub; + + beforeEach(() => { + unsub = database.subscribe(s => state = s); + }) + afterEach(() => { + unsub() + }) + + it("initialises correctly", () => { + expect(state.list, []) + }) +}) + +const api = { + post: () => ({}), + get: () => ({}), + patch: () => ({}), + delete: () => ({}), + put: () => ({}), + } \ No newline at end of file diff --git a/packages/builder/src/stores/backend/tests/datasources.spec.js b/packages/builder/src/stores/backend/tests/datasources.spec.js new file mode 100644 index 0000000000..02c90d134c --- /dev/null +++ b/packages/builder/src/stores/backend/tests/datasources.spec.js @@ -0,0 +1,24 @@ +import { get } from 'svelte/store' +import { createDatasourcesStore } from "../datasources" + +const mockApi = { + post: () => ({}), + get: () => ({}), + patch: () => ({}), + delete: () => ({}), + put: () => ({}), +} + + +describe("Automation Data Object", () => { + let store + + beforeEach(() => { + store = createDatasourcesStore(mockApi) + }) + + it("Inits properly", () => { + const value = get(store) + expect(value).toBe(true) + }) +}) diff --git a/packages/builder/src/builderStore/store/backend/views.js b/packages/builder/src/stores/backend/views.js similarity index 93% rename from packages/builder/src/builderStore/store/backend/views.js rename to packages/builder/src/stores/backend/views.js index 7a97a9d325..5cd3c60267 100644 --- a/packages/builder/src/builderStore/store/backend/views.js +++ b/packages/builder/src/stores/backend/views.js @@ -1,8 +1,8 @@ import { writable, get } from "svelte/store" import { tables } from "./" -import api from "../../api" +import api from "builderStore/api" -function createViewsStore() { +export function createViewsStore() { const { subscribe, update } = writable({ list: [], selected: null, diff --git a/packages/builder/tests/stores/backend.spec.js b/packages/builder/tests/stores/backend.spec.js deleted file mode 100644 index e69de29bb2..0000000000 From 33b7545e56fc0b05645b93e3c705a8bc0b628529 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Keviin=20=C3=85berg=20Kultalahti?= Date: Fri, 26 Mar 2021 09:51:28 +0100 Subject: [PATCH 32/50] bump jest --- packages/builder/package.json | 14 +- packages/builder/yarn.lock | 2861 ++++++++++++++++++++------------- 2 files changed, 1766 insertions(+), 1109 deletions(-) diff --git a/packages/builder/package.json b/packages/builder/package.json index 32389a985b..586a7fcfe8 100644 --- a/packages/builder/package.json +++ b/packages/builder/package.json @@ -28,14 +28,19 @@ "\\.(jpg|jpeg|png|gif|eot|otf|webp|svg|ttf|woff|woff2|mp4|webm|wav|mp3|m4a|aac|oga)$": "/internals/mocks/fileMock.js", "\\.(css|less|sass|scss)$": "identity-obj-proxy", "components(.*)$": "/src/components$1", - "builderStore(.*)$": "/src/builderStore$1" + "builderStore(.*)$": "/src/builderStore$1", + "stores(.*)$": "/src/stores$1" }, "moduleFileExtensions": [ "js", "svelte" ], "moduleDirectories": [ - "node_modules" + "node_modules", + "builderStore", + "stores", + "constants", + "analytics" ], "transform": { "^.+js$": "babel-jest", @@ -94,14 +99,13 @@ "@rollup/plugin-commonjs": "^16.0.0", "@rollup/plugin-json": "^4.0.3", "@sveltech/routify": "1.7.11", - "@testing-library/jest-dom": "^5.11.0", + "@testing-library/jest-dom": "^5.11.10", "@testing-library/svelte": "^3.0.0", - "babel-jest": "^24.8.0", "cypress": "^5.1.0", "cypress-terminal-report": "^1.4.1", "eslint-plugin-cypress": "^2.11.1", "identity-obj-proxy": "^3.0.0", - "jest": "^24.8.0", + "jest": "^26.6.3", "ncp": "^2.0.0", "rimraf": "^3.0.2", "rollup": "^2.11.2", diff --git a/packages/builder/yarn.lock b/packages/builder/yarn.lock index e5ded575b2..5518beb45d 100644 --- a/packages/builder/yarn.lock +++ b/packages/builder/yarn.lock @@ -14,6 +14,11 @@ resolved "https://registry.yarnpkg.com/@babel/compat-data/-/compat-data-7.12.13.tgz#27e19e0ed3726ccf54067ced4109501765e7e2e8" integrity sha512-U/hshG5R+SIoW7HVWIdmy1cB7s3ki+r3FpyEZiCgpi4tFgPnX/vynY80ZGSASOIrUM6O7VxOgCZgdt7h97bUGg== +"@babel/compat-data@^7.13.8": + version "7.13.12" + resolved "https://registry.yarnpkg.com/@babel/compat-data/-/compat-data-7.13.12.tgz#a8a5ccac19c200f9dd49624cac6e19d7be1236a1" + integrity sha512-3eJJ841uKxeV8dcN/2yGEUy+RfgQspPEgQat85umsE1rotuquQ2AbIub4S6j7c50a2d+4myc+zSlnXeIHrOnhQ== + "@babel/core@^7.1.0", "@babel/core@^7.5.5": version "7.12.17" resolved "https://registry.yarnpkg.com/@babel/core/-/core-7.12.17.tgz#993c5e893333107a2815d8e0d73a2c3755e280b2" @@ -35,7 +40,29 @@ semver "^5.4.1" source-map "^0.5.0" -"@babel/generator@^7.12.17", "@babel/generator@^7.4.0": +"@babel/core@^7.7.5": + version "7.13.10" + resolved "https://registry.yarnpkg.com/@babel/core/-/core-7.13.10.tgz#07de050bbd8193fcd8a3c27918c0890613a94559" + integrity sha512-bfIYcT0BdKeAZrovpMqX2Mx5NrgAckGbwT982AkdS5GNfn3KMGiprlBAtmBcFZRUmpaufS6WZFP8trvx8ptFDw== + dependencies: + "@babel/code-frame" "^7.12.13" + "@babel/generator" "^7.13.9" + "@babel/helper-compilation-targets" "^7.13.10" + "@babel/helper-module-transforms" "^7.13.0" + "@babel/helpers" "^7.13.10" + "@babel/parser" "^7.13.10" + "@babel/template" "^7.12.13" + "@babel/traverse" "^7.13.0" + "@babel/types" "^7.13.0" + convert-source-map "^1.7.0" + debug "^4.1.0" + gensync "^1.0.0-beta.2" + json5 "^2.1.2" + lodash "^4.17.19" + semver "^6.3.0" + source-map "^0.5.0" + +"@babel/generator@^7.12.17": version "7.12.17" resolved "https://registry.yarnpkg.com/@babel/generator/-/generator-7.12.17.tgz#9ef1dd792d778b32284411df63f4f668a9957287" integrity sha512-DSA7ruZrY4WI8VxuS1jWSRezFnghEoYEFrZcw9BizQRmOZiUsiHl59+qEARGPqPikwA/GPTyRCi7isuCK/oyqg== @@ -44,6 +71,15 @@ jsesc "^2.5.1" source-map "^0.5.0" +"@babel/generator@^7.13.0", "@babel/generator@^7.13.9": + version "7.13.9" + resolved "https://registry.yarnpkg.com/@babel/generator/-/generator-7.13.9.tgz#3a7aa96f9efb8e2be42d38d80e2ceb4c64d8de39" + integrity sha512-mHOOmY0Axl/JCTkxTU6Lf5sWOg/v8nUa+Xkt4zMTftX0wqmb6Sh7J8gvcehBw7q0AhrhAR+FDacKjCZ2X8K+Sw== + dependencies: + "@babel/types" "^7.13.0" + jsesc "^2.5.1" + source-map "^0.5.0" + "@babel/helper-annotate-as-pure@^7.12.13": version "7.12.13" resolved "https://registry.yarnpkg.com/@babel/helper-annotate-as-pure/-/helper-annotate-as-pure-7.12.13.tgz#0f58e86dfc4bb3b1fcd7db806570e177d439b6ab" @@ -69,6 +105,16 @@ browserslist "^4.14.5" semver "^5.5.0" +"@babel/helper-compilation-targets@^7.13.10": + version "7.13.10" + resolved "https://registry.yarnpkg.com/@babel/helper-compilation-targets/-/helper-compilation-targets-7.13.10.tgz#1310a1678cb8427c07a753750da4f8ce442bdd0c" + integrity sha512-/Xju7Qg1GQO4mHZ/Kcs6Au7gfafgZnwm+a7sy/ow/tV1sHeraRUHbjdat8/UvDor4Tez+siGKDk6zIKtCPKVJA== + dependencies: + "@babel/compat-data" "^7.13.8" + "@babel/helper-validator-option" "^7.12.17" + browserslist "^4.14.5" + semver "^6.3.0" + "@babel/helper-create-class-features-plugin@^7.12.13": version "7.12.17" resolved "https://registry.yarnpkg.com/@babel/helper-create-class-features-plugin/-/helper-create-class-features-plugin-7.12.17.tgz#704b69c8a78d03fb1c5fcc2e7b593f8a65628944" @@ -125,6 +171,13 @@ dependencies: "@babel/types" "^7.12.17" +"@babel/helper-member-expression-to-functions@^7.13.12": + version "7.13.12" + resolved "https://registry.yarnpkg.com/@babel/helper-member-expression-to-functions/-/helper-member-expression-to-functions-7.13.12.tgz#dfe368f26d426a07299d8d6513821768216e6d72" + integrity sha512-48ql1CLL59aKbU94Y88Xgb2VFy7a95ykGRbJJaaVv+LX5U8wFpLfiGXJJGUozsmA1oEh/o5Bp60Voq7ACyA/Sw== + dependencies: + "@babel/types" "^7.13.12" + "@babel/helper-module-imports@^7.12.13": version "7.12.13" resolved "https://registry.yarnpkg.com/@babel/helper-module-imports/-/helper-module-imports-7.12.13.tgz#ec67e4404f41750463e455cc3203f6a32e93fcb0" @@ -132,6 +185,13 @@ dependencies: "@babel/types" "^7.12.13" +"@babel/helper-module-imports@^7.13.12": + version "7.13.12" + resolved "https://registry.yarnpkg.com/@babel/helper-module-imports/-/helper-module-imports-7.13.12.tgz#c6a369a6f3621cb25da014078684da9196b61977" + integrity sha512-4cVvR2/1B693IuOvSI20xqqa/+bl7lqAMR59R4iu39R9aOX8/JoYY1sFaNvUMyMBGnHdwvJgUrzNLoUZxXypxA== + dependencies: + "@babel/types" "^7.13.12" + "@babel/helper-module-transforms@^7.12.13", "@babel/helper-module-transforms@^7.12.17": version "7.12.17" resolved "https://registry.yarnpkg.com/@babel/helper-module-transforms/-/helper-module-transforms-7.12.17.tgz#7c75b987d6dfd5b48e575648f81eaac891539509" @@ -147,6 +207,20 @@ "@babel/types" "^7.12.17" lodash "^4.17.19" +"@babel/helper-module-transforms@^7.13.0": + version "7.13.12" + resolved "https://registry.yarnpkg.com/@babel/helper-module-transforms/-/helper-module-transforms-7.13.12.tgz#600e58350490828d82282631a1422268e982ba96" + integrity sha512-7zVQqMO3V+K4JOOj40kxiCrMf6xlQAkewBB0eu2b03OO/Q21ZutOzjpfD79A5gtE/2OWi1nv625MrDlGlkbknQ== + dependencies: + "@babel/helper-module-imports" "^7.13.12" + "@babel/helper-replace-supers" "^7.13.12" + "@babel/helper-simple-access" "^7.13.12" + "@babel/helper-split-export-declaration" "^7.12.13" + "@babel/helper-validator-identifier" "^7.12.11" + "@babel/template" "^7.12.13" + "@babel/traverse" "^7.13.0" + "@babel/types" "^7.13.12" + "@babel/helper-optimise-call-expression@^7.12.13": version "7.12.13" resolved "https://registry.yarnpkg.com/@babel/helper-optimise-call-expression/-/helper-optimise-call-expression-7.12.13.tgz#5c02d171b4c8615b1e7163f888c1c81c30a2aaea" @@ -178,6 +252,16 @@ "@babel/traverse" "^7.12.13" "@babel/types" "^7.12.13" +"@babel/helper-replace-supers@^7.13.12": + version "7.13.12" + resolved "https://registry.yarnpkg.com/@babel/helper-replace-supers/-/helper-replace-supers-7.13.12.tgz#6442f4c1ad912502481a564a7386de0c77ff3804" + integrity sha512-Gz1eiX+4yDO8mT+heB94aLVNCL+rbuT2xy4YfyNqu8F+OI6vMvJK891qGBTqL9Uc8wxEvRW92Id6G7sDen3fFw== + dependencies: + "@babel/helper-member-expression-to-functions" "^7.13.12" + "@babel/helper-optimise-call-expression" "^7.12.13" + "@babel/traverse" "^7.13.0" + "@babel/types" "^7.13.12" + "@babel/helper-simple-access@^7.12.13": version "7.12.13" resolved "https://registry.yarnpkg.com/@babel/helper-simple-access/-/helper-simple-access-7.12.13.tgz#8478bcc5cacf6aa1672b251c1d2dde5ccd61a6c4" @@ -185,6 +269,13 @@ dependencies: "@babel/types" "^7.12.13" +"@babel/helper-simple-access@^7.13.12": + version "7.13.12" + resolved "https://registry.yarnpkg.com/@babel/helper-simple-access/-/helper-simple-access-7.13.12.tgz#dd6c538afb61819d205a012c31792a39c7a5eaf6" + integrity sha512-7FEjbrx5SL9cWvXioDbnlYTppcZGuCY6ow3/D5vMggb2Ywgu4dMrpTJX0JdQAIcRRUElOIxF3yEooa9gUb9ZbA== + dependencies: + "@babel/types" "^7.13.12" + "@babel/helper-skip-transparent-expression-wrappers@^7.12.1": version "7.12.1" resolved "https://registry.yarnpkg.com/@babel/helper-skip-transparent-expression-wrappers/-/helper-skip-transparent-expression-wrappers-7.12.1.tgz#462dc63a7e435ade8468385c63d2b84cce4b3cbf" @@ -228,6 +319,15 @@ "@babel/traverse" "^7.12.17" "@babel/types" "^7.12.17" +"@babel/helpers@^7.13.10": + version "7.13.10" + resolved "https://registry.yarnpkg.com/@babel/helpers/-/helpers-7.13.10.tgz#fd8e2ba7488533cdeac45cc158e9ebca5e3c7df8" + integrity sha512-4VO883+MWPDUVRF3PhiLBUFHoX/bsLTGFpFK/HqvvfBZz2D57u9XzPVNFVBTc0PW/CWR9BXTOKt8NF4DInUHcQ== + dependencies: + "@babel/template" "^7.12.13" + "@babel/traverse" "^7.13.0" + "@babel/types" "^7.13.0" + "@babel/highlight@^7.12.13": version "7.12.13" resolved "https://registry.yarnpkg.com/@babel/highlight/-/highlight-7.12.13.tgz#8ab538393e00370b26271b01fa08f7f27f2e795c" @@ -237,11 +337,16 @@ chalk "^2.0.0" js-tokens "^4.0.0" -"@babel/parser@^7.1.0", "@babel/parser@^7.12.13", "@babel/parser@^7.12.17", "@babel/parser@^7.4.3": +"@babel/parser@^7.1.0", "@babel/parser@^7.12.13", "@babel/parser@^7.12.17": version "7.12.17" resolved "https://registry.yarnpkg.com/@babel/parser/-/parser-7.12.17.tgz#bc85d2d47db38094e5bb268fc761716e7d693848" integrity sha512-r1yKkiUTYMQ8LiEI0UcQx5ETw5dpTLn9wijn9hk6KkTtOK95FndDN10M+8/s6k/Ymlbivw0Av9q4SlgF80PtHg== +"@babel/parser@^7.13.0", "@babel/parser@^7.13.10": + version "7.13.12" + resolved "https://registry.yarnpkg.com/@babel/parser/-/parser-7.13.12.tgz#ba320059420774394d3b0c0233ba40e4250b81d1" + integrity sha512-4T7Pb244rxH24yR116LAuJ+adxXXnHhZaLJjegJVKSdoNCe4x1eDBaud5YIcQFcqzsaD5BHvJw5BQ0AZapdCRw== + "@babel/plugin-proposal-async-generator-functions@^7.12.13": version "7.12.13" resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-async-generator-functions/-/plugin-proposal-async-generator-functions-7.12.13.tgz#d1c6d841802ffb88c64a2413e311f7345b9e66b5" @@ -349,14 +454,21 @@ "@babel/helper-create-regexp-features-plugin" "^7.12.13" "@babel/helper-plugin-utils" "^7.12.13" -"@babel/plugin-syntax-async-generators@^7.8.0": +"@babel/plugin-syntax-async-generators@^7.8.0", "@babel/plugin-syntax-async-generators@^7.8.4": version "7.8.4" resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-async-generators/-/plugin-syntax-async-generators-7.8.4.tgz#a983fb1aeb2ec3f6ed042a210f640e90e786fe0d" integrity sha512-tycmZxkGfZaxhMRbXlPXuVFpdWlXpir2W4AMhSJgRKzk/eDlIXOhb2LHWoLpDF7TEHylV5zNhykX6KAgHJmTNw== dependencies: "@babel/helper-plugin-utils" "^7.8.0" -"@babel/plugin-syntax-class-properties@^7.12.13": +"@babel/plugin-syntax-bigint@^7.8.3": + version "7.8.3" + resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-bigint/-/plugin-syntax-bigint-7.8.3.tgz#4c9a6f669f5d0cdf1b90a1671e9a146be5300cea" + integrity sha512-wnTnFlG+YxQm3vDxpGE57Pj0srRU4sHE/mDkt1qv2YJJSeUAec2ma4WLUnUPeKjyrfntVwe/N6dCXpU+zL3Npg== + dependencies: + "@babel/helper-plugin-utils" "^7.8.0" + +"@babel/plugin-syntax-class-properties@^7.12.13", "@babel/plugin-syntax-class-properties@^7.8.3": version "7.12.13" resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-class-properties/-/plugin-syntax-class-properties-7.12.13.tgz#b5c987274c4a3a82b89714796931a6b53544ae10" integrity sha512-fm4idjKla0YahUNgFNLCB0qySdsoPiZP3iQE3rky0mBUtMZ23yDJ9SJdg6dXTSDnulOVqiF3Hgr9nbXvXTQZYA== @@ -377,56 +489,63 @@ dependencies: "@babel/helper-plugin-utils" "^7.8.3" -"@babel/plugin-syntax-json-strings@^7.8.0": +"@babel/plugin-syntax-import-meta@^7.8.3": + version "7.10.4" + resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-import-meta/-/plugin-syntax-import-meta-7.10.4.tgz#ee601348c370fa334d2207be158777496521fd51" + integrity sha512-Yqfm+XDx0+Prh3VSeEQCPU81yC+JWZ2pDPFSS4ZdpfZhp4MkFMaDC1UqseovEKwSUpnIL7+vK+Clp7bfh0iD7g== + dependencies: + "@babel/helper-plugin-utils" "^7.10.4" + +"@babel/plugin-syntax-json-strings@^7.8.0", "@babel/plugin-syntax-json-strings@^7.8.3": version "7.8.3" resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-json-strings/-/plugin-syntax-json-strings-7.8.3.tgz#01ca21b668cd8218c9e640cb6dd88c5412b2c96a" integrity sha512-lY6kdGpWHvjoe2vk4WrAapEuBR69EMxZl+RoGRhrFGNYVK8mOPAW8VfbT/ZgrFbXlDNiiaxQnAtgVCZ6jv30EA== dependencies: "@babel/helper-plugin-utils" "^7.8.0" -"@babel/plugin-syntax-logical-assignment-operators@^7.10.4": +"@babel/plugin-syntax-logical-assignment-operators@^7.10.4", "@babel/plugin-syntax-logical-assignment-operators@^7.8.3": version "7.10.4" resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-logical-assignment-operators/-/plugin-syntax-logical-assignment-operators-7.10.4.tgz#ca91ef46303530448b906652bac2e9fe9941f699" integrity sha512-d8waShlpFDinQ5MtvGU9xDAOzKH47+FFoney2baFIoMr952hKOLp1HR7VszoZvOsV/4+RRszNY7D17ba0te0ig== dependencies: "@babel/helper-plugin-utils" "^7.10.4" -"@babel/plugin-syntax-nullish-coalescing-operator@^7.8.0": +"@babel/plugin-syntax-nullish-coalescing-operator@^7.8.0", "@babel/plugin-syntax-nullish-coalescing-operator@^7.8.3": version "7.8.3" resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-nullish-coalescing-operator/-/plugin-syntax-nullish-coalescing-operator-7.8.3.tgz#167ed70368886081f74b5c36c65a88c03b66d1a9" integrity sha512-aSff4zPII1u2QD7y+F8oDsz19ew4IGEJg9SVW+bqwpwtfFleiQDMdzA/R+UlWDzfnHFCxxleFT0PMIrR36XLNQ== dependencies: "@babel/helper-plugin-utils" "^7.8.0" -"@babel/plugin-syntax-numeric-separator@^7.10.4": +"@babel/plugin-syntax-numeric-separator@^7.10.4", "@babel/plugin-syntax-numeric-separator@^7.8.3": version "7.10.4" resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-numeric-separator/-/plugin-syntax-numeric-separator-7.10.4.tgz#b9b070b3e33570cd9fd07ba7fa91c0dd37b9af97" integrity sha512-9H6YdfkcK/uOnY/K7/aA2xpzaAgkQn37yzWUMRK7OaPOqOpGS1+n0H5hxT9AUw9EsSjPW8SVyMJwYRtWs3X3ug== dependencies: "@babel/helper-plugin-utils" "^7.10.4" -"@babel/plugin-syntax-object-rest-spread@^7.0.0", "@babel/plugin-syntax-object-rest-spread@^7.8.0": +"@babel/plugin-syntax-object-rest-spread@^7.8.0", "@babel/plugin-syntax-object-rest-spread@^7.8.3": version "7.8.3" resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-object-rest-spread/-/plugin-syntax-object-rest-spread-7.8.3.tgz#60e225edcbd98a640332a2e72dd3e66f1af55871" integrity sha512-XoqMijGZb9y3y2XskN+P1wUGiVwWZ5JmoDRwx5+3GmEplNyVM2s2Dg8ILFQm8rWM48orGy5YpI5Bl8U1y7ydlA== dependencies: "@babel/helper-plugin-utils" "^7.8.0" -"@babel/plugin-syntax-optional-catch-binding@^7.8.0": +"@babel/plugin-syntax-optional-catch-binding@^7.8.0", "@babel/plugin-syntax-optional-catch-binding@^7.8.3": version "7.8.3" resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-optional-catch-binding/-/plugin-syntax-optional-catch-binding-7.8.3.tgz#6111a265bcfb020eb9efd0fdfd7d26402b9ed6c1" integrity sha512-6VPD0Pc1lpTqw0aKoeRTMiB+kWhAoT24PA+ksWSBrFtl5SIRVpZlwN3NNPQjehA2E/91FV3RjLWoVTglWcSV3Q== dependencies: "@babel/helper-plugin-utils" "^7.8.0" -"@babel/plugin-syntax-optional-chaining@^7.8.0": +"@babel/plugin-syntax-optional-chaining@^7.8.0", "@babel/plugin-syntax-optional-chaining@^7.8.3": version "7.8.3" resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-optional-chaining/-/plugin-syntax-optional-chaining-7.8.3.tgz#4f69c2ab95167e0180cd5336613f8c5788f7d48a" integrity sha512-KoK9ErH1MBlCPxV0VANkXW2/dw4vlbGDrFgz8bmUsBGYkFRcbRwMh6cIJubdPrkxRwuGdtCk0v/wPTKbQgBjkg== dependencies: "@babel/helper-plugin-utils" "^7.8.0" -"@babel/plugin-syntax-top-level-await@^7.12.13": +"@babel/plugin-syntax-top-level-await@^7.12.13", "@babel/plugin-syntax-top-level-await@^7.8.3": version "7.12.13" resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-top-level-await/-/plugin-syntax-top-level-await-7.12.13.tgz#c5f0fa6e249f5b739727f923540cf7a806130178" integrity sha512-A81F9pDwyS7yM//KwbCSDqy3Uj4NMIurtplxphWxoYtNPov7cJsDkAFNNyVlIZ3jwGycVsurZ+LtOA8gZ376iQ== @@ -781,14 +900,21 @@ core-js-pure "^3.0.0" regenerator-runtime "^0.13.4" -"@babel/runtime@^7.10.2", "@babel/runtime@^7.10.5", "@babel/runtime@^7.12.5", "@babel/runtime@^7.5.5", "@babel/runtime@^7.8.4", "@babel/runtime@^7.9.2": +"@babel/runtime@^7.10.2", "@babel/runtime@^7.10.5", "@babel/runtime@^7.12.5", "@babel/runtime@^7.5.5", "@babel/runtime@^7.8.4": version "7.12.18" resolved "https://registry.yarnpkg.com/@babel/runtime/-/runtime-7.12.18.tgz#af137bd7e7d9705a412b3caaf991fe6aaa97831b" integrity sha512-BogPQ7ciE6SYAUPtlm9tWbgI9+2AgqSam6QivMgXgAT+fKbgppaj4ZX15MHeLC1PVF5sNk70huBu20XxWOs8Cg== dependencies: regenerator-runtime "^0.13.4" -"@babel/template@^7.12.13", "@babel/template@^7.4.0": +"@babel/runtime@^7.9.2": + version "7.13.10" + resolved "https://registry.yarnpkg.com/@babel/runtime/-/runtime-7.13.10.tgz#47d42a57b6095f4468da440388fdbad8bebf0d7d" + integrity sha512-4QPkjJq6Ns3V/RgpEahRk+AGfL0eO6RHHtTWoNNr5mO49G6B5+X6d6THgWEAvTrznU5xYpbAlVKRYcsCgh/Akw== + dependencies: + regenerator-runtime "^0.13.4" + +"@babel/template@^7.12.13", "@babel/template@^7.3.3": version "7.12.13" resolved "https://registry.yarnpkg.com/@babel/template/-/template-7.12.13.tgz#530265be8a2589dbb37523844c5bcb55947fb327" integrity sha512-/7xxiGA57xMo/P2GVvdEumr8ONhFOhfgq2ihK3h1e6THqzTAkHbkXgB0xI9yeTfIUoH3+oAeHhqm/I43OTbbjA== @@ -797,7 +923,7 @@ "@babel/parser" "^7.12.13" "@babel/types" "^7.12.13" -"@babel/traverse@^7.1.0", "@babel/traverse@^7.12.13", "@babel/traverse@^7.12.17", "@babel/traverse@^7.4.3": +"@babel/traverse@^7.1.0", "@babel/traverse@^7.12.13", "@babel/traverse@^7.12.17": version "7.12.17" resolved "https://registry.yarnpkg.com/@babel/traverse/-/traverse-7.12.17.tgz#40ec8c7ffb502c4e54c7f95492dc11b88d718619" integrity sha512-LGkTqDqdiwC6Q7fWSwQoas/oyiEYw6Hqjve5KOSykXkmFJFqzvGMb9niaUEag3Rlve492Mkye3gLw9FTv94fdQ== @@ -812,7 +938,22 @@ globals "^11.1.0" lodash "^4.17.19" -"@babel/types@^7.0.0", "@babel/types@^7.12.1", "@babel/types@^7.12.13", "@babel/types@^7.12.17", "@babel/types@^7.3.0", "@babel/types@^7.4.0", "@babel/types@^7.4.4": +"@babel/traverse@^7.13.0": + version "7.13.0" + resolved "https://registry.yarnpkg.com/@babel/traverse/-/traverse-7.13.0.tgz#6d95752475f86ee7ded06536de309a65fc8966cc" + integrity sha512-xys5xi5JEhzC3RzEmSGrs/b3pJW/o87SypZ+G/PhaE7uqVQNv/jlmVIBXuoh5atqQ434LfXV+sf23Oxj0bchJQ== + dependencies: + "@babel/code-frame" "^7.12.13" + "@babel/generator" "^7.13.0" + "@babel/helper-function-name" "^7.12.13" + "@babel/helper-split-export-declaration" "^7.12.13" + "@babel/parser" "^7.13.0" + "@babel/types" "^7.13.0" + debug "^4.1.0" + globals "^11.1.0" + lodash "^4.17.19" + +"@babel/types@^7.0.0", "@babel/types@^7.12.1", "@babel/types@^7.12.13", "@babel/types@^7.12.17", "@babel/types@^7.3.0", "@babel/types@^7.4.4": version "7.12.17" resolved "https://registry.yarnpkg.com/@babel/types/-/types-7.12.17.tgz#9d711eb807e0934c90b8b1ca0eb1f7230d150963" integrity sha512-tNMDjcv/4DIcHxErTgwB9q2ZcYyN0sUfgGKUK/mm1FJK7Wz+KstoEekxrl/tBiNDgLK1HGi+sppj1An/1DR4fQ== @@ -821,6 +962,20 @@ lodash "^4.17.19" to-fast-properties "^2.0.0" +"@babel/types@^7.13.0", "@babel/types@^7.13.12", "@babel/types@^7.3.3": + version "7.13.12" + resolved "https://registry.yarnpkg.com/@babel/types/-/types-7.13.12.tgz#edbf99208ef48852acdff1c8a681a1e4ade580cd" + integrity sha512-K4nY2xFN4QMvQwkQ+zmBDp6ANMbVNw6BbxWmYA4qNjhR9W+Lj/8ky5MEY2Me5r+B2c6/v6F53oMndG+f9s3IiA== + dependencies: + "@babel/helper-validator-identifier" "^7.12.11" + lodash "^4.17.19" + to-fast-properties "^2.0.0" + +"@bcoe/v8-coverage@^0.2.3": + version "0.2.3" + resolved "https://registry.yarnpkg.com/@bcoe/v8-coverage/-/v8-coverage-0.2.3.tgz#75a2e8b51cb758a7553d6804a5932d7aace75c39" + integrity sha512-0hYQ8SB4Db5zvZB4axdMHGwEaQjkZzFjQiN9LVYvIFB2nSUHW9tYpxWriPrWDASIxiaXax83REcLxuSdnGPZtw== + "@budibase/bbui@^1.58.13": version "1.58.13" resolved "https://registry.yarnpkg.com/@budibase/bbui/-/bbui-1.58.13.tgz#59df9c73def2d81c75dcbd2266c52c19db88dbd7" @@ -833,11 +988,64 @@ svelte-portal "^1.0.0" turndown "^7.0.0" +"@budibase/client@^0.8.9": + version "0.8.12" + resolved "https://registry.yarnpkg.com/@budibase/client/-/client-0.8.12.tgz#1186d95509e28bb660f0c801b37b3cc52b0f3864" + integrity sha512-68eh1QvF443OgMsjpDEgSY9D/MUutnaKFruP98PHJgrRkVhQDY7F2EKn2FWgC5NJuCY3aJ1emRPdXUq4MapWuA== + dependencies: + "@budibase/string-templates" "^0.8.12" + regexparam "^1.3.0" + shortid "^2.2.15" + svelte-spa-router "^3.0.5" + "@budibase/colorpicker@1.1.2": version "1.1.2" resolved "https://registry.yarnpkg.com/@budibase/colorpicker/-/colorpicker-1.1.2.tgz#f7436924ee746d7be9b2009c2fa193e710c30f89" integrity sha512-2PlZBVkATDqDC4b4Ri8Xi8X3OxhuHOGfmZwtXbZL38lNIeofaQT3Qyc1ECzEY5N+HrdGrWhY9EnliF6QM+LIuA== +"@budibase/handlebars-helpers@^0.11.3": + version "0.11.3" + resolved "https://registry.yarnpkg.com/@budibase/handlebars-helpers/-/handlebars-helpers-0.11.3.tgz#b6e5c91b83e8906e7d7ff10ddde277a3d561016e" + integrity sha512-MS1ptZEYq8o9J3tNLM7cZ2RGSSJIer4GiMIUHtbBI3sC9UKqZebao1JYNfmZKpNjntuqhZKgjqc5GfnVIEjsYQ== + dependencies: + arr-flatten "^1.1.0" + array-sort "^0.1.4" + define-property "^1.0.0" + extend-shallow "^3.0.2" + "falsey" "^0.3.2" + for-in "^1.0.2" + for-own "^1.0.0" + get-object "^0.2.0" + get-value "^2.0.6" + handlebars "^4.0.11" + handlebars-utils "^1.0.6" + has-value "^1.0.0" + helper-date "^1.0.1" + helper-markdown "^1.0.0" + helper-md "^0.2.2" + html-tag "^2.0.0" + is-even "^1.0.0" + is-glob "^4.0.0" + is-number "^4.0.0" + kind-of "^6.0.0" + logging-helpers "^1.0.0" + micromatch "^3.1.4" + relative "^3.0.2" + striptags "^3.1.0" + to-gfm-code-block "^0.1.1" + year "^0.2.1" + +"@budibase/string-templates@^0.8.12", "@budibase/string-templates@^0.8.9": + version "0.8.12" + resolved "https://registry.yarnpkg.com/@budibase/string-templates/-/string-templates-0.8.12.tgz#bc08d441ac90b2f71c89b4b15c40c7c5e934a6fb" + integrity sha512-FkTm3XRBozhrJqJA4YdDxbLbcY3me7sAbJ+dgO7mZkTybRcrdbxRwL1XjYfRw9DL7+8pucN2Y6OW8gOQgyaTtw== + dependencies: + "@budibase/handlebars-helpers" "^0.11.3" + dayjs "^1.10.4" + handlebars "^4.7.6" + handlebars-utils "^1.0.6" + lodash "^4.17.20" + "@budibase/svelte-ag-grid@^1.0.4": version "1.0.4" resolved "https://registry.yarnpkg.com/@budibase/svelte-ag-grid/-/svelte-ag-grid-1.0.4.tgz#41cceec4bde2c4aea8b9da8f610fe36055c7709f" @@ -909,153 +1117,181 @@ dependencies: "@hapi/hoek" "^9.0.0" -"@jest/console@^24.7.1", "@jest/console@^24.9.0": - version "24.9.0" - resolved "https://registry.yarnpkg.com/@jest/console/-/console-24.9.0.tgz#79b1bc06fb74a8cfb01cbdedf945584b1b9707f0" - integrity sha512-Zuj6b8TnKXi3q4ymac8EQfc3ea/uhLeCGThFqXeC8H9/raaH8ARPUTdId+XyGd03Z4In0/VjD2OYFcBF09fNLQ== +"@istanbuljs/load-nyc-config@^1.0.0": + version "1.1.0" + resolved "https://registry.yarnpkg.com/@istanbuljs/load-nyc-config/-/load-nyc-config-1.1.0.tgz#fd3db1d59ecf7cf121e80650bb86712f9b55eced" + integrity sha512-VjeHSlIzpv/NyD3N0YuHfXOPDIixcA1q2ZV98wsMqcYlPmv2n3Yb2lYP9XMElnaFVXg5A7YLTeLu6V84uQDjmQ== dependencies: - "@jest/source-map" "^24.9.0" - chalk "^2.0.1" - slash "^2.0.0" + camelcase "^5.3.1" + find-up "^4.1.0" + get-package-type "^0.1.0" + js-yaml "^3.13.1" + resolve-from "^5.0.0" -"@jest/core@^24.9.0": - version "24.9.0" - resolved "https://registry.yarnpkg.com/@jest/core/-/core-24.9.0.tgz#2ceccd0b93181f9c4850e74f2a9ad43d351369c4" - integrity sha512-Fogg3s4wlAr1VX7q+rhV9RVnUv5tD7VuWfYy1+whMiWUrvl7U3QJSJyWcDio9Lq2prqYsZaeTv2Rz24pWGkJ2A== +"@istanbuljs/schema@^0.1.2": + version "0.1.3" + resolved "https://registry.yarnpkg.com/@istanbuljs/schema/-/schema-0.1.3.tgz#e45e384e4b8ec16bce2fd903af78450f6bf7ec98" + integrity sha512-ZXRY4jNvVgSVQ8DL3LTcakaAtXwTVUxE81hslsyD2AtoXW/wVob10HkOJ1X/pAlcI7D+2YoZKg5do8G/w6RYgA== + +"@jest/console@^26.6.2": + version "26.6.2" + resolved "https://registry.yarnpkg.com/@jest/console/-/console-26.6.2.tgz#4e04bc464014358b03ab4937805ee36a0aeb98f2" + integrity sha512-IY1R2i2aLsLr7Id3S6p2BA82GNWryt4oSvEXLAKc+L2zdi89dSkE8xC1C+0kpATG4JhBJREnQOH7/zmccM2B0g== dependencies: - "@jest/console" "^24.7.1" - "@jest/reporters" "^24.9.0" - "@jest/test-result" "^24.9.0" - "@jest/transform" "^24.9.0" - "@jest/types" "^24.9.0" - ansi-escapes "^3.0.0" - chalk "^2.0.1" + "@jest/types" "^26.6.2" + "@types/node" "*" + chalk "^4.0.0" + jest-message-util "^26.6.2" + jest-util "^26.6.2" + slash "^3.0.0" + +"@jest/core@^26.6.3": + version "26.6.3" + resolved "https://registry.yarnpkg.com/@jest/core/-/core-26.6.3.tgz#7639fcb3833d748a4656ada54bde193051e45fad" + integrity sha512-xvV1kKbhfUqFVuZ8Cyo+JPpipAHHAV3kcDBftiduK8EICXmTFddryy3P7NfZt8Pv37rA9nEJBKCCkglCPt/Xjw== + dependencies: + "@jest/console" "^26.6.2" + "@jest/reporters" "^26.6.2" + "@jest/test-result" "^26.6.2" + "@jest/transform" "^26.6.2" + "@jest/types" "^26.6.2" + "@types/node" "*" + ansi-escapes "^4.2.1" + chalk "^4.0.0" exit "^0.1.2" - graceful-fs "^4.1.15" - jest-changed-files "^24.9.0" - jest-config "^24.9.0" - jest-haste-map "^24.9.0" - jest-message-util "^24.9.0" - jest-regex-util "^24.3.0" - jest-resolve "^24.9.0" - jest-resolve-dependencies "^24.9.0" - jest-runner "^24.9.0" - jest-runtime "^24.9.0" - jest-snapshot "^24.9.0" - jest-util "^24.9.0" - jest-validate "^24.9.0" - jest-watcher "^24.9.0" - micromatch "^3.1.10" - p-each-series "^1.0.0" - realpath-native "^1.1.0" - rimraf "^2.5.4" - slash "^2.0.0" - strip-ansi "^5.0.0" + graceful-fs "^4.2.4" + jest-changed-files "^26.6.2" + jest-config "^26.6.3" + jest-haste-map "^26.6.2" + jest-message-util "^26.6.2" + jest-regex-util "^26.0.0" + jest-resolve "^26.6.2" + jest-resolve-dependencies "^26.6.3" + jest-runner "^26.6.3" + jest-runtime "^26.6.3" + jest-snapshot "^26.6.2" + jest-util "^26.6.2" + jest-validate "^26.6.2" + jest-watcher "^26.6.2" + micromatch "^4.0.2" + p-each-series "^2.1.0" + rimraf "^3.0.0" + slash "^3.0.0" + strip-ansi "^6.0.0" -"@jest/environment@^24.9.0": - version "24.9.0" - resolved "https://registry.yarnpkg.com/@jest/environment/-/environment-24.9.0.tgz#21e3afa2d65c0586cbd6cbefe208bafade44ab18" - integrity sha512-5A1QluTPhvdIPFYnO3sZC3smkNeXPVELz7ikPbhUj0bQjB07EoE9qtLrem14ZUYWdVayYbsjVwIiL4WBIMV4aQ== +"@jest/environment@^26.6.2": + version "26.6.2" + resolved "https://registry.yarnpkg.com/@jest/environment/-/environment-26.6.2.tgz#ba364cc72e221e79cc8f0a99555bf5d7577cf92c" + integrity sha512-nFy+fHl28zUrRsCeMB61VDThV1pVTtlEokBRgqPrcT1JNq4yRNIyTHfyht6PqtUvY9IsuLGTrbG8kPXjSZIZwA== dependencies: - "@jest/fake-timers" "^24.9.0" - "@jest/transform" "^24.9.0" - "@jest/types" "^24.9.0" - jest-mock "^24.9.0" + "@jest/fake-timers" "^26.6.2" + "@jest/types" "^26.6.2" + "@types/node" "*" + jest-mock "^26.6.2" -"@jest/fake-timers@^24.9.0": - version "24.9.0" - resolved "https://registry.yarnpkg.com/@jest/fake-timers/-/fake-timers-24.9.0.tgz#ba3e6bf0eecd09a636049896434d306636540c93" - integrity sha512-eWQcNa2YSwzXWIMC5KufBh3oWRIijrQFROsIqt6v/NS9Io/gknw1jsAC9c+ih/RQX4A3O7SeWAhQeN0goKhT9A== +"@jest/fake-timers@^26.6.2": + version "26.6.2" + resolved "https://registry.yarnpkg.com/@jest/fake-timers/-/fake-timers-26.6.2.tgz#459c329bcf70cee4af4d7e3f3e67848123535aad" + integrity sha512-14Uleatt7jdzefLPYM3KLcnUl1ZNikaKq34enpb5XG9i81JpppDb5muZvonvKyrl7ftEHkKS5L5/eB/kxJ+bvA== dependencies: - "@jest/types" "^24.9.0" - jest-message-util "^24.9.0" - jest-mock "^24.9.0" + "@jest/types" "^26.6.2" + "@sinonjs/fake-timers" "^6.0.1" + "@types/node" "*" + jest-message-util "^26.6.2" + jest-mock "^26.6.2" + jest-util "^26.6.2" -"@jest/reporters@^24.9.0": - version "24.9.0" - resolved "https://registry.yarnpkg.com/@jest/reporters/-/reporters-24.9.0.tgz#86660eff8e2b9661d042a8e98a028b8d631a5b43" - integrity sha512-mu4X0yjaHrffOsWmVLzitKmmmWSQ3GGuefgNscUSWNiUNcEOSEQk9k3pERKEQVBb0Cnn88+UESIsZEMH3o88Gw== +"@jest/globals@^26.6.2": + version "26.6.2" + resolved "https://registry.yarnpkg.com/@jest/globals/-/globals-26.6.2.tgz#5b613b78a1aa2655ae908eba638cc96a20df720a" + integrity sha512-85Ltnm7HlB/KesBUuALwQ68YTU72w9H2xW9FjZ1eL1U3lhtefjjl5c2MiUbpXt/i6LaPRvoOFJ22yCBSfQ0JIA== dependencies: - "@jest/environment" "^24.9.0" - "@jest/test-result" "^24.9.0" - "@jest/transform" "^24.9.0" - "@jest/types" "^24.9.0" - chalk "^2.0.1" + "@jest/environment" "^26.6.2" + "@jest/types" "^26.6.2" + expect "^26.6.2" + +"@jest/reporters@^26.6.2": + version "26.6.2" + resolved "https://registry.yarnpkg.com/@jest/reporters/-/reporters-26.6.2.tgz#1f518b99637a5f18307bd3ecf9275f6882a667f6" + integrity sha512-h2bW53APG4HvkOnVMo8q3QXa6pcaNt1HkwVsOPMBV6LD/q9oSpxNSYZQYkAnjdMjrJ86UuYeLo+aEZClV6opnw== + dependencies: + "@bcoe/v8-coverage" "^0.2.3" + "@jest/console" "^26.6.2" + "@jest/test-result" "^26.6.2" + "@jest/transform" "^26.6.2" + "@jest/types" "^26.6.2" + chalk "^4.0.0" + collect-v8-coverage "^1.0.0" exit "^0.1.2" glob "^7.1.2" - istanbul-lib-coverage "^2.0.2" - istanbul-lib-instrument "^3.0.1" - istanbul-lib-report "^2.0.4" - istanbul-lib-source-maps "^3.0.1" - istanbul-reports "^2.2.6" - jest-haste-map "^24.9.0" - jest-resolve "^24.9.0" - jest-runtime "^24.9.0" - jest-util "^24.9.0" - jest-worker "^24.6.0" - node-notifier "^5.4.2" - slash "^2.0.0" + graceful-fs "^4.2.4" + istanbul-lib-coverage "^3.0.0" + istanbul-lib-instrument "^4.0.3" + istanbul-lib-report "^3.0.0" + istanbul-lib-source-maps "^4.0.0" + istanbul-reports "^3.0.2" + jest-haste-map "^26.6.2" + jest-resolve "^26.6.2" + jest-util "^26.6.2" + jest-worker "^26.6.2" + slash "^3.0.0" source-map "^0.6.0" - string-length "^2.0.0" + string-length "^4.0.1" + terminal-link "^2.0.0" + v8-to-istanbul "^7.0.0" + optionalDependencies: + node-notifier "^8.0.0" -"@jest/source-map@^24.3.0", "@jest/source-map@^24.9.0": - version "24.9.0" - resolved "https://registry.yarnpkg.com/@jest/source-map/-/source-map-24.9.0.tgz#0e263a94430be4b41da683ccc1e6bffe2a191714" - integrity sha512-/Xw7xGlsZb4MJzNDgB7PW5crou5JqWiBQaz6xyPd3ArOg2nfn/PunV8+olXbbEZzNl591o5rWKE9BRDaFAuIBg== +"@jest/source-map@^26.6.2": + version "26.6.2" + resolved "https://registry.yarnpkg.com/@jest/source-map/-/source-map-26.6.2.tgz#29af5e1e2e324cafccc936f218309f54ab69d535" + integrity sha512-YwYcCwAnNmOVsZ8mr3GfnzdXDAl4LaenZP5z+G0c8bzC9/dugL8zRmxZzdoTl4IaS3CryS1uWnROLPFmb6lVvA== dependencies: callsites "^3.0.0" - graceful-fs "^4.1.15" + graceful-fs "^4.2.4" source-map "^0.6.0" -"@jest/test-result@^24.9.0": - version "24.9.0" - resolved "https://registry.yarnpkg.com/@jest/test-result/-/test-result-24.9.0.tgz#11796e8aa9dbf88ea025757b3152595ad06ba0ca" - integrity sha512-XEFrHbBonBJ8dGp2JmF8kP/nQI/ImPpygKHwQ/SY+es59Z3L5PI4Qb9TQQMAEeYsThG1xF0k6tmG0tIKATNiiA== +"@jest/test-result@^26.6.2": + version "26.6.2" + resolved "https://registry.yarnpkg.com/@jest/test-result/-/test-result-26.6.2.tgz#55da58b62df134576cc95476efa5f7949e3f5f18" + integrity sha512-5O7H5c/7YlojphYNrK02LlDIV2GNPYisKwHm2QTKjNZeEzezCbwYs9swJySv2UfPMyZ0VdsmMv7jIlD/IKYQpQ== dependencies: - "@jest/console" "^24.9.0" - "@jest/types" "^24.9.0" + "@jest/console" "^26.6.2" + "@jest/types" "^26.6.2" "@types/istanbul-lib-coverage" "^2.0.0" + collect-v8-coverage "^1.0.0" -"@jest/test-sequencer@^24.9.0": - version "24.9.0" - resolved "https://registry.yarnpkg.com/@jest/test-sequencer/-/test-sequencer-24.9.0.tgz#f8f334f35b625a4f2f355f2fe7e6036dad2e6b31" - integrity sha512-6qqsU4o0kW1dvA95qfNog8v8gkRN9ph6Lz7r96IvZpHdNipP2cBcb07J1Z45mz/VIS01OHJ3pY8T5fUY38tg4A== +"@jest/test-sequencer@^26.6.3": + version "26.6.3" + resolved "https://registry.yarnpkg.com/@jest/test-sequencer/-/test-sequencer-26.6.3.tgz#98e8a45100863886d074205e8ffdc5a7eb582b17" + integrity sha512-YHlVIjP5nfEyjlrSr8t/YdNfU/1XEt7c5b4OxcXCjyRhjzLYu/rO69/WHPuYcbCWkz8kAeZVZp2N2+IOLLEPGw== dependencies: - "@jest/test-result" "^24.9.0" - jest-haste-map "^24.9.0" - jest-runner "^24.9.0" - jest-runtime "^24.9.0" + "@jest/test-result" "^26.6.2" + graceful-fs "^4.2.4" + jest-haste-map "^26.6.2" + jest-runner "^26.6.3" + jest-runtime "^26.6.3" -"@jest/transform@^24.9.0": - version "24.9.0" - resolved "https://registry.yarnpkg.com/@jest/transform/-/transform-24.9.0.tgz#4ae2768b296553fadab09e9ec119543c90b16c56" - integrity sha512-TcQUmyNRxV94S0QpMOnZl0++6RMiqpbH/ZMccFB/amku6Uwvyb1cjYX7xkp5nGNkbX4QPH/FcB6q1HBTHynLmQ== +"@jest/transform@^26.6.2": + version "26.6.2" + resolved "https://registry.yarnpkg.com/@jest/transform/-/transform-26.6.2.tgz#5ac57c5fa1ad17b2aae83e73e45813894dcf2e4b" + integrity sha512-E9JjhUgNzvuQ+vVAL21vlyfy12gP0GhazGgJC4h6qUt1jSdUXGWJ1wfu/X7Sd8etSgxV4ovT1pb9v5D6QW4XgA== dependencies: "@babel/core" "^7.1.0" - "@jest/types" "^24.9.0" - babel-plugin-istanbul "^5.1.0" - chalk "^2.0.1" + "@jest/types" "^26.6.2" + babel-plugin-istanbul "^6.0.0" + chalk "^4.0.0" convert-source-map "^1.4.0" fast-json-stable-stringify "^2.0.0" - graceful-fs "^4.1.15" - jest-haste-map "^24.9.0" - jest-regex-util "^24.9.0" - jest-util "^24.9.0" - micromatch "^3.1.10" + graceful-fs "^4.2.4" + jest-haste-map "^26.6.2" + jest-regex-util "^26.0.0" + jest-util "^26.6.2" + micromatch "^4.0.2" pirates "^4.0.1" - realpath-native "^1.1.0" - slash "^2.0.0" + slash "^3.0.0" source-map "^0.6.1" - write-file-atomic "2.4.1" - -"@jest/types@^24.9.0": - version "24.9.0" - resolved "https://registry.yarnpkg.com/@jest/types/-/types-24.9.0.tgz#63cb26cb7500d069e5a389441a7c6ab5e909fc59" - integrity sha512-XKK7ze1apu5JWQ5eZjHITP66AX+QsLlbaJRBGYr8pNzwcAE2JVkwnf0yqjHTsDRcjR0mujy/NmZMXw5kl+kGBw== - dependencies: - "@types/istanbul-lib-coverage" "^2.0.0" - "@types/istanbul-reports" "^1.1.1" - "@types/yargs" "^13.0.0" + write-file-atomic "^3.0.0" "@jest/types@^26.6.2": version "26.6.2" @@ -1206,6 +1442,20 @@ resolved "https://registry.yarnpkg.com/@sideway/pinpoint/-/pinpoint-2.0.0.tgz#cff8ffadc372ad29fd3f78277aeb29e632cc70df" integrity sha512-RNiOoTPkptFtSVzQevY/yWtZwf/RxyVnPy/OcA9HBM3MlGDnBEYL5B41H0MTn0Uec8Hi+2qUtTfG2WWZBmMejQ== +"@sinonjs/commons@^1.7.0": + version "1.8.2" + resolved "https://registry.yarnpkg.com/@sinonjs/commons/-/commons-1.8.2.tgz#858f5c4b48d80778fde4b9d541f27edc0d56488b" + integrity sha512-sruwd86RJHdsVf/AtBoijDmUqJp3B6hF/DGC23C+JaegnDHaZyewCjoVGTdg3J0uz3Zs7NnIT05OBOmML72lQw== + dependencies: + type-detect "4.0.8" + +"@sinonjs/fake-timers@^6.0.1": + version "6.0.1" + resolved "https://registry.yarnpkg.com/@sinonjs/fake-timers/-/fake-timers-6.0.1.tgz#293674fccb3262ac782c7aadfdeca86b10c75c40" + integrity sha512-MZPUxrmFubI36XS1DI3qmI0YdN1gks62JtFZvxR67ljjSNCeK6U08Zx4msEWOXuofgqUt6zPHSi1H9fbjR/NRA== + dependencies: + "@sinonjs/commons" "^1.7.0" + "@sveltech/routify@1.7.11": version "1.7.11" resolved "https://registry.yarnpkg.com/@sveltech/routify/-/routify-1.7.11.tgz#16b7f936a55a243bcb117fed5a4e8e0bf925702c" @@ -1255,10 +1505,10 @@ lz-string "^1.4.4" pretty-format "^26.6.2" -"@testing-library/jest-dom@^5.11.0": - version "5.11.9" - resolved "https://registry.yarnpkg.com/@testing-library/jest-dom/-/jest-dom-5.11.9.tgz#e6b3cd687021f89f261bd53cbe367041fbd3e975" - integrity sha512-Mn2gnA9d1wStlAIT2NU8J15LNob0YFBVjs2aEQ3j8rsfRQo+lAs7/ui1i2TGaJjapLmuNPLTsrm+nPjmZDwpcQ== +"@testing-library/jest-dom@^5.11.10": + version "5.11.10" + resolved "https://registry.yarnpkg.com/@testing-library/jest-dom/-/jest-dom-5.11.10.tgz#1cd90715023e1627f5ed26ab3b38e6f22d77046c" + integrity sha512-FuKiq5xuk44Fqm0000Z9w0hjOdwZRNzgx7xGGxQYepWFZy+OYUMOT/wPI4nLYXCaVltNVpU1W/qmD88wLWDsqQ== dependencies: "@babel/runtime" "^7.9.2" "@types/testing-library__jest-dom" "^5.9.1" @@ -1281,10 +1531,10 @@ resolved "https://registry.yarnpkg.com/@types/aria-query/-/aria-query-4.2.1.tgz#78b5433344e2f92e8b306c06a5622c50c245bf6b" integrity sha512-S6oPal772qJZHoRZLFc/XoZW2gFvwXusYUmXPXkgxJLuEk2vOt7jc4Yo6z/vtI0EBkbPBVrJJ0B+prLIKiWqHg== -"@types/babel__core@^7.1.0": - version "7.1.12" - resolved "https://registry.yarnpkg.com/@types/babel__core/-/babel__core-7.1.12.tgz#4d8e9e51eb265552a7e4f1ff2219ab6133bdfb2d" - integrity sha512-wMTHiiTiBAAPebqaPiPDLFA4LYPKr6Ph0Xq/6rq1Ur3v66HXyG+clfR9CNETkD7MQS8ZHvpQOtA53DLws5WAEQ== +"@types/babel__core@^7.0.0", "@types/babel__core@^7.1.7": + version "7.1.14" + resolved "https://registry.yarnpkg.com/@types/babel__core/-/babel__core-7.1.14.tgz#faaeefc4185ec71c389f4501ee5ec84b170cc402" + integrity sha512-zGZJzzBUVDo/eV6KgbE0f0ZI7dInEYvo12Rb70uNQDshC3SkRMb67ja0GgRHZgAX3Za6rhaWlvbDO8rrGyAb1g== dependencies: "@babel/parser" "^7.1.0" "@babel/types" "^7.0.0" @@ -1314,6 +1564,13 @@ dependencies: "@babel/types" "^7.3.0" +"@types/babel__traverse@^7.0.4": + version "7.11.1" + resolved "https://registry.yarnpkg.com/@types/babel__traverse/-/babel__traverse-7.11.1.tgz#654f6c4f67568e24c23b367e947098c6206fa639" + integrity sha512-Vs0hm0vPahPMYi9tDjtP66llufgO3ST16WXaSTtDGEl9cewAl3AibmxWw6TINOqHPT9z0uABKAYjT9jNSg4npw== + dependencies: + "@babel/types" "^7.3.0" + "@types/estree@*": version "0.0.46" resolved "https://registry.yarnpkg.com/@types/estree/-/estree-0.0.46.tgz#0fb6bfbbeabd7a30880504993369c4bf1deab1fe" @@ -1339,7 +1596,14 @@ "@types/minimatch" "*" "@types/node" "*" -"@types/istanbul-lib-coverage@*", "@types/istanbul-lib-coverage@^2.0.0": +"@types/graceful-fs@^4.1.2": + version "4.1.5" + resolved "https://registry.yarnpkg.com/@types/graceful-fs/-/graceful-fs-4.1.5.tgz#21ffba0d98da4350db64891f92a9e5db3cdb4e15" + integrity sha512-anKkLmZZ+xm4p8JWBf4hElkM4XR+EZeA2M9BAkkTldmcyDY4mbdIJnRghDJH3Ov5ooY7/UAoENtmdMSkaAd7Cw== + dependencies: + "@types/node" "*" + +"@types/istanbul-lib-coverage@*", "@types/istanbul-lib-coverage@^2.0.0", "@types/istanbul-lib-coverage@^2.0.1": version "2.0.3" resolved "https://registry.yarnpkg.com/@types/istanbul-lib-coverage/-/istanbul-lib-coverage-2.0.3.tgz#4ba8ddb720221f432e443bd5f9117fd22cfd4762" integrity sha512-sz7iLqvVUg1gIedBOvlkxPlc8/uVzyS5OwGz1cKjXzkl3FpL3al0crU8YGU1WoHkxn0Wxbw5tyi6hvzJKNzFsw== @@ -1351,14 +1615,6 @@ dependencies: "@types/istanbul-lib-coverage" "*" -"@types/istanbul-reports@^1.1.1": - version "1.1.2" - resolved "https://registry.yarnpkg.com/@types/istanbul-reports/-/istanbul-reports-1.1.2.tgz#e875cc689e47bce549ec81f3df5e6f6f11cfaeb2" - integrity sha512-P/W9yOX/3oPZSpaYOCQzGqgCQRXn0FFO/V8bWrCQs+wLmvVVxk6CRBXALEvNs9OHIatlnlFokfhuDo2ug01ciw== - dependencies: - "@types/istanbul-lib-coverage" "*" - "@types/istanbul-lib-report" "*" - "@types/istanbul-reports@^3.0.0": version "3.0.0" resolved "https://registry.yarnpkg.com/@types/istanbul-reports/-/istanbul-reports-3.0.0.tgz#508b13aa344fa4976234e75dddcc34925737d821" @@ -1367,9 +1623,9 @@ "@types/istanbul-lib-report" "*" "@types/jest@*": - version "26.0.20" - resolved "https://registry.yarnpkg.com/@types/jest/-/jest-26.0.20.tgz#cd2f2702ecf69e86b586e1f5223a60e454056307" - integrity sha512-9zi2Y+5USJRxd0FsahERhBwlcvFh6D2GLQnY2FH2BzK8J9s9omvNHIbvABwIluXa0fD8XVKMLTO0aOEuUfACAA== + version "26.0.22" + resolved "https://registry.yarnpkg.com/@types/jest/-/jest-26.0.22.tgz#8308a1debdf1b807aa47be2838acdcd91e88fbe6" + integrity sha512-eeWwWjlqxvBxc4oQdkueW5OF/gtfSceKk4OnOAGlUSwS/liBRtZppbJuz1YkgbrbfGOoeBHun9fOvXnjNwrSOw== dependencies: jest-diff "^26.0.0" pretty-format "^26.0.0" @@ -1389,11 +1645,21 @@ resolved "https://registry.yarnpkg.com/@types/node/-/node-12.20.3.tgz#fbabde59d96c23a80e337ca6a71b464da2a0a824" integrity sha512-63cSd8J30Sr4/aFKKfDmCEM4GMH3W2efWT0Ii/B+Ohm3id0TU2xPEBFktiq3nXCZcN6VwVvpyv75I4zTP7YO/w== +"@types/normalize-package-data@^2.4.0": + version "2.4.0" + resolved "https://registry.yarnpkg.com/@types/normalize-package-data/-/normalize-package-data-2.4.0.tgz#e486d0d97396d79beedd0a6e33f4534ff6b4973e" + integrity sha512-f5j5b/Gf71L+dbqxIpQ4Z2WlmI/mPJ0fOkGGmFgtb6sAu97EPczzbS3/tJKxmcYDj55OX6ssqwDAWOHIYDRDGA== + "@types/parse-json@^4.0.0": version "4.0.0" resolved "https://registry.yarnpkg.com/@types/parse-json/-/parse-json-4.0.0.tgz#2f8bb441434d163b35fb8ffdccd7138927ffb8c0" integrity sha512-//oorEZjL6sbPcKUaCdIGlIUeH26mgzimjBB77G6XRgnDl/L5wOnpyBGRe/Mmf5CVW3PwEBE1NjiMZ/ssFh4wA== +"@types/prettier@^2.0.0": + version "2.2.3" + resolved "https://registry.yarnpkg.com/@types/prettier/-/prettier-2.2.3.tgz#ef65165aea2924c9359205bf748865b8881753c0" + integrity sha512-PijRCG/K3s3w1We6ynUKdxEc5AcuuH3NBmMDP8uvKVp6X43UY7NQlTzczakXP3DJR0F4dfNQIGjU2cUeRYs2AA== + "@types/resolve@0.0.8": version "0.0.8" resolved "https://registry.yarnpkg.com/@types/resolve/-/resolve-0.0.8.tgz#f26074d238e02659e323ce1a13d041eee280e194" @@ -1411,10 +1677,10 @@ resolved "https://registry.yarnpkg.com/@types/sizzle/-/sizzle-2.3.2.tgz#a811b8c18e2babab7d542b3365887ae2e4d9de47" integrity sha512-7EJYyKTL7tFR8+gDbB6Wwz/arpGa0Mywk1TJbNzKzHtzbwVmY4HR9WqS5VV7dsBUKQmPNr192jHr/VpBluj/hg== -"@types/stack-utils@^1.0.1": - version "1.0.1" - resolved "https://registry.yarnpkg.com/@types/stack-utils/-/stack-utils-1.0.1.tgz#0a851d3bd96498fa25c33ab7278ed3bd65f06c3e" - integrity sha512-l42BggppR6zLmpfU6fq9HEa2oGPEI8yrSPL3GITjfRInppYFahObbIQOQK3UGxEnyQpltZLaPe75046NOZQikw== +"@types/stack-utils@^2.0.0": + version "2.0.0" + resolved "https://registry.yarnpkg.com/@types/stack-utils/-/stack-utils-2.0.0.tgz#7036640b4e21cc2f259ae826ce843d277dad8cff" + integrity sha512-RJJrrySY7A8havqpGObOB4W92QXKJo63/jFLLgpvOtsGUqbQZ9Sbgl35KMm1DjC6j7AvmmU2bIno+3IyEaemaw== "@types/testing-library__jest-dom@^5.9.1": version "5.9.5" @@ -1428,13 +1694,6 @@ resolved "https://registry.yarnpkg.com/@types/yargs-parser/-/yargs-parser-20.2.0.tgz#dd3e6699ba3237f0348cd085e4698780204842f9" integrity sha512-37RSHht+gzzgYeobbG+KWryeAW8J33Nhr69cjTqSYymXVZEN9NbRYWoYlRtDhHKPVT1FyNKwaTPC1NynKZpzRA== -"@types/yargs@^13.0.0": - version "13.0.11" - resolved "https://registry.yarnpkg.com/@types/yargs/-/yargs-13.0.11.tgz#def2f0c93e4bdf2c61d7e34899b17e34be28d3b1" - integrity sha512-NRqD6T4gktUrDi1o1wLH3EKC1o2caCr7/wR87ODcbVITQF106OM3sFN92ysZ++wqelOd1CTzatnOBRDYYG6wGQ== - dependencies: - "@types/yargs-parser" "*" - "@types/yargs@^15.0.0": version "15.0.13" resolved "https://registry.yarnpkg.com/@types/yargs/-/yargs-15.0.13.tgz#34f7fec8b389d7f3c1fd08026a5763e072d3c6dc" @@ -1442,7 +1701,7 @@ dependencies: "@types/yargs-parser" "*" -abab@^2.0.0, abab@^2.0.3: +abab@^2.0.3, abab@^2.0.5: version "2.0.5" resolved "https://registry.yarnpkg.com/abab/-/abab-2.0.5.tgz#c0b678fb32d60fc1219c784d6a826fe385aeb79a" integrity sha512-9IK9EadsbHo6jLWIpxpR6pL0sazTXV6+SQv25ZB+F7Bj9mJNaOc4nCRabwd5M/JwmUa8idz6Eci6eKfJryPs6Q== @@ -1454,14 +1713,6 @@ abstract-leveldown@~0.12.0, abstract-leveldown@~0.12.1: dependencies: xtend "~3.0.0" -acorn-globals@^4.1.0: - version "4.3.4" - resolved "https://registry.yarnpkg.com/acorn-globals/-/acorn-globals-4.3.4.tgz#9fa1926addc11c97308c4e66d7add0d40c3272e7" - integrity sha512-clfQEh21R+D0leSbUdWf3OcfqyaCSAQ8Ryq00bofSekfr9W8u1jyYZo6ir0xu9Gtcf7BjcHJpnbZH7JOCpP60A== - dependencies: - acorn "^6.0.1" - acorn-walk "^6.0.1" - acorn-globals@^6.0.0: version "6.0.0" resolved "https://registry.yarnpkg.com/acorn-globals/-/acorn-globals-6.0.0.tgz#46cdd39f0f8ff08a876619b55f5ac8a6dc770b45" @@ -1470,31 +1721,26 @@ acorn-globals@^6.0.0: acorn "^7.1.1" acorn-walk "^7.1.1" -acorn-walk@^6.0.1: - version "6.2.0" - resolved "https://registry.yarnpkg.com/acorn-walk/-/acorn-walk-6.2.0.tgz#123cb8f3b84c2171f1f7fb252615b1c78a6b1a8c" - integrity sha512-7evsyfH1cLOCdAzZAd43Cic04yKydNx0cF+7tiA19p1XnLLPU4dpCQOqpjqwokFe//vS0QqfqqjCS2JkiIs0cA== - acorn-walk@^7.1.1: version "7.2.0" resolved "https://registry.yarnpkg.com/acorn-walk/-/acorn-walk-7.2.0.tgz#0de889a601203909b0fbe07b8938dc21d2e967bc" integrity sha512-OPdCF6GsMIP+Az+aWfAAOEt2/+iVDKE7oy6lJ098aoe59oAmK76qV6Gw60SbZ8jHuG2wH058GF4pLFbYamYrVA== -acorn@^5.5.3, acorn@^5.7.3: +acorn@^5.7.3: version "5.7.4" resolved "https://registry.yarnpkg.com/acorn/-/acorn-5.7.4.tgz#3e8d8a9947d0599a1796d10225d7432f4a4acf5e" integrity sha512-1D++VG7BhrtvQpNbBzovKNc1FLGGEE/oGe7b9xJm/RFHMBeUaUGpluV9RLjZa47YFdPcDAenEYuq9pQPcMdLJg== -acorn@^6.0.1: - version "6.4.2" - resolved "https://registry.yarnpkg.com/acorn/-/acorn-6.4.2.tgz#35866fd710528e92de10cf06016498e47e39e1e6" - integrity sha512-XtGIhXwF8YM8bJhGxG5kXgjkEuNGLTkoYqVE+KMR+aspr4KGYmKYg7yUe3KghyQ9yheNwLnjmzh/7+gfDBmHCQ== - acorn@^7.1.1: version "7.4.1" resolved "https://registry.yarnpkg.com/acorn/-/acorn-7.4.1.tgz#feaed255973d2e77555b83dbc08851a6c63520fa" integrity sha512-nQyp0o1/mNdbTO1PO6kHkwSrmgZ0MT/jCCpNiwbUjGoRN4dlBhqJtoQuCnEOKzgTVwg0ZWiCoQy6SxMebQVh8A== +acorn@^8.0.5: + version "8.1.0" + resolved "https://registry.yarnpkg.com/acorn/-/acorn-8.1.0.tgz#52311fd7037ae119cbb134309e901aa46295b3fe" + integrity sha512-LWCF/Wn0nfHOmJ9rzQApGnxnvgfROzGilS8936rqN/lfcYkY9MYZzdMqN+2NJ4SlTc+m5HiSa+kNfDtI64dwUA== + ag-grid-community@^24.0.0: version "24.1.0" resolved "https://registry.yarnpkg.com/ag-grid-community/-/ag-grid-community-24.1.0.tgz#1e3cab51211822e08d56f03a491b7c0deaa398e6" @@ -1510,11 +1756,198 @@ ajv@^6.12.3: json-schema-traverse "^0.4.1" uri-js "^4.2.2" +ansi-bgblack@^0.1.1: + version "0.1.1" + resolved "https://registry.yarnpkg.com/ansi-bgblack/-/ansi-bgblack-0.1.1.tgz#a68ba5007887701b6aafbe3fa0dadfdfa8ee3ca2" + integrity sha1-poulAHiHcBtqr74/oNrf36juPKI= + dependencies: + ansi-wrap "0.1.0" + +ansi-bgblue@^0.1.1: + version "0.1.1" + resolved "https://registry.yarnpkg.com/ansi-bgblue/-/ansi-bgblue-0.1.1.tgz#67bdc04edc9b9b5278969da196dea3d75c8c3613" + integrity sha1-Z73ATtybm1J4lp2hlt6j11yMNhM= + dependencies: + ansi-wrap "0.1.0" + +ansi-bgcyan@^0.1.1: + version "0.1.1" + resolved "https://registry.yarnpkg.com/ansi-bgcyan/-/ansi-bgcyan-0.1.1.tgz#58489425600bde9f5507068dd969ebfdb50fe768" + integrity sha1-WEiUJWAL3p9VBwaN2Wnr/bUP52g= + dependencies: + ansi-wrap "0.1.0" + +ansi-bggreen@^0.1.1: + version "0.1.1" + resolved "https://registry.yarnpkg.com/ansi-bggreen/-/ansi-bggreen-0.1.1.tgz#4e3191248529943f4321e96bf131d1c13816af49" + integrity sha1-TjGRJIUplD9DIelr8THRwTgWr0k= + dependencies: + ansi-wrap "0.1.0" + +ansi-bgmagenta@^0.1.1: + version "0.1.1" + resolved "https://registry.yarnpkg.com/ansi-bgmagenta/-/ansi-bgmagenta-0.1.1.tgz#9b28432c076eaa999418672a3efbe19391c2c7a1" + integrity sha1-myhDLAduqpmUGGcqPvvhk5HCx6E= + dependencies: + ansi-wrap "0.1.0" + +ansi-bgred@^0.1.1: + version "0.1.1" + resolved "https://registry.yarnpkg.com/ansi-bgred/-/ansi-bgred-0.1.1.tgz#a76f92838382ba43290a6c1778424f984d6f1041" + integrity sha1-p2+Sg4OCukMpCmwXeEJPmE1vEEE= + dependencies: + ansi-wrap "0.1.0" + +ansi-bgwhite@^0.1.1: + version "0.1.1" + resolved "https://registry.yarnpkg.com/ansi-bgwhite/-/ansi-bgwhite-0.1.1.tgz#6504651377a58a6ececd0331994e480258e11ba8" + integrity sha1-ZQRlE3elim7OzQMxmU5IAljhG6g= + dependencies: + ansi-wrap "0.1.0" + +ansi-bgyellow@^0.1.1: + version "0.1.1" + resolved "https://registry.yarnpkg.com/ansi-bgyellow/-/ansi-bgyellow-0.1.1.tgz#c3fe2eb08cd476648029e6874d15a0b38f61d44f" + integrity sha1-w/4usIzUdmSAKeaHTRWgs49h1E8= + dependencies: + ansi-wrap "0.1.0" + +ansi-black@^0.1.1: + version "0.1.1" + resolved "https://registry.yarnpkg.com/ansi-black/-/ansi-black-0.1.1.tgz#f6185e889360b2545a1ec50c0bf063fc43032453" + integrity sha1-9hheiJNgslRaHsUMC/Bj/EMDJFM= + dependencies: + ansi-wrap "0.1.0" + +ansi-blue@^0.1.1: + version "0.1.1" + resolved "https://registry.yarnpkg.com/ansi-blue/-/ansi-blue-0.1.1.tgz#15b804990e92fc9ca8c5476ce8f699777c21edbf" + integrity sha1-FbgEmQ6S/JyoxUds6PaZd3wh7b8= + dependencies: + ansi-wrap "0.1.0" + +ansi-bold@^0.1.1: + version "0.1.1" + resolved "https://registry.yarnpkg.com/ansi-bold/-/ansi-bold-0.1.1.tgz#3e63950af5acc2ae2e670e6f67deb115d1a5f505" + integrity sha1-PmOVCvWswq4uZw5vZ96xFdGl9QU= + dependencies: + ansi-wrap "0.1.0" + +ansi-colors@^0.2.0: + version "0.2.0" + resolved "https://registry.yarnpkg.com/ansi-colors/-/ansi-colors-0.2.0.tgz#72c31de2a0d9a2ccd0cac30cc9823eeb2f6434b5" + integrity sha1-csMd4qDZoszQysMMyYI+6y9kNLU= + dependencies: + ansi-bgblack "^0.1.1" + ansi-bgblue "^0.1.1" + ansi-bgcyan "^0.1.1" + ansi-bggreen "^0.1.1" + ansi-bgmagenta "^0.1.1" + ansi-bgred "^0.1.1" + ansi-bgwhite "^0.1.1" + ansi-bgyellow "^0.1.1" + ansi-black "^0.1.1" + ansi-blue "^0.1.1" + ansi-bold "^0.1.1" + ansi-cyan "^0.1.1" + ansi-dim "^0.1.1" + ansi-gray "^0.1.1" + ansi-green "^0.1.1" + ansi-grey "^0.1.1" + ansi-hidden "^0.1.1" + ansi-inverse "^0.1.1" + ansi-italic "^0.1.1" + ansi-magenta "^0.1.1" + ansi-red "^0.1.1" + ansi-reset "^0.1.1" + ansi-strikethrough "^0.1.1" + ansi-underline "^0.1.1" + ansi-white "^0.1.1" + ansi-yellow "^0.1.1" + lazy-cache "^2.0.1" + +ansi-cyan@^0.1.1: + version "0.1.1" + resolved "https://registry.yarnpkg.com/ansi-cyan/-/ansi-cyan-0.1.1.tgz#538ae528af8982f28ae30d86f2f17456d2609873" + integrity sha1-U4rlKK+JgvKK4w2G8vF0VtJgmHM= + dependencies: + ansi-wrap "0.1.0" + +ansi-dim@^0.1.1: + version "0.1.1" + resolved "https://registry.yarnpkg.com/ansi-dim/-/ansi-dim-0.1.1.tgz#40de4c603aa8086d8e7a86b8ff998d5c36eefd6c" + integrity sha1-QN5MYDqoCG2Oeoa4/5mNXDbu/Ww= + dependencies: + ansi-wrap "0.1.0" + ansi-escapes@^3.0.0: version "3.2.0" resolved "https://registry.yarnpkg.com/ansi-escapes/-/ansi-escapes-3.2.0.tgz#8780b98ff9dbf5638152d1f1fe5c1d7b4442976b" integrity sha512-cBhpre4ma+U0T1oM5fXg7Dy1Jw7zzwv7lt/GoCpr+hDQJoYnKVPLL4dCvSEFMmQurOQvSrwT7SL/DAlhBI97RQ== +ansi-escapes@^4.2.1: + version "4.3.2" + resolved "https://registry.yarnpkg.com/ansi-escapes/-/ansi-escapes-4.3.2.tgz#6b2291d1db7d98b6521d5f1efa42d0f3a9feb65e" + integrity sha512-gKXj5ALrKWQLsYG9jlTRmR/xKluxHV+Z9QEwNIgCfM1/uwPMCuzVVnh5mwTd+OuBZcwSIMbqssNWRm1lE51QaQ== + dependencies: + type-fest "^0.21.3" + +ansi-gray@^0.1.1: + version "0.1.1" + resolved "https://registry.yarnpkg.com/ansi-gray/-/ansi-gray-0.1.1.tgz#2962cf54ec9792c48510a3deb524436861ef7251" + integrity sha1-KWLPVOyXksSFEKPetSRDaGHvclE= + dependencies: + ansi-wrap "0.1.0" + +ansi-green@^0.1.1: + version "0.1.1" + resolved "https://registry.yarnpkg.com/ansi-green/-/ansi-green-0.1.1.tgz#8a5d9a979e458d57c40e33580b37390b8e10d0f7" + integrity sha1-il2al55FjVfEDjNYCzc5C44Q0Pc= + dependencies: + ansi-wrap "0.1.0" + +ansi-grey@^0.1.1: + version "0.1.1" + resolved "https://registry.yarnpkg.com/ansi-grey/-/ansi-grey-0.1.1.tgz#59d98b6ac2ba19f8a51798e9853fba78339a33c1" + integrity sha1-WdmLasK6GfilF5jphT+6eDOaM8E= + dependencies: + ansi-wrap "0.1.0" + +ansi-hidden@^0.1.1: + version "0.1.1" + resolved "https://registry.yarnpkg.com/ansi-hidden/-/ansi-hidden-0.1.1.tgz#ed6a4c498d2bb7cbb289dbf2a8d1dcc8567fae0f" + integrity sha1-7WpMSY0rt8uyidvyqNHcyFZ/rg8= + dependencies: + ansi-wrap "0.1.0" + +ansi-inverse@^0.1.1: + version "0.1.1" + resolved "https://registry.yarnpkg.com/ansi-inverse/-/ansi-inverse-0.1.1.tgz#b6af45826fe826bfb528a6c79885794355ccd269" + integrity sha1-tq9Fgm/oJr+1KKbHmIV5Q1XM0mk= + dependencies: + ansi-wrap "0.1.0" + +ansi-italic@^0.1.1: + version "0.1.1" + resolved "https://registry.yarnpkg.com/ansi-italic/-/ansi-italic-0.1.1.tgz#104743463f625c142a036739cf85eda688986f23" + integrity sha1-EEdDRj9iXBQqA2c5z4XtpoiYbyM= + dependencies: + ansi-wrap "0.1.0" + +ansi-magenta@^0.1.1: + version "0.1.1" + resolved "https://registry.yarnpkg.com/ansi-magenta/-/ansi-magenta-0.1.1.tgz#063b5ba16fb3f23e1cfda2b07c0a89de11e430ae" + integrity sha1-BjtboW+z8j4c/aKwfAqJ3hHkMK4= + dependencies: + ansi-wrap "0.1.0" + +ansi-red@^0.1.1: + version "0.1.1" + resolved "https://registry.yarnpkg.com/ansi-red/-/ansi-red-0.1.1.tgz#8c638f9d1080800a353c9c28c8a81ca4705d946c" + integrity sha1-jGOPnRCAgAo1PJwoyKgcpHBdlGw= + dependencies: + ansi-wrap "0.1.0" + ansi-regex@^2.0.0: version "2.1.1" resolved "https://registry.yarnpkg.com/ansi-regex/-/ansi-regex-2.1.1.tgz#c3b33ab5ee360d86e0e628f0468ae7ef27d654df" @@ -1525,22 +1958,31 @@ ansi-regex@^3.0.0: resolved "https://registry.yarnpkg.com/ansi-regex/-/ansi-regex-3.0.0.tgz#ed0317c322064f79466c02966bddb605ab37d998" integrity sha1-7QMXwyIGT3lGbAKWa922Bas32Zg= -ansi-regex@^4.0.0, ansi-regex@^4.1.0: - version "4.1.0" - resolved "https://registry.yarnpkg.com/ansi-regex/-/ansi-regex-4.1.0.tgz#8b9f8f08cf1acb843756a839ca8c7e3168c51997" - integrity sha512-1apePfXM1UOSqw0o9IiFAovVz9M5S1Dg+4TrDwfMewQ6p/rmMueb7tWZjQ1rx4Loy1ArBggoqGpfqqdI4rondg== - ansi-regex@^5.0.0: version "5.0.0" resolved "https://registry.yarnpkg.com/ansi-regex/-/ansi-regex-5.0.0.tgz#388539f55179bf39339c81af30a654d69f87cb75" integrity sha512-bY6fj56OUQ0hU1KjFNDQuJFezqKdrAyFdIevADiqrWHwSlbmBNMHp5ak2f40Pm8JTFyM2mqxkG6ngkHO11f/lg== +ansi-reset@^0.1.1: + version "0.1.1" + resolved "https://registry.yarnpkg.com/ansi-reset/-/ansi-reset-0.1.1.tgz#e7e71292c3c7ddcd4d62ef4a6c7c05980911c3b7" + integrity sha1-5+cSksPH3c1NYu9KbHwFmAkRw7c= + dependencies: + ansi-wrap "0.1.0" + +ansi-strikethrough@^0.1.1: + version "0.1.1" + resolved "https://registry.yarnpkg.com/ansi-strikethrough/-/ansi-strikethrough-0.1.1.tgz#d84877140b2cff07d1c93ebce69904f68885e568" + integrity sha1-2Eh3FAss/wfRyT685pkE9oiF5Wg= + dependencies: + ansi-wrap "0.1.0" + ansi-styles@^2.2.1: version "2.2.1" resolved "https://registry.yarnpkg.com/ansi-styles/-/ansi-styles-2.2.1.tgz#b432dd3358b634cf75e1e4664368240533c1ddbe" integrity sha1-tDLdM1i2NM914eRmQ2gkBTPB3b4= -ansi-styles@^3.2.0, ansi-styles@^3.2.1: +ansi-styles@^3.2.1: version "3.2.1" resolved "https://registry.yarnpkg.com/ansi-styles/-/ansi-styles-3.2.1.tgz#41fbb20243e50b12be0f04b8dedbf07520ce841d" integrity sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA== @@ -1554,6 +1996,32 @@ ansi-styles@^4.0.0, ansi-styles@^4.1.0: dependencies: color-convert "^2.0.1" +ansi-underline@^0.1.1: + version "0.1.1" + resolved "https://registry.yarnpkg.com/ansi-underline/-/ansi-underline-0.1.1.tgz#dfc920f4c97b5977ea162df8ffb988308aaa71a4" + integrity sha1-38kg9Ml7WXfqFi34/7mIMIqqcaQ= + dependencies: + ansi-wrap "0.1.0" + +ansi-white@^0.1.1: + version "0.1.1" + resolved "https://registry.yarnpkg.com/ansi-white/-/ansi-white-0.1.1.tgz#9c77b7c193c5ee992e6011d36ec4c921b4578944" + integrity sha1-nHe3wZPF7pkuYBHTbsTJIbRXiUQ= + dependencies: + ansi-wrap "0.1.0" + +ansi-wrap@0.1.0: + version "0.1.0" + resolved "https://registry.yarnpkg.com/ansi-wrap/-/ansi-wrap-0.1.0.tgz#a82250ddb0015e9a27ca82e82ea603bbfa45efaf" + integrity sha1-qCJQ3bABXponyoLoLqYDu/pF768= + +ansi-yellow@^0.1.1: + version "0.1.1" + resolved "https://registry.yarnpkg.com/ansi-yellow/-/ansi-yellow-0.1.1.tgz#cb9356f2f46c732f0e3199e6102955a77da83c1d" + integrity sha1-y5NW8vRscy8OMZnmEClVp32oPB0= + dependencies: + ansi-wrap "0.1.0" + any-observable@^0.3.0: version "0.3.0" resolved "https://registry.yarnpkg.com/any-observable/-/any-observable-0.3.0.tgz#af933475e5806a67d0d7df090dd5e8bef65d119b" @@ -1567,7 +2035,7 @@ anymatch@^2.0.0: micromatch "^3.1.4" normalize-path "^2.1.1" -anymatch@~3.1.1: +anymatch@^3.0.3, anymatch@~3.1.1: version "3.1.1" resolved "https://registry.yarnpkg.com/anymatch/-/anymatch-3.1.1.tgz#c55ecf02185e2469259399310c173ce31233b142" integrity sha512-mM8522psRCqzV+6LhomX5wgp25YVibjh8Wj23I5RPkPppSVSjyKD2A2mBJmWGa+KN7f2D6LNh9jkBCeyLktzjg== @@ -1580,7 +2048,7 @@ arch@^2.1.2: resolved "https://registry.yarnpkg.com/arch/-/arch-2.2.0.tgz#1bc47818f305764f23ab3306b0bfc086c5a29d11" integrity sha512-Of/R0wqp83cgHozfIYLbBMnej79U/SVGOOyuB3VVFv1NRM/PSFMK12x9KVtiYzJqmnU5WR2qp0Z5rHb7sWGnFQ== -argparse@^1.0.7: +argparse@^1.0.10, argparse@^1.0.7: version "1.0.10" resolved "https://registry.yarnpkg.com/argparse/-/argparse-1.0.10.tgz#bcd6791ea5ae09725e17e5ad988134cd40b3d911" integrity sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg== @@ -1615,10 +2083,14 @@ arr-union@^3.1.0: resolved "https://registry.yarnpkg.com/arr-union/-/arr-union-3.1.0.tgz#e39b09aea9def866a8f206e288af63919bae39c4" integrity sha1-45sJrqne+Gao8gbiiK9jkZuuOcQ= -array-equal@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/array-equal/-/array-equal-1.0.0.tgz#8c2a5ef2472fd9ea742b04c77a75093ba2757c93" - integrity sha1-jCpe8kcv2ep0KwTHenUJO6J1fJM= +array-sort@^0.1.4: + version "0.1.4" + resolved "https://registry.yarnpkg.com/array-sort/-/array-sort-0.1.4.tgz#662855eaeb671b4188df4451b2f24a0753992b23" + integrity sha512-BNcM+RXxndPxiZ2rd76k6nyQLRZr2/B/sdi8pQ+Joafr5AH279L40dfokSUTp8O+AaqYjXWhblBWa2st2nc4fQ== + dependencies: + default-compare "^1.0.0" + get-value "^2.0.6" + kind-of "^5.0.2" array-union@^2.1.0: version "2.1.0" @@ -1657,11 +2129,6 @@ assign-symbols@^1.0.0: resolved "https://registry.yarnpkg.com/assign-symbols/-/assign-symbols-1.0.0.tgz#59667f41fadd4f20ccbc2bb96b8d4f7f78ec0367" integrity sha1-WWZ/QfrdTyDMvCu5a41Pf3jsA2c= -astral-regex@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/astral-regex/-/astral-regex-1.0.0.tgz#6c8c3fb827dd43ee3918f27b82782ab7658a6fd9" - integrity sha512-+Ryf6g3BKoRc7jfp7ad8tM4TtMiaWvbF/1/sQcZPkkS7ag3D5nMBCe2UfOTONtAkaG0tO0ij3C5Lwmf1EiyjHg== - async-limiter@~1.0.0: version "1.0.1" resolved "https://registry.yarnpkg.com/async-limiter/-/async-limiter-1.0.1.tgz#dd379e94f0db8310b08291f9d64c3209766617fd" @@ -1687,6 +2154,13 @@ atob@^2.1.2: resolved "https://registry.yarnpkg.com/atob/-/atob-2.1.2.tgz#6d9517eb9e030d2436666651e86bd9f6f13533c9" integrity sha512-Wm6ukoaOGJi/73p/cl2GvLjTI5JM1k/O14isD73YML8StrH/7/lRFgmg8nICZgD3bZZvjwCGxtMOD3wWNAu8cg== +autolinker@~0.28.0: + version "0.28.1" + resolved "https://registry.yarnpkg.com/autolinker/-/autolinker-0.28.1.tgz#0652b491881879f0775dace0cdca3233942a4e47" + integrity sha1-BlK0kYgYefB3XazgzcoyM5QqTkc= + dependencies: + gulp-header "^1.7.1" + aws-sign2@~0.7.0: version "0.7.0" resolved "https://registry.yarnpkg.com/aws-sign2/-/aws-sign2-0.7.0.tgz#b46e890934a9591f2d2f6f86d7e6a9f1b3fe76a8" @@ -1704,18 +2178,19 @@ axios@^0.21.1: dependencies: follow-redirects "^1.10.0" -babel-jest@^24.8.0, babel-jest@^24.9.0: - version "24.9.0" - resolved "https://registry.yarnpkg.com/babel-jest/-/babel-jest-24.9.0.tgz#3fc327cb8467b89d14d7bc70e315104a783ccd54" - integrity sha512-ntuddfyiN+EhMw58PTNL1ph4C9rECiQXjI4nMMBKBaNjXvqLdkXpPRcMSr4iyBrJg/+wz9brFUD6RhOAT6r4Iw== +babel-jest@^26.6.3: + version "26.6.3" + resolved "https://registry.yarnpkg.com/babel-jest/-/babel-jest-26.6.3.tgz#d87d25cb0037577a0c89f82e5755c5d293c01056" + integrity sha512-pl4Q+GAVOHwvjrck6jKjvmGhnO3jHX/xuB9d27f+EJZ/6k+6nMuPjorrYp7s++bKKdANwzElBWnLWaObvTnaZA== dependencies: - "@jest/transform" "^24.9.0" - "@jest/types" "^24.9.0" - "@types/babel__core" "^7.1.0" - babel-plugin-istanbul "^5.1.0" - babel-preset-jest "^24.9.0" - chalk "^2.4.2" - slash "^2.0.0" + "@jest/transform" "^26.6.2" + "@jest/types" "^26.6.2" + "@types/babel__core" "^7.1.7" + babel-plugin-istanbul "^6.0.0" + babel-preset-jest "^26.6.2" + chalk "^4.0.0" + graceful-fs "^4.2.4" + slash "^3.0.0" babel-plugin-dynamic-import-node@^2.3.3: version "2.3.3" @@ -1724,30 +2199,52 @@ babel-plugin-dynamic-import-node@^2.3.3: dependencies: object.assign "^4.1.0" -babel-plugin-istanbul@^5.1.0: - version "5.2.0" - resolved "https://registry.yarnpkg.com/babel-plugin-istanbul/-/babel-plugin-istanbul-5.2.0.tgz#df4ade83d897a92df069c4d9a25cf2671293c854" - integrity sha512-5LphC0USA8t4i1zCtjbbNb6jJj/9+X6P37Qfirc/70EQ34xKlMW+a1RHGwxGI+SwWpNwZ27HqvzAobeqaXwiZw== +babel-plugin-istanbul@^6.0.0: + version "6.0.0" + resolved "https://registry.yarnpkg.com/babel-plugin-istanbul/-/babel-plugin-istanbul-6.0.0.tgz#e159ccdc9af95e0b570c75b4573b7c34d671d765" + integrity sha512-AF55rZXpe7trmEylbaE1Gv54wn6rwU03aptvRoVIGP8YykoSxqdVLV1TfwflBCE/QtHmqtP8SWlTENqbK8GCSQ== dependencies: "@babel/helper-plugin-utils" "^7.0.0" - find-up "^3.0.0" - istanbul-lib-instrument "^3.3.0" - test-exclude "^5.2.3" + "@istanbuljs/load-nyc-config" "^1.0.0" + "@istanbuljs/schema" "^0.1.2" + istanbul-lib-instrument "^4.0.0" + test-exclude "^6.0.0" -babel-plugin-jest-hoist@^24.9.0: - version "24.9.0" - resolved "https://registry.yarnpkg.com/babel-plugin-jest-hoist/-/babel-plugin-jest-hoist-24.9.0.tgz#4f837091eb407e01447c8843cbec546d0002d756" - integrity sha512-2EMA2P8Vp7lG0RAzr4HXqtYwacfMErOuv1U3wrvxHX6rD1sV6xS3WXG3r8TRQ2r6w8OhvSdWt+z41hQNwNm3Xw== +babel-plugin-jest-hoist@^26.6.2: + version "26.6.2" + resolved "https://registry.yarnpkg.com/babel-plugin-jest-hoist/-/babel-plugin-jest-hoist-26.6.2.tgz#8185bd030348d254c6d7dd974355e6a28b21e62d" + integrity sha512-PO9t0697lNTmcEHH69mdtYiOIkkOlj9fySqfO3K1eCcdISevLAE0xY59VLLUj0SoiPiTX/JU2CYFpILydUa5Lw== dependencies: + "@babel/template" "^7.3.3" + "@babel/types" "^7.3.3" + "@types/babel__core" "^7.0.0" "@types/babel__traverse" "^7.0.6" -babel-preset-jest@^24.9.0: - version "24.9.0" - resolved "https://registry.yarnpkg.com/babel-preset-jest/-/babel-preset-jest-24.9.0.tgz#192b521e2217fb1d1f67cf73f70c336650ad3cdc" - integrity sha512-izTUuhE4TMfTRPF92fFwD2QfdXaZW08qvWTFCI51V8rW5x00UuPgc3ajRoWofXOuxjfcOM5zzSYsQS3H8KGCAg== +babel-preset-current-node-syntax@^1.0.0: + version "1.0.1" + resolved "https://registry.yarnpkg.com/babel-preset-current-node-syntax/-/babel-preset-current-node-syntax-1.0.1.tgz#b4399239b89b2a011f9ddbe3e4f401fc40cff73b" + integrity sha512-M7LQ0bxarkxQoN+vz5aJPsLBn77n8QgTFmo8WK0/44auK2xlCXrYcUxHFxgU7qW5Yzw/CjmLRK2uJzaCd7LvqQ== dependencies: - "@babel/plugin-syntax-object-rest-spread" "^7.0.0" - babel-plugin-jest-hoist "^24.9.0" + "@babel/plugin-syntax-async-generators" "^7.8.4" + "@babel/plugin-syntax-bigint" "^7.8.3" + "@babel/plugin-syntax-class-properties" "^7.8.3" + "@babel/plugin-syntax-import-meta" "^7.8.3" + "@babel/plugin-syntax-json-strings" "^7.8.3" + "@babel/plugin-syntax-logical-assignment-operators" "^7.8.3" + "@babel/plugin-syntax-nullish-coalescing-operator" "^7.8.3" + "@babel/plugin-syntax-numeric-separator" "^7.8.3" + "@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.8.3" + +babel-preset-jest@^26.6.2: + version "26.6.2" + resolved "https://registry.yarnpkg.com/babel-preset-jest/-/babel-preset-jest-26.6.2.tgz#747872b1171df032252426586881d62d31798fee" + integrity sha512-YvdtlVm9t3k777c5NPQIv6cxFFFapys25HiUmuSgHwIZhfifweR5c5Sf5nwE3MAbfu327CYSvps8Yx6ANLyleQ== + dependencies: + babel-plugin-jest-hoist "^26.6.2" + babel-preset-current-node-syntax "^1.0.0" balanced-match@^1.0.0: version "1.0.0" @@ -1779,13 +2276,6 @@ binary-extensions@^2.0.0: resolved "https://registry.yarnpkg.com/binary-extensions/-/binary-extensions-2.2.0.tgz#75f502eeaf9ffde42fc98829645be4ea76bd9e2d" integrity sha512-jDctJ/IVQbZoJykoeHbhXpOlNBqGNcwXJKJog42E5HDPUwQTSdjCHdihjj0DlnheQ7blbT6dHOafNAiS8ooQKA== -bindings@^1.5.0: - version "1.5.0" - resolved "https://registry.yarnpkg.com/bindings/-/bindings-1.5.0.tgz#10353c9e945334bc0511a6d90b38fbc7c9c504df" - integrity sha512-p2q/t/mhvuOj/UeLlV6566GD/guowlr0hHxClI0W9m7MWYkL1F0hLo+0Aexs9HSPCtR1SXQ0TD3MMKrXZajbiQ== - dependencies: - file-uri-to-path "1.0.0" - bl@~0.8.1: version "0.8.2" resolved "https://registry.yarnpkg.com/bl/-/bl-0.8.2.tgz#c9b6bca08d1bc2ea00fc8afb4f1a5fd1e1c66e4e" @@ -1854,13 +2344,6 @@ browser-process-hrtime@^1.0.0: resolved "https://registry.yarnpkg.com/browser-process-hrtime/-/browser-process-hrtime-1.0.0.tgz#3c9b4b7d782c8121e56f10106d84c0d0ffc94626" integrity sha512-9o5UecI3GhkpM6DrXr69PblIuWxPKk9Y0jHBRhdocZ2y7YECBFCsHm79Pr3OyR2AvjhDkabFJaDJMYRazHgsow== -browser-resolve@^1.11.3: - version "1.11.3" - resolved "https://registry.yarnpkg.com/browser-resolve/-/browser-resolve-1.11.3.tgz#9b7cbb3d0f510e4cb86bdbd796124d28b5890af6" - integrity sha512-exDi1BYWB/6raKHmDTCicQfTkqwN5fioMFV4j8BsfMU4R2DK/QfZfK7kOVkmWCNANf0snkBzqGqAJBao9gZMdQ== - dependencies: - resolve "1.1.7" - browserify-aes@^1.0.0, browserify-aes@^1.0.4: version "1.2.0" resolved "https://registry.yarnpkg.com/browserify-aes/-/browserify-aes-1.2.0.tgz#326734642f403dabc3003209853bb70ad428ef48" @@ -2020,6 +2503,11 @@ camelcase@^5.0.0, camelcase@^5.3.1: resolved "https://registry.yarnpkg.com/camelcase/-/camelcase-5.3.1.tgz#e3c9b31569e106811df242f715725a1f4c494320" integrity sha512-L28STB170nwWS63UjtlEOE3dldQApaJXZkOI1uMFfzf3rRuPegHaHesyee+YxQ+W6SvRDQV6UrdOdRiR153wJg== +camelcase@^6.0.0: + version "6.2.0" + resolved "https://registry.yarnpkg.com/camelcase/-/camelcase-6.2.0.tgz#924af881c9d525ac9d87f40d964e5cea982a1809" + integrity sha512-c7wVvbw3f37nuobQNtgsgG9POC9qMbNuMQmTCqZv23b6MIz0fcYpBiOlv9gEN/hdLdnZTDQhg6e9Dq5M1vKvfg== + caniuse-lite@^1.0.30001181: version "1.0.30001189" resolved "https://registry.yarnpkg.com/caniuse-lite/-/caniuse-lite-1.0.30001189.tgz#f8547299b9db78d3882b0dea1cae891fed1651e8" @@ -2052,7 +2540,7 @@ chalk@^1.0.0, chalk@^1.1.3: strip-ansi "^3.0.0" supports-color "^2.0.0" -chalk@^2.0.0, chalk@^2.0.1, chalk@^2.4.1, chalk@^2.4.2: +chalk@^2.0.0, chalk@^2.4.1, chalk@^2.4.2: version "2.4.2" resolved "https://registry.yarnpkg.com/chalk/-/chalk-2.4.2.tgz#cd42541677a54333cf541a49108c1432b44c9424" integrity sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ== @@ -2077,6 +2565,11 @@ chalk@^4.0.0, chalk@^4.1.0: ansi-styles "^4.1.0" supports-color "^7.1.0" +char-regex@^1.0.2: + version "1.0.2" + resolved "https://registry.yarnpkg.com/char-regex/-/char-regex-1.0.2.tgz#d744358226217f981ed58f479b1d6bcc29545dcf" + integrity sha512-kWWXztvZ5SBQV+eRgKFeh8q5sLuZY2+8WUIzlxWVTg+oGwY14qylx1KbKzHd8P6ZYkAg0xyIDU9JMHhyJMZ1jw== + cheap-watch@^1.0.2: version "1.0.3" resolved "https://registry.yarnpkg.com/cheap-watch/-/cheap-watch-1.0.3.tgz#3c4265718bcf8f1ae08f5e450f9f4693432e028e" @@ -2115,6 +2608,11 @@ cipher-base@^1.0.0, cipher-base@^1.0.1, cipher-base@^1.0.3: inherits "^2.0.1" safe-buffer "^5.0.1" +cjs-module-lexer@^0.6.0: + version "0.6.0" + resolved "https://registry.yarnpkg.com/cjs-module-lexer/-/cjs-module-lexer-0.6.0.tgz#4186fcca0eae175970aee870b9fe2d6cf8d5655f" + integrity sha512-uc2Vix1frTfnuzxxu1Hp4ktSvM3QaI4oXl4ZUqL1wjTu/BGki9TrCWoqLTg/drR1KwAEarXuRFCG2Svr1GxPFw== + class-utils@^0.3.5: version "0.3.6" resolved "https://registry.yarnpkg.com/class-utils/-/class-utils-0.3.6.tgz#f93369ae8b9a7ce02fd41faad0ca83033190c463" @@ -2164,14 +2662,14 @@ cli-truncate@^0.2.1: slice-ansi "0.0.4" string-width "^1.0.1" -cliui@^5.0.0: - version "5.0.0" - resolved "https://registry.yarnpkg.com/cliui/-/cliui-5.0.0.tgz#deefcfdb2e800784aa34f46fa08e06851c7bbbc5" - integrity sha512-PYeGSEmmHM6zvoef2w8TPzlrnNpXIjTipYK780YswmIP9vjxmd6Y2a3CB2Ks6/AU8NHjZugXvo8w3oWM2qnwXA== +cliui@^6.0.0: + version "6.0.0" + resolved "https://registry.yarnpkg.com/cliui/-/cliui-6.0.0.tgz#511d702c0c4e41ca156d7d0e96021f23e13225b1" + integrity sha512-t6wbgtoCXvAzst7QgXxJYqPt0usEfbgQdftEPbLL/cvv6HPE5VgvqCuAIDR0NgU52ds6rFwqrgakNLrHEjCbrQ== dependencies: - string-width "^3.1.0" - strip-ansi "^5.2.0" - wrap-ansi "^5.1.0" + string-width "^4.2.0" + strip-ansi "^6.0.0" + wrap-ansi "^6.2.0" clone@^2.1.1: version "2.1.2" @@ -2198,6 +2696,11 @@ codemirror@^5.59.0: resolved "https://registry.yarnpkg.com/codemirror/-/codemirror-5.59.2.tgz#ee674d3a4a8d241af38d52afc482625ba7393922" integrity sha512-/D5PcsKyzthtSy2NNKCyJi3b+htRkoKv3idswR/tR6UAvMNKA7SrmyZy6fOONJxSRs1JlUWEDAbxqfdArbK8iA== +collect-v8-coverage@^1.0.0: + version "1.0.1" + resolved "https://registry.yarnpkg.com/collect-v8-coverage/-/collect-v8-coverage-1.0.1.tgz#cc2c8e94fc18bbdffe64d6534570c8a673b27f59" + integrity sha512-iBPtljfCNcTKNAto0KEtDfZ3qzjJvqE3aTGZsbhjSBlorqpXJlaWWtPO35D+ZImoC3KWejX64o+yPGxhWSTzfg== + collection-visit@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/collection-visit/-/collection-visit-1.0.0.tgz#4bc0373c164bc3291b4d368c829cf1a80a59dca0" @@ -2297,12 +2800,19 @@ concat-stream@^1.4.4, concat-stream@^1.6.2: readable-stream "^2.2.2" typedarray "^0.0.6" +concat-with-sourcemaps@*: + version "1.1.0" + resolved "https://registry.yarnpkg.com/concat-with-sourcemaps/-/concat-with-sourcemaps-1.1.0.tgz#d4ea93f05ae25790951b99e7b3b09e3908a4082e" + integrity sha512-4gEjHJFT9e+2W/77h/DS5SGUgwDaOwprX8L/gl5+3ixnzkVJJsZWDSelmN3Oilw3LNDZjZV0yqH1hLG3k6nghg== + dependencies: + source-map "^0.6.1" + console-clear@^1.1.0: version "1.1.1" resolved "https://registry.yarnpkg.com/console-clear/-/console-clear-1.1.1.tgz#995e20cbfbf14dd792b672cde387bd128d674bf7" integrity sha512-pMD+MVR538ipqkG5JXeOEbKWS5um1H4LUUccUQG68qpeqBYbzYy79Gh55jkd2TtPdRfUaLWdv6LPP//5Zt0aPQ== -convert-source-map@^1.4.0, convert-source-map@^1.7.0: +convert-source-map@^1.4.0, convert-source-map@^1.6.0, convert-source-map@^1.7.0: version "1.7.0" resolved "https://registry.yarnpkg.com/convert-source-map/-/convert-source-map-1.7.0.tgz#17a2cb882d7f77d3490585e2ce6c524424a3a442" integrity sha512-4FJkXzKXEDB1snCFZlLP4gpC3JILicCpGbzG9f9G7tGqGCzETQ2hWPrcinA9oU4wtf2biUaEH5065UnMeR33oA== @@ -2425,24 +2935,17 @@ css@^3.0.0: source-map "^0.6.1" source-map-resolve "^0.6.0" -cssom@0.3.x, "cssom@>= 0.3.2 < 0.4.0", cssom@~0.3.6: - version "0.3.8" - resolved "https://registry.yarnpkg.com/cssom/-/cssom-0.3.8.tgz#9f1276f5b2b463f2114d3f2c75250af8c1a36f4a" - integrity sha512-b0tGHbfegbhPJpxpiBPU2sCkigAqtM9O121le6bbOlgyV+NyGyCmVfJ6QW9eRjz8CpNfWEOYBIMIGRYkLwsIYg== - cssom@^0.4.4: version "0.4.4" resolved "https://registry.yarnpkg.com/cssom/-/cssom-0.4.4.tgz#5a66cf93d2d0b661d80bf6a44fb65f5c2e4e0a10" integrity sha512-p3pvU7r1MyyqbTk+WbNJIgJjG2VmTIaB10rI93LzVPrmDJKkzKYMtxxyAvQXR/NS6otuzveI7+7BBq3SjBS2mw== -cssstyle@^1.0.0: - version "1.4.0" - resolved "https://registry.yarnpkg.com/cssstyle/-/cssstyle-1.4.0.tgz#9d31328229d3c565c61e586b02041a28fccdccf1" - integrity sha512-GBrLZYZ4X4x6/QEoBnIrqb8B/f5l4+8me2dkom/j1Gtbxy0kBv6OGzKuAsGM75bkGwGAFkt56Iwg28S3XTZgSA== - dependencies: - cssom "0.3.x" +cssom@~0.3.6: + version "0.3.8" + resolved "https://registry.yarnpkg.com/cssom/-/cssom-0.3.8.tgz#9f1276f5b2b463f2114d3f2c75250af8c1a36f4a" + integrity sha512-b0tGHbfegbhPJpxpiBPU2sCkigAqtM9O121le6bbOlgyV+NyGyCmVfJ6QW9eRjz8CpNfWEOYBIMIGRYkLwsIYg== -cssstyle@^2.2.0: +cssstyle@^2.2.0, cssstyle@^2.3.0: version "2.3.0" resolved "https://registry.yarnpkg.com/cssstyle/-/cssstyle-2.3.0.tgz#ff665a0ddbdc31864b09647f34163443d90b0852" integrity sha512-AZL67abkUzIuvcHqk7c09cezpGNcxUxU4Ioi/05xHk4DQeTkWmGYftIE6ctU6AEt+Gn4n1lDStOtj7FKycP71A== @@ -2513,15 +3016,6 @@ dashdash@^1.12.0: dependencies: assert-plus "^1.0.0" -data-urls@^1.0.0: - version "1.1.0" - resolved "https://registry.yarnpkg.com/data-urls/-/data-urls-1.1.0.tgz#15ee0582baa5e22bb59c77140da8f9c76963bbfe" - integrity sha512-YTWYI9se1P55u58gL5GkQHW4P6VJBJ5iBT+B5a7i2Tjadhv52paJG0qHX4A0OR6/t52odI64KP2YvFpkDOi3eQ== - dependencies: - abab "^2.0.0" - whatwg-mimetype "^2.2.0" - whatwg-url "^7.0.0" - data-urls@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/data-urls/-/data-urls-2.0.0.tgz#156485a72963a970f5d5821aaf642bef2bf2db9b" @@ -2536,6 +3030,18 @@ date-fns@^1.27.2: resolved "https://registry.yarnpkg.com/date-fns/-/date-fns-1.30.1.tgz#2e71bf0b119153dbb4cc4e88d9ea5acfb50dc05c" integrity sha512-hBSVCvSmWC+QypYObzwGOd9wqdDpOt+0wl0KbU+R+uuZBS1jN8VsD1ss3irQDknRj5NvxiTF6oj/nDRnN/UQNw== +date.js@^0.3.1: + version "0.3.3" + resolved "https://registry.yarnpkg.com/date.js/-/date.js-0.3.3.tgz#ef1e92332f507a638795dbb985e951882e50bbda" + integrity sha512-HgigOS3h3k6HnW011nAb43c5xx5rBXk8P2v/WIT9Zv4koIaVXiH2BURguI78VVp+5Qc076T7OR378JViCnZtBw== + dependencies: + debug "~3.1.0" + +dayjs@^1.10.4: + version "1.10.4" + resolved "https://registry.yarnpkg.com/dayjs/-/dayjs-1.10.4.tgz#8e544a9b8683f61783f570980a8a80eaf54ab1e2" + integrity sha512-RI/Hh4kqRc1UKLOAf/T5zdMMX5DQIlDxwUe3wSyMMnEbGunnpENCdbUgM+dW7kXidZqCttBrmw7BhN4TMddkCw== + debug@4.3.1, debug@^4.1.0, debug@^4.1.1: version "4.3.1" resolved "https://registry.yarnpkg.com/debug/-/debug-4.3.1.tgz#f0d229c505e0c6d8c49ac553d1b13dc183f6b2ee" @@ -2557,12 +3063,19 @@ debug@^3.1.0: dependencies: ms "^2.1.1" +debug@~3.1.0: + version "3.1.0" + resolved "https://registry.yarnpkg.com/debug/-/debug-3.1.0.tgz#5bb5a0672628b64149566ba16819e61518c67261" + integrity sha512-OX8XqP7/1a9cqkxYw2yXss15f26NKWBpDXQd0/uK/KPqdQhxbPa994hnzjcE2VqQpDslf55723cKPUOGSmMY3g== + dependencies: + ms "2.0.0" + decamelize@^1.2.0: version "1.2.0" resolved "https://registry.yarnpkg.com/decamelize/-/decamelize-1.2.0.tgz#f6534d15148269b20352e7bee26f501f9a191290" integrity sha1-9lNNFRSCabIDUue+4m9QH5oZEpA= -decimal.js@^10.2.0: +decimal.js@^10.2.0, decimal.js@^10.2.1: version "10.2.1" resolved "https://registry.yarnpkg.com/decimal.js/-/decimal.js-10.2.1.tgz#238ae7b0f0c793d3e3cea410108b35a2c01426a3" integrity sha512-KaL7+6Fw6i5A2XSnsbhm/6B+NuEA7TZ4vqxnd5tXz9sbKtrN9Srj8ab4vKVdK8YAqZO9P1kg45Y6YLoduPf+kw== @@ -2594,6 +3107,13 @@ deepmerge@^4.2.2: resolved "https://registry.yarnpkg.com/deepmerge/-/deepmerge-4.2.2.tgz#44d2ea3679b8f4d4ffba33f03d865fc1e7bf4955" integrity sha512-FJ3UgI4gIl+PHZm53knsuSFpE+nESMr7M4v9QcgB7S63Kj/6WqMiFQJpBBYz1Pt+66bZpP3Q7Lye0Oo9MPKEdg== +default-compare@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/default-compare/-/default-compare-1.0.0.tgz#cb61131844ad84d84788fb68fd01681ca7781a2f" + integrity sha512-QWfXlM0EkAbqOCbD/6HjdwT19j7WCkMyiRhWilc4H9/5h/RzTF9gv5LYh1+CmDV5d1rki6KAWLtQale0xt20eQ== + dependencies: + kind-of "^5.0.2" + deferred-leveldown@~0.2.0: version "0.2.0" resolved "https://registry.yarnpkg.com/deferred-leveldown/-/deferred-leveldown-0.2.0.tgz#2cef1f111e1c57870d8bbb8af2650e587cd2f5b4" @@ -2643,15 +3163,10 @@ des.js@^1.0.0: inherits "^2.0.1" minimalistic-assert "^1.0.0" -detect-newline@^2.1.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/detect-newline/-/detect-newline-2.1.0.tgz#f41f1c10be4b00e87b5f13da680759f2c5bfd3e2" - integrity sha1-9B8cEL5LAOh7XxPaaAdZ8sW/0+I= - -diff-sequences@^24.9.0: - version "24.9.0" - resolved "https://registry.yarnpkg.com/diff-sequences/-/diff-sequences-24.9.0.tgz#5715d6244e2aa65f48bba0bc972db0b0b11e95b5" - integrity sha512-Dj6Wk3tWyTE+Fo1rW8v0Xhwk80um6yFYKbuAxc9c3EZxIHFDYwbi34Uk42u1CdnIiVorvt4RmlSDjIPyzGC2ew== +detect-newline@^3.0.0: + version "3.1.0" + resolved "https://registry.yarnpkg.com/detect-newline/-/detect-newline-3.1.0.tgz#576f5dfc63ae1a192ff192d8ad3af6308991b651" + integrity sha512-TLz+x/vEXm/Y7P7wn1EJFNLxYpUD4TgMosxY6fAVJUnJMbupHBOncxyWUG9OpTaH9EBD7uFI5LfEgmMOc54DsA== diff-sequences@^26.6.2: version "26.6.2" @@ -2679,13 +3194,6 @@ dom-accessibility-api@^0.5.4: resolved "https://registry.yarnpkg.com/dom-accessibility-api/-/dom-accessibility-api-0.5.4.tgz#b06d059cdd4a4ad9a79275f9d414a5c126241166" integrity sha512-TvrjBckDy2c6v6RLxPv5QXOnU+SmF9nBII5621Ve5fu6Z/BDrENurBEvlC1f44lKEUVqOpK4w9E5Idc5/EgkLQ== -domexception@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/domexception/-/domexception-1.0.1.tgz#937442644ca6a31261ef36e3ec677fe805582c90" - integrity sha512-raigMkn7CJNNo6Ihro1fzG7wr3fHuYVytzquZKX5n0yizGsTcYgzdIUwj1X9pK0VvjeihV+XiclP+DjwbsSKug== - dependencies: - webidl-conversions "^4.0.2" - domexception@^2.0.1: version "2.0.1" resolved "https://registry.yarnpkg.com/domexception/-/domexception-2.0.1.tgz#fb44aefba793e1574b0af6aed2801d057529f304" @@ -2744,10 +3252,10 @@ elliptic@^6.5.3: minimalistic-assert "^1.0.1" minimalistic-crypto-utils "^1.0.1" -emoji-regex@^7.0.1: - version "7.0.3" - resolved "https://registry.yarnpkg.com/emoji-regex/-/emoji-regex-7.0.3.tgz#933a04052860c85e83c122479c4748a8e4c72156" - integrity sha512-CwBLREIQ7LvYFB0WyRvwhq5N5qPhc6PMjD6bYggFlI5YyDgl+0vxq5VHbMOFqLg7hfWzmu8T5Z1QofhmTIhItA== +emittery@^0.7.1: + version "0.7.2" + resolved "https://registry.yarnpkg.com/emittery/-/emittery-0.7.2.tgz#25595908e13af0f5674ab419396e2fb394cdfa82" + integrity sha512-A8OG5SR/ij3SsJdWDJdkkSYUjQdCUx6APQXem0SaEePBSRg4eymGYwBkKo1Y6DU+af/Jn2dBQqDBvjnr9Vi8nQ== emoji-regex@^8.0.0: version "8.0.0" @@ -2761,6 +3269,11 @@ end-of-stream@^1.1.0: dependencies: once "^1.4.0" +ent@^2.2.0: + version "2.2.0" + resolved "https://registry.yarnpkg.com/ent/-/ent-2.2.0.tgz#e964219325a21d05f44466a2f686ed6ce5f5dd1d" + integrity sha1-6WQhkyWiHQX0RGai9obtbOX13R0= + entities@~2.1.0: version "2.1.0" resolved "https://registry.yarnpkg.com/entities/-/entities-2.1.0.tgz#992d3129cf7df6870b96c57858c249a120f8b8b5" @@ -2780,34 +3293,10 @@ error-ex@^1.3.1: dependencies: is-arrayish "^0.2.1" -es-abstract@^1.18.0-next.1: - version "1.18.0-next.2" - resolved "https://registry.yarnpkg.com/es-abstract/-/es-abstract-1.18.0-next.2.tgz#088101a55f0541f595e7e057199e27ddc8f3a5c2" - integrity sha512-Ih4ZMFHEtZupnUh6497zEL4y2+w8+1ljnCyaTa+adcoafI1GOvMwFlDjBLfWR7y9VLfrjRJe9ocuHY1PSR9jjw== - dependencies: - call-bind "^1.0.2" - es-to-primitive "^1.2.1" - function-bind "^1.1.1" - get-intrinsic "^1.0.2" - has "^1.0.3" - has-symbols "^1.0.1" - is-callable "^1.2.2" - is-negative-zero "^2.0.1" - is-regex "^1.1.1" - object-inspect "^1.9.0" - object-keys "^1.1.1" - object.assign "^4.1.2" - string.prototype.trimend "^1.0.3" - string.prototype.trimstart "^1.0.3" - -es-to-primitive@^1.2.1: - version "1.2.1" - resolved "https://registry.yarnpkg.com/es-to-primitive/-/es-to-primitive-1.2.1.tgz#e55cd4c9cdc188bcefb03b366c736323fc5c898a" - integrity sha512-QCOllgZJtaUo9miYBcLChTUaHNjJF3PYs1VidD7AwiEj1kYxKeQTctLAezAOH5ZKRH0g2IgPn6KwB4IT8iRpvA== - dependencies: - is-callable "^1.1.4" - is-date-object "^1.0.1" - is-symbol "^1.0.2" +error-symbol@^0.1.0: + version "0.1.0" + resolved "https://registry.yarnpkg.com/error-symbol/-/error-symbol-0.1.0.tgz#0a4dae37d600d15a29ba453d8ef920f1844333f6" + integrity sha1-Ck2uN9YA0VopukU9jvkg8YRDM/Y= escalade@^3.1.1: version "3.1.1" @@ -2824,7 +3313,7 @@ escape-string-regexp@^2.0.0: resolved "https://registry.yarnpkg.com/escape-string-regexp/-/escape-string-regexp-2.0.0.tgz#a30304e99daa32e23b2fd20f51babd07cffca344" integrity sha512-UpzcLCXolUWcNu5HtVMHYdXJjArjsF9C0aNnquZYY4uW/Vu0miy5YoWvbV345HauVvcAUnpRuhMMcqTcGOY2+w== -escodegen@^1.14.1, escodegen@^1.9.1: +escodegen@^1.14.1: version "1.14.3" resolved "https://registry.yarnpkg.com/escodegen/-/escodegen-1.14.3.tgz#4e7b81fba61581dc97582ed78cab7f0e8d63f503" integrity sha512-qFcX0XJkdg+PB3xjZZG/wKSuT1PnQWx57+TVSjIMmILd2yC/6ByYElPwJnslDsuWuSAp4AwJGumarAAmJch5Kw== @@ -2836,6 +3325,18 @@ escodegen@^1.14.1, escodegen@^1.9.1: optionalDependencies: source-map "~0.6.1" +escodegen@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/escodegen/-/escodegen-2.0.0.tgz#5e32b12833e8aa8fa35e1bf0befa89380484c7dd" + integrity sha512-mmHKys/C8BFUGI+MAWNcSYoORYLMdPzjrknd2Vc+bUsjN5bXcr8EhrNB+UTqfL1y3I9c4fw2ihgtMPQLBRiQxw== + dependencies: + esprima "^4.0.1" + estraverse "^5.2.0" + esutils "^2.0.2" + optionator "^0.8.1" + optionalDependencies: + source-map "~0.6.1" + eslint-plugin-cypress@^2.11.1: version "2.11.2" resolved "https://registry.yarnpkg.com/eslint-plugin-cypress/-/eslint-plugin-cypress-2.11.2.tgz#a8f3fe7ec840f55e4cea37671f93293e6c3e76a0" @@ -2853,6 +3354,11 @@ estraverse@^4.2.0: resolved "https://registry.yarnpkg.com/estraverse/-/estraverse-4.3.0.tgz#398ad3f3c5a24948be7725e83d11a7de28cdbd1d" integrity sha512-39nnKffWz8xN1BU/2c79n9nB9HDzo0niYUqx6xyqUnyoAnQyyWpOTdZEeiCch8BBu515t4wp9ZmgVfVhn9EBpw== +estraverse@^5.2.0: + version "5.2.0" + resolved "https://registry.yarnpkg.com/estraverse/-/estraverse-5.2.0.tgz#307df42547e6cc7324d3cf03c155d5cdb8c53880" + integrity sha512-BxbNGGNm0RyRYvUdHpIwv9IWzeM9XClbOxwoATuFdOE7ZE6wHL+HQ5T8hoPM+zHvmKzzsEqhgy0GrQ5X13afiQ== + estree-walker@^0.2.1: version "0.2.1" resolved "https://registry.yarnpkg.com/estree-walker/-/estree-walker-0.2.1.tgz#bdafe8095383d8414d5dc2ecf4c9173b6db9412e" @@ -2948,7 +3454,7 @@ execa@^1.0.0: signal-exit "^3.0.0" strip-eof "^1.0.0" -execa@^4.0.2: +execa@^4.0.0, execa@^4.0.2: version "4.1.0" resolved "https://registry.yarnpkg.com/execa/-/execa-4.1.0.tgz#4e5491ad1572f2f17a77d388c6c857135b22847a" integrity sha512-j5W0//W7f8UxAn8hXVnwG8tLwdiUy4FJLcSupCg6maBYZDpyBvTApK7KyuI4bKj8KOh1r2YH+6ucuYtJv1bTZA== @@ -2993,17 +3499,17 @@ expand-brackets@^2.1.4: snapdragon "^0.8.1" to-regex "^3.0.1" -expect@^24.9.0: - version "24.9.0" - resolved "https://registry.yarnpkg.com/expect/-/expect-24.9.0.tgz#b75165b4817074fa4a157794f46fe9f1ba15b6ca" - integrity sha512-wvVAx8XIol3Z5m9zvZXiyZOQ+sRJqNTIm6sGjdWlaZIeupQGO3WbYI+15D/AmEwZywL6wtJkbAbJtzkOfBuR0Q== +expect@^26.6.2: + version "26.6.2" + resolved "https://registry.yarnpkg.com/expect/-/expect-26.6.2.tgz#c6b996bf26bf3fe18b67b2d0f51fc981ba934417" + integrity sha512-9/hlOBkQl2l/PLHJx6JjoDF6xPKcJEsUlWKb23rKE7KzeDqUZKXKNMW27KIue5JMdBV9HgmoJPcc8HtO85t9IA== dependencies: - "@jest/types" "^24.9.0" - ansi-styles "^3.2.0" - jest-get-type "^24.9.0" - jest-matcher-utils "^24.9.0" - jest-message-util "^24.9.0" - jest-regex-util "^24.9.0" + "@jest/types" "^26.6.2" + ansi-styles "^4.0.0" + jest-get-type "^26.3.0" + jest-matcher-utils "^26.6.2" + jest-message-util "^26.6.2" + jest-regex-util "^26.0.0" extend-shallow@^2.0.1: version "2.0.1" @@ -3059,6 +3565,13 @@ extsprintf@^1.2.0: resolved "https://registry.yarnpkg.com/extsprintf/-/extsprintf-1.4.0.tgz#e2689f8f356fad62cca65a3a91c5df5f9551692f" integrity sha1-4mifjzVvrWLMplo6kcXfX5VRaS8= +"falsey@^0.3.2": + version "0.3.2" + resolved "https://registry.yarnpkg.com/falsey/-/falsey-0.3.2.tgz#b21c90c5c34660fc192bf909575db95b6880d597" + integrity sha512-lxEuefF5MBIVDmE6XeqCdM4BWk1+vYmGZtkbKZ/VFcg6uBBw6fXNEbWmxCjDdQlFc9hy450nkiWwM3VAW6G1qg== + dependencies: + kind-of "^5.0.2" + fast-deep-equal@^3.1.1: version "3.1.3" resolved "https://registry.yarnpkg.com/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz#3a7d56b559d6cbc3eb512325244e619a65c6c525" @@ -3132,11 +3645,6 @@ figures@^2.0.0: dependencies: escape-string-regexp "^1.0.5" -file-uri-to-path@1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/file-uri-to-path/-/file-uri-to-path-1.0.0.tgz#553a7b8446ff6f684359c445f1e37a05dacc33dd" - integrity sha512-0Zt+s3L7Vf1biwWZ29aARiVYLx7iMGnEUl9x33fbB/j3jR81u/O2LbqK+Bm1CDSNDKVtJ/YjwY7TUd5SkeLQLw== - fill-range@^4.0.0: version "4.0.0" resolved "https://registry.yarnpkg.com/fill-range/-/fill-range-4.0.0.tgz#d544811d428f98eb06a63dc402d2403c328c38f7" @@ -3154,12 +3662,13 @@ fill-range@^7.0.1: dependencies: to-regex-range "^5.0.1" -find-up@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/find-up/-/find-up-3.0.0.tgz#49169f1d7993430646da61ecc5ae355c21c97b73" - integrity sha512-1yD6RmLI1XBfxugvORwlck6f75tYL+iR0jqwsOrOxMZyGYqUuDhJ0l4AXdO1iX/FTs9cBAMEk1gWSEx1kSbylg== +find-up@^4.0.0, find-up@^4.1.0: + version "4.1.0" + resolved "https://registry.yarnpkg.com/find-up/-/find-up-4.1.0.tgz#97afe7d6cdc0bc5928584b7c8d7b16e8a9aa5d19" + integrity sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw== dependencies: - locate-path "^3.0.0" + locate-path "^5.0.0" + path-exists "^4.0.0" flatpickr@^4.5.2: version "4.6.9" @@ -3176,18 +3685,18 @@ follow-redirects@^1.10.0: resolved "https://registry.yarnpkg.com/follow-redirects/-/follow-redirects-1.13.2.tgz#dd73c8effc12728ba5cf4259d760ea5fb83e3147" integrity sha512-6mPTgLxYm3r6Bkkg0vNM0HTjfGrOEtsfbhagQvbxDEsEkpNhw582upBaoRZylzen6krEmxXJgt9Ju6HiI4O7BA== -for-each@^0.3.3: - version "0.3.3" - resolved "https://registry.yarnpkg.com/for-each/-/for-each-0.3.3.tgz#69b447e88a0a5d32c3e7084f3f1710034b21376e" - integrity sha512-jqYfLp7mo9vIyQf8ykW2v7A+2N4QjeCeI5+Dz9XraiO1ign81wjiH7Fb9vSOWvQfNtmSa4H2RoQTrrXivdUZmw== - dependencies: - is-callable "^1.1.3" - -for-in@^1.0.2: +for-in@^1.0.1, for-in@^1.0.2: version "1.0.2" resolved "https://registry.yarnpkg.com/for-in/-/for-in-1.0.2.tgz#81068d295a8142ec0ac726c6e2200c30fb6d5e80" integrity sha1-gQaNKVqBQuwKxybG4iAMMPttXoA= +for-own@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/for-own/-/for-own-1.0.0.tgz#c63332f415cedc4b04dbfe70cf836494c53cb44b" + integrity sha1-xjMy9BXO3EsE2/5wz4NklMU8tEs= + dependencies: + for-in "^1.0.1" + foreach@~2.0.1: version "2.0.5" resolved "https://registry.yarnpkg.com/foreach/-/foreach-2.0.5.tgz#0bee005018aeb260d0a3af3ae658dd0136ec1b99" @@ -3219,6 +3728,11 @@ from@~0: resolved "https://registry.yarnpkg.com/from/-/from-0.1.7.tgz#83c60afc58b9c56997007ed1a768b3ab303a44fe" integrity sha1-g8YK/Fi5xWmXAH7Rp2izqzA6RP4= +fs-exists-sync@^0.1.0: + version "0.1.0" + resolved "https://registry.yarnpkg.com/fs-exists-sync/-/fs-exists-sync-0.1.0.tgz#982d6893af918e72d08dec9e8673ff2b5a8d6add" + integrity sha1-mC1ok6+RjnLQjeyehnP/K1qNat0= + fs-extra@^8.1.0: version "8.1.0" resolved "https://registry.yarnpkg.com/fs-extra/-/fs-extra-8.1.0.tgz#49d43c45a88cd9677668cb7be1b46efdb8d2e1c0" @@ -3243,15 +3757,7 @@ fs.realpath@^1.0.0: resolved "https://registry.yarnpkg.com/fs.realpath/-/fs.realpath-1.0.0.tgz#1504ad2523158caa40db4a2787cb01411994ea4f" integrity sha1-FQStJSMVjKpA20onh8sBQRmU6k8= -fsevents@^1.2.7: - version "1.2.13" - resolved "https://registry.yarnpkg.com/fsevents/-/fsevents-1.2.13.tgz#f325cb0455592428bcf11b383370ef70e3bfcc38" - integrity sha512-oWb1Z6mkHIskLzEJ/XWX0srkpkTQ7vaopMQkyaEIoq0fmtFVxOthb8cCxeT+p3ynTdkk/RZwbgG4brR5BeWECw== - dependencies: - bindings "^1.5.0" - nan "^2.12.1" - -fsevents@~2.3.1: +fsevents@^2.1.2, fsevents@~2.3.1: version "2.3.2" resolved "https://registry.yarnpkg.com/fsevents/-/fsevents-2.3.2.tgz#8a526f78b8fdf4623b709e0b975c52c24c02fd1a" integrity sha512-xiqMQR4xAeHTuB9uWm+fFRcIOgKBMiOBP+eXiyT7jsgVCq1bkVygt00oASowB7EdtpOHaaPgKt812P9ab+DDKA== @@ -3268,7 +3774,7 @@ fwd-stream@^1.0.4: dependencies: readable-stream "~1.0.26-4" -gensync@^1.0.0-beta.1: +gensync@^1.0.0-beta.1, gensync@^1.0.0-beta.2: version "1.0.0-beta.2" resolved "https://registry.yarnpkg.com/gensync/-/gensync-1.0.0-beta.2.tgz#32a6ee76c3d7f52d46b2b1ae5d93fea8580a25e0" integrity sha512-3hN7NaskYvMDLQY55gnW3NQ+mesEAepTqlg+VEbj7zzqEMBVNhzcGYYeqFo/TlYz6eQiFcp1HcsCZO+nGgS8zg== @@ -3287,6 +3793,19 @@ get-intrinsic@^1.0.2: has "^1.0.3" has-symbols "^1.0.1" +get-object@^0.2.0: + version "0.2.0" + resolved "https://registry.yarnpkg.com/get-object/-/get-object-0.2.0.tgz#d92ff7d5190c64530cda0543dac63a3d47fe8c0c" + integrity sha1-2S/31RkMZFMM2gVD2sY6PUf+jAw= + dependencies: + is-number "^2.0.2" + isobject "^0.2.0" + +get-package-type@^0.1.0: + version "0.1.0" + resolved "https://registry.yarnpkg.com/get-package-type/-/get-package-type-0.1.0.tgz#8de2d803cff44df3bc6c456e6668b36c3926e11a" + integrity sha512-pjzuKtY64GYfWizNAJ0fr9VqttZkNiK2iS430LtIHzjBEr6bX8Am2zm4sW4Ro5wjWW5cAlRL1qAMTcXbjNAO2Q== + get-port@^3.2.0: version "3.2.0" resolved "https://registry.yarnpkg.com/get-port/-/get-port-3.2.0.tgz#dd7ce7de187c06c8bf353796ac71e099f0980ebc" @@ -3332,7 +3851,7 @@ glob-parent@^5.1.0, glob-parent@~5.1.0: dependencies: is-glob "^4.0.1" -glob@^7.1.1, glob@^7.1.2, glob@^7.1.3, glob@^7.1.6: +glob@^7.1.1, glob@^7.1.2, glob@^7.1.3, glob@^7.1.4, glob@^7.1.6: version "7.1.6" resolved "https://registry.yarnpkg.com/glob/-/glob-7.1.6.tgz#141f33b81a7c2492e125594307480c46679278a6" integrity sha512-LwaxwyZ72Lk7vZINtNNrywX0ZuLyStrdDtabefZKAY5ZGJhVtgdznluResxNmPitE0SAO+O26sWTHeKSI2wMBA== @@ -3370,7 +3889,7 @@ globby@10.0.1: merge2 "^1.2.3" slash "^3.0.0" -graceful-fs@^4.1.11, graceful-fs@^4.1.15, graceful-fs@^4.1.2, graceful-fs@^4.1.6, graceful-fs@^4.2.0: +graceful-fs@^4.1.6, graceful-fs@^4.2.0, graceful-fs@^4.2.4: version "4.2.6" resolved "https://registry.yarnpkg.com/graceful-fs/-/graceful-fs-4.2.6.tgz#ff040b2b0853b23c3d31027523706f1885d76bee" integrity sha512-nTnJ528pbqxYanhpDYsi4Rd8MAeaBA67+RZ10CM1m3bTAVFEDcd5AuA4a6W5YkGZ1iNXHzZz8T6TBKLeBuNriQ== @@ -3380,6 +3899,35 @@ growly@^1.3.0: resolved "https://registry.yarnpkg.com/growly/-/growly-1.3.0.tgz#f10748cbe76af964b7c96c93c6bcc28af120c081" integrity sha1-8QdIy+dq+WS3yWyTxrzCivEgwIE= +gulp-header@^1.7.1: + version "1.8.12" + resolved "https://registry.yarnpkg.com/gulp-header/-/gulp-header-1.8.12.tgz#ad306be0066599127281c4f8786660e705080a84" + integrity sha512-lh9HLdb53sC7XIZOYzTXM4lFuXElv3EVkSDhsd7DoJBj7hm+Ni7D3qYbb+Rr8DuM8nRanBvkVO9d7askreXGnQ== + dependencies: + concat-with-sourcemaps "*" + lodash.template "^4.4.0" + through2 "^2.0.0" + +handlebars-utils@^1.0.2, handlebars-utils@^1.0.4, handlebars-utils@^1.0.6: + version "1.0.6" + resolved "https://registry.yarnpkg.com/handlebars-utils/-/handlebars-utils-1.0.6.tgz#cb9db43362479054782d86ffe10f47abc76357f9" + integrity sha512-d5mmoQXdeEqSKMtQQZ9WkiUcO1E3tPbWxluCK9hVgIDPzQa9WsKo3Lbe/sGflTe7TomHEeZaOgwIkyIr1kfzkw== + dependencies: + kind-of "^6.0.0" + typeof-article "^0.1.1" + +handlebars@^4.0.11, handlebars@^4.7.6: + version "4.7.7" + resolved "https://registry.yarnpkg.com/handlebars/-/handlebars-4.7.7.tgz#9ce33416aad02dbd6c8fafa8240d5d98004945a1" + integrity sha512-aAcXm5OAfE/8IXkcZvCepKU3VzW1/39Fb5ZuqMtgI/hT8X2YgoMvBY5dLhq/cpOvw7Lk1nK/UF71aLG/ZnVYRA== + dependencies: + minimist "^1.2.5" + neo-async "^2.6.0" + source-map "^0.6.1" + wordwrap "^1.0.0" + optionalDependencies: + uglify-js "^3.1.4" + har-schema@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/har-schema/-/har-schema-2.0.0.tgz#a94c2224ebcac04782a0d9035521f24735b7ec92" @@ -3480,6 +4028,39 @@ he@1.2.x: resolved "https://registry.yarnpkg.com/he/-/he-1.2.0.tgz#84ae65fa7eafb165fddb61566ae14baf05664f0f" integrity sha512-F/1DnUGPopORZi0ni+CvrCgHQ5FyEAHRLSApuYWMmrbSwoN2Mn/7k+Gl38gJnR7yyDZk6WLXwiGod1JOWNDKGw== +helper-date@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/helper-date/-/helper-date-1.0.1.tgz#12fedea3ad8e44a7ca4c4efb0ff4104a5120cffb" + integrity sha512-wU3VOwwTJvGr/w5rZr3cprPHO+hIhlblTJHD6aFBrKLuNbf4lAmkawd2iK3c6NbJEvY7HAmDpqjOFSI5/+Ey2w== + dependencies: + date.js "^0.3.1" + handlebars-utils "^1.0.4" + moment "^2.18.1" + +helper-markdown@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/helper-markdown/-/helper-markdown-1.0.0.tgz#ee7e9fc554675007d37eb90f7853b13ce74f3e10" + integrity sha512-AnDqMS4ejkQK0MXze7pA9TM3pu01ZY+XXsES6gEE0RmCGk5/NIfvTn0NmItfyDOjRAzyo9z6X7YHbHX4PzIvOA== + dependencies: + handlebars-utils "^1.0.2" + highlight.js "^9.12.0" + remarkable "^1.7.1" + +helper-md@^0.2.2: + version "0.2.2" + resolved "https://registry.yarnpkg.com/helper-md/-/helper-md-0.2.2.tgz#c1f59d7e55bbae23362fd8a0e971607aec69d41f" + integrity sha1-wfWdflW7riM2L9ig6XFgeuxp1B8= + dependencies: + ent "^2.2.0" + extend-shallow "^2.0.1" + fs-exists-sync "^0.1.0" + remarkable "^1.6.2" + +highlight.js@^9.12.0: + version "9.18.5" + resolved "https://registry.yarnpkg.com/highlight.js/-/highlight.js-9.18.5.tgz#d18a359867f378c138d6819edfc2a8acd5f29825" + integrity sha512-a5bFyofd/BHCX52/8i8uJkjr9DYwXIPnM/plwI6W7ezItLGqzt7X2G2nXuYSfsIJdkwwj/g9DG1LkcGJI/dDoA== + hmac-drbg@^1.0.1: version "1.0.1" resolved "https://registry.yarnpkg.com/hmac-drbg/-/hmac-drbg-1.0.1.tgz#d2745701025a6c775a6c545793ed502fc0c649a1" @@ -3494,13 +4075,6 @@ hosted-git-info@^2.1.4: resolved "https://registry.yarnpkg.com/hosted-git-info/-/hosted-git-info-2.8.8.tgz#7539bd4bc1e0e0a895815a2e0262420b12858488" integrity sha512-f/wzC2QaWBs7t9IYqB4T3sR1xviIViXJRJTWBlx2Gf3g0Xi5vI7Yy4koXQ1c9OYDGHN9sBy1DQ2AB8fqZBWhUg== -html-encoding-sniffer@^1.0.2: - version "1.0.2" - resolved "https://registry.yarnpkg.com/html-encoding-sniffer/-/html-encoding-sniffer-1.0.2.tgz#e70d84b94da53aa375e11fe3a351be6642ca46f8" - integrity sha512-71lZziiDnsuabfdYiUeWdCVyKuqwWi23L8YeIgV9jSSZHCtb6wB1BKWooH7L3tn4/FuZJMVWyNaIDr4RGmaSYw== - dependencies: - whatwg-encoding "^1.0.1" - html-encoding-sniffer@^2.0.1: version "2.0.1" resolved "https://registry.yarnpkg.com/html-encoding-sniffer/-/html-encoding-sniffer-2.0.1.tgz#42a6dc4fd33f00281176e8b23759ca4e4fa185f3" @@ -3526,6 +4100,14 @@ html-minifier@^3.0.2: relateurl "0.2.x" uglify-js "3.4.x" +html-tag@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/html-tag/-/html-tag-2.0.0.tgz#36c3bc8d816fd30b570d5764a497a641640c2fed" + integrity sha512-XxzooSo6oBoxBEUazgjdXj7VwTn/iSTSZzTYKzYY6I916tkaYzypHxy+pbVU1h+0UQ9JlVf5XkNQyxOAiiQO1g== + dependencies: + is-self-closing "^1.0.1" + kind-of "^6.0.0" + http-signature@~1.2.0: version "1.2.0" resolved "https://registry.yarnpkg.com/http-signature/-/http-signature-1.2.0.tgz#9aecd925114772f3d95b65a60abb8f7c18fbace1" @@ -3572,13 +4154,13 @@ import-fresh@^3.1.0: parent-module "^1.0.0" resolve-from "^4.0.0" -import-local@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/import-local/-/import-local-2.0.0.tgz#55070be38a5993cf18ef6db7e961f5bee5c5a09d" - integrity sha512-b6s04m3O+s3CGSbqDIyP4R6aAwAeYlVq9+WUWep6iHa8ETRf9yei1U48C5MmfJmV9AiLYYBKPMq/W+/WRpQmCQ== +import-local@^3.0.2: + version "3.0.2" + resolved "https://registry.yarnpkg.com/import-local/-/import-local-3.0.2.tgz#a8cfd0431d1de4a2199703d003e3e62364fa6db6" + integrity sha512-vjL3+w0oulAVZ0hBHnxa/Nm5TAurf9YLQJDhqRZyqb+VKGOB6LU8t9H1Nr5CIo16vh9XfJTOoHwU0B71S557gA== dependencies: - pkg-dir "^3.0.0" - resolve-cwd "^2.0.0" + pkg-dir "^4.2.0" + resolve-cwd "^3.0.0" imurmurhash@^0.1.4: version "0.1.4" @@ -3608,6 +4190,11 @@ inflight@^1.0.4: once "^1.3.0" wrappy "1" +info-symbol@^0.1.0: + version "0.1.0" + resolved "https://registry.yarnpkg.com/info-symbol/-/info-symbol-0.1.0.tgz#27841d72867ddb4242cd612d79c10633881c6a78" + integrity sha1-J4QdcoZ920JCzWEtecEGM4gcang= + inherits@2, inherits@^2.0.1, inherits@^2.0.3, inherits@^2.0.4, inherits@~2.0.1, inherits@~2.0.3: version "2.0.4" resolved "https://registry.yarnpkg.com/inherits/-/inherits-2.0.4.tgz#0fa2c64f932917c3433a0ded55363aae37416b7c" @@ -3618,13 +4205,6 @@ ini@1.3.7: resolved "https://registry.yarnpkg.com/ini/-/ini-1.3.7.tgz#a09363e1911972ea16d7a8851005d84cf09a9a84" integrity sha512-iKpRpXP+CrP2jyrxvg1kMUpXDyRUFDWurxbnVT1vQPx+Wz9uCYsMIqYuSBLV+PAaZG/d7kRLKRFc9oDMsH+mFQ== -invariant@^2.2.4: - version "2.2.4" - resolved "https://registry.yarnpkg.com/invariant/-/invariant-2.2.4.tgz#610f3c92c9359ce1db616e538008d23ff35158e6" - integrity sha512-phJfQVBuaJM5raOpJjSfkiD6BpbCE4Ns//LaXl6wGYtUBY83nWS6Rf9tXm2e8VaK60JEjYldbPif/A2B1C2gNA== - dependencies: - loose-envify "^1.0.0" - ip-regex@^2.1.0: version "2.1.0" resolved "https://registry.yarnpkg.com/ip-regex/-/ip-regex-2.1.0.tgz#fa78bf5d2e6913c911ce9f819ee5146bb6d844e9" @@ -3668,11 +4248,6 @@ is-buffer@^1.1.5: resolved "https://registry.yarnpkg.com/is-buffer/-/is-buffer-1.1.6.tgz#efaa2ea9daa0d7ab2ea13a97b2b8ad51fefbe8be" integrity sha512-NcdALwpXkTm5Zvvbk7owOUSvVvBKDgKP5/ewfXEznmQFfs4ZRmanOeKBTjRVjka3QFoN6XJ+9F3USqfHqTaU5w== -is-callable@^1.1.3, is-callable@^1.1.4, is-callable@^1.2.2: - version "1.2.3" - resolved "https://registry.yarnpkg.com/is-callable/-/is-callable-1.2.3.tgz#8b1e0500b73a1d76c70487636f368e519de8db8e" - integrity sha512-J1DcMe8UYTBSrKezuIUTUwjXsho29693unXM2YhJUTR2txK/eG47bvNa/wipPFmZFgr/N6f1GA66dv0mEyTIyQ== - is-ci@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/is-ci/-/is-ci-2.0.0.tgz#6bc6334181810e04b5c22b3d589fdca55026404c" @@ -3724,6 +4299,18 @@ is-descriptor@^1.0.0, is-descriptor@^1.0.2: is-data-descriptor "^1.0.0" kind-of "^6.0.2" +is-docker@^2.0.0: + version "2.1.1" + resolved "https://registry.yarnpkg.com/is-docker/-/is-docker-2.1.1.tgz#4125a88e44e450d384e09047ede71adc2d144156" + integrity sha512-ZOoqiXfEwtGknTiuDEy8pN2CfE3TxMHprvNer1mXiqwkOT77Rw3YVrUQ52EqAOU3QAWDQ+bQdx7HJzrv7LS2Hw== + +is-even@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/is-even/-/is-even-1.0.0.tgz#76b5055fbad8d294a86b6a949015e1c97b717c06" + integrity sha1-drUFX7rY0pSoa2qUkBXhyXtxfAY= + dependencies: + is-odd "^0.1.2" + is-extendable@^0.1.0, is-extendable@^0.1.1: version "0.1.1" resolved "https://registry.yarnpkg.com/is-extendable/-/is-extendable-0.1.1.tgz#62b110e289a471418e3ec36a617d472e301dfc89" @@ -3763,7 +4350,7 @@ is-generator-fn@^2.0.0: resolved "https://registry.yarnpkg.com/is-generator-fn/-/is-generator-fn-2.1.0.tgz#7d140adc389aaf3011a8f2a2a4cfa6faadffb118" integrity sha512-cTIB4yPYL/Grw0EaSzASzg6bBy9gqCofvWN8okThAYIxKJZC+udlRAmGbM0XLeniEJSs8uEgHPGuHSe1XsOLSQ== -is-glob@^4.0.1, is-glob@~4.0.1: +is-glob@^4.0.0, is-glob@^4.0.1, is-glob@~4.0.1: version "4.0.1" resolved "https://registry.yarnpkg.com/is-glob/-/is-glob-4.0.1.tgz#7567dbe9f2f5e2467bc77ab83c4a29482407a5dc" integrity sha512-5G0tKtBTFImOqDnLB2hG6Bp2qcKEFduo4tZu9MT/H6NQv/ghhy30o55ufafxJ/LdH79LLs2Kfrn85TLKyA7BUg== @@ -3783,10 +4370,12 @@ is-module@^1.0.0: resolved "https://registry.yarnpkg.com/is-module/-/is-module-1.0.0.tgz#3258fb69f78c14d5b815d664336b4cffb6441591" integrity sha1-Mlj7afeMFNW4FdZkM2tM/7ZEFZE= -is-negative-zero@^2.0.1: - version "2.0.1" - resolved "https://registry.yarnpkg.com/is-negative-zero/-/is-negative-zero-2.0.1.tgz#3de746c18dda2319241a53675908d8f766f11c24" - integrity sha512-2z6JzQvZRa9A2Y7xC6dQQm4FSTSTNWjKIYYTt4246eMTJmIo0Q+ZyOsU66X8lxK1AbB92dFeglPLrhwpeRKO6w== +is-number@^2.0.2: + version "2.1.0" + resolved "https://registry.yarnpkg.com/is-number/-/is-number-2.1.0.tgz#01fcbbb393463a548f2f466cce16dece49db908f" + integrity sha1-Afy7s5NGOlSPL0ZszhbezknbkI8= + dependencies: + kind-of "^3.0.2" is-number@^3.0.0: version "3.0.0" @@ -3795,6 +4384,11 @@ is-number@^3.0.0: dependencies: kind-of "^3.0.2" +is-number@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/is-number/-/is-number-4.0.0.tgz#0026e37f5454d73e356dfe6564699867c6a7f0ff" + integrity sha512-rSklcAIlf1OmFdyAqbnWTLVelsQ58uvZ66S/ZyawjWqIviTWCjg2PzVGw8WUA+nNuPTqb4wgA+NszrJ+08LlgQ== + is-number@^7.0.0: version "7.0.0" resolved "https://registry.yarnpkg.com/is-number/-/is-number-7.0.0.tgz#7535345b896734d5f80c4d06c50955527a14f12b" @@ -3812,6 +4406,13 @@ is-observable@^1.1.0: dependencies: symbol-observable "^1.1.0" +is-odd@^0.1.2: + version "0.1.2" + resolved "https://registry.yarnpkg.com/is-odd/-/is-odd-0.1.2.tgz#bc573b5ce371ef2aad6e6f49799b72bef13978a7" + integrity sha1-vFc7XONx7yqtbm9JeZtyvvE5eKc= + dependencies: + is-number "^3.0.0" + is-path-inside@^3.0.1: version "3.0.2" resolved "https://registry.yarnpkg.com/is-path-inside/-/is-path-inside-3.0.2.tgz#f5220fc82a3e233757291dddc9c5877f2a1f3017" @@ -3846,7 +4447,7 @@ is-reference@^1.2.1: dependencies: "@types/estree" "*" -is-regex@^1.0.4, is-regex@^1.1.1: +is-regex@^1.0.4: version "1.1.2" resolved "https://registry.yarnpkg.com/is-regex/-/is-regex-1.1.2.tgz#81c8ebde4db142f2cf1c53fc86d6a45788266251" integrity sha512-axvdhb5pdhEVThqJzYXwMlVuZwC+FF2DpcOhTS+y/8jVq4trxyPgfcwIxIKiyeuLlSQYKkmUaPQJ8ZE4yNKXDg== @@ -3854,6 +4455,13 @@ is-regex@^1.0.4, is-regex@^1.1.1: call-bind "^1.0.2" has-symbols "^1.0.1" +is-self-closing@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/is-self-closing/-/is-self-closing-1.0.1.tgz#5f406b527c7b12610176320338af0fa3896416e4" + integrity sha512-E+60FomW7Blv5GXTlYee2KDrnG6srxF7Xt1SjrhWUGUEsTFIqY/nq2y3DaftCsgUMdh89V07IVfhY9KIJhLezg== + dependencies: + self-closing-tags "^1.0.1" + is-stream@^1.1.0: version "1.1.0" resolved "https://registry.yarnpkg.com/is-stream/-/is-stream-1.1.0.tgz#12d4a3dd4e68e0b79ceb8dbc84173ae80d91ca44" @@ -3864,14 +4472,7 @@ is-stream@^2.0.0: resolved "https://registry.yarnpkg.com/is-stream/-/is-stream-2.0.0.tgz#bde9c32680d6fae04129d6ac9d921ce7815f78e3" integrity sha512-XCoy+WlUr7d1+Z8GgSuXmpuUFC9fOhRXglJMx+dwLKTkL44Cjd4W1Z5P+BQZpr+cR93aGP4S/s7Ftw6Nd/kiEw== -is-symbol@^1.0.2: - version "1.0.3" - resolved "https://registry.yarnpkg.com/is-symbol/-/is-symbol-1.0.3.tgz#38e1014b9e6329be0de9d24a414fd7441ec61937" - integrity sha512-OwijhaRSgqvhm/0ZdAcXNZt9lYdKFpcRDT5ULUuYXPoT794UNOdU+gpT6Rzo7b4V2HUl/op6GqY894AZwv9faQ== - dependencies: - has-symbols "^1.0.1" - -is-typedarray@~1.0.0: +is-typedarray@^1.0.0, is-typedarray@~1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/is-typedarray/-/is-typedarray-1.0.0.tgz#e479c80858df0c1b11ddda6940f96011fcda4a9a" integrity sha1-5HnICFjfDBsR3dppQPlgEfzaSpo= @@ -3881,10 +4482,12 @@ is-windows@^1.0.2: resolved "https://registry.yarnpkg.com/is-windows/-/is-windows-1.0.2.tgz#d1850eb9791ecd18e6182ce12a30f396634bb19d" integrity sha512-eXK1UInq2bPmjyX6e3VHIzMLobc4J94i4AWn+Hpq3OU5KkrRC96OAcR3PRJ/pGu6m8TRnBHP9dkXQVsT/COVIA== -is-wsl@^1.1.0: - version "1.1.0" - resolved "https://registry.yarnpkg.com/is-wsl/-/is-wsl-1.1.0.tgz#1f16e4aa22b04d1336b66188a66af3c600c3a66d" - integrity sha1-HxbkqiKwTRM2tmGIpmrzxgDDpm0= +is-wsl@^2.2.0: + version "2.2.0" + resolved "https://registry.yarnpkg.com/is-wsl/-/is-wsl-2.2.0.tgz#74a4c76e77ca9fd3f932f290c17ea326cd157271" + integrity sha512-fKzAra0rGJUUBwGBgNkHZuToZcn+TtXHpeCgmkMJMMYx1sQDYaCSyjJBSCa2nH1DGm7s3n1oBnohoVTBaN7Lww== + dependencies: + is-docker "^2.0.0" is@~0.2.6: version "0.2.7" @@ -3911,6 +4514,11 @@ isexe@^2.0.0: resolved "https://registry.yarnpkg.com/isexe/-/isexe-2.0.0.tgz#e8fbf374dc556ff8947a10dcb0572d633f2cfa10" integrity sha1-6PvzdNxVb/iUehDcsFctYz8s+hA= +isobject@^0.2.0: + version "0.2.0" + resolved "https://registry.yarnpkg.com/isobject/-/isobject-0.2.0.tgz#a3432192f39b910b5f02cc989487836ec70aa85e" + integrity sha1-o0MhkvObkQtfAsyYlIeDbscKqF4= + isobject@^2.0.0: version "2.1.0" resolved "https://registry.yarnpkg.com/isobject/-/isobject-2.1.0.tgz#f065561096a3f1da2ef46272f815c840d87e0c89" @@ -3928,113 +4536,100 @@ isstream@~0.1.2: resolved "https://registry.yarnpkg.com/isstream/-/isstream-0.1.2.tgz#47e63f7af55afa6f92e1500e690eb8b8529c099a" integrity sha1-R+Y/evVa+m+S4VAOaQ64uFKcCZo= -istanbul-lib-coverage@^2.0.2, istanbul-lib-coverage@^2.0.5: - version "2.0.5" - resolved "https://registry.yarnpkg.com/istanbul-lib-coverage/-/istanbul-lib-coverage-2.0.5.tgz#675f0ab69503fad4b1d849f736baaca803344f49" - integrity sha512-8aXznuEPCJvGnMSRft4udDRDtb1V3pkQkMMI5LI+6HuQz5oQ4J2UFn1H82raA3qJtyOLkkwVqICBQkjnGtn5mA== +istanbul-lib-coverage@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/istanbul-lib-coverage/-/istanbul-lib-coverage-3.0.0.tgz#f5944a37c70b550b02a78a5c3b2055b280cec8ec" + integrity sha512-UiUIqxMgRDET6eR+o5HbfRYP1l0hqkWOs7vNxC/mggutCMUIhWMm8gAHb8tHlyfD3/l6rlgNA5cKdDzEAf6hEg== -istanbul-lib-instrument@^3.0.1, istanbul-lib-instrument@^3.3.0: - version "3.3.0" - resolved "https://registry.yarnpkg.com/istanbul-lib-instrument/-/istanbul-lib-instrument-3.3.0.tgz#a5f63d91f0bbc0c3e479ef4c5de027335ec6d630" - integrity sha512-5nnIN4vo5xQZHdXno/YDXJ0G+I3dAm4XgzfSVTPLQpj/zAV2dV6Juy0yaf10/zrJOJeHoN3fraFe+XRq2bFVZA== +istanbul-lib-instrument@^4.0.0, istanbul-lib-instrument@^4.0.3: + version "4.0.3" + resolved "https://registry.yarnpkg.com/istanbul-lib-instrument/-/istanbul-lib-instrument-4.0.3.tgz#873c6fff897450118222774696a3f28902d77c1d" + integrity sha512-BXgQl9kf4WTCPCCpmFGoJkz/+uhvm7h7PFKUYxh7qarQd3ER33vHG//qaE8eN25l07YqZPpHXU9I09l/RD5aGQ== dependencies: - "@babel/generator" "^7.4.0" - "@babel/parser" "^7.4.3" - "@babel/template" "^7.4.0" - "@babel/traverse" "^7.4.3" - "@babel/types" "^7.4.0" - istanbul-lib-coverage "^2.0.5" - semver "^6.0.0" + "@babel/core" "^7.7.5" + "@istanbuljs/schema" "^0.1.2" + istanbul-lib-coverage "^3.0.0" + semver "^6.3.0" -istanbul-lib-report@^2.0.4: - version "2.0.8" - resolved "https://registry.yarnpkg.com/istanbul-lib-report/-/istanbul-lib-report-2.0.8.tgz#5a8113cd746d43c4889eba36ab10e7d50c9b4f33" - integrity sha512-fHBeG573EIihhAblwgxrSenp0Dby6tJMFR/HvlerBsrCTD5bkUuoNtn3gVh29ZCS824cGGBPn7Sg7cNk+2xUsQ== +istanbul-lib-report@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/istanbul-lib-report/-/istanbul-lib-report-3.0.0.tgz#7518fe52ea44de372f460a76b5ecda9ffb73d8a6" + integrity sha512-wcdi+uAKzfiGT2abPpKZ0hSU1rGQjUQnLvtY5MpQ7QCTahD3VODhcu4wcfY1YtkGaDD5yuydOLINXsfbus9ROw== dependencies: - istanbul-lib-coverage "^2.0.5" - make-dir "^2.1.0" - supports-color "^6.1.0" + istanbul-lib-coverage "^3.0.0" + make-dir "^3.0.0" + supports-color "^7.1.0" -istanbul-lib-source-maps@^3.0.1: - version "3.0.6" - resolved "https://registry.yarnpkg.com/istanbul-lib-source-maps/-/istanbul-lib-source-maps-3.0.6.tgz#284997c48211752ec486253da97e3879defba8c8" - integrity sha512-R47KzMtDJH6X4/YW9XTx+jrLnZnscW4VpNN+1PViSYTejLVPWv7oov+Duf8YQSPyVRUvueQqz1TcsC6mooZTXw== +istanbul-lib-source-maps@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/istanbul-lib-source-maps/-/istanbul-lib-source-maps-4.0.0.tgz#75743ce6d96bb86dc7ee4352cf6366a23f0b1ad9" + integrity sha512-c16LpFRkR8vQXyHZ5nLpY35JZtzj1PQY1iZmesUbf1FZHbIupcWfjgOXBY9YHkLEQ6puz1u4Dgj6qmU/DisrZg== dependencies: debug "^4.1.1" - istanbul-lib-coverage "^2.0.5" - make-dir "^2.1.0" - rimraf "^2.6.3" + istanbul-lib-coverage "^3.0.0" source-map "^0.6.1" -istanbul-reports@^2.2.6: - version "2.2.7" - resolved "https://registry.yarnpkg.com/istanbul-reports/-/istanbul-reports-2.2.7.tgz#5d939f6237d7b48393cc0959eab40cd4fd056931" - integrity sha512-uu1F/L1o5Y6LzPVSVZXNOoD/KXpJue9aeLRd0sM9uMXfZvzomB0WxVamWb5ue8kA2vVWEmW7EG+A5n3f1kqHKg== +istanbul-reports@^3.0.2: + version "3.0.2" + resolved "https://registry.yarnpkg.com/istanbul-reports/-/istanbul-reports-3.0.2.tgz#d593210e5000683750cb09fc0644e4b6e27fd53b" + integrity sha512-9tZvz7AiR3PEDNGiV9vIouQ/EAcqMXFmkcA1CDFTwOB98OZVDL0PH9glHotf5Ugp6GCOTypfzGWI/OqjWNCRUw== dependencies: html-escaper "^2.0.0" + istanbul-lib-report "^3.0.0" -jest-changed-files@^24.9.0: - version "24.9.0" - resolved "https://registry.yarnpkg.com/jest-changed-files/-/jest-changed-files-24.9.0.tgz#08d8c15eb79a7fa3fc98269bc14b451ee82f8039" - integrity sha512-6aTWpe2mHF0DhL28WjdkO8LyGjs3zItPET4bMSeXU6T3ub4FPMw+mcOcbdGXQOAfmLcxofD23/5Bl9Z4AkFwqg== +jest-changed-files@^26.6.2: + version "26.6.2" + resolved "https://registry.yarnpkg.com/jest-changed-files/-/jest-changed-files-26.6.2.tgz#f6198479e1cc66f22f9ae1e22acaa0b429c042d0" + integrity sha512-fDS7szLcY9sCtIip8Fjry9oGf3I2ht/QT21bAHm5Dmf0mD4X3ReNUf17y+bO6fR8WgbIZTlbyG1ak/53cbRzKQ== dependencies: - "@jest/types" "^24.9.0" - execa "^1.0.0" - throat "^4.0.0" + "@jest/types" "^26.6.2" + execa "^4.0.0" + throat "^5.0.0" -jest-cli@^24.9.0: - version "24.9.0" - resolved "https://registry.yarnpkg.com/jest-cli/-/jest-cli-24.9.0.tgz#ad2de62d07472d419c6abc301fc432b98b10d2af" - integrity sha512-+VLRKyitT3BWoMeSUIHRxV/2g8y9gw91Jh5z2UmXZzkZKpbC08CSehVxgHUwTpy+HwGcns/tqafQDJW7imYvGg== +jest-cli@^26.6.3: + version "26.6.3" + resolved "https://registry.yarnpkg.com/jest-cli/-/jest-cli-26.6.3.tgz#43117cfef24bc4cd691a174a8796a532e135e92a" + integrity sha512-GF9noBSa9t08pSyl3CY4frMrqp+aQXFGFkf5hEPbh/pIUFYWMK6ZLTfbmadxJVcJrdRoChlWQsA2VkJcDFK8hg== dependencies: - "@jest/core" "^24.9.0" - "@jest/test-result" "^24.9.0" - "@jest/types" "^24.9.0" - chalk "^2.0.1" + "@jest/core" "^26.6.3" + "@jest/test-result" "^26.6.2" + "@jest/types" "^26.6.2" + chalk "^4.0.0" exit "^0.1.2" - import-local "^2.0.0" + graceful-fs "^4.2.4" + import-local "^3.0.2" is-ci "^2.0.0" - jest-config "^24.9.0" - jest-util "^24.9.0" - jest-validate "^24.9.0" + jest-config "^26.6.3" + jest-util "^26.6.2" + jest-validate "^26.6.2" prompts "^2.0.1" - realpath-native "^1.1.0" - yargs "^13.3.0" + yargs "^15.4.1" -jest-config@^24.9.0: - version "24.9.0" - resolved "https://registry.yarnpkg.com/jest-config/-/jest-config-24.9.0.tgz#fb1bbc60c73a46af03590719efa4825e6e4dd1b5" - integrity sha512-RATtQJtVYQrp7fvWg6f5y3pEFj9I+H8sWw4aKxnDZ96mob5i5SD6ZEGWgMLXQ4LE8UurrjbdlLWdUeo+28QpfQ== +jest-config@^26.6.3: + version "26.6.3" + resolved "https://registry.yarnpkg.com/jest-config/-/jest-config-26.6.3.tgz#64f41444eef9eb03dc51d5c53b75c8c71f645349" + integrity sha512-t5qdIj/bCj2j7NFVHb2nFB4aUdfucDn3JRKgrZnplb8nieAirAzRSHP8uDEd+qV6ygzg9Pz4YG7UTJf94LPSyg== dependencies: "@babel/core" "^7.1.0" - "@jest/test-sequencer" "^24.9.0" - "@jest/types" "^24.9.0" - babel-jest "^24.9.0" - chalk "^2.0.1" + "@jest/test-sequencer" "^26.6.3" + "@jest/types" "^26.6.2" + babel-jest "^26.6.3" + chalk "^4.0.0" + deepmerge "^4.2.2" glob "^7.1.1" - jest-environment-jsdom "^24.9.0" - jest-environment-node "^24.9.0" - jest-get-type "^24.9.0" - jest-jasmine2 "^24.9.0" - jest-regex-util "^24.3.0" - jest-resolve "^24.9.0" - jest-util "^24.9.0" - jest-validate "^24.9.0" - micromatch "^3.1.10" - pretty-format "^24.9.0" - realpath-native "^1.1.0" + graceful-fs "^4.2.4" + jest-environment-jsdom "^26.6.2" + jest-environment-node "^26.6.2" + jest-get-type "^26.3.0" + jest-jasmine2 "^26.6.3" + jest-regex-util "^26.0.0" + jest-resolve "^26.6.2" + jest-util "^26.6.2" + jest-validate "^26.6.2" + micromatch "^4.0.2" + pretty-format "^26.6.2" -jest-diff@^24.9.0: - version "24.9.0" - resolved "https://registry.yarnpkg.com/jest-diff/-/jest-diff-24.9.0.tgz#931b7d0d5778a1baf7452cb816e325e3724055da" - integrity sha512-qMfrTs8AdJE2iqrTp0hzh7kTd2PQWrsFyj9tORoKmu32xjPjeE4NyjVRDz8ybYwqS2ik8N4hsIpiVTyFeo2lBQ== - dependencies: - chalk "^2.0.1" - diff-sequences "^24.9.0" - jest-get-type "^24.9.0" - pretty-format "^24.9.0" - -jest-diff@^26.0.0: +jest-diff@^26.0.0, jest-diff@^26.6.2: version "26.6.2" resolved "https://registry.yarnpkg.com/jest-diff/-/jest-diff-26.6.2.tgz#1aa7468b52c3a68d7d5c5fdcdfcd5e49bd164394" integrity sha512-6m+9Z3Gv9wN0WFVasqjCL/06+EFCMTqDEUl/b87HYK2rAPTyfz4ZIuSlPhY51PIQRWx5TaxeF1qmXKe9gfN3sA== @@ -4044,297 +4639,300 @@ jest-diff@^26.0.0: jest-get-type "^26.3.0" pretty-format "^26.6.2" -jest-docblock@^24.3.0: - version "24.9.0" - resolved "https://registry.yarnpkg.com/jest-docblock/-/jest-docblock-24.9.0.tgz#7970201802ba560e1c4092cc25cbedf5af5a8ce2" - integrity sha512-F1DjdpDMJMA1cN6He0FNYNZlo3yYmOtRUnktrT9Q37njYzC5WEaDdmbynIgy0L/IvXvvgsG8OsqhLPXTpfmZAA== +jest-docblock@^26.0.0: + version "26.0.0" + resolved "https://registry.yarnpkg.com/jest-docblock/-/jest-docblock-26.0.0.tgz#3e2fa20899fc928cb13bd0ff68bd3711a36889b5" + integrity sha512-RDZ4Iz3QbtRWycd8bUEPxQsTlYazfYn/h5R65Fc6gOfwozFhoImx+affzky/FFBuqISPTqjXomoIGJVKBWoo0w== dependencies: - detect-newline "^2.1.0" + detect-newline "^3.0.0" -jest-each@^24.9.0: - version "24.9.0" - resolved "https://registry.yarnpkg.com/jest-each/-/jest-each-24.9.0.tgz#eb2da602e2a610898dbc5f1f6df3ba86b55f8b05" - integrity sha512-ONi0R4BvW45cw8s2Lrx8YgbeXL1oCQ/wIDwmsM3CqM/nlblNCPmnC3IPQlMbRFZu3wKdQ2U8BqM6lh3LJ5Bsog== +jest-each@^26.6.2: + version "26.6.2" + resolved "https://registry.yarnpkg.com/jest-each/-/jest-each-26.6.2.tgz#02526438a77a67401c8a6382dfe5999952c167cb" + integrity sha512-Mer/f0KaATbjl8MCJ+0GEpNdqmnVmDYqCTJYTvoo7rqmRiDllmp2AYN+06F93nXcY3ur9ShIjS+CO/uD+BbH4A== dependencies: - "@jest/types" "^24.9.0" - chalk "^2.0.1" - jest-get-type "^24.9.0" - jest-util "^24.9.0" - pretty-format "^24.9.0" + "@jest/types" "^26.6.2" + chalk "^4.0.0" + jest-get-type "^26.3.0" + jest-util "^26.6.2" + pretty-format "^26.6.2" -jest-environment-jsdom@^24.9.0: - version "24.9.0" - resolved "https://registry.yarnpkg.com/jest-environment-jsdom/-/jest-environment-jsdom-24.9.0.tgz#4b0806c7fc94f95edb369a69cc2778eec2b7375b" - integrity sha512-Zv9FV9NBRzLuALXjvRijO2351DRQeLYXtpD4xNvfoVFw21IOKNhZAEUKcbiEtjTkm2GsJ3boMVgkaR7rN8qetA== +jest-environment-jsdom@^26.6.2: + version "26.6.2" + resolved "https://registry.yarnpkg.com/jest-environment-jsdom/-/jest-environment-jsdom-26.6.2.tgz#78d09fe9cf019a357009b9b7e1f101d23bd1da3e" + integrity sha512-jgPqCruTlt3Kwqg5/WVFyHIOJHsiAvhcp2qiR2QQstuG9yWox5+iHpU3ZrcBxW14T4fe5Z68jAfLRh7joCSP2Q== dependencies: - "@jest/environment" "^24.9.0" - "@jest/fake-timers" "^24.9.0" - "@jest/types" "^24.9.0" - jest-mock "^24.9.0" - jest-util "^24.9.0" - jsdom "^11.5.1" + "@jest/environment" "^26.6.2" + "@jest/fake-timers" "^26.6.2" + "@jest/types" "^26.6.2" + "@types/node" "*" + jest-mock "^26.6.2" + jest-util "^26.6.2" + jsdom "^16.4.0" -jest-environment-node@^24.9.0: - version "24.9.0" - resolved "https://registry.yarnpkg.com/jest-environment-node/-/jest-environment-node-24.9.0.tgz#333d2d2796f9687f2aeebf0742b519f33c1cbfd3" - integrity sha512-6d4V2f4nxzIzwendo27Tr0aFm+IXWa0XEUnaH6nU0FMaozxovt+sfRvh4J47wL1OvF83I3SSTu0XK+i4Bqe7uA== +jest-environment-node@^26.6.2: + version "26.6.2" + resolved "https://registry.yarnpkg.com/jest-environment-node/-/jest-environment-node-26.6.2.tgz#824e4c7fb4944646356f11ac75b229b0035f2b0c" + integrity sha512-zhtMio3Exty18dy8ee8eJ9kjnRyZC1N4C1Nt/VShN1apyXc8rWGtJ9lI7vqiWcyyXS4BVSEn9lxAM2D+07/Tag== dependencies: - "@jest/environment" "^24.9.0" - "@jest/fake-timers" "^24.9.0" - "@jest/types" "^24.9.0" - jest-mock "^24.9.0" - jest-util "^24.9.0" - -jest-get-type@^24.9.0: - version "24.9.0" - resolved "https://registry.yarnpkg.com/jest-get-type/-/jest-get-type-24.9.0.tgz#1684a0c8a50f2e4901b6644ae861f579eed2ef0e" - integrity sha512-lUseMzAley4LhIcpSP9Jf+fTrQ4a1yHQwLNeeVa2cEmbCGeoZAtYPOIv8JaxLD/sUpKxetKGP+gsHl8f8TSj8Q== + "@jest/environment" "^26.6.2" + "@jest/fake-timers" "^26.6.2" + "@jest/types" "^26.6.2" + "@types/node" "*" + jest-mock "^26.6.2" + jest-util "^26.6.2" jest-get-type@^26.3.0: version "26.3.0" resolved "https://registry.yarnpkg.com/jest-get-type/-/jest-get-type-26.3.0.tgz#e97dc3c3f53c2b406ca7afaed4493b1d099199e0" integrity sha512-TpfaviN1R2pQWkIihlfEanwOXK0zcxrKEE4MlU6Tn7keoXdN6/3gK/xl0yEh8DOunn5pOVGKf8hB4R9gVh04ig== -jest-haste-map@^24.9.0: - version "24.9.0" - resolved "https://registry.yarnpkg.com/jest-haste-map/-/jest-haste-map-24.9.0.tgz#b38a5d64274934e21fa417ae9a9fbeb77ceaac7d" - integrity sha512-kfVFmsuWui2Sj1Rp1AJ4D9HqJwE4uwTlS/vO+eRUaMmd54BFpli2XhMQnPC2k4cHFVbB2Q2C+jtI1AGLgEnCjQ== +jest-haste-map@^26.6.2: + version "26.6.2" + resolved "https://registry.yarnpkg.com/jest-haste-map/-/jest-haste-map-26.6.2.tgz#dd7e60fe7dc0e9f911a23d79c5ff7fb5c2cafeaa" + integrity sha512-easWIJXIw71B2RdR8kgqpjQrbMRWQBgiBwXYEhtGUTaX+doCjBheluShdDMeR8IMfJiTqH4+zfhtg29apJf/8w== dependencies: - "@jest/types" "^24.9.0" - anymatch "^2.0.0" + "@jest/types" "^26.6.2" + "@types/graceful-fs" "^4.1.2" + "@types/node" "*" + anymatch "^3.0.3" fb-watchman "^2.0.0" - graceful-fs "^4.1.15" - invariant "^2.2.4" - jest-serializer "^24.9.0" - jest-util "^24.9.0" - jest-worker "^24.9.0" - micromatch "^3.1.10" + graceful-fs "^4.2.4" + jest-regex-util "^26.0.0" + jest-serializer "^26.6.2" + jest-util "^26.6.2" + jest-worker "^26.6.2" + micromatch "^4.0.2" sane "^4.0.3" walker "^1.0.7" optionalDependencies: - fsevents "^1.2.7" + fsevents "^2.1.2" -jest-jasmine2@^24.9.0: - version "24.9.0" - resolved "https://registry.yarnpkg.com/jest-jasmine2/-/jest-jasmine2-24.9.0.tgz#1f7b1bd3242c1774e62acabb3646d96afc3be6a0" - integrity sha512-Cq7vkAgaYKp+PsX+2/JbTarrk0DmNhsEtqBXNwUHkdlbrTBLtMJINADf2mf5FkowNsq8evbPc07/qFO0AdKTzw== +jest-jasmine2@^26.6.3: + version "26.6.3" + resolved "https://registry.yarnpkg.com/jest-jasmine2/-/jest-jasmine2-26.6.3.tgz#adc3cf915deacb5212c93b9f3547cd12958f2edd" + integrity sha512-kPKUrQtc8aYwBV7CqBg5pu+tmYXlvFlSFYn18ev4gPFtrRzB15N2gW/Roew3187q2w2eHuu0MU9TJz6w0/nPEg== dependencies: "@babel/traverse" "^7.1.0" - "@jest/environment" "^24.9.0" - "@jest/test-result" "^24.9.0" - "@jest/types" "^24.9.0" - chalk "^2.0.1" + "@jest/environment" "^26.6.2" + "@jest/source-map" "^26.6.2" + "@jest/test-result" "^26.6.2" + "@jest/types" "^26.6.2" + "@types/node" "*" + chalk "^4.0.0" co "^4.6.0" - expect "^24.9.0" + expect "^26.6.2" is-generator-fn "^2.0.0" - jest-each "^24.9.0" - jest-matcher-utils "^24.9.0" - jest-message-util "^24.9.0" - jest-runtime "^24.9.0" - jest-snapshot "^24.9.0" - jest-util "^24.9.0" - pretty-format "^24.9.0" - throat "^4.0.0" + jest-each "^26.6.2" + jest-matcher-utils "^26.6.2" + jest-message-util "^26.6.2" + jest-runtime "^26.6.3" + jest-snapshot "^26.6.2" + jest-util "^26.6.2" + pretty-format "^26.6.2" + throat "^5.0.0" -jest-leak-detector@^24.9.0: - version "24.9.0" - resolved "https://registry.yarnpkg.com/jest-leak-detector/-/jest-leak-detector-24.9.0.tgz#b665dea7c77100c5c4f7dfcb153b65cf07dcf96a" - integrity sha512-tYkFIDsiKTGwb2FG1w8hX9V0aUb2ot8zY/2nFg087dUageonw1zrLMP4W6zsRO59dPkTSKie+D4rhMuP9nRmrA== +jest-leak-detector@^26.6.2: + version "26.6.2" + resolved "https://registry.yarnpkg.com/jest-leak-detector/-/jest-leak-detector-26.6.2.tgz#7717cf118b92238f2eba65054c8a0c9c653a91af" + integrity sha512-i4xlXpsVSMeKvg2cEKdfhh0H39qlJlP5Ex1yQxwF9ubahboQYMgTtz5oML35AVA3B4Eu+YsmwaiKVev9KCvLxg== dependencies: - jest-get-type "^24.9.0" - pretty-format "^24.9.0" + jest-get-type "^26.3.0" + pretty-format "^26.6.2" -jest-matcher-utils@^24.9.0: - version "24.9.0" - resolved "https://registry.yarnpkg.com/jest-matcher-utils/-/jest-matcher-utils-24.9.0.tgz#f5b3661d5e628dffe6dd65251dfdae0e87c3a073" - integrity sha512-OZz2IXsu6eaiMAwe67c1T+5tUAtQyQx27/EMEkbFAGiw52tB9em+uGbzpcgYVpA8wl0hlxKPZxrly4CXU/GjHA== +jest-matcher-utils@^26.6.2: + version "26.6.2" + resolved "https://registry.yarnpkg.com/jest-matcher-utils/-/jest-matcher-utils-26.6.2.tgz#8e6fd6e863c8b2d31ac6472eeb237bc595e53e7a" + integrity sha512-llnc8vQgYcNqDrqRDXWwMr9i7rS5XFiCwvh6DTP7Jqa2mqpcCBBlpCbn+trkG0KNhPu/h8rzyBkriOtBstvWhw== dependencies: - chalk "^2.0.1" - jest-diff "^24.9.0" - jest-get-type "^24.9.0" - pretty-format "^24.9.0" + chalk "^4.0.0" + jest-diff "^26.6.2" + jest-get-type "^26.3.0" + pretty-format "^26.6.2" -jest-message-util@^24.9.0: - version "24.9.0" - resolved "https://registry.yarnpkg.com/jest-message-util/-/jest-message-util-24.9.0.tgz#527f54a1e380f5e202a8d1149b0ec872f43119e3" - integrity sha512-oCj8FiZ3U0hTP4aSui87P4L4jC37BtQwUMqk+zk/b11FR19BJDeZsZAvIHutWnmtw7r85UmR3CEWZ0HWU2mAlw== +jest-message-util@^26.6.2: + version "26.6.2" + resolved "https://registry.yarnpkg.com/jest-message-util/-/jest-message-util-26.6.2.tgz#58173744ad6fc0506b5d21150b9be56ef001ca07" + integrity sha512-rGiLePzQ3AzwUshu2+Rn+UMFk0pHN58sOG+IaJbk5Jxuqo3NYO1U2/MIR4S1sKgsoYSXSzdtSa0TgrmtUwEbmA== dependencies: "@babel/code-frame" "^7.0.0" - "@jest/test-result" "^24.9.0" - "@jest/types" "^24.9.0" - "@types/stack-utils" "^1.0.1" - chalk "^2.0.1" - micromatch "^3.1.10" - slash "^2.0.0" - stack-utils "^1.0.1" + "@jest/types" "^26.6.2" + "@types/stack-utils" "^2.0.0" + chalk "^4.0.0" + graceful-fs "^4.2.4" + micromatch "^4.0.2" + pretty-format "^26.6.2" + slash "^3.0.0" + stack-utils "^2.0.2" -jest-mock@^24.9.0: - version "24.9.0" - resolved "https://registry.yarnpkg.com/jest-mock/-/jest-mock-24.9.0.tgz#c22835541ee379b908673ad51087a2185c13f1c6" - integrity sha512-3BEYN5WbSq9wd+SyLDES7AHnjH9A/ROBwmz7l2y+ol+NtSFO8DYiEBzoO1CeFc9a8DYy10EO4dDFVv/wN3zl1w== +jest-mock@^26.6.2: + version "26.6.2" + resolved "https://registry.yarnpkg.com/jest-mock/-/jest-mock-26.6.2.tgz#d6cb712b041ed47fe0d9b6fc3474bc6543feb302" + integrity sha512-YyFjePHHp1LzpzYcmgqkJ0nm0gg/lJx2aZFzFy1S6eUqNjXsOqTK10zNRff2dNfssgokjkG65OlWNcIlgd3zew== dependencies: - "@jest/types" "^24.9.0" + "@jest/types" "^26.6.2" + "@types/node" "*" -jest-pnp-resolver@^1.2.1: +jest-pnp-resolver@^1.2.2: version "1.2.2" resolved "https://registry.yarnpkg.com/jest-pnp-resolver/-/jest-pnp-resolver-1.2.2.tgz#b704ac0ae028a89108a4d040b3f919dfddc8e33c" integrity sha512-olV41bKSMm8BdnuMsewT4jqlZ8+3TCARAXjZGT9jcoSnrfUnRCqnMoF9XEeoWjbzObpqF9dRhHQj0Xb9QdF6/w== -jest-regex-util@^24.3.0, jest-regex-util@^24.9.0: - version "24.9.0" - resolved "https://registry.yarnpkg.com/jest-regex-util/-/jest-regex-util-24.9.0.tgz#c13fb3380bde22bf6575432c493ea8fe37965636" - integrity sha512-05Cmb6CuxaA+Ys6fjr3PhvV3bGQmO+2p2La4hFbU+W5uOc479f7FdLXUWXw4pYMAhhSZIuKHwSXSu6CsSBAXQA== +jest-regex-util@^26.0.0: + version "26.0.0" + resolved "https://registry.yarnpkg.com/jest-regex-util/-/jest-regex-util-26.0.0.tgz#d25e7184b36e39fd466c3bc41be0971e821fee28" + integrity sha512-Gv3ZIs/nA48/Zvjrl34bf+oD76JHiGDUxNOVgUjh3j890sblXryjY4rss71fPtD/njchl6PSE2hIhvyWa1eT0A== -jest-resolve-dependencies@^24.9.0: - version "24.9.0" - resolved "https://registry.yarnpkg.com/jest-resolve-dependencies/-/jest-resolve-dependencies-24.9.0.tgz#ad055198959c4cfba8a4f066c673a3f0786507ab" - integrity sha512-Fm7b6AlWnYhT0BXy4hXpactHIqER7erNgIsIozDXWl5dVm+k8XdGVe1oTg1JyaFnOxarMEbax3wyRJqGP2Pq+g== +jest-resolve-dependencies@^26.6.3: + version "26.6.3" + resolved "https://registry.yarnpkg.com/jest-resolve-dependencies/-/jest-resolve-dependencies-26.6.3.tgz#6680859ee5d22ee5dcd961fe4871f59f4c784fb6" + integrity sha512-pVwUjJkxbhe4RY8QEWzN3vns2kqyuldKpxlxJlzEYfKSvY6/bMvxoFrYYzUO1Gx28yKWN37qyV7rIoIp2h8fTg== dependencies: - "@jest/types" "^24.9.0" - jest-regex-util "^24.3.0" - jest-snapshot "^24.9.0" + "@jest/types" "^26.6.2" + jest-regex-util "^26.0.0" + jest-snapshot "^26.6.2" -jest-resolve@^24.9.0: - version "24.9.0" - resolved "https://registry.yarnpkg.com/jest-resolve/-/jest-resolve-24.9.0.tgz#dff04c7687af34c4dd7e524892d9cf77e5d17321" - integrity sha512-TaLeLVL1l08YFZAt3zaPtjiVvyy4oSA6CRe+0AFPPVX3Q/VI0giIWWoAvoS5L96vj9Dqxj4fB5p2qrHCmTU/MQ== +jest-resolve@^26.6.2: + version "26.6.2" + resolved "https://registry.yarnpkg.com/jest-resolve/-/jest-resolve-26.6.2.tgz#a3ab1517217f469b504f1b56603c5bb541fbb507" + integrity sha512-sOxsZOq25mT1wRsfHcbtkInS+Ek7Q8jCHUB0ZUTP0tc/c41QHriU/NunqMfCUWsL4H3MHpvQD4QR9kSYhS7UvQ== dependencies: - "@jest/types" "^24.9.0" - browser-resolve "^1.11.3" - chalk "^2.0.1" - jest-pnp-resolver "^1.2.1" - realpath-native "^1.1.0" + "@jest/types" "^26.6.2" + chalk "^4.0.0" + graceful-fs "^4.2.4" + jest-pnp-resolver "^1.2.2" + jest-util "^26.6.2" + read-pkg-up "^7.0.1" + resolve "^1.18.1" + slash "^3.0.0" -jest-runner@^24.9.0: - version "24.9.0" - resolved "https://registry.yarnpkg.com/jest-runner/-/jest-runner-24.9.0.tgz#574fafdbd54455c2b34b4bdf4365a23857fcdf42" - integrity sha512-KksJQyI3/0mhcfspnxxEOBueGrd5E4vV7ADQLT9ESaCzz02WnbdbKWIf5Mkaucoaj7obQckYPVX6JJhgUcoWWg== +jest-runner@^26.6.3: + version "26.6.3" + resolved "https://registry.yarnpkg.com/jest-runner/-/jest-runner-26.6.3.tgz#2d1fed3d46e10f233fd1dbd3bfaa3fe8924be159" + integrity sha512-atgKpRHnaA2OvByG/HpGA4g6CSPS/1LK0jK3gATJAoptC1ojltpmVlYC3TYgdmGp+GLuhzpH30Gvs36szSL2JQ== dependencies: - "@jest/console" "^24.7.1" - "@jest/environment" "^24.9.0" - "@jest/test-result" "^24.9.0" - "@jest/types" "^24.9.0" - chalk "^2.4.2" + "@jest/console" "^26.6.2" + "@jest/environment" "^26.6.2" + "@jest/test-result" "^26.6.2" + "@jest/types" "^26.6.2" + "@types/node" "*" + chalk "^4.0.0" + emittery "^0.7.1" exit "^0.1.2" - graceful-fs "^4.1.15" - jest-config "^24.9.0" - jest-docblock "^24.3.0" - jest-haste-map "^24.9.0" - jest-jasmine2 "^24.9.0" - jest-leak-detector "^24.9.0" - jest-message-util "^24.9.0" - jest-resolve "^24.9.0" - jest-runtime "^24.9.0" - jest-util "^24.9.0" - jest-worker "^24.6.0" + graceful-fs "^4.2.4" + jest-config "^26.6.3" + jest-docblock "^26.0.0" + jest-haste-map "^26.6.2" + jest-leak-detector "^26.6.2" + jest-message-util "^26.6.2" + jest-resolve "^26.6.2" + jest-runtime "^26.6.3" + jest-util "^26.6.2" + jest-worker "^26.6.2" source-map-support "^0.5.6" - throat "^4.0.0" + throat "^5.0.0" -jest-runtime@^24.9.0: - version "24.9.0" - resolved "https://registry.yarnpkg.com/jest-runtime/-/jest-runtime-24.9.0.tgz#9f14583af6a4f7314a6a9d9f0226e1a781c8e4ac" - integrity sha512-8oNqgnmF3v2J6PVRM2Jfuj8oX3syKmaynlDMMKQ4iyzbQzIG6th5ub/lM2bCMTmoTKM3ykcUYI2Pw9xwNtjMnw== +jest-runtime@^26.6.3: + version "26.6.3" + resolved "https://registry.yarnpkg.com/jest-runtime/-/jest-runtime-26.6.3.tgz#4f64efbcfac398331b74b4b3c82d27d401b8fa2b" + integrity sha512-lrzyR3N8sacTAMeonbqpnSka1dHNux2uk0qqDXVkMv2c/A3wYnvQ4EXuI013Y6+gSKSCxdaczvf4HF0mVXHRdw== dependencies: - "@jest/console" "^24.7.1" - "@jest/environment" "^24.9.0" - "@jest/source-map" "^24.3.0" - "@jest/transform" "^24.9.0" - "@jest/types" "^24.9.0" - "@types/yargs" "^13.0.0" - chalk "^2.0.1" + "@jest/console" "^26.6.2" + "@jest/environment" "^26.6.2" + "@jest/fake-timers" "^26.6.2" + "@jest/globals" "^26.6.2" + "@jest/source-map" "^26.6.2" + "@jest/test-result" "^26.6.2" + "@jest/transform" "^26.6.2" + "@jest/types" "^26.6.2" + "@types/yargs" "^15.0.0" + chalk "^4.0.0" + cjs-module-lexer "^0.6.0" + collect-v8-coverage "^1.0.0" exit "^0.1.2" glob "^7.1.3" - graceful-fs "^4.1.15" - jest-config "^24.9.0" - jest-haste-map "^24.9.0" - jest-message-util "^24.9.0" - jest-mock "^24.9.0" - jest-regex-util "^24.3.0" - jest-resolve "^24.9.0" - jest-snapshot "^24.9.0" - jest-util "^24.9.0" - jest-validate "^24.9.0" - realpath-native "^1.1.0" - slash "^2.0.0" - strip-bom "^3.0.0" - yargs "^13.3.0" + graceful-fs "^4.2.4" + jest-config "^26.6.3" + jest-haste-map "^26.6.2" + jest-message-util "^26.6.2" + jest-mock "^26.6.2" + jest-regex-util "^26.0.0" + jest-resolve "^26.6.2" + jest-snapshot "^26.6.2" + jest-util "^26.6.2" + jest-validate "^26.6.2" + slash "^3.0.0" + strip-bom "^4.0.0" + yargs "^15.4.1" -jest-serializer@^24.9.0: - version "24.9.0" - resolved "https://registry.yarnpkg.com/jest-serializer/-/jest-serializer-24.9.0.tgz#e6d7d7ef96d31e8b9079a714754c5d5c58288e73" - integrity sha512-DxYipDr8OvfrKH3Kel6NdED3OXxjvxXZ1uIY2I9OFbGg+vUkkg7AGvi65qbhbWNPvDckXmzMPbK3u3HaDO49bQ== +jest-serializer@^26.6.2: + version "26.6.2" + resolved "https://registry.yarnpkg.com/jest-serializer/-/jest-serializer-26.6.2.tgz#d139aafd46957d3a448f3a6cdabe2919ba0742d1" + integrity sha512-S5wqyz0DXnNJPd/xfIzZ5Xnp1HrJWBczg8mMfMpN78OJ5eDxXyf+Ygld9wX1DnUWbIbhM1YDY95NjR4CBXkb2g== + dependencies: + "@types/node" "*" + graceful-fs "^4.2.4" -jest-snapshot@^24.9.0: - version "24.9.0" - resolved "https://registry.yarnpkg.com/jest-snapshot/-/jest-snapshot-24.9.0.tgz#ec8e9ca4f2ec0c5c87ae8f925cf97497b0e951ba" - integrity sha512-uI/rszGSs73xCM0l+up7O7a40o90cnrk429LOiK3aeTvfC0HHmldbd81/B7Ix81KSFe1lwkbl7GnBGG4UfuDew== +jest-snapshot@^26.6.2: + version "26.6.2" + resolved "https://registry.yarnpkg.com/jest-snapshot/-/jest-snapshot-26.6.2.tgz#f3b0af1acb223316850bd14e1beea9837fb39c84" + integrity sha512-OLhxz05EzUtsAmOMzuupt1lHYXCNib0ECyuZ/PZOx9TrZcC8vL0x+DUG3TL+GLX3yHG45e6YGjIm0XwDc3q3og== dependencies: "@babel/types" "^7.0.0" - "@jest/types" "^24.9.0" - chalk "^2.0.1" - expect "^24.9.0" - jest-diff "^24.9.0" - jest-get-type "^24.9.0" - jest-matcher-utils "^24.9.0" - jest-message-util "^24.9.0" - jest-resolve "^24.9.0" - mkdirp "^0.5.1" + "@jest/types" "^26.6.2" + "@types/babel__traverse" "^7.0.4" + "@types/prettier" "^2.0.0" + chalk "^4.0.0" + expect "^26.6.2" + graceful-fs "^4.2.4" + jest-diff "^26.6.2" + jest-get-type "^26.3.0" + jest-haste-map "^26.6.2" + jest-matcher-utils "^26.6.2" + jest-message-util "^26.6.2" + jest-resolve "^26.6.2" natural-compare "^1.4.0" - pretty-format "^24.9.0" - semver "^6.2.0" + pretty-format "^26.6.2" + semver "^7.3.2" -jest-util@^24.9.0: - version "24.9.0" - resolved "https://registry.yarnpkg.com/jest-util/-/jest-util-24.9.0.tgz#7396814e48536d2e85a37de3e4c431d7cb140162" - integrity sha512-x+cZU8VRmOJxbA1K5oDBdxQmdq0OIdADarLxk0Mq+3XS4jgvhG/oKGWcIDCtPG0HgjxOYvF+ilPJQsAyXfbNOg== +jest-util@^26.6.2: + version "26.6.2" + resolved "https://registry.yarnpkg.com/jest-util/-/jest-util-26.6.2.tgz#907535dbe4d5a6cb4c47ac9b926f6af29576cbc1" + integrity sha512-MDW0fKfsn0OI7MS7Euz6h8HNDXVQ0gaM9uW6RjfDmd1DAFcaxX9OqIakHIqhbnmF08Cf2DLDG+ulq8YQQ0Lp0Q== dependencies: - "@jest/console" "^24.9.0" - "@jest/fake-timers" "^24.9.0" - "@jest/source-map" "^24.9.0" - "@jest/test-result" "^24.9.0" - "@jest/types" "^24.9.0" - callsites "^3.0.0" - chalk "^2.0.1" - graceful-fs "^4.1.15" + "@jest/types" "^26.6.2" + "@types/node" "*" + chalk "^4.0.0" + graceful-fs "^4.2.4" is-ci "^2.0.0" - mkdirp "^0.5.1" - slash "^2.0.0" - source-map "^0.6.0" + micromatch "^4.0.2" -jest-validate@^24.9.0: - version "24.9.0" - resolved "https://registry.yarnpkg.com/jest-validate/-/jest-validate-24.9.0.tgz#0775c55360d173cd854e40180756d4ff52def8ab" - integrity sha512-HPIt6C5ACwiqSiwi+OfSSHbK8sG7akG8eATl+IPKaeIjtPOeBUd/g3J7DghugzxrGjI93qS/+RPKe1H6PqvhRQ== +jest-validate@^26.6.2: + version "26.6.2" + resolved "https://registry.yarnpkg.com/jest-validate/-/jest-validate-26.6.2.tgz#23d380971587150467342911c3d7b4ac57ab20ec" + integrity sha512-NEYZ9Aeyj0i5rQqbq+tpIOom0YS1u2MVu6+euBsvpgIme+FOfRmoC4R5p0JiAUpaFvFy24xgrpMknarR/93XjQ== dependencies: - "@jest/types" "^24.9.0" - camelcase "^5.3.1" - chalk "^2.0.1" - jest-get-type "^24.9.0" + "@jest/types" "^26.6.2" + camelcase "^6.0.0" + chalk "^4.0.0" + jest-get-type "^26.3.0" leven "^3.1.0" - pretty-format "^24.9.0" + pretty-format "^26.6.2" -jest-watcher@^24.9.0: - version "24.9.0" - resolved "https://registry.yarnpkg.com/jest-watcher/-/jest-watcher-24.9.0.tgz#4b56e5d1ceff005f5b88e528dc9afc8dd4ed2b3b" - integrity sha512-+/fLOfKPXXYJDYlks62/4R4GoT+GU1tYZed99JSCOsmzkkF7727RqKrjNAxtfO4YpGv11wybgRvCjR73lK2GZw== +jest-watcher@^26.6.2: + version "26.6.2" + resolved "https://registry.yarnpkg.com/jest-watcher/-/jest-watcher-26.6.2.tgz#a5b683b8f9d68dbcb1d7dae32172d2cca0592975" + integrity sha512-WKJob0P/Em2csiVthsI68p6aGKTIcsfjH9Gsx1f0A3Italz43e3ho0geSAVsmj09RWOELP1AZ/DXyJgOgDKxXQ== dependencies: - "@jest/test-result" "^24.9.0" - "@jest/types" "^24.9.0" - "@types/yargs" "^13.0.0" - ansi-escapes "^3.0.0" - chalk "^2.0.1" - jest-util "^24.9.0" - string-length "^2.0.0" + "@jest/test-result" "^26.6.2" + "@jest/types" "^26.6.2" + "@types/node" "*" + ansi-escapes "^4.2.1" + chalk "^4.0.0" + jest-util "^26.6.2" + string-length "^4.0.1" -jest-worker@^24.6.0, jest-worker@^24.9.0: - version "24.9.0" - resolved "https://registry.yarnpkg.com/jest-worker/-/jest-worker-24.9.0.tgz#5dbfdb5b2d322e98567898238a9697bcce67b3e5" - integrity sha512-51PE4haMSXcHohnSMdM42anbvZANYTqMrr52tVKPqqsPJMzoP6FYYDVqahX/HrAoKEKz3uUPzSvKs9A3qR4iVw== - dependencies: - merge-stream "^2.0.0" - supports-color "^6.1.0" - -jest-worker@^26.2.1: +jest-worker@^26.2.1, jest-worker@^26.6.2: version "26.6.2" resolved "https://registry.yarnpkg.com/jest-worker/-/jest-worker-26.6.2.tgz#7f72cbc4d643c365e27b9fd775f9d0eaa9c7a8ed" integrity sha512-KWYVV1c4i+jbMpaBC+U++4Va0cp8OisU185o73T1vo99hqi7w8tSJfUXYswwqqrjzwxa6KpRK54WhPvwf5w6PQ== @@ -4343,13 +4941,14 @@ jest-worker@^26.2.1: merge-stream "^2.0.0" supports-color "^7.0.0" -jest@^24.8.0: - version "24.9.0" - resolved "https://registry.yarnpkg.com/jest/-/jest-24.9.0.tgz#987d290c05a08b52c56188c1002e368edb007171" - integrity sha512-YvkBL1Zm7d2B1+h5fHEOdyjCG+sGMz4f8D86/0HiqJ6MB4MnDc8FgP5vdWsGnemOQro7lnYo8UakZ3+5A0jxGw== +jest@^26.6.3: + version "26.6.3" + resolved "https://registry.yarnpkg.com/jest/-/jest-26.6.3.tgz#40e8fdbe48f00dfa1f0ce8121ca74b88ac9148ef" + integrity sha512-lGS5PXGAzR4RF7V5+XObhqz2KZIDUA1yD0DG6pBVmy10eh0ZIXQImRuzocsI/N2XZ1GrLFwTS27In2i2jlpq1Q== dependencies: - import-local "^2.0.0" - jest-cli "^24.9.0" + "@jest/core" "^26.6.3" + import-local "^3.0.2" + jest-cli "^26.6.3" joi@^17.3.0: version "17.4.0" @@ -4362,7 +4961,7 @@ joi@^17.3.0: "@sideway/formula" "^3.0.0" "@sideway/pinpoint" "^2.0.0" -"js-tokens@^3.0.0 || ^4.0.0", js-tokens@^4.0.0: +js-tokens@^4.0.0: version "4.0.0" resolved "https://registry.yarnpkg.com/js-tokens/-/js-tokens-4.0.0.tgz#19203fb59991df98e3a287050d4647cdeaf32499" integrity sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ== @@ -4380,38 +4979,6 @@ jsbn@~0.1.0: resolved "https://registry.yarnpkg.com/jsbn/-/jsbn-0.1.1.tgz#a5e654c2e5a2deb5f201d96cefbca80c0ef2f513" integrity sha1-peZUwuWi3rXyAdls77yoDA7y9RM= -jsdom@^11.5.1: - version "11.12.0" - resolved "https://registry.yarnpkg.com/jsdom/-/jsdom-11.12.0.tgz#1a80d40ddd378a1de59656e9e6dc5a3ba8657bc8" - integrity sha512-y8Px43oyiBM13Zc1z780FrfNLJCXTL40EWlty/LXUtcjykRBNgLlCjWXpfSPBl2iv+N7koQN+dvqszHZgT/Fjw== - dependencies: - abab "^2.0.0" - acorn "^5.5.3" - acorn-globals "^4.1.0" - array-equal "^1.0.0" - cssom ">= 0.3.2 < 0.4.0" - cssstyle "^1.0.0" - data-urls "^1.0.0" - domexception "^1.0.1" - escodegen "^1.9.1" - html-encoding-sniffer "^1.0.2" - left-pad "^1.3.0" - nwsapi "^2.0.7" - parse5 "4.0.0" - pn "^1.1.0" - request "^2.87.0" - request-promise-native "^1.0.5" - sax "^1.2.4" - symbol-tree "^3.2.2" - tough-cookie "^2.3.4" - w3c-hr-time "^1.0.1" - webidl-conversions "^4.0.2" - whatwg-encoding "^1.0.3" - whatwg-mimetype "^2.1.0" - whatwg-url "^6.4.1" - ws "^5.2.0" - xml-name-validator "^3.0.0" - jsdom@^16.0.1: version "16.4.0" resolved "https://registry.yarnpkg.com/jsdom/-/jsdom-16.4.0.tgz#36005bde2d136f73eee1a830c6d45e55408edddb" @@ -4444,6 +5011,38 @@ jsdom@^16.0.1: ws "^7.2.3" xml-name-validator "^3.0.0" +jsdom@^16.4.0: + version "16.5.1" + resolved "https://registry.yarnpkg.com/jsdom/-/jsdom-16.5.1.tgz#4ced6bbd7b77d67fb980e64d9e3e6fb900f97dd6" + integrity sha512-pF73EOsJgwZekbDHEY5VO/yKXUkab/DuvrQB/ANVizbr6UAHJsDdHXuotZYwkJSGQl1JM+ivXaqY+XBDDL4TiA== + dependencies: + abab "^2.0.5" + acorn "^8.0.5" + acorn-globals "^6.0.0" + cssom "^0.4.4" + cssstyle "^2.3.0" + data-urls "^2.0.0" + decimal.js "^10.2.1" + domexception "^2.0.1" + escodegen "^2.0.0" + html-encoding-sniffer "^2.0.1" + is-potential-custom-element-name "^1.0.0" + nwsapi "^2.2.0" + parse5 "6.0.1" + request "^2.88.2" + request-promise-native "^1.0.9" + saxes "^5.0.1" + symbol-tree "^3.2.4" + tough-cookie "^4.0.0" + w3c-hr-time "^1.0.2" + w3c-xmlserializer "^2.0.0" + webidl-conversions "^6.1.0" + whatwg-encoding "^1.0.5" + whatwg-mimetype "^2.3.0" + whatwg-url "^8.0.0" + ws "^7.4.4" + xml-name-validator "^3.0.0" + jsesc@^2.5.1: version "2.5.2" resolved "https://registry.yarnpkg.com/jsesc/-/jsesc-2.5.2.tgz#80564d2e483dacf6e8ef209650a67df3f0c283a4" @@ -4454,11 +5053,6 @@ jsesc@~0.5.0: resolved "https://registry.yarnpkg.com/jsesc/-/jsesc-0.5.0.tgz#e7dee66e35d6fc16f710fe91d5cf69f70f08911d" integrity sha1-597mbjXW/Bb3EP6R1c9p9w8IkR0= -json-parse-better-errors@^1.0.1: - version "1.0.2" - resolved "https://registry.yarnpkg.com/json-parse-better-errors/-/json-parse-better-errors-1.0.2.tgz#bb867cfb3450e69107c131d1c514bab3dc8bcaa9" - integrity sha512-mrqyZKfX5EhL7hvqcV6WG1yYjnjeuYDzDhhcAAUrq8Po85NBQBJP+ZDUT75qZQ98IkUoBqdkExkukOU7Ts2wrw== - json-parse-even-better-errors@^2.3.0: version "2.3.1" resolved "https://registry.yarnpkg.com/json-parse-even-better-errors/-/json-parse-even-better-errors-2.3.1.tgz#7c47805a94319928e05777405dc12e1f7a4ee02d" @@ -4512,7 +5106,7 @@ jsprim@^1.2.2: json-schema "0.2.3" verror "1.10.0" -kind-of@^3.0.2, kind-of@^3.0.3, kind-of@^3.2.0: +kind-of@^3.0.2, kind-of@^3.0.3, kind-of@^3.1.0, kind-of@^3.2.0: version "3.2.2" resolved "https://registry.yarnpkg.com/kind-of/-/kind-of-3.2.2.tgz#31ea21a734bab9bbb0f32466d893aea51e4a3c64" integrity sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ= @@ -4526,7 +5120,7 @@ kind-of@^4.0.0: dependencies: is-buffer "^1.1.5" -kind-of@^5.0.0: +kind-of@^5.0.0, kind-of@^5.0.2: version "5.1.0" resolved "https://registry.yarnpkg.com/kind-of/-/kind-of-5.1.0.tgz#729c91e2d857b7a419a1f9aa65685c4c33f5845d" integrity sha512-NGEErnH6F2vUuXDh+OlbcKW7/wOcfdRHaZ7VWtqCztfHri/++YKmP51OdWeGPuqCOba6kk2OTe5d02VmTB80Pw== @@ -4546,10 +5140,12 @@ lazy-ass@1.6.0, lazy-ass@^1.6.0: resolved "https://registry.yarnpkg.com/lazy-ass/-/lazy-ass-1.6.0.tgz#7999655e8646c17f089fdd187d150d3324d54513" integrity sha1-eZllXoZGwX8In90YfRUNMyTVRRM= -left-pad@^1.3.0: - version "1.3.0" - resolved "https://registry.yarnpkg.com/left-pad/-/left-pad-1.3.0.tgz#5b8a3a7765dfe001261dde915589e782f8c94d1e" - integrity sha512-XI5MPzVNApjAyhQzphX8BkmKsKUxD4LdyK24iZeQGinBN9yTQT3bFlCBy/aVx2HrNcqQGsdot8ghrjyrvMCoEA== +lazy-cache@^2.0.1: + version "2.0.2" + resolved "https://registry.yarnpkg.com/lazy-cache/-/lazy-cache-2.0.2.tgz#b9190a4f913354694840859f8a8f7084d8822264" + integrity sha1-uRkKT5EzVGlIQIWfio9whNiCImQ= + dependencies: + set-getter "^0.1.0" level-blobs@^0.1.7: version "0.1.7" @@ -4720,34 +5316,28 @@ livereload@^0.9.1: opts ">= 1.2.0" ws "^6.2.1" -load-json-file@^4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/load-json-file/-/load-json-file-4.0.0.tgz#2f5f45ab91e33216234fd53adab668eb4ec0993b" - integrity sha1-L19Fq5HjMhYjT9U62rZo607AmTs= - dependencies: - graceful-fs "^4.1.2" - parse-json "^4.0.0" - pify "^3.0.0" - strip-bom "^3.0.0" - local-access@^1.0.1: version "1.1.0" resolved "https://registry.yarnpkg.com/local-access/-/local-access-1.1.0.tgz#e007c76ba2ca83d5877ba1a125fc8dfe23ba4798" integrity sha512-XfegD5pyTAfb+GY6chk283Ox5z8WexG56OvM06RWLpAc/UHozO8X6xAxEkIitZOtsSMM1Yr3DkHgW5W+onLhCw== -locate-path@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/locate-path/-/locate-path-3.0.0.tgz#dbec3b3ab759758071b58fe59fc41871af21400e" - integrity sha512-7AO748wWnIhNqAuaty2ZWHkQHRSNfPVIsPIfwEOWO22AmaoVrWavlOcMR5nzTLNYvp36X220/maaRsrec1G65A== +locate-path@^5.0.0: + version "5.0.0" + resolved "https://registry.yarnpkg.com/locate-path/-/locate-path-5.0.0.tgz#1afba396afd676a6d42504d0a67a3a7eb9f62aa0" + integrity sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g== dependencies: - p-locate "^3.0.0" - path-exists "^3.0.0" + p-locate "^4.1.0" lodash-es@^4.17.11: version "4.17.20" resolved "https://registry.yarnpkg.com/lodash-es/-/lodash-es-4.17.20.tgz#29f6332eefc60e849f869c264bc71126ad61e8f7" integrity sha512-JD1COMZsq8maT6mnuz1UMV0jvYD0E0aUsSOdrr1/nAG3dhqQXwRRgeW0cSqH1U43INKcqxaiVIQNOUDld7gRDA== +lodash._reinterpolate@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/lodash._reinterpolate/-/lodash._reinterpolate-3.0.0.tgz#0ccf2d89166af03b3663c796538b75ac6e114d9d" + integrity sha1-DM8tiRZq8Ds2Y8eWU4t1rG4RTZ0= + lodash.once@^4.1.1: version "4.1.1" resolved "https://registry.yarnpkg.com/lodash.once/-/lodash.once-4.1.1.tgz#0dd3971213c7c56df880977d504c88fb471a97ac" @@ -4758,6 +5348,21 @@ lodash.sortby@^4.7.0: resolved "https://registry.yarnpkg.com/lodash.sortby/-/lodash.sortby-4.7.0.tgz#edd14c824e2cc9c1e0b0a1b42bb5210516a42438" integrity sha1-7dFMgk4sycHgsKG0K7UhBRakJDg= +lodash.template@^4.4.0: + version "4.5.0" + resolved "https://registry.yarnpkg.com/lodash.template/-/lodash.template-4.5.0.tgz#f976195cf3f347d0d5f52483569fe8031ccce8ab" + integrity sha512-84vYFxIkmidUiFxidA/KjjH9pAycqW+h980j7Fuz5qxRtO9pgB7MDFTdys1N7A5mcucRiDyEq4fusljItR1T/A== + dependencies: + lodash._reinterpolate "^3.0.0" + lodash.templatesettings "^4.0.0" + +lodash.templatesettings@^4.0.0: + version "4.2.0" + resolved "https://registry.yarnpkg.com/lodash.templatesettings/-/lodash.templatesettings-4.2.0.tgz#e481310f049d3cf6d47e912ad09313b154f0fb33" + integrity sha512-stgLz+i3Aa9mZgnjr/O+v9ruKZsPsndy7qPZOchbqk2cnTU1ZaldKK+v7m54WoKIyxiuMZTKT2H81F8BeAc3ZQ== + dependencies: + lodash._reinterpolate "^3.0.0" + lodash@4.17.13: version "4.17.13" resolved "https://registry.yarnpkg.com/lodash/-/lodash-4.17.13.tgz#0bdc3a6adc873d2f4e0c4bac285df91b64fc7b93" @@ -4768,6 +5373,14 @@ lodash@^4.17.15, lodash@^4.17.19, lodash@^4.17.20: resolved "https://registry.yarnpkg.com/lodash/-/lodash-4.17.20.tgz#b44a9b6297bcb698f1c51a3545a2b3b368d59c52" integrity sha512-PlhdFcillOINfeV7Ni6oF1TAEayyZBoZ8bcshTHqOYJYlrqzRK5hagpagky5o4HfCzzd1TRkXPMFq6cKk9rGmA== +log-ok@^0.1.1: + version "0.1.1" + resolved "https://registry.yarnpkg.com/log-ok/-/log-ok-0.1.1.tgz#bea3dd36acd0b8a7240d78736b5b97c65444a334" + integrity sha1-vqPdNqzQuKckDXhza1uXxlREozQ= + dependencies: + ansi-green "^0.1.1" + success-symbol "^0.1.0" + log-symbols@^1.0.2: version "1.0.2" resolved "https://registry.yarnpkg.com/log-symbols/-/log-symbols-1.0.2.tgz#376ff7b58ea3086a0f09facc74617eca501e1a18" @@ -4798,18 +5411,39 @@ log-update@^2.3.0: cli-cursor "^2.0.0" wrap-ansi "^3.0.1" -loose-envify@^1.0.0: - version "1.4.0" - resolved "https://registry.yarnpkg.com/loose-envify/-/loose-envify-1.4.0.tgz#71ee51fa7be4caec1a63839f7e682d8132d30caf" - integrity sha512-lyuxPGr/Wfhrlem2CL/UcnUc1zcqKAImBDzukY7Y5F/yQiNdko6+fRLevlw1HgMySw7f611UIY408EtxRSoK3Q== +log-utils@^0.2.1: + version "0.2.1" + resolved "https://registry.yarnpkg.com/log-utils/-/log-utils-0.2.1.tgz#a4c217a0dd9a50515d9b920206091ab3d4e031cf" + integrity sha1-pMIXoN2aUFFdm5ICBgkas9TgMc8= dependencies: - js-tokens "^3.0.0 || ^4.0.0" + ansi-colors "^0.2.0" + error-symbol "^0.1.0" + info-symbol "^0.1.0" + log-ok "^0.1.1" + success-symbol "^0.1.0" + time-stamp "^1.0.1" + warning-symbol "^0.1.0" + +logging-helpers@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/logging-helpers/-/logging-helpers-1.0.0.tgz#b5a37b32ad53eb0137c58c7898a47b175ddb7c36" + integrity sha512-qyIh2goLt1sOgQQrrIWuwkRjUx4NUcEqEGAcYqD8VOnOC6ItwkrVE8/tA4smGpjzyp4Svhc6RodDp9IO5ghpyA== + dependencies: + isobject "^3.0.0" + log-utils "^0.2.1" lower-case@^1.1.1: version "1.1.4" resolved "https://registry.yarnpkg.com/lower-case/-/lower-case-1.1.4.tgz#9a2cabd1b9e8e0ae993a4bf7d5875c39c42e8eac" integrity sha1-miyr0bno4K6ZOkv31YdcOcQujqw= +lru-cache@^6.0.0: + version "6.0.0" + resolved "https://registry.yarnpkg.com/lru-cache/-/lru-cache-6.0.0.tgz#6d6fe6570ebd96aaf90fcad1dafa3b2566db3a94" + integrity sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA== + dependencies: + yallist "^4.0.0" + ltgt@^2.1.2: version "2.2.1" resolved "https://registry.yarnpkg.com/ltgt/-/ltgt-2.2.1.tgz#f35ca91c493f7b73da0e07495304f17b31f87ee5" @@ -4834,13 +5468,12 @@ magic-string@^0.25.7: dependencies: sourcemap-codec "^1.4.4" -make-dir@^2.1.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/make-dir/-/make-dir-2.1.0.tgz#5f0310e18b8be898cc07009295a30ae41e91e6f5" - integrity sha512-LS9X+dc8KLxXCb8dni79fLIIUA5VyZoyjSMCwTluaXA0o27cCK0bhXkpgw+sTXVpPy/lSO57ilRixqk0vDmtRA== +make-dir@^3.0.0: + version "3.1.0" + resolved "https://registry.yarnpkg.com/make-dir/-/make-dir-3.1.0.tgz#415e967046b3a7f1d185277d84aa58203726a13f" + integrity sha512-g3FeP20LNwhALb/6Cz6Dd4F2ngze0jz7tbzrD2wAV+o9FeNHe4rL+yK2md0J/fiSf1sa1ADhXqi5+oVwOM/eGw== dependencies: - pify "^4.0.1" - semver "^5.6.0" + semver "^6.0.0" makeerror@1.0.x: version "1.0.11" @@ -4906,7 +5539,7 @@ methods@^1.1.2: resolved "https://registry.yarnpkg.com/methods/-/methods-1.1.2.tgz#5529a4d67654134edcc5266656835b0f851afcee" integrity sha1-VSmk1nZUE07cxSZmVoNbD4Ua/O4= -micromatch@^3.1.10, micromatch@^3.1.4: +micromatch@^3.1.4: version "3.1.10" resolved "https://registry.yarnpkg.com/micromatch/-/micromatch-3.1.10.tgz#70859bc95c9840952f359a068a3fc49f9ecfac23" integrity sha512-MWikgl9n9M3w+bpsY3He8L+w9eF9338xRl8IAO5viDizwSzziFEyUzo2xrrloB64ADbTf8uA8vRqqttDTOmccg== @@ -5010,7 +5643,7 @@ mkdirp@^0.5.1, mkdirp@^0.5.4: dependencies: minimist "^1.2.5" -moment@^2.27.0: +moment@^2.18.1, moment@^2.27.0: version "2.29.1" resolved "https://registry.yarnpkg.com/moment/-/moment-2.29.1.tgz#b2be769fa31940be9eeea6469c075e35006fa3d3" integrity sha512-kHmoybcPV8Sqy59DwNDY3Jefr64lK/by/da0ViFcuA4DH0vQg5Q6Ze5VimxkfQNSC+Mls/Kx53s7TjP1RhFEDQ== @@ -5035,11 +5668,6 @@ ms@^2.1.1: resolved "https://registry.yarnpkg.com/ms/-/ms-2.1.3.tgz#574c8138ce1d2b5861f0b44579dbadd60c6615b2" integrity sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA== -nan@^2.12.1: - version "2.14.2" - resolved "https://registry.yarnpkg.com/nan/-/nan-2.14.2.tgz#f5376400695168f4cc694ac9393d0c9585eeea19" - integrity sha512-M2ufzIiINKCuDfBSAUr1vWQ+vuVcA9kqx8JJUsbQi6yf1uGRyb7HfpdfUr5qLXf3B/t8dPvcjhKMmlfnP47EzQ== - nanoid@^2.1.0: version "2.1.11" resolved "https://registry.yarnpkg.com/nanoid/-/nanoid-2.1.11.tgz#ec24b8a758d591561531b4176a01e3ab4f0f0280" @@ -5072,6 +5700,11 @@ ncp@^2.0.0: resolved "https://registry.yarnpkg.com/ncp/-/ncp-2.0.0.tgz#195a21d6c46e361d2fb1281ba38b91e9df7bdbb3" integrity sha1-GVoh1sRuNh0vsSgbo4uR6d9727M= +neo-async@^2.6.0: + version "2.6.2" + resolved "https://registry.yarnpkg.com/neo-async/-/neo-async-2.6.2.tgz#b4aafb93e3aeb2d8174ca53cf163ab7d7308305f" + integrity sha512-Yd3UES5mWCSqR+qNT93S3UoYUkqAZ9lLg8a7g9rimsWmYGK8cVToA4/sF3RrshdyV3sAGMXVUmpMYOw+dLpOuw== + nice-try@^1.0.4: version "1.0.5" resolved "https://registry.yarnpkg.com/nice-try/-/nice-try-1.0.5.tgz#a3378a7696ce7d223e88fc9b764bd7ef1089e366" @@ -5104,23 +5737,24 @@ node-modules-regexp@^1.0.0: resolved "https://registry.yarnpkg.com/node-modules-regexp/-/node-modules-regexp-1.0.0.tgz#8d9dbe28964a4ac5712e9131642107c71e90ec40" integrity sha1-jZ2+KJZKSsVxLpExZCEHxx6Q7EA= -node-notifier@^5.4.2: - version "5.4.3" - resolved "https://registry.yarnpkg.com/node-notifier/-/node-notifier-5.4.3.tgz#cb72daf94c93904098e28b9c590fd866e464bd50" - integrity sha512-M4UBGcs4jeOK9CjTsYwkvH6/MzuUmGCyTW+kCY7uO+1ZVr0+FHGdPdIf5CCLqAaxnRrWidyoQlNkMIIVwbKB8Q== +node-notifier@^8.0.0: + version "8.0.2" + resolved "https://registry.yarnpkg.com/node-notifier/-/node-notifier-8.0.2.tgz#f3167a38ef0d2c8a866a83e318c1ba0efeb702c5" + integrity sha512-oJP/9NAdd9+x2Q+rfphB2RJCHjod70RcRLjosiPMMu5gjIfwVnOUGq2nbTjTUbmy0DJ/tFIVT30+Qe3nzl4TJg== dependencies: growly "^1.3.0" - is-wsl "^1.1.0" - semver "^5.5.0" + is-wsl "^2.2.0" + semver "^7.3.2" shellwords "^0.1.1" - which "^1.3.0" + uuid "^8.3.0" + which "^2.0.2" node-releases@^1.1.70: version "1.1.70" resolved "https://registry.yarnpkg.com/node-releases/-/node-releases-1.1.70.tgz#66e0ed0273aa65666d7fe78febe7634875426a08" integrity sha512-Slf2s69+2/uAD79pVVQo8uSiC34+g8GWY8UH2Qtqv34ZfhYrxpYpfzs9Js9d6O0mbDmALuxaTlplnBTnSELcrw== -normalize-package-data@^2.3.2: +normalize-package-data@^2.5.0: version "2.5.0" resolved "https://registry.yarnpkg.com/normalize-package-data/-/normalize-package-data-2.5.0.tgz#e66db1838b200c1dfc233225d12cb36520e234a8" integrity sha512-/5CMN3T0R4XTj4DcGaexo+roZSdSFW/0AOOTROrjxzCG1wrWXEsGbRKevjlIL+ZDE4sZlJr5ED4YW0yqmkK+eA== @@ -5161,7 +5795,7 @@ number-is-nan@^1.0.0: resolved "https://registry.yarnpkg.com/number-is-nan/-/number-is-nan-1.0.1.tgz#097b602b53422a522c1afb8790318336941a011d" integrity sha1-CXtgK1NCKlIsGvuHkDGDNpQaAR0= -nwsapi@^2.0.7, nwsapi@^2.2.0: +nwsapi@^2.2.0: version "2.2.0" resolved "https://registry.yarnpkg.com/nwsapi/-/nwsapi-2.2.0.tgz#204879a9e3d068ff2a55139c2c772780681a38b7" integrity sha512-h2AatdwYH+JHiZpv7pt/gSX1XoRGb7L/qSIeuqA6GwYoF9w1vP1cw42TO0aI2pNyshRK5893hNSl+1//vHK7hQ== @@ -5185,11 +5819,6 @@ object-copy@^0.1.0: define-property "^0.2.5" kind-of "^3.0.3" -object-inspect@^1.9.0: - version "1.9.0" - resolved "https://registry.yarnpkg.com/object-inspect/-/object-inspect-1.9.0.tgz#c90521d74e1127b67266ded3394ad6116986533a" - integrity sha512-i3Bp9iTqwhaLZBxGkRfo5ZbE07BQRT7MGu8+nNgwW9ItGp1TzCTw2DLEoWwjClxBjOFI/hWljTAmYGCEwmtnOw== - object-is@^1.0.1: version "1.1.4" resolved "https://registry.yarnpkg.com/object-is/-/object-is-1.1.4.tgz#63d6c83c00a43f4cbc9434eb9757c8a5b8565068" @@ -5224,7 +5853,7 @@ object-visit@^1.0.0: dependencies: isobject "^3.0.0" -object.assign@^4.1.0, object.assign@^4.1.2: +object.assign@^4.1.0: version "4.1.2" resolved "https://registry.yarnpkg.com/object.assign/-/object.assign-4.1.2.tgz#0ed54a342eceb37b38ff76eb831a0e788cb63940" integrity sha512-ixT2L5THXsApyiUPYKmW+2EHpXXe5Ii3M+f4e+aJFAHao5amFRW6J0OO6c/LU8Be47utCx2GL89hxGB6XSmKuQ== @@ -5234,15 +5863,6 @@ object.assign@^4.1.0, object.assign@^4.1.2: has-symbols "^1.0.1" object-keys "^1.1.1" -object.getownpropertydescriptors@^2.1.1: - version "2.1.1" - resolved "https://registry.yarnpkg.com/object.getownpropertydescriptors/-/object.getownpropertydescriptors-2.1.1.tgz#0dfda8d108074d9c563e80490c883b6661091544" - integrity sha512-6DtXgZ/lIZ9hqx4GtZETobXLR/ZLaa0aqV0kzbn80Rf8Z2e/XFnhA0I7p07N2wH8bBBltr2xQPi6sbKWAY2Eng== - dependencies: - call-bind "^1.0.0" - define-properties "^1.1.3" - es-abstract "^1.18.0-next.1" - object.pick@^1.3.0: version "1.3.0" resolved "https://registry.yarnpkg.com/object.pick/-/object.pick-1.3.0.tgz#87a10ac4c1694bd2e1cbf53591a66141fb5dd747" @@ -5303,12 +5923,10 @@ ospath@^1.2.2: resolved "https://registry.yarnpkg.com/ospath/-/ospath-1.2.2.tgz#1276639774a3f8ef2572f7fe4280e0ea4550c07b" integrity sha1-EnZjl3Sj+O8lcvf+QoDg6kVQwHs= -p-each-series@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/p-each-series/-/p-each-series-1.0.0.tgz#930f3d12dd1f50e7434457a22cd6f04ac6ad7f71" - integrity sha1-kw89Et0fUOdDRFeiLNbwSsatf3E= - dependencies: - p-reduce "^1.0.0" +p-each-series@^2.1.0: + version "2.2.0" + resolved "https://registry.yarnpkg.com/p-each-series/-/p-each-series-2.2.0.tgz#105ab0357ce72b202a8a8b94933672657b5e2a9a" + integrity sha512-ycIL2+1V32th+8scbpTvyHNaHe02z0sjgh91XXjAk+ZeXoPN4Z46DVUnzdso0aX4KckKw0FNNFHdjZ2UsZvxiA== p-finally@^1.0.0: version "1.0.0" @@ -5320,30 +5938,25 @@ p-finally@^2.0.0: resolved "https://registry.yarnpkg.com/p-finally/-/p-finally-2.0.1.tgz#bd6fcaa9c559a096b680806f4d657b3f0f240561" integrity sha512-vpm09aKwq6H9phqRQzecoDpD8TmVyGw70qmWlyq5onxY7tqyTTFVvxMykxQSQKILBSFlbXpypIw2T1Ml7+DDtw== -p-limit@^2.0.0: +p-limit@^2.2.0: version "2.3.0" resolved "https://registry.yarnpkg.com/p-limit/-/p-limit-2.3.0.tgz#3dd33c647a214fdfffd835933eb086da0dc21db1" integrity sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w== dependencies: p-try "^2.0.0" -p-locate@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/p-locate/-/p-locate-3.0.0.tgz#322d69a05c0264b25997d9f40cd8a891ab0064a4" - integrity sha512-x+12w/To+4GFfgJhBEpiDcLozRJGegY+Ei7/z0tSLkMmxGZNybVMSfWj9aJn8Z5Fc7dBUNJOOVgPv2H7IwulSQ== +p-locate@^4.1.0: + version "4.1.0" + resolved "https://registry.yarnpkg.com/p-locate/-/p-locate-4.1.0.tgz#a3428bb7088b3a60292f66919278b7c297ad4f07" + integrity sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A== dependencies: - p-limit "^2.0.0" + p-limit "^2.2.0" p-map@^2.0.0: version "2.1.0" resolved "https://registry.yarnpkg.com/p-map/-/p-map-2.1.0.tgz#310928feef9c9ecc65b68b17693018a665cea175" integrity sha512-y3b8Kpd8OAN444hxfBbFfj1FY/RjtTd8tzYwhUqNYXx0fXx2iX4maP4Qr6qhIKbQXI02wTLAda4fYUbDagTUFw== -p-reduce@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/p-reduce/-/p-reduce-1.0.0.tgz#18c2b0dd936a4690a529f8231f58a0fdb6a47dfa" - integrity sha1-GMKw3ZNqRpClKfgjH1ig/bakffo= - p-try@^2.0.0: version "2.2.0" resolved "https://registry.yarnpkg.com/p-try/-/p-try-2.2.0.tgz#cb2868540e313d61de58fafbe35ce9004d5540e6" @@ -5379,14 +5992,6 @@ parse-asn1@^5.0.0, parse-asn1@^5.1.5: pbkdf2 "^3.0.3" safe-buffer "^5.1.1" -parse-json@^4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/parse-json/-/parse-json-4.0.0.tgz#be35f5425be1f7f6c747184f98a788cb99477ee0" - integrity sha1-vjX1Qlvh9/bHRxhPmKeIy5lHfuA= - dependencies: - error-ex "^1.3.1" - json-parse-better-errors "^1.0.1" - parse-json@^5.0.0: version "5.2.0" resolved "https://registry.yarnpkg.com/parse-json/-/parse-json-5.2.0.tgz#c76fc66dee54231c962b22bcc8a72cf2f99753cd" @@ -5397,25 +6002,25 @@ parse-json@^5.0.0: json-parse-even-better-errors "^2.3.0" lines-and-columns "^1.1.6" -parse5@4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/parse5/-/parse5-4.0.0.tgz#6d78656e3da8d78b4ec0b906f7c08ef1dfe3f608" - integrity sha512-VrZ7eOd3T1Fk4XWNXMgiGBK/z0MG48BWG2uQNU4I72fkQuKUTZpl+u9k+CxEG0twMVzSmXEEz12z5Fnw1jIQFA== - parse5@5.1.1: version "5.1.1" resolved "https://registry.yarnpkg.com/parse5/-/parse5-5.1.1.tgz#f68e4e5ba1852ac2cadc00f4555fff6c2abb6178" integrity sha512-ugq4DFI0Ptb+WWjAdOK16+u/nHfiIrcE+sh8kZMaM0WllQKLI9rOUq6c2b7cwPkXdzfQESqvoqK6ug7U/Yyzug== +parse5@6.0.1: + version "6.0.1" + resolved "https://registry.yarnpkg.com/parse5/-/parse5-6.0.1.tgz#e1a1c085c569b3dc08321184f19a39cc27f7c30b" + integrity sha512-Ofn/CTFzRGTTxwpNEs9PP93gXShHcTq255nzRYSKe8AkVpZY7e1fpmTfOyoIvjP5HG7Z2ZM7VS9PPhQGW2pOpw== + pascalcase@^0.1.1: version "0.1.1" resolved "https://registry.yarnpkg.com/pascalcase/-/pascalcase-0.1.1.tgz#b363e55e8006ca6fe21784d2db22bd15d7917f14" integrity sha1-s2PlXoAGym/iF4TS2yK9FdeRfxQ= -path-exists@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/path-exists/-/path-exists-3.0.0.tgz#ce0ebeaa5f78cb18925ea7d810d7b59b010fd515" - integrity sha1-zg6+ql94yxiSXqfYENe1mwEP1RU= +path-exists@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/path-exists/-/path-exists-4.0.0.tgz#513bdbe2d3b95d7762e8c1137efa195c6c61b5b3" + integrity sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w== path-is-absolute@^1.0.0: version "1.0.1" @@ -5437,13 +6042,6 @@ path-parse@^1.0.6: resolved "https://registry.yarnpkg.com/path-parse/-/path-parse-1.0.6.tgz#d62dbb5679405d72c4737ec58600e9ddcf06d24c" integrity sha512-GSmOT2EbHrINBf9SR7CDELwlJ8AENk3Qn7OikK4nFYAu3Ote2+JYNVvkpAEQm3/TLNEJFD/xZJjzyxg3KBWOzw== -path-type@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/path-type/-/path-type-3.0.0.tgz#cef31dc8e0a1a3bb0d105c0cd97cf3bf47f4e36f" - integrity sha512-T2ZUsdZFHgA3u4e5PfPbjd7HDDpxPnQb5jN0SrDsjNSuVXHJqtwTnWqG0B1jZrgmJ/7lj1EmVIByWt1gxGkWvg== - dependencies: - pify "^3.0.0" - path-type@^4.0.0: version "4.0.0" resolved "https://registry.yarnpkg.com/path-type/-/path-type-4.0.0.tgz#84ed01c0a7ba380afe09d90a8c180dcd9d03043b" @@ -5487,16 +6085,6 @@ pify@^2.2.0: resolved "https://registry.yarnpkg.com/pify/-/pify-2.3.0.tgz#ed141a6ac043a849ea588498e7dca8b15330e90c" integrity sha1-7RQaasBDqEnqWISY59yosVMw6Qw= -pify@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/pify/-/pify-3.0.0.tgz#e5a4acd2c101fdf3d9a4d07f0dbc4db49dd28176" - integrity sha1-5aSs0sEB/fPZpNB/DbxNtJ3SgXY= - -pify@^4.0.1: - version "4.0.1" - resolved "https://registry.yarnpkg.com/pify/-/pify-4.0.1.tgz#4b2cd25c50d598735c50292224fd8c6df41e3231" - integrity sha512-uB80kBFb/tfd68bVleG9T5GGsGPjJrLAUpR5PZIrhBnIaRTQRjqdJSsIKkOP6OAIFbj7GOrcudc5pNjZ+geV2g== - pirates@^4.0.1: version "4.0.1" resolved "https://registry.yarnpkg.com/pirates/-/pirates-4.0.1.tgz#643a92caf894566f91b2b986d2c66950a8e2fb87" @@ -5504,17 +6092,12 @@ pirates@^4.0.1: dependencies: node-modules-regexp "^1.0.0" -pkg-dir@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/pkg-dir/-/pkg-dir-3.0.0.tgz#2749020f239ed990881b1f71210d51eb6523bea3" - integrity sha512-/E57AYkoeQ25qkxMj5PBOVgF8Kiu/h7cYS30Z5+R7WaiCCBfLq58ZI/dSeaEKb9WVJV5n/03QwrN3IeWIFllvw== +pkg-dir@^4.2.0: + version "4.2.0" + resolved "https://registry.yarnpkg.com/pkg-dir/-/pkg-dir-4.2.0.tgz#f099133df7ede422e81d1d8448270eeb3e4261f3" + integrity sha512-HRDzbaKjC+AOWVXxAU/x54COGeIv9eb+6CkDSQoNTt4XyWoIJvuPsXizxu/Fr23EiekbtZwmh1IcIG/l/a10GQ== dependencies: - find-up "^3.0.0" - -pn@^1.1.0: - version "1.1.0" - resolved "https://registry.yarnpkg.com/pn/-/pn-1.1.0.tgz#e2f4cef0e219f463c179ab37463e4e1ecdccbafb" - integrity sha512-2qHaIQr2VLRFoxe2nASzsV6ef4yOOH+Fi9FBOVH6cqeSgUnoyySPZkxzLuzd+RYOQTRpROA0ztTMqxROKSb/nA== + find-up "^4.0.0" posix-character-classes@^0.1.0: version "0.1.1" @@ -5536,16 +6119,6 @@ pretty-bytes@^5.4.1: resolved "https://registry.yarnpkg.com/pretty-bytes/-/pretty-bytes-5.5.0.tgz#0cecda50a74a941589498011cf23275aa82b339e" integrity sha512-p+T744ZyjjiaFlMUZZv6YPC5JrkNj8maRmPaQCWFJFplUAzpIUTRaTcS+7wmZtUoFXHtESJb23ISliaWyz3SHA== -pretty-format@^24.9.0: - version "24.9.0" - resolved "https://registry.yarnpkg.com/pretty-format/-/pretty-format-24.9.0.tgz#12fac31b37019a4eea3c11aa9a959eb7628aa7c9" - integrity sha512-00ZMZUiHaJrNfk33guavqgvfJS30sLYf0f8+Srklv0AMPodGGHcoHgksZ3OThYnIvOd+8yMCn0YiEOogjlgsnA== - dependencies: - "@jest/types" "^24.9.0" - ansi-regex "^4.0.0" - ansi-styles "^3.2.0" - react-is "^16.8.4" - pretty-format@^26.0.0, pretty-format@^26.6.2: version "26.6.2" resolved "https://registry.yarnpkg.com/pretty-format/-/pretty-format-26.6.2.tgz#e35c2705f14cb7fe2fe94fa078345b444120fc93" @@ -5596,7 +6169,7 @@ ps-tree@1.2.0: dependencies: event-stream "=3.3.4" -psl@^1.1.28: +psl@^1.1.28, psl@^1.1.33: version "1.8.0" resolved "https://registry.yarnpkg.com/psl/-/psl-1.8.0.tgz#9326f8bcfb013adcc005fdff056acce020e51c24" integrity sha512-RIdOzyoavK+hA18OGGWDqUTsCLhtA7IcZ/6NCs4fFJaHBDab+pDDmDIByWFRQJq2Cd7r1OoQxBGKOaztq+hjIQ== @@ -5687,32 +6260,29 @@ randomfill@^1.0.3: randombytes "^2.0.5" safe-buffer "^5.1.0" -react-is@^16.8.4: - version "16.13.1" - resolved "https://registry.yarnpkg.com/react-is/-/react-is-16.13.1.tgz#789729a4dc36de2999dc156dd6c1d9c18cea56a4" - integrity sha512-24e6ynE2H+OKt4kqsOvNd8kBpV65zoxbA4BVsEOB3ARVWQki/DHzaUoC5KuON/BiccDaCCTZBuOcfZs70kR8bQ== - react-is@^17.0.1: version "17.0.1" resolved "https://registry.yarnpkg.com/react-is/-/react-is-17.0.1.tgz#5b3531bd76a645a4c9fb6e693ed36419e3301339" integrity sha512-NAnt2iGDXohE5LI7uBnLnqvLQMtzhkiAOLXTmv+qnF9Ky7xAPcX8Up/xWIhxvLVGJvuLiNc4xQLtuqDRzb4fSA== -read-pkg-up@^4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/read-pkg-up/-/read-pkg-up-4.0.0.tgz#1b221c6088ba7799601c808f91161c66e58f8978" - integrity sha512-6etQSH7nJGsK0RbG/2TeDzZFa8shjQ1um+SwQQ5cwKy0dhSXdOncEhb1CPpvQG4h7FyOV6EB6YlV0yJvZQNAkA== +read-pkg-up@^7.0.1: + version "7.0.1" + resolved "https://registry.yarnpkg.com/read-pkg-up/-/read-pkg-up-7.0.1.tgz#f3a6135758459733ae2b95638056e1854e7ef507" + integrity sha512-zK0TB7Xd6JpCLmlLmufqykGE+/TlOePD6qKClNW7hHDKFh/J7/7gCWGR7joEQEW1bKq3a3yUZSObOoWLFQ4ohg== dependencies: - find-up "^3.0.0" - read-pkg "^3.0.0" + find-up "^4.1.0" + read-pkg "^5.2.0" + type-fest "^0.8.1" -read-pkg@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/read-pkg/-/read-pkg-3.0.0.tgz#9cbc686978fee65d16c00e2b19c237fcf6e38389" - integrity sha1-nLxoaXj+5l0WwA4rGcI3/Pbjg4k= +read-pkg@^5.2.0: + version "5.2.0" + resolved "https://registry.yarnpkg.com/read-pkg/-/read-pkg-5.2.0.tgz#7bf295438ca5a33e56cd30e053b34ee7250c93cc" + integrity sha512-Ug69mNOpfvKDAc2Q8DRpMjjzdtrnv9HcSMX+4VsZxD1aZ6ZzrIE7rlzXBtWTyhULSMKg076AW6WR5iZpD0JiOg== dependencies: - load-json-file "^4.0.0" - normalize-package-data "^2.3.2" - path-type "^3.0.0" + "@types/normalize-package-data" "^2.4.0" + normalize-package-data "^2.5.0" + parse-json "^5.0.0" + type-fest "^0.6.0" readable-stream@^1.0.26-4: version "1.1.14" @@ -5724,7 +6294,7 @@ readable-stream@^1.0.26-4: isarray "0.0.1" string_decoder "~0.10.x" -readable-stream@^2.2.2: +readable-stream@^2.2.2, readable-stream@~2.3.6: version "2.3.7" resolved "https://registry.yarnpkg.com/readable-stream/-/readable-stream-2.3.7.tgz#1eca1cf711aef814c04f62252a36a62f6cb23b57" integrity sha512-Ebho8K4jIbHAxnuxi7o42OrZgF/ZTNcsZj6nRKyUmkhLFq8CHItp/fy6hQZuZmP/n3yZ9VBUbp4zz/mX8hmYPw== @@ -5763,13 +6333,6 @@ readdirp@^3.3.0, readdirp@~3.5.0: dependencies: picomatch "^2.2.1" -realpath-native@^1.1.0: - version "1.1.0" - resolved "https://registry.yarnpkg.com/realpath-native/-/realpath-native-1.1.0.tgz#2003294fea23fb0672f2476ebe22fcf498a2d65c" - integrity sha512-wlgPA6cCIIg9gKz0fgAPjnzh4yR/LnXovwuo9hvyGvx3h8nX4+/iLZplfUWasXpqD8BdnGnP5njOFjkUwPzvjA== - dependencies: - util.promisify "^1.0.0" - redent@^3.0.0: version "3.0.0" resolved "https://registry.yarnpkg.com/redent/-/redent-3.0.0.tgz#e557b7998316bb53c9f1f56fa626352c6963059f" @@ -5818,6 +6381,11 @@ regexp.prototype.flags@^1.2.0: call-bind "^1.0.2" define-properties "^1.1.3" +regexparam@1.3.0, regexparam@^1.3.0: + version "1.3.0" + resolved "https://registry.yarnpkg.com/regexparam/-/regexparam-1.3.0.tgz#2fe42c93e32a40eff6235d635e0ffa344b92965f" + integrity sha512-6IQpFBv6e5vz1QAqI+V4k8P2e/3gRrqfCJ9FI+O1FLQTO+Uz6RXZEZOPmTJ6hlGj7gkERzY5BRCv09whKP96/g== + regexpu-core@^4.7.1: version "4.7.1" resolved "https://registry.yarnpkg.com/regexpu-core/-/regexpu-core-4.7.1.tgz#2dea5a9a07233298fbf0db91fa9abc4c6e0f8ad6" @@ -5847,6 +6415,21 @@ relateurl@0.2.x: resolved "https://registry.yarnpkg.com/relateurl/-/relateurl-0.2.7.tgz#54dbf377e51440aca90a4cd274600d3ff2d888a9" integrity sha1-VNvzd+UUQKypCkzSdGANP/LYiKk= +relative@^3.0.2: + version "3.0.2" + resolved "https://registry.yarnpkg.com/relative/-/relative-3.0.2.tgz#0dcd8ec54a5d35a3c15e104503d65375b5a5367f" + integrity sha1-Dc2OxUpdNaPBXhBFA9ZTdbWlNn8= + dependencies: + isobject "^2.0.0" + +remarkable@^1.6.2, remarkable@^1.7.1: + version "1.7.4" + resolved "https://registry.yarnpkg.com/remarkable/-/remarkable-1.7.4.tgz#19073cb960398c87a7d6546eaa5e50d2022fcd00" + integrity sha512-e6NKUXgX95whv7IgddywbeN/ItCkWbISmc2DiqHJb0wTrqZIexqdco5b8Z3XZoo/48IdNVKM9ZCvTPJ4F5uvhg== + dependencies: + argparse "^1.0.10" + autolinker "~0.28.0" + remixicon@2.5.0: version "2.5.0" resolved "https://registry.yarnpkg.com/remixicon/-/remixicon-2.5.0.tgz#b5e245894a1550aa23793f95daceadbf96ad1a41" @@ -5881,7 +6464,7 @@ request-promise-core@1.1.4: dependencies: lodash "^4.17.19" -request-promise-native@^1.0.5, request-promise-native@^1.0.8: +request-promise-native@^1.0.8, request-promise-native@^1.0.9: version "1.0.9" resolved "https://registry.yarnpkg.com/request-promise-native/-/request-promise-native-1.0.9.tgz#e407120526a5efdc9a39b28a5679bf47b9d9dc28" integrity sha512-wcW+sIUiWnKgNY0dqCpOZkUbF/I+YPi+f09JZIDa39Ec+q82CpSYniDp+ISgTTbKmnpJWASeJBPZmoxH84wt3g== @@ -5890,7 +6473,7 @@ request-promise-native@^1.0.5, request-promise-native@^1.0.8: stealthy-require "^1.1.1" tough-cookie "^2.3.3" -request@^2.87.0, request@^2.88.2: +request@^2.88.2: version "2.88.2" resolved "https://registry.yarnpkg.com/request/-/request-2.88.2.tgz#d73c918731cb5a87da047e207234146f664d12b3" integrity sha512-MsvtOrfG9ZcrOwAW+Qi+F6HbD0CWXEh9ou77uOb7FM2WPhwT7smM833PzanhJLsgXjN89Ir6V2PczXNnMpwKhw== @@ -5931,34 +6514,29 @@ require-relative@^0.8.7: resolved "https://registry.yarnpkg.com/require-relative/-/require-relative-0.8.7.tgz#7999539fc9e047a37928fa196f8e1563dabd36de" integrity sha1-eZlTn8ngR6N5KPoZb44VY9q9Nt4= -resolve-cwd@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/resolve-cwd/-/resolve-cwd-2.0.0.tgz#00a9f7387556e27038eae232caa372a6a59b665a" - integrity sha1-AKn3OHVW4nA46uIyyqNypqWbZlo= - dependencies: - resolve-from "^3.0.0" - -resolve-from@^3.0.0: +resolve-cwd@^3.0.0: version "3.0.0" - resolved "https://registry.yarnpkg.com/resolve-from/-/resolve-from-3.0.0.tgz#b22c7af7d9d6881bc8b6e653335eebcb0a188748" - integrity sha1-six699nWiBvItuZTM17rywoYh0g= + resolved "https://registry.yarnpkg.com/resolve-cwd/-/resolve-cwd-3.0.0.tgz#0f0075f1bb2544766cf73ba6a6e2adfebcb13f2d" + integrity sha512-OrZaX2Mb+rJCpH/6CpSqt9xFVpN++x01XnN2ie9g6P5/3xelLAkXWVADpdz1IHD/KFfEXyE6V0U01OQ3UO2rEg== + dependencies: + resolve-from "^5.0.0" resolve-from@^4.0.0: version "4.0.0" resolved "https://registry.yarnpkg.com/resolve-from/-/resolve-from-4.0.0.tgz#4abcd852ad32dd7baabfe9b40e00a36db5f392e6" integrity sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g== +resolve-from@^5.0.0: + version "5.0.0" + resolved "https://registry.yarnpkg.com/resolve-from/-/resolve-from-5.0.0.tgz#c35225843df8f776df21c57557bc087e9dfdfc69" + integrity sha512-qYg9KP24dD5qka9J47d0aVky0N+b4fTU89LN9iDnjB5waksiC49rvMB0PrUJQGoTmH50XPiqOvAjDfaijGxYZw== + resolve-url@^0.2.1: version "0.2.1" resolved "https://registry.yarnpkg.com/resolve-url/-/resolve-url-0.2.1.tgz#2c637fe77c893afd2a663fe21aa9080068e2052a" integrity sha1-LGN/53yJOv0qZj/iGqkIAGjiBSo= -resolve@1.1.7: - version "1.1.7" - resolved "https://registry.yarnpkg.com/resolve/-/resolve-1.1.7.tgz#203114d82ad2c5ed9e8e0411b3932875e889e97b" - integrity sha1-IDEU2CrSxe2ejgQRs5ModeiJ6Xs= - -resolve@^1.10.0, resolve@^1.11.1, resolve@^1.17.0: +resolve@^1.10.0, resolve@^1.11.1, resolve@^1.17.0, resolve@^1.18.1: version "1.20.0" resolved "https://registry.yarnpkg.com/resolve/-/resolve-1.20.0.tgz#629a013fb3f70755d6f0b7935cc1c2c5378b1975" integrity sha512-wENBPt4ySzg4ybFQW2TT1zMQucPK95HSh/nq2CFTZVOGut2+pQvSsgtda4d26YrYcr067wjbmzOG8byDPBX63A== @@ -5992,13 +6570,6 @@ reusify@^1.0.4: resolved "https://registry.yarnpkg.com/reusify/-/reusify-1.0.4.tgz#90da382b1e126efc02146e90845a88db12925d76" integrity sha512-U9nH88a3fc/ekCF1l0/UP1IosiuIjyTh7hBvXVMHYgVcfGvt897Xguj2UOLDeI5BG2m7/uwyaLVT6fbtCwTyzw== -rimraf@^2.5.4, rimraf@^2.6.3: - version "2.7.1" - resolved "https://registry.yarnpkg.com/rimraf/-/rimraf-2.7.1.tgz#35797f13a7fdadc566142c29d4f07ccad483e3ec" - integrity sha512-uWjbaKIK3T1OSVptzX7Nl6PvQ3qAGtKEtVRjRuazjfL3Bx5eI409VZSqgND+4UNnmzLVdPj9FqFJNPqBZFve4w== - dependencies: - glob "^7.1.3" - rimraf@^3.0.0, rimraf@^3.0.2: version "3.0.2" resolved "https://registry.yarnpkg.com/rimraf/-/rimraf-3.0.2.tgz#f1a5402ba6220ad52cc1282bac1ae3aa49fd061a" @@ -6201,19 +6772,19 @@ sane@^4.0.3: minimist "^1.1.1" walker "~1.0.5" -sax@^1.2.4: - version "1.2.4" - resolved "https://registry.yarnpkg.com/sax/-/sax-1.2.4.tgz#2816234e2378bddc4e5354fab5caa895df7100d9" - integrity sha512-NqVDv9TpANUjFm0N8uM5GxL36UgKi9/atZw+x7YFnQ8ckwFGKrl4xX4yWtrey3UJm5nP1kUbnYgLopqWNSRhWw== - -saxes@^5.0.0: +saxes@^5.0.0, saxes@^5.0.1: version "5.0.1" resolved "https://registry.yarnpkg.com/saxes/-/saxes-5.0.1.tgz#eebab953fa3b7608dbe94e5dadb15c888fa6696d" integrity sha512-5LBh1Tls8c9xgGjw3QrMwETmTMVk0oFgvrFSvWx62llR2hcEInrKNZ2GZCCuuy2lvWrdl5jhbpeqc5hRYKFOcw== dependencies: xmlchars "^2.2.0" -"semver@2 || 3 || 4 || 5", semver@^5.4.1, semver@^5.5.0, semver@^5.5.1, semver@^5.6.0: +self-closing-tags@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/self-closing-tags/-/self-closing-tags-1.0.1.tgz#6c5fa497994bb826b484216916371accee490a5d" + integrity sha512-7t6hNbYMxM+VHXTgJmxwgZgLGktuXtVVD5AivWzNTdJBM4DBjnDKDzkf2SrNjihaArpeJYNjxkELBu1evI4lQA== + +"semver@2 || 3 || 4 || 5", semver@^5.4.1, semver@^5.5.0, semver@^5.5.1: version "5.7.1" resolved "https://registry.yarnpkg.com/semver/-/semver-5.7.1.tgz#a954f931aeba508d307bbf069eff0c01c96116f7" integrity sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ== @@ -6223,11 +6794,18 @@ semver@7.0.0: resolved "https://registry.yarnpkg.com/semver/-/semver-7.0.0.tgz#5f3ca35761e47e05b206c6daff2cf814f0316b8e" integrity sha512-+GB6zVA9LWh6zovYQLALHwv5rb2PHGlJi3lfiqIHxR0uuwCgefcOJc59v9fv1w8GbStwxuuqqAjI9NMAOOgq1A== -semver@^6.0.0, semver@^6.2.0: +semver@^6.0.0, semver@^6.3.0: version "6.3.0" resolved "https://registry.yarnpkg.com/semver/-/semver-6.3.0.tgz#ee0a64c8af5e8ceea67687b133761e1becbd1d3d" integrity sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw== +semver@^7.3.2: + version "7.3.5" + resolved "https://registry.yarnpkg.com/semver/-/semver-7.3.5.tgz#0b621c879348d8998e4b0e4be94b3f12e6018ef7" + integrity sha512-PoeGJYh8HK4BTO/a9Tf6ZG3veo/A7ZVsYrSA6J8ny9nb3B1VrpkuN+z9OE5wfE5p6H4LchYZsegiQgbJD94ZFQ== + dependencies: + lru-cache "^6.0.0" + semver@~2.3.1: version "2.3.2" resolved "https://registry.yarnpkg.com/semver/-/semver-2.3.2.tgz#b9848f25d6cf36333073ec9ef8856d42f1233e52" @@ -6245,6 +6823,13 @@ set-blocking@^2.0.0: resolved "https://registry.yarnpkg.com/set-blocking/-/set-blocking-2.0.0.tgz#045f9782d011ae9a6803ddd382b24392b3d890f7" integrity sha1-BF+XgtARrppoA93TgrJDkrPYkPc= +set-getter@^0.1.0: + version "0.1.0" + resolved "https://registry.yarnpkg.com/set-getter/-/set-getter-0.1.0.tgz#d769c182c9d5a51f409145f2fba82e5e86e80376" + integrity sha1-12nBgsnVpR9AkUXy+6guXoboA3Y= + dependencies: + to-object-path "^0.3.0" + set-value@^2.0.0, set-value@^2.0.1: version "2.0.1" resolved "https://registry.yarnpkg.com/set-value/-/set-value-2.0.1.tgz#a18d40530e6f07de4228c7defe4227af8cad005b" @@ -6299,6 +6884,13 @@ shortid@2.2.15: dependencies: nanoid "^2.1.0" +shortid@^2.2.15: + version "2.2.16" + resolved "https://registry.yarnpkg.com/shortid/-/shortid-2.2.16.tgz#b742b8f0cb96406fd391c76bfc18a67a57fe5608" + integrity sha512-Ugt+GIZqvGXCIItnsL+lvFJOiN7RYqlGy7QE41O3YC1xbNSeDGIRO7xg2JJXIAj1cAGnOeC1r7/T9pgrtQbv4g== + dependencies: + nanoid "^2.1.0" + signal-exit@^3.0.0, signal-exit@^3.0.2: version "3.0.3" resolved "https://registry.yarnpkg.com/signal-exit/-/signal-exit-3.0.3.tgz#a1410c2edd8f077b08b4e253c8eacfcaf057461c" @@ -6330,11 +6922,6 @@ sisteransi@^1.0.5: resolved "https://registry.yarnpkg.com/sisteransi/-/sisteransi-1.0.5.tgz#134d681297756437cc05ca01370d3a7a571075ed" integrity sha512-bLGGlR1QxBcynn2d5YmDX4MGjlZvy2MRBDRNHLJ8VI6l6+9FUiyTFNJ0IveOSP0bcXgVDPRcfGqA0pjaqUpfVg== -slash@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/slash/-/slash-2.0.0.tgz#de552851a1759df3a8f206535442f5ec4ddeab44" - integrity sha512-ZYKh3Wh2z1PpEXWr0MpSBZ0V6mZHAQfYevttO11c51CaWjGTaadiKZ+wVt1PbMlDV5qhMFslpZCemhwOK7C89A== - slash@^3.0.0: version "3.0.0" resolved "https://registry.yarnpkg.com/slash/-/slash-3.0.0.tgz#6539be870c165adbd5240220dbe361f1bc4d4634" @@ -6417,7 +7004,7 @@ source-map@^0.6.0, source-map@^0.6.1, source-map@~0.6.0, source-map@~0.6.1: resolved "https://registry.yarnpkg.com/source-map/-/source-map-0.6.1.tgz#74722af32e9614e9c287a8d0bbde48b5e2f1a263" integrity sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g== -source-map@~0.7.2: +source-map@^0.7.3, source-map@~0.7.2: version "0.7.3" resolved "https://registry.yarnpkg.com/source-map/-/source-map-0.7.3.tgz#5302f8169031735226544092e64981f751750383" integrity sha512-CkCj6giN3S+n9qrYiBTX5gystlENnRW5jZeNLHpe6aue+SrHcG5VYwujhW9s4dY31mEGsxBDrHR6oI69fTXsaQ== @@ -6487,10 +7074,10 @@ sshpk@^1.7.0: safer-buffer "^2.0.2" tweetnacl "~0.14.0" -stack-utils@^1.0.1: - version "1.0.4" - resolved "https://registry.yarnpkg.com/stack-utils/-/stack-utils-1.0.4.tgz#4b600971dcfc6aed0cbdf2a8268177cc916c87c8" - integrity sha512-IPDJfugEGbfizBwBZRZ3xpccMdRyP5lqsBWXGQWimVjua/ccLCeMOAVjlc1R7LxFjo5sEDhyNIXd8mo/AiDS9w== +stack-utils@^2.0.2: + version "2.0.3" + resolved "https://registry.yarnpkg.com/stack-utils/-/stack-utils-2.0.3.tgz#cd5f030126ff116b78ccb3c027fe302713b61277" + integrity sha512-gL//fkxfWUsIlFL2Tl42Cl6+HFALEaB1FU76I/Fy+oZjRreP7OPMXFlGbxM7NQsI0ZpUfw76sHnv0WNYuTb7Iw== dependencies: escape-string-regexp "^2.0.0" @@ -6527,13 +7114,13 @@ stream-combiner@~0.0.4: dependencies: duplexer "~0.1.1" -string-length@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/string-length/-/string-length-2.0.0.tgz#d40dbb686a3ace960c1cffca562bf2c45f8363ed" - integrity sha1-1A27aGo6zpYMHP/KVivyxF+DY+0= +string-length@^4.0.1: + version "4.0.2" + resolved "https://registry.yarnpkg.com/string-length/-/string-length-4.0.2.tgz#a8a8dc7bd5c1a82b9b3c8b87e125f66871b6e57a" + integrity sha512-+l6rNN5fYHNhZZy41RXsYptCjA2Igmq4EG7kZAYFQI1E1VTXarr6ZPXBg6eq7Y6eK4FEhY6AJlyuFIb/v/S0VQ== dependencies: - astral-regex "^1.0.0" - strip-ansi "^4.0.0" + char-regex "^1.0.2" + strip-ansi "^6.0.0" string-range@~1.2, string-range@~1.2.1: version "1.2.2" @@ -6557,14 +7144,14 @@ string-width@^2.1.1: is-fullwidth-code-point "^2.0.0" strip-ansi "^4.0.0" -string-width@^3.0.0, string-width@^3.1.0: - version "3.1.0" - resolved "https://registry.yarnpkg.com/string-width/-/string-width-3.1.0.tgz#22767be21b62af1081574306f69ac51b62203961" - integrity sha512-vafcv6KjVZKSgz06oM/H6GDBrAtz8vdhQakGjFIvNrHA6y3HCF1CInLy+QLq8dTJPQ1b+KDUqDFctkdRW44e1w== +string-width@^4.1.0: + version "4.2.2" + resolved "https://registry.yarnpkg.com/string-width/-/string-width-4.2.2.tgz#dafd4f9559a7585cfba529c6a0a4f73488ebd4c5" + integrity sha512-XBJbT3N4JhVumXE0eoLU9DCjcaF92KLNqTmFCnG1pf8duUxFGwtP6AD6nkjw9a3IdiRtL3E2w3JDiE/xi3vOeA== dependencies: - emoji-regex "^7.0.1" - is-fullwidth-code-point "^2.0.0" - strip-ansi "^5.1.0" + emoji-regex "^8.0.0" + is-fullwidth-code-point "^3.0.0" + strip-ansi "^6.0.0" string-width@^4.2.0: version "4.2.0" @@ -6575,22 +7162,6 @@ string-width@^4.2.0: is-fullwidth-code-point "^3.0.0" strip-ansi "^6.0.0" -string.prototype.trimend@^1.0.3: - version "1.0.3" - resolved "https://registry.yarnpkg.com/string.prototype.trimend/-/string.prototype.trimend-1.0.3.tgz#a22bd53cca5c7cf44d7c9d5c732118873d6cd18b" - integrity sha512-ayH0pB+uf0U28CtjlLvL7NaohvR1amUvVZk+y3DYb0Ey2PUV5zPkkKy9+U1ndVEIXO8hNg18eIv9Jntbii+dKw== - dependencies: - call-bind "^1.0.0" - define-properties "^1.1.3" - -string.prototype.trimstart@^1.0.3: - version "1.0.3" - resolved "https://registry.yarnpkg.com/string.prototype.trimstart/-/string.prototype.trimstart-1.0.3.tgz#9b4cb590e123bb36564401d59824298de50fd5aa" - integrity sha512-oBIBUy5lea5tt0ovtOFiEQaBkoBBkyJhZXzJYrSmDo5IUUqbOPvVezuRs/agBIdZ2p2Eo1FD6bD9USyBLfl3xg== - dependencies: - call-bind "^1.0.0" - define-properties "^1.1.3" - string_decoder@^1.1.1: version "1.3.0" resolved "https://registry.yarnpkg.com/string_decoder/-/string_decoder-1.3.0.tgz#42f114594a46cf1a8e30b0a84f56c78c3edac21e" @@ -6624,13 +7195,6 @@ strip-ansi@^4.0.0: dependencies: ansi-regex "^3.0.0" -strip-ansi@^5.0.0, strip-ansi@^5.1.0, strip-ansi@^5.2.0: - version "5.2.0" - resolved "https://registry.yarnpkg.com/strip-ansi/-/strip-ansi-5.2.0.tgz#8c9a536feb6afc962bdfa5b104a5091c1ad9c0ae" - integrity sha512-DuRs1gKbBqsMKIZlrffwlug8MHkcnpjs5VPmL1PAh+mA30U0DTotfDZ0d2UUsXpPmPmMMJ6W773MaA3J+lbiWA== - dependencies: - ansi-regex "^4.1.0" - strip-ansi@^6.0.0: version "6.0.0" resolved "https://registry.yarnpkg.com/strip-ansi/-/strip-ansi-6.0.0.tgz#0b1571dd7669ccd4f3e06e14ef1eed26225ae532" @@ -6638,10 +7202,10 @@ strip-ansi@^6.0.0: dependencies: ansi-regex "^5.0.0" -strip-bom@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/strip-bom/-/strip-bom-3.0.0.tgz#2334c18e9c759f7bdd56fdef7e9ae3d588e68ed3" - integrity sha1-IzTBjpx1n3vdVv3vfprj1YjmjtM= +strip-bom@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/strip-bom/-/strip-bom-4.0.0.tgz#9c3505c1db45bcedca3d9cf7a16f5c5aa3901878" + integrity sha512-3xurFv5tEgii33Zi8Jtp55wEIILR9eh34FAW00PZf+JnSsTmV/ioewSgQl97JHvgjoRGwPShsWm+IdrxB35d0w== strip-eof@^1.0.0: version "1.0.0" @@ -6660,6 +7224,16 @@ strip-indent@^3.0.0: dependencies: min-indent "^1.0.0" +striptags@^3.1.0: + version "3.1.1" + resolved "https://registry.yarnpkg.com/striptags/-/striptags-3.1.1.tgz#c8c3e7fdd6fb4bb3a32a3b752e5b5e3e38093ebd" + integrity sha1-yMPn/db7S7OjKjt1LltePjgJPr0= + +success-symbol@^0.1.0: + version "0.1.0" + resolved "https://registry.yarnpkg.com/success-symbol/-/success-symbol-0.1.0.tgz#24022e486f3bf1cdca094283b769c472d3b72897" + integrity sha1-JAIuSG878c3KCUKDt2nEctO3KJc= + supports-color@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-2.0.0.tgz#535d045ce6b6363fa40117084629995e9df324c7" @@ -6672,13 +7246,6 @@ supports-color@^5.3.0: dependencies: has-flag "^3.0.0" -supports-color@^6.1.0: - version "6.1.0" - resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-6.1.0.tgz#0764abc69c63d5ac842dd4867e8d025e880df8f3" - integrity sha512-qe1jfm1Mg7Nq/NSh6XE24gPXROEVsWHxC1LIx//XNlD9iw7YZQGjZNjYN7xGaEG6iKdA8EtNFW6R0gjnVXp+wQ== - dependencies: - has-flag "^3.0.0" - supports-color@^7.0.0, supports-color@^7.1.0, supports-color@^7.2.0: version "7.2.0" resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-7.2.0.tgz#1b7dcdcb32b8138801b3e478ba6a51caa89648da" @@ -6686,6 +7253,14 @@ supports-color@^7.0.0, supports-color@^7.1.0, supports-color@^7.2.0: dependencies: has-flag "^4.0.0" +supports-hyperlinks@^2.0.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/supports-hyperlinks/-/supports-hyperlinks-2.1.0.tgz#f663df252af5f37c5d49bbd7eeefa9e0b9e59e47" + integrity sha512-zoE5/e+dnEijk6ASB6/qrK+oYdm2do1hjoLWrqUC/8WEIW1gbxFcKuBof7sW8ArN6e+AYvsE8HBGiVRWL/F5CA== + dependencies: + has-flag "^4.0.0" + supports-color "^7.0.0" + svelte-dnd-action@^0.8.9: version "0.8.9" resolved "https://registry.yarnpkg.com/svelte-dnd-action/-/svelte-dnd-action-0.8.9.tgz#90fa211057a5d9e832d5521511f9c1b87242d2ae" @@ -6720,6 +7295,13 @@ svelte-portal@^1.0.0: resolved "https://registry.yarnpkg.com/svelte-portal/-/svelte-portal-1.0.0.tgz#36a47c5578b1a4d9b4dc60fa32a904640ec4cdd3" integrity sha512-nHf+DS/jZ6jjnZSleBMSaZua9JlG5rZv9lOGKgJuaZStfevtjIlUJrkLc3vbV8QdBvPPVmvcjTlazAzfKu0v3Q== +svelte-spa-router@^3.0.5: + version "3.1.0" + resolved "https://registry.yarnpkg.com/svelte-spa-router/-/svelte-spa-router-3.1.0.tgz#a929f0def7e12c41f32bc356f91685aeadcd75bf" + integrity sha512-jlM/xwjn57mylr+pzHYCOOy+IPQauT46gOucNGTBu6jHcFXu3F+oaojN4PXC1LYizRGxFB6QA0qnYbZnRfX7Sg== + dependencies: + regexparam "1.3.0" + svelte@^3.30.0: version "3.32.3" resolved "https://registry.yarnpkg.com/svelte/-/svelte-3.32.3.tgz#db0c50c65573ecffe4e2f4924e4862d8f9feda74" @@ -6730,7 +7312,7 @@ symbol-observable@^1.1.0: resolved "https://registry.yarnpkg.com/symbol-observable/-/symbol-observable-1.2.0.tgz#c22688aed4eab3cdc2dfeacbb561660560a00804" integrity sha512-e900nM8RRtGhlV36KGEU9k65K3mPb1WV70OdjfxlG2EAuM1noi/E/BaW/uMhL7bPEssK8QV57vN3esixjUvcXQ== -symbol-tree@^3.2.2, symbol-tree@^3.2.4: +symbol-tree@^3.2.4: version "3.2.4" resolved "https://registry.yarnpkg.com/symbol-tree/-/symbol-tree-3.2.4.tgz#430637d248ba77e078883951fb9aa0eed7c63fa2" integrity sha512-9QNk5KwDF+Bvz+PyObkmSYjI5ksVUYtjW7AU22r2NKcfLJcXp96hkDWU3+XndOsUb+AQ9QhfzfCT2O+CNWT5Tw== @@ -6740,6 +7322,14 @@ synchronous-promise@^2.0.13: resolved "https://registry.yarnpkg.com/synchronous-promise/-/synchronous-promise-2.0.15.tgz#07ca1822b9de0001f5ff73595f3d08c4f720eb8e" integrity sha512-k8uzYIkIVwmT+TcglpdN50pS2y1BDcUnBPK9iJeGu0Pl1lOI8pD6wtzgw91Pjpe+RxtTncw32tLxs/R0yNL2Mg== +terminal-link@^2.0.0: + version "2.1.1" + resolved "https://registry.yarnpkg.com/terminal-link/-/terminal-link-2.1.1.tgz#14a64a27ab3c0df933ea546fba55f2d078edc994" + integrity sha512-un0FmiRUQNr5PJqy9kP7c40F5BOfpGlYTrxonDChEZB7pzZxRNp/bt+ymiy9/npwXya9KH99nJ/GXFIiUkYGFQ== + dependencies: + ansi-escapes "^4.2.1" + supports-hyperlinks "^2.0.0" + terser@^5.0.0: version "5.6.0" resolved "https://registry.yarnpkg.com/terser/-/terser-5.6.0.tgz#138cdf21c5e3100b1b3ddfddf720962f88badcd2" @@ -6749,31 +7339,43 @@ terser@^5.0.0: source-map "~0.7.2" source-map-support "~0.5.19" -test-exclude@^5.2.3: - version "5.2.3" - resolved "https://registry.yarnpkg.com/test-exclude/-/test-exclude-5.2.3.tgz#c3d3e1e311eb7ee405e092dac10aefd09091eac0" - integrity sha512-M+oxtseCFO3EDtAaGH7iiej3CBkzXqFMbzqYAACdzKui4eZA+pq3tZEwChvOdNfa7xxy8BfbmgJSIr43cC/+2g== +test-exclude@^6.0.0: + version "6.0.0" + resolved "https://registry.yarnpkg.com/test-exclude/-/test-exclude-6.0.0.tgz#04a8698661d805ea6fa293b6cb9e63ac044ef15e" + integrity sha512-cAGWPIyOHU6zlmg88jwm7VRyXnMN7iV68OGAbYDk/Mh/xC/pzVPlQtY6ngoIH/5/tciuhGfvESU8GrHrcxD56w== dependencies: - glob "^7.1.3" + "@istanbuljs/schema" "^0.1.2" + glob "^7.1.4" minimatch "^3.0.4" - read-pkg-up "^4.0.0" - require-main-filename "^2.0.0" -throat@^4.0.0: - version "4.1.0" - resolved "https://registry.yarnpkg.com/throat/-/throat-4.1.0.tgz#89037cbc92c56ab18926e6ba4cbb200e15672a6a" - integrity sha1-iQN8vJLFarGJJua6TLsgDhVnKmo= +throat@^5.0.0: + version "5.0.0" + resolved "https://registry.yarnpkg.com/throat/-/throat-5.0.0.tgz#c5199235803aad18754a667d659b5e72ce16764b" + integrity sha512-fcwX4mndzpLQKBS1DVYhGAcYaYt7vsHNIvQV+WXMvnow5cgjPphq5CaayLaGsjRdSCKZFNGt7/GYAuXaNOiYCA== throttleit@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/throttleit/-/throttleit-1.0.0.tgz#9e785836daf46743145a5984b6268d828528ac6c" integrity sha1-nnhYNtr0Z0MUWlmEtiaNgoUorGw= +through2@^2.0.0: + version "2.0.5" + resolved "https://registry.yarnpkg.com/through2/-/through2-2.0.5.tgz#01c1e39eb31d07cb7d03a96a70823260b23132cd" + integrity sha512-/mrRod8xqpA+IHSLyGCQ2s8SPHiCDEeQJSep1jqLYeEUClOFG2Qsh+4FU6G9VeqpZnGW/Su8LQGc4YKni5rYSQ== + dependencies: + readable-stream "~2.3.6" + xtend "~4.0.1" + through@2, through@~2.3, through@~2.3.1: version "2.3.8" resolved "https://registry.yarnpkg.com/through/-/through-2.3.8.tgz#0dd4c9ffaabc357960b1b724115d7e0e86a2e1f5" integrity sha1-DdTJ/6q8NXlgsbckEV1+Doai4fU= +time-stamp@^1.0.1: + version "1.1.0" + resolved "https://registry.yarnpkg.com/time-stamp/-/time-stamp-1.1.0.tgz#764a5a11af50561921b133f3b44e618687e0f5c3" + integrity sha1-dkpaEa9QVhkhsTPztE5hhofg9cM= + tinydate@^1.0.0: version "1.3.0" resolved "https://registry.yarnpkg.com/tinydate/-/tinydate-1.3.0.tgz#e6ca8e5a22b51bb4ea1c3a2a4fd1352dbd4c57fb" @@ -6796,6 +7398,11 @@ to-fast-properties@^2.0.0: resolved "https://registry.yarnpkg.com/to-fast-properties/-/to-fast-properties-2.0.0.tgz#dc5e698cbd079265bc73e0377681a4e4e83f616e" integrity sha1-3F5pjL0HkmW8c+A3doGk5Og/YW4= +to-gfm-code-block@^0.1.1: + version "0.1.1" + resolved "https://registry.yarnpkg.com/to-gfm-code-block/-/to-gfm-code-block-0.1.1.tgz#25d045a5fae553189e9637b590900da732d8aa82" + integrity sha1-JdBFpfrlUxielje1kJANpzLYqoI= + to-object-path@^0.3.0: version "0.3.0" resolved "https://registry.yarnpkg.com/to-object-path/-/to-object-path-0.3.0.tgz#297588b7b0e7e0ac08e04e672f85c1f4999e17af" @@ -6833,7 +7440,7 @@ toposort@^2.0.2: resolved "https://registry.yarnpkg.com/toposort/-/toposort-2.0.2.tgz#ae21768175d1559d48bef35420b2f4962f09c330" integrity sha1-riF2gXXRVZ1IvvNUILL0li8JwzA= -tough-cookie@^2.3.3, tough-cookie@^2.3.4, tough-cookie@~2.5.0: +tough-cookie@^2.3.3, tough-cookie@~2.5.0: version "2.5.0" resolved "https://registry.yarnpkg.com/tough-cookie/-/tough-cookie-2.5.0.tgz#cd9fb2a0aa1d5a12b473bd9fb96fa3dcff65ade2" integrity sha512-nlLsUzgm1kfLXSXfRZMc1KLAugd4hqJHDTvc2hDIwS3mZAfMEuMbc03SujMF+GEcpaX/qboeycw6iO8JwVv2+g== @@ -6850,12 +7457,14 @@ tough-cookie@^3.0.1: psl "^1.1.28" punycode "^2.1.1" -tr46@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/tr46/-/tr46-1.0.1.tgz#a8b13fd6bfd2489519674ccde55ba3693b706d09" - integrity sha1-qLE/1r/SSJUZZ0zN5VujaTtwbQk= +tough-cookie@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/tough-cookie/-/tough-cookie-4.0.0.tgz#d822234eeca882f991f0f908824ad2622ddbece4" + integrity sha512-tHdtEpQCMrc1YLrMaqXXcj6AxhYi/xgit6mZu1+EDWUn+qhUf8wMQoFIy9NXuq23zAwtcB0t/MjACGR18pcRbg== dependencies: - punycode "^2.1.0" + psl "^1.1.33" + punycode "^2.1.1" + universalify "^0.1.2" tr46@^2.0.2: version "2.0.2" @@ -6895,6 +7504,33 @@ type-check@~0.3.2: dependencies: prelude-ls "~1.1.2" +type-detect@4.0.8: + version "4.0.8" + resolved "https://registry.yarnpkg.com/type-detect/-/type-detect-4.0.8.tgz#7646fb5f18871cfbb7749e69bd39a6388eb7450c" + integrity sha512-0fr/mIH1dlO+x7TlcMy+bIDqKPsw/70tVyeHW787goQjhmqaZe10uwLujubK9q9Lg6Fiho1KUKDYz0Z7k7g5/g== + +type-fest@^0.21.3: + version "0.21.3" + resolved "https://registry.yarnpkg.com/type-fest/-/type-fest-0.21.3.tgz#d260a24b0198436e133fa26a524a6d65fa3b2e37" + integrity sha512-t0rzBq87m3fVcduHDUFhKmyyX+9eo6WQjZvf51Ea/M0Q7+T374Jp1aUiyUl0GKxp8M/OETVHSDvmkyPgvX+X2w== + +type-fest@^0.6.0: + version "0.6.0" + resolved "https://registry.yarnpkg.com/type-fest/-/type-fest-0.6.0.tgz#8d2a2370d3df886eb5c90ada1c5bf6188acf838b" + integrity sha512-q+MB8nYR1KDLrgr4G5yemftpMC7/QLqVndBmEEdqzmNj5dcFOO4Oo8qlwZE3ULT3+Zim1F8Kq4cBnikNhlCMlg== + +type-fest@^0.8.1: + version "0.8.1" + resolved "https://registry.yarnpkg.com/type-fest/-/type-fest-0.8.1.tgz#09e249ebde851d3b1e48d27c105444667f17b83d" + integrity sha512-4dbzIzqvjtgiM5rw1k5rEHtBANKmdudhGyBEajN01fEyhaAIhsoKNy6y7+IN93IfpFtwY9iqi7kD+xwKhQsNJA== + +typedarray-to-buffer@^3.1.5: + version "3.1.5" + resolved "https://registry.yarnpkg.com/typedarray-to-buffer/-/typedarray-to-buffer-3.1.5.tgz#a97ee7a9ff42691b9f783ff1bc5112fe3fca9080" + integrity sha512-zdu8XMNEDepKKR+XYOXAVPtWui0ly0NtohUscw+UmaHiAWT8hrV1rr//H6V+0DvJ3OQ19S979M0laLfX8rm82Q== + dependencies: + is-typedarray "^1.0.0" + typedarray-to-buffer@~1.0.0: version "1.0.4" resolved "https://registry.yarnpkg.com/typedarray-to-buffer/-/typedarray-to-buffer-1.0.4.tgz#9bb8ba0e841fb3f4cf1fe7c245e9f3fa8a5fe99c" @@ -6905,6 +7541,13 @@ typedarray@^0.0.6: resolved "https://registry.yarnpkg.com/typedarray/-/typedarray-0.0.6.tgz#867ac74e3864187b1d3d47d996a78ec5c8830777" integrity sha1-hnrHTjhkGHsdPUfZlqeOxciDB3c= +typeof-article@^0.1.1: + version "0.1.1" + resolved "https://registry.yarnpkg.com/typeof-article/-/typeof-article-0.1.1.tgz#9f07e733c3fbb646ffa9e61c08debacd460e06af" + integrity sha1-nwfnM8P7tkb/qeYcCN66zUYOBq8= + dependencies: + kind-of "^3.1.0" + uc.micro@^1.0.1, uc.micro@^1.0.5: version "1.0.6" resolved "https://registry.yarnpkg.com/uc.micro/-/uc.micro-1.0.6.tgz#9c411a802a409a91fc6cf74081baba34b24499ac" @@ -6918,6 +7561,11 @@ uglify-js@3.4.x: commander "~2.19.0" source-map "~0.6.1" +uglify-js@^3.1.4: + version "3.13.2" + resolved "https://registry.yarnpkg.com/uglify-js/-/uglify-js-3.13.2.tgz#fe10319861bccc8682bfe2e8151fbdd8aa921c44" + integrity sha512-SbMu4D2Vo95LMC/MetNaso1194M1htEA+JrqE9Hk+G2DhI+itfS9TRu9ZKeCahLDNa/J3n4MqUJ/fOHMzQpRWw== + unicode-canonical-property-names-ecmascript@^1.0.4: version "1.0.4" resolved "https://registry.yarnpkg.com/unicode-canonical-property-names-ecmascript/-/unicode-canonical-property-names-ecmascript-1.0.4.tgz#2619800c4c825800efdd8343af7dd9933cbe2818" @@ -6951,7 +7599,7 @@ union-value@^1.0.0: is-extendable "^0.1.1" set-value "^2.0.1" -universalify@^0.1.0: +universalify@^0.1.0, universalify@^0.1.2: version "0.1.2" resolved "https://registry.yarnpkg.com/universalify/-/universalify-0.1.2.tgz#b646f69be3942dabcecc9d6639c80dc105efaa66" integrity sha512-rBJeI5CXAlmy1pV+617WB9J63U6XcazHHF2f2dbJix4XzpUF0RS3Zbj0FGIOCAva5P/d/GBOYaACQ1w+0azUkg== @@ -7016,17 +7664,6 @@ util-deprecate@^1.0.1, util-deprecate@~1.0.1: resolved "https://registry.yarnpkg.com/util-deprecate/-/util-deprecate-1.0.2.tgz#450d4dc9fa70de732762fbd2d4a28981419a0ccf" integrity sha1-RQ1Nyfpw3nMnYvvS1KKJgUGaDM8= -util.promisify@^1.0.0: - version "1.1.1" - resolved "https://registry.yarnpkg.com/util.promisify/-/util.promisify-1.1.1.tgz#77832f57ced2c9478174149cae9b96e9918cd54b" - integrity sha512-/s3UsZUrIfa6xDhr7zZhnE9SLQ5RIXyYfiVnMMyMDzOc8WhWN4Nbh36H842OyurKbCDAesZOJaVyvmSl6fhGQw== - dependencies: - call-bind "^1.0.0" - define-properties "^1.1.3" - for-each "^0.3.3" - has-symbols "^1.0.1" - object.getownpropertydescriptors "^2.1.1" - uuid@8.3.1: version "8.3.1" resolved "https://registry.yarnpkg.com/uuid/-/uuid-8.3.1.tgz#2ba2e6ca000da60fce5a196954ab241131e05a31" @@ -7037,6 +7674,20 @@ uuid@^3.3.2: resolved "https://registry.yarnpkg.com/uuid/-/uuid-3.4.0.tgz#b23e4358afa8a202fe7a100af1f5f883f02007ee" integrity sha512-HjSDRw6gZE5JMggctHBcjVak08+KEVhSIiDzFnT9S9aegmp85S/bReBVTb4QTFaRNptJ9kuYaNhnbNEOkbKb/A== +uuid@^8.3.0: + version "8.3.2" + resolved "https://registry.yarnpkg.com/uuid/-/uuid-8.3.2.tgz#80d5b5ced271bb9af6c445f21a1a04c606cefbe2" + integrity sha512-+NYs2QeMWy+GWFOEm9xnn6HCDp0l7QBD7ml8zLUmJ+93Q5NF0NocErnwkTkXVFNiX3/fpC6afS8Dhb/gz7R7eg== + +v8-to-istanbul@^7.0.0: + version "7.1.0" + resolved "https://registry.yarnpkg.com/v8-to-istanbul/-/v8-to-istanbul-7.1.0.tgz#5b95cef45c0f83217ec79f8fc7ee1c8b486aee07" + integrity sha512-uXUVqNUCLa0AH1vuVxzi+MI4RfxEOKt9pBgKwHbgH7st8Kv2P1m+jvWNnektzBh5QShF3ODgKmUFCf38LnVz1g== + dependencies: + "@types/istanbul-lib-coverage" "^2.0.1" + convert-source-map "^1.6.0" + source-map "^0.7.3" + validate-npm-package-license@^3.0.1: version "3.0.4" resolved "https://registry.yarnpkg.com/validate-npm-package-license/-/validate-npm-package-license-3.0.4.tgz#fc91f6b9c7ba15c857f4cb2c5defeec39d4f410a" @@ -7059,7 +7710,7 @@ vlq@^0.2.2: resolved "https://registry.yarnpkg.com/vlq/-/vlq-0.2.3.tgz#8f3e4328cf63b1540c0d67e1b2778386f8975b26" integrity sha512-DRibZL6DsNhIgYQ+wNdWDL2SL3bKPlVrRiBqV5yuMm++op8W4kGFtaQfCs4KEJn0wBZcHVHJ3eoywX8983k1ow== -w3c-hr-time@^1.0.1, w3c-hr-time@^1.0.2: +w3c-hr-time@^1.0.2: version "1.0.2" resolved "https://registry.yarnpkg.com/w3c-hr-time/-/w3c-hr-time-1.0.2.tgz#0a89cdf5cc15822df9c360543676963e0cc308cd" integrity sha512-z8P5DvDNjKDoFIHK7q8r8lackT6l+jo/Ye3HOle7l9nICP9lf1Ci25fy9vHd0JOWewkIFzXIEig3TdKT7JQ5fQ== @@ -7091,10 +7742,10 @@ walker@^1.0.7, walker@~1.0.5: dependencies: makeerror "1.0.x" -webidl-conversions@^4.0.2: - version "4.0.2" - resolved "https://registry.yarnpkg.com/webidl-conversions/-/webidl-conversions-4.0.2.tgz#a855980b1f0b6b359ba1d5d9fb39ae941faa63ad" - integrity sha512-YQ+BmxuTgd6UXZW3+ICGfyqRyHXVlD5GtQr5+qjiNW7bF0cqrzX500HVXPBOvgXb5YnzDd+h0zqyv61KUD7+Sg== +warning-symbol@^0.1.0: + version "0.1.0" + resolved "https://registry.yarnpkg.com/warning-symbol/-/warning-symbol-0.1.0.tgz#bb31dd11b7a0f9d67ab2ed95f457b65825bbad21" + integrity sha1-uzHdEbeg+dZ6su2V9Fe2WCW7rSE= webidl-conversions@^5.0.0: version "5.0.0" @@ -7106,36 +7757,18 @@ webidl-conversions@^6.1.0: resolved "https://registry.yarnpkg.com/webidl-conversions/-/webidl-conversions-6.1.0.tgz#9111b4d7ea80acd40f5270d666621afa78b69514" integrity sha512-qBIvFLGiBpLjfwmYAaHPXsn+ho5xZnGvyGvsarywGNc8VyQJUMHJ8OBKGGrPER0okBeMDaan4mNBlgBROxuI8w== -whatwg-encoding@^1.0.1, whatwg-encoding@^1.0.3, whatwg-encoding@^1.0.5: +whatwg-encoding@^1.0.5: version "1.0.5" resolved "https://registry.yarnpkg.com/whatwg-encoding/-/whatwg-encoding-1.0.5.tgz#5abacf777c32166a51d085d6b4f3e7d27113ddb0" integrity sha512-b5lim54JOPN9HtzvK9HFXvBma/rnfFeqsic0hSpjtDbVxR3dJKLc+KB4V6GgiGOvl7CY/KNh8rxSo9DKQrnUEw== dependencies: iconv-lite "0.4.24" -whatwg-mimetype@^2.1.0, whatwg-mimetype@^2.2.0, whatwg-mimetype@^2.3.0: +whatwg-mimetype@^2.3.0: version "2.3.0" resolved "https://registry.yarnpkg.com/whatwg-mimetype/-/whatwg-mimetype-2.3.0.tgz#3d4b1e0312d2079879f826aff18dbeeca5960fbf" integrity sha512-M4yMwr6mAnQz76TbJm914+gPpB/nCwvZbJU28cUD6dR004SAxDLOOSUaB1JDRqLtaOV/vi0IC5lEAGFgrjGv/g== -whatwg-url@^6.4.1: - version "6.5.0" - resolved "https://registry.yarnpkg.com/whatwg-url/-/whatwg-url-6.5.0.tgz#f2df02bff176fd65070df74ad5ccbb5a199965a8" - integrity sha512-rhRZRqx/TLJQWUpQ6bmrt2UV4f0HCQ463yQuONJqC6fO2VoEb1pTYddbe59SkYq87aoM5A3bdhMZiUiVws+fzQ== - dependencies: - lodash.sortby "^4.7.0" - tr46 "^1.0.1" - webidl-conversions "^4.0.2" - -whatwg-url@^7.0.0: - version "7.1.0" - resolved "https://registry.yarnpkg.com/whatwg-url/-/whatwg-url-7.1.0.tgz#c2c492f1eca612988efd3d2266be1b9fc6170d06" - integrity sha512-WUu7Rg1DroM7oQvGWfOiAK21n74Gg+T4elXEQYkOhtyLeWiJFoOGLXPKI/9gzIie9CtwVLm8wtw6YJdKyxSjeg== - dependencies: - lodash.sortby "^4.7.0" - tr46 "^1.0.1" - webidl-conversions "^4.0.2" - whatwg-url@^8.0.0: version "8.4.0" resolved "https://registry.yarnpkg.com/whatwg-url/-/whatwg-url-8.4.0.tgz#50fb9615b05469591d2b2bd6dfaed2942ed72837" @@ -7150,14 +7783,14 @@ which-module@^2.0.0: resolved "https://registry.yarnpkg.com/which-module/-/which-module-2.0.0.tgz#d9ef07dce77b9902b8a3a8fa4b31c3e3f7e6e87a" integrity sha1-2e8H3Od7mQK4o6j6SzHD4/fm6Ho= -which@^1.2.9, which@^1.3.0: +which@^1.2.9: version "1.3.1" resolved "https://registry.yarnpkg.com/which/-/which-1.3.1.tgz#a45043d54f5805316da8d62f9f50918d3da70b0a" integrity sha512-HxJdYWq1MTIQbJ3nw0cqssHoTNU267KlrDuGZ1WYlxDStUtKUhOaJmh112/TZmHxxUfuJqPXSOm7tDyas0OSIQ== dependencies: isexe "^2.0.0" -which@^2.0.1: +which@^2.0.1, which@^2.0.2: version "2.0.2" resolved "https://registry.yarnpkg.com/which/-/which-2.0.2.tgz#7c6a8dd0a636a0327e10b59c9286eee93f3f51b1" integrity sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA== @@ -7169,6 +7802,11 @@ word-wrap@~1.2.3: resolved "https://registry.yarnpkg.com/word-wrap/-/word-wrap-1.2.3.tgz#610636f6b1f703891bd34771ccb17fb93b47079c" integrity sha512-Hz/mrNwitNRh/HUAtM/VT/5VH+ygD6DV7mYKZAtHOrbs8U7lvPS6xf7EJKMF0uW1KJCl0H701g3ZGus+muE5vQ== +wordwrap@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/wordwrap/-/wordwrap-1.0.0.tgz#27584810891456a4171c8d0226441ade90cbcaeb" + integrity sha1-J1hIEIkUVqQXHI0CJkQa3pDLyus= + wrap-ansi@^3.0.1: version "3.0.1" resolved "https://registry.yarnpkg.com/wrap-ansi/-/wrap-ansi-3.0.1.tgz#288a04d87eda5c286e060dfe8f135ce8d007f8ba" @@ -7177,35 +7815,29 @@ wrap-ansi@^3.0.1: string-width "^2.1.1" strip-ansi "^4.0.0" -wrap-ansi@^5.1.0: - version "5.1.0" - resolved "https://registry.yarnpkg.com/wrap-ansi/-/wrap-ansi-5.1.0.tgz#1fd1f67235d5b6d0fee781056001bfb694c03b09" - integrity sha512-QC1/iN/2/RPVJ5jYK8BGttj5z83LmSKmvbvrXPNCLZSEb32KKVDJDl/MOt2N01qU2H/FkzEa9PKto1BqDjtd7Q== +wrap-ansi@^6.2.0: + version "6.2.0" + resolved "https://registry.yarnpkg.com/wrap-ansi/-/wrap-ansi-6.2.0.tgz#e9393ba07102e6c91a3b221478f0257cd2856e53" + integrity sha512-r6lPcBGxZXlIcymEu7InxDMhdW0KDxpLgoFLcguasxCaJ/SOIZwINatK9KY/tf+ZrlywOKU0UDj3ATXUBfxJXA== dependencies: - ansi-styles "^3.2.0" - string-width "^3.0.0" - strip-ansi "^5.0.0" + ansi-styles "^4.0.0" + string-width "^4.1.0" + strip-ansi "^6.0.0" wrappy@1: version "1.0.2" resolved "https://registry.yarnpkg.com/wrappy/-/wrappy-1.0.2.tgz#b5243d8f3ec1aa35f1364605bc0d1036e30ab69f" integrity sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8= -write-file-atomic@2.4.1: - version "2.4.1" - resolved "https://registry.yarnpkg.com/write-file-atomic/-/write-file-atomic-2.4.1.tgz#d0b05463c188ae804396fd5ab2a370062af87529" - integrity sha512-TGHFeZEZMnv+gBFRfjAcxL5bPHrsGKtnb4qsFAws7/vlh+QfwAaySIw4AXP9ZskTTh5GWu3FLuJhsWVdiJPGvg== +write-file-atomic@^3.0.0: + version "3.0.3" + resolved "https://registry.yarnpkg.com/write-file-atomic/-/write-file-atomic-3.0.3.tgz#56bd5c5a5c70481cd19c571bd39ab965a5de56e8" + integrity sha512-AvHcyZ5JnSfq3ioSyjrBkH9yW4m7Ayk8/9My/DD9onKeu/94fwrMocemO2QAJFAlnnDN+ZDS+ZjAR5ua1/PV/Q== dependencies: - graceful-fs "^4.1.11" imurmurhash "^0.1.4" + is-typedarray "^1.0.0" signal-exit "^3.0.2" - -ws@^5.2.0: - version "5.2.2" - resolved "https://registry.yarnpkg.com/ws/-/ws-5.2.2.tgz#dffef14866b8e8dc9133582514d1befaf96e980f" - integrity sha512-jaHFD6PFv6UgoIVda6qZllptQsMlDEJkTQcybzzXDYM1XO9Y8em691FGMPmM46WGyLU4z9KMgQN+qrux/nhlHA== - dependencies: - async-limiter "~1.0.0" + typedarray-to-buffer "^3.1.5" ws@^6.2.1: version "6.2.1" @@ -7219,6 +7851,11 @@ ws@^7.2.3: resolved "https://registry.yarnpkg.com/ws/-/ws-7.4.3.tgz#1f9643de34a543b8edb124bdcbc457ae55a6e5cd" integrity sha512-hr6vCR76GsossIRsr8OLR9acVVm1jyfEWvhbNjtgPOrfvAlKzvyeg/P6r8RuDjRyrcQoPQT7K0DGEPc7Ae6jzA== +ws@^7.4.4: + version "7.4.4" + resolved "https://registry.yarnpkg.com/ws/-/ws-7.4.4.tgz#383bc9742cb202292c9077ceab6f6047b17f2d59" + integrity sha512-Qm8k8ojNQIMx7S+Zp8u/uHOx7Qazv3Yv4q68MiWWWOJhiwG5W3x7iqmRtJo8xxrciZUY4vRxUTJCKuRnF28ZZw== + xml-name-validator@^3.0.0: version "3.0.0" resolved "https://registry.yarnpkg.com/xml-name-validator/-/xml-name-validator-3.0.0.tgz#6ae73e06de4d8c6e47f9fb181f78d648ad457c6a" @@ -7254,39 +7891,50 @@ xtend@~3.0.0: resolved "https://registry.yarnpkg.com/xtend/-/xtend-3.0.0.tgz#5cce7407baf642cba7becda568111c493f59665a" integrity sha1-XM50B7r2Qsunvs2laBEcST9ZZlo= +xtend@~4.0.1: + version "4.0.2" + resolved "https://registry.yarnpkg.com/xtend/-/xtend-4.0.2.tgz#bb72779f5fa465186b1f438f674fa347fdb5db54" + integrity sha512-LKYU1iAXJXUgAXn9URjiu+MWhyUXHsvfp7mcuYm9dSUKK0/CjtrUwFAxD82/mCWbtLsGjFIad0wIsod4zrTAEQ== + y18n@^4.0.0: version "4.0.1" resolved "https://registry.yarnpkg.com/y18n/-/y18n-4.0.1.tgz#8db2b83c31c5d75099bb890b23f3094891e247d4" integrity sha512-wNcy4NvjMYL8gogWWYAO7ZFWFfHcbdbE57tZO8e4cbpj8tfUcwrwqSl3ad8HxpYWCdXcJUCeKKZS62Av1affwQ== +yallist@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/yallist/-/yallist-4.0.0.tgz#9bb92790d9c0effec63be73519e11a35019a3a72" + integrity sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A== + yaml@^1.7.2, yaml@^1.9.2: version "1.10.0" resolved "https://registry.yarnpkg.com/yaml/-/yaml-1.10.0.tgz#3b593add944876077d4d683fee01081bd9fff31e" integrity sha512-yr2icI4glYaNG+KWONODapy2/jDdMSDnrONSjblABjD9B4Z5LgiircSt8m8sRZFNi08kG9Sm0uSHtEmP3zaEGg== -yargs-parser@^13.1.2: - version "13.1.2" - resolved "https://registry.yarnpkg.com/yargs-parser/-/yargs-parser-13.1.2.tgz#130f09702ebaeef2650d54ce6e3e5706f7a4fb38" - integrity sha512-3lbsNRf/j+A4QuSZfDRA7HRSfWrzO0YjqTJd5kjAq37Zep1CEgaYmrH9Q3GwPiB9cHyd1Y1UwggGhJGoxipbzg== +yargs-parser@^18.1.2: + version "18.1.3" + resolved "https://registry.yarnpkg.com/yargs-parser/-/yargs-parser-18.1.3.tgz#be68c4975c6b2abf469236b0c870362fab09a7b0" + integrity sha512-o50j0JeToy/4K6OZcaQmW6lyXXKhq7csREXcDwk2omFPJEwUNOVtJKvmDr9EI1fAJZUyZcRF7kxGBWmRXudrCQ== dependencies: camelcase "^5.0.0" decamelize "^1.2.0" -yargs@^13.3.0: - version "13.3.2" - resolved "https://registry.yarnpkg.com/yargs/-/yargs-13.3.2.tgz#ad7ffefec1aa59565ac915f82dccb38a9c31a2dd" - integrity sha512-AX3Zw5iPruN5ie6xGRIDgqkT+ZhnRlZMLMHAs8tg7nRruy2Nb+i5o9bwghAogtM08q1dpr2LVoS8KSTMYpWXUw== +yargs@^15.4.1: + version "15.4.1" + resolved "https://registry.yarnpkg.com/yargs/-/yargs-15.4.1.tgz#0d87a16de01aee9d8bec2bfbf74f67851730f4f8" + integrity sha512-aePbxDmcYW++PaqBsJ+HYUFwCdv4LVvdnhBy78E57PIor8/OVvhMrADFFEDh8DHDFRv/O9i3lPhsENjO7QX0+A== dependencies: - cliui "^5.0.0" - find-up "^3.0.0" + cliui "^6.0.0" + decamelize "^1.2.0" + find-up "^4.1.0" get-caller-file "^2.0.1" require-directory "^2.1.1" require-main-filename "^2.0.0" set-blocking "^2.0.0" - string-width "^3.0.0" + string-width "^4.2.0" which-module "^2.0.0" y18n "^4.0.0" - yargs-parser "^13.1.2" + yargs-parser "^18.1.2" yauzl@^2.10.0: version "2.10.0" @@ -7296,6 +7944,11 @@ yauzl@^2.10.0: buffer-crc32 "~0.2.3" fd-slicer "~1.1.0" +year@^0.2.1: + version "0.2.1" + resolved "https://registry.yarnpkg.com/year/-/year-0.2.1.tgz#4083ae520a318b23ec86037f3000cb892bdf9bb0" + integrity sha1-QIOuUgoxiyPshgN/MADLiSvfm7A= + yup@0.29.2: version "0.29.2" resolved "https://registry.yarnpkg.com/yup/-/yup-0.29.2.tgz#5302abd9024cca335b987793f8df868e410b7b67" From 6711801f97e3004ffedba3c42ca3454262c8e37d Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Keviin=20=C3=85berg=20Kultalahti?= Date: Fri, 26 Mar 2021 15:43:55 +0100 Subject: [PATCH 33/50] add some temporary testing files --- packages/builder/package.json | 9 ++--- .../builder/src/stores/backend/datasources.js | 11 ++++--- .../src/stores/backend/tests/database.spec.js | 26 --------------- .../stores/backend/tests/datasources.spec.js | 33 ++++++++++++------- .../stores/backend/tests/integration.spec.js | 0 .../stores/backend/tests/permissions.spec.js | 0 .../src/stores/backend/tests/queries.spec.js | 0 .../src/stores/backend/tests/roles.spec.js | 0 .../src/stores/backend/tests/rows.spec.js | 0 .../src/stores/backend/tests/tables.spec.js | 0 .../src/stores/backend/tests/views.spec.js | 0 11 files changed, 31 insertions(+), 48 deletions(-) delete mode 100644 packages/builder/src/stores/backend/tests/database.spec.js create mode 100644 packages/builder/src/stores/backend/tests/integration.spec.js create mode 100644 packages/builder/src/stores/backend/tests/permissions.spec.js create mode 100644 packages/builder/src/stores/backend/tests/queries.spec.js create mode 100644 packages/builder/src/stores/backend/tests/roles.spec.js create mode 100644 packages/builder/src/stores/backend/tests/rows.spec.js create mode 100644 packages/builder/src/stores/backend/tests/tables.spec.js create mode 100644 packages/builder/src/stores/backend/tests/views.spec.js diff --git a/packages/builder/package.json b/packages/builder/package.json index 586a7fcfe8..15013489d2 100644 --- a/packages/builder/package.json +++ b/packages/builder/package.json @@ -29,18 +29,15 @@ "\\.(css|less|sass|scss)$": "identity-obj-proxy", "components(.*)$": "/src/components$1", "builderStore(.*)$": "/src/builderStore$1", - "stores(.*)$": "/src/stores$1" + "stores(.*)$": "/src/stores$1", + "analytics(.*)$": "/src/analytics$1" }, "moduleFileExtensions": [ "js", "svelte" ], "moduleDirectories": [ - "node_modules", - "builderStore", - "stores", - "constants", - "analytics" + "node_modules" ], "transform": { "^.+js$": "babel-jest", diff --git a/packages/builder/src/stores/backend/datasources.js b/packages/builder/src/stores/backend/datasources.js index 0f30695ea3..6317d32e41 100644 --- a/packages/builder/src/stores/backend/datasources.js +++ b/packages/builder/src/stores/backend/datasources.js @@ -1,17 +1,20 @@ import { writable } from "svelte/store" import { queries } from "./" -import api from "builderStore/api" +import api from "../../builderStore/api" -export function createDatasourcesStore(_api = api) { - const { subscribe, update, set } = writable({ +export const INITIAL_DATASOURCE_VALUES = { list: [], selected: null, - }) + } + +export function createDatasourcesStore(_api = api) { + const { subscribe, update, set } = writable(INITIAL_DATASOURCE_VALUES) return { subscribe, set, update, + init: () => set(INITIAL_DATASOURCE_VALUES), fetch: async () => { const response = await api.get(`/api/datasources`) const json = await response.json() diff --git a/packages/builder/src/stores/backend/tests/database.spec.js b/packages/builder/src/stores/backend/tests/database.spec.js deleted file mode 100644 index ccaf9c0570..0000000000 --- a/packages/builder/src/stores/backend/tests/database.spec.js +++ /dev/null @@ -1,26 +0,0 @@ -import { database } from "../" - -describe("Backend DataSources Store", () => { - - let state; - let unsub; - - beforeEach(() => { - unsub = database.subscribe(s => state = s); - }) - afterEach(() => { - unsub() - }) - - it("initialises correctly", () => { - expect(state.list, []) - }) -}) - -const api = { - post: () => ({}), - get: () => ({}), - patch: () => ({}), - delete: () => ({}), - put: () => ({}), - } \ No newline at end of file diff --git a/packages/builder/src/stores/backend/tests/datasources.spec.js b/packages/builder/src/stores/backend/tests/datasources.spec.js index 02c90d134c..79913c24ac 100644 --- a/packages/builder/src/stores/backend/tests/datasources.spec.js +++ b/packages/builder/src/stores/backend/tests/datasources.spec.js @@ -1,24 +1,33 @@ import { get } from 'svelte/store' +import api from 'builderStore/api' + +jest.mock('builderStore/api'); + import { createDatasourcesStore } from "../datasources" -const mockApi = { - post: () => ({}), - get: () => ({}), - patch: () => ({}), - delete: () => ({}), - put: () => ({}), -} - - describe("Automation Data Object", () => { - let store + let store = createDatasourcesStore() beforeEach(() => { - store = createDatasourcesStore(mockApi) + store.init() }) it("Inits properly", () => { + const value = get(store) - expect(value).toBe(true) + expect(value).toEqual({ list: [], selected: null}) + }) + + it("Fetch returns and updates store", async () => { + api.get.mockReturnValueOnce({ json: () => 'some-cool-value'}) + + store.fetch() + + + + expect(api.get).toBeCalledWith(`/api/datasources`) + + + // expect(get(store)).toEqual({ list: [], selected: null}) }) }) diff --git a/packages/builder/src/stores/backend/tests/integration.spec.js b/packages/builder/src/stores/backend/tests/integration.spec.js new file mode 100644 index 0000000000..e69de29bb2 diff --git a/packages/builder/src/stores/backend/tests/permissions.spec.js b/packages/builder/src/stores/backend/tests/permissions.spec.js new file mode 100644 index 0000000000..e69de29bb2 diff --git a/packages/builder/src/stores/backend/tests/queries.spec.js b/packages/builder/src/stores/backend/tests/queries.spec.js new file mode 100644 index 0000000000..e69de29bb2 diff --git a/packages/builder/src/stores/backend/tests/roles.spec.js b/packages/builder/src/stores/backend/tests/roles.spec.js new file mode 100644 index 0000000000..e69de29bb2 diff --git a/packages/builder/src/stores/backend/tests/rows.spec.js b/packages/builder/src/stores/backend/tests/rows.spec.js new file mode 100644 index 0000000000..e69de29bb2 diff --git a/packages/builder/src/stores/backend/tests/tables.spec.js b/packages/builder/src/stores/backend/tests/tables.spec.js new file mode 100644 index 0000000000..e69de29bb2 diff --git a/packages/builder/src/stores/backend/tests/views.spec.js b/packages/builder/src/stores/backend/tests/views.spec.js new file mode 100644 index 0000000000..e69de29bb2 From a1f242a6289256ebd5f2dcb464ae0c833a0bd13d Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Keviin=20=C3=85berg=20Kultalahti?= Date: Mon, 29 Mar 2021 12:03:34 +0200 Subject: [PATCH 34/50] adds fetch and delete tests to datasources store --- .../builder/src/stores/backend/datasources.js | 7 ++- .../stores/backend/tests/datasources.spec.js | 44 ++++++++++++++----- 2 files changed, 38 insertions(+), 13 deletions(-) diff --git a/packages/builder/src/stores/backend/datasources.js b/packages/builder/src/stores/backend/datasources.js index 6317d32e41..6fdafc1394 100644 --- a/packages/builder/src/stores/backend/datasources.js +++ b/packages/builder/src/stores/backend/datasources.js @@ -45,13 +45,16 @@ export function createDatasourcesStore(_api = api) { return json }, delete: async datasource => { - await api.delete(`/api/datasources/${datasource._id}/${datasource._rev}`) + const response = await api.delete(`/api/datasources/${datasource._id}/${datasource._rev}`) + const json = await response.json() update(state => { const sources = state.list.filter( existing => existing._id !== datasource._id ) - return { sources, selected: null } + return { list: sources, selected: null } }) + + return json }, } } diff --git a/packages/builder/src/stores/backend/tests/datasources.spec.js b/packages/builder/src/stores/backend/tests/datasources.spec.js index 79913c24ac..ea9ea572fb 100644 --- a/packages/builder/src/stores/backend/tests/datasources.spec.js +++ b/packages/builder/src/stores/backend/tests/datasources.spec.js @@ -3,31 +3,53 @@ import api from 'builderStore/api' jest.mock('builderStore/api'); +const FETCH_RESPONSE = [ + { + "type": "datasource", + "name": "erterter", + "source": "REST", + "config": { + "url": "localhost", + "defaultHeaders": {} + }, + "_id": "datasource_04b003a7b4a8428eadd3bb2f7eae0255", + "_rev": "1-4e72002f1011e9392e655948469b7908" + } +] + import { createDatasourcesStore } from "../datasources" describe("Automation Data Object", () => { let store = createDatasourcesStore() beforeEach(() => { + api.get.mockReturnValueOnce({ json: () => FETCH_RESPONSE}) + api.delete.mockReturnValueOnce({ json: () => ({status: 200, message: 'Datasource deleted.'})}) store.init() }) it("Inits properly", () => { - const value = get(store) expect(value).toEqual({ list: [], selected: null}) }) - it("Fetch returns and updates store", async () => { - api.get.mockReturnValueOnce({ json: () => 'some-cool-value'}) - - store.fetch() - - + it("Fetch - returns and updates store", async () => { + let value = get(store) + expect(value).toEqual({ list: [], selected: null}) + await store.fetch() + value = get(store) expect(api.get).toBeCalledWith(`/api/datasources`) - - - // expect(get(store)).toEqual({ list: [], selected: null}) + expect(value).toEqual({ list: FETCH_RESPONSE, selected: null}) }) -}) + it("Delete - calls delete endpoint, updates store and returns status", async () => { + let value = get(store) + const { _id, _rev } = FETCH_RESPONSE[0] + await store.fetch() + await store.delete(FETCH_RESPONSE[0]) + expect(api.delete).toBeCalledWith(`/api/datasources/${_id}/${_rev}`) + value = await get(store) + + expect(value).toEqual({ list: [], selected: null}) + }) +}) \ No newline at end of file From f8475bfdc22078fbe743fd7600877dd98847ce87 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Keviin=20=C3=85berg=20Kultalahti?= Date: Mon, 29 Mar 2021 12:54:41 +0200 Subject: [PATCH 35/50] finishes datasources stores --- .../builder/src/stores/backend/datasources.js | 3 +- .../stores/backend/tests/datasources.spec.js | 73 ++++++++++++++----- 2 files changed, 55 insertions(+), 21 deletions(-) diff --git a/packages/builder/src/stores/backend/datasources.js b/packages/builder/src/stores/backend/datasources.js index 6fdafc1394..31d34cec32 100644 --- a/packages/builder/src/stores/backend/datasources.js +++ b/packages/builder/src/stores/backend/datasources.js @@ -46,7 +46,6 @@ export function createDatasourcesStore(_api = api) { }, delete: async datasource => { const response = await api.delete(`/api/datasources/${datasource._id}/${datasource._rev}`) - const json = await response.json() update(state => { const sources = state.list.filter( existing => existing._id !== datasource._id @@ -54,7 +53,7 @@ export function createDatasourcesStore(_api = api) { return { list: sources, selected: null } }) - return json + return response }, } } diff --git a/packages/builder/src/stores/backend/tests/datasources.spec.js b/packages/builder/src/stores/backend/tests/datasources.spec.js index ea9ea572fb..5eb7e8cd05 100644 --- a/packages/builder/src/stores/backend/tests/datasources.spec.js +++ b/packages/builder/src/stores/backend/tests/datasources.spec.js @@ -3,7 +3,7 @@ import api from 'builderStore/api' jest.mock('builderStore/api'); -const FETCH_RESPONSE = [ +const SOME_DATASOURCE = [ { "type": "datasource", "name": "erterter", @@ -17,14 +17,27 @@ const FETCH_RESPONSE = [ } ] +const SAVE_DATASOURCE = { + "type": "datasource", + "name": "CoolDB", + "source": "REST", + "config": { + "url": "localhost", + "defaultHeaders": {} + }, + "_id": "datasource_04b003a7b4a8428eadd3bb2f7eae0255", + "_rev": "1-4e72002f1011e9392e655948469b7908" + } + import { createDatasourcesStore } from "../datasources" +import { queries } from '../queries' describe("Automation Data Object", () => { let store = createDatasourcesStore() beforeEach(() => { - api.get.mockReturnValueOnce({ json: () => FETCH_RESPONSE}) - api.delete.mockReturnValueOnce({ json: () => ({status: 200, message: 'Datasource deleted.'})}) + api.get.mockReturnValueOnce({ json: () => SOME_DATASOURCE}) + api.delete.mockReturnValueOnce({status: 200, message: 'Datasource deleted.'}) store.init() }) @@ -33,23 +46,45 @@ describe("Automation Data Object", () => { expect(value).toEqual({ list: [], selected: null}) }) - it("Fetch - returns and updates store", async () => { - let value = get(store) - expect(value).toEqual({ list: [], selected: null}) - - await store.fetch() - value = get(store) - expect(api.get).toBeCalledWith(`/api/datasources`) - expect(value).toEqual({ list: FETCH_RESPONSE, selected: null}) - }) - it("Delete - calls delete endpoint, updates store and returns status", async () => { - let value = get(store) - const { _id, _rev } = FETCH_RESPONSE[0] - await store.fetch() - await store.delete(FETCH_RESPONSE[0]) - expect(api.delete).toBeCalledWith(`/api/datasources/${_id}/${_rev}`) - value = await get(store) + it("fetches all the datasources and updates the store", async () => { + await store.fetch() + const value = get(store) + expect(value).toEqual({ list: SOME_DATASOURCE, selected: null}) + }) + + it("selects a datasource", async () => { + store.select(SOME_DATASOURCE._id) + + const value = get(store) + expect(value.select).toEqual(SOME_DATASOURCE._id) + }) + + it("resets the queries store when it a new datasource is selected", async () => { + + store.select(SOME_DATASOURCE._id) + const queriesValue = get(queries) + expect(queriesValue.selected).toEqual(null) + }) + + it("saves the datasource, updates the store and returns status message", async () => { + api.post.mockReturnValueOnce({ json: () => SAVE_DATASOURCE}) + + await store.save({ + name: 'CoolDB', + source: 'REST', + config: SOME_DATASOURCE[0].config + + }) + const value = await get(store) + + expect(value.list).toEqual(expect.arrayContaining([SAVE_DATASOURCE])) + }) + it("deletes a datasource, updates the store and returns status message", async () => { + await store.fetch() + await store.delete(SOME_DATASOURCE[0]) + const value = await get(store) + expect(value).toEqual({ list: [], selected: null}) }) }) \ No newline at end of file From 58546754b8c4d7de3782883cf9a16d85a4dc7609 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Keviin=20=C3=85berg=20Kultalahti?= Date: Mon, 29 Mar 2021 13:16:41 +0200 Subject: [PATCH 36/50] adds test for permissions store --- .../builder/src/stores/backend/permissions.js | 14 +--------- .../stores/backend/tests/datasources.spec.js | 5 ++-- .../stores/backend/tests/integration.spec.js | 0 .../stores/backend/tests/permissions.spec.js | 26 +++++++++++++++++++ 4 files changed, 30 insertions(+), 15 deletions(-) delete mode 100644 packages/builder/src/stores/backend/tests/integration.spec.js diff --git a/packages/builder/src/stores/backend/permissions.js b/packages/builder/src/stores/backend/permissions.js index 6669ef3270..f947bcce81 100644 --- a/packages/builder/src/stores/backend/permissions.js +++ b/packages/builder/src/stores/backend/permissions.js @@ -3,27 +3,15 @@ import api from "builderStore/api" export function createPermissionStore() { - const { subscribe, set } = writable([]) + const { subscribe } = writable([]) return { subscribe, - fetchLevels: async () => { - const response = await api.get("/api/permission/levels") - const json = await response.json() - set(json) - }, forResource: async resourceId => { const response = await api.get(`/api/permission/${resourceId}`) const json = await response.json() return json }, - save: async ({ role, resource, level }) => { - const response = await api.post( - `/api/permission/${role}/${resource}/${level}` - ) - const json = await response.json() - return json - }, } } diff --git a/packages/builder/src/stores/backend/tests/datasources.spec.js b/packages/builder/src/stores/backend/tests/datasources.spec.js index 5eb7e8cd05..c70104f74d 100644 --- a/packages/builder/src/stores/backend/tests/datasources.spec.js +++ b/packages/builder/src/stores/backend/tests/datasources.spec.js @@ -32,12 +32,11 @@ const SAVE_DATASOURCE = { import { createDatasourcesStore } from "../datasources" import { queries } from '../queries' -describe("Automation Data Object", () => { +describe("Datasources Store", () => { let store = createDatasourcesStore() beforeEach(() => { api.get.mockReturnValueOnce({ json: () => SOME_DATASOURCE}) - api.delete.mockReturnValueOnce({status: 200, message: 'Datasource deleted.'}) store.init() }) @@ -81,6 +80,8 @@ describe("Automation Data Object", () => { expect(value.list).toEqual(expect.arrayContaining([SAVE_DATASOURCE])) }) it("deletes a datasource, updates the store and returns status message", async () => { + api.delete.mockReturnValueOnce({status: 200, message: 'Datasource deleted.'}) + await store.fetch() await store.delete(SOME_DATASOURCE[0]) const value = await get(store) diff --git a/packages/builder/src/stores/backend/tests/integration.spec.js b/packages/builder/src/stores/backend/tests/integration.spec.js deleted file mode 100644 index e69de29bb2..0000000000 diff --git a/packages/builder/src/stores/backend/tests/permissions.spec.js b/packages/builder/src/stores/backend/tests/permissions.spec.js index e69de29bb2..54938c3c6f 100644 --- a/packages/builder/src/stores/backend/tests/permissions.spec.js +++ b/packages/builder/src/stores/backend/tests/permissions.spec.js @@ -0,0 +1,26 @@ +import api from 'builderStore/api' + +jest.mock('builderStore/api'); + +const PERMISSIONS_FOR_RESOURCE = { + "write": "BASIC", + "read": "BASIC" +} + +import { createPermissionStore } from "../permissions" + +describe("Permissions Store", () => { + const store = createPermissionStore() + + it("fetches permissions for specific resource", async () => { + api.get.mockReturnValueOnce({ json: () => PERMISSIONS_FOR_RESOURCE}) + + const resourceId = "ta_013657543b4043b89dbb17e9d3a4723a" + + const permissions = await store.forResource(resourceId) + + expect(api.get).toBeCalledWith(`/api/permission/${resourceId}`) + expect(permissions).toEqual(PERMISSIONS_FOR_RESOURCE) + + }) +}) \ No newline at end of file From d0aca74e4a71d87394228c703e77ac6605980a18 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Keviin=20=C3=85berg=20Kultalahti?= Date: Mon, 29 Mar 2021 14:57:01 +0200 Subject: [PATCH 37/50] wip: queries store tests --- .../src/builderStore/store/frontend.js | 4 +- .../builder/src/stores/backend/datasources.js | 7 ++- .../stores/backend/tests/datasources.spec.js | 58 ++++++------------- .../backend/tests/fixtures/datasources.js | 26 +++++++++ .../src/stores/backend/tests/queries.spec.js | 26 +++++++++ 5 files changed, 75 insertions(+), 46 deletions(-) create mode 100644 packages/builder/src/stores/backend/tests/fixtures/datasources.js diff --git a/packages/builder/src/builderStore/store/frontend.js b/packages/builder/src/builderStore/store/frontend.js index ac78f1a829..88a280a006 100644 --- a/packages/builder/src/builderStore/store/frontend.js +++ b/packages/builder/src/builderStore/store/frontend.js @@ -68,17 +68,15 @@ export const getFrontendStore = () => { // Initialise backend stores const [ - _datasources, _integrations, _queries, _tables, ] = await Promise.all([ - api.get(`/api/datasources`).then(r => r.json()), api.get("/api/integrations").then(r => r.json()), api.get(`/api/queries`).then(r => r.json()), api.get(`/api/tables`).then(r => r.json()), ]) - datasources.set({ list: _datasources, selected: null }) + datasources.init() integrations.set(_integrations) queries.set({ list: _queries, selected: null }) database.set(application.instance) diff --git a/packages/builder/src/stores/backend/datasources.js b/packages/builder/src/stores/backend/datasources.js index 31d34cec32..1a64955ba7 100644 --- a/packages/builder/src/stores/backend/datasources.js +++ b/packages/builder/src/stores/backend/datasources.js @@ -12,9 +12,12 @@ export function createDatasourcesStore(_api = api) { return { subscribe, - set, update, - init: () => set(INITIAL_DATASOURCE_VALUES), + init: async () => { + const response = await api.get(`/api/datasources`) + const json = await response.json() + set({ list: json, selected: null }) + }, fetch: async () => { const response = await api.get(`/api/datasources`) const json = await response.json() diff --git a/packages/builder/src/stores/backend/tests/datasources.spec.js b/packages/builder/src/stores/backend/tests/datasources.spec.js index c70104f74d..4c29206c17 100644 --- a/packages/builder/src/stores/backend/tests/datasources.spec.js +++ b/packages/builder/src/stores/backend/tests/datasources.spec.js @@ -3,31 +3,7 @@ import api from 'builderStore/api' jest.mock('builderStore/api'); -const SOME_DATASOURCE = [ - { - "type": "datasource", - "name": "erterter", - "source": "REST", - "config": { - "url": "localhost", - "defaultHeaders": {} - }, - "_id": "datasource_04b003a7b4a8428eadd3bb2f7eae0255", - "_rev": "1-4e72002f1011e9392e655948469b7908" - } -] - -const SAVE_DATASOURCE = { - "type": "datasource", - "name": "CoolDB", - "source": "REST", - "config": { - "url": "localhost", - "defaultHeaders": {} - }, - "_id": "datasource_04b003a7b4a8428eadd3bb2f7eae0255", - "_rev": "1-4e72002f1011e9392e655948469b7908" - } +import { SOME_DATASOURCE, SAVE_DATASOURCE} from './fixtures/datasources' import { createDatasourcesStore } from "../datasources" import { queries } from '../queries' @@ -36,27 +12,27 @@ describe("Datasources Store", () => { let store = createDatasourcesStore() beforeEach(() => { - api.get.mockReturnValueOnce({ json: () => SOME_DATASOURCE}) store.init() }) - it("Inits properly", () => { - const value = get(store) - expect(value).toEqual({ list: [], selected: null}) + it("Initialises correctly", async () => { + api.get.mockReturnValue({ json: () => [SOME_DATASOURCE]}) + + await store.init() + expect(get(store)).toEqual({ list: [SOME_DATASOURCE], selected: null}) }) it("fetches all the datasources and updates the store", async () => { + api.get.mockReturnValue({ json: () => [SOME_DATASOURCE]}) await store.fetch() - const value = get(store) - expect(value).toEqual({ list: SOME_DATASOURCE, selected: null}) + expect(get(store)).toEqual({ list: [SOME_DATASOURCE], selected: null}) }) it("selects a datasource", async () => { store.select(SOME_DATASOURCE._id) - - const value = get(store) - expect(value.select).toEqual(SOME_DATASOURCE._id) + + expect(get(store).select).toEqual(SOME_DATASOURCE._id) }) it("resets the queries store when it a new datasource is selected", async () => { @@ -67,7 +43,7 @@ describe("Datasources Store", () => { }) it("saves the datasource, updates the store and returns status message", async () => { - api.post.mockReturnValueOnce({ json: () => SAVE_DATASOURCE}) + api.post.mockReturnValue({ json: () => SAVE_DATASOURCE}) await store.save({ name: 'CoolDB', @@ -75,17 +51,17 @@ describe("Datasources Store", () => { config: SOME_DATASOURCE[0].config }) - const value = await get(store) - expect(value.list).toEqual(expect.arrayContaining([SAVE_DATASOURCE])) + expect(get(store).list).toEqual(expect.arrayContaining([SAVE_DATASOURCE])) }) it("deletes a datasource, updates the store and returns status message", async () => { - api.delete.mockReturnValueOnce({status: 200, message: 'Datasource deleted.'}) + api.get.mockReturnValue({ json: () => [SOME_DATASOURCE]}) await store.fetch() + + api.delete.mockReturnValue({status: 200, message: 'Datasource deleted.'}) + await store.delete(SOME_DATASOURCE[0]) - const value = await get(store) - - expect(value).toEqual({ list: [], selected: null}) + expect(get(store)).toEqual({ list: [], selected: null}) }) }) \ No newline at end of file diff --git a/packages/builder/src/stores/backend/tests/fixtures/datasources.js b/packages/builder/src/stores/backend/tests/fixtures/datasources.js new file mode 100644 index 0000000000..582c7fc574 --- /dev/null +++ b/packages/builder/src/stores/backend/tests/fixtures/datasources.js @@ -0,0 +1,26 @@ +export const SOME_DATASOURCE = [ + { + "type": "datasource", + "name": "erterter", + "source": "REST", + "config": { + "url": "localhost", + "defaultHeaders": {} + }, + "_id": "datasource_04b003a7b4a8428eadd3bb2f7eae0255", + "_rev": "1-4e72002f1011e9392e655948469b7908" + } + ] + +export const SAVE_DATASOURCE = { + "type": "datasource", + "name": "CoolDB", + "source": "REST", + "config": { + "url": "localhost", + "defaultHeaders": {} + }, + "_id": "datasource_04b003a7b4a8428eadd3bb2f7eae0255", + "_rev": "1-4e72002f1011e9392e655948469b7908" + } + \ No newline at end of file diff --git a/packages/builder/src/stores/backend/tests/queries.spec.js b/packages/builder/src/stores/backend/tests/queries.spec.js index e69de29bb2..4e7a54d0b5 100644 --- a/packages/builder/src/stores/backend/tests/queries.spec.js +++ b/packages/builder/src/stores/backend/tests/queries.spec.js @@ -0,0 +1,26 @@ +// import api from 'builderStore/api' + +// jest.mock('builderStore/api'); + +// const PERMISSIONS_FOR_RESOURCE = { +// "write": "BASIC", +// "read": "BASIC" +// } + +// import { createQueriesStore } from "../queries" + +// describe("Queries Store", () => { +// const store = createQueriesStore() + +// it("fetches permissions for specific resource", async () => { +// api.get.mockReturnValueOnce({ json: () => PERMISSIONS_FOR_RESOURCE}) + +// const resourceId = "ta_013657543b4043b89dbb17e9d3a4723a" + +// const permissions = await store.forResource(resourceId) + +// expect(api.get).toBeCalledWith(`/api/permission/${resourceId}`) +// expect(permissions).toEqual(PERMISSIONS_FOR_RESOURCE) + +// }) +// }) \ No newline at end of file From d86467ecd721f2f553755e43f80cc1140950742c Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Keviin=20=C3=85berg=20Kultalahti?= Date: Mon, 29 Mar 2021 16:23:58 +0200 Subject: [PATCH 38/50] fix datasource test --- packages/builder/src/stores/backend/tests/datasources.spec.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/packages/builder/src/stores/backend/tests/datasources.spec.js b/packages/builder/src/stores/backend/tests/datasources.spec.js index 4c29206c17..0d1d15777d 100644 --- a/packages/builder/src/stores/backend/tests/datasources.spec.js +++ b/packages/builder/src/stores/backend/tests/datasources.spec.js @@ -55,7 +55,7 @@ describe("Datasources Store", () => { expect(get(store).list).toEqual(expect.arrayContaining([SAVE_DATASOURCE])) }) it("deletes a datasource, updates the store and returns status message", async () => { - api.get.mockReturnValue({ json: () => [SOME_DATASOURCE]}) + api.get.mockReturnValue({ json: () => SOME_DATASOURCE}) await store.fetch() From 003c1c75d43fdb66cef52c721e9419045f8d7897 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Keviin=20=C3=85berg=20Kultalahti?= Date: Mon, 29 Mar 2021 17:45:18 +0200 Subject: [PATCH 39/50] fixes queries and datasource tests --- .../src/builderStore/store/frontend.js | 4 +- .../components/integration/QueryViewer.svelte | 2 +- .../builder/src/stores/backend/queries.js | 8 +- .../stores/backend/tests/datasources.spec.js | 9 ++- .../stores/backend/tests/fixtures/queries.js | 80 +++++++++++++++++++ .../stores/backend/tests/permissions.spec.js | 1 - .../src/stores/backend/tests/queries.spec.js | 67 +++++++++++----- 7 files changed, 143 insertions(+), 28 deletions(-) create mode 100644 packages/builder/src/stores/backend/tests/fixtures/queries.js diff --git a/packages/builder/src/builderStore/store/frontend.js b/packages/builder/src/builderStore/store/frontend.js index 88a280a006..9db23d3001 100644 --- a/packages/builder/src/builderStore/store/frontend.js +++ b/packages/builder/src/builderStore/store/frontend.js @@ -69,16 +69,14 @@ export const getFrontendStore = () => { // Initialise backend stores const [ _integrations, - _queries, _tables, ] = await Promise.all([ api.get("/api/integrations").then(r => r.json()), - api.get(`/api/queries`).then(r => r.json()), api.get(`/api/tables`).then(r => r.json()), ]) datasources.init() integrations.set(_integrations) - queries.set({ list: _queries, selected: null }) + queries.init() database.set(application.instance) tables.set({ list: _tables, diff --git a/packages/builder/src/components/integration/QueryViewer.svelte b/packages/builder/src/components/integration/QueryViewer.svelte index 063bbf2309..c37158d93f 100644 --- a/packages/builder/src/components/integration/QueryViewer.svelte +++ b/packages/builder/src/components/integration/QueryViewer.svelte @@ -15,7 +15,7 @@ import IntegrationQueryEditor from "components/integration/index.svelte" import ExternalDataSourceTable from "components/backend/DataTable/ExternalDataSourceTable.svelte" import ParameterBuilder from "components/integration/QueryParameterBuilder.svelte" - import { datasources, integrations } from 'stores/backend/' + import { datasources, integrations, queries } from 'stores/backend/' const PREVIEW_HEADINGS = [ { diff --git a/packages/builder/src/stores/backend/queries.js b/packages/builder/src/stores/backend/queries.js index 8bda870179..a23cc4d644 100644 --- a/packages/builder/src/stores/backend/queries.js +++ b/packages/builder/src/stores/backend/queries.js @@ -10,6 +10,11 @@ export function createQueriesStore() { subscribe, set, update, + init: async () => { + const response = await api.get(`/api/queries`) + const json = await response.json() + set({ list: json, selected: null }) + }, fetch: async () => { const response = await api.get(`/api/queries`) const json = await response.json() @@ -54,7 +59,7 @@ export function createQueriesStore() { datasources.update(state => ({ ...state, selected: query.datasourceId })) }, delete: async query => { - await api.delete(`/api/queries/${query._id}/${query._rev}`) + const response = await api.delete(`/api/queries/${query._id}/${query._rev}`) update(state => { state.list = state.list.filter(existing => existing._id !== query._id) if (state.selected === query._id) { @@ -63,6 +68,7 @@ export function createQueriesStore() { return state }) + console.log(response) }, } } diff --git a/packages/builder/src/stores/backend/tests/datasources.spec.js b/packages/builder/src/stores/backend/tests/datasources.spec.js index 0d1d15777d..f4e10b6aa3 100644 --- a/packages/builder/src/stores/backend/tests/datasources.spec.js +++ b/packages/builder/src/stores/backend/tests/datasources.spec.js @@ -11,8 +11,9 @@ import { queries } from '../queries' describe("Datasources Store", () => { let store = createDatasourcesStore() - beforeEach(() => { - store.init() + beforeEach(async () => { + api.get.mockReturnValue({ json: () => [SOME_DATASOURCE]}) + await store.init() }) it("Initialises correctly", async () => { @@ -35,9 +36,9 @@ describe("Datasources Store", () => { expect(get(store).select).toEqual(SOME_DATASOURCE._id) }) - it("resets the queries store when it a new datasource is selected", async () => { + it("resets the queries store when new datasource is selected", async () => { - store.select(SOME_DATASOURCE._id) + await store.select(SOME_DATASOURCE._id) const queriesValue = get(queries) expect(queriesValue.selected).toEqual(null) }) diff --git a/packages/builder/src/stores/backend/tests/fixtures/queries.js b/packages/builder/src/stores/backend/tests/fixtures/queries.js new file mode 100644 index 0000000000..97807cdefc --- /dev/null +++ b/packages/builder/src/stores/backend/tests/fixtures/queries.js @@ -0,0 +1,80 @@ +export const SOME_QUERY = { + "datasourceId": "datasource_04b003a7b4a8428eadd3bb2f7eae0255", + "parameters": [], + "fields": { + "headers": {}, + "queryString": "", + "path": "Speakers" + }, + "queryVerb": "read", + "schema": {}, + "name": "Speakers", + "_id": "query_datasource_04b003a7b4a8428eadd3bb2f7eae0255_bcb8ffc6fcbc484e8d63121fc0bf986f", + "_rev": "2-941f8699eb0adf995f8bd59c99203b26", + "readable": true + } + +export const SAVE_QUERY_RESPONSE = { + "datasourceId": "datasource_04b003a7b4a8428eadd3bb2f7eae0255", + "parameters": [], + "fields": { + "headers": {}, + "queryString": "", + "path": "Speakers" + }, + "queryVerb": "read", + "schema": { + "id": { + "name": "id", + "type": "string" + }, + "firstName": { + "name": "firstName", + "type": "string" + }, + "lastName": { + "name": "lastName", + "type": "string" + }, + "fullName": { + "name": "fullName", + "type": "string" + }, + "bio": { + "name": "bio", + "type": "string" + }, + "tagLine": { + "name": "tagLine", + "type": "string" + }, + "profilePicture": { + "name": "profilePicture", + "type": "string" + }, + "sessions": { + "name": "sessions", + "type": "string" + }, + "isTopSpeaker": { + "name": "isTopSpeaker", + "type": "string" + }, + "links": { + "name": "links", + "type": "string" + }, + "questionAnswers": { + "name": "questionAnswers", + "type": "string" + }, + "categories": { + "name": "categories", + "type": "string" + } + }, + "name": "Speakers", + "_id": "query_datasource_04b003a7b4a8428eadd3bb2f7eae0255_bcb8ffc6fcbc484e8d63121fc0bf986f", + "_rev": "3-5a64adef494b1e9c793dc91b51ce73c6", + "readable": true +} \ No newline at end of file diff --git a/packages/builder/src/stores/backend/tests/permissions.spec.js b/packages/builder/src/stores/backend/tests/permissions.spec.js index 54938c3c6f..ab5aebb284 100644 --- a/packages/builder/src/stores/backend/tests/permissions.spec.js +++ b/packages/builder/src/stores/backend/tests/permissions.spec.js @@ -21,6 +21,5 @@ describe("Permissions Store", () => { expect(api.get).toBeCalledWith(`/api/permission/${resourceId}`) expect(permissions).toEqual(PERMISSIONS_FOR_RESOURCE) - }) }) \ No newline at end of file diff --git a/packages/builder/src/stores/backend/tests/queries.spec.js b/packages/builder/src/stores/backend/tests/queries.spec.js index 4e7a54d0b5..c9d4a51c73 100644 --- a/packages/builder/src/stores/backend/tests/queries.spec.js +++ b/packages/builder/src/stores/backend/tests/queries.spec.js @@ -1,26 +1,57 @@ -// import api from 'builderStore/api' +import { get } from 'svelte/store' +import api from 'builderStore/api' -// jest.mock('builderStore/api'); +jest.mock('builderStore/api'); -// const PERMISSIONS_FOR_RESOURCE = { -// "write": "BASIC", -// "read": "BASIC" -// } +import { SOME_QUERY, SAVE_QUERY_RESPONSE } from './fixtures/queries' -// import { createQueriesStore } from "../queries" +import { createQueriesStore } from "../queries" +import { datasources } from '../datasources' -// describe("Queries Store", () => { -// const store = createQueriesStore() +describe("Queries Store", () => { + let store = createQueriesStore() -// it("fetches permissions for specific resource", async () => { -// api.get.mockReturnValueOnce({ json: () => PERMISSIONS_FOR_RESOURCE}) + beforeEach(async () => { + api.get.mockReturnValue({ json: () => [SOME_QUERY]}) + await store.init() + }) -// const resourceId = "ta_013657543b4043b89dbb17e9d3a4723a" + it("Initialises correctly", async () => { + api.get.mockReturnValue({ json: () => [SOME_QUERY]}) + + await store.init() + expect(get(store)).toEqual({ list: [SOME_QUERY], selected: null}) + }) -// const permissions = await store.forResource(resourceId) + it("fetches all the queries", async () => { + api.get.mockReturnValue({ json: () => [SOME_QUERY]}) -// expect(api.get).toBeCalledWith(`/api/permission/${resourceId}`) -// expect(permissions).toEqual(PERMISSIONS_FOR_RESOURCE) - -// }) -// }) \ No newline at end of file + await store.fetch() + expect(get(store)).toEqual({ list: [SOME_QUERY], selected: null}) + }) + + it("selects a query and updates selected datasource", async () => { + await store.select(SOME_QUERY) + + expect(get(store).selected).toEqual(SOME_QUERY._id) + expect(get(datasources).selected).toEqual(SOME_QUERY.datasourceId) + }) + + it("saves the datasource, updates the store and returns status message", async () => { + api.post.mockReturnValue({ json: () => SAVE_QUERY_RESPONSE}) + + await store.select(SOME_QUERY.datasourceId, SOME_QUERY) + + expect(get(store).list).toEqual(expect.arrayContaining([SOME_QUERY])) + }) + it("deletes a datasource, updates the store and returns status message", async () => { + api.get.mockReturnValue({ json: () => SOME_QUERY}) + + await store.fetch() + + api.delete.mockReturnValue({status: 200, message: 'Datasource deleted.'}) + + await store.delete(SOME_QUERY) + expect(get(store)).toEqual({ list: [], selected: null}) + }) +}) \ No newline at end of file From e1034ae5ac5be33323b35665c8b594e07ae85362 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Keviin=20=C3=85berg=20Kultalahti?= Date: Mon, 29 Mar 2021 17:50:12 +0200 Subject: [PATCH 40/50] fix last query test --- packages/builder/src/stores/backend/queries.js | 1 - .../builder/src/stores/backend/tests/queries.spec.js | 10 ++++------ 2 files changed, 4 insertions(+), 7 deletions(-) diff --git a/packages/builder/src/stores/backend/queries.js b/packages/builder/src/stores/backend/queries.js index a23cc4d644..ea016f50bc 100644 --- a/packages/builder/src/stores/backend/queries.js +++ b/packages/builder/src/stores/backend/queries.js @@ -68,7 +68,6 @@ export function createQueriesStore() { return state }) - console.log(response) }, } } diff --git a/packages/builder/src/stores/backend/tests/queries.spec.js b/packages/builder/src/stores/backend/tests/queries.spec.js index c9d4a51c73..7e5019d97c 100644 --- a/packages/builder/src/stores/backend/tests/queries.spec.js +++ b/packages/builder/src/stores/backend/tests/queries.spec.js @@ -45,12 +45,10 @@ describe("Queries Store", () => { expect(get(store).list).toEqual(expect.arrayContaining([SOME_QUERY])) }) it("deletes a datasource, updates the store and returns status message", async () => { - api.get.mockReturnValue({ json: () => SOME_QUERY}) - - await store.fetch() - - api.delete.mockReturnValue({status: 200, message: 'Datasource deleted.'}) - + console.log('After Fetch: ', get(store)) + + api.delete.mockReturnValue({status: 200, message: `Query deleted.`}) + await store.delete(SOME_QUERY) expect(get(store)).toEqual({ list: [], selected: null}) }) From 292a891883de1e4e3164c84d110961f9f04b4e0a Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Keviin=20=C3=85berg=20Kultalahti?= Date: Mon, 29 Mar 2021 17:52:38 +0200 Subject: [PATCH 41/50] update query store --- packages/builder/src/stores/backend/queries.js | 1 + packages/builder/src/stores/backend/tests/queries.spec.js | 5 ++--- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/packages/builder/src/stores/backend/queries.js b/packages/builder/src/stores/backend/queries.js index ea016f50bc..e7980988cc 100644 --- a/packages/builder/src/stores/backend/queries.js +++ b/packages/builder/src/stores/backend/queries.js @@ -68,6 +68,7 @@ export function createQueriesStore() { return state }) + return response; }, } } diff --git a/packages/builder/src/stores/backend/tests/queries.spec.js b/packages/builder/src/stores/backend/tests/queries.spec.js index 7e5019d97c..d1efd678f9 100644 --- a/packages/builder/src/stores/backend/tests/queries.spec.js +++ b/packages/builder/src/stores/backend/tests/queries.spec.js @@ -37,15 +37,14 @@ describe("Queries Store", () => { expect(get(datasources).selected).toEqual(SOME_QUERY.datasourceId) }) - it("saves the datasource, updates the store and returns status message", async () => { + it("saves the query, updates the store and returns status message", async () => { api.post.mockReturnValue({ json: () => SAVE_QUERY_RESPONSE}) await store.select(SOME_QUERY.datasourceId, SOME_QUERY) expect(get(store).list).toEqual(expect.arrayContaining([SOME_QUERY])) }) - it("deletes a datasource, updates the store and returns status message", async () => { - console.log('After Fetch: ', get(store)) + it("deletes a query, updates the store and returns status message", async () => { api.delete.mockReturnValue({status: 200, message: `Query deleted.`}) From dd21ee238628f4be661a6599b0f5351f94ff08fc Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Keviin=20=C3=85berg=20Kultalahti?= Date: Mon, 29 Mar 2021 18:23:53 +0200 Subject: [PATCH 42/50] wip: roles store test --- packages/builder/src/stores/backend/roles.js | 7 ++-- .../stores/backend/tests/fixtures/roles.js | 32 +++++++++++++++++ .../src/stores/backend/tests/roles.spec.js | 34 +++++++++++++++++++ 3 files changed, 71 insertions(+), 2 deletions(-) create mode 100644 packages/builder/src/stores/backend/tests/fixtures/roles.js diff --git a/packages/builder/src/stores/backend/roles.js b/packages/builder/src/stores/backend/roles.js index 146ba9fbd8..b927f00cac 100644 --- a/packages/builder/src/stores/backend/roles.js +++ b/packages/builder/src/stores/backend/roles.js @@ -3,7 +3,7 @@ import api from "builderStore/api" export function createRolesStore() { - const { subscribe, set } = writable([]) + const { subscribe, update, set } = writable([]) return { subscribe, @@ -12,7 +12,10 @@ export function createRolesStore() { }, delete: async role => { const response = await api.delete(`/api/roles/${role._id}/${role._rev}`) - set(await getRoles()) + update(state => { + state = state.filter(existing => existing._id !== role._id) + return state + }) return response }, save: async role => { diff --git a/packages/builder/src/stores/backend/tests/fixtures/roles.js b/packages/builder/src/stores/backend/tests/fixtures/roles.js new file mode 100644 index 0000000000..1831bdbed2 --- /dev/null +++ b/packages/builder/src/stores/backend/tests/fixtures/roles.js @@ -0,0 +1,32 @@ +export const ROLES = [ + { + "name": "Test", + "permissionId": "admin", + "inherits": "ADMIN", + "_id": "role_04681b7e71914a0aa53e09a5bea3584f", + "_rev": "1-179c71ea61d7fd987306b84b6d64b00e" + }, + { + "_id": "ADMIN", + "name": "Admin", + "permissionId": "admin", + "inherits": "POWER" + }, + { + "_id": "POWER", + "name": "Power", + "permissionId": "power", + "inherits": "BASIC" + }, + { + "_id": "BASIC", + "name": "Basic", + "permissionId": "write", + "inherits": "PUBLIC" + }, + { + "_id": "PUBLIC", + "name": "Public", + "permissionId": "public" + } +] \ No newline at end of file diff --git a/packages/builder/src/stores/backend/tests/roles.spec.js b/packages/builder/src/stores/backend/tests/roles.spec.js index e69de29bb2..8ecd9c338e 100644 --- a/packages/builder/src/stores/backend/tests/roles.spec.js +++ b/packages/builder/src/stores/backend/tests/roles.spec.js @@ -0,0 +1,34 @@ +import { get } from 'svelte/store' +import api from 'builderStore/api' + +jest.mock('builderStore/api'); + +import { createRolesStore } from "../roles" +import { ROLES } from './fixtures/roles' + +describe("Roles Store", () => { + let store = createRolesStore() + + beforeEach( async() => { + store = createRolesStore() + }) + + it("fetches roles from backend", async () => { + api.get.mockReturnValue({ json: () => ROLES}) + await store.fetch() + + expect(api.get).toBeCalledWith("/api/roles") + expect(get(store)).toEqual(ROLES) + }) + + it("deletes a role", async () => { + api.get.mockReturnValue({ json: () => ROLES}) + await store.fetch() + + const {_id, _rev} = ROLES[0] + api.delete.mockReturnValue({status: 200, message: `Role deleted.`}) + await store.delete(`/api/roles/${_id}/${_rev}`) + + expect(get(store)).toEqual(ROLES) + }) +}) \ No newline at end of file From d22d5c7c28747b5fb19b4e0827dccaba4f6108f5 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Keviin=20=C3=85berg=20Kultalahti?= Date: Tue, 30 Mar 2021 10:49:42 +0200 Subject: [PATCH 43/50] fix last roles store test --- packages/builder/src/stores/backend/roles.js | 5 +---- .../builder/src/stores/backend/tests/roles.spec.js | 11 ++++++----- 2 files changed, 7 insertions(+), 9 deletions(-) diff --git a/packages/builder/src/stores/backend/roles.js b/packages/builder/src/stores/backend/roles.js index b927f00cac..a9f8d936f1 100644 --- a/packages/builder/src/stores/backend/roles.js +++ b/packages/builder/src/stores/backend/roles.js @@ -12,10 +12,7 @@ export function createRolesStore() { }, delete: async role => { const response = await api.delete(`/api/roles/${role._id}/${role._rev}`) - update(state => { - state = state.filter(existing => existing._id !== role._id) - return state - }) + update(state => state.filter(existing => existing._id !== role._id)) return response }, save: async role => { diff --git a/packages/builder/src/stores/backend/tests/roles.spec.js b/packages/builder/src/stores/backend/tests/roles.spec.js index 8ecd9c338e..13861f6359 100644 --- a/packages/builder/src/stores/backend/tests/roles.spec.js +++ b/packages/builder/src/stores/backend/tests/roles.spec.js @@ -22,13 +22,14 @@ describe("Roles Store", () => { }) it("deletes a role", async () => { - api.get.mockReturnValue({ json: () => ROLES}) + api.get.mockReturnValueOnce({ json: () => ROLES}) await store.fetch() - - const {_id, _rev} = ROLES[0] + api.delete.mockReturnValue({status: 200, message: `Role deleted.`}) - await store.delete(`/api/roles/${_id}/${_rev}`) + + const updatedRoles = [...ROLES.slice(1)] + await store.delete(ROLES[0]) - expect(get(store)).toEqual(ROLES) + expect(get(store)).toEqual(updatedRoles) }) }) \ No newline at end of file From 71dc4938da32de47f76770769e697712a4b69e41 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Keviin=20=C3=85berg=20Kultalahti?= Date: Tue, 30 Mar 2021 11:32:01 +0200 Subject: [PATCH 44/50] adds an init method to the tables store --- packages/builder/src/builderStore/store/frontend.js | 10 ++-------- packages/builder/src/stores/backend/tables.js | 10 +++++++++- 2 files changed, 11 insertions(+), 9 deletions(-) diff --git a/packages/builder/src/builderStore/store/frontend.js b/packages/builder/src/builderStore/store/frontend.js index 9db23d3001..219c4f3626 100644 --- a/packages/builder/src/builderStore/store/frontend.js +++ b/packages/builder/src/builderStore/store/frontend.js @@ -69,20 +69,14 @@ export const getFrontendStore = () => { // Initialise backend stores const [ _integrations, - _tables, ] = await Promise.all([ - api.get("/api/integrations").then(r => r.json()), - api.get(`/api/tables`).then(r => r.json()), + api.get("/api/integrations").then(r => r.json()) ]) datasources.init() integrations.set(_integrations) queries.init() database.set(application.instance) - tables.set({ - list: _tables, - selected: {}, - draft: {}, - }) + tables.init() }, routing: { fetch: async () => { diff --git a/packages/builder/src/stores/backend/tables.js b/packages/builder/src/stores/backend/tables.js index c13a3d46ce..0992f04f23 100644 --- a/packages/builder/src/stores/backend/tables.js +++ b/packages/builder/src/stores/backend/tables.js @@ -71,10 +71,18 @@ export function createTablesStore() { return { subscribe, - set, fetch, select, save, + init: async () => { + const response = await api.get("/api/tables") + const json = await response.json() + set({ + list: json, + selected: {}, + draft: {}, + }) + }, delete: async table => { await api.delete(`/api/tables/${table._id}/${table._rev}`) update(state => ({ From 9bdfe8336dc2afef8636503c1b65e2294d9a90d2 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Keviin=20=C3=85berg=20Kultalahti?= Date: Tue, 30 Mar 2021 15:37:53 +0200 Subject: [PATCH 45/50] adds tables store tests --- packages/builder/src/stores/backend/tables.js | 6 +- .../stores/backend/tests/fixtures/tables.js | 726 ++++++++++++++++++ .../src/stores/backend/tests/tables.spec.js | 75 ++ 3 files changed, 802 insertions(+), 5 deletions(-) create mode 100644 packages/builder/src/stores/backend/tests/fixtures/tables.js diff --git a/packages/builder/src/stores/backend/tables.js b/packages/builder/src/stores/backend/tables.js index 0992f04f23..2bc92cec0d 100644 --- a/packages/builder/src/stores/backend/tables.js +++ b/packages/builder/src/stores/backend/tables.js @@ -5,11 +5,7 @@ import api from "builderStore/api" export function createTablesStore() { - const store = writable({ - list: [], - selected: {}, - draft: {}, - }) + const store = writable({}) const { subscribe, update, set } = store async function fetch() { diff --git a/packages/builder/src/stores/backend/tests/fixtures/tables.js b/packages/builder/src/stores/backend/tests/fixtures/tables.js new file mode 100644 index 0000000000..5494703783 --- /dev/null +++ b/packages/builder/src/stores/backend/tests/fixtures/tables.js @@ -0,0 +1,726 @@ +export const SOME_TABLES = [ + { + "type": "table", + "views": {}, + "name": "Guest", + "schema": { + "Auto ID": { + "name": "Auto ID", + "type": "number", + "subtype": "autoID", + "icon": "ri-magic-line", + "autocolumn": true, + "constraints": { + "type": "number", + "presence": false, + "numericality": { + "greaterThanOrEqualTo": "", + "lessThanOrEqualTo": "" + } + }, + "lastID": 1 + }, + "Created By": { + "name": "Created By", + "type": "link", + "subtype": "createdBy", + "icon": "ri-magic-line", + "autocolumn": true, + "constraints": { + "type": "array", + "presence": false + }, + "tableId": "ta_users", + "fieldName": "Guest-Created By", + "relationshipType": "many-to-many" + }, + "Created At": { + "name": "Created At", + "type": "datetime", + "subtype": "createdAt", + "icon": "ri-magic-line", + "autocolumn": true, + "constraints": { + "type": "string", + "length": {}, + "presence": false, + "datetime": { + "latest": "", + "earliest": "" + } + } + }, + "Updated By": { + "name": "Updated By", + "type": "link", + "subtype": "updatedBy", + "icon": "ri-magic-line", + "autocolumn": true, + "constraints": { + "type": "array", + "presence": false + }, + "tableId": "ta_users", + "fieldName": "Guest-Updated By", + "relationshipType": "many-to-many" + }, + "Updated At": { + "name": "Updated At", + "type": "datetime", + "subtype": "updatedAt", + "icon": "ri-magic-line", + "autocolumn": true, + "constraints": { + "type": "string", + "length": {}, + "presence": false, + "datetime": { + "latest": "", + "earliest": "" + } + } + }, + "Name": { + "type": "string", + "constraints": { + "type": "string", + "length": { + "maximum": "" + }, + "presence": false + }, + "fieldName": "Guest", + "name": "Name" + }, + "Episode": { + "name": "Episode", + "type": "link", + "tableId": "ta_d4bf541ce0d84b16a1a8e0a060e5f7f7", + "fieldName": "Guest", + "relationshipType": "one-to-many" + } + }, + "primaryDisplay": "Name", + "indexes": [], + "_id": "ta_3c78cffe33664ca9bfb6b2b6cb3ee55a", + "_rev": "10-27f034bf50ec3e2f180d8f96db1f0f31" + }, + { + "type": "table", + "views": {}, + "name": "Sponsors", + "schema": { + "Auto ID": { + "name": "Auto ID", + "type": "number", + "subtype": "autoID", + "icon": "ri-magic-line", + "autocolumn": true, + "constraints": { + "type": "number", + "presence": false, + "numericality": { + "greaterThanOrEqualTo": "", + "lessThanOrEqualTo": "" + } + }, + "lastID": 1 + }, + "Created By": { + "name": "Created By", + "type": "link", + "subtype": "createdBy", + "icon": "ri-magic-line", + "autocolumn": true, + "constraints": { + "type": "array", + "presence": false + }, + "tableId": "ta_users", + "fieldName": "Sponsors-Created By", + "relationshipType": "many-to-many" + }, + "Created At": { + "name": "Created At", + "type": "datetime", + "subtype": "createdAt", + "icon": "ri-magic-line", + "autocolumn": true, + "constraints": { + "type": "string", + "length": {}, + "presence": false, + "datetime": { + "latest": "", + "earliest": "" + } + } + }, + "Updated By": { + "name": "Updated By", + "type": "link", + "subtype": "updatedBy", + "icon": "ri-magic-line", + "autocolumn": true, + "constraints": { + "type": "array", + "presence": false + }, + "tableId": "ta_users", + "fieldName": "Sponsors-Updated By", + "relationshipType": "many-to-many" + }, + "Updated At": { + "name": "Updated At", + "type": "datetime", + "subtype": "updatedAt", + "icon": "ri-magic-line", + "autocolumn": true, + "constraints": { + "type": "string", + "length": {}, + "presence": false, + "datetime": { + "latest": "", + "earliest": "" + } + } + }, + "Name": { + "type": "string", + "constraints": { + "type": "string", + "length": { + "maximum": "" + }, + "presence": false + }, + "fieldName": "Sponsors", + "name": "Name" + }, + "Spot": { + "type": "longform", + "constraints": { + "type": "string", + "length": {}, + "presence": false + }, + "fieldName": "Sponsors", + "name": "Spot" + }, + "Episode": { + "name": "Episode", + "type": "link", + "tableId": "ta_d4bf541ce0d84b16a1a8e0a060e5f7f7", + "fieldName": "Sponsors", + "relationshipType": "many-to-many" + } + }, + "primaryDisplay": "Name", + "indexes": [], + "_id": "ta_7fd0fa15edd54e0f91a47f50b7577281", + "_rev": "7-de89b81e21ae4b3f65a6b655144fe097" + }, + { + "type": "table", + "views": {}, + "name": "Episode", + "schema": { + "Auto ID": { + "name": "Auto ID", + "type": "number", + "subtype": "autoID", + "icon": "ri-magic-line", + "autocolumn": true, + "constraints": { + "type": "number", + "presence": false, + "numericality": { + "greaterThanOrEqualTo": "", + "lessThanOrEqualTo": "" + } + }, + "lastID": 1 + }, + "Created By": { + "name": "Created By", + "type": "link", + "subtype": "createdBy", + "icon": "ri-magic-line", + "autocolumn": true, + "constraints": { + "type": "array", + "presence": false + }, + "tableId": "ta_users", + "fieldName": "Episode-Created By", + "relationshipType": "many-to-many" + }, + "Created At": { + "name": "Created At", + "type": "datetime", + "subtype": "createdAt", + "icon": "ri-magic-line", + "autocolumn": true, + "constraints": { + "type": "string", + "length": {}, + "presence": false, + "datetime": { + "latest": "", + "earliest": "" + } + } + }, + "Updated By": { + "name": "Updated By", + "type": "link", + "subtype": "updatedBy", + "icon": "ri-magic-line", + "autocolumn": true, + "constraints": { + "type": "array", + "presence": false + }, + "tableId": "ta_users", + "fieldName": "Episode-Updated By", + "relationshipType": "many-to-many" + }, + "Updated At": { + "name": "Updated At", + "type": "datetime", + "subtype": "updatedAt", + "icon": "ri-magic-line", + "autocolumn": true, + "constraints": { + "type": "string", + "length": {}, + "presence": false, + "datetime": { + "latest": "", + "earliest": "" + } + } + }, + "Summary": { + "type": "longform", + "constraints": { + "type": "string", + "length": {}, + "presence": false + }, + "fieldName": "Episode", + "name": "Summary" + }, + "Author": { + "type": "string", + "constraints": { + "type": "string", + "length": { + "maximum": "" + }, + "presence": false + }, + "fieldName": "Episode", + "name": "Author" + }, + "Published": { + "type": "boolean", + "constraints": { + "type": "boolean", + "presence": false + }, + "fieldName": "Episode", + "name": "Published" + }, + "Guest": { + "type": "link", + "constraints": { + "type": "array", + "presence": false + }, + "fieldName": "Episode", + "name": "Guest", + "relationshipType": "many-to-one", + "tableId": "ta_3c78cffe33664ca9bfb6b2b6cb3ee55a" + }, + "Title": { + "type": "string", + "constraints": { + "type": "string", + "length": { + "maximum": "" + }, + "presence": false + }, + "fieldName": "Episode", + "name": "Title" + }, + "Show Notes": { + "type": "longform", + "constraints": { + "type": "string", + "length": {}, + "presence": false + }, + "fieldName": "Episode", + "name": "Show Notes" + }, + "Sponsors": { + "type": "link", + "constraints": { + "type": "array", + "presence": false + }, + "fieldName": "Episode", + "name": "Sponsors", + "relationshipType": "many-to-many", + "tableId": "ta_7fd0fa15edd54e0f91a47f50b7577281" + }, + "Number": { + "type": "number", + "constraints": { + "type": "number", + "presence": false, + "numericality": { + "greaterThanOrEqualTo": "", + "lessThanOrEqualTo": "" + } + }, + "fieldName": "Episode", + "name": "Number" + }, + "Audio": { + "type": "attachment", + "constraints": { + "type": "array", + "presence": false + }, + "fieldName": "Episode", + "name": "Audio" + } + }, + "indexes": [], + "primaryDisplay": "Author", + "_id": "ta_d4bf541ce0d84b16a1a8e0a060e5f7f7", + "_rev": "13-9d70dee825154a9df5c22e1d39bf269c" + }, + { + "type": "table", + "views": {}, + "name": "Users", + "schema": { + "email": { + "type": "string", + "constraints": { + "type": "string", + "email": true, + "length": { + "maximum": "" + }, + "presence": true + }, + "fieldName": "email", + "name": "email" + }, + "roleId": { + "fieldName": "roleId", + "name": "roleId", + "type": "options", + "constraints": { + "type": "string", + "presence": false, + "inclusion": [ + "ADMIN", + "POWER", + "BASIC", + "PUBLIC", + "BUILDER" + ] + } + }, + "status": { + "fieldName": "status", + "name": "status", + "type": "options", + "constraints": { + "type": "string", + "presence": false, + "inclusion": [ + "active", + "inactive" + ] + } + }, + "Episode-Created By": { + "name": "Episode-Created By", + "type": "link", + "tableId": "ta_d4bf541ce0d84b16a1a8e0a060e5f7f7", + "fieldName": "Created By", + "relationshipType": "many-to-many", + "autocolumn": true + }, + "Episode-Updated By": { + "name": "Episode-Updated By", + "type": "link", + "tableId": "ta_d4bf541ce0d84b16a1a8e0a060e5f7f7", + "fieldName": "Updated By", + "relationshipType": "many-to-many", + "autocolumn": true + }, + "Guest-Created By": { + "name": "Guest-Created By", + "type": "link", + "tableId": "ta_3c78cffe33664ca9bfb6b2b6cb3ee55a", + "fieldName": "Created By", + "relationshipType": "many-to-many", + "autocolumn": true + }, + "Guest-Updated By": { + "name": "Guest-Updated By", + "type": "link", + "tableId": "ta_3c78cffe33664ca9bfb6b2b6cb3ee55a", + "fieldName": "Updated By", + "relationshipType": "many-to-many", + "autocolumn": true + }, + "Sponsors-Created By": { + "name": "Sponsors-Created By", + "type": "link", + "tableId": "ta_7fd0fa15edd54e0f91a47f50b7577281", + "fieldName": "Created By", + "relationshipType": "many-to-many", + "autocolumn": true + }, + "Sponsors-Updated By": { + "name": "Sponsors-Updated By", + "type": "link", + "tableId": "ta_7fd0fa15edd54e0f91a47f50b7577281", + "fieldName": "Updated By", + "relationshipType": "many-to-many", + "autocolumn": true + } + }, + "primaryDisplay": "email", + "_id": "ta_users", + "_rev": "67-1833e6a0028c100633e31788fe958a62" + } +] + +export const SAVE_TABLES_RESPONSE = { + "type": "table", + "_id": "ta_3c78cffe33664ca9bfb6b2b6cb3ee55a", + "views": {}, + "name": "Guest", + "schema": { + "Auto ID": { + "name": "Auto ID", + "type": "number", + "subtype": "autoID", + "icon": "ri-magic-line", + "autocolumn": true, + "constraints": { + "type": "number", + "presence": false, + "numericality": { + "greaterThanOrEqualTo": "", + "lessThanOrEqualTo": "" + } + }, + "lastID": 1 + }, + "Created By": { + "name": "Created By", + "type": "link", + "subtype": "createdBy", + "icon": "ri-magic-line", + "autocolumn": true, + "constraints": { + "type": "array", + "presence": false + }, + "tableId": "ta_users", + "fieldName": "Guest-Created By", + "relationshipType": "many-to-many" + }, + "Created At": { + "name": "Created At", + "type": "datetime", + "subtype": "createdAt", + "icon": "ri-magic-line", + "autocolumn": true, + "constraints": { + "type": "string", + "length": {}, + "presence": false, + "datetime": { + "latest": "", + "earliest": "" + } + } + }, + "Updated By": { + "name": "Updated By", + "type": "link", + "subtype": "updatedBy", + "icon": "ri-magic-line", + "autocolumn": true, + "constraints": { + "type": "array", + "presence": false + }, + "tableId": "ta_users", + "fieldName": "Guest-Updated By", + "relationshipType": "many-to-many" + }, + "Updated At": { + "name": "Updated At", + "type": "datetime", + "subtype": "updatedAt", + "icon": "ri-magic-line", + "autocolumn": true, + "constraints": { + "type": "string", + "length": {}, + "presence": false, + "datetime": { + "latest": "", + "earliest": "" + } + } + }, + "Episode": { + "name": "Episode", + "type": "link", + "tableId": "ta_d4bf541ce0d84b16a1a8e0a060e5f7f7", + "fieldName": "Guest", + "relationshipType": "one-to-many" + }, + "Names": { + "type": "string", + "constraints": { + "type": "string", + "length": { + "maximum": "" + }, + "presence": false + }, + "fieldName": "Guest", + "name": "Names" + } + }, + "primaryDisplay": "Names", + "indexes": [], + "_rev": "11-7c153edbc6d7c43821cfd5ed526266cf" +} + +export const A_TABLE = { + "type": "table", + "views": {}, + "name": "Guest", + "schema": { + "Auto ID": { + "name": "Auto ID", + "type": "number", + "subtype": "autoID", + "icon": "ri-magic-line", + "autocolumn": true, + "constraints": { + "type": "number", + "presence": false, + "numericality": { + "greaterThanOrEqualTo": "", + "lessThanOrEqualTo": "" + } + }, + "lastID": 1 + }, + "Created By": { + "name": "Created By", + "type": "link", + "subtype": "createdBy", + "icon": "ri-magic-line", + "autocolumn": true, + "constraints": { + "type": "array", + "presence": false + }, + "tableId": "ta_users", + "fieldName": "Guest-Created By", + "relationshipType": "many-to-many" + }, + "Created At": { + "name": "Created At", + "type": "datetime", + "subtype": "createdAt", + "icon": "ri-magic-line", + "autocolumn": true, + "constraints": { + "type": "string", + "length": {}, + "presence": false, + "datetime": { + "latest": "", + "earliest": "" + } + } + }, + "Updated By": { + "name": "Updated By", + "type": "link", + "subtype": "updatedBy", + "icon": "ri-magic-line", + "autocolumn": true, + "constraints": { + "type": "array", + "presence": false + }, + "tableId": "ta_users", + "fieldName": "Guest-Updated By", + "relationshipType": "many-to-many" + }, + "Updated At": { + "name": "Updated At", + "type": "datetime", + "subtype": "updatedAt", + "icon": "ri-magic-line", + "autocolumn": true, + "constraints": { + "type": "string", + "length": {}, + "presence": false, + "datetime": { + "latest": "", + "earliest": "" + } + } + }, + "Episode": { + "name": "Episode", + "type": "link", + "tableId": "ta_d4bf541ce0d84b16a1a8e0a060e5f7f7", + "fieldName": "Guest", + "relationshipType": "one-to-many" + }, + "Names": { + "type": "string", + "constraints": { + "type": "string", + "length": { + "maximum": "" + }, + "presence": false + }, + "fieldName": "Guest", + "name": "Names" + } + }, + "primaryDisplay": "Names", + "indexes": [], + "_id": "ta_3c78cffe33664ca9bfb6b2b6cb3ee55a", + "_rev": "10-27f034bf50ec3e2f180d8f96db1f0f31", + "_rename": { + "old": "Name", + "updated": "Names" + } +} \ No newline at end of file diff --git a/packages/builder/src/stores/backend/tests/tables.spec.js b/packages/builder/src/stores/backend/tests/tables.spec.js index e69de29bb2..ef65632ec8 100644 --- a/packages/builder/src/stores/backend/tests/tables.spec.js +++ b/packages/builder/src/stores/backend/tests/tables.spec.js @@ -0,0 +1,75 @@ +import { get } from 'svelte/store' +import api from 'builderStore/api' + +jest.mock('builderStore/api'); + +import { SOME_TABLES, SAVE_TABLES_RESPONSE, A_TABLE } from './fixtures/tables' + +import { createTablesStore } from "../tables" +import { views } from '../views' + +describe("Tables Store", () => { + let store = createTablesStore() + + beforeEach(async () => { + api.get.mockReturnValue({ json: () => SOME_TABLES}) + await store.init() + }) + + it("Initialises correctly", async () => { + expect(get(store)).toEqual({ list: SOME_TABLES, selected: {}, draft: {}}) + }) + + it("fetches all the tables", async () => { + api.get.mockReturnValue({ json: () => SOME_TABLES}) + + await store.fetch() + expect(get(store)).toEqual({ list: SOME_TABLES, selected: {}, draft: {}}) + }) + + it("selects a table", async () => { + const tableToSelect = SOME_TABLES[0] + await store.select(tableToSelect) + + expect(get(store).selected).toEqual(tableToSelect) + expect(get(store).draft).toEqual(tableToSelect) + }) + + it("selecting without a param resets the selected property", async () => { + await store.select() + + expect(get(store).draft).toEqual({}) + }) + + it("selecting a table updates the view store", async () => { + const tableToSelect = SOME_TABLES[0] + await store.select(tableToSelect) + + expect(get(store).selected).toEqual(tableToSelect) + expect(get(views).selected).toEqual({ name: `all_${tableToSelect._id}` }) + }) + + it("saving a table also selects it", async () => { + api.post.mockReturnValue({ json: () => SAVE_TABLES_RESPONSE}) + + await store.save(A_TABLE) + + expect(get(store).selected).toEqual(SAVE_TABLES_RESPONSE) + }) + + it("saving the table returns a response", async () => { + api.post.mockReturnValue({ json: () => SAVE_TABLES_RESPONSE}) + + const response = await store.save(A_TABLE) + + expect(response).toEqual(SAVE_TABLES_RESPONSE) + }) + it("deleting a table removes it from the store", async () => { + api.delete.mockReturnValue({status: 200, message: `Table deleted.`}) + + await store.delete(A_TABLE) + expect(get(store).list).toEqual(expect.not.arrayContaining([A_TABLE])) + }) + + // TODO: Write tests for saving and deleting fields +}) \ No newline at end of file From 17dea3124da1d01be32f25c405960bca54f5f54c Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Keviin=20=C3=85berg=20Kultalahti?= Date: Tue, 30 Mar 2021 18:10:58 +0200 Subject: [PATCH 46/50] wip: views store tests --- .../stores/backend/tests/fixtures/views.js | 102 ++++++++++++++++++ .../src/stores/backend/tests/views.spec.js | 21 ++++ packages/builder/src/stores/backend/views.js | 2 + 3 files changed, 125 insertions(+) create mode 100644 packages/builder/src/stores/backend/tests/fixtures/views.js diff --git a/packages/builder/src/stores/backend/tests/fixtures/views.js b/packages/builder/src/stores/backend/tests/fixtures/views.js new file mode 100644 index 0000000000..9a7b6173ad --- /dev/null +++ b/packages/builder/src/stores/backend/tests/fixtures/views.js @@ -0,0 +1,102 @@ +export const A_VIEW = { + "name": "Published", + "tableId": "ta_3c78cffe33664ca9bfb6b2b6cb3ee55a", + "filters": [], + "schema": { + "Auto ID": { + "name": "Auto ID", + "type": "number", + "subtype": "autoID", + "icon": "ri-magic-line", + "autocolumn": true, + "constraints": { + "type": "number", + "presence": false, + "numericality": { + "greaterThanOrEqualTo": "", + "lessThanOrEqualTo": "" + } + }, + "lastID": 2 + }, + "Created By": { + "name": "Created By", + "type": "link", + "subtype": "createdBy", + "icon": "ri-magic-line", + "autocolumn": true, + "constraints": { + "type": "array", + "presence": false + }, + "tableId": "ta_users", + "fieldName": "Guest-Created By", + "relationshipType": "many-to-many" + }, + "Created At": { + "name": "Created At", + "type": "datetime", + "subtype": "createdAt", + "icon": "ri-magic-line", + "autocolumn": true, + "constraints": { + "type": "string", + "length": {}, + "presence": false, + "datetime": { + "latest": "", + "earliest": "" + } + } + }, + "Updated By": { + "name": "Updated By", + "type": "link", + "subtype": "updatedBy", + "icon": "ri-magic-line", + "autocolumn": true, + "constraints": { + "type": "array", + "presence": false + }, + "tableId": "ta_users", + "fieldName": "Guest-Updated By", + "relationshipType": "many-to-many" + }, + "Updated At": { + "name": "Updated At", + "type": "datetime", + "subtype": "updatedAt", + "icon": "ri-magic-line", + "autocolumn": true, + "constraints": { + "type": "string", + "length": {}, + "presence": false, + "datetime": { + "latest": "", + "earliest": "" + } + } + }, + "Episode": { + "name": "Episode", + "type": "link", + "tableId": "ta_d4bf541ce0d84b16a1a8e0a060e5f7f7", + "fieldName": "Guest", + "relationshipType": "one-to-many" + }, + "Names": { + "type": "string", + "constraints": { + "type": "string", + "length": { + "maximum": "" + }, + "presence": false + }, + "fieldName": "Guest", + "name": "Names" + } + } +} \ No newline at end of file diff --git a/packages/builder/src/stores/backend/tests/views.spec.js b/packages/builder/src/stores/backend/tests/views.spec.js index e69de29bb2..4ba4d6ffed 100644 --- a/packages/builder/src/stores/backend/tests/views.spec.js +++ b/packages/builder/src/stores/backend/tests/views.spec.js @@ -0,0 +1,21 @@ +import { get } from 'svelte/store' +import api from 'builderStore/api' + +jest.mock('builderStore/api'); + +import { SOME_TABLES } from './fixtures/tables' + +import { createViewsStore } from "../views" + +describe("Tables Store", () => { + let store = createViewsStore() + + beforeEach(async () => { + api.get.mockReturnValue({ json: () => SOME_TABLES}) + await store.init() + }) + + it("Initialises correctly", async () => { + expect(get(store)).toEqual({ list: SOME_TABLES, selected: {}, draft: {}}) + }) +}) \ No newline at end of file diff --git a/packages/builder/src/stores/backend/views.js b/packages/builder/src/stores/backend/views.js index 5cd3c60267..0f2837bfbd 100644 --- a/packages/builder/src/stores/backend/views.js +++ b/packages/builder/src/stores/backend/views.js @@ -11,6 +11,7 @@ export function createViewsStore() { return { subscribe, select: view => { + console.log(view) update(state => ({ ...state, selected: view, @@ -28,6 +29,7 @@ export function createViewsStore() { name: view.name, ...json, } + console.log('JSON: ', json) update(state => { const viewTable = get(tables).list.find( From 12fbd6245ce49de770d75a89ca0339e29479affc Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Keviin=20=C3=85berg=20Kultalahti?= Date: Wed, 31 Mar 2021 13:48:30 +0200 Subject: [PATCH 47/50] fix merge regression --- .../DatasourceNavigator/popovers/EditDatasourcePopover.svelte | 2 ++ packages/builder/src/stores/backend/views.js | 1 - 2 files changed, 2 insertions(+), 1 deletion(-) diff --git a/packages/builder/src/components/backend/DatasourceNavigator/popovers/EditDatasourcePopover.svelte b/packages/builder/src/components/backend/DatasourceNavigator/popovers/EditDatasourcePopover.svelte index fe3998e137..9cf85cae98 100644 --- a/packages/builder/src/components/backend/DatasourceNavigator/popovers/EditDatasourcePopover.svelte +++ b/packages/builder/src/components/backend/DatasourceNavigator/popovers/EditDatasourcePopover.svelte @@ -23,6 +23,8 @@ async function deleteDatasource() { const wasSelectedSource = $datasources.selected + console.log(wasSelectedSource) + console.log(datasource) await datasources.delete(datasource) notifier.success("Datasource deleted") // navigate to first index page if the source you are deleting is selected diff --git a/packages/builder/src/stores/backend/views.js b/packages/builder/src/stores/backend/views.js index f3891c22aa..5cd3c60267 100644 --- a/packages/builder/src/stores/backend/views.js +++ b/packages/builder/src/stores/backend/views.js @@ -11,7 +11,6 @@ export function createViewsStore() { return { subscribe, select: view => { - console.log(view) update(state => ({ ...state, selected: view, From 7cc7feea07772bde73a4a86bf54b236565afa629 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Keviin=20=C3=85berg=20Kultalahti?= Date: Wed, 31 Mar 2021 14:23:58 +0200 Subject: [PATCH 48/50] fix templates not being passed correct param --- .../builder/src/builderStore/store/screenTemplates/index.js | 2 +- .../src/components/design/NavigationPanel/NewScreenModal.svelte | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/packages/builder/src/builderStore/store/screenTemplates/index.js b/packages/builder/src/builderStore/store/screenTemplates/index.js index 6f068674bf..38ae434753 100644 --- a/packages/builder/src/builderStore/store/screenTemplates/index.js +++ b/packages/builder/src/builderStore/store/screenTemplates/index.js @@ -24,7 +24,7 @@ export default (frontendState, tables) => { }) const fromScratch = enrichTemplate(createFromScratchScreen) - const tableTemplates = allTemplates(tables.list).map(enrichTemplate) + const tableTemplates = allTemplates(tables).map(enrichTemplate) return [ fromScratch, ...tableTemplates.sort((templateA, templateB) => { diff --git a/packages/builder/src/components/design/NavigationPanel/NewScreenModal.svelte b/packages/builder/src/components/design/NavigationPanel/NewScreenModal.svelte index 2361f58340..2f94e9b9cc 100644 --- a/packages/builder/src/components/design/NavigationPanel/NewScreenModal.svelte +++ b/packages/builder/src/components/design/NavigationPanel/NewScreenModal.svelte @@ -16,7 +16,7 @@ let createLink = true let roleId = "BASIC" - $: templates = getTemplates($store, $tables) + $: templates = getTemplates($store, $tables.list) $: route = !route && $allScreens.length === 0 ? "*" : route $: { if (templates && templateIndex === undefined) { From 82485607dff8604808858e3e2ae947ebed1fd59b Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Keviin=20=C3=85berg=20Kultalahti?= Date: Thu, 1 Apr 2021 08:40:30 +0200 Subject: [PATCH 49/50] lint fix --- .../src/builderStore/store/frontend.js | 6 +- .../builder/src/stores/backend/datasources.js | 12 +- .../builder/src/stores/backend/permissions.js | 1 - .../builder/src/stores/backend/queries.js | 7 +- packages/builder/src/stores/backend/roles.js | 1 - packages/builder/src/stores/backend/tables.js | 1 - .../backend/tests/fixtures/datasources.js | 49 +- .../stores/backend/tests/fixtures/queries.js | 152 +- .../stores/backend/tests/fixtures/roles.js | 62 +- .../stores/backend/tests/fixtures/tables.js | 1407 ++++++++--------- .../stores/backend/tests/fixtures/views.js | 194 +-- 11 files changed, 941 insertions(+), 951 deletions(-) diff --git a/packages/builder/src/builderStore/store/frontend.js b/packages/builder/src/builderStore/store/frontend.js index 219c4f3626..c1727c2e9e 100644 --- a/packages/builder/src/builderStore/store/frontend.js +++ b/packages/builder/src/builderStore/store/frontend.js @@ -67,10 +67,8 @@ export const getFrontendStore = () => { await hostingStore.actions.fetch() // Initialise backend stores - const [ - _integrations, - ] = await Promise.all([ - api.get("/api/integrations").then(r => r.json()) + const [_integrations] = await Promise.all([ + api.get("/api/integrations").then(r => r.json()), ]) datasources.init() integrations.set(_integrations) diff --git a/packages/builder/src/stores/backend/datasources.js b/packages/builder/src/stores/backend/datasources.js index 1a64955ba7..ff634c0185 100644 --- a/packages/builder/src/stores/backend/datasources.js +++ b/packages/builder/src/stores/backend/datasources.js @@ -3,11 +3,11 @@ import { queries } from "./" import api from "../../builderStore/api" export const INITIAL_DATASOURCE_VALUES = { - list: [], - selected: null, - } + list: [], + selected: null, +} -export function createDatasourcesStore(_api = api) { +export function createDatasourcesStore() { const { subscribe, update, set } = writable(INITIAL_DATASOURCE_VALUES) return { @@ -48,7 +48,9 @@ export function createDatasourcesStore(_api = api) { return json }, delete: async datasource => { - const response = await api.delete(`/api/datasources/${datasource._id}/${datasource._rev}`) + const response = await api.delete( + `/api/datasources/${datasource._id}/${datasource._rev}` + ) update(state => { const sources = state.list.filter( existing => existing._id !== datasource._id diff --git a/packages/builder/src/stores/backend/permissions.js b/packages/builder/src/stores/backend/permissions.js index f947bcce81..9172210872 100644 --- a/packages/builder/src/stores/backend/permissions.js +++ b/packages/builder/src/stores/backend/permissions.js @@ -1,7 +1,6 @@ import { writable } from "svelte/store" import api from "builderStore/api" - export function createPermissionStore() { const { subscribe } = writable([]) diff --git a/packages/builder/src/stores/backend/queries.js b/packages/builder/src/stores/backend/queries.js index e7980988cc..3870b7ec96 100644 --- a/packages/builder/src/stores/backend/queries.js +++ b/packages/builder/src/stores/backend/queries.js @@ -2,7 +2,6 @@ import { writable, get } from "svelte/store" import { datasources, integrations } from "./" import api from "builderStore/api" - export function createQueriesStore() { const { subscribe, set, update } = writable({ list: [], selected: null }) @@ -59,7 +58,9 @@ export function createQueriesStore() { datasources.update(state => ({ ...state, selected: query.datasourceId })) }, delete: async query => { - const response = await api.delete(`/api/queries/${query._id}/${query._rev}`) + const response = await api.delete( + `/api/queries/${query._id}/${query._rev}` + ) update(state => { state.list = state.list.filter(existing => existing._id !== query._id) if (state.selected === query._id) { @@ -68,7 +69,7 @@ export function createQueriesStore() { return state }) - return response; + return response }, } } diff --git a/packages/builder/src/stores/backend/roles.js b/packages/builder/src/stores/backend/roles.js index a9f8d936f1..1a1a9c04c5 100644 --- a/packages/builder/src/stores/backend/roles.js +++ b/packages/builder/src/stores/backend/roles.js @@ -1,7 +1,6 @@ import { writable } from "svelte/store" import api from "builderStore/api" - export function createRolesStore() { const { subscribe, update, set } = writable([]) diff --git a/packages/builder/src/stores/backend/tables.js b/packages/builder/src/stores/backend/tables.js index 2bc92cec0d..57acdb6750 100644 --- a/packages/builder/src/stores/backend/tables.js +++ b/packages/builder/src/stores/backend/tables.js @@ -3,7 +3,6 @@ import { views } from "./" import { cloneDeep } from "lodash/fp" import api from "builderStore/api" - export function createTablesStore() { const store = writable({}) const { subscribe, update, set } = store diff --git a/packages/builder/src/stores/backend/tests/fixtures/datasources.js b/packages/builder/src/stores/backend/tests/fixtures/datasources.js index 582c7fc574..550b662787 100644 --- a/packages/builder/src/stores/backend/tests/fixtures/datasources.js +++ b/packages/builder/src/stores/backend/tests/fixtures/datasources.js @@ -1,26 +1,25 @@ export const SOME_DATASOURCE = [ - { - "type": "datasource", - "name": "erterter", - "source": "REST", - "config": { - "url": "localhost", - "defaultHeaders": {} - }, - "_id": "datasource_04b003a7b4a8428eadd3bb2f7eae0255", - "_rev": "1-4e72002f1011e9392e655948469b7908" - } - ] - -export const SAVE_DATASOURCE = { - "type": "datasource", - "name": "CoolDB", - "source": "REST", - "config": { - "url": "localhost", - "defaultHeaders": {} - }, - "_id": "datasource_04b003a7b4a8428eadd3bb2f7eae0255", - "_rev": "1-4e72002f1011e9392e655948469b7908" - } - \ No newline at end of file + { + type: "datasource", + name: "erterter", + source: "REST", + config: { + url: "localhost", + defaultHeaders: {}, + }, + _id: "datasource_04b003a7b4a8428eadd3bb2f7eae0255", + _rev: "1-4e72002f1011e9392e655948469b7908", + }, +] + +export const SAVE_DATASOURCE = { + type: "datasource", + name: "CoolDB", + source: "REST", + config: { + url: "localhost", + defaultHeaders: {}, + }, + _id: "datasource_04b003a7b4a8428eadd3bb2f7eae0255", + _rev: "1-4e72002f1011e9392e655948469b7908", +} diff --git a/packages/builder/src/stores/backend/tests/fixtures/queries.js b/packages/builder/src/stores/backend/tests/fixtures/queries.js index 97807cdefc..7815d61ea5 100644 --- a/packages/builder/src/stores/backend/tests/fixtures/queries.js +++ b/packages/builder/src/stores/backend/tests/fixtures/queries.js @@ -1,80 +1,82 @@ export const SOME_QUERY = { - "datasourceId": "datasource_04b003a7b4a8428eadd3bb2f7eae0255", - "parameters": [], - "fields": { - "headers": {}, - "queryString": "", - "path": "Speakers" - }, - "queryVerb": "read", - "schema": {}, - "name": "Speakers", - "_id": "query_datasource_04b003a7b4a8428eadd3bb2f7eae0255_bcb8ffc6fcbc484e8d63121fc0bf986f", - "_rev": "2-941f8699eb0adf995f8bd59c99203b26", - "readable": true - } + datasourceId: "datasource_04b003a7b4a8428eadd3bb2f7eae0255", + parameters: [], + fields: { + headers: {}, + queryString: "", + path: "Speakers", + }, + queryVerb: "read", + schema: {}, + name: "Speakers", + _id: + "query_datasource_04b003a7b4a8428eadd3bb2f7eae0255_bcb8ffc6fcbc484e8d63121fc0bf986f", + _rev: "2-941f8699eb0adf995f8bd59c99203b26", + readable: true, +} export const SAVE_QUERY_RESPONSE = { - "datasourceId": "datasource_04b003a7b4a8428eadd3bb2f7eae0255", - "parameters": [], - "fields": { - "headers": {}, - "queryString": "", - "path": "Speakers" + datasourceId: "datasource_04b003a7b4a8428eadd3bb2f7eae0255", + parameters: [], + fields: { + headers: {}, + queryString: "", + path: "Speakers", + }, + queryVerb: "read", + schema: { + id: { + name: "id", + type: "string", }, - "queryVerb": "read", - "schema": { - "id": { - "name": "id", - "type": "string" - }, - "firstName": { - "name": "firstName", - "type": "string" - }, - "lastName": { - "name": "lastName", - "type": "string" - }, - "fullName": { - "name": "fullName", - "type": "string" - }, - "bio": { - "name": "bio", - "type": "string" - }, - "tagLine": { - "name": "tagLine", - "type": "string" - }, - "profilePicture": { - "name": "profilePicture", - "type": "string" - }, - "sessions": { - "name": "sessions", - "type": "string" - }, - "isTopSpeaker": { - "name": "isTopSpeaker", - "type": "string" - }, - "links": { - "name": "links", - "type": "string" - }, - "questionAnswers": { - "name": "questionAnswers", - "type": "string" - }, - "categories": { - "name": "categories", - "type": "string" - } + firstName: { + name: "firstName", + type: "string", }, - "name": "Speakers", - "_id": "query_datasource_04b003a7b4a8428eadd3bb2f7eae0255_bcb8ffc6fcbc484e8d63121fc0bf986f", - "_rev": "3-5a64adef494b1e9c793dc91b51ce73c6", - "readable": true -} \ No newline at end of file + lastName: { + name: "lastName", + type: "string", + }, + fullName: { + name: "fullName", + type: "string", + }, + bio: { + name: "bio", + type: "string", + }, + tagLine: { + name: "tagLine", + type: "string", + }, + profilePicture: { + name: "profilePicture", + type: "string", + }, + sessions: { + name: "sessions", + type: "string", + }, + isTopSpeaker: { + name: "isTopSpeaker", + type: "string", + }, + links: { + name: "links", + type: "string", + }, + questionAnswers: { + name: "questionAnswers", + type: "string", + }, + categories: { + name: "categories", + type: "string", + }, + }, + name: "Speakers", + _id: + "query_datasource_04b003a7b4a8428eadd3bb2f7eae0255_bcb8ffc6fcbc484e8d63121fc0bf986f", + _rev: "3-5a64adef494b1e9c793dc91b51ce73c6", + readable: true, +} diff --git a/packages/builder/src/stores/backend/tests/fixtures/roles.js b/packages/builder/src/stores/backend/tests/fixtures/roles.js index 1831bdbed2..f4524d0834 100644 --- a/packages/builder/src/stores/backend/tests/fixtures/roles.js +++ b/packages/builder/src/stores/backend/tests/fixtures/roles.js @@ -1,32 +1,32 @@ export const ROLES = [ - { - "name": "Test", - "permissionId": "admin", - "inherits": "ADMIN", - "_id": "role_04681b7e71914a0aa53e09a5bea3584f", - "_rev": "1-179c71ea61d7fd987306b84b6d64b00e" - }, - { - "_id": "ADMIN", - "name": "Admin", - "permissionId": "admin", - "inherits": "POWER" - }, - { - "_id": "POWER", - "name": "Power", - "permissionId": "power", - "inherits": "BASIC" - }, - { - "_id": "BASIC", - "name": "Basic", - "permissionId": "write", - "inherits": "PUBLIC" - }, - { - "_id": "PUBLIC", - "name": "Public", - "permissionId": "public" - } -] \ No newline at end of file + { + name: "Test", + permissionId: "admin", + inherits: "ADMIN", + _id: "role_04681b7e71914a0aa53e09a5bea3584f", + _rev: "1-179c71ea61d7fd987306b84b6d64b00e", + }, + { + _id: "ADMIN", + name: "Admin", + permissionId: "admin", + inherits: "POWER", + }, + { + _id: "POWER", + name: "Power", + permissionId: "power", + inherits: "BASIC", + }, + { + _id: "BASIC", + name: "Basic", + permissionId: "write", + inherits: "PUBLIC", + }, + { + _id: "PUBLIC", + name: "Public", + permissionId: "public", + }, +] diff --git a/packages/builder/src/stores/backend/tests/fixtures/tables.js b/packages/builder/src/stores/backend/tests/fixtures/tables.js index 5494703783..6fc4971ff7 100644 --- a/packages/builder/src/stores/backend/tests/fixtures/tables.js +++ b/packages/builder/src/stores/backend/tests/fixtures/tables.js @@ -1,726 +1,717 @@ export const SOME_TABLES = [ - { - "type": "table", - "views": {}, - "name": "Guest", - "schema": { - "Auto ID": { - "name": "Auto ID", - "type": "number", - "subtype": "autoID", - "icon": "ri-magic-line", - "autocolumn": true, - "constraints": { - "type": "number", - "presence": false, - "numericality": { - "greaterThanOrEqualTo": "", - "lessThanOrEqualTo": "" - } - }, - "lastID": 1 - }, - "Created By": { - "name": "Created By", - "type": "link", - "subtype": "createdBy", - "icon": "ri-magic-line", - "autocolumn": true, - "constraints": { - "type": "array", - "presence": false - }, - "tableId": "ta_users", - "fieldName": "Guest-Created By", - "relationshipType": "many-to-many" - }, - "Created At": { - "name": "Created At", - "type": "datetime", - "subtype": "createdAt", - "icon": "ri-magic-line", - "autocolumn": true, - "constraints": { - "type": "string", - "length": {}, - "presence": false, - "datetime": { - "latest": "", - "earliest": "" - } - } - }, - "Updated By": { - "name": "Updated By", - "type": "link", - "subtype": "updatedBy", - "icon": "ri-magic-line", - "autocolumn": true, - "constraints": { - "type": "array", - "presence": false - }, - "tableId": "ta_users", - "fieldName": "Guest-Updated By", - "relationshipType": "many-to-many" - }, - "Updated At": { - "name": "Updated At", - "type": "datetime", - "subtype": "updatedAt", - "icon": "ri-magic-line", - "autocolumn": true, - "constraints": { - "type": "string", - "length": {}, - "presence": false, - "datetime": { - "latest": "", - "earliest": "" - } - } - }, - "Name": { - "type": "string", - "constraints": { - "type": "string", - "length": { - "maximum": "" - }, - "presence": false - }, - "fieldName": "Guest", - "name": "Name" - }, - "Episode": { - "name": "Episode", - "type": "link", - "tableId": "ta_d4bf541ce0d84b16a1a8e0a060e5f7f7", - "fieldName": "Guest", - "relationshipType": "one-to-many" - } + { + type: "table", + views: {}, + name: "Guest", + schema: { + "Auto ID": { + name: "Auto ID", + type: "number", + subtype: "autoID", + icon: "ri-magic-line", + autocolumn: true, + constraints: { + type: "number", + presence: false, + numericality: { + greaterThanOrEqualTo: "", + lessThanOrEqualTo: "", + }, }, - "primaryDisplay": "Name", - "indexes": [], - "_id": "ta_3c78cffe33664ca9bfb6b2b6cb3ee55a", - "_rev": "10-27f034bf50ec3e2f180d8f96db1f0f31" + lastID: 1, + }, + "Created By": { + name: "Created By", + type: "link", + subtype: "createdBy", + icon: "ri-magic-line", + autocolumn: true, + constraints: { + type: "array", + presence: false, + }, + tableId: "ta_users", + fieldName: "Guest-Created By", + relationshipType: "many-to-many", + }, + "Created At": { + name: "Created At", + type: "datetime", + subtype: "createdAt", + icon: "ri-magic-line", + autocolumn: true, + constraints: { + type: "string", + length: {}, + presence: false, + datetime: { + latest: "", + earliest: "", + }, + }, + }, + "Updated By": { + name: "Updated By", + type: "link", + subtype: "updatedBy", + icon: "ri-magic-line", + autocolumn: true, + constraints: { + type: "array", + presence: false, + }, + tableId: "ta_users", + fieldName: "Guest-Updated By", + relationshipType: "many-to-many", + }, + "Updated At": { + name: "Updated At", + type: "datetime", + subtype: "updatedAt", + icon: "ri-magic-line", + autocolumn: true, + constraints: { + type: "string", + length: {}, + presence: false, + datetime: { + latest: "", + earliest: "", + }, + }, + }, + Name: { + type: "string", + constraints: { + type: "string", + length: { + maximum: "", + }, + presence: false, + }, + fieldName: "Guest", + name: "Name", + }, + Episode: { + name: "Episode", + type: "link", + tableId: "ta_d4bf541ce0d84b16a1a8e0a060e5f7f7", + fieldName: "Guest", + relationshipType: "one-to-many", + }, }, - { - "type": "table", - "views": {}, - "name": "Sponsors", - "schema": { - "Auto ID": { - "name": "Auto ID", - "type": "number", - "subtype": "autoID", - "icon": "ri-magic-line", - "autocolumn": true, - "constraints": { - "type": "number", - "presence": false, - "numericality": { - "greaterThanOrEqualTo": "", - "lessThanOrEqualTo": "" - } - }, - "lastID": 1 - }, - "Created By": { - "name": "Created By", - "type": "link", - "subtype": "createdBy", - "icon": "ri-magic-line", - "autocolumn": true, - "constraints": { - "type": "array", - "presence": false - }, - "tableId": "ta_users", - "fieldName": "Sponsors-Created By", - "relationshipType": "many-to-many" - }, - "Created At": { - "name": "Created At", - "type": "datetime", - "subtype": "createdAt", - "icon": "ri-magic-line", - "autocolumn": true, - "constraints": { - "type": "string", - "length": {}, - "presence": false, - "datetime": { - "latest": "", - "earliest": "" - } - } - }, - "Updated By": { - "name": "Updated By", - "type": "link", - "subtype": "updatedBy", - "icon": "ri-magic-line", - "autocolumn": true, - "constraints": { - "type": "array", - "presence": false - }, - "tableId": "ta_users", - "fieldName": "Sponsors-Updated By", - "relationshipType": "many-to-many" - }, - "Updated At": { - "name": "Updated At", - "type": "datetime", - "subtype": "updatedAt", - "icon": "ri-magic-line", - "autocolumn": true, - "constraints": { - "type": "string", - "length": {}, - "presence": false, - "datetime": { - "latest": "", - "earliest": "" - } - } - }, - "Name": { - "type": "string", - "constraints": { - "type": "string", - "length": { - "maximum": "" - }, - "presence": false - }, - "fieldName": "Sponsors", - "name": "Name" - }, - "Spot": { - "type": "longform", - "constraints": { - "type": "string", - "length": {}, - "presence": false - }, - "fieldName": "Sponsors", - "name": "Spot" - }, - "Episode": { - "name": "Episode", - "type": "link", - "tableId": "ta_d4bf541ce0d84b16a1a8e0a060e5f7f7", - "fieldName": "Sponsors", - "relationshipType": "many-to-many" - } + primaryDisplay: "Name", + indexes: [], + _id: "ta_3c78cffe33664ca9bfb6b2b6cb3ee55a", + _rev: "10-27f034bf50ec3e2f180d8f96db1f0f31", + }, + { + type: "table", + views: {}, + name: "Sponsors", + schema: { + "Auto ID": { + name: "Auto ID", + type: "number", + subtype: "autoID", + icon: "ri-magic-line", + autocolumn: true, + constraints: { + type: "number", + presence: false, + numericality: { + greaterThanOrEqualTo: "", + lessThanOrEqualTo: "", + }, }, - "primaryDisplay": "Name", - "indexes": [], - "_id": "ta_7fd0fa15edd54e0f91a47f50b7577281", - "_rev": "7-de89b81e21ae4b3f65a6b655144fe097" + lastID: 1, + }, + "Created By": { + name: "Created By", + type: "link", + subtype: "createdBy", + icon: "ri-magic-line", + autocolumn: true, + constraints: { + type: "array", + presence: false, + }, + tableId: "ta_users", + fieldName: "Sponsors-Created By", + relationshipType: "many-to-many", + }, + "Created At": { + name: "Created At", + type: "datetime", + subtype: "createdAt", + icon: "ri-magic-line", + autocolumn: true, + constraints: { + type: "string", + length: {}, + presence: false, + datetime: { + latest: "", + earliest: "", + }, + }, + }, + "Updated By": { + name: "Updated By", + type: "link", + subtype: "updatedBy", + icon: "ri-magic-line", + autocolumn: true, + constraints: { + type: "array", + presence: false, + }, + tableId: "ta_users", + fieldName: "Sponsors-Updated By", + relationshipType: "many-to-many", + }, + "Updated At": { + name: "Updated At", + type: "datetime", + subtype: "updatedAt", + icon: "ri-magic-line", + autocolumn: true, + constraints: { + type: "string", + length: {}, + presence: false, + datetime: { + latest: "", + earliest: "", + }, + }, + }, + Name: { + type: "string", + constraints: { + type: "string", + length: { + maximum: "", + }, + presence: false, + }, + fieldName: "Sponsors", + name: "Name", + }, + Spot: { + type: "longform", + constraints: { + type: "string", + length: {}, + presence: false, + }, + fieldName: "Sponsors", + name: "Spot", + }, + Episode: { + name: "Episode", + type: "link", + tableId: "ta_d4bf541ce0d84b16a1a8e0a060e5f7f7", + fieldName: "Sponsors", + relationshipType: "many-to-many", + }, }, - { - "type": "table", - "views": {}, - "name": "Episode", - "schema": { - "Auto ID": { - "name": "Auto ID", - "type": "number", - "subtype": "autoID", - "icon": "ri-magic-line", - "autocolumn": true, - "constraints": { - "type": "number", - "presence": false, - "numericality": { - "greaterThanOrEqualTo": "", - "lessThanOrEqualTo": "" - } - }, - "lastID": 1 - }, - "Created By": { - "name": "Created By", - "type": "link", - "subtype": "createdBy", - "icon": "ri-magic-line", - "autocolumn": true, - "constraints": { - "type": "array", - "presence": false - }, - "tableId": "ta_users", - "fieldName": "Episode-Created By", - "relationshipType": "many-to-many" - }, - "Created At": { - "name": "Created At", - "type": "datetime", - "subtype": "createdAt", - "icon": "ri-magic-line", - "autocolumn": true, - "constraints": { - "type": "string", - "length": {}, - "presence": false, - "datetime": { - "latest": "", - "earliest": "" - } - } - }, - "Updated By": { - "name": "Updated By", - "type": "link", - "subtype": "updatedBy", - "icon": "ri-magic-line", - "autocolumn": true, - "constraints": { - "type": "array", - "presence": false - }, - "tableId": "ta_users", - "fieldName": "Episode-Updated By", - "relationshipType": "many-to-many" - }, - "Updated At": { - "name": "Updated At", - "type": "datetime", - "subtype": "updatedAt", - "icon": "ri-magic-line", - "autocolumn": true, - "constraints": { - "type": "string", - "length": {}, - "presence": false, - "datetime": { - "latest": "", - "earliest": "" - } - } - }, - "Summary": { - "type": "longform", - "constraints": { - "type": "string", - "length": {}, - "presence": false - }, - "fieldName": "Episode", - "name": "Summary" - }, - "Author": { - "type": "string", - "constraints": { - "type": "string", - "length": { - "maximum": "" - }, - "presence": false - }, - "fieldName": "Episode", - "name": "Author" - }, - "Published": { - "type": "boolean", - "constraints": { - "type": "boolean", - "presence": false - }, - "fieldName": "Episode", - "name": "Published" - }, - "Guest": { - "type": "link", - "constraints": { - "type": "array", - "presence": false - }, - "fieldName": "Episode", - "name": "Guest", - "relationshipType": "many-to-one", - "tableId": "ta_3c78cffe33664ca9bfb6b2b6cb3ee55a" - }, - "Title": { - "type": "string", - "constraints": { - "type": "string", - "length": { - "maximum": "" - }, - "presence": false - }, - "fieldName": "Episode", - "name": "Title" - }, - "Show Notes": { - "type": "longform", - "constraints": { - "type": "string", - "length": {}, - "presence": false - }, - "fieldName": "Episode", - "name": "Show Notes" - }, - "Sponsors": { - "type": "link", - "constraints": { - "type": "array", - "presence": false - }, - "fieldName": "Episode", - "name": "Sponsors", - "relationshipType": "many-to-many", - "tableId": "ta_7fd0fa15edd54e0f91a47f50b7577281" - }, - "Number": { - "type": "number", - "constraints": { - "type": "number", - "presence": false, - "numericality": { - "greaterThanOrEqualTo": "", - "lessThanOrEqualTo": "" - } - }, - "fieldName": "Episode", - "name": "Number" - }, - "Audio": { - "type": "attachment", - "constraints": { - "type": "array", - "presence": false - }, - "fieldName": "Episode", - "name": "Audio" - } + primaryDisplay: "Name", + indexes: [], + _id: "ta_7fd0fa15edd54e0f91a47f50b7577281", + _rev: "7-de89b81e21ae4b3f65a6b655144fe097", + }, + { + type: "table", + views: {}, + name: "Episode", + schema: { + "Auto ID": { + name: "Auto ID", + type: "number", + subtype: "autoID", + icon: "ri-magic-line", + autocolumn: true, + constraints: { + type: "number", + presence: false, + numericality: { + greaterThanOrEqualTo: "", + lessThanOrEqualTo: "", + }, }, - "indexes": [], - "primaryDisplay": "Author", - "_id": "ta_d4bf541ce0d84b16a1a8e0a060e5f7f7", - "_rev": "13-9d70dee825154a9df5c22e1d39bf269c" + lastID: 1, + }, + "Created By": { + name: "Created By", + type: "link", + subtype: "createdBy", + icon: "ri-magic-line", + autocolumn: true, + constraints: { + type: "array", + presence: false, + }, + tableId: "ta_users", + fieldName: "Episode-Created By", + relationshipType: "many-to-many", + }, + "Created At": { + name: "Created At", + type: "datetime", + subtype: "createdAt", + icon: "ri-magic-line", + autocolumn: true, + constraints: { + type: "string", + length: {}, + presence: false, + datetime: { + latest: "", + earliest: "", + }, + }, + }, + "Updated By": { + name: "Updated By", + type: "link", + subtype: "updatedBy", + icon: "ri-magic-line", + autocolumn: true, + constraints: { + type: "array", + presence: false, + }, + tableId: "ta_users", + fieldName: "Episode-Updated By", + relationshipType: "many-to-many", + }, + "Updated At": { + name: "Updated At", + type: "datetime", + subtype: "updatedAt", + icon: "ri-magic-line", + autocolumn: true, + constraints: { + type: "string", + length: {}, + presence: false, + datetime: { + latest: "", + earliest: "", + }, + }, + }, + Summary: { + type: "longform", + constraints: { + type: "string", + length: {}, + presence: false, + }, + fieldName: "Episode", + name: "Summary", + }, + Author: { + type: "string", + constraints: { + type: "string", + length: { + maximum: "", + }, + presence: false, + }, + fieldName: "Episode", + name: "Author", + }, + Published: { + type: "boolean", + constraints: { + type: "boolean", + presence: false, + }, + fieldName: "Episode", + name: "Published", + }, + Guest: { + type: "link", + constraints: { + type: "array", + presence: false, + }, + fieldName: "Episode", + name: "Guest", + relationshipType: "many-to-one", + tableId: "ta_3c78cffe33664ca9bfb6b2b6cb3ee55a", + }, + Title: { + type: "string", + constraints: { + type: "string", + length: { + maximum: "", + }, + presence: false, + }, + fieldName: "Episode", + name: "Title", + }, + "Show Notes": { + type: "longform", + constraints: { + type: "string", + length: {}, + presence: false, + }, + fieldName: "Episode", + name: "Show Notes", + }, + Sponsors: { + type: "link", + constraints: { + type: "array", + presence: false, + }, + fieldName: "Episode", + name: "Sponsors", + relationshipType: "many-to-many", + tableId: "ta_7fd0fa15edd54e0f91a47f50b7577281", + }, + Number: { + type: "number", + constraints: { + type: "number", + presence: false, + numericality: { + greaterThanOrEqualTo: "", + lessThanOrEqualTo: "", + }, + }, + fieldName: "Episode", + name: "Number", + }, + Audio: { + type: "attachment", + constraints: { + type: "array", + presence: false, + }, + fieldName: "Episode", + name: "Audio", + }, }, - { - "type": "table", - "views": {}, - "name": "Users", - "schema": { - "email": { - "type": "string", - "constraints": { - "type": "string", - "email": true, - "length": { - "maximum": "" - }, - "presence": true - }, - "fieldName": "email", - "name": "email" - }, - "roleId": { - "fieldName": "roleId", - "name": "roleId", - "type": "options", - "constraints": { - "type": "string", - "presence": false, - "inclusion": [ - "ADMIN", - "POWER", - "BASIC", - "PUBLIC", - "BUILDER" - ] - } - }, - "status": { - "fieldName": "status", - "name": "status", - "type": "options", - "constraints": { - "type": "string", - "presence": false, - "inclusion": [ - "active", - "inactive" - ] - } - }, - "Episode-Created By": { - "name": "Episode-Created By", - "type": "link", - "tableId": "ta_d4bf541ce0d84b16a1a8e0a060e5f7f7", - "fieldName": "Created By", - "relationshipType": "many-to-many", - "autocolumn": true - }, - "Episode-Updated By": { - "name": "Episode-Updated By", - "type": "link", - "tableId": "ta_d4bf541ce0d84b16a1a8e0a060e5f7f7", - "fieldName": "Updated By", - "relationshipType": "many-to-many", - "autocolumn": true - }, - "Guest-Created By": { - "name": "Guest-Created By", - "type": "link", - "tableId": "ta_3c78cffe33664ca9bfb6b2b6cb3ee55a", - "fieldName": "Created By", - "relationshipType": "many-to-many", - "autocolumn": true - }, - "Guest-Updated By": { - "name": "Guest-Updated By", - "type": "link", - "tableId": "ta_3c78cffe33664ca9bfb6b2b6cb3ee55a", - "fieldName": "Updated By", - "relationshipType": "many-to-many", - "autocolumn": true - }, - "Sponsors-Created By": { - "name": "Sponsors-Created By", - "type": "link", - "tableId": "ta_7fd0fa15edd54e0f91a47f50b7577281", - "fieldName": "Created By", - "relationshipType": "many-to-many", - "autocolumn": true - }, - "Sponsors-Updated By": { - "name": "Sponsors-Updated By", - "type": "link", - "tableId": "ta_7fd0fa15edd54e0f91a47f50b7577281", - "fieldName": "Updated By", - "relationshipType": "many-to-many", - "autocolumn": true - } + indexes: [], + primaryDisplay: "Author", + _id: "ta_d4bf541ce0d84b16a1a8e0a060e5f7f7", + _rev: "13-9d70dee825154a9df5c22e1d39bf269c", + }, + { + type: "table", + views: {}, + name: "Users", + schema: { + email: { + type: "string", + constraints: { + type: "string", + email: true, + length: { + maximum: "", + }, + presence: true, }, - "primaryDisplay": "email", - "_id": "ta_users", - "_rev": "67-1833e6a0028c100633e31788fe958a62" - } + fieldName: "email", + name: "email", + }, + roleId: { + fieldName: "roleId", + name: "roleId", + type: "options", + constraints: { + type: "string", + presence: false, + inclusion: ["ADMIN", "POWER", "BASIC", "PUBLIC", "BUILDER"], + }, + }, + status: { + fieldName: "status", + name: "status", + type: "options", + constraints: { + type: "string", + presence: false, + inclusion: ["active", "inactive"], + }, + }, + "Episode-Created By": { + name: "Episode-Created By", + type: "link", + tableId: "ta_d4bf541ce0d84b16a1a8e0a060e5f7f7", + fieldName: "Created By", + relationshipType: "many-to-many", + autocolumn: true, + }, + "Episode-Updated By": { + name: "Episode-Updated By", + type: "link", + tableId: "ta_d4bf541ce0d84b16a1a8e0a060e5f7f7", + fieldName: "Updated By", + relationshipType: "many-to-many", + autocolumn: true, + }, + "Guest-Created By": { + name: "Guest-Created By", + type: "link", + tableId: "ta_3c78cffe33664ca9bfb6b2b6cb3ee55a", + fieldName: "Created By", + relationshipType: "many-to-many", + autocolumn: true, + }, + "Guest-Updated By": { + name: "Guest-Updated By", + type: "link", + tableId: "ta_3c78cffe33664ca9bfb6b2b6cb3ee55a", + fieldName: "Updated By", + relationshipType: "many-to-many", + autocolumn: true, + }, + "Sponsors-Created By": { + name: "Sponsors-Created By", + type: "link", + tableId: "ta_7fd0fa15edd54e0f91a47f50b7577281", + fieldName: "Created By", + relationshipType: "many-to-many", + autocolumn: true, + }, + "Sponsors-Updated By": { + name: "Sponsors-Updated By", + type: "link", + tableId: "ta_7fd0fa15edd54e0f91a47f50b7577281", + fieldName: "Updated By", + relationshipType: "many-to-many", + autocolumn: true, + }, + }, + primaryDisplay: "email", + _id: "ta_users", + _rev: "67-1833e6a0028c100633e31788fe958a62", + }, ] export const SAVE_TABLES_RESPONSE = { - "type": "table", - "_id": "ta_3c78cffe33664ca9bfb6b2b6cb3ee55a", - "views": {}, - "name": "Guest", - "schema": { - "Auto ID": { - "name": "Auto ID", - "type": "number", - "subtype": "autoID", - "icon": "ri-magic-line", - "autocolumn": true, - "constraints": { - "type": "number", - "presence": false, - "numericality": { - "greaterThanOrEqualTo": "", - "lessThanOrEqualTo": "" - } - }, - "lastID": 1 + type: "table", + _id: "ta_3c78cffe33664ca9bfb6b2b6cb3ee55a", + views: {}, + name: "Guest", + schema: { + "Auto ID": { + name: "Auto ID", + type: "number", + subtype: "autoID", + icon: "ri-magic-line", + autocolumn: true, + constraints: { + type: "number", + presence: false, + numericality: { + greaterThanOrEqualTo: "", + lessThanOrEqualTo: "", }, - "Created By": { - "name": "Created By", - "type": "link", - "subtype": "createdBy", - "icon": "ri-magic-line", - "autocolumn": true, - "constraints": { - "type": "array", - "presence": false - }, - "tableId": "ta_users", - "fieldName": "Guest-Created By", - "relationshipType": "many-to-many" - }, - "Created At": { - "name": "Created At", - "type": "datetime", - "subtype": "createdAt", - "icon": "ri-magic-line", - "autocolumn": true, - "constraints": { - "type": "string", - "length": {}, - "presence": false, - "datetime": { - "latest": "", - "earliest": "" - } - } - }, - "Updated By": { - "name": "Updated By", - "type": "link", - "subtype": "updatedBy", - "icon": "ri-magic-line", - "autocolumn": true, - "constraints": { - "type": "array", - "presence": false - }, - "tableId": "ta_users", - "fieldName": "Guest-Updated By", - "relationshipType": "many-to-many" - }, - "Updated At": { - "name": "Updated At", - "type": "datetime", - "subtype": "updatedAt", - "icon": "ri-magic-line", - "autocolumn": true, - "constraints": { - "type": "string", - "length": {}, - "presence": false, - "datetime": { - "latest": "", - "earliest": "" - } - } - }, - "Episode": { - "name": "Episode", - "type": "link", - "tableId": "ta_d4bf541ce0d84b16a1a8e0a060e5f7f7", - "fieldName": "Guest", - "relationshipType": "one-to-many" - }, - "Names": { - "type": "string", - "constraints": { - "type": "string", - "length": { - "maximum": "" - }, - "presence": false - }, - "fieldName": "Guest", - "name": "Names" - } + }, + lastID: 1, }, - "primaryDisplay": "Names", - "indexes": [], - "_rev": "11-7c153edbc6d7c43821cfd5ed526266cf" + "Created By": { + name: "Created By", + type: "link", + subtype: "createdBy", + icon: "ri-magic-line", + autocolumn: true, + constraints: { + type: "array", + presence: false, + }, + tableId: "ta_users", + fieldName: "Guest-Created By", + relationshipType: "many-to-many", + }, + "Created At": { + name: "Created At", + type: "datetime", + subtype: "createdAt", + icon: "ri-magic-line", + autocolumn: true, + constraints: { + type: "string", + length: {}, + presence: false, + datetime: { + latest: "", + earliest: "", + }, + }, + }, + "Updated By": { + name: "Updated By", + type: "link", + subtype: "updatedBy", + icon: "ri-magic-line", + autocolumn: true, + constraints: { + type: "array", + presence: false, + }, + tableId: "ta_users", + fieldName: "Guest-Updated By", + relationshipType: "many-to-many", + }, + "Updated At": { + name: "Updated At", + type: "datetime", + subtype: "updatedAt", + icon: "ri-magic-line", + autocolumn: true, + constraints: { + type: "string", + length: {}, + presence: false, + datetime: { + latest: "", + earliest: "", + }, + }, + }, + Episode: { + name: "Episode", + type: "link", + tableId: "ta_d4bf541ce0d84b16a1a8e0a060e5f7f7", + fieldName: "Guest", + relationshipType: "one-to-many", + }, + Names: { + type: "string", + constraints: { + type: "string", + length: { + maximum: "", + }, + presence: false, + }, + fieldName: "Guest", + name: "Names", + }, + }, + primaryDisplay: "Names", + indexes: [], + _rev: "11-7c153edbc6d7c43821cfd5ed526266cf", } export const A_TABLE = { - "type": "table", - "views": {}, - "name": "Guest", - "schema": { - "Auto ID": { - "name": "Auto ID", - "type": "number", - "subtype": "autoID", - "icon": "ri-magic-line", - "autocolumn": true, - "constraints": { - "type": "number", - "presence": false, - "numericality": { - "greaterThanOrEqualTo": "", - "lessThanOrEqualTo": "" - } - }, - "lastID": 1 + type: "table", + views: {}, + name: "Guest", + schema: { + "Auto ID": { + name: "Auto ID", + type: "number", + subtype: "autoID", + icon: "ri-magic-line", + autocolumn: true, + constraints: { + type: "number", + presence: false, + numericality: { + greaterThanOrEqualTo: "", + lessThanOrEqualTo: "", }, - "Created By": { - "name": "Created By", - "type": "link", - "subtype": "createdBy", - "icon": "ri-magic-line", - "autocolumn": true, - "constraints": { - "type": "array", - "presence": false - }, - "tableId": "ta_users", - "fieldName": "Guest-Created By", - "relationshipType": "many-to-many" - }, - "Created At": { - "name": "Created At", - "type": "datetime", - "subtype": "createdAt", - "icon": "ri-magic-line", - "autocolumn": true, - "constraints": { - "type": "string", - "length": {}, - "presence": false, - "datetime": { - "latest": "", - "earliest": "" - } - } - }, - "Updated By": { - "name": "Updated By", - "type": "link", - "subtype": "updatedBy", - "icon": "ri-magic-line", - "autocolumn": true, - "constraints": { - "type": "array", - "presence": false - }, - "tableId": "ta_users", - "fieldName": "Guest-Updated By", - "relationshipType": "many-to-many" - }, - "Updated At": { - "name": "Updated At", - "type": "datetime", - "subtype": "updatedAt", - "icon": "ri-magic-line", - "autocolumn": true, - "constraints": { - "type": "string", - "length": {}, - "presence": false, - "datetime": { - "latest": "", - "earliest": "" - } - } - }, - "Episode": { - "name": "Episode", - "type": "link", - "tableId": "ta_d4bf541ce0d84b16a1a8e0a060e5f7f7", - "fieldName": "Guest", - "relationshipType": "one-to-many" - }, - "Names": { - "type": "string", - "constraints": { - "type": "string", - "length": { - "maximum": "" - }, - "presence": false - }, - "fieldName": "Guest", - "name": "Names" - } + }, + lastID: 1, }, - "primaryDisplay": "Names", - "indexes": [], - "_id": "ta_3c78cffe33664ca9bfb6b2b6cb3ee55a", - "_rev": "10-27f034bf50ec3e2f180d8f96db1f0f31", - "_rename": { - "old": "Name", - "updated": "Names" - } -} \ No newline at end of file + "Created By": { + name: "Created By", + type: "link", + subtype: "createdBy", + icon: "ri-magic-line", + autocolumn: true, + constraints: { + type: "array", + presence: false, + }, + tableId: "ta_users", + fieldName: "Guest-Created By", + relationshipType: "many-to-many", + }, + "Created At": { + name: "Created At", + type: "datetime", + subtype: "createdAt", + icon: "ri-magic-line", + autocolumn: true, + constraints: { + type: "string", + length: {}, + presence: false, + datetime: { + latest: "", + earliest: "", + }, + }, + }, + "Updated By": { + name: "Updated By", + type: "link", + subtype: "updatedBy", + icon: "ri-magic-line", + autocolumn: true, + constraints: { + type: "array", + presence: false, + }, + tableId: "ta_users", + fieldName: "Guest-Updated By", + relationshipType: "many-to-many", + }, + "Updated At": { + name: "Updated At", + type: "datetime", + subtype: "updatedAt", + icon: "ri-magic-line", + autocolumn: true, + constraints: { + type: "string", + length: {}, + presence: false, + datetime: { + latest: "", + earliest: "", + }, + }, + }, + Episode: { + name: "Episode", + type: "link", + tableId: "ta_d4bf541ce0d84b16a1a8e0a060e5f7f7", + fieldName: "Guest", + relationshipType: "one-to-many", + }, + Names: { + type: "string", + constraints: { + type: "string", + length: { + maximum: "", + }, + presence: false, + }, + fieldName: "Guest", + name: "Names", + }, + }, + primaryDisplay: "Names", + indexes: [], + _id: "ta_3c78cffe33664ca9bfb6b2b6cb3ee55a", + _rev: "10-27f034bf50ec3e2f180d8f96db1f0f31", + _rename: { + old: "Name", + updated: "Names", + }, +} diff --git a/packages/builder/src/stores/backend/tests/fixtures/views.js b/packages/builder/src/stores/backend/tests/fixtures/views.js index 9a7b6173ad..8286592f50 100644 --- a/packages/builder/src/stores/backend/tests/fixtures/views.js +++ b/packages/builder/src/stores/backend/tests/fixtures/views.js @@ -1,102 +1,102 @@ export const A_VIEW = { - "name": "Published", - "tableId": "ta_3c78cffe33664ca9bfb6b2b6cb3ee55a", - "filters": [], - "schema": { - "Auto ID": { - "name": "Auto ID", - "type": "number", - "subtype": "autoID", - "icon": "ri-magic-line", - "autocolumn": true, - "constraints": { - "type": "number", - "presence": false, - "numericality": { - "greaterThanOrEqualTo": "", - "lessThanOrEqualTo": "" - } - }, - "lastID": 2 + name: "Published", + tableId: "ta_3c78cffe33664ca9bfb6b2b6cb3ee55a", + filters: [], + schema: { + "Auto ID": { + name: "Auto ID", + type: "number", + subtype: "autoID", + icon: "ri-magic-line", + autocolumn: true, + constraints: { + type: "number", + presence: false, + numericality: { + greaterThanOrEqualTo: "", + lessThanOrEqualTo: "", }, - "Created By": { - "name": "Created By", - "type": "link", - "subtype": "createdBy", - "icon": "ri-magic-line", - "autocolumn": true, - "constraints": { - "type": "array", - "presence": false - }, - "tableId": "ta_users", - "fieldName": "Guest-Created By", - "relationshipType": "many-to-many" + }, + lastID: 2, + }, + "Created By": { + name: "Created By", + type: "link", + subtype: "createdBy", + icon: "ri-magic-line", + autocolumn: true, + constraints: { + type: "array", + presence: false, + }, + tableId: "ta_users", + fieldName: "Guest-Created By", + relationshipType: "many-to-many", + }, + "Created At": { + name: "Created At", + type: "datetime", + subtype: "createdAt", + icon: "ri-magic-line", + autocolumn: true, + constraints: { + type: "string", + length: {}, + presence: false, + datetime: { + latest: "", + earliest: "", }, - "Created At": { - "name": "Created At", - "type": "datetime", - "subtype": "createdAt", - "icon": "ri-magic-line", - "autocolumn": true, - "constraints": { - "type": "string", - "length": {}, - "presence": false, - "datetime": { - "latest": "", - "earliest": "" - } - } + }, + }, + "Updated By": { + name: "Updated By", + type: "link", + subtype: "updatedBy", + icon: "ri-magic-line", + autocolumn: true, + constraints: { + type: "array", + presence: false, + }, + tableId: "ta_users", + fieldName: "Guest-Updated By", + relationshipType: "many-to-many", + }, + "Updated At": { + name: "Updated At", + type: "datetime", + subtype: "updatedAt", + icon: "ri-magic-line", + autocolumn: true, + constraints: { + type: "string", + length: {}, + presence: false, + datetime: { + latest: "", + earliest: "", }, - "Updated By": { - "name": "Updated By", - "type": "link", - "subtype": "updatedBy", - "icon": "ri-magic-line", - "autocolumn": true, - "constraints": { - "type": "array", - "presence": false - }, - "tableId": "ta_users", - "fieldName": "Guest-Updated By", - "relationshipType": "many-to-many" + }, + }, + Episode: { + name: "Episode", + type: "link", + tableId: "ta_d4bf541ce0d84b16a1a8e0a060e5f7f7", + fieldName: "Guest", + relationshipType: "one-to-many", + }, + Names: { + type: "string", + constraints: { + type: "string", + length: { + maximum: "", }, - "Updated At": { - "name": "Updated At", - "type": "datetime", - "subtype": "updatedAt", - "icon": "ri-magic-line", - "autocolumn": true, - "constraints": { - "type": "string", - "length": {}, - "presence": false, - "datetime": { - "latest": "", - "earliest": "" - } - } - }, - "Episode": { - "name": "Episode", - "type": "link", - "tableId": "ta_d4bf541ce0d84b16a1a8e0a060e5f7f7", - "fieldName": "Guest", - "relationshipType": "one-to-many" - }, - "Names": { - "type": "string", - "constraints": { - "type": "string", - "length": { - "maximum": "" - }, - "presence": false - }, - "fieldName": "Guest", - "name": "Names" - } - } -} \ No newline at end of file + presence: false, + }, + fieldName: "Guest", + name: "Names", + }, + }, +} From e57fc278c2af0fd1972017f460cf03929e64ca77 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Keviin=20=C3=85berg=20Kultalahti?= Date: Thu, 1 Apr 2021 09:26:36 +0200 Subject: [PATCH 50/50] adds back babel-jest --- packages/builder/package.json | 1 + .../src/stores/backend/tests/rows.spec.js | 0 .../src/stores/backend/tests/views.spec.js | 22 - packages/builder/yarn.lock | 653 +++++++++++++++++- 4 files changed, 647 insertions(+), 29 deletions(-) delete mode 100644 packages/builder/src/stores/backend/tests/rows.spec.js delete mode 100644 packages/builder/src/stores/backend/tests/views.spec.js diff --git a/packages/builder/package.json b/packages/builder/package.json index 15013489d2..218653f101 100644 --- a/packages/builder/package.json +++ b/packages/builder/package.json @@ -98,6 +98,7 @@ "@sveltech/routify": "1.7.11", "@testing-library/jest-dom": "^5.11.10", "@testing-library/svelte": "^3.0.0", + "babel-jest": "^26.6.3", "cypress": "^5.1.0", "cypress-terminal-report": "^1.4.1", "eslint-plugin-cypress": "^2.11.1", diff --git a/packages/builder/src/stores/backend/tests/rows.spec.js b/packages/builder/src/stores/backend/tests/rows.spec.js deleted file mode 100644 index e69de29bb2..0000000000 diff --git a/packages/builder/src/stores/backend/tests/views.spec.js b/packages/builder/src/stores/backend/tests/views.spec.js deleted file mode 100644 index f5156dfe7d..0000000000 --- a/packages/builder/src/stores/backend/tests/views.spec.js +++ /dev/null @@ -1,22 +0,0 @@ -import { get } from 'svelte/store' -import api from 'builderStore/api' - -jest.mock('builderStore/api'); - -import { SOME_TABLES } from './fixtures/tables' - -import { createViewsStore } from "../views" - -describe("Tables Store", () => { - let store = createViewsStore() - - beforeEach(async () => { - api.get.mockReturnValue({ json: () => SOME_TABLES}) - await store.init() - }) - - it("Selects the correct view", async () => { - - expect(get(store)).toEqual({ list: SOME_TABLES, selected: {}, draft: {}}) - }) -}) \ No newline at end of file diff --git a/packages/builder/yarn.lock b/packages/builder/yarn.lock index 72c0698fd3..df0afa3785 100644 --- a/packages/builder/yarn.lock +++ b/packages/builder/yarn.lock @@ -988,11 +988,64 @@ svelte-portal "^1.0.0" turndown "^7.0.0" +"@budibase/client@^0.8.9": + version "0.8.12" + resolved "https://registry.yarnpkg.com/@budibase/client/-/client-0.8.12.tgz#1186d95509e28bb660f0c801b37b3cc52b0f3864" + integrity sha512-68eh1QvF443OgMsjpDEgSY9D/MUutnaKFruP98PHJgrRkVhQDY7F2EKn2FWgC5NJuCY3aJ1emRPdXUq4MapWuA== + dependencies: + "@budibase/string-templates" "^0.8.12" + regexparam "^1.3.0" + shortid "^2.2.15" + svelte-spa-router "^3.0.5" + "@budibase/colorpicker@1.1.2": version "1.1.2" resolved "https://registry.yarnpkg.com/@budibase/colorpicker/-/colorpicker-1.1.2.tgz#f7436924ee746d7be9b2009c2fa193e710c30f89" integrity sha512-2PlZBVkATDqDC4b4Ri8Xi8X3OxhuHOGfmZwtXbZL38lNIeofaQT3Qyc1ECzEY5N+HrdGrWhY9EnliF6QM+LIuA== +"@budibase/handlebars-helpers@^0.11.3": + version "0.11.3" + resolved "https://registry.yarnpkg.com/@budibase/handlebars-helpers/-/handlebars-helpers-0.11.3.tgz#b6e5c91b83e8906e7d7ff10ddde277a3d561016e" + integrity sha512-MS1ptZEYq8o9J3tNLM7cZ2RGSSJIer4GiMIUHtbBI3sC9UKqZebao1JYNfmZKpNjntuqhZKgjqc5GfnVIEjsYQ== + dependencies: + arr-flatten "^1.1.0" + array-sort "^0.1.4" + define-property "^1.0.0" + extend-shallow "^3.0.2" + "falsey" "^0.3.2" + for-in "^1.0.2" + for-own "^1.0.0" + get-object "^0.2.0" + get-value "^2.0.6" + handlebars "^4.0.11" + handlebars-utils "^1.0.6" + has-value "^1.0.0" + helper-date "^1.0.1" + helper-markdown "^1.0.0" + helper-md "^0.2.2" + html-tag "^2.0.0" + is-even "^1.0.0" + is-glob "^4.0.0" + is-number "^4.0.0" + kind-of "^6.0.0" + logging-helpers "^1.0.0" + micromatch "^3.1.4" + relative "^3.0.2" + striptags "^3.1.0" + to-gfm-code-block "^0.1.1" + year "^0.2.1" + +"@budibase/string-templates@^0.8.12", "@budibase/string-templates@^0.8.9": + version "0.8.12" + resolved "https://registry.yarnpkg.com/@budibase/string-templates/-/string-templates-0.8.12.tgz#bc08d441ac90b2f71c89b4b15c40c7c5e934a6fb" + integrity sha512-FkTm3XRBozhrJqJA4YdDxbLbcY3me7sAbJ+dgO7mZkTybRcrdbxRwL1XjYfRw9DL7+8pucN2Y6OW8gOQgyaTtw== + dependencies: + "@budibase/handlebars-helpers" "^0.11.3" + dayjs "^1.10.4" + handlebars "^4.7.6" + handlebars-utils "^1.0.6" + lodash "^4.17.20" + "@budibase/svelte-ag-grid@^1.0.4": version "1.0.4" resolved "https://registry.yarnpkg.com/@budibase/svelte-ag-grid/-/svelte-ag-grid-1.0.4.tgz#41cceec4bde2c4aea8b9da8f610fe36055c7709f" @@ -1703,6 +1756,130 @@ ajv@^6.12.3: json-schema-traverse "^0.4.1" uri-js "^4.2.2" +ansi-bgblack@^0.1.1: + version "0.1.1" + resolved "https://registry.yarnpkg.com/ansi-bgblack/-/ansi-bgblack-0.1.1.tgz#a68ba5007887701b6aafbe3fa0dadfdfa8ee3ca2" + integrity sha1-poulAHiHcBtqr74/oNrf36juPKI= + dependencies: + ansi-wrap "0.1.0" + +ansi-bgblue@^0.1.1: + version "0.1.1" + resolved "https://registry.yarnpkg.com/ansi-bgblue/-/ansi-bgblue-0.1.1.tgz#67bdc04edc9b9b5278969da196dea3d75c8c3613" + integrity sha1-Z73ATtybm1J4lp2hlt6j11yMNhM= + dependencies: + ansi-wrap "0.1.0" + +ansi-bgcyan@^0.1.1: + version "0.1.1" + resolved "https://registry.yarnpkg.com/ansi-bgcyan/-/ansi-bgcyan-0.1.1.tgz#58489425600bde9f5507068dd969ebfdb50fe768" + integrity sha1-WEiUJWAL3p9VBwaN2Wnr/bUP52g= + dependencies: + ansi-wrap "0.1.0" + +ansi-bggreen@^0.1.1: + version "0.1.1" + resolved "https://registry.yarnpkg.com/ansi-bggreen/-/ansi-bggreen-0.1.1.tgz#4e3191248529943f4321e96bf131d1c13816af49" + integrity sha1-TjGRJIUplD9DIelr8THRwTgWr0k= + dependencies: + ansi-wrap "0.1.0" + +ansi-bgmagenta@^0.1.1: + version "0.1.1" + resolved "https://registry.yarnpkg.com/ansi-bgmagenta/-/ansi-bgmagenta-0.1.1.tgz#9b28432c076eaa999418672a3efbe19391c2c7a1" + integrity sha1-myhDLAduqpmUGGcqPvvhk5HCx6E= + dependencies: + ansi-wrap "0.1.0" + +ansi-bgred@^0.1.1: + version "0.1.1" + resolved "https://registry.yarnpkg.com/ansi-bgred/-/ansi-bgred-0.1.1.tgz#a76f92838382ba43290a6c1778424f984d6f1041" + integrity sha1-p2+Sg4OCukMpCmwXeEJPmE1vEEE= + dependencies: + ansi-wrap "0.1.0" + +ansi-bgwhite@^0.1.1: + version "0.1.1" + resolved "https://registry.yarnpkg.com/ansi-bgwhite/-/ansi-bgwhite-0.1.1.tgz#6504651377a58a6ececd0331994e480258e11ba8" + integrity sha1-ZQRlE3elim7OzQMxmU5IAljhG6g= + dependencies: + ansi-wrap "0.1.0" + +ansi-bgyellow@^0.1.1: + version "0.1.1" + resolved "https://registry.yarnpkg.com/ansi-bgyellow/-/ansi-bgyellow-0.1.1.tgz#c3fe2eb08cd476648029e6874d15a0b38f61d44f" + integrity sha1-w/4usIzUdmSAKeaHTRWgs49h1E8= + dependencies: + ansi-wrap "0.1.0" + +ansi-black@^0.1.1: + version "0.1.1" + resolved "https://registry.yarnpkg.com/ansi-black/-/ansi-black-0.1.1.tgz#f6185e889360b2545a1ec50c0bf063fc43032453" + integrity sha1-9hheiJNgslRaHsUMC/Bj/EMDJFM= + dependencies: + ansi-wrap "0.1.0" + +ansi-blue@^0.1.1: + version "0.1.1" + resolved "https://registry.yarnpkg.com/ansi-blue/-/ansi-blue-0.1.1.tgz#15b804990e92fc9ca8c5476ce8f699777c21edbf" + integrity sha1-FbgEmQ6S/JyoxUds6PaZd3wh7b8= + dependencies: + ansi-wrap "0.1.0" + +ansi-bold@^0.1.1: + version "0.1.1" + resolved "https://registry.yarnpkg.com/ansi-bold/-/ansi-bold-0.1.1.tgz#3e63950af5acc2ae2e670e6f67deb115d1a5f505" + integrity sha1-PmOVCvWswq4uZw5vZ96xFdGl9QU= + dependencies: + ansi-wrap "0.1.0" + +ansi-colors@^0.2.0: + version "0.2.0" + resolved "https://registry.yarnpkg.com/ansi-colors/-/ansi-colors-0.2.0.tgz#72c31de2a0d9a2ccd0cac30cc9823eeb2f6434b5" + integrity sha1-csMd4qDZoszQysMMyYI+6y9kNLU= + dependencies: + ansi-bgblack "^0.1.1" + ansi-bgblue "^0.1.1" + ansi-bgcyan "^0.1.1" + ansi-bggreen "^0.1.1" + ansi-bgmagenta "^0.1.1" + ansi-bgred "^0.1.1" + ansi-bgwhite "^0.1.1" + ansi-bgyellow "^0.1.1" + ansi-black "^0.1.1" + ansi-blue "^0.1.1" + ansi-bold "^0.1.1" + ansi-cyan "^0.1.1" + ansi-dim "^0.1.1" + ansi-gray "^0.1.1" + ansi-green "^0.1.1" + ansi-grey "^0.1.1" + ansi-hidden "^0.1.1" + ansi-inverse "^0.1.1" + ansi-italic "^0.1.1" + ansi-magenta "^0.1.1" + ansi-red "^0.1.1" + ansi-reset "^0.1.1" + ansi-strikethrough "^0.1.1" + ansi-underline "^0.1.1" + ansi-white "^0.1.1" + ansi-yellow "^0.1.1" + lazy-cache "^2.0.1" + +ansi-cyan@^0.1.1: + version "0.1.1" + resolved "https://registry.yarnpkg.com/ansi-cyan/-/ansi-cyan-0.1.1.tgz#538ae528af8982f28ae30d86f2f17456d2609873" + integrity sha1-U4rlKK+JgvKK4w2G8vF0VtJgmHM= + dependencies: + ansi-wrap "0.1.0" + +ansi-dim@^0.1.1: + version "0.1.1" + resolved "https://registry.yarnpkg.com/ansi-dim/-/ansi-dim-0.1.1.tgz#40de4c603aa8086d8e7a86b8ff998d5c36eefd6c" + integrity sha1-QN5MYDqoCG2Oeoa4/5mNXDbu/Ww= + dependencies: + ansi-wrap "0.1.0" + ansi-escapes@^3.0.0: version "3.2.0" resolved "https://registry.yarnpkg.com/ansi-escapes/-/ansi-escapes-3.2.0.tgz#8780b98ff9dbf5638152d1f1fe5c1d7b4442976b" @@ -1715,6 +1892,62 @@ ansi-escapes@^4.2.1: dependencies: type-fest "^0.21.3" +ansi-gray@^0.1.1: + version "0.1.1" + resolved "https://registry.yarnpkg.com/ansi-gray/-/ansi-gray-0.1.1.tgz#2962cf54ec9792c48510a3deb524436861ef7251" + integrity sha1-KWLPVOyXksSFEKPetSRDaGHvclE= + dependencies: + ansi-wrap "0.1.0" + +ansi-green@^0.1.1: + version "0.1.1" + resolved "https://registry.yarnpkg.com/ansi-green/-/ansi-green-0.1.1.tgz#8a5d9a979e458d57c40e33580b37390b8e10d0f7" + integrity sha1-il2al55FjVfEDjNYCzc5C44Q0Pc= + dependencies: + ansi-wrap "0.1.0" + +ansi-grey@^0.1.1: + version "0.1.1" + resolved "https://registry.yarnpkg.com/ansi-grey/-/ansi-grey-0.1.1.tgz#59d98b6ac2ba19f8a51798e9853fba78339a33c1" + integrity sha1-WdmLasK6GfilF5jphT+6eDOaM8E= + dependencies: + ansi-wrap "0.1.0" + +ansi-hidden@^0.1.1: + version "0.1.1" + resolved "https://registry.yarnpkg.com/ansi-hidden/-/ansi-hidden-0.1.1.tgz#ed6a4c498d2bb7cbb289dbf2a8d1dcc8567fae0f" + integrity sha1-7WpMSY0rt8uyidvyqNHcyFZ/rg8= + dependencies: + ansi-wrap "0.1.0" + +ansi-inverse@^0.1.1: + version "0.1.1" + resolved "https://registry.yarnpkg.com/ansi-inverse/-/ansi-inverse-0.1.1.tgz#b6af45826fe826bfb528a6c79885794355ccd269" + integrity sha1-tq9Fgm/oJr+1KKbHmIV5Q1XM0mk= + dependencies: + ansi-wrap "0.1.0" + +ansi-italic@^0.1.1: + version "0.1.1" + resolved "https://registry.yarnpkg.com/ansi-italic/-/ansi-italic-0.1.1.tgz#104743463f625c142a036739cf85eda688986f23" + integrity sha1-EEdDRj9iXBQqA2c5z4XtpoiYbyM= + dependencies: + ansi-wrap "0.1.0" + +ansi-magenta@^0.1.1: + version "0.1.1" + resolved "https://registry.yarnpkg.com/ansi-magenta/-/ansi-magenta-0.1.1.tgz#063b5ba16fb3f23e1cfda2b07c0a89de11e430ae" + integrity sha1-BjtboW+z8j4c/aKwfAqJ3hHkMK4= + dependencies: + ansi-wrap "0.1.0" + +ansi-red@^0.1.1: + version "0.1.1" + resolved "https://registry.yarnpkg.com/ansi-red/-/ansi-red-0.1.1.tgz#8c638f9d1080800a353c9c28c8a81ca4705d946c" + integrity sha1-jGOPnRCAgAo1PJwoyKgcpHBdlGw= + dependencies: + ansi-wrap "0.1.0" + ansi-regex@^2.0.0: version "2.1.1" resolved "https://registry.yarnpkg.com/ansi-regex/-/ansi-regex-2.1.1.tgz#c3b33ab5ee360d86e0e628f0468ae7ef27d654df" @@ -1730,6 +1963,20 @@ ansi-regex@^5.0.0: resolved "https://registry.yarnpkg.com/ansi-regex/-/ansi-regex-5.0.0.tgz#388539f55179bf39339c81af30a654d69f87cb75" integrity sha512-bY6fj56OUQ0hU1KjFNDQuJFezqKdrAyFdIevADiqrWHwSlbmBNMHp5ak2f40Pm8JTFyM2mqxkG6ngkHO11f/lg== +ansi-reset@^0.1.1: + version "0.1.1" + resolved "https://registry.yarnpkg.com/ansi-reset/-/ansi-reset-0.1.1.tgz#e7e71292c3c7ddcd4d62ef4a6c7c05980911c3b7" + integrity sha1-5+cSksPH3c1NYu9KbHwFmAkRw7c= + dependencies: + ansi-wrap "0.1.0" + +ansi-strikethrough@^0.1.1: + version "0.1.1" + resolved "https://registry.yarnpkg.com/ansi-strikethrough/-/ansi-strikethrough-0.1.1.tgz#d84877140b2cff07d1c93ebce69904f68885e568" + integrity sha1-2Eh3FAss/wfRyT685pkE9oiF5Wg= + dependencies: + ansi-wrap "0.1.0" + ansi-styles@^2.2.1: version "2.2.1" resolved "https://registry.yarnpkg.com/ansi-styles/-/ansi-styles-2.2.1.tgz#b432dd3358b634cf75e1e4664368240533c1ddbe" @@ -1749,6 +1996,32 @@ ansi-styles@^4.0.0, ansi-styles@^4.1.0: dependencies: color-convert "^2.0.1" +ansi-underline@^0.1.1: + version "0.1.1" + resolved "https://registry.yarnpkg.com/ansi-underline/-/ansi-underline-0.1.1.tgz#dfc920f4c97b5977ea162df8ffb988308aaa71a4" + integrity sha1-38kg9Ml7WXfqFi34/7mIMIqqcaQ= + dependencies: + ansi-wrap "0.1.0" + +ansi-white@^0.1.1: + version "0.1.1" + resolved "https://registry.yarnpkg.com/ansi-white/-/ansi-white-0.1.1.tgz#9c77b7c193c5ee992e6011d36ec4c921b4578944" + integrity sha1-nHe3wZPF7pkuYBHTbsTJIbRXiUQ= + dependencies: + ansi-wrap "0.1.0" + +ansi-wrap@0.1.0: + version "0.1.0" + resolved "https://registry.yarnpkg.com/ansi-wrap/-/ansi-wrap-0.1.0.tgz#a82250ddb0015e9a27ca82e82ea603bbfa45efaf" + integrity sha1-qCJQ3bABXponyoLoLqYDu/pF768= + +ansi-yellow@^0.1.1: + version "0.1.1" + resolved "https://registry.yarnpkg.com/ansi-yellow/-/ansi-yellow-0.1.1.tgz#cb9356f2f46c732f0e3199e6102955a77da83c1d" + integrity sha1-y5NW8vRscy8OMZnmEClVp32oPB0= + dependencies: + ansi-wrap "0.1.0" + any-observable@^0.3.0: version "0.3.0" resolved "https://registry.yarnpkg.com/any-observable/-/any-observable-0.3.0.tgz#af933475e5806a67d0d7df090dd5e8bef65d119b" @@ -1775,7 +2048,7 @@ arch@^2.1.2: resolved "https://registry.yarnpkg.com/arch/-/arch-2.2.0.tgz#1bc47818f305764f23ab3306b0bfc086c5a29d11" integrity sha512-Of/R0wqp83cgHozfIYLbBMnej79U/SVGOOyuB3VVFv1NRM/PSFMK12x9KVtiYzJqmnU5WR2qp0Z5rHb7sWGnFQ== -argparse@^1.0.7: +argparse@^1.0.10, argparse@^1.0.7: version "1.0.10" resolved "https://registry.yarnpkg.com/argparse/-/argparse-1.0.10.tgz#bcd6791ea5ae09725e17e5ad988134cd40b3d911" integrity sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg== @@ -1810,6 +2083,15 @@ arr-union@^3.1.0: resolved "https://registry.yarnpkg.com/arr-union/-/arr-union-3.1.0.tgz#e39b09aea9def866a8f206e288af63919bae39c4" integrity sha1-45sJrqne+Gao8gbiiK9jkZuuOcQ= +array-sort@^0.1.4: + version "0.1.4" + resolved "https://registry.yarnpkg.com/array-sort/-/array-sort-0.1.4.tgz#662855eaeb671b4188df4451b2f24a0753992b23" + integrity sha512-BNcM+RXxndPxiZ2rd76k6nyQLRZr2/B/sdi8pQ+Joafr5AH279L40dfokSUTp8O+AaqYjXWhblBWa2st2nc4fQ== + dependencies: + default-compare "^1.0.0" + get-value "^2.0.6" + kind-of "^5.0.2" + array-union@^2.1.0: version "2.1.0" resolved "https://registry.yarnpkg.com/array-union/-/array-union-2.1.0.tgz#b798420adbeb1de828d84acd8a2e23d3efe85e8d" @@ -1872,6 +2154,13 @@ atob@^2.1.2: resolved "https://registry.yarnpkg.com/atob/-/atob-2.1.2.tgz#6d9517eb9e030d2436666651e86bd9f6f13533c9" integrity sha512-Wm6ukoaOGJi/73p/cl2GvLjTI5JM1k/O14isD73YML8StrH/7/lRFgmg8nICZgD3bZZvjwCGxtMOD3wWNAu8cg== +autolinker@~0.28.0: + version "0.28.1" + resolved "https://registry.yarnpkg.com/autolinker/-/autolinker-0.28.1.tgz#0652b491881879f0775dace0cdca3233942a4e47" + integrity sha1-BlK0kYgYefB3XazgzcoyM5QqTkc= + dependencies: + gulp-header "^1.7.1" + aws-sign2@~0.7.0: version "0.7.0" resolved "https://registry.yarnpkg.com/aws-sign2/-/aws-sign2-0.7.0.tgz#b46e890934a9591f2d2f6f86d7e6a9f1b3fe76a8" @@ -2511,6 +2800,13 @@ concat-stream@^1.4.4, concat-stream@^1.6.2: readable-stream "^2.2.2" typedarray "^0.0.6" +concat-with-sourcemaps@*: + version "1.1.0" + resolved "https://registry.yarnpkg.com/concat-with-sourcemaps/-/concat-with-sourcemaps-1.1.0.tgz#d4ea93f05ae25790951b99e7b3b09e3908a4082e" + integrity sha512-4gEjHJFT9e+2W/77h/DS5SGUgwDaOwprX8L/gl5+3ixnzkVJJsZWDSelmN3Oilw3LNDZjZV0yqH1hLG3k6nghg== + dependencies: + source-map "^0.6.1" + console-clear@^1.1.0: version "1.1.1" resolved "https://registry.yarnpkg.com/console-clear/-/console-clear-1.1.1.tgz#995e20cbfbf14dd792b672cde387bd128d674bf7" @@ -2734,6 +3030,18 @@ date-fns@^1.27.2: resolved "https://registry.yarnpkg.com/date-fns/-/date-fns-1.30.1.tgz#2e71bf0b119153dbb4cc4e88d9ea5acfb50dc05c" integrity sha512-hBSVCvSmWC+QypYObzwGOd9wqdDpOt+0wl0KbU+R+uuZBS1jN8VsD1ss3irQDknRj5NvxiTF6oj/nDRnN/UQNw== +date.js@^0.3.1: + version "0.3.3" + resolved "https://registry.yarnpkg.com/date.js/-/date.js-0.3.3.tgz#ef1e92332f507a638795dbb985e951882e50bbda" + integrity sha512-HgigOS3h3k6HnW011nAb43c5xx5rBXk8P2v/WIT9Zv4koIaVXiH2BURguI78VVp+5Qc076T7OR378JViCnZtBw== + dependencies: + debug "~3.1.0" + +dayjs@^1.10.4: + version "1.10.4" + resolved "https://registry.yarnpkg.com/dayjs/-/dayjs-1.10.4.tgz#8e544a9b8683f61783f570980a8a80eaf54ab1e2" + integrity sha512-RI/Hh4kqRc1UKLOAf/T5zdMMX5DQIlDxwUe3wSyMMnEbGunnpENCdbUgM+dW7kXidZqCttBrmw7BhN4TMddkCw== + debug@4.3.1, debug@^4.1.0, debug@^4.1.1: version "4.3.1" resolved "https://registry.yarnpkg.com/debug/-/debug-4.3.1.tgz#f0d229c505e0c6d8c49ac553d1b13dc183f6b2ee" @@ -2755,6 +3063,13 @@ debug@^3.1.0: dependencies: ms "^2.1.1" +debug@~3.1.0: + version "3.1.0" + resolved "https://registry.yarnpkg.com/debug/-/debug-3.1.0.tgz#5bb5a0672628b64149566ba16819e61518c67261" + integrity sha512-OX8XqP7/1a9cqkxYw2yXss15f26NKWBpDXQd0/uK/KPqdQhxbPa994hnzjcE2VqQpDslf55723cKPUOGSmMY3g== + dependencies: + ms "2.0.0" + decamelize@^1.2.0: version "1.2.0" resolved "https://registry.yarnpkg.com/decamelize/-/decamelize-1.2.0.tgz#f6534d15148269b20352e7bee26f501f9a191290" @@ -2792,6 +3107,13 @@ deepmerge@^4.2.2: resolved "https://registry.yarnpkg.com/deepmerge/-/deepmerge-4.2.2.tgz#44d2ea3679b8f4d4ffba33f03d865fc1e7bf4955" integrity sha512-FJ3UgI4gIl+PHZm53knsuSFpE+nESMr7M4v9QcgB7S63Kj/6WqMiFQJpBBYz1Pt+66bZpP3Q7Lye0Oo9MPKEdg== +default-compare@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/default-compare/-/default-compare-1.0.0.tgz#cb61131844ad84d84788fb68fd01681ca7781a2f" + integrity sha512-QWfXlM0EkAbqOCbD/6HjdwT19j7WCkMyiRhWilc4H9/5h/RzTF9gv5LYh1+CmDV5d1rki6KAWLtQale0xt20eQ== + dependencies: + kind-of "^5.0.2" + deferred-leveldown@~0.2.0: version "0.2.0" resolved "https://registry.yarnpkg.com/deferred-leveldown/-/deferred-leveldown-0.2.0.tgz#2cef1f111e1c57870d8bbb8af2650e587cd2f5b4" @@ -2947,6 +3269,11 @@ end-of-stream@^1.1.0: dependencies: once "^1.4.0" +ent@^2.2.0: + version "2.2.0" + resolved "https://registry.yarnpkg.com/ent/-/ent-2.2.0.tgz#e964219325a21d05f44466a2f686ed6ce5f5dd1d" + integrity sha1-6WQhkyWiHQX0RGai9obtbOX13R0= + entities@~2.1.0: version "2.1.0" resolved "https://registry.yarnpkg.com/entities/-/entities-2.1.0.tgz#992d3129cf7df6870b96c57858c249a120f8b8b5" @@ -2966,6 +3293,11 @@ error-ex@^1.3.1: dependencies: is-arrayish "^0.2.1" +error-symbol@^0.1.0: + version "0.1.0" + resolved "https://registry.yarnpkg.com/error-symbol/-/error-symbol-0.1.0.tgz#0a4dae37d600d15a29ba453d8ef920f1844333f6" + integrity sha1-Ck2uN9YA0VopukU9jvkg8YRDM/Y= + escalade@^3.1.1: version "3.1.1" resolved "https://registry.yarnpkg.com/escalade/-/escalade-3.1.1.tgz#d8cfdc7000965c5a0174b4a82eaa5c0552742e40" @@ -3233,6 +3565,13 @@ extsprintf@^1.2.0: resolved "https://registry.yarnpkg.com/extsprintf/-/extsprintf-1.4.0.tgz#e2689f8f356fad62cca65a3a91c5df5f9551692f" integrity sha1-4mifjzVvrWLMplo6kcXfX5VRaS8= +"falsey@^0.3.2": + version "0.3.2" + resolved "https://registry.yarnpkg.com/falsey/-/falsey-0.3.2.tgz#b21c90c5c34660fc192bf909575db95b6880d597" + integrity sha512-lxEuefF5MBIVDmE6XeqCdM4BWk1+vYmGZtkbKZ/VFcg6uBBw6fXNEbWmxCjDdQlFc9hy450nkiWwM3VAW6G1qg== + dependencies: + kind-of "^5.0.2" + fast-deep-equal@^3.1.1: version "3.1.3" resolved "https://registry.yarnpkg.com/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz#3a7d56b559d6cbc3eb512325244e619a65c6c525" @@ -3346,11 +3685,18 @@ follow-redirects@^1.10.0: resolved "https://registry.yarnpkg.com/follow-redirects/-/follow-redirects-1.13.2.tgz#dd73c8effc12728ba5cf4259d760ea5fb83e3147" integrity sha512-6mPTgLxYm3r6Bkkg0vNM0HTjfGrOEtsfbhagQvbxDEsEkpNhw582upBaoRZylzen6krEmxXJgt9Ju6HiI4O7BA== -for-in@^1.0.2: +for-in@^1.0.1, for-in@^1.0.2: version "1.0.2" resolved "https://registry.yarnpkg.com/for-in/-/for-in-1.0.2.tgz#81068d295a8142ec0ac726c6e2200c30fb6d5e80" integrity sha1-gQaNKVqBQuwKxybG4iAMMPttXoA= +for-own@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/for-own/-/for-own-1.0.0.tgz#c63332f415cedc4b04dbfe70cf836494c53cb44b" + integrity sha1-xjMy9BXO3EsE2/5wz4NklMU8tEs= + dependencies: + for-in "^1.0.1" + foreach@~2.0.1: version "2.0.5" resolved "https://registry.yarnpkg.com/foreach/-/foreach-2.0.5.tgz#0bee005018aeb260d0a3af3ae658dd0136ec1b99" @@ -3382,6 +3728,11 @@ from@~0: resolved "https://registry.yarnpkg.com/from/-/from-0.1.7.tgz#83c60afc58b9c56997007ed1a768b3ab303a44fe" integrity sha1-g8YK/Fi5xWmXAH7Rp2izqzA6RP4= +fs-exists-sync@^0.1.0: + version "0.1.0" + resolved "https://registry.yarnpkg.com/fs-exists-sync/-/fs-exists-sync-0.1.0.tgz#982d6893af918e72d08dec9e8673ff2b5a8d6add" + integrity sha1-mC1ok6+RjnLQjeyehnP/K1qNat0= + fs-extra@^8.1.0: version "8.1.0" resolved "https://registry.yarnpkg.com/fs-extra/-/fs-extra-8.1.0.tgz#49d43c45a88cd9677668cb7be1b46efdb8d2e1c0" @@ -3442,6 +3793,14 @@ get-intrinsic@^1.0.2: has "^1.0.3" has-symbols "^1.0.1" +get-object@^0.2.0: + version "0.2.0" + resolved "https://registry.yarnpkg.com/get-object/-/get-object-0.2.0.tgz#d92ff7d5190c64530cda0543dac63a3d47fe8c0c" + integrity sha1-2S/31RkMZFMM2gVD2sY6PUf+jAw= + dependencies: + is-number "^2.0.2" + isobject "^0.2.0" + get-package-type@^0.1.0: version "0.1.0" resolved "https://registry.yarnpkg.com/get-package-type/-/get-package-type-0.1.0.tgz#8de2d803cff44df3bc6c456e6668b36c3926e11a" @@ -3540,6 +3899,35 @@ growly@^1.3.0: resolved "https://registry.yarnpkg.com/growly/-/growly-1.3.0.tgz#f10748cbe76af964b7c96c93c6bcc28af120c081" integrity sha1-8QdIy+dq+WS3yWyTxrzCivEgwIE= +gulp-header@^1.7.1: + version "1.8.12" + resolved "https://registry.yarnpkg.com/gulp-header/-/gulp-header-1.8.12.tgz#ad306be0066599127281c4f8786660e705080a84" + integrity sha512-lh9HLdb53sC7XIZOYzTXM4lFuXElv3EVkSDhsd7DoJBj7hm+Ni7D3qYbb+Rr8DuM8nRanBvkVO9d7askreXGnQ== + dependencies: + concat-with-sourcemaps "*" + lodash.template "^4.4.0" + through2 "^2.0.0" + +handlebars-utils@^1.0.2, handlebars-utils@^1.0.4, handlebars-utils@^1.0.6: + version "1.0.6" + resolved "https://registry.yarnpkg.com/handlebars-utils/-/handlebars-utils-1.0.6.tgz#cb9db43362479054782d86ffe10f47abc76357f9" + integrity sha512-d5mmoQXdeEqSKMtQQZ9WkiUcO1E3tPbWxluCK9hVgIDPzQa9WsKo3Lbe/sGflTe7TomHEeZaOgwIkyIr1kfzkw== + dependencies: + kind-of "^6.0.0" + typeof-article "^0.1.1" + +handlebars@^4.0.11, handlebars@^4.7.6: + version "4.7.7" + resolved "https://registry.yarnpkg.com/handlebars/-/handlebars-4.7.7.tgz#9ce33416aad02dbd6c8fafa8240d5d98004945a1" + integrity sha512-aAcXm5OAfE/8IXkcZvCepKU3VzW1/39Fb5ZuqMtgI/hT8X2YgoMvBY5dLhq/cpOvw7Lk1nK/UF71aLG/ZnVYRA== + dependencies: + minimist "^1.2.5" + neo-async "^2.6.0" + source-map "^0.6.1" + wordwrap "^1.0.0" + optionalDependencies: + uglify-js "^3.1.4" + har-schema@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/har-schema/-/har-schema-2.0.0.tgz#a94c2224ebcac04782a0d9035521f24735b7ec92" @@ -3640,6 +4028,39 @@ he@1.2.x: resolved "https://registry.yarnpkg.com/he/-/he-1.2.0.tgz#84ae65fa7eafb165fddb61566ae14baf05664f0f" integrity sha512-F/1DnUGPopORZi0ni+CvrCgHQ5FyEAHRLSApuYWMmrbSwoN2Mn/7k+Gl38gJnR7yyDZk6WLXwiGod1JOWNDKGw== +helper-date@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/helper-date/-/helper-date-1.0.1.tgz#12fedea3ad8e44a7ca4c4efb0ff4104a5120cffb" + integrity sha512-wU3VOwwTJvGr/w5rZr3cprPHO+hIhlblTJHD6aFBrKLuNbf4lAmkawd2iK3c6NbJEvY7HAmDpqjOFSI5/+Ey2w== + dependencies: + date.js "^0.3.1" + handlebars-utils "^1.0.4" + moment "^2.18.1" + +helper-markdown@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/helper-markdown/-/helper-markdown-1.0.0.tgz#ee7e9fc554675007d37eb90f7853b13ce74f3e10" + integrity sha512-AnDqMS4ejkQK0MXze7pA9TM3pu01ZY+XXsES6gEE0RmCGk5/NIfvTn0NmItfyDOjRAzyo9z6X7YHbHX4PzIvOA== + dependencies: + handlebars-utils "^1.0.2" + highlight.js "^9.12.0" + remarkable "^1.7.1" + +helper-md@^0.2.2: + version "0.2.2" + resolved "https://registry.yarnpkg.com/helper-md/-/helper-md-0.2.2.tgz#c1f59d7e55bbae23362fd8a0e971607aec69d41f" + integrity sha1-wfWdflW7riM2L9ig6XFgeuxp1B8= + dependencies: + ent "^2.2.0" + extend-shallow "^2.0.1" + fs-exists-sync "^0.1.0" + remarkable "^1.6.2" + +highlight.js@^9.12.0: + version "9.18.5" + resolved "https://registry.yarnpkg.com/highlight.js/-/highlight.js-9.18.5.tgz#d18a359867f378c138d6819edfc2a8acd5f29825" + integrity sha512-a5bFyofd/BHCX52/8i8uJkjr9DYwXIPnM/plwI6W7ezItLGqzt7X2G2nXuYSfsIJdkwwj/g9DG1LkcGJI/dDoA== + hmac-drbg@^1.0.1: version "1.0.1" resolved "https://registry.yarnpkg.com/hmac-drbg/-/hmac-drbg-1.0.1.tgz#d2745701025a6c775a6c545793ed502fc0c649a1" @@ -3679,6 +4100,14 @@ html-minifier@^3.0.2: relateurl "0.2.x" uglify-js "3.4.x" +html-tag@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/html-tag/-/html-tag-2.0.0.tgz#36c3bc8d816fd30b570d5764a497a641640c2fed" + integrity sha512-XxzooSo6oBoxBEUazgjdXj7VwTn/iSTSZzTYKzYY6I916tkaYzypHxy+pbVU1h+0UQ9JlVf5XkNQyxOAiiQO1g== + dependencies: + is-self-closing "^1.0.1" + kind-of "^6.0.0" + http-signature@~1.2.0: version "1.2.0" resolved "https://registry.yarnpkg.com/http-signature/-/http-signature-1.2.0.tgz#9aecd925114772f3d95b65a60abb8f7c18fbace1" @@ -3761,6 +4190,11 @@ inflight@^1.0.4: once "^1.3.0" wrappy "1" +info-symbol@^0.1.0: + version "0.1.0" + resolved "https://registry.yarnpkg.com/info-symbol/-/info-symbol-0.1.0.tgz#27841d72867ddb4242cd612d79c10633881c6a78" + integrity sha1-J4QdcoZ920JCzWEtecEGM4gcang= + inherits@2, inherits@^2.0.1, inherits@^2.0.3, inherits@^2.0.4, inherits@~2.0.1, inherits@~2.0.3: version "2.0.4" resolved "https://registry.yarnpkg.com/inherits/-/inherits-2.0.4.tgz#0fa2c64f932917c3433a0ded55363aae37416b7c" @@ -3870,6 +4304,13 @@ is-docker@^2.0.0: resolved "https://registry.yarnpkg.com/is-docker/-/is-docker-2.1.1.tgz#4125a88e44e450d384e09047ede71adc2d144156" integrity sha512-ZOoqiXfEwtGknTiuDEy8pN2CfE3TxMHprvNer1mXiqwkOT77Rw3YVrUQ52EqAOU3QAWDQ+bQdx7HJzrv7LS2Hw== +is-even@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/is-even/-/is-even-1.0.0.tgz#76b5055fbad8d294a86b6a949015e1c97b717c06" + integrity sha1-drUFX7rY0pSoa2qUkBXhyXtxfAY= + dependencies: + is-odd "^0.1.2" + is-extendable@^0.1.0, is-extendable@^0.1.1: version "0.1.1" resolved "https://registry.yarnpkg.com/is-extendable/-/is-extendable-0.1.1.tgz#62b110e289a471418e3ec36a617d472e301dfc89" @@ -3909,7 +4350,7 @@ is-generator-fn@^2.0.0: resolved "https://registry.yarnpkg.com/is-generator-fn/-/is-generator-fn-2.1.0.tgz#7d140adc389aaf3011a8f2a2a4cfa6faadffb118" integrity sha512-cTIB4yPYL/Grw0EaSzASzg6bBy9gqCofvWN8okThAYIxKJZC+udlRAmGbM0XLeniEJSs8uEgHPGuHSe1XsOLSQ== -is-glob@^4.0.1, is-glob@~4.0.1: +is-glob@^4.0.0, is-glob@^4.0.1, is-glob@~4.0.1: version "4.0.1" resolved "https://registry.yarnpkg.com/is-glob/-/is-glob-4.0.1.tgz#7567dbe9f2f5e2467bc77ab83c4a29482407a5dc" integrity sha512-5G0tKtBTFImOqDnLB2hG6Bp2qcKEFduo4tZu9MT/H6NQv/ghhy30o55ufafxJ/LdH79LLs2Kfrn85TLKyA7BUg== @@ -3929,6 +4370,13 @@ is-module@^1.0.0: resolved "https://registry.yarnpkg.com/is-module/-/is-module-1.0.0.tgz#3258fb69f78c14d5b815d664336b4cffb6441591" integrity sha1-Mlj7afeMFNW4FdZkM2tM/7ZEFZE= +is-number@^2.0.2: + version "2.1.0" + resolved "https://registry.yarnpkg.com/is-number/-/is-number-2.1.0.tgz#01fcbbb393463a548f2f466cce16dece49db908f" + integrity sha1-Afy7s5NGOlSPL0ZszhbezknbkI8= + dependencies: + kind-of "^3.0.2" + is-number@^3.0.0: version "3.0.0" resolved "https://registry.yarnpkg.com/is-number/-/is-number-3.0.0.tgz#24fd6201a4782cf50561c810276afc7d12d71195" @@ -3936,6 +4384,11 @@ is-number@^3.0.0: dependencies: kind-of "^3.0.2" +is-number@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/is-number/-/is-number-4.0.0.tgz#0026e37f5454d73e356dfe6564699867c6a7f0ff" + integrity sha512-rSklcAIlf1OmFdyAqbnWTLVelsQ58uvZ66S/ZyawjWqIviTWCjg2PzVGw8WUA+nNuPTqb4wgA+NszrJ+08LlgQ== + is-number@^7.0.0: version "7.0.0" resolved "https://registry.yarnpkg.com/is-number/-/is-number-7.0.0.tgz#7535345b896734d5f80c4d06c50955527a14f12b" @@ -3953,6 +4406,13 @@ is-observable@^1.1.0: dependencies: symbol-observable "^1.1.0" +is-odd@^0.1.2: + version "0.1.2" + resolved "https://registry.yarnpkg.com/is-odd/-/is-odd-0.1.2.tgz#bc573b5ce371ef2aad6e6f49799b72bef13978a7" + integrity sha1-vFc7XONx7yqtbm9JeZtyvvE5eKc= + dependencies: + is-number "^3.0.0" + is-path-inside@^3.0.1: version "3.0.2" resolved "https://registry.yarnpkg.com/is-path-inside/-/is-path-inside-3.0.2.tgz#f5220fc82a3e233757291dddc9c5877f2a1f3017" @@ -3995,6 +4455,13 @@ is-regex@^1.0.4: call-bind "^1.0.2" has-symbols "^1.0.1" +is-self-closing@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/is-self-closing/-/is-self-closing-1.0.1.tgz#5f406b527c7b12610176320338af0fa3896416e4" + integrity sha512-E+60FomW7Blv5GXTlYee2KDrnG6srxF7Xt1SjrhWUGUEsTFIqY/nq2y3DaftCsgUMdh89V07IVfhY9KIJhLezg== + dependencies: + self-closing-tags "^1.0.1" + is-stream@^1.1.0: version "1.1.0" resolved "https://registry.yarnpkg.com/is-stream/-/is-stream-1.1.0.tgz#12d4a3dd4e68e0b79ceb8dbc84173ae80d91ca44" @@ -4047,6 +4514,11 @@ isexe@^2.0.0: resolved "https://registry.yarnpkg.com/isexe/-/isexe-2.0.0.tgz#e8fbf374dc556ff8947a10dcb0572d633f2cfa10" integrity sha1-6PvzdNxVb/iUehDcsFctYz8s+hA= +isobject@^0.2.0: + version "0.2.0" + resolved "https://registry.yarnpkg.com/isobject/-/isobject-0.2.0.tgz#a3432192f39b910b5f02cc989487836ec70aa85e" + integrity sha1-o0MhkvObkQtfAsyYlIeDbscKqF4= + isobject@^2.0.0: version "2.1.0" resolved "https://registry.yarnpkg.com/isobject/-/isobject-2.1.0.tgz#f065561096a3f1da2ef46272f815c840d87e0c89" @@ -4634,7 +5106,7 @@ jsprim@^1.2.2: json-schema "0.2.3" verror "1.10.0" -kind-of@^3.0.2, kind-of@^3.0.3, kind-of@^3.2.0: +kind-of@^3.0.2, kind-of@^3.0.3, kind-of@^3.1.0, kind-of@^3.2.0: version "3.2.2" resolved "https://registry.yarnpkg.com/kind-of/-/kind-of-3.2.2.tgz#31ea21a734bab9bbb0f32466d893aea51e4a3c64" integrity sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ= @@ -4648,7 +5120,7 @@ kind-of@^4.0.0: dependencies: is-buffer "^1.1.5" -kind-of@^5.0.0: +kind-of@^5.0.0, kind-of@^5.0.2: version "5.1.0" resolved "https://registry.yarnpkg.com/kind-of/-/kind-of-5.1.0.tgz#729c91e2d857b7a419a1f9aa65685c4c33f5845d" integrity sha512-NGEErnH6F2vUuXDh+OlbcKW7/wOcfdRHaZ7VWtqCztfHri/++YKmP51OdWeGPuqCOba6kk2OTe5d02VmTB80Pw== @@ -4668,6 +5140,13 @@ lazy-ass@1.6.0, lazy-ass@^1.6.0: resolved "https://registry.yarnpkg.com/lazy-ass/-/lazy-ass-1.6.0.tgz#7999655e8646c17f089fdd187d150d3324d54513" integrity sha1-eZllXoZGwX8In90YfRUNMyTVRRM= +lazy-cache@^2.0.1: + version "2.0.2" + resolved "https://registry.yarnpkg.com/lazy-cache/-/lazy-cache-2.0.2.tgz#b9190a4f913354694840859f8a8f7084d8822264" + integrity sha1-uRkKT5EzVGlIQIWfio9whNiCImQ= + dependencies: + set-getter "^0.1.0" + level-blobs@^0.1.7: version "0.1.7" resolved "https://registry.yarnpkg.com/level-blobs/-/level-blobs-0.1.7.tgz#9ab9b97bb99f1edbf9f78a3433e21ed56386bdaf" @@ -4854,6 +5333,11 @@ lodash-es@^4.17.11: resolved "https://registry.yarnpkg.com/lodash-es/-/lodash-es-4.17.20.tgz#29f6332eefc60e849f869c264bc71126ad61e8f7" integrity sha512-JD1COMZsq8maT6mnuz1UMV0jvYD0E0aUsSOdrr1/nAG3dhqQXwRRgeW0cSqH1U43INKcqxaiVIQNOUDld7gRDA== +lodash._reinterpolate@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/lodash._reinterpolate/-/lodash._reinterpolate-3.0.0.tgz#0ccf2d89166af03b3663c796538b75ac6e114d9d" + integrity sha1-DM8tiRZq8Ds2Y8eWU4t1rG4RTZ0= + lodash.once@^4.1.1: version "4.1.1" resolved "https://registry.yarnpkg.com/lodash.once/-/lodash.once-4.1.1.tgz#0dd3971213c7c56df880977d504c88fb471a97ac" @@ -4864,6 +5348,21 @@ lodash.sortby@^4.7.0: resolved "https://registry.yarnpkg.com/lodash.sortby/-/lodash.sortby-4.7.0.tgz#edd14c824e2cc9c1e0b0a1b42bb5210516a42438" integrity sha1-7dFMgk4sycHgsKG0K7UhBRakJDg= +lodash.template@^4.4.0: + version "4.5.0" + resolved "https://registry.yarnpkg.com/lodash.template/-/lodash.template-4.5.0.tgz#f976195cf3f347d0d5f52483569fe8031ccce8ab" + integrity sha512-84vYFxIkmidUiFxidA/KjjH9pAycqW+h980j7Fuz5qxRtO9pgB7MDFTdys1N7A5mcucRiDyEq4fusljItR1T/A== + dependencies: + lodash._reinterpolate "^3.0.0" + lodash.templatesettings "^4.0.0" + +lodash.templatesettings@^4.0.0: + version "4.2.0" + resolved "https://registry.yarnpkg.com/lodash.templatesettings/-/lodash.templatesettings-4.2.0.tgz#e481310f049d3cf6d47e912ad09313b154f0fb33" + integrity sha512-stgLz+i3Aa9mZgnjr/O+v9ruKZsPsndy7qPZOchbqk2cnTU1ZaldKK+v7m54WoKIyxiuMZTKT2H81F8BeAc3ZQ== + dependencies: + lodash._reinterpolate "^3.0.0" + lodash@4.17.13: version "4.17.13" resolved "https://registry.yarnpkg.com/lodash/-/lodash-4.17.13.tgz#0bdc3a6adc873d2f4e0c4bac285df91b64fc7b93" @@ -4874,6 +5373,14 @@ lodash@^4.17.15, lodash@^4.17.19, lodash@^4.17.20: resolved "https://registry.yarnpkg.com/lodash/-/lodash-4.17.20.tgz#b44a9b6297bcb698f1c51a3545a2b3b368d59c52" integrity sha512-PlhdFcillOINfeV7Ni6oF1TAEayyZBoZ8bcshTHqOYJYlrqzRK5hagpagky5o4HfCzzd1TRkXPMFq6cKk9rGmA== +log-ok@^0.1.1: + version "0.1.1" + resolved "https://registry.yarnpkg.com/log-ok/-/log-ok-0.1.1.tgz#bea3dd36acd0b8a7240d78736b5b97c65444a334" + integrity sha1-vqPdNqzQuKckDXhza1uXxlREozQ= + dependencies: + ansi-green "^0.1.1" + success-symbol "^0.1.0" + log-symbols@^1.0.2: version "1.0.2" resolved "https://registry.yarnpkg.com/log-symbols/-/log-symbols-1.0.2.tgz#376ff7b58ea3086a0f09facc74617eca501e1a18" @@ -4904,6 +5411,27 @@ log-update@^2.3.0: cli-cursor "^2.0.0" wrap-ansi "^3.0.1" +log-utils@^0.2.1: + version "0.2.1" + resolved "https://registry.yarnpkg.com/log-utils/-/log-utils-0.2.1.tgz#a4c217a0dd9a50515d9b920206091ab3d4e031cf" + integrity sha1-pMIXoN2aUFFdm5ICBgkas9TgMc8= + dependencies: + ansi-colors "^0.2.0" + error-symbol "^0.1.0" + info-symbol "^0.1.0" + log-ok "^0.1.1" + success-symbol "^0.1.0" + time-stamp "^1.0.1" + warning-symbol "^0.1.0" + +logging-helpers@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/logging-helpers/-/logging-helpers-1.0.0.tgz#b5a37b32ad53eb0137c58c7898a47b175ddb7c36" + integrity sha512-qyIh2goLt1sOgQQrrIWuwkRjUx4NUcEqEGAcYqD8VOnOC6ItwkrVE8/tA4smGpjzyp4Svhc6RodDp9IO5ghpyA== + dependencies: + isobject "^3.0.0" + log-utils "^0.2.1" + lower-case@^1.1.1: version "1.1.4" resolved "https://registry.yarnpkg.com/lower-case/-/lower-case-1.1.4.tgz#9a2cabd1b9e8e0ae993a4bf7d5875c39c42e8eac" @@ -5115,7 +5643,7 @@ mkdirp@^0.5.1, mkdirp@^0.5.4: dependencies: minimist "^1.2.5" -moment@^2.27.0: +moment@^2.18.1, moment@^2.27.0: version "2.29.1" resolved "https://registry.yarnpkg.com/moment/-/moment-2.29.1.tgz#b2be769fa31940be9eeea6469c075e35006fa3d3" integrity sha512-kHmoybcPV8Sqy59DwNDY3Jefr64lK/by/da0ViFcuA4DH0vQg5Q6Ze5VimxkfQNSC+Mls/Kx53s7TjP1RhFEDQ== @@ -5172,6 +5700,11 @@ ncp@^2.0.0: resolved "https://registry.yarnpkg.com/ncp/-/ncp-2.0.0.tgz#195a21d6c46e361d2fb1281ba38b91e9df7bdbb3" integrity sha1-GVoh1sRuNh0vsSgbo4uR6d9727M= +neo-async@^2.6.0: + version "2.6.2" + resolved "https://registry.yarnpkg.com/neo-async/-/neo-async-2.6.2.tgz#b4aafb93e3aeb2d8174ca53cf163ab7d7308305f" + integrity sha512-Yd3UES5mWCSqR+qNT93S3UoYUkqAZ9lLg8a7g9rimsWmYGK8cVToA4/sF3RrshdyV3sAGMXVUmpMYOw+dLpOuw== + nice-try@^1.0.4: version "1.0.5" resolved "https://registry.yarnpkg.com/nice-try/-/nice-try-1.0.5.tgz#a3378a7696ce7d223e88fc9b764bd7ef1089e366" @@ -5761,7 +6294,7 @@ readable-stream@^1.0.26-4: isarray "0.0.1" string_decoder "~0.10.x" -readable-stream@^2.2.2: +readable-stream@^2.2.2, readable-stream@~2.3.6: version "2.3.7" resolved "https://registry.yarnpkg.com/readable-stream/-/readable-stream-2.3.7.tgz#1eca1cf711aef814c04f62252a36a62f6cb23b57" integrity sha512-Ebho8K4jIbHAxnuxi7o42OrZgF/ZTNcsZj6nRKyUmkhLFq8CHItp/fy6hQZuZmP/n3yZ9VBUbp4zz/mX8hmYPw== @@ -5848,6 +6381,11 @@ regexp.prototype.flags@^1.2.0: call-bind "^1.0.2" define-properties "^1.1.3" +regexparam@1.3.0, regexparam@^1.3.0: + version "1.3.0" + resolved "https://registry.yarnpkg.com/regexparam/-/regexparam-1.3.0.tgz#2fe42c93e32a40eff6235d635e0ffa344b92965f" + integrity sha512-6IQpFBv6e5vz1QAqI+V4k8P2e/3gRrqfCJ9FI+O1FLQTO+Uz6RXZEZOPmTJ6hlGj7gkERzY5BRCv09whKP96/g== + regexpu-core@^4.7.1: version "4.7.1" resolved "https://registry.yarnpkg.com/regexpu-core/-/regexpu-core-4.7.1.tgz#2dea5a9a07233298fbf0db91fa9abc4c6e0f8ad6" @@ -5877,6 +6415,21 @@ relateurl@0.2.x: resolved "https://registry.yarnpkg.com/relateurl/-/relateurl-0.2.7.tgz#54dbf377e51440aca90a4cd274600d3ff2d888a9" integrity sha1-VNvzd+UUQKypCkzSdGANP/LYiKk= +relative@^3.0.2: + version "3.0.2" + resolved "https://registry.yarnpkg.com/relative/-/relative-3.0.2.tgz#0dcd8ec54a5d35a3c15e104503d65375b5a5367f" + integrity sha1-Dc2OxUpdNaPBXhBFA9ZTdbWlNn8= + dependencies: + isobject "^2.0.0" + +remarkable@^1.6.2, remarkable@^1.7.1: + version "1.7.4" + resolved "https://registry.yarnpkg.com/remarkable/-/remarkable-1.7.4.tgz#19073cb960398c87a7d6546eaa5e50d2022fcd00" + integrity sha512-e6NKUXgX95whv7IgddywbeN/ItCkWbISmc2DiqHJb0wTrqZIexqdco5b8Z3XZoo/48IdNVKM9ZCvTPJ4F5uvhg== + dependencies: + argparse "^1.0.10" + autolinker "~0.28.0" + remixicon@2.5.0: version "2.5.0" resolved "https://registry.yarnpkg.com/remixicon/-/remixicon-2.5.0.tgz#b5e245894a1550aa23793f95daceadbf96ad1a41" @@ -6226,6 +6779,11 @@ saxes@^5.0.0, saxes@^5.0.1: dependencies: xmlchars "^2.2.0" +self-closing-tags@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/self-closing-tags/-/self-closing-tags-1.0.1.tgz#6c5fa497994bb826b484216916371accee490a5d" + integrity sha512-7t6hNbYMxM+VHXTgJmxwgZgLGktuXtVVD5AivWzNTdJBM4DBjnDKDzkf2SrNjihaArpeJYNjxkELBu1evI4lQA== + "semver@2 || 3 || 4 || 5", semver@^5.4.1, semver@^5.5.0, semver@^5.5.1: version "5.7.1" resolved "https://registry.yarnpkg.com/semver/-/semver-5.7.1.tgz#a954f931aeba508d307bbf069eff0c01c96116f7" @@ -6265,6 +6823,13 @@ set-blocking@^2.0.0: resolved "https://registry.yarnpkg.com/set-blocking/-/set-blocking-2.0.0.tgz#045f9782d011ae9a6803ddd382b24392b3d890f7" integrity sha1-BF+XgtARrppoA93TgrJDkrPYkPc= +set-getter@^0.1.0: + version "0.1.0" + resolved "https://registry.yarnpkg.com/set-getter/-/set-getter-0.1.0.tgz#d769c182c9d5a51f409145f2fba82e5e86e80376" + integrity sha1-12nBgsnVpR9AkUXy+6guXoboA3Y= + dependencies: + to-object-path "^0.3.0" + set-value@^2.0.0, set-value@^2.0.1: version "2.0.1" resolved "https://registry.yarnpkg.com/set-value/-/set-value-2.0.1.tgz#a18d40530e6f07de4228c7defe4227af8cad005b" @@ -6319,6 +6884,13 @@ shortid@2.2.15: dependencies: nanoid "^2.1.0" +shortid@^2.2.15: + version "2.2.16" + resolved "https://registry.yarnpkg.com/shortid/-/shortid-2.2.16.tgz#b742b8f0cb96406fd391c76bfc18a67a57fe5608" + integrity sha512-Ugt+GIZqvGXCIItnsL+lvFJOiN7RYqlGy7QE41O3YC1xbNSeDGIRO7xg2JJXIAj1cAGnOeC1r7/T9pgrtQbv4g== + dependencies: + nanoid "^2.1.0" + signal-exit@^3.0.0, signal-exit@^3.0.2: version "3.0.3" resolved "https://registry.yarnpkg.com/signal-exit/-/signal-exit-3.0.3.tgz#a1410c2edd8f077b08b4e253c8eacfcaf057461c" @@ -6652,6 +7224,16 @@ strip-indent@^3.0.0: dependencies: min-indent "^1.0.0" +striptags@^3.1.0: + version "3.1.1" + resolved "https://registry.yarnpkg.com/striptags/-/striptags-3.1.1.tgz#c8c3e7fdd6fb4bb3a32a3b752e5b5e3e38093ebd" + integrity sha1-yMPn/db7S7OjKjt1LltePjgJPr0= + +success-symbol@^0.1.0: + version "0.1.0" + resolved "https://registry.yarnpkg.com/success-symbol/-/success-symbol-0.1.0.tgz#24022e486f3bf1cdca094283b769c472d3b72897" + integrity sha1-JAIuSG878c3KCUKDt2nEctO3KJc= + supports-color@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-2.0.0.tgz#535d045ce6b6363fa40117084629995e9df324c7" @@ -6713,6 +7295,13 @@ svelte-portal@^1.0.0: resolved "https://registry.yarnpkg.com/svelte-portal/-/svelte-portal-1.0.0.tgz#36a47c5578b1a4d9b4dc60fa32a904640ec4cdd3" integrity sha512-nHf+DS/jZ6jjnZSleBMSaZua9JlG5rZv9lOGKgJuaZStfevtjIlUJrkLc3vbV8QdBvPPVmvcjTlazAzfKu0v3Q== +svelte-spa-router@^3.0.5: + version "3.1.0" + resolved "https://registry.yarnpkg.com/svelte-spa-router/-/svelte-spa-router-3.1.0.tgz#a929f0def7e12c41f32bc356f91685aeadcd75bf" + integrity sha512-jlM/xwjn57mylr+pzHYCOOy+IPQauT46gOucNGTBu6jHcFXu3F+oaojN4PXC1LYizRGxFB6QA0qnYbZnRfX7Sg== + dependencies: + regexparam "1.3.0" + svelte@^3.30.0: version "3.32.3" resolved "https://registry.yarnpkg.com/svelte/-/svelte-3.32.3.tgz#db0c50c65573ecffe4e2f4924e4862d8f9feda74" @@ -6769,11 +7358,24 @@ throttleit@^1.0.0: resolved "https://registry.yarnpkg.com/throttleit/-/throttleit-1.0.0.tgz#9e785836daf46743145a5984b6268d828528ac6c" integrity sha1-nnhYNtr0Z0MUWlmEtiaNgoUorGw= +through2@^2.0.0: + version "2.0.5" + resolved "https://registry.yarnpkg.com/through2/-/through2-2.0.5.tgz#01c1e39eb31d07cb7d03a96a70823260b23132cd" + integrity sha512-/mrRod8xqpA+IHSLyGCQ2s8SPHiCDEeQJSep1jqLYeEUClOFG2Qsh+4FU6G9VeqpZnGW/Su8LQGc4YKni5rYSQ== + dependencies: + readable-stream "~2.3.6" + xtend "~4.0.1" + through@2, through@~2.3, through@~2.3.1: version "2.3.8" resolved "https://registry.yarnpkg.com/through/-/through-2.3.8.tgz#0dd4c9ffaabc357960b1b724115d7e0e86a2e1f5" integrity sha1-DdTJ/6q8NXlgsbckEV1+Doai4fU= +time-stamp@^1.0.1: + version "1.1.0" + resolved "https://registry.yarnpkg.com/time-stamp/-/time-stamp-1.1.0.tgz#764a5a11af50561921b133f3b44e618687e0f5c3" + integrity sha1-dkpaEa9QVhkhsTPztE5hhofg9cM= + tinydate@^1.0.0: version "1.3.0" resolved "https://registry.yarnpkg.com/tinydate/-/tinydate-1.3.0.tgz#e6ca8e5a22b51bb4ea1c3a2a4fd1352dbd4c57fb" @@ -6796,6 +7398,11 @@ to-fast-properties@^2.0.0: resolved "https://registry.yarnpkg.com/to-fast-properties/-/to-fast-properties-2.0.0.tgz#dc5e698cbd079265bc73e0377681a4e4e83f616e" integrity sha1-3F5pjL0HkmW8c+A3doGk5Og/YW4= +to-gfm-code-block@^0.1.1: + version "0.1.1" + resolved "https://registry.yarnpkg.com/to-gfm-code-block/-/to-gfm-code-block-0.1.1.tgz#25d045a5fae553189e9637b590900da732d8aa82" + integrity sha1-JdBFpfrlUxielje1kJANpzLYqoI= + to-object-path@^0.3.0: version "0.3.0" resolved "https://registry.yarnpkg.com/to-object-path/-/to-object-path-0.3.0.tgz#297588b7b0e7e0ac08e04e672f85c1f4999e17af" @@ -6934,6 +7541,13 @@ typedarray@^0.0.6: resolved "https://registry.yarnpkg.com/typedarray/-/typedarray-0.0.6.tgz#867ac74e3864187b1d3d47d996a78ec5c8830777" integrity sha1-hnrHTjhkGHsdPUfZlqeOxciDB3c= +typeof-article@^0.1.1: + version "0.1.1" + resolved "https://registry.yarnpkg.com/typeof-article/-/typeof-article-0.1.1.tgz#9f07e733c3fbb646ffa9e61c08debacd460e06af" + integrity sha1-nwfnM8P7tkb/qeYcCN66zUYOBq8= + dependencies: + kind-of "^3.1.0" + uc.micro@^1.0.1, uc.micro@^1.0.5: version "1.0.6" resolved "https://registry.yarnpkg.com/uc.micro/-/uc.micro-1.0.6.tgz#9c411a802a409a91fc6cf74081baba34b24499ac" @@ -6947,6 +7561,11 @@ uglify-js@3.4.x: commander "~2.19.0" source-map "~0.6.1" +uglify-js@^3.1.4: + version "3.13.3" + resolved "https://registry.yarnpkg.com/uglify-js/-/uglify-js-3.13.3.tgz#ce72a1ad154348ea2af61f50933c76cc8802276e" + integrity sha512-otIc7O9LyxpUcQoXzj2hL4LPWKklO6LJWoJUzNa8A17Xgi4fOeDC8FBDOLHnC/Slo1CQgsZMcM6as0M76BZaig== + unicode-canonical-property-names-ecmascript@^1.0.4: version "1.0.4" resolved "https://registry.yarnpkg.com/unicode-canonical-property-names-ecmascript/-/unicode-canonical-property-names-ecmascript-1.0.4.tgz#2619800c4c825800efdd8343af7dd9933cbe2818" @@ -7123,6 +7742,11 @@ walker@^1.0.7, walker@~1.0.5: dependencies: makeerror "1.0.x" +warning-symbol@^0.1.0: + version "0.1.0" + resolved "https://registry.yarnpkg.com/warning-symbol/-/warning-symbol-0.1.0.tgz#bb31dd11b7a0f9d67ab2ed95f457b65825bbad21" + integrity sha1-uzHdEbeg+dZ6su2V9Fe2WCW7rSE= + webidl-conversions@^5.0.0: version "5.0.0" resolved "https://registry.yarnpkg.com/webidl-conversions/-/webidl-conversions-5.0.0.tgz#ae59c8a00b121543a2acc65c0434f57b0fc11aff" @@ -7178,6 +7802,11 @@ word-wrap@~1.2.3: resolved "https://registry.yarnpkg.com/word-wrap/-/word-wrap-1.2.3.tgz#610636f6b1f703891bd34771ccb17fb93b47079c" integrity sha512-Hz/mrNwitNRh/HUAtM/VT/5VH+ygD6DV7mYKZAtHOrbs8U7lvPS6xf7EJKMF0uW1KJCl0H701g3ZGus+muE5vQ== +wordwrap@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/wordwrap/-/wordwrap-1.0.0.tgz#27584810891456a4171c8d0226441ade90cbcaeb" + integrity sha1-J1hIEIkUVqQXHI0CJkQa3pDLyus= + wrap-ansi@^3.0.1: version "3.0.1" resolved "https://registry.yarnpkg.com/wrap-ansi/-/wrap-ansi-3.0.1.tgz#288a04d87eda5c286e060dfe8f135ce8d007f8ba" @@ -7262,6 +7891,11 @@ xtend@~3.0.0: resolved "https://registry.yarnpkg.com/xtend/-/xtend-3.0.0.tgz#5cce7407baf642cba7becda568111c493f59665a" integrity sha1-XM50B7r2Qsunvs2laBEcST9ZZlo= +xtend@~4.0.1: + version "4.0.2" + resolved "https://registry.yarnpkg.com/xtend/-/xtend-4.0.2.tgz#bb72779f5fa465186b1f438f674fa347fdb5db54" + integrity sha512-LKYU1iAXJXUgAXn9URjiu+MWhyUXHsvfp7mcuYm9dSUKK0/CjtrUwFAxD82/mCWbtLsGjFIad0wIsod4zrTAEQ== + y18n@^4.0.0: version "4.0.1" resolved "https://registry.yarnpkg.com/y18n/-/y18n-4.0.1.tgz#8db2b83c31c5d75099bb890b23f3094891e247d4" @@ -7310,6 +7944,11 @@ yauzl@^2.10.0: buffer-crc32 "~0.2.3" fd-slicer "~1.1.0" +year@^0.2.1: + version "0.2.1" + resolved "https://registry.yarnpkg.com/year/-/year-0.2.1.tgz#4083ae520a318b23ec86037f3000cb892bdf9bb0" + integrity sha1-QIOuUgoxiyPshgN/MADLiSvfm7A= + yup@0.29.2: version "0.29.2" resolved "https://registry.yarnpkg.com/yup/-/yup-0.29.2.tgz#5302abd9024cca335b987793f8df868e410b7b67"