diff --git a/lerna.json b/lerna.json index 39e368fc2..8808d0369 100644 --- a/lerna.json +++ b/lerna.json @@ -1,5 +1,5 @@ { - "version": "0.1.23", + "version": "0.1.25", "npmClient": "yarn", "packages": [ "packages/*" diff --git a/package.json b/package.json index d99718ca0..dbbe008b4 100644 --- a/package.json +++ b/package.json @@ -30,7 +30,6 @@ "test:e2e:ci": "lerna run cy:ci" }, "dependencies": { - "@fortawesome/fontawesome": "^1.1.8", - "pouchdb-replication-stream": "^1.2.9" + "@fortawesome/fontawesome": "^1.1.8" } -} +} \ No newline at end of file diff --git a/packages/builder/cypress/integration/createAutomation.spec.js b/packages/builder/cypress/integration/createAutomation.spec.js index ca17e3b7f..26af4fac7 100644 --- a/packages/builder/cypress/integration/createAutomation.spec.js +++ b/packages/builder/cypress/integration/createAutomation.spec.js @@ -50,7 +50,6 @@ context("Create a automation", () => { // Activate Automation cy.get("[data-cy=activate-automation]").click() - cy.contains("Add Record").should("be.visible") cy.get(".stop-button.highlighted").should("be.visible") }) diff --git a/packages/builder/cypress/integration/createTable.spec.js b/packages/builder/cypress/integration/createTable.spec.js index a30ecb5ad..d7ae805b2 100644 --- a/packages/builder/cypress/integration/createTable.spec.js +++ b/packages/builder/cypress/integration/createTable.spec.js @@ -8,7 +8,7 @@ context("Create a Table", () => { cy.createTable("dog") // Check if Table exists - cy.get(".title").should("have.text", "dog") + cy.get(".title span").should("have.text", "dog") }) it("adds a new column to the table", () => { diff --git a/packages/builder/cypress/integration/createView.spec.js b/packages/builder/cypress/integration/createView.spec.js index 95cabc887..8f0c9565c 100644 --- a/packages/builder/cypress/integration/createView.spec.js +++ b/packages/builder/cypress/integration/createView.spec.js @@ -50,13 +50,11 @@ context("Create a View", () => { it("creates a stats calculation view based on age", () => { cy.contains("Calculate").click() + // we may reinstate this - have commented this dropdown for now as there is only one option + //cy.get(".menu-container").find("select").first().select("Statistics") cy.get(".menu-container") .find("select") - .first() - .select("Statistics") - cy.get(".menu-container") - .find("select") - .eq(1) + .eq(0) .select("age") cy.contains("Save").click() cy.get("thead th div").should($headers => { diff --git a/packages/builder/cypress/support/commands.js b/packages/builder/cypress/support/commands.js index 302a39a36..05b30da98 100644 --- a/packages/builder/cypress/support/commands.js +++ b/packages/builder/cypress/support/commands.js @@ -68,6 +68,7 @@ Cypress.Commands.add("createTable", tableName => { cy.contains("Create New Table").click() cy.get(".menu-container") .get("input") + .first() .type(tableName) cy.contains("Save").click() diff --git a/packages/builder/package.json b/packages/builder/package.json index 0ad83945b..74bff1b6a 100644 --- a/packages/builder/package.json +++ b/packages/builder/package.json @@ -1,6 +1,6 @@ { "name": "@budibase/builder", - "version": "0.1.23", + "version": "0.1.25", "license": "AGPL-3.0", "private": true, "scripts": { @@ -63,8 +63,8 @@ } }, "dependencies": { - "@budibase/bbui": "^1.39.0", - "@budibase/client": "^0.1.23", + "@budibase/bbui": "^1.40.1", + "@budibase/client": "^0.1.25", "@budibase/colorpicker": "^1.0.1", "@fortawesome/fontawesome-free": "^5.14.0", "@sentry/browser": "5.19.1", diff --git a/packages/builder/src/builderStore/fetchBindableProperties.js b/packages/builder/src/builderStore/fetchBindableProperties.js index 65cc861c5..c71c498a3 100644 --- a/packages/builder/src/builderStore/fetchBindableProperties.js +++ b/packages/builder/src/builderStore/fetchBindableProperties.js @@ -37,9 +37,9 @@ export default function({ componentInstanceId, screen, components, models }) { .filter(isInstanceInSharedContext(walkResult)) .map(componentInstanceToBindable(walkResult)), - ...walkResult.target._contexts + ...(walkResult.target?._contexts .map(contextToBindables(models, walkResult)) - .flat(), + .flat() ?? []), ] } @@ -73,6 +73,10 @@ const componentInstanceToBindable = walkResult => i => { const contextToBindables = (models, walkResult) => context => { const contextParentPath = getParentPath(walkResult, context) + const isModel = context.model?.isModel || typeof context.model === "string" + const modelId = + typeof context.model === "string" ? context.model : context.model.modelId + const model = models.find(model => model._id === modelId) const newBindable = key => ({ type: "context", @@ -80,15 +84,12 @@ const contextToBindables = (models, walkResult) => context => { // how the binding expression persists, and is used in the app at runtime runtimeBinding: `${contextParentPath}data.${key}`, // how the binding exressions looks to the user of the builder - readableBinding: `${context.instance._instanceName}.${context.model.label}.${key}`, + readableBinding: `${context.instance._instanceName}.${model.name}.${key}`, }) // see ModelViewSelect.svelte for the format of context.model - // ... this allows us to bind to Model scheams, or View schemas - const model = models.find(m => m._id === context.model.modelId) - const schema = context.model.isModel - ? model.schema - : model.views[context.model.name].schema + // ... this allows us to bind to Model schemas, or View schemas + const schema = isModel ? model.schema : model.views[context.model.name].schema return ( Object.keys(schema) diff --git a/packages/builder/src/components/backend/DataTable/ModelDataTable.svelte b/packages/builder/src/components/backend/DataTable/ModelDataTable.svelte index 49659ff8d..63d94aeab 100644 --- a/packages/builder/src/components/backend/DataTable/ModelDataTable.svelte +++ b/packages/builder/src/components/backend/DataTable/ModelDataTable.svelte @@ -8,6 +8,7 @@ import Table from "./Table.svelte" let data = [] + let loading = false $: title = $backendUiStore.selectedModel.name $: schema = $backendUiStore.selectedModel.schema @@ -19,14 +20,16 @@ // Fetch records for specified model $: { if ($backendUiStore.selectedView?.name?.startsWith("all_")) { + loading = true api.fetchDataForView($backendUiStore.selectedView).then(records => { data = records || [] + loading = false }) } } - +
{#if Object.keys(schema).length > 0} diff --git a/packages/builder/src/components/backend/DataTable/RecordFieldControl.svelte b/packages/builder/src/components/backend/DataTable/RecordFieldControl.svelte index 55129b47e..50d13557f 100644 --- a/packages/builder/src/components/backend/DataTable/RecordFieldControl.svelte +++ b/packages/builder/src/components/backend/DataTable/RecordFieldControl.svelte @@ -2,39 +2,33 @@ import { Input, Select, Label, DatePicker, Toggle } from "@budibase/bbui" import Dropzone from "components/common/Dropzone.svelte" import { capitalise } from "../../../helpers" + import LinkedRecordSelector from "components/common/LinkedRecordSelector.svelte" export let meta export let value = meta.type === "boolean" ? false : "" - const type = determineInputType(meta) - const label = capitalise(meta.name) - - function determineInputType(meta) { - if (meta.type === "datetime") return "date" - if (meta.type === "number") return "number" - if (meta.type === "boolean") return "checkbox" - if (meta.type === "attachment") return "file" - if (meta.type === "options") return "select" - return "text" - } + $: type = meta.type + $: label = capitalise(meta.name) -{#if type === 'select'} +{#if type === 'options'} -{:else if type === 'date'} +{:else if type === 'datetime'} -{:else if type === 'file'} +{:else if type === 'attachment'}
-{:else if type === 'checkbox'} +{:else if type === 'boolean'} +{:else if type === 'link'} + {:else} {/if} diff --git a/packages/builder/src/components/backend/DataTable/Table.svelte b/packages/builder/src/components/backend/DataTable/Table.svelte index 2e28577c6..c1e34074e 100644 --- a/packages/builder/src/components/backend/DataTable/Table.svelte +++ b/packages/builder/src/components/backend/DataTable/Table.svelte @@ -1,6 +1,7 @@
@@ -71,8 +78,8 @@ {#if field.type !== 'link'} (field.constraints.presence.allowEmpty = !e.target.checked)} + checked={required} + on:change={onChangeRequired} thin text="Required" /> {/if} diff --git a/packages/builder/src/components/backend/DataTable/popovers/FilterPopover.svelte b/packages/builder/src/components/backend/DataTable/popovers/FilterPopover.svelte index 889fdd072..3d6241f0a 100644 --- a/packages/builder/src/components/backend/DataTable/popovers/FilterPopover.svelte +++ b/packages/builder/src/components/backend/DataTable/popovers/FilterPopover.svelte @@ -1,5 +1,5 @@
@@ -93,7 +120,11 @@ {/each} {/if} - {#each fields as field} @@ -108,12 +139,25 @@ {#if filter.key && isMultipleChoice(filter.key)} + {:else if filter.key && isDate(filter.key)} + + {:else if filter.key && isNumber(filter.key)} + {:else} - + {/if} removeFilter(idx)} /> {/each} diff --git a/packages/builder/src/components/backend/ModelNavigator/TableDataImport.svelte b/packages/builder/src/components/backend/ModelNavigator/TableDataImport.svelte new file mode 100644 index 000000000..388152376 --- /dev/null +++ b/packages/builder/src/components/backend/ModelNavigator/TableDataImport.svelte @@ -0,0 +1,191 @@ + + +
+ + +
+
+ {#if schema} + {#each Object.keys(schema).filter(key => schema[key].type !== 'omit') as columnName} +
+ {columnName} + + + {schema[columnName].success ? 'Success' : 'Failure'} + + omitColumn(columnName)} /> +
+ {/each} + {/if} +
+ + diff --git a/packages/builder/src/components/backend/ModelNavigator/popovers/CreateTablePopover.svelte b/packages/builder/src/components/backend/ModelNavigator/popovers/CreateTablePopover.svelte index eb76abf3d..1468d206e 100644 --- a/packages/builder/src/components/backend/ModelNavigator/popovers/CreateTablePopover.svelte +++ b/packages/builder/src/components/backend/ModelNavigator/popovers/CreateTablePopover.svelte @@ -2,23 +2,30 @@ import { goto } from "@sveltech/routify" import { backendUiStore } from "builderStore" import { notifier } from "builderStore/store/notifications" - import { Popover, Button, Icon, Input, Select } from "@budibase/bbui" + import { Popover, Button, Icon, Input, Select, Label } from "@budibase/bbui" + import Spinner from "components/common/Spinner.svelte" + import TableDataImport from "../TableDataImport.svelte" import analytics from "analytics" let anchor let dropdown let name + let dataImport + let loading async function saveTable() { + loading = true const model = await backendUiStore.actions.models.save({ name, - schema: {}, + schema: dataImport.schema || {}, + dataImport, }) notifier.success(`Table ${name} created successfully.`) $goto(`./model/${model._id}`) + analytics.captureEvent("Table Created", { name }) name = "" dropdown.hide() - analytics.captureEvent("Table Created", { name }) + loading = false } const onClosed = () => { @@ -38,9 +45,21 @@ thin label="Table Name" bind:value={name} /> +
+ + +
- +
diff --git a/packages/builder/src/components/common/LinkedRecordSelector.svelte b/packages/builder/src/components/common/LinkedRecordSelector.svelte index f4df3a7d1..8b20a8e3a 100644 --- a/packages/builder/src/components/common/LinkedRecordSelector.svelte +++ b/packages/builder/src/components/common/LinkedRecordSelector.svelte @@ -2,9 +2,8 @@ import { onMount } from "svelte" import { backendUiStore } from "builderStore" import api from "builderStore/api" - import { Select, Label } from "@budibase/bbui" + import { Select, Label, Multiselect } from "@budibase/bbui" import { capitalise } from "../../helpers" - import MultiSelect from "components/common/MultiSelect.svelte" export let schema export let linkedRecords = [] @@ -19,8 +18,7 @@ async function fetchRecords(linkedModelId) { const FETCH_RECORDS_URL = `/api/${linkedModelId}/records` const response = await api.get(FETCH_RECORDS_URL) - const result = await response.json() - return result + return await response.json() } function getPrettyName(record) { @@ -37,15 +35,14 @@ {:else} {#await promise then records} - + placeholder="Choose some options"> {#each records as record} {/each} - + {/await} {/if} diff --git a/packages/builder/src/components/common/MultiSelect.svelte b/packages/builder/src/components/common/MultiSelect.svelte deleted file mode 100644 index 22cc3f16b..000000000 --- a/packages/builder/src/components/common/MultiSelect.svelte +++ /dev/null @@ -1,278 +0,0 @@ - - -
- {#if label} - - {/if} -
-
-
- {#each Object.values(selected) as option} -
- {option.name} -
remove(option.value)}> - - - -
-
- {/each} - {#if !value || !value.length} {/if} -
-
- - - - {#if optionsVisible} -
showOptions(false)} /> -
    - {#each options as option} -
  • - {option.name} -
  • - {/each} - {#if !options.length} -
  • No results
  • - {/if} -
- {/if} -
-
- - diff --git a/packages/builder/src/components/common/Notification/NotificationDisplay.svelte b/packages/builder/src/components/common/Notification/NotificationDisplay.svelte index b77d8fd8f..ad32f228c 100644 --- a/packages/builder/src/components/common/Notification/NotificationDisplay.svelte +++ b/packages/builder/src/components/common/Notification/NotificationDisplay.svelte @@ -51,6 +51,7 @@ flex-direction: column; justify-content: flex-start; align-items: center; + pointer-events: none; } .toast { diff --git a/packages/builder/src/components/settings/tabs/APIKeys.svelte b/packages/builder/src/components/settings/tabs/APIKeys.svelte index 5b9c4032f..8a3c9fc71 100644 --- a/packages/builder/src/components/settings/tabs/APIKeys.svelte +++ b/packages/builder/src/components/settings/tabs/APIKeys.svelte @@ -1,11 +1,9 @@ @@ -112,44 +118,52 @@ {#if title}

{title}

{/if} - {#each errorMessages as error} -

{error}

- {/each} -
+ {#each fields as field} -
- - {#if schema[field].type === 'string' && schema[field].constraints.inclusion} - - {:else if schema[field].type === 'datetime'} - - {:else if schema[field].type === 'boolean'} - - {:else if schema[field].type === 'number'} - - {:else if schema[field].type === 'string'} - - {:else if schema[field].type === 'attachment'} + {#if schema[field].type === 'options'} + + {:else if schema[field].type === 'datetime'} + + {:else if schema[field].type === 'boolean'} + + {:else if schema[field].type === 'number'} + + {:else if schema[field].type === 'string'} + + {:else if schema[field].type === 'attachment'} +
+ - {/if} -
-
+
+ {:else if schema[field].type === 'link'} + + {/if} {/each} -
- +
+
@@ -162,104 +176,14 @@ } .form-content { - margin-bottom: 20px; + margin-bottom: var(--spacing-xl); + display: grid; + gap: var(--spacing-xl); width: 100%; } - .input { - border-radius: 5px; - border: 1px solid #e6e6e6; - padding: 1rem; - font-size: 16px; - } - - .form-item { - display: flex; - flex-direction: column; - margin-bottom: 16px; - } - - hr { - border: 1px solid var(--grey-1); - margin: 20px 0px; - } - - hr:nth-last-child(2) { - border: 1px solid #fff; - margin: 20px 0px; - } - - .button-block { + .buttons { display: flex; justify-content: flex-end; } - - button { - font-size: 16px; - padding: 0.4em; - box-sizing: border-box; - border-radius: 4px; - color: white; - background-color: #393c44; - outline: none; - width: 300px; - height: 40px; - cursor: pointer; - transition: all 0.2s ease 0s; - overflow: hidden; - outline: none; - user-select: none; - white-space: nowrap; - text-align: center; - } - - button.saved { - background-color: #84c991; - border: none; - } - - button:hover { - box-shadow: 0 10px 15px -3px rgba(0, 0, 0, 0.1), - 0 4px 6px -2px rgba(0, 0, 0, 0.05); - } - - input[type="checkbox"] { - width: 32px; - height: 32px; - padding: 0; - margin: 0; - vertical-align: bottom; - position: relative; - top: -1px; - *overflow: hidden; - } - - select::-ms-expand { - display: none; - } - select { - display: inline-block; - cursor: pointer; - align-items: baseline; - box-sizing: border-box; - padding: 1em 1em; - border: 1px solid #eaeaea; - border-radius: 5px; - font: inherit; - line-height: inherit; - -webkit-appearance: none; - -moz-appearance: none; - -ms-appearance: none; - appearance: none; - background-repeat: no-repeat; - background-image: linear-gradient(45deg, transparent 50%, currentColor 50%), - linear-gradient(135deg, currentColor 50%, transparent 50%); - background-position: right 17px top 1.5em, right 10px top 1.5em; - background-size: 7px 7px, 7px 7px; - } - - .error { - color: red; - font-weight: 500; - } diff --git a/packages/standard-components/src/DataTable.svelte b/packages/standard-components/src/DataTable.svelte index fe967338f..5b950fec4 100644 --- a/packages/standard-components/src/DataTable.svelte +++ b/packages/standard-components/src/DataTable.svelte @@ -1,6 +1,6 @@ + +{#if hasErrors} +
+ {#each errors as error} +
{error.dataPath} {error.message}
+ {/each} +
+{/if} + + diff --git a/packages/standard-components/src/LinkedRecordSelector.svelte b/packages/standard-components/src/LinkedRecordSelector.svelte new file mode 100644 index 000000000..4ea84223f --- /dev/null +++ b/packages/standard-components/src/LinkedRecordSelector.svelte @@ -0,0 +1,65 @@ + + +{#if linkedModel != null} + {#if linkedModel.primaryDisplay == null} + {#if showLabel} + + {/if} + + {:else} + {#await recordsPromise then records} + + {#each records as record} + + {/each} + + {/await} + {/if} +{/if} diff --git a/packages/standard-components/src/RecordDetail.svelte b/packages/standard-components/src/RecordDetail.svelte index 95723782b..aa9d39c0c 100644 --- a/packages/standard-components/src/RecordDetail.svelte +++ b/packages/standard-components/src/RecordDetail.svelte @@ -8,6 +8,12 @@ let store = _bb.store let target + async function fetchModel(id) { + const FETCH_MODEL_URL = `/api/models/${id}` + const response = await _bb.api.get(FETCH_MODEL_URL) + return await response.json() + } + async function fetchFirstRecord() { const FETCH_RECORDS_URL = `/api/views/all_${model}` const response = await _bb.api.get(FETCH_RECORDS_URL) @@ -34,6 +40,14 @@ } if (record) { + // Fetch model schema so we can check for linked records + const model = await fetchModel(record.modelId) + for (let key of Object.keys(model.schema)) { + if (model.schema[key].type === "link") { + record[key] = Array.isArray(record[key]) ? record[key].length : 0 + } + } + _bb.attachChildren(target, { hydrate: false, context: record, diff --git a/packages/standard-components/src/attachments/AttachmentList.svelte b/packages/standard-components/src/attachments/AttachmentList.svelte index 950c1e43b..77a7fd813 100644 --- a/packages/standard-components/src/attachments/AttachmentList.svelte +++ b/packages/standard-components/src/attachments/AttachmentList.svelte @@ -1,7 +1,7 @@ diff --git a/packages/standard-components/src/fetchData.js b/packages/standard-components/src/fetchData.js index 7a1c4b5f7..a0c50c233 100644 --- a/packages/standard-components/src/fetchData.js +++ b/packages/standard-components/src/fetchData.js @@ -4,7 +4,28 @@ export default async function fetchData(datasource) { const { isModel, name } = datasource if (name) { - return isModel ? await fetchModelData() : await fetchViewData() + const records = isModel ? await fetchModelData() : await fetchViewData() + + // Fetch model schema so we can check for linked records + if (records && records.length) { + const model = await fetchModel(records[0].modelId) + const keys = Object.keys(model.schema) + records.forEach(record => { + for (let key of keys) { + if (model.schema[key].type === "link") { + record[key] = Array.isArray(record[key]) ? record[key].length : 0 + } + } + }) + } + + return records + } + + async function fetchModel(id) { + const FETCH_MODEL_URL = `/api/models/${id}` + const response = await api.get(FETCH_MODEL_URL) + return await response.json() } async function fetchModelData() { diff --git a/packages/standard-components/src/helpers.js b/packages/standard-components/src/helpers.js new file mode 100644 index 000000000..2989f4d39 --- /dev/null +++ b/packages/standard-components/src/helpers.js @@ -0,0 +1 @@ +export const capitalise = s => s.substring(0, 1).toUpperCase() + s.substring(1) diff --git a/readme.md b/readme.md index fe2eeeaad..ec3c39bd5 100644 --- a/readme.md +++ b/readme.md @@ -1,3 +1,9 @@ +# Budibase is in Beta + +Budibase is currently beta software. Until our official launch, we cannot ensure backwards compatibility for your budibase applications between versions. Issues may arise when trying to edit apps created with old versions of the budibase builder. + +If you are having issues between updates of the builder, please use the guide [here](https://github.com/Budibase/budibase/blob/master/CONTRIBUTING.md#troubleshooting) to clear down your environment. + # What is Budibase? diff --git a/yarn.lock b/yarn.lock index 2022a94d1..8c37dc6f0 100644 --- a/yarn.lock +++ b/yarn.lock @@ -913,11 +913,6 @@ argparse@^1.0.7: dependencies: sprintf-js "~1.0.2" -argsarray@0.0.1: - version "0.0.1" - resolved "https://registry.yarnpkg.com/argsarray/-/argsarray-0.0.1.tgz#6e7207b4ecdb39b0af88303fa5ae22bda8df61cb" - integrity sha1-bnIHtOzbObCviDA/pa4ivajfYcs= - arr-diff@^4.0.0: version "4.0.0" resolved "https://registry.yarnpkg.com/arr-diff/-/arr-diff-4.0.0.tgz#d6461074febfec71e7e15235761a329a5dc7c520" @@ -2336,11 +2331,6 @@ ignore@^4.0.6: version "4.0.6" resolved "https://registry.yarnpkg.com/ignore/-/ignore-4.0.6.tgz#750e3db5862087b4737ebac8207ffd1ef27b25fc" -immediate@~3.0.5: - version "3.0.6" - resolved "https://registry.yarnpkg.com/immediate/-/immediate-3.0.6.tgz#9db1dbd0faf8de6fbe0f5dd5e56bb606280de69b" - integrity sha1-nbHb0Pr43m++D13V5Wu2BigN5ps= - import-fresh@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/import-fresh/-/import-fresh-2.0.0.tgz#d81355c15612d386c61f9ddd3922d4304822a546" @@ -2387,7 +2377,7 @@ inflight@^1.0.4: once "^1.3.0" wrappy "1" -inherits@2, inherits@^2.0.1, inherits@^2.0.3, inherits@~2.0.1, inherits@~2.0.3: +inherits@2, inherits@^2.0.1, inherits@^2.0.3, inherits@~2.0.3: version "2.0.4" resolved "https://registry.yarnpkg.com/inherits/-/inherits-2.0.4.tgz#0fa2c64f932917c3433a0ded55363aae37416b7c" @@ -2638,11 +2628,6 @@ is-windows@^1.0.2: version "1.0.2" resolved "https://registry.yarnpkg.com/is-windows/-/is-windows-1.0.2.tgz#d1850eb9791ecd18e6182ce12a30f396634bb19d" -isarray@0.0.1: - version "0.0.1" - resolved "https://registry.yarnpkg.com/isarray/-/isarray-0.0.1.tgz#8a18acfca9a8f4177e09abfc6038939b05d1eedf" - integrity sha1-ihis/Kmo9Bd+Cav8YDiTmwXR7t8= - isarray@1.0.0, isarray@~1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/isarray/-/isarray-1.0.0.tgz#bb935d48582cba168c06834957a54a3e07124f11" @@ -2805,13 +2790,6 @@ libnpmpublish@^1.1.1: semver "^5.5.1" ssri "^6.0.1" -lie@3.1.1: - version "3.1.1" - resolved "https://registry.yarnpkg.com/lie/-/lie-3.1.1.tgz#9a436b2cc7746ca59de7a41fa469b3efb76bd87e" - integrity sha1-mkNrLMd0bKWd56QfpGmz77dr2H4= - dependencies: - immediate "~3.0.5" - load-json-file@^1.0.0: version "1.1.0" resolved "https://registry.yarnpkg.com/load-json-file/-/load-json-file-1.1.0.tgz#956905708d58b4bab4c2261b04f59f31c99374c0" @@ -2861,11 +2839,6 @@ lodash.ismatch@^4.4.0: version "4.4.0" resolved "https://registry.yarnpkg.com/lodash.ismatch/-/lodash.ismatch-4.4.0.tgz#756cb5150ca3ba6f11085a78849645f188f85f37" -lodash.pick@^4.0.0: - version "4.4.0" - resolved "https://registry.yarnpkg.com/lodash.pick/-/lodash.pick-4.4.0.tgz#52f05610fff9ded422611441ed1fc123a03001b3" - integrity sha1-UvBWEP/53tQiYRRB7R/BI6AwAbM= - lodash.set@^4.3.2: version "4.3.2" resolved "https://registry.yarnpkg.com/lodash.set/-/lodash.set-4.3.2.tgz#d8757b1da807dde24816b0d6a84bea1a76230b23" @@ -3204,16 +3177,6 @@ natural-compare@^1.4.0: version "1.4.0" resolved "https://registry.yarnpkg.com/natural-compare/-/natural-compare-1.4.0.tgz#4abebfeed7541f2c27acfb29bdbbd15c8d5ba4f7" -ndjson@^1.4.3: - version "1.5.0" - resolved "https://registry.yarnpkg.com/ndjson/-/ndjson-1.5.0.tgz#ae603b36b134bcec347b452422b0bf98d5832ec8" - integrity sha1-rmA7NrE0vOw0e0UkIrC/mNWDLsg= - dependencies: - json-stringify-safe "^5.0.1" - minimist "^1.2.0" - split2 "^2.1.0" - through2 "^2.0.3" - neo-async@^2.6.0: version "2.6.1" resolved "https://registry.yarnpkg.com/neo-async/-/neo-async-2.6.1.tgz#ac27ada66167fa8849a6addd837f6b189ad2081c" @@ -3717,34 +3680,6 @@ posix-character-classes@^0.1.0: version "0.1.1" resolved "https://registry.yarnpkg.com/posix-character-classes/-/posix-character-classes-0.1.1.tgz#01eac0fe3b5af71a2a6c02feabb8c1fef7e00eab" -pouch-stream@^0.4.0: - version "0.4.1" - resolved "https://registry.yarnpkg.com/pouch-stream/-/pouch-stream-0.4.1.tgz#0c6d8475c9307677627991a2f079b301c3b89bdd" - integrity sha1-DG2EdckwdndieZGi8HmzAcO4m90= - dependencies: - inherits "^2.0.1" - readable-stream "^1.0.27-1" - -pouchdb-promise@^6.0.4: - version "6.4.3" - resolved "https://registry.yarnpkg.com/pouchdb-promise/-/pouchdb-promise-6.4.3.tgz#74516f4acf74957b54debd0fb2c0e5b5a68ca7b3" - integrity sha512-ruJaSFXwzsxRHQfwNHjQfsj58LBOY1RzGzde4PM5CWINZwFjCQAhZwfMrch2o/0oZT6d+Xtt0HTWhq35p3b0qw== - dependencies: - lie "3.1.1" - -pouchdb-replication-stream@^1.2.9: - version "1.2.9" - resolved "https://registry.yarnpkg.com/pouchdb-replication-stream/-/pouchdb-replication-stream-1.2.9.tgz#aa4fa5d8f52df4825392f18e07c7e11acffc650a" - integrity sha1-qk+l2PUt9IJTkvGOB8fhGs/8ZQo= - dependencies: - argsarray "0.0.1" - inherits "^2.0.3" - lodash.pick "^4.0.0" - ndjson "^1.4.3" - pouch-stream "^0.4.0" - pouchdb-promise "^6.0.4" - through2 "^2.0.0" - prelude-ls@~1.1.2: version "1.1.2" resolved "https://registry.yarnpkg.com/prelude-ls/-/prelude-ls-1.1.2.tgz#21932a549f5e52ffd9a827f570e04be62a97da54" @@ -3927,16 +3862,6 @@ read@1, read@~1.0.1: string_decoder "^1.1.1" util-deprecate "^1.0.1" -readable-stream@^1.0.27-1: - version "1.1.14" - resolved "https://registry.yarnpkg.com/readable-stream/-/readable-stream-1.1.14.tgz#7cf4c54ef648e3813084c636dd2079e166c081d9" - integrity sha1-fPTFTvZI44EwhMY23SB54WbAgdk= - dependencies: - core-util-is "~1.0.0" - inherits "~2.0.1" - isarray "0.0.1" - string_decoder "~0.10.x" - readdir-scoped-modules@^1.0.0: version "1.1.0" resolved "https://registry.yarnpkg.com/readdir-scoped-modules/-/readdir-scoped-modules-1.1.0.tgz#8d45407b4f870a0dcaebc0e28670d18e74514309" @@ -4291,7 +4216,7 @@ split-string@^3.0.1, split-string@^3.0.2: dependencies: extend-shallow "^3.0.0" -split2@^2.0.0, split2@^2.1.0: +split2@^2.0.0: version "2.2.0" resolved "https://registry.yarnpkg.com/split2/-/split2-2.2.0.tgz#186b2575bcf83e85b7d18465756238ee4ee42493" dependencies: @@ -4396,11 +4321,6 @@ string_decoder@^1.1.1: dependencies: safe-buffer "~5.2.0" -string_decoder@~0.10.x: - version "0.10.31" - resolved "https://registry.yarnpkg.com/string_decoder/-/string_decoder-0.10.31.tgz#62e203bc41766c6c28c9fc84301dab1c5310fa94" - integrity sha1-YuIDvEF2bGwoyfyEMB2rHFMQ+pQ= - string_decoder@~1.1.1: version "1.1.1" resolved "https://registry.yarnpkg.com/string_decoder/-/string_decoder-1.1.1.tgz#9cf1611ba62685d7030ae9e4ba34149c3af03fc8" @@ -4521,7 +4441,7 @@ text-table@^0.2.0: version "0.2.0" resolved "https://registry.yarnpkg.com/text-table/-/text-table-0.2.0.tgz#7f5ee823ae805207c00af2df4a84ec3fcfa570b4" -through2@^2.0.0, through2@^2.0.2, through2@^2.0.3: +through2@^2.0.0, through2@^2.0.2: version "2.0.5" resolved "https://registry.yarnpkg.com/through2/-/through2-2.0.5.tgz#01c1e39eb31d07cb7d03a96a70823260b23132cd" dependencies: