From b52a2efef01ab0e463673760cfa4b1395b3438f9 Mon Sep 17 00:00:00 2001 From: Martin McKeaveney <martin@shogunsystems.co.uk> Date: Tue, 26 Jan 2021 11:07:30 +0000 Subject: [PATCH 01/26] MySQL integration and self hosted deploy event --- .../DatasourceNavigator/icons/MySQL.svelte | 83 +++++++++++++++++++ .../DatasourceNavigator/icons/index.js | 2 + .../start/BuilderSettingsModal.svelte | 5 +- .../builder/src/constants/backend/index.js | 5 ++ .../pages/[application]/deploy/index.svelte | 6 +- packages/server/package.json | 3 +- packages/server/src/integrations/index.js | 4 +- packages/server/src/integrations/mysql.js | 80 ++++++++++++++++++ packages/server/yarn.lock | 42 +++++++--- 9 files changed, 214 insertions(+), 16 deletions(-) create mode 100644 packages/builder/src/components/backend/DatasourceNavigator/icons/MySQL.svelte create mode 100644 packages/server/src/integrations/mysql.js diff --git a/packages/builder/src/components/backend/DatasourceNavigator/icons/MySQL.svelte b/packages/builder/src/components/backend/DatasourceNavigator/icons/MySQL.svelte new file mode 100644 index 0000000000..d2e612e7e3 --- /dev/null +++ b/packages/builder/src/components/backend/DatasourceNavigator/icons/MySQL.svelte @@ -0,0 +1,83 @@ +<script> + export let width = "100" + export let height = "100" +</script> + +<svg + {width} + {height} + viewBox="0 0 147 147" + fill="none" + xmlns="http://www.w3.org/2000/svg"> + <path + d="M128.244 27.5625H83.3444L74.1569 + 45.9375H22.9688V124.031H137.812V27.5625H128.244ZM128.625 + 45.9375H92.7478L97.5621 36.75H128.625V45.9375Z" + fill="#2A4B59" /> + <path + fill-rule="evenodd" + clip-rule="evenodd" + d="M73.5827 67.597C72.6671 67.5874 71.7543 67.6986 70.8678 + 67.9278V68.061H70.9964C71.6302 69.0199 72.3383 69.9277 73.1141 + 70.7759C73.647 71.837 74.111 72.889 74.6393 73.9502L74.7679 73.8169C75.2581 + 73.4258 75.6415 72.917 75.8825 72.3379C76.1234 71.7589 76.2141 71.1283 + 76.146 70.5048C75.8564 70.0602 75.5911 69.6001 75.3513 69.1267C74.9562 + 68.4652 74.0926 68.1345 73.5597 67.6062" + fill="white" /> + <path + fill-rule="evenodd" + clip-rule="evenodd" + d="M139.319 125.345C134.95 125.032 130.564 125.658 126.457 127.183C125.464 + 127.578 123.875 127.578 123.742 128.836C124.275 129.365 124.339 130.214 + 124.808 130.959C125.714 132.492 126.878 133.858 128.248 134.997C129.626 + 136.058 131.028 137.11 132.488 138.038C135.07 139.632 138.001 140.555 + 140.495 142.144C141.956 143.063 143.408 144.262 144.873 145.259C145.599 + 145.787 146.058 146.637 146.986 146.977V146.775C146.712 146.039 146.374 + 145.329 145.976 144.653C145.314 143.996 144.653 143.394 143.986 + 142.737C142.043 140.171 139.72 137.917 137.096 136.053C134.974 134.592 + 130.338 132.608 129.479 130.164L129.346 130.031C130.906 129.811 132.443 + 129.454 133.94 128.965C136.186 128.372 138.24 128.506 140.56 127.913C141.621 + 127.647 143.541 126.994 143.541 126.994V125.961C142.356 124.785 141.51 + 123.204 140.266 122.097C136.876 119.139 133.264 116.447 129.461 + 114.045C127.426 112.735 124.808 111.885 122.649 110.769C121.868 110.374 + 120.558 110.181 120.099 109.524C119.022 107.943 118.121 106.248 117.412 + 104.471C115.475 100.744 113.684 96.944 112.042 93.0786C111.076 90.527 + 109.961 88.0344 108.702 85.6138C102.629 75.3049 93.8692 66.8402 83.3582 + 61.1245C80.7056 59.8389 77.8847 58.9342 74.9792 58.4372C73.3392 58.3683 + 71.7038 58.2396 70.0685 58.1753C69.0107 57.4823 68.0036 56.7147 67.055 + 55.8784C63.3202 53.5218 53.7009 48.4136 50.9493 55.1572C49.1807 59.4156 + 53.5677 63.6051 55.0836 65.7688C56.3514 67.2941 57.4683 68.9387 58.4187 + 70.6795C58.8781 71.7912 59.0067 72.9764 59.4707 74.1524C60.4281 77.1443 + 61.5648 80.0758 62.8746 82.931C63.5769 84.3429 64.3863 85.699 65.2956 + 86.9873C65.8238 87.7131 66.738 88.0347 66.9355 89.2199C66.2106 90.78 65.7036 + 92.4324 65.4288 94.1306C64.2846 97.7426 63.8637 101.545 64.19 105.32C64.5163 + 109.094 65.5835 112.768 67.3306 116.13C68.378 117.765 70.8678 121.372 + 74.2212 119.993C77.1658 118.817 76.5181 115.083 77.3633 111.812C77.5609 + 111.022 77.4276 110.503 77.8227 109.974V110.618C77.8227 110.618 79.4948 + 114.293 80.3217 116.171C82.5698 119.591 85.3631 122.618 88.5905 + 125.134C89.8767 126.245 90.9145 127.614 91.6361 + 129.153V130.339H93.1153C93.0837 129.805 92.9362 129.285 92.6832 + 128.815C92.4301 128.344 92.0775 127.935 91.6499 127.614C90.4391 126.367 + 89.33 125.024 88.3332 123.6C85.6231 119.742 83.234 115.669 81.1899 + 111.421C80.1655 109.34 79.2743 107.071 78.4337 104.99C78.0524 104.191 + 78.0524 102.983 77.4139 102.583C76.2312 103.981 75.2053 105.505 74.3544 + 107.126C73.3203 110.403 72.7195 113.8 72.5675 117.233C72.3148 117.301 + 72.4388 117.233 72.3148 117.366C70.2752 116.833 69.5586 114.61 68.8052 + 112.772C66.8219 107.009 66.6218 100.781 68.231 94.9023C68.6903 93.5242 + 70.5967 89.0821 69.825 87.7453C69.4391 86.4682 68.1666 85.7378 67.4638 + 84.7318C66.5711 83.3765 65.8024 81.9436 65.1669 80.4504C63.6372 76.7065 + 62.8701 72.5538 61.2117 68.8098C60.2956 67.0053 59.2292 65.2811 58.0236 + 63.6557C56.6915 62.031 55.5163 60.2837 54.514 58.4372C54.2707 58.0251 + 54.1215 57.5643 54.077 57.0878C54.0326 56.6113 54.0939 56.1309 54.2568 + 55.6809C54.2928 55.4547 54.4023 55.2467 54.5684 55.0889C54.7344 54.9312 + 54.9478 54.8325 55.1755 54.8081C56.0024 54.0731 58.3636 55.0056 59.1905 + 55.4099C61.4133 56.2841 63.5306 57.4059 65.5023 58.7541C66.421 59.4248 + 68.4974 61.1245 68.4974 61.1245H69.1176C71.2353 61.5839 73.624 61.2531 + 75.6085 61.8503C78.9646 62.967 82.1671 64.5011 85.1406 66.4165C93.9149 + 72.002 101.049 79.8174 105.812 89.0637C106.607 90.5842 106.942 91.9761 + 107.65 93.561C109.028 96.8133 110.764 100.125 112.152 103.3C113.372 106.43 + 114.951 109.408 116.856 112.175C117.848 113.553 121.822 114.293 123.609 + 115.023C125.17 115.557 126.703 116.17 128.202 116.86C130.453 118.239 132.7 + 119.842 134.822 121.367C135.879 122.162 139.191 123.815 139.388 125.143" + fill="#F3FDFF" /> +</svg> diff --git a/packages/builder/src/components/backend/DatasourceNavigator/icons/index.js b/packages/builder/src/components/backend/DatasourceNavigator/icons/index.js index afedb9e78f..4f8d79dbf4 100644 --- a/packages/builder/src/components/backend/DatasourceNavigator/icons/index.js +++ b/packages/builder/src/components/backend/DatasourceNavigator/icons/index.js @@ -6,6 +6,7 @@ import CouchDB from "./CouchDB.svelte" import S3 from "./S3.svelte" import Airtable from "./Airtable.svelte" import SqlServer from "./SQLServer.svelte" +import MySQL from "./MySQL.svelte" export default { POSTGRES: Postgres, @@ -16,4 +17,5 @@ export default { SQL_SERVER: SqlServer, S3: S3, AIRTABLE: Airtable, + MYSQL: MySQL, } diff --git a/packages/builder/src/components/start/BuilderSettingsModal.svelte b/packages/builder/src/components/start/BuilderSettingsModal.svelte index 57cdef0c29..6be420b5f9 100644 --- a/packages/builder/src/components/start/BuilderSettingsModal.svelte +++ b/packages/builder/src/components/start/BuilderSettingsModal.svelte @@ -1,6 +1,7 @@ <script> import { notifier } from "builderStore/store/notifications" import { hostingStore } from "builderStore" + import { HostingTypes } from "constants/backend" import { Input, ModalContent, Toggle } from "@budibase/bbui" import ThemeEditor from "components/settings/ThemeEditor.svelte" import analytics from "analytics" @@ -10,7 +11,7 @@ let selfhosted = false async function save() { - hostingInfo.type = selfhosted ? "self" : "cloud" + hostingInfo.type = selfhosted ? HostingTypes.SELF : HostingTypes.CLOUD if (!selfhosted && hostingInfo._rev) { hostingInfo = { type: hostingInfo.type, @@ -27,7 +28,7 @@ } function updateSelfHosting(event) { - if (hostingInfo.type === "cloud" && event.target.checked) { + if (hostingInfo.type === HostingTypes.CLOUD && event.target.checked) { hostingInfo.hostingUrl = "localhost:10000" hostingInfo.useHttps = false hostingInfo.selfHostKey = "budibase" diff --git a/packages/builder/src/constants/backend/index.js b/packages/builder/src/constants/backend/index.js index bcbce153fe..80eaf613f8 100644 --- a/packages/builder/src/constants/backend/index.js +++ b/packages/builder/src/constants/backend/index.js @@ -87,3 +87,8 @@ export const FILE_TYPES = { CODE: ["js", "rs", "py", "java", "rb", "hs", "yml"], DOCUMENT: ["odf", "docx", "doc", "pdf", "csv"], } + +export const HostingTypes = { + CLOUD: "cloud", + SELF: "self", +} diff --git a/packages/builder/src/pages/[application]/deploy/index.svelte b/packages/builder/src/pages/[application]/deploy/index.svelte index 462601ff48..47ae735af4 100644 --- a/packages/builder/src/pages/[application]/deploy/index.svelte +++ b/packages/builder/src/pages/[application]/deploy/index.svelte @@ -1,7 +1,7 @@ <script> import { onMount } from "svelte" import { Button, Spacer, Modal } from "@budibase/bbui" - import { store } from "builderStore" + import { store, hostingStore } from "builderStore" import { notifier } from "builderStore/store/notifications" import api from "builderStore/api" import Spinner from "components/common/Spinner.svelte" @@ -16,6 +16,8 @@ $: appId = $store.appId + $: console.log($hostingStore) + async function deployApp() { const DEPLOY_URL = `/api/deploy` @@ -29,6 +31,7 @@ analytics.captureEvent("Deployed App", { appId, + hostingType: $hostingStore.hostingInfo?.type, }) if (analytics.requestFeedbackOnDeploy()) { @@ -37,6 +40,7 @@ } catch (err) { analytics.captureEvent("Deploy App Failed", { appId, + hostingType: $hostingStore.hostingInfo?.type, }) analytics.captureException(err) notifier.danger("Deployment unsuccessful. Please try again later.") diff --git a/packages/server/package.json b/packages/server/package.json index 1b9973f12b..feefffb827 100644 --- a/packages/server/package.json +++ b/packages/server/package.json @@ -49,9 +49,9 @@ "author": "Budibase", "license": "AGPL-3.0-or-later", "dependencies": { - "@elastic/elasticsearch": "^7.10.0", "@budibase/client": "^0.5.3", "@budibase/string-templates": "^0.5.3", + "@elastic/elasticsearch": "^7.10.0", "@koa/router": "^8.0.0", "@sendgrid/mail": "^7.1.1", "@sentry/node": "^5.19.2", @@ -82,6 +82,7 @@ "lodash": "^4.17.13", "mongodb": "^3.6.3", "mssql": "^6.2.3", + "mysql": "^2.18.1", "node-fetch": "^2.6.0", "open": "^7.3.0", "pg": "^8.5.1", diff --git a/packages/server/src/integrations/index.js b/packages/server/src/integrations/index.js index c23b8e8e83..acb81992a9 100644 --- a/packages/server/src/integrations/index.js +++ b/packages/server/src/integrations/index.js @@ -3,10 +3,10 @@ const dynamodb = require("./dynamodb") const mongodb = require("./mongodb") const elasticsearch = require("./elasticsearch") const couchdb = require("./couchdb") -// const redis = require("./redis") const sqlServer = require("./microsoftSqlServer") const s3 = require("./s3") const airtable = require("./airtable") +const mysql = require("./mysql") const DEFINITIONS = { POSTGRES: postgres.schema, @@ -17,6 +17,7 @@ const DEFINITIONS = { SQL_SERVER: sqlServer.schema, S3: s3.schema, AIRTABLE: airtable.schema, + MYSQL: mysql.schema, } const INTEGRATIONS = { @@ -28,6 +29,7 @@ const INTEGRATIONS = { S3: s3.integration, SQL_SERVER: sqlServer.integration, AIRTABLE: airtable.integration, + MYSQL: mysql.integration, } module.exports = { diff --git a/packages/server/src/integrations/mysql.js b/packages/server/src/integrations/mysql.js new file mode 100644 index 0000000000..f5ea1caaca --- /dev/null +++ b/packages/server/src/integrations/mysql.js @@ -0,0 +1,80 @@ +const mysql = require("mysql") + +const SCHEMA = { + docs: "https://github.com/mysqljs/mysql", + datasource: { + host: { + type: "string", + default: "localhost", + required: true, + }, + user: { + type: "string", + default: "root", + required: true, + }, + password: { + type: "password", + default: "root", + required: true, + }, + database: { + type: "string", + required: true, + }, + }, + query: { + create: { + type: "sql", + }, + read: { + type: "sql", + }, + update: { + type: "sql", + }, + delete: { + type: "sql", + }, + }, +} + +class MySQLIntegration { + constructor(config) { + this.config = config + this.client = mysql.createConnection(config) + } + + query(query) { + // Node MySQL is callback based, so we must wrap our call in a promise + return new Promise((resolve, reject) => { + this.client.connect() + return this.client.query(query.sql, (error, results) => { + if (error) return reject(error) + resolve(results) + this.client.end() + }) + }) + } + + create(query) { + return this.query(query) + } + + read(query) { + return this.query(query) + } + + update(query) { + return this.query(query) + } + + delete(query) { + return this.query(query) + } +} + +module.exports = { + schema: SCHEMA, + integration: MySQLIntegration, +} diff --git a/packages/server/yarn.lock b/packages/server/yarn.lock index 2bacb8b6cf..73c7a03e81 100644 --- a/packages/server/yarn.lock +++ b/packages/server/yarn.lock @@ -1788,6 +1788,11 @@ bcryptjs@^2.4.3: resolved "https://registry.yarnpkg.com/bcryptjs/-/bcryptjs-2.4.3.tgz#9ab5627b93e60621ff7cdac5da9733027df1d0cb" integrity sha1-mrVie5PmBiH/fNrF2pczAn3x0Ms= +bignumber.js@9.0.0: + version "9.0.0" + resolved "https://registry.yarnpkg.com/bignumber.js/-/bignumber.js-9.0.0.tgz#805880f84a329b5eac6e7cb6f8274b6d82bdf075" + integrity sha512-t/OYhhJ2SD+YGBQcjY8GzzDHEk9f3nerxjtfa6tlMXfe7frs/WozhvCNoGvpM0P3bNf3Gq5ZRMlGr5f3r4/N8A== + binary-extensions@^2.0.0: version "2.1.0" resolved "https://registry.yarnpkg.com/binary-extensions/-/binary-extensions-2.1.0.tgz#30fa40c9e7fe07dbc895678cd287024dea241dd9" @@ -6249,6 +6254,16 @@ mute-stream@0.0.8: resolved "https://registry.yarnpkg.com/mute-stream/-/mute-stream-0.0.8.tgz#1630c42b2251ff81e2a283de96a5497ea92e5e0d" integrity sha512-nnbWWOkoWyUsTjKrhgD0dcz22mdkSnpYqbEjIm2nhwhuxlSkpywJmBo8h0ZqJdkp73mb90SssHkN4rsRaBAfAA== +mysql@^2.18.1: + version "2.18.1" + resolved "https://registry.yarnpkg.com/mysql/-/mysql-2.18.1.tgz#2254143855c5a8c73825e4522baf2ea021766717" + integrity sha512-Bca+gk2YWmqp2Uf6k5NFEurwY/0td0cpebAucFpY/3jhrwrVGuxU2uQFCHjU19SJfje0yQvi+rVWdq78hR5lig== + dependencies: + bignumber.js "9.0.0" + readable-stream "2.3.7" + safe-buffer "5.1.2" + sqlstring "2.3.1" + nan@^2.12.1: version "2.14.1" resolved "https://registry.yarnpkg.com/nan/-/nan-2.14.1.tgz#d7be34dfa3105b91494c3147089315eff8874b01" @@ -7363,17 +7378,7 @@ readable-stream@1.1.14, readable-stream@^1.0.27-1: string_decoder "^1.1.1" util-deprecate "^1.0.1" -"readable-stream@>=1.0.33-1 <1.1.0-0": - version "1.0.34" - resolved "https://registry.yarnpkg.com/readable-stream/-/readable-stream-1.0.34.tgz#125820e34bc842d2f2aaafafe4c2916ee32c157c" - integrity sha1-Elgg40vIQtLyqq+v5MKRbuMsFXw= - dependencies: - core-util-is "~1.0.0" - inherits "~2.0.1" - isarray "0.0.1" - string_decoder "~0.10.x" - -readable-stream@^2.0.0, readable-stream@^2.2.2, readable-stream@^2.3.0, readable-stream@^2.3.5, readable-stream@~2.3.6: +readable-stream@2.3.7, readable-stream@^2.0.0, readable-stream@^2.2.2, readable-stream@^2.3.0, readable-stream@^2.3.5, 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== @@ -7386,6 +7391,16 @@ readable-stream@^2.0.0, readable-stream@^2.2.2, readable-stream@^2.3.0, readable string_decoder "~1.1.1" util-deprecate "~1.0.1" +"readable-stream@>=1.0.33-1 <1.1.0-0": + version "1.0.34" + resolved "https://registry.yarnpkg.com/readable-stream/-/readable-stream-1.0.34.tgz#125820e34bc842d2f2aaafafe4c2916ee32c157c" + integrity sha1-Elgg40vIQtLyqq+v5MKRbuMsFXw= + dependencies: + core-util-is "~1.0.0" + inherits "~2.0.1" + isarray "0.0.1" + string_decoder "~0.10.x" + readable-stream@~0.0.2: version "0.0.4" resolved "https://registry.yarnpkg.com/readable-stream/-/readable-stream-0.0.4.tgz#f32d76e3fb863344a548d79923007173665b3b8d" @@ -8071,6 +8086,11 @@ sprintf-js@~1.0.2: resolved "https://registry.yarnpkg.com/sprintf-js/-/sprintf-js-1.0.3.tgz#04e6926f662895354f3dd015203633b857297e2c" integrity sha1-BOaSb2YolTVPPdAVIDYzuFcpfiw= +sqlstring@2.3.1: + version "2.3.1" + resolved "https://registry.yarnpkg.com/sqlstring/-/sqlstring-2.3.1.tgz#475393ff9e91479aea62dcaf0ca3d14983a7fb40" + integrity sha1-R1OT/56RR5rqYtyvDKPRSYOn+0A= + sshpk@^1.7.0: version "1.16.1" resolved "https://registry.yarnpkg.com/sshpk/-/sshpk-1.16.1.tgz#fb661c0bef29b39db40769ee39fa70093d6f6877" From 75b5b0eb52e779570b6a5097f0cccd38fe3918a5 Mon Sep 17 00:00:00 2001 From: Martin McKeaveney <martin@shogunsystems.co.uk> Date: Tue, 26 Jan 2021 15:23:23 +0000 Subject: [PATCH 02/26] only allow read queries in datasources --- .../PropertyControls/TableViewSelect.svelte | 2 +- .../components/integration/QueryViewer.svelte | 2 +- .../[selectedDatasource]/index.svelte | 3 +- .../pages/[application]/deploy/index.svelte | 2 - packages/server/yarn.lock | 895 +----------------- 5 files changed, 10 insertions(+), 894 deletions(-) diff --git a/packages/builder/src/components/design/PropertiesPanel/PropertyControls/TableViewSelect.svelte b/packages/builder/src/components/design/PropertiesPanel/PropertyControls/TableViewSelect.svelte index 4e5201a180..6b3873a08c 100644 --- a/packages/builder/src/components/design/PropertiesPanel/PropertyControls/TableViewSelect.svelte +++ b/packages/builder/src/components/design/PropertiesPanel/PropertyControls/TableViewSelect.svelte @@ -34,7 +34,7 @@ })) return [...acc, ...viewsArr] }, []) - $: queries = $backendUiStore.queries.map(query => ({ + $: queries = $backendUiStore.queries.filter(query => query.queryVerb === "read").map(query => ({ label: query.name, name: query.name, tableId: query._id, diff --git a/packages/builder/src/components/integration/QueryViewer.svelte b/packages/builder/src/components/integration/QueryViewer.svelte index da5f4e1a40..485dbf7411 100644 --- a/packages/builder/src/components/integration/QueryViewer.svelte +++ b/packages/builder/src/components/integration/QueryViewer.svelte @@ -164,7 +164,7 @@ <div class="viewer-controls"> <Button blue - disabled={data.length === 0} + disabled={data.length === 0 || !query.name} on:click={saveQuery}> Save Query </Button> 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 5f78bc9ce8..0482d5458e 100644 --- a/packages/builder/src/pages/[application]/data/datasource/[selectedDatasource]/index.svelte +++ b/packages/builder/src/pages/[application]/data/datasource/[selectedDatasource]/index.svelte @@ -51,7 +51,6 @@ <div class="query-list-item" on:click={() => onClickQuery(query)}> <p class="query-name">{query.name}</p> <p>{query.queryVerb}</p> - <p>4000 records</p> <p>→</p> </div> {/each} @@ -115,7 +114,7 @@ background: var(--background); border: var(--border-grey); display: grid; - grid-template-columns: 2fr 0.75fr 0.75fr 1fr 20px; + grid-template-columns: 2fr 0.75fr 20px; align-items: center; padding: var(--spacing-m) var(--layout-xs); gap: var(--layout-xs); diff --git a/packages/builder/src/pages/[application]/deploy/index.svelte b/packages/builder/src/pages/[application]/deploy/index.svelte index b64424bf0d..c1f081f571 100644 --- a/packages/builder/src/pages/[application]/deploy/index.svelte +++ b/packages/builder/src/pages/[application]/deploy/index.svelte @@ -16,8 +16,6 @@ $: appId = $store.appId - $: console.log($hostingStore) - async function deployApp() { const DEPLOY_URL = `/api/deploy` diff --git a/packages/server/yarn.lock b/packages/server/yarn.lock index 73c7a03e81..55450d3e0c 100644 --- a/packages/server/yarn.lock +++ b/packages/server/yarn.lock @@ -228,27 +228,6 @@ lodash "^4.17.19" to-fast-properties "^2.0.0" -"@budibase/client@^0.5.3": - version "0.5.3" - resolved "https://registry.yarnpkg.com/@budibase/client/-/client-0.5.3.tgz#d2406b9a5b25ac446ba0f776b0ef3a38777a131a" - integrity sha512-pv8pMH5vxgvIAEl+2zjp1ScWAtqVWqeH65e9EDqX6oVK2AsnJe9r0HxywOHN5mCgOFxou972+39c6fYR9/enyw== - dependencies: - deep-equal "^2.0.1" - mustache "^4.0.1" - regexparam "^1.3.0" - svelte-spa-router "^3.0.5" - -"@budibase/string-templates@^0.5.3": - version "0.5.3" - resolved "https://registry.yarnpkg.com/@budibase/string-templates/-/string-templates-0.5.3.tgz#749afa7cfa43455b730540c9b792d8f13f6b444d" - integrity sha512-kYmQO31bi8y7A2NLqlunpGnqNMxYwC9XI312vXezljR0TxJk2RDHQ0Q9tOJ536ac5V7aRkkCmS5/GznGeb0k+Q== - dependencies: - handlebars "^4.7.6" - handlebars-helpers "^0.10.0" - handlebars-utils "^1.0.6" - helper-date "^1.0.1" - lodash "^4.17.20" - "@cnakazawa/watch@^1.0.3": version "1.0.4" resolved "https://registry.yarnpkg.com/@cnakazawa/watch/-/watch-1.0.4.tgz#f864ae85004d0fcab6f50be9141c4da368d1656a" @@ -1194,130 +1173,6 @@ ansi-align@^3.0.0: dependencies: string-width "^3.0.0" -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" @@ -1330,62 +1185,6 @@ ansi-escapes@^4.2.1: dependencies: type-fest "^0.11.0" -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" @@ -1406,20 +1205,6 @@ 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@^3.2.0, ansi-styles@^3.2.1: version "3.2.1" resolved "https://registry.yarnpkg.com/ansi-styles/-/ansi-styles-3.2.1.tgz#41fbb20243e50b12be0f04b8dedbf07520ce841d" @@ -1434,32 +1219,6 @@ 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-base@^1.1.0: version "1.1.0" resolved "https://registry.yarnpkg.com/any-base/-/any-base-1.1.0.tgz#ae101a62bc08a597b4c9ab5b7089d456630549fe" @@ -1526,7 +1285,7 @@ archive-type@^4.0.0: dependencies: file-type "^4.2.0" -argparse@^1.0.10, argparse@^1.0.7: +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== @@ -1568,20 +1327,6 @@ array-equal@^1.0.0: resolved "https://registry.yarnpkg.com/array-equal/-/array-equal-1.0.0.tgz#8c2a5ef2472fd9ea742b04c77a75093ba2757c93" integrity sha1-jCpe8kcv2ep0KwTHenUJO6J1fJM= -array-filter@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/array-filter/-/array-filter-1.0.0.tgz#baf79e62e6ef4c2a4c0b831232daffec251f9d83" - integrity sha1-uveeYubvTCpMC4MSMtr/7CUfnYM= - -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-unique@^0.3.2: version "0.3.2" resolved "https://registry.yarnpkg.com/array-unique/-/array-unique-0.3.2.tgz#a894b75d4bc4f6cd679ef3244a9fd8f46ae2d428" @@ -1659,20 +1404,6 @@ atomic-sleep@^1.0.0: resolved "https://registry.yarnpkg.com/atomic-sleep/-/atomic-sleep-1.0.0.tgz#eb85b77a601fc932cfe432c5acd364a9e2c9075b" integrity sha512-kNOjDqAh7px0XWNI+4QbzoiR/nTkHAWNud2uvnJquD1/x5a7EQZMJT0AczqK0Qn67oY/TTQ1LbUKajZpp3I9tQ== -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" - -available-typed-arrays@^1.0.2: - version "1.0.2" - resolved "https://registry.yarnpkg.com/available-typed-arrays/-/available-typed-arrays-1.0.2.tgz#6b098ca9d8039079ee3f77f7b783c4480ba513f5" - integrity sha512-XWX3OX8Onv97LMk/ftVyBibpGwY5a8SmuxZPzeOxqmuEqUCOM9ZE+uIaD1VNJ5QnvU2UQusvmKbuM1FR8QWGfQ== - dependencies: - array-filter "^1.0.0" - aws-sdk@^2.767.0: version "2.771.0" resolved "https://registry.yarnpkg.com/aws-sdk/-/aws-sdk-2.771.0.tgz#ff4beb0a04d6ab1ae962c85dfb42e3e9bfe2b93b" @@ -2070,14 +1801,6 @@ cacheable-request@^6.0.0: normalize-url "^4.1.0" responselike "^1.0.2" -call-bind@^1.0.0, call-bind@^1.0.2: - version "1.0.2" - resolved "https://registry.yarnpkg.com/call-bind/-/call-bind-1.0.2.tgz#b1d4e89e688119c3c9a903ad30abb2f6a919be3c" - integrity sha512-7O+FbCihrB5WGbFYesctwmTKae6rOiIzmz1icreWJ+0aA7LJfuqhEso2T9ncpcFtzMQtzXf2QGGueWJGTYsqrA== - dependencies: - function-bind "^1.1.1" - get-intrinsic "^1.0.2" - callsites@^3.0.0: version "3.1.0" resolved "https://registry.yarnpkg.com/callsites/-/callsites-3.1.0.tgz#b3630abd8943432f54b3f0519238e33cd7df2f73" @@ -2333,13 +2056,6 @@ 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" - config-chain@^1.1.11: version "1.1.12" resolved "https://registry.yarnpkg.com/config-chain/-/config-chain-1.1.12.tgz#0fde8d091200eb5e808caf25fe618c02f48e4efa" @@ -2419,16 +2135,6 @@ crc@^3.4.4: dependencies: buffer "^5.1.0" -create-frame@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/create-frame/-/create-frame-1.0.0.tgz#8b95f2691e3249b6080443e33d0bad9f8f6975aa" - integrity sha1-i5XyaR4ySbYIBEPjPQutn49pdao= - dependencies: - define-property "^0.2.5" - extend-shallow "^2.0.1" - isobject "^3.0.0" - lazy-cache "^2.0.2" - cross-spawn@^4.0.0: version "4.0.2" resolved "https://registry.yarnpkg.com/cross-spawn/-/cross-spawn-4.0.2.tgz#7b9247621c23adfdd3856004a823cbe397424d41" @@ -2495,13 +2201,6 @@ date-utils@*: resolved "https://registry.yarnpkg.com/date-utils/-/date-utils-1.2.21.tgz#61fb16cdc1274b3c9acaaffe9fc69df8720a2b64" integrity sha1-YfsWzcEnSzyayq/+n8ad+HIKK2Q= -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" - dateformat@^3.0.3: version "3.0.3" resolved "https://registry.yarnpkg.com/dateformat/-/dateformat-3.0.3.tgz#a6e37499a4d9a9cf85ef5872044d62901c9889ae" @@ -2612,27 +2311,6 @@ decompress@^4.2.1: pify "^2.3.0" strip-dirs "^2.0.0" -deep-equal@^2.0.1: - version "2.0.5" - resolved "https://registry.yarnpkg.com/deep-equal/-/deep-equal-2.0.5.tgz#55cd2fe326d83f9cbf7261ef0e060b3f724c5cb9" - integrity sha512-nPiRgmbAtm1a3JsnLCf6/SLfXcjyN5v8L1TXzdCmHrXJ4hx+gW/w1YCcn7z8gJtSiDArZCgYtbao3QqLm/N1Sw== - dependencies: - call-bind "^1.0.0" - es-get-iterator "^1.1.1" - get-intrinsic "^1.0.1" - is-arguments "^1.0.4" - is-date-object "^1.0.2" - is-regex "^1.1.1" - isarray "^2.0.5" - object-is "^1.1.4" - object-keys "^1.1.1" - object.assign "^4.1.2" - regexp.prototype.flags "^1.3.0" - side-channel "^1.0.3" - which-boxed-primitive "^1.0.1" - which-collection "^1.0.1" - which-typed-array "^1.1.2" - deep-equal@~1.0.1: version "1.0.1" resolved "https://registry.yarnpkg.com/deep-equal/-/deep-equal-1.0.1.tgz#f5d260292b660e084eff4cdbc9f08ad3247448b5" @@ -2653,13 +2331,6 @@ 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" - default-shell@^1.0.0: version "1.0.1" resolved "https://registry.yarnpkg.com/default-shell/-/default-shell-1.0.1.tgz#752304bddc6174f49eb29cb988feea0b8813c8bc" @@ -3007,11 +2678,6 @@ ensure-error@^2.0.0: resolved "https://registry.yarnpkg.com/ensure-error/-/ensure-error-2.1.0.tgz#f11fbe383c0cf4a54850ac77acceb7bc06e0f99d" integrity sha512-+BMSJHw9gxiJAAp2ZR1E0TNcL09dD3lOvkl7WVm4+Y6xnes/pMetP/TzCHiDduh8ihNDjbGfuYxl7l4PA1xZ8A== -ent@^2.2.0: - version "2.2.0" - resolved "https://registry.yarnpkg.com/ent/-/ent-2.2.0.tgz#e964219325a21d05f44466a2f686ed6ce5f5dd1d" - integrity sha1-6WQhkyWiHQX0RGai9obtbOX13R0= - env-paths@^2.2.0: version "2.2.0" resolved "https://registry.yarnpkg.com/env-paths/-/env-paths-2.2.0.tgz#cdca557dc009152917d6166e2febe1f039685e43" @@ -3031,11 +2697,6 @@ 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= - es-abstract@^1.17.0-next.1, es-abstract@^1.17.2, es-abstract@^1.17.5: version "1.17.7" resolved "https://registry.yarnpkg.com/es-abstract/-/es-abstract-1.17.7.tgz#a4de61b2f66989fc7421676c1cb9787573ace54c" @@ -3071,40 +2732,6 @@ es-abstract@^1.18.0-next.0: string.prototype.trimend "^1.0.1" string.prototype.trimstart "^1.0.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-get-iterator@^1.1.1: - version "1.1.1" - resolved "https://registry.yarnpkg.com/es-get-iterator/-/es-get-iterator-1.1.1.tgz#b93ddd867af16d5118e00881396533c1c6647ad9" - integrity sha512-qorBw8Y7B15DVLaJWy6WdEV/ZkieBcu6QCq/xzWzGOKJqgG1j754vXRfZ3NY7HSShneqU43mPB4OkQBTkvHhFw== - dependencies: - call-bind "^1.0.0" - get-intrinsic "^1.0.1" - has-symbols "^1.0.1" - is-arguments "^1.0.4" - is-map "^2.0.1" - is-set "^2.0.1" - is-string "^1.0.5" - isarray "^2.0.5" - 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" @@ -3474,13 +3101,6 @@ falafel@^1.0.1: isarray "0.0.1" object-keys "^1.0.6" -"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" @@ -3669,18 +3289,11 @@ follow-redirects@1.5.10: dependencies: debug "=3.1.0" -for-in@^1.0.1, for-in@^1.0.2: +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.5: version "2.0.5" resolved "https://registry.yarnpkg.com/foreach/-/foreach-2.0.5.tgz#0bee005018aeb260d0a3af3ae658dd0136ec1b99" @@ -3739,11 +3352,6 @@ fs-constants@^1.0.0: resolved "https://registry.yarnpkg.com/fs-constants/-/fs-constants-1.0.0.tgz#6be0de9be998ce16af8afc24497b9ee9b7ccd9ad" integrity sha512-y6OAwoSIf7FyjMIv94u+b5rdheZEjzR63GTyZJm5qh4Bi+2YgwLCcI/fPFZkL5PSixOt6ZNKm+w+Hfp/Bciwow== -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" @@ -3801,23 +3409,6 @@ get-caller-file@^2.0.1, get-caller-file@^2.0.5: resolved "https://registry.yarnpkg.com/get-caller-file/-/get-caller-file-2.0.5.tgz#4f94412a82db32f36e3b0b9741f8a97feb031f7e" integrity sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg== -get-intrinsic@^1.0.1, get-intrinsic@^1.0.2: - version "1.0.2" - resolved "https://registry.yarnpkg.com/get-intrinsic/-/get-intrinsic-1.0.2.tgz#6820da226e50b24894e08859469dc68361545d49" - integrity sha512-aeX0vrFm21ILl3+JpFFRNe9aUvp6VFZb2/CTbgLb8j75kOhvoNYjt9d8KA/tJG4gSo8nzEDedRl0h7vDmBYRVg== - dependencies: - function-bind "^1.1.1" - 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-stream@3.0.0, get-stream@^3.0.0: version "3.0.0" resolved "https://registry.yarnpkg.com/get-stream/-/get-stream-3.0.0.tgz#8e943d1358dc37555054ecbe2edb05aa174ede14" @@ -4002,77 +3593,6 @@ 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-helper-create-frame@^0.1.0: - version "0.1.0" - resolved "https://registry.yarnpkg.com/handlebars-helper-create-frame/-/handlebars-helper-create-frame-0.1.0.tgz#8aa51d10aeb6408fcc6605d40d77356288487a03" - integrity sha1-iqUdEK62QI/MZgXUDXc1YohIegM= - dependencies: - create-frame "^1.0.0" - isobject "^3.0.0" - -handlebars-helpers@^0.10.0: - version "0.10.0" - resolved "https://registry.yarnpkg.com/handlebars-helpers/-/handlebars-helpers-0.10.0.tgz#663d49e718928eafbead1473419ed7bc24bcd45a" - integrity sha512-QiyhQz58u/DbuV41VnfpE0nhy6YCH4vB514ajysV8SoKmP+DxU+pR+fahVyNECHj+jiwEN2VrvxD/34/yHaLUg== - dependencies: - arr-flatten "^1.1.0" - array-sort "^0.1.4" - create-frame "^1.0.0" - define-property "^1.0.0" - "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-helper-create-frame "^0.1.0" - 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" - lazy-cache "^2.0.2" - 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" - -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.6" - resolved "https://registry.yarnpkg.com/handlebars/-/handlebars-4.7.6.tgz#d4c05c1baf90e9945f77aa68a7a219aa4a7df74e" - integrity sha512-1f2BACcBfiwAfStCKZNrUCgqNZkGsAT7UM3kkYtXuLo0KnaVfjKOyf7PRzB6++aK9STyT1Pd2ZCPe3EGOXleXA== - 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" @@ -4156,39 +3676,6 @@ has@^1.0.3: dependencies: function-bind "^1.1.1" -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== - hosted-git-info@^2.1.4: version "2.8.8" resolved "https://registry.yarnpkg.com/hosted-git-info/-/hosted-git-info-2.8.8.tgz#7539bd4bc1e0e0a895815a2e0262420b12858488" @@ -4218,14 +3705,6 @@ html-escaper@^2.0.0: resolved "https://registry.yarnpkg.com/html-escaper/-/html-escaper-2.0.2.tgz#dfd60027da36a36dfcbe236262c00a5822681453" integrity sha512-H2iMtd0I4Mt5eYiapRdIDjp+XzelXQ0tFE4JS7YFwFevXXMmOp9myNrUvCg0D6ws8iqkRPBfKHgbwig1SmlLfg== -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-assert@^1.3.0: version "1.4.1" resolved "https://registry.yarnpkg.com/http-assert/-/http-assert-1.4.1.tgz#c5f725d677aa7e873ef736199b89686cceb37878" @@ -4383,11 +3862,6 @@ 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.4, 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" @@ -4459,23 +3933,11 @@ is-accessor-descriptor@^1.0.0: dependencies: kind-of "^6.0.0" -is-arguments@^1.0.4: - version "1.1.0" - resolved "https://registry.yarnpkg.com/is-arguments/-/is-arguments-1.1.0.tgz#62353031dfbee07ceb34656a6bde59efecae8dd9" - integrity sha512-1Ij4lOMPl/xB5kBDn7I+b2ttPMKa8szhEIrXDuXQD/oe3HJLTLhqhgGspwgyGd6MOywBUqVvYicF72lkgDnIHg== - dependencies: - call-bind "^1.0.0" - is-arrayish@^0.2.1: version "0.2.1" resolved "https://registry.yarnpkg.com/is-arrayish/-/is-arrayish-0.2.1.tgz#77c99840527aa8ecb1a8ba697b80645a7a926a9d" integrity sha1-d8mYQFJ6qOyxqLppe4BkWnqSap0= -is-bigint@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/is-bigint/-/is-bigint-1.0.1.tgz#6923051dfcbc764278540b9ce0e6b3213aa5ebc2" - integrity sha512-J0ELF4yHFxHy0cmSxZuheDOz2luOdVvqjwmEcj8H/L1JHeuEDSDbeRP+Dk9kFVk5RTFzbucJ2Kb9F7ixY2QaCg== - is-binary-path@~2.1.0: version "2.1.0" resolved "https://registry.yarnpkg.com/is-binary-path/-/is-binary-path-2.1.0.tgz#ea1f7f3b80f064236e83470f86c09c254fb45b09" @@ -4483,13 +3945,6 @@ is-binary-path@~2.1.0: dependencies: binary-extensions "^2.0.0" -is-boolean-object@^1.1.0: - version "1.1.0" - resolved "https://registry.yarnpkg.com/is-boolean-object/-/is-boolean-object-1.1.0.tgz#e2aaad3a3a8fca34c28f6eee135b156ed2587ff0" - integrity sha512-a7Uprx8UtD+HWdyYwnD1+ExtTgqQtD2k/1yJgtXP6wnMm8byhkoTZRl+95LLThpzNZJ5aEvi46cdH+ayMFRwmA== - dependencies: - call-bind "^1.0.0" - is-buffer@^1.1.5: version "1.1.6" resolved "https://registry.yarnpkg.com/is-buffer/-/is-buffer-1.1.6.tgz#efaa2ea9daa0d7ab2ea13a97b2b8ad51fefbe8be" @@ -4526,7 +3981,7 @@ is-data-descriptor@^1.0.0: dependencies: kind-of "^6.0.0" -is-date-object@^1.0.1, is-date-object@^1.0.2: +is-date-object@^1.0.1: version "1.0.2" resolved "https://registry.yarnpkg.com/is-date-object/-/is-date-object-1.0.2.tgz#bda736f2cd8fd06d32844e7743bfa7494c3bfd7e" integrity sha512-USlDT524woQ08aoZFzh3/Z6ch9Y/EWXEHQ/AaRN0SkKq4t2Jw2R2339tSXmwuVoY7LLlBCbOIlx2myP/L5zk0g== @@ -4554,13 +4009,6 @@ 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" @@ -4618,11 +4066,6 @@ is-installed-globally@^0.3.1: global-dirs "^2.0.1" is-path-inside "^3.0.1" -is-map@^2.0.1: - version "2.0.2" - resolved "https://registry.yarnpkg.com/is-map/-/is-map-2.0.2.tgz#00922db8c9bf73e81b7a335827bc2a43f2b91127" - integrity sha512-cOZFQQozTha1f4MxLFzlgKYPTyj26picdZTx82hbc/Xf4K/tZOOXSCkMvU4pKioRXGDLJRn0GM7Upe7kR721yg== - is-natural-number@^4.0.1: version "4.0.1" resolved "https://registry.yarnpkg.com/is-natural-number/-/is-natural-number-4.0.1.tgz#ab9d76e1db4ced51e35de0c72ebecf09f734cde8" @@ -4633,28 +4076,11 @@ is-negative-zero@^2.0.0: resolved "https://registry.yarnpkg.com/is-negative-zero/-/is-negative-zero-2.0.0.tgz#9553b121b0fac28869da9ed459e20c7543788461" integrity sha1-lVOxIbD6wohp2p7UWeIMdUN4hGE= -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-npm@^4.0.0: version "4.0.0" resolved "https://registry.yarnpkg.com/is-npm/-/is-npm-4.0.0.tgz#c90dd8380696df87a7a6d823c20d0b12bbe3c84d" integrity sha512-96ECIfh9xtDDlPylNPXhzjsykHsMJZ18ASpaWzQyBr4YRTcVjUvzaHayDAES2oU/3KpljhHUjtSRNiDwi0F0ig== -is-number-object@^1.0.4: - version "1.0.4" - resolved "https://registry.yarnpkg.com/is-number-object/-/is-number-object-1.0.4.tgz#36ac95e741cf18b283fc1ddf5e83da798e3ec197" - integrity sha512-zohwelOAur+5uXtk8O3GPQ1eAcu4ZX3UwxQhUlfFFMNpUd83gXgjbhJh6HmB6LUNV/ieOLQuDwJO3dWJosUeMw== - -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" @@ -4662,11 +4088,6 @@ 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" @@ -4682,13 +4103,6 @@ is-object@^1.0.1: resolved "https://registry.yarnpkg.com/is-object/-/is-object-1.0.1.tgz#8952688c5ec2ffd6b03ecc85e769e02903083470" integrity sha1-iVJojF7C/9awPsyF52ngKQMINHA= -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" @@ -4718,29 +4132,12 @@ is-retry-allowed@^1.1.0: resolved "https://registry.yarnpkg.com/is-retry-allowed/-/is-retry-allowed-1.2.0.tgz#d778488bd0a4666a3be8a1482b9f2baafedea8b4" integrity sha512-RUbUeKwvm3XG2VYamhJL1xFktgjvPzL0Hq8C+6yrWIswDy3BIXGqCxhxkc30N9jqK311gVU137K8Ei55/zVJRg== -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-set@^2.0.1: - version "2.0.2" - resolved "https://registry.yarnpkg.com/is-set/-/is-set-2.0.2.tgz#90755fa4c2562dc1c5d4024760d6119b94ca18ec" - integrity sha512-+2cnTEZeY5z/iXGbLhPrOAaK/Mau5k5eXq9j14CpRTftq0pAJu2MwVRSZhyZWBzx3o6X795Lz6Bpb6R0GKf37g== - is-stream@^1.1.0: version "1.1.0" resolved "https://registry.yarnpkg.com/is-stream/-/is-stream-1.1.0.tgz#12d4a3dd4e68e0b79ceb8dbc84173ae80d91ca44" integrity sha1-EtSj3U5o4Lec6428hBc66A2RykQ= -is-string@^1.0.5: - version "1.0.5" - resolved "https://registry.yarnpkg.com/is-string/-/is-string-1.0.5.tgz#40493ed198ef3ff477b8c7f92f644ec82a5cd3a6" - integrity sha512-buY6VNRjhQMiF1qWDouloZlQbRhDPCebwxSjxMjxgemYT46YMd2NR0/H+fBhEfWX4A/w9TBJ+ol+okqJKFE6vQ== - -is-symbol@^1.0.2, is-symbol@^1.0.3: +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== @@ -4756,17 +4153,6 @@ is-type-of@^1.0.0: is-class-hotfix "~0.0.6" isstream "~0.1.2" -is-typed-array@^1.1.3: - version "1.1.4" - resolved "https://registry.yarnpkg.com/is-typed-array/-/is-typed-array-1.1.4.tgz#1f66f34a283a3c94a4335434661ca53fff801120" - integrity sha512-ILaRgn4zaSrVNXNGtON6iFNotXW3hAPF3+0fB1usg2jFlWqo5fEDdmJkz0zBfoi7Dgskr8Khi2xZ8cXqZEfXNA== - dependencies: - available-typed-arrays "^1.0.2" - call-bind "^1.0.0" - es-abstract "^1.18.0-next.1" - foreach "^2.0.5" - has-symbols "^1.0.1" - 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" @@ -4777,16 +4163,6 @@ is-utf8@^0.2.0: resolved "https://registry.yarnpkg.com/is-utf8/-/is-utf8-0.2.1.tgz#4b0da1442104d1b336340e80797e865cf39f7d72" integrity sha1-Sw2hRCEE0bM2NA6AeX6GXPOffXI= -is-weakmap@^2.0.1: - version "2.0.1" - resolved "https://registry.yarnpkg.com/is-weakmap/-/is-weakmap-2.0.1.tgz#5008b59bdc43b698201d18f62b37b2ca243e8cf2" - integrity sha512-NSBR4kH5oVj1Uwvv970ruUkCV7O1mzgVFO4/rev2cLRda9Tm9HrL70ZPut4rOHgY0FNrUu9BCbXA2sdQ+x0chA== - -is-weakset@^2.0.1: - version "2.0.1" - resolved "https://registry.yarnpkg.com/is-weakset/-/is-weakset-2.0.1.tgz#e9a0af88dbd751589f5e50d80f4c98b780884f83" - integrity sha512-pi4vhbhVHGLxohUw7PhGsueT4vRGFoXhP7+RGN0jKIv9+8PWYCQTqtADngrxOm2g46hoH0+g8uZZBzMrvVGDmw== - is-windows@^1.0.2: version "1.0.2" resolved "https://registry.yarnpkg.com/is-windows/-/is-windows-1.0.2.tgz#d1850eb9791ecd18e6182ce12a30f396634bb19d" @@ -4819,11 +4195,6 @@ isarray@1.0.0, isarray@^1.0.0, isarray@~1.0.0: resolved "https://registry.yarnpkg.com/isarray/-/isarray-1.0.0.tgz#bb935d48582cba168c06834957a54a3e07124f11" integrity sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE= -isarray@^2.0.5: - version "2.0.5" - resolved "https://registry.yarnpkg.com/isarray/-/isarray-2.0.5.tgz#8af1e4c1221244cc62459faf38940d4e644a5723" - integrity sha512-xHjhDr3cNBK0BzdUJSPXZntQUx/mwMS5Rw4A7lPJ90XGAO6ISP/ePDNuo0vhqOZU+UD5JoodwCAAoZQd3FeAKw== - isbinaryfile@^4.0.6: version "4.0.6" resolved "https://registry.yarnpkg.com/isbinaryfile/-/isbinaryfile-4.0.6.tgz#edcb62b224e2b4710830b67498c8e4e5a4d2610b" @@ -4834,11 +4205,6 @@ 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" @@ -5517,7 +4883,7 @@ keyv@^3.0.0: dependencies: json-buffer "3.0.0" -kind-of@^3.0.2, kind-of@^3.0.3, kind-of@^3.1.0, kind-of@^3.2.0: +kind-of@^3.0.2, kind-of@^3.0.3, 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= @@ -5531,7 +4897,7 @@ kind-of@^4.0.0: dependencies: is-buffer "^1.1.5" -kind-of@^5.0.0, kind-of@^5.0.2: +kind-of@^5.0.0: version "5.1.0" resolved "https://registry.yarnpkg.com/kind-of/-/kind-of-5.1.0.tgz#729c91e2d857b7a419a1f9aa65685c4c33f5845d" integrity sha512-NGEErnH6F2vUuXDh+OlbcKW7/wOcfdRHaZ7VWtqCztfHri/++YKmP51OdWeGPuqCOba6kk2OTe5d02VmTB80Pw== @@ -5661,13 +5027,6 @@ latest-version@^5.0.0: dependencies: package-json "^6.3.0" -lazy-cache@^2.0.1, lazy-cache@^2.0.2: - 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" - lazy-val@^1.0.4: version "1.0.4" resolved "https://registry.yarnpkg.com/lazy-val/-/lazy-val-1.0.4.tgz#882636a7245c2cfe6e0a4e3ba6c5d68a137e5c65" @@ -5846,11 +5205,6 @@ locate-path@^5.0.0: dependencies: p-locate "^4.1.0" -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.debounce@^4.0.8: version "4.0.8" resolved "https://registry.yarnpkg.com/lodash.debounce/-/lodash.debounce-4.0.8.tgz#82d79bff30a67c4005ffd5e2515300ad9ca4d7af" @@ -5921,21 +5275,6 @@ 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.without@^4.4.0: version "4.4.0" resolved "https://registry.yarnpkg.com/lodash.without/-/lodash.without-4.4.0.tgz#3cd4574a00b67bae373a94b748772640507b7aac" @@ -5946,40 +5285,11 @@ lodash.xor@^4.5.0: resolved "https://registry.yarnpkg.com/lodash.xor/-/lodash.xor-4.5.0.tgz#4d48ed7e98095b0632582ba714d3ff8ae8fb1db6" integrity sha1-TUjtfpgJWwYyWCunFNP/iuj7HbY= -lodash@^4.17.10, lodash@^4.17.13, lodash@^4.17.14, lodash@^4.17.19, lodash@^4.17.20, lodash@^4.17.3: +lodash@^4.17.10, lodash@^4.17.13, lodash@^4.17.14, lodash@^4.17.19, lodash@^4.17.3: version "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-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" - loose-envify@^1.0.0: version "1.4.0" resolved "https://registry.yarnpkg.com/loose-envify/-/loose-envify-1.4.0.tgz#71ee51fa7be4caec1a63839f7e682d8132d30caf" @@ -6202,11 +5512,6 @@ mkdirp@^0.5.0, mkdirp@^0.5.1, mkdirp@^0.5.4: dependencies: minimist "^1.2.5" -moment@^2.18.1: - version "2.29.1" - resolved "https://registry.yarnpkg.com/moment/-/moment-2.29.1.tgz#b2be769fa31940be9eeea6469c075e35006fa3d3" - integrity sha512-kHmoybcPV8Sqy59DwNDY3Jefr64lK/by/da0ViFcuA4DH0vQg5Q6Ze5VimxkfQNSC+Mls/Kx53s7TjP1RhFEDQ== - mongodb@^3.6.3: version "3.6.3" resolved "https://registry.yarnpkg.com/mongodb/-/mongodb-3.6.3.tgz#eddaed0cc3598474d7a15f0f2a5b04848489fd05" @@ -6244,11 +5549,6 @@ mssql@^6.2.3: tarn "^1.1.5" tedious "^6.6.2" -mustache@^4.0.1: - version "4.1.0" - resolved "https://registry.yarnpkg.com/mustache/-/mustache-4.1.0.tgz#8c1b042238a982d2eb2d30efc6c14296ae3f699d" - integrity sha512-0FsgP/WVq4mKyjolIyX+Z9Bd+3WS8GOwoUTyKXT5cTYMGeauNTi2HPCwERqseC1IHAy0Z7MDZnJBfjabd4O8GQ== - mute-stream@0.0.8: version "0.0.8" resolved "https://registry.yarnpkg.com/mute-stream/-/mute-stream-0.0.8.tgz#1630c42b2251ff81e2a283de96a5497ea92e5e0d" @@ -6316,11 +5616,6 @@ negotiator@0.6.2: resolved "https://registry.yarnpkg.com/negotiator/-/negotiator-0.6.2.tgz#feacf7ccf525a77ae9634436a64883ffeca346fb" integrity sha512-hZXc7K2e+PgeI1eDBe/10Ard4ekbfrrqG8Ep+8Jmf4JID2bNg7NvCPOZN+kfF574pFQI7mum2AUqDidoKqcTOw== -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== - new-github-issue-url@^0.2.1: version "0.2.1" resolved "https://registry.yarnpkg.com/new-github-issue-url/-/new-github-issue-url-0.2.1.tgz#e17be1f665a92de465926603e44b9f8685630c1d" @@ -6475,19 +5770,6 @@ object-inspect@^1.8.0: resolved "https://registry.yarnpkg.com/object-inspect/-/object-inspect-1.8.0.tgz#df807e5ecf53a609cc6bfe93eac3cc7be5b3a9d0" integrity sha512-jLdtEOB112fORuypAyl/50VRVIBIdVQOSUUGQHzJ4xBSbit81zRarz7GThkEFZy1RceYrWYcPcBFPQwHyAc1gA== -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.1.4: - version "1.1.4" - resolved "https://registry.yarnpkg.com/object-is/-/object-is-1.1.4.tgz#63d6c83c00a43f4cbc9434eb9757c8a5b8565068" - integrity sha512-1ZvAZ4wlF7IyPVOcE1Omikt7UpaFlOQq0HlSti+ZvDH3UiD2brwGMwDbyV43jao2bKJ+4+WdPJHSd7kgzKYVqg== - dependencies: - call-bind "^1.0.0" - define-properties "^1.1.3" - object-keys@^1.0.12, object-keys@^1.0.6, object-keys@^1.1.1: version "1.1.1" resolved "https://registry.yarnpkg.com/object-keys/-/object-keys-1.1.1.tgz#1c47f272df277f3b1daf061677d9c82e2322c60e" @@ -6510,16 +5792,6 @@ object.assign@^4.1.1: has-symbols "^1.0.1" object-keys "^1.1.1" -object.assign@^4.1.2: - 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== - dependencies: - call-bind "^1.0.0" - define-properties "^1.1.3" - has-symbols "^1.0.1" - object-keys "^1.1.1" - object.getownpropertydescriptors@^2.1.0: version "2.1.0" resolved "https://registry.yarnpkg.com/object.getownpropertydescriptors/-/object.getownpropertydescriptors-2.1.0.tgz#369bf1f9592d8ab89d712dced5cb81c7c5352649" @@ -7453,19 +6725,6 @@ regex-not@^1.0.0, regex-not@^1.0.2: extend-shallow "^3.0.2" safe-regex "^1.1.0" -regexp.prototype.flags@^1.3.0: - version "1.3.1" - resolved "https://registry.yarnpkg.com/regexp.prototype.flags/-/regexp.prototype.flags-1.3.1.tgz#7ef352ae8d159e758c0eadca6f8fcb4eef07be26" - integrity sha512-JiBdRBq91WlY7uRJ0ds7R+dU02i6LKi8r3BuQhNXn+kmeLN+EfHhfjqMRis1zJxnlu88hq/4dx0P2OP3APRTOA== - dependencies: - 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== - regexpp@^2.0.1: version "2.0.1" resolved "https://registry.yarnpkg.com/regexpp/-/regexpp-2.0.1.tgz#8d19d31cf632482b589049f8281f93dbcba4d07f" @@ -7485,21 +6744,6 @@ registry-url@^5.0.0: dependencies: rc "^1.2.8" -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" - remove-trailing-separator@^1.0.1: version "1.1.0" resolved "https://registry.yarnpkg.com/remove-trailing-separator/-/remove-trailing-separator-1.1.0.tgz#c24bce2a283adad5bc3f58e0d48249b92379d8ef" @@ -7763,11 +7007,6 @@ seek-bzip@^1.0.5: dependencies: commander "^2.8.1" -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-compare@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/semver-compare/-/semver-compare-1.0.0.tgz#0dee216a1c941ab37e9efb1788f6afc5ff5537fc" @@ -7812,13 +7051,6 @@ 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" @@ -7877,15 +7109,6 @@ shellwords@^0.1.1: resolved "https://registry.yarnpkg.com/shellwords/-/shellwords-0.1.1.tgz#d6b9181c1a48d397324c84871efbcfc73fc0654b" integrity sha512-vFwSUfQvqybiICwZY5+DAWIPLKsWO31Q91JSKl3UYv+K5c2QRPzn0qzec6QPu1Qc9eHYItiP3NdJqNVqetYAww== -side-channel@^1.0.3: - version "1.0.4" - resolved "https://registry.yarnpkg.com/side-channel/-/side-channel-1.0.4.tgz#efce5c8fdc104ee751b25c58d4290011fa5ea2cf" - integrity sha512-q5XPytqFEIKHkGdiMIrY10mvLRvnQh42/+GoBlFW3b2LXLE2xxJpZFdm94we0BaoV3RwJyGqg5wS7epxTv0Zvw== - dependencies: - call-bind "^1.0.0" - get-intrinsic "^1.0.2" - object-inspect "^1.9.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" @@ -8178,14 +7401,6 @@ string.prototype.trimend@^1.0.1: define-properties "^1.1.3" es-abstract "^1.17.5" -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.1: version "1.0.1" resolved "https://registry.yarnpkg.com/string.prototype.trimstart/-/string.prototype.trimstart-1.0.1.tgz#14af6d9f34b053f7cfc89b72f8f2ee14b9039a54" @@ -8194,14 +7409,6 @@ string.prototype.trimstart@^1.0.1: define-properties "^1.1.3" es-abstract "^1.17.5" -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" @@ -8290,11 +7497,6 @@ strip-outer@^1.0.0: dependencies: escape-string-regexp "^1.0.2" -striptags@^3.1.0: - version "3.1.1" - resolved "https://registry.yarnpkg.com/striptags/-/striptags-3.1.1.tgz#c8c3e7fdd6fb4bb3a32a3b752e5b5e3e38093ebd" - integrity sha1-yMPn/db7S7OjKjt1LltePjgJPr0= - sublevel-pouchdb@7.2.2: version "7.2.2" resolved "https://registry.yarnpkg.com/sublevel-pouchdb/-/sublevel-pouchdb-7.2.2.tgz#49e46cd37883bf7ff5006d7c5b9bcc7bcc1f422f" @@ -8305,11 +7507,6 @@ sublevel-pouchdb@7.2.2: ltgt "2.2.1" readable-stream "1.1.14" -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= - sumchecker@^3.0.1: version "3.0.1" resolved "https://registry.yarnpkg.com/sumchecker/-/sumchecker-3.0.1.tgz#6377e996795abb0b6d348e9b3e1dfb24345a8e42" @@ -8362,13 +7559,6 @@ supports-color@^7.1.0: dependencies: has-flag "^4.0.0" -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.31.2" resolved "https://registry.yarnpkg.com/svelte/-/svelte-3.31.2.tgz#d2ddf6cacbb95e4cc3796207510b660a25586324" @@ -8507,11 +7697,6 @@ through@^2.3.6, through@^2.3.8, through@~2.3.4: 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= - timed-out@^4.0.1: version "4.0.1" resolved "https://registry.yarnpkg.com/timed-out/-/timed-out-4.0.1.tgz#f32eacac5a175bea25d7fab565ab3ed8741ef56f" @@ -8554,11 +7739,6 @@ 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-json-schema@^0.2.5: version "0.2.5" resolved "https://registry.yarnpkg.com/to-json-schema/-/to-json-schema-0.2.5.tgz#ef3c3f11ad64460dcfbdbafd0fd525d69d62a98f" @@ -8732,18 +7912,6 @@ 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" - -uglify-js@^3.1.4: - version "3.11.4" - resolved "https://registry.yarnpkg.com/uglify-js/-/uglify-js-3.11.4.tgz#b47b7ae99d4bd1dca65b53aaa69caa0909e6fadf" - integrity sha512-FyYnoxVL1D6+jDGQpbK5jW6y/2JlVfRfEeQ67BPCUg5wfCjaKOpr2XeceE4QL+MkhxliLtf5EbrMDZgzpt2CNw== - unbzip2-stream@^1.0.9: version "1.4.3" resolved "https://registry.yarnpkg.com/unbzip2-stream/-/unbzip2-stream-1.4.3.tgz#b0da04c4371311df771cdc215e87f2130991ace7" @@ -8967,11 +8135,6 @@ 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@^4.0.2: version "4.0.2" resolved "https://registry.yarnpkg.com/webidl-conversions/-/webidl-conversions-4.0.2.tgz#a855980b1f0b6b359ba1d5d9fb39ae941faa63ad" @@ -9007,45 +8170,11 @@ whatwg-url@^7.0.0: tr46 "^1.0.1" webidl-conversions "^4.0.2" -which-boxed-primitive@^1.0.1: - version "1.0.2" - resolved "https://registry.yarnpkg.com/which-boxed-primitive/-/which-boxed-primitive-1.0.2.tgz#13757bc89b209b049fe5d86430e21cf40a89a8e6" - integrity sha512-bwZdv0AKLpplFY2KZRX6TvyuN7ojjr7lwkg6ml0roIy9YeuSr7JS372qlNW18UQYzgYK9ziGcerWqZOmEn9VNg== - dependencies: - is-bigint "^1.0.1" - is-boolean-object "^1.1.0" - is-number-object "^1.0.4" - is-string "^1.0.5" - is-symbol "^1.0.3" - -which-collection@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/which-collection/-/which-collection-1.0.1.tgz#70eab71ebbbd2aefaf32f917082fc62cdcb70906" - integrity sha512-W8xeTUwaln8i3K/cY1nGXzdnVZlidBcagyNFtBdD5kxnb4TvGKR7FfSIS3mYpwWS1QUCutfKz8IY8RjftB0+1A== - dependencies: - is-map "^2.0.1" - is-set "^2.0.1" - is-weakmap "^2.0.1" - is-weakset "^2.0.1" - which-module@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/which-module/-/which-module-2.0.0.tgz#d9ef07dce77b9902b8a3a8fa4b31c3e3f7e6e87a" integrity sha1-2e8H3Od7mQK4o6j6SzHD4/fm6Ho= -which-typed-array@^1.1.2: - version "1.1.4" - resolved "https://registry.yarnpkg.com/which-typed-array/-/which-typed-array-1.1.4.tgz#8fcb7d3ee5adf2d771066fba7cf37e32fe8711ff" - integrity sha512-49E0SpUe90cjpoc7BOJwyPHRqSAd12c10Qm2amdEZrJPCY2NDxaW01zHITrem+rnETY3dwrbH3UUrUwagfCYDA== - dependencies: - available-typed-arrays "^1.0.2" - call-bind "^1.0.0" - es-abstract "^1.18.0-next.1" - foreach "^2.0.5" - function-bind "^1.1.1" - has-symbols "^1.0.1" - is-typed-array "^1.1.3" - which@^1.2.9, which@^1.3.0: version "1.3.1" resolved "https://registry.yarnpkg.com/which/-/which-1.3.1.tgz#a45043d54f5805316da8d62f9f50918d3da70b0a" @@ -9065,11 +8194,6 @@ 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= - worker-farm@^1.7.0: version "1.7.0" resolved "https://registry.yarnpkg.com/worker-farm/-/worker-farm-1.7.0.tgz#26a94c5391bbca926152002f69b84a4bf772e5a8" @@ -9276,11 +8400,6 @@ yauzl@^2.10.0, yauzl@^2.4.2: 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= - ylru@^1.2.0: version "1.2.1" resolved "https://registry.yarnpkg.com/ylru/-/ylru-1.2.1.tgz#f576b63341547989c1de7ba288760923b27fe84f" From 19a3e609e6a21b6c2ded70f9d1cd381f0ad7581b Mon Sep 17 00:00:00 2001 From: Martin McKeaveney <martin@shogunsystems.co.uk> Date: Tue, 26 Jan 2021 16:02:44 +0000 Subject: [PATCH 03/26] return schemas from backend --- packages/server/src/integrations/postgres.js | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/packages/server/src/integrations/postgres.js b/packages/server/src/integrations/postgres.js index 6f3e5ed2d7..fd5b1fe96f 100644 --- a/packages/server/src/integrations/postgres.js +++ b/packages/server/src/integrations/postgres.js @@ -58,7 +58,7 @@ class PostgresIntegration { async create({ sql }) { const response = await this.client.query(sql) - return response.rows + return response.rows.length ? response.rows : [{ created: true }] } async read({ sql }) { @@ -68,12 +68,12 @@ class PostgresIntegration { async update({ sql }) { const response = await this.client.query(sql) - return response.rows + return response.rows.length ? response.rows : [{ updated: true }] } async delete({ sql }) { const response = await this.client.query(sql) - return response.rows + return response.rows.length ? response.rows : [{ deleted: true }] } } From 58019592c8808133f641ac0fdb88008d9c9f34b4 Mon Sep 17 00:00:00 2001 From: Joe <49767913+joebudi@users.noreply.github.com> Date: Tue, 26 Jan 2021 22:42:31 +0000 Subject: [PATCH 04/26] Minor ui updates Padding and spacing improved --- packages/builder/package.json | 2 +- .../PropertiesPanel/BindingPanel.svelte | 21 +++++++------- .../EventsEditor/EventEditor.svelte | 28 ++++++++----------- .../EventsEditor/EventEditorModal.svelte | 2 +- packages/builder/yarn.lock | 8 +++--- 5 files changed, 28 insertions(+), 33 deletions(-) diff --git a/packages/builder/package.json b/packages/builder/package.json index 41b98750e9..52fa846db3 100644 --- a/packages/builder/package.json +++ b/packages/builder/package.json @@ -63,7 +63,7 @@ } }, "dependencies": { - "@budibase/bbui": "^1.54.1", + "@budibase/bbui": "^1.55.2", "@budibase/client": "^0.5.3", "@budibase/colorpicker": "^1.0.1", "@budibase/string-templates": "^0.5.3", diff --git a/packages/builder/src/components/design/PropertiesPanel/BindingPanel.svelte b/packages/builder/src/components/design/PropertiesPanel/BindingPanel.svelte index 612dc9caa5..7e91759764 100644 --- a/packages/builder/src/components/design/PropertiesPanel/BindingPanel.svelte +++ b/packages/builder/src/components/design/PropertiesPanel/BindingPanel.svelte @@ -26,10 +26,8 @@ <div class="drawer-contents"> <div class="container" data-cy="binding-dropdown-modal"> <div class="list"> - <Heading extraSmall>Objects</Heading> - <Spacer medium /> {#if context} - <Heading extraSmall>Tables</Heading> + <Heading extraSmall>Columns</Heading> <ul> {#each context as { readableBinding }} <li on:click={() => addToText(readableBinding)}> @@ -53,8 +51,8 @@ <TextArea thin bind:value - placeholder="Add text, or click the objects on the left to add them to the - textbox." /> + placeholder="Add text, or click the objects on the left to add them to + the textbox." /> </div> </div> </div> @@ -63,15 +61,14 @@ .container { height: 100%; display: grid; - grid-template-columns: auto 1fr; + grid-template-columns: 260px 1fr; } .list { - width: 150px; - border-right: 1.5px solid var(--grey-4); - padding: var(--spacing-s); + border-right: var(--border-light); + padding: var(--spacing-l); } .text { - padding: var(--spacing-s); + padding: var(--spacing-xl); font-family: var(--font-sans); } .text :global(p) { @@ -89,10 +86,12 @@ font-family: var(--font-sans); font-size: var(--font-size-xs); color: var(--grey-7); - padding: var(--spacing-s) 0; + padding: var(--spacing-m) 0; margin: auto 0px; align-items: center; cursor: pointer; + border: var(--border-light); + border-width: 1px 0 1px 0; } li:hover { diff --git a/packages/builder/src/components/design/PropertiesPanel/PropertyControls/EventsEditor/EventEditor.svelte b/packages/builder/src/components/design/PropertiesPanel/PropertyControls/EventsEditor/EventEditor.svelte index f15b87d867..701e416c2f 100644 --- a/packages/builder/src/components/design/PropertiesPanel/PropertyControls/EventsEditor/EventEditor.svelte +++ b/packages/builder/src/components/design/PropertiesPanel/PropertyControls/EventsEditor/EventEditor.svelte @@ -1,10 +1,10 @@ <script> import { Button, - TextButton, Body, DropdownMenu, ModalContent, + Spacer, } from "@budibase/bbui" import { AddIcon, ArrowDownIcon } from "components/common/Icons/" import actionTypes from "./actions" @@ -48,12 +48,11 @@ <div class="actions-list"> <div> <div bind:this={addActionButton}> - <TextButton text small blue on:click={addActionDropdown.show}> - <div style="height: 20px; width: 20px;"> - <AddIcon /> - </div> + <Spacer small /> + <Button wide secondary on:click={addActionDropdown.show}> Add Action - </TextButton> + </Button> + <Spacer medium /> </div> <DropdownMenu bind:this={addActionDropdown} @@ -74,13 +73,12 @@ <div class="action-container"> <div class="action-header" on:click={selectAction(action)}> <span class:selected={action === selectedAction}> - {index + 1}. - {action[EVENT_TYPE_KEY]} + {index + 1}. {action[EVENT_TYPE_KEY]} </span> </div> <i class="ri-close-fill" - style="margin-left: var(--spacing-m);" + style="margin-left: auto;" on:click={() => deleteAction(index)} /> </div> {/each} @@ -107,7 +105,7 @@ .action-header > span { margin-bottom: var(--spacing-m); - font-size: var(--font-size-s); + font-size: var(--font-size-xs); } .action-header > span:hover, @@ -123,7 +121,7 @@ .available-action { padding: var(--spacing-s); - font-size: var(--font-size-m); + font-size: var(--font-size-xs); cursor: pointer; } @@ -135,7 +133,7 @@ height: 40vh; display: grid; grid-gap: var(--spacing-m); - grid-template-columns: 15% 1fr; + grid-template-columns: 260px 1fr; grid-auto-flow: column; min-height: 0; padding-top: 0; @@ -143,15 +141,13 @@ } .action-container { - border: var(--border-light); - border-width: 1px 0 0 0; + border-top: var(--border-light); display: flex; align-items: center; } .selected-action-container { - padding-bottom: var(--spacing-s); - padding-top: var(--spacing-s); + padding: var(--spacing-xl); } a { diff --git a/packages/builder/src/components/design/PropertiesPanel/PropertyControls/EventsEditor/EventEditorModal.svelte b/packages/builder/src/components/design/PropertiesPanel/PropertyControls/EventsEditor/EventEditorModal.svelte index ac976317ec..97c6a310fc 100644 --- a/packages/builder/src/components/design/PropertiesPanel/PropertyControls/EventsEditor/EventEditorModal.svelte +++ b/packages/builder/src/components/design/PropertiesPanel/PropertyControls/EventsEditor/EventEditorModal.svelte @@ -156,7 +156,7 @@ } .available-action { - padding: var(--spacing-s); + padding: var(--spacing-m); font-size: var(--font-size-m); cursor: pointer; } diff --git a/packages/builder/yarn.lock b/packages/builder/yarn.lock index 85bbdab526..fb269dda5e 100644 --- a/packages/builder/yarn.lock +++ b/packages/builder/yarn.lock @@ -842,10 +842,10 @@ lodash "^4.17.19" to-fast-properties "^2.0.0" -"@budibase/bbui@^1.54.1": - version "1.54.1" - resolved "https://registry.yarnpkg.com/@budibase/bbui/-/bbui-1.54.1.tgz#ad0439c0be6a4dc818cd9dacda00f053b0daa9d5" - integrity sha512-ZY2OP/tF+ReMSyzZIGZV6wpQ4eIEzYGxZV3n+C+oNjzK5u3rwWPCDEVDlZgJSqJ61z+sEf2zuIyAh88lq9RTaA== +"@budibase/bbui@^1.55.2": + version "1.55.2" + resolved "https://registry.yarnpkg.com/@budibase/bbui/-/bbui-1.55.2.tgz#be636e8b86b7e516a08eb626bb50c4b1f9774bf8" + integrity sha512-CevH/olxDFIko9uwYUpUTevPmpShrLwJSR7+wn/JetZERwhTwbLhOXzpsyXaK226qQ8vWhm0U31HRSKI1HwDDg== dependencies: markdown-it "^12.0.2" quill "^1.3.7" From 032cce7bcd0f45ea9cbfb57aad6f1cde09cd1568 Mon Sep 17 00:00:00 2001 From: Joe <49767913+joebudi@users.noreply.github.com> Date: Wed, 27 Jan 2021 09:44:58 +0000 Subject: [PATCH 05/26] Further spacing improvements Spacing improvements Red color applied to X hover List of bindable objects is now scrollable without a visual of the scrollbar --- .../components/design/PropertiesPanel/BindingPanel.svelte | 7 +++++++ .../PropertyControls/EventsEditor/EventEditor.svelte | 7 ++++++- 2 files changed, 13 insertions(+), 1 deletion(-) diff --git a/packages/builder/src/components/design/PropertiesPanel/BindingPanel.svelte b/packages/builder/src/components/design/PropertiesPanel/BindingPanel.svelte index 7e91759764..8bfae51337 100644 --- a/packages/builder/src/components/design/PropertiesPanel/BindingPanel.svelte +++ b/packages/builder/src/components/design/PropertiesPanel/BindingPanel.svelte @@ -28,6 +28,7 @@ <div class="list"> {#if context} <Heading extraSmall>Columns</Heading> + <Spacer small /> <ul> {#each context as { readableBinding }} <li on:click={() => addToText(readableBinding)}> @@ -66,7 +67,13 @@ .list { border-right: var(--border-light); padding: var(--spacing-l); + overflow: auto; } + + .list::-webkit-scrollbar { + display: none; + } + .text { padding: var(--spacing-xl); font-family: var(--font-sans); diff --git a/packages/builder/src/components/design/PropertiesPanel/PropertyControls/EventsEditor/EventEditor.svelte b/packages/builder/src/components/design/PropertiesPanel/PropertyControls/EventsEditor/EventEditor.svelte index 701e416c2f..86e5174473 100644 --- a/packages/builder/src/components/design/PropertiesPanel/PropertyControls/EventsEditor/EventEditor.svelte +++ b/packages/builder/src/components/design/PropertiesPanel/PropertyControls/EventsEditor/EventEditor.svelte @@ -115,7 +115,7 @@ } .actions-list { - border: var(--border-light); + border-right: var(--border-light); padding: var(--spacing-s); } @@ -160,4 +160,9 @@ a:hover { color: var(--blue); } + + i:hover { + color: var(--red); + cursor: pointer; + } </style> From b1a76ad74d49385fc59c83f94c25296f3688dcd8 Mon Sep 17 00:00:00 2001 From: Martin McKeaveney <martin@shogunsystems.co.uk> Date: Wed, 27 Jan 2021 15:04:13 +0000 Subject: [PATCH 06/26] v0.6.0 --- lerna.json | 2 +- packages/builder/package.json | 6 +++--- packages/client/package.json | 6 +++--- packages/server/package.json | 6 +++--- packages/standard-components/package.json | 2 +- packages/string-templates/package.json | 2 +- packages/worker/package.json | 2 +- 7 files changed, 13 insertions(+), 13 deletions(-) diff --git a/lerna.json b/lerna.json index 22963e707b..4ef7575771 100644 --- a/lerna.json +++ b/lerna.json @@ -1,5 +1,5 @@ { - "version": "0.5.3", + "version": "0.6.0", "npmClient": "yarn", "packages": [ "packages/*" diff --git a/packages/builder/package.json b/packages/builder/package.json index 52fa846db3..0fe3f38d9b 100644 --- a/packages/builder/package.json +++ b/packages/builder/package.json @@ -1,6 +1,6 @@ { "name": "@budibase/builder", - "version": "0.5.3", + "version": "0.6.0", "license": "AGPL-3.0", "private": true, "scripts": { @@ -64,9 +64,9 @@ }, "dependencies": { "@budibase/bbui": "^1.55.2", - "@budibase/client": "^0.5.3", + "@budibase/client": "^0.6.0", "@budibase/colorpicker": "^1.0.1", - "@budibase/string-templates": "^0.5.3", + "@budibase/string-templates": "^0.6.0", "@budibase/svelte-ag-grid": "^0.0.16", "@sentry/browser": "5.19.1", "@svelteschool/svelte-forms": "^0.7.0", diff --git a/packages/client/package.json b/packages/client/package.json index 18c5e9a78d..2b8d4ce52b 100644 --- a/packages/client/package.json +++ b/packages/client/package.json @@ -1,6 +1,6 @@ { "name": "@budibase/client", - "version": "0.5.3", + "version": "0.6.0", "license": "MPL-2.0", "main": "dist/budibase-client.js", "module": "dist/budibase-client.js", @@ -9,14 +9,14 @@ "dev:builder": "rollup -cw" }, "dependencies": { - "@budibase/string-templates": "^0.5.3", + "@budibase/string-templates": "^0.6.0", "deep-equal": "^2.0.1", "regexparam": "^1.3.0", "shortid": "^2.2.15", "svelte-spa-router": "^3.0.5" }, "devDependencies": { - "@budibase/standard-components": "^0.5.3", + "@budibase/standard-components": "^0.6.0", "@rollup/plugin-commonjs": "^16.0.0", "@rollup/plugin-node-resolve": "^10.0.0", "fs-extra": "^8.1.0", diff --git a/packages/server/package.json b/packages/server/package.json index feefffb827..c775d3bea1 100644 --- a/packages/server/package.json +++ b/packages/server/package.json @@ -1,7 +1,7 @@ { "name": "@budibase/server", "email": "hi@budibase.com", - "version": "0.5.3", + "version": "0.6.0", "description": "Budibase Web Server", "main": "src/electron.js", "repository": { @@ -49,8 +49,8 @@ "author": "Budibase", "license": "AGPL-3.0-or-later", "dependencies": { - "@budibase/client": "^0.5.3", - "@budibase/string-templates": "^0.5.3", + "@budibase/client": "^0.6.0", + "@budibase/string-templates": "^0.6.0", "@elastic/elasticsearch": "^7.10.0", "@koa/router": "^8.0.0", "@sendgrid/mail": "^7.1.1", diff --git a/packages/standard-components/package.json b/packages/standard-components/package.json index b5b3a64888..d2a60c4912 100644 --- a/packages/standard-components/package.json +++ b/packages/standard-components/package.json @@ -29,7 +29,7 @@ "keywords": [ "svelte" ], - "version": "0.5.3", + "version": "0.6.0", "license": "MIT", "gitHead": "62ebf3cedcd7e9b2494b4f8cbcfb90927609b491", "dependencies": { diff --git a/packages/string-templates/package.json b/packages/string-templates/package.json index 77e8f7ded5..ba052ee66d 100644 --- a/packages/string-templates/package.json +++ b/packages/string-templates/package.json @@ -1,6 +1,6 @@ { "name": "@budibase/string-templates", - "version": "0.5.3", + "version": "0.6.0", "description": "Handlebars wrapper for Budibase templating.", "main": "dist/bundle.js", "module": "dist/bundle.js", diff --git a/packages/worker/package.json b/packages/worker/package.json index c53d4e9429..45a642fcae 100644 --- a/packages/worker/package.json +++ b/packages/worker/package.json @@ -1,7 +1,7 @@ { "name": "@budibase/deployment", "email": "hi@budibase.com", - "version": "0.5.3", + "version": "0.6.0", "description": "Budibase Deployment Server", "main": "src/index.js", "repository": { From baf2f8bec5d9501161e84da09a34847f28844c11 Mon Sep 17 00:00:00 2001 From: Martin McKeaveney <martin@shogunsystems.co.uk> Date: Wed, 27 Jan 2021 16:40:47 +0000 Subject: [PATCH 07/26] replace npmignore with package JSON files field --- packages/standard-components/.npmignore | 3 --- packages/standard-components/package.json | 5 +++++ 2 files changed, 5 insertions(+), 3 deletions(-) delete mode 100644 packages/standard-components/.npmignore diff --git a/packages/standard-components/.npmignore b/packages/standard-components/.npmignore deleted file mode 100644 index 81c5644598..0000000000 --- a/packages/standard-components/.npmignore +++ /dev/null @@ -1,3 +0,0 @@ -* -!dist/* -!components.json \ No newline at end of file diff --git a/packages/standard-components/package.json b/packages/standard-components/package.json index d2a60c4912..202dd9452e 100644 --- a/packages/standard-components/package.json +++ b/packages/standard-components/package.json @@ -10,6 +10,11 @@ "start:dev": "sirv public --single --dev", "dev:builder": "rollup -cw" }, + "files": [ + "manifest.json", + "package.json", + "dist" + ], "devDependencies": { "@rollup/plugin-alias": "^3.1.1", "@rollup/plugin-commonjs": "^16.0.0", From 23899840d37c65a59f5cc38a832c373166300f03 Mon Sep 17 00:00:00 2001 From: Martin McKeaveney <martin@shogunsystems.co.uk> Date: Wed, 27 Jan 2021 16:47:44 +0000 Subject: [PATCH 08/26] v0.6.1 --- lerna.json | 2 +- packages/builder/package.json | 6 +++--- packages/client/package.json | 6 +++--- packages/server/package.json | 6 +++--- packages/standard-components/package.json | 2 +- packages/string-templates/package.json | 2 +- packages/worker/package.json | 2 +- 7 files changed, 13 insertions(+), 13 deletions(-) diff --git a/lerna.json b/lerna.json index 4ef7575771..5a71180145 100644 --- a/lerna.json +++ b/lerna.json @@ -1,5 +1,5 @@ { - "version": "0.6.0", + "version": "0.6.1", "npmClient": "yarn", "packages": [ "packages/*" diff --git a/packages/builder/package.json b/packages/builder/package.json index 0fe3f38d9b..e56f01ae49 100644 --- a/packages/builder/package.json +++ b/packages/builder/package.json @@ -1,6 +1,6 @@ { "name": "@budibase/builder", - "version": "0.6.0", + "version": "0.6.1", "license": "AGPL-3.0", "private": true, "scripts": { @@ -64,9 +64,9 @@ }, "dependencies": { "@budibase/bbui": "^1.55.2", - "@budibase/client": "^0.6.0", + "@budibase/client": "^0.6.1", "@budibase/colorpicker": "^1.0.1", - "@budibase/string-templates": "^0.6.0", + "@budibase/string-templates": "^0.6.1", "@budibase/svelte-ag-grid": "^0.0.16", "@sentry/browser": "5.19.1", "@svelteschool/svelte-forms": "^0.7.0", diff --git a/packages/client/package.json b/packages/client/package.json index 2b8d4ce52b..eea47390e5 100644 --- a/packages/client/package.json +++ b/packages/client/package.json @@ -1,6 +1,6 @@ { "name": "@budibase/client", - "version": "0.6.0", + "version": "0.6.1", "license": "MPL-2.0", "main": "dist/budibase-client.js", "module": "dist/budibase-client.js", @@ -9,14 +9,14 @@ "dev:builder": "rollup -cw" }, "dependencies": { - "@budibase/string-templates": "^0.6.0", + "@budibase/string-templates": "^0.6.1", "deep-equal": "^2.0.1", "regexparam": "^1.3.0", "shortid": "^2.2.15", "svelte-spa-router": "^3.0.5" }, "devDependencies": { - "@budibase/standard-components": "^0.6.0", + "@budibase/standard-components": "^0.6.1", "@rollup/plugin-commonjs": "^16.0.0", "@rollup/plugin-node-resolve": "^10.0.0", "fs-extra": "^8.1.0", diff --git a/packages/server/package.json b/packages/server/package.json index c775d3bea1..2984aff7cd 100644 --- a/packages/server/package.json +++ b/packages/server/package.json @@ -1,7 +1,7 @@ { "name": "@budibase/server", "email": "hi@budibase.com", - "version": "0.6.0", + "version": "0.6.1", "description": "Budibase Web Server", "main": "src/electron.js", "repository": { @@ -49,8 +49,8 @@ "author": "Budibase", "license": "AGPL-3.0-or-later", "dependencies": { - "@budibase/client": "^0.6.0", - "@budibase/string-templates": "^0.6.0", + "@budibase/client": "^0.6.1", + "@budibase/string-templates": "^0.6.1", "@elastic/elasticsearch": "^7.10.0", "@koa/router": "^8.0.0", "@sendgrid/mail": "^7.1.1", diff --git a/packages/standard-components/package.json b/packages/standard-components/package.json index 202dd9452e..decd725967 100644 --- a/packages/standard-components/package.json +++ b/packages/standard-components/package.json @@ -34,7 +34,7 @@ "keywords": [ "svelte" ], - "version": "0.6.0", + "version": "0.6.1", "license": "MIT", "gitHead": "62ebf3cedcd7e9b2494b4f8cbcfb90927609b491", "dependencies": { diff --git a/packages/string-templates/package.json b/packages/string-templates/package.json index ba052ee66d..0fee9f3df7 100644 --- a/packages/string-templates/package.json +++ b/packages/string-templates/package.json @@ -1,6 +1,6 @@ { "name": "@budibase/string-templates", - "version": "0.6.0", + "version": "0.6.1", "description": "Handlebars wrapper for Budibase templating.", "main": "dist/bundle.js", "module": "dist/bundle.js", diff --git a/packages/worker/package.json b/packages/worker/package.json index 45a642fcae..3f6c7584ec 100644 --- a/packages/worker/package.json +++ b/packages/worker/package.json @@ -1,7 +1,7 @@ { "name": "@budibase/deployment", "email": "hi@budibase.com", - "version": "0.6.0", + "version": "0.6.1", "description": "Budibase Deployment Server", "main": "src/index.js", "repository": { From 0f18ee70ef0f9299c8f3e07e3171f055bcae21d4 Mon Sep 17 00:00:00 2001 From: Martin McKeaveney <martin@shogunsystems.co.uk> Date: Wed, 27 Jan 2021 17:29:30 +0000 Subject: [PATCH 09/26] actions fix --- .../popovers/EditQueryParamsPopover.svelte | 11 +- .../Notification/NotificationDisplay.svelte | 2 +- .../EventsEditor/EventEditor.svelte | 6 +- .../PropertyControls/TableViewSelect.svelte | 20 +-- .../integration/QueryFieldsBuilder.svelte | 8 +- .../components/integration/QueryViewer.svelte | 36 +++--- .../src/components/integration/index.svelte | 1 - .../[selectedDatasource]/index.svelte | 1 - .../client/src/components/ClientApp.svelte | 11 +- .../src/components/NotificationDisplay.svelte | 117 +++++++++--------- 10 files changed, 113 insertions(+), 100 deletions(-) diff --git a/packages/builder/src/components/backend/DatasourceNavigator/popovers/EditQueryParamsPopover.svelte b/packages/builder/src/components/backend/DatasourceNavigator/popovers/EditQueryParamsPopover.svelte index bc34d4d80c..c657bd682f 100644 --- a/packages/builder/src/components/backend/DatasourceNavigator/popovers/EditQueryParamsPopover.svelte +++ b/packages/builder/src/components/backend/DatasourceNavigator/popovers/EditQueryParamsPopover.svelte @@ -20,12 +20,9 @@ </script> <div on:click|stopPropagation bind:this={anchor}> - <TextButton - text - on:click={dropdown.show} - active={false}> - <Icon name="add" /> - Add Parameters + <TextButton text on:click={dropdown.show} active={false}> + <Icon name="add" /> + Add Parameters </TextButton> <DropdownMenu align="right" {anchor} bind:this={dropdown}> <div class="wrapper"> @@ -39,4 +36,4 @@ padding: var(--spacing-xl); min-width: 600px; } -</style> \ No newline at end of file +</style> diff --git a/packages/builder/src/components/common/Notification/NotificationDisplay.svelte b/packages/builder/src/components/common/Notification/NotificationDisplay.svelte index 3a7c03a716..2a89426ca8 100644 --- a/packages/builder/src/components/common/Notification/NotificationDisplay.svelte +++ b/packages/builder/src/components/common/Notification/NotificationDisplay.svelte @@ -1,6 +1,6 @@ <script> import { notificationStore } from "builderStore/store/notifications" - import { flip } from 'svelte/animate'; + import { flip } from "svelte/animate" import { fly } from "svelte/transition" export let themes = { diff --git a/packages/builder/src/components/design/PropertiesPanel/PropertyControls/EventsEditor/EventEditor.svelte b/packages/builder/src/components/design/PropertiesPanel/PropertyControls/EventsEditor/EventEditor.svelte index 86e5174473..0e52aa8f76 100644 --- a/packages/builder/src/components/design/PropertiesPanel/PropertyControls/EventsEditor/EventEditor.svelte +++ b/packages/builder/src/components/design/PropertiesPanel/PropertyControls/EventsEditor/EventEditor.svelte @@ -33,6 +33,9 @@ parameters: {}, [EVENT_TYPE_KEY]: actionType.name, } + if (!actions) { + actions = [] + } actions.push(newAction) selectedAction = newAction actions = actions @@ -73,7 +76,8 @@ <div class="action-container"> <div class="action-header" on:click={selectAction(action)}> <span class:selected={action === selectedAction}> - {index + 1}. {action[EVENT_TYPE_KEY]} + {index + 1}. + {action[EVENT_TYPE_KEY]} </span> </div> <i diff --git a/packages/builder/src/components/design/PropertiesPanel/PropertyControls/TableViewSelect.svelte b/packages/builder/src/components/design/PropertiesPanel/PropertyControls/TableViewSelect.svelte index 6b3873a08c..5031b37323 100644 --- a/packages/builder/src/components/design/PropertiesPanel/PropertyControls/TableViewSelect.svelte +++ b/packages/builder/src/components/design/PropertiesPanel/PropertyControls/TableViewSelect.svelte @@ -34,15 +34,17 @@ })) return [...acc, ...viewsArr] }, []) - $: queries = $backendUiStore.queries.filter(query => query.queryVerb === "read").map(query => ({ - label: query.name, - name: query.name, - tableId: query._id, - ...query, - schema: query.schema, - parameters: query.parameters, - type: "query", - })) + $: queries = $backendUiStore.queries + .filter(query => query.queryVerb === "read") + .map(query => ({ + label: query.name, + name: query.name, + tableId: query._id, + ...query, + schema: query.schema, + parameters: query.parameters, + type: "query", + })) $: bindableProperties = getBindableProperties( $currentAsset.props, $store.selectedComponentId diff --git a/packages/builder/src/components/integration/QueryFieldsBuilder.svelte b/packages/builder/src/components/integration/QueryFieldsBuilder.svelte index d5f4b3bd8b..79728f12fd 100644 --- a/packages/builder/src/components/integration/QueryFieldsBuilder.svelte +++ b/packages/builder/src/components/integration/QueryFieldsBuilder.svelte @@ -24,8 +24,8 @@ </script> <form on:submit|preventDefault> -<div class="field"> - {#each schemaKeys as field} + <div class="field"> + {#each schemaKeys as field} <Input placeholder="Enter {field} name" outline @@ -33,8 +33,8 @@ type={schema.fields[field]?.type} required={schema.fields[field]?.required} bind:value={fields[field]} /> - {/each} -</div> + {/each} + </div> </form> {#if schema.customisable} <Editor diff --git a/packages/builder/src/components/integration/QueryViewer.svelte b/packages/builder/src/components/integration/QueryViewer.svelte index 485dbf7411..77f6d51476 100644 --- a/packages/builder/src/components/integration/QueryViewer.svelte +++ b/packages/builder/src/components/integration/QueryViewer.svelte @@ -135,17 +135,22 @@ <Input placeholder="✎ Edit Query Name" bind:value={query.name} /> </div> {#if config} - <div class="props"> - <div class="query-type">Query type: <span class="query-type-span">{config[query.queryVerb].type}</span></div> - <div class="select"> - <Select primary thin bind:value={query.queryVerb}> - {#each Object.keys(config) as queryVerb} - <option value={queryVerb}>{queryVerb}</option> - {/each} - </Select> - </div> + <div class="props"> + <div class="query-type"> + Query type: + <span class="query-type-span">{config[query.queryVerb].type}</span> + </div> + <div class="select"> + <Select primary thin bind:value={query.queryVerb}> + {#each Object.keys(config) as queryVerb} + <option value={queryVerb}>{queryVerb}</option> + {/each} + </Select> + </div> </div> - <EditQueryParamsPopover bind:parameters={query.parameters} bindable={false} /> + <EditQueryParamsPopover + bind:parameters={query.parameters} + bindable={false} /> {/if} </header> <Spacer extraLarge /> @@ -182,7 +187,11 @@ {#each fields as field, idx} <Spacer small /> <div class="field"> - <Input outline placeholder="Field Name" type={'text'} bind:value={field.name} /> + <Input + outline + placeholder="Field Name" + type={'text'} + bind:value={field.name} /> <Select thin border bind:value={field.type}> <option value={''}>Select a field type</option> <option value={'STRING'}>Text</option> @@ -195,8 +204,8 @@ on:click={() => deleteField(idx)} /> </div> {/each} - <Spacer small /> - <Button thin secondary on:click={newField}>Add Field</Button> + <Spacer small /> + <Button thin secondary on:click={newField}>Add Field</Button> {/if} </Switcher> {/if} @@ -206,7 +215,6 @@ {/if} <style> - .input { width: 300px; } diff --git a/packages/builder/src/components/integration/index.svelte b/packages/builder/src/components/integration/index.svelte index a4f59459c0..5d863bb5e7 100644 --- a/packages/builder/src/components/integration/index.svelte +++ b/packages/builder/src/components/integration/index.svelte @@ -20,7 +20,6 @@ } </script> - {#if schema} {#key query._id} {#if schema.type === QueryTypes.SQL} 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 0482d5458e..fc40923eca 100644 --- a/packages/builder/src/pages/[application]/data/datasource/[selectedDatasource]/index.svelte +++ b/packages/builder/src/pages/[application]/data/datasource/[selectedDatasource]/index.svelte @@ -58,7 +58,6 @@ </div> </div> </section> - {/if} <style> diff --git a/packages/client/src/components/ClientApp.svelte b/packages/client/src/components/ClientApp.svelte index 4af1f198d5..659f34568b 100644 --- a/packages/client/src/components/ClientApp.svelte +++ b/packages/client/src/components/ClientApp.svelte @@ -2,9 +2,14 @@ import { writable } from "svelte/store" import { setContext, onMount } from "svelte" import Component from "./Component.svelte" - import NotificationDisplay from './NotificationDisplay.svelte' + import NotificationDisplay from "./NotificationDisplay.svelte" import SDK from "../sdk" - import { createDataStore, initialise, screenStore, notificationStore } from "../store" + import { + createDataStore, + initialise, + screenStore, + notificationStore, + } from "../store" // Provide contexts setContext("sdk", SDK) @@ -24,4 +29,4 @@ {#if loaded && $screenStore.activeLayout} <Component definition={$screenStore.activeLayout.props} /> {/if} -<NotificationDisplay /> \ No newline at end of file +<NotificationDisplay /> diff --git a/packages/client/src/components/NotificationDisplay.svelte b/packages/client/src/components/NotificationDisplay.svelte index f398b7f3bc..9f7f4083c2 100644 --- a/packages/client/src/components/NotificationDisplay.svelte +++ b/packages/client/src/components/NotificationDisplay.svelte @@ -1,60 +1,59 @@ <script> - import { flip } from 'svelte/animate'; - import { fly } from "svelte/transition" - import { getContext } from "svelte" - const { notifications } = getContext("sdk") - - export let themes = { - danger: "#E26D69", - success: "#84C991", - warning: "#f0ad4e", - info: "#5bc0de", - default: "#aaaaaa", - } - </script> - - <div class="notifications"> - {#each $notifications as notification (notification.id)} - <div - animate:flip - class="toast" - style="background: {themes[notification.type]};" - transition:fly={{ y: -30 }}> - <div class="content">{notification.message}</div> - {#if notification.icon}<i class={notification.icon} />{/if} - </div> - {/each} - </div> - - <style> - .notifications { - position: fixed; - top: 10px; - left: 0; - right: 0; - margin: 0 auto; - padding: 0; - z-index: 9999; - display: flex; - flex-direction: column; - justify-content: flex-start; - align-items: center; - pointer-events: none; - } - - .toast { - flex: 0 0 auto; - margin-bottom: 10px; - border-radius: var(--border-radius-s); - /* The toasts now support being auto sized, so this static width could be removed */ - width: 40vw; - } - - .content { - padding: 10px; - display: block; - color: white; - font-weight: 500; - } - </style> - \ No newline at end of file + import { flip } from "svelte/animate" + import { fly } from "svelte/transition" + import { getContext } from "svelte" + const { notifications } = getContext("sdk") + + export let themes = { + danger: "#E26D69", + success: "#84C991", + warning: "#f0ad4e", + info: "#5bc0de", + default: "#aaaaaa", + } +</script> + +<div class="notifications"> + {#each $notifications as notification (notification.id)} + <div + animate:flip + class="toast" + style="background: {themes[notification.type]};" + transition:fly={{ y: -30 }}> + <div class="content">{notification.message}</div> + {#if notification.icon}<i class={notification.icon} />{/if} + </div> + {/each} +</div> + +<style> + .notifications { + position: fixed; + top: 10px; + left: 0; + right: 0; + margin: 0 auto; + padding: 0; + z-index: 9999; + display: flex; + flex-direction: column; + justify-content: flex-start; + align-items: center; + pointer-events: none; + } + + .toast { + flex: 0 0 auto; + margin-bottom: 10px; + border-radius: var(--border-radius-s); + /* The toasts now support being auto sized, so this static width could be removed */ + width: 40vw; + } + + .content { + padding: 10px; + display: block; + color: white; + font-weight: 500; + } +</style> From 79277f0ee0dfc95b02e3bec98c24fe04d2c06884 Mon Sep 17 00:00:00 2001 From: Martin McKeaveney <martin@shogunsystems.co.uk> Date: Wed, 27 Jan 2021 17:43:38 +0000 Subject: [PATCH 10/26] v0.6.2 --- lerna.json | 2 +- packages/builder/package.json | 6 +++--- packages/client/package.json | 6 +++--- packages/server/package.json | 6 +++--- packages/standard-components/package.json | 2 +- packages/string-templates/package.json | 2 +- packages/worker/package.json | 2 +- 7 files changed, 13 insertions(+), 13 deletions(-) diff --git a/lerna.json b/lerna.json index 5a71180145..640c262a36 100644 --- a/lerna.json +++ b/lerna.json @@ -1,5 +1,5 @@ { - "version": "0.6.1", + "version": "0.6.2", "npmClient": "yarn", "packages": [ "packages/*" diff --git a/packages/builder/package.json b/packages/builder/package.json index e56f01ae49..440215d65c 100644 --- a/packages/builder/package.json +++ b/packages/builder/package.json @@ -1,6 +1,6 @@ { "name": "@budibase/builder", - "version": "0.6.1", + "version": "0.6.2", "license": "AGPL-3.0", "private": true, "scripts": { @@ -64,9 +64,9 @@ }, "dependencies": { "@budibase/bbui": "^1.55.2", - "@budibase/client": "^0.6.1", + "@budibase/client": "^0.6.2", "@budibase/colorpicker": "^1.0.1", - "@budibase/string-templates": "^0.6.1", + "@budibase/string-templates": "^0.6.2", "@budibase/svelte-ag-grid": "^0.0.16", "@sentry/browser": "5.19.1", "@svelteschool/svelte-forms": "^0.7.0", diff --git a/packages/client/package.json b/packages/client/package.json index eea47390e5..f524b6c0e0 100644 --- a/packages/client/package.json +++ b/packages/client/package.json @@ -1,6 +1,6 @@ { "name": "@budibase/client", - "version": "0.6.1", + "version": "0.6.2", "license": "MPL-2.0", "main": "dist/budibase-client.js", "module": "dist/budibase-client.js", @@ -9,14 +9,14 @@ "dev:builder": "rollup -cw" }, "dependencies": { - "@budibase/string-templates": "^0.6.1", + "@budibase/string-templates": "^0.6.2", "deep-equal": "^2.0.1", "regexparam": "^1.3.0", "shortid": "^2.2.15", "svelte-spa-router": "^3.0.5" }, "devDependencies": { - "@budibase/standard-components": "^0.6.1", + "@budibase/standard-components": "^0.6.2", "@rollup/plugin-commonjs": "^16.0.0", "@rollup/plugin-node-resolve": "^10.0.0", "fs-extra": "^8.1.0", diff --git a/packages/server/package.json b/packages/server/package.json index 2984aff7cd..fd8d5196a0 100644 --- a/packages/server/package.json +++ b/packages/server/package.json @@ -1,7 +1,7 @@ { "name": "@budibase/server", "email": "hi@budibase.com", - "version": "0.6.1", + "version": "0.6.2", "description": "Budibase Web Server", "main": "src/electron.js", "repository": { @@ -49,8 +49,8 @@ "author": "Budibase", "license": "AGPL-3.0-or-later", "dependencies": { - "@budibase/client": "^0.6.1", - "@budibase/string-templates": "^0.6.1", + "@budibase/client": "^0.6.2", + "@budibase/string-templates": "^0.6.2", "@elastic/elasticsearch": "^7.10.0", "@koa/router": "^8.0.0", "@sendgrid/mail": "^7.1.1", diff --git a/packages/standard-components/package.json b/packages/standard-components/package.json index decd725967..51eda7815e 100644 --- a/packages/standard-components/package.json +++ b/packages/standard-components/package.json @@ -34,7 +34,7 @@ "keywords": [ "svelte" ], - "version": "0.6.1", + "version": "0.6.2", "license": "MIT", "gitHead": "62ebf3cedcd7e9b2494b4f8cbcfb90927609b491", "dependencies": { diff --git a/packages/string-templates/package.json b/packages/string-templates/package.json index 0fee9f3df7..1ebebaaeec 100644 --- a/packages/string-templates/package.json +++ b/packages/string-templates/package.json @@ -1,6 +1,6 @@ { "name": "@budibase/string-templates", - "version": "0.6.1", + "version": "0.6.2", "description": "Handlebars wrapper for Budibase templating.", "main": "dist/bundle.js", "module": "dist/bundle.js", diff --git a/packages/worker/package.json b/packages/worker/package.json index 3f6c7584ec..63d026e56b 100644 --- a/packages/worker/package.json +++ b/packages/worker/package.json @@ -1,7 +1,7 @@ { "name": "@budibase/deployment", "email": "hi@budibase.com", - "version": "0.6.1", + "version": "0.6.2", "description": "Budibase Deployment Server", "main": "src/index.js", "repository": { From d1ba3f97f63a55f670bc99ec4ed94252291971d4 Mon Sep 17 00:00:00 2001 From: sovlookup <805408477@qq.com> Date: Thu, 28 Jan 2021 21:42:40 +0800 Subject: [PATCH 11/26] add arangodb integration --- .../DatasourceNavigator/icons/ArangoDB.svelte | 22 +++++ .../DatasourceNavigator/icons/index.js | 2 + packages/server/package.json | 1 + packages/server/src/integrations/arangodb.js | 87 +++++++++++++++++++ packages/server/src/integrations/index.js | 3 + 5 files changed, 115 insertions(+) create mode 100644 packages/builder/src/components/backend/DatasourceNavigator/icons/ArangoDB.svelte create mode 100644 packages/server/src/integrations/arangodb.js diff --git a/packages/builder/src/components/backend/DatasourceNavigator/icons/ArangoDB.svelte b/packages/builder/src/components/backend/DatasourceNavigator/icons/ArangoDB.svelte new file mode 100644 index 0000000000..0be4ca2663 --- /dev/null +++ b/packages/builder/src/components/backend/DatasourceNavigator/icons/ArangoDB.svelte @@ -0,0 +1,22 @@ +<script> + export let width = "100" + export let height = "100" +</script> + + +<svg version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px" {width} {height} viewBox="0 0 2900 2000" > +<g id="layer101"> + <path fill="#5b350f" d="M735 1983 c-137 -19 -322 -95 -431 -175 -138 -103 -250 -315 -284 -542 -24 -161 22 -298 129 -382 123 -97 318 -180 577 -243 l130 -32 29 -67 c41 -94 135 -231 199 -289 292 -267 732 -319 1094 -128 148 79 224 151 418 400 137 176 173 242 228 414 41 130 70 301 70 416 0 236 -146 421 -382 484 -206 56 -392 19 -733 -144 -96 -47 -181 -85 -189 -85 -7 0 -61 46 -119 103 -163 159 -283 231 -433 261 -71 15 -229 19 -303 9z"/> + </g> +<g id="layer102"> + <path fill="#406f23" d="M735 1983 c-137 -19 -322 -95 -431 -175 -138 -103 -250 -315 -284 -542 -24 -161 22 -298 129 -382 123 -97 318 -180 577 -243 l130 -32 29 -67 c41 -94 135 -231 199 -289 292 -267 732 -319 1094 -128 148 79 224 151 418 400 137 176 173 242 228 414 41 130 70 301 70 416 0 236 -146 421 -382 484 -206 56 -392 19 -733 -144 -96 -47 -181 -85 -189 -85 -7 0 -61 46 -119 103 -163 159 -283 231 -433 261 -71 15 -229 19 -303 9z m460 -643 c163 -51 296 -150 329 -246 23 -69 20 -93 -20 -174 -51 -100 -126 -173 -238 -230 l-89 -45 -131 0 c-151 0 -222 18 -323 84 -138 89 -243 264 -243 406 0 62 12 76 120 134 160 85 229 102 405 96 87 -2 139 -9 190 -25z"/> + </g> +<g id="layer103"> + <path fill="#c6d821" d="M2215 1789 c-27 -4 -68 -15 -90 -23 -42 -15 -264 -116 -397 -180 l-77 -38 78 -102 c102 -134 144 -208 175 -305 37 -116 49 -200 44 -309 -7 -157 -46 -218 -175 -278 -94 -44 -178 -56 -313 -43 -108 10 -401 53 -479 70 -24 5 -45 8 -47 6 -2 -2 20 -44 49 -92 67 -115 176 -225 281 -284 87 -49 235 -103 335 -121 91 -16 253 -14 346 5 175 37 269 95 419 264 307 347 422 563 457 859 18 148 9 247 -29 325 -88 179 -340 286 -577 246z"/> + <path fill="#c6d821" d="M549 1680 c-272 -34 -426 -142 -495 -346 -22 -68 -26 -91 -22 -164 6 -115 32 -173 112 -248 70 -65 236 -153 370 -196 241 -79 722 -172 985 -192 180 -14 343 55 404 170 34 64 30 168 -11 271 -88 223 -245 373 -568 542 -222 116 -379 161 -584 168 -69 2 -155 0 -191 -5z m646 -340 c163 -51 296 -150 329 -246 23 -69 20 -93 -20 -174 -50 -100 -126 -173 -235 -229 -84 -42 -90 -44 -200 -48 -190 -8 -312 37 -434 161 -98 99 -155 221 -155 331 0 62 12 76 120 134 160 85 229 102 405 96 87 -2 139 -9 190 -25z"/> + </g> +<g id="layer104"> + <path fill="#f6f654" d="M2190 1721 c-57 -19 -469 -184 -494 -198 -12 -7 -5 -21 34 -72 28 -35 71 -96 97 -137 l46 -74 69 0 c38 0 83 -6 102 -14 52 -22 105 -75 139 -140 28 -55 32 -70 32 -147 0 -84 -2 -90 -48 -183 -96 -187 -234 -296 -376 -296 -44 0 -80 7 -110 20 -28 13 -65 20 -105 20 -72 0 -264 22 -426 49 -63 10 -117 17 -118 15 -10 -8 59 -113 110 -169 106 -115 238 -183 448 -231 155 -35 313 -29 447 17 78 27 210 117 279 191 82 89 277 353 336 456 92 159 137 344 125 513 -9 117 -37 189 -101 258 -109 116 -332 172 -486 122z"/> + <path fill="#f6f654" d="M490 1624 c-153 -33 -275 -125 -339 -257 -54 -109 -59 -201 -17 -301 32 -76 164 -189 288 -245 51 -23 260 -91 281 -91 3 0 -21 25 -54 56 -94 91 -150 193 -170 313 -14 90 1 111 123 172 161 81 195 91 343 96 111 5 143 2 215 -16 221 -55 380 -192 380 -327 0 -52 -46 -143 -106 -212 -75 -85 -233 -170 -323 -173 -25 -1 -25 -1 4 -10 140 -43 411 -62 527 -38 142 30 238 125 238 234 0 88 -58 230 -139 337 -105 139 -431 343 -676 423 -161 52 -429 71 -575 39z"/> + </g> +</svg> \ No newline at end of file diff --git a/packages/builder/src/components/backend/DatasourceNavigator/icons/index.js b/packages/builder/src/components/backend/DatasourceNavigator/icons/index.js index 4f8d79dbf4..ff38782288 100644 --- a/packages/builder/src/components/backend/DatasourceNavigator/icons/index.js +++ b/packages/builder/src/components/backend/DatasourceNavigator/icons/index.js @@ -7,6 +7,7 @@ import S3 from "./S3.svelte" import Airtable from "./Airtable.svelte" import SqlServer from "./SQLServer.svelte" import MySQL from "./MySQL.svelte" +import ArangoDB from "./ArangoDB.svelte" export default { POSTGRES: Postgres, @@ -18,4 +19,5 @@ export default { S3: S3, AIRTABLE: Airtable, MYSQL: MySQL, + ARANGODB: ArangoDB, } diff --git a/packages/server/package.json b/packages/server/package.json index fd8d5196a0..2ee2c79e22 100644 --- a/packages/server/package.json +++ b/packages/server/package.json @@ -56,6 +56,7 @@ "@sendgrid/mail": "^7.1.1", "@sentry/node": "^5.19.2", "airtable": "^0.10.1", + "arangojs": "^7.2.0", "aws-sdk": "^2.767.0", "bcryptjs": "^2.4.3", "chmodr": "^1.2.0", diff --git a/packages/server/src/integrations/arangodb.js b/packages/server/src/integrations/arangodb.js new file mode 100644 index 0000000000..eefd656cbc --- /dev/null +++ b/packages/server/src/integrations/arangodb.js @@ -0,0 +1,87 @@ +const arangojs = require("arangojs") +const { FIELD_TYPES, QUERY_TYPES } = require("./Integration") +// const arangodb = arangojs.Database +const aql = arangojs.aql + +const SCHEMA = { + docs: "https://github.com/arangodb/arangojs", + datasource: { + url: { + type: FIELD_TYPES.STRING, + default: "http://localhost:8529", + required: true, + }, + username: { + type: FIELD_TYPES.STRING, + default: "root", + required: true, + }, + password: { + type: FIELD_TYPES.PASSWORD, + required: true, + }, + databaseName: { + type: FIELD_TYPES.STRING, + default: "_system", + required: true, + }, + collection: { + type: FIELD_TYPES.STRING, + required: true, + }, + }, + query: { + read: { + type: QUERY_TYPES.SQL, + }, + create: { + type: QUERY_TYPES.JSON, + }, + }, +} + +class ArangoDBIntegration { + constructor(config) { + config.auth = { + username: config.username, + password: config.password, + } + + this.config = config + this.client = arangojs.arangojs(config) + } + + async read(query) { + try { + const result = await this.client.query(query.sql) + let rl = [] + await result.forEach((r)=> rl.push(r)) + return rl + } catch (err) { + console.error("Error querying arangodb",err.message) + throw err + } finally { + this.client.close() + } + } + + async create(query) { + const clc = this.client.collection(this.config.collection) + try { + const result = await this.client.query(aql`INSERT ${query.json} INTO ${clc} LET n = NEW RETURN NEW`) + let rl = [] + await result.forEach((r)=> rl.push(r)) + return rl + } catch (err) { + console.error("Error querying arangodb",err.message) + throw err + } finally { + this.client.close() + } + } +} + +module.exports = { + schema: SCHEMA, + integration: ArangoDBIntegration, +} \ No newline at end of file diff --git a/packages/server/src/integrations/index.js b/packages/server/src/integrations/index.js index acb81992a9..8ff89f4900 100644 --- a/packages/server/src/integrations/index.js +++ b/packages/server/src/integrations/index.js @@ -7,6 +7,7 @@ const sqlServer = require("./microsoftSqlServer") const s3 = require("./s3") const airtable = require("./airtable") const mysql = require("./mysql") +const arangodb = require("./arangodb") const DEFINITIONS = { POSTGRES: postgres.schema, @@ -18,6 +19,7 @@ const DEFINITIONS = { S3: s3.schema, AIRTABLE: airtable.schema, MYSQL: mysql.schema, + ARANGODB: arangodb.schema, } const INTEGRATIONS = { @@ -30,6 +32,7 @@ const INTEGRATIONS = { SQL_SERVER: sqlServer.integration, AIRTABLE: airtable.integration, MYSQL: mysql.integration, + ARANGODB: arangodb.integration, } module.exports = { From 13aab3b809cdd2b4a421c9054e2c2fb351594e1f Mon Sep 17 00:00:00 2001 From: sovlookup <805408477@qq.com> Date: Thu, 28 Jan 2021 21:48:29 +0800 Subject: [PATCH 12/26] add arangodb integration --- packages/server/src/integrations/arangodb.js | 6 ++---- 1 file changed, 2 insertions(+), 4 deletions(-) diff --git a/packages/server/src/integrations/arangodb.js b/packages/server/src/integrations/arangodb.js index eefd656cbc..f2aa54667e 100644 --- a/packages/server/src/integrations/arangodb.js +++ b/packages/server/src/integrations/arangodb.js @@ -1,7 +1,5 @@ -const arangojs = require("arangojs") +const { Database, aql } = require("arangojs") const { FIELD_TYPES, QUERY_TYPES } = require("./Integration") -// const arangodb = arangojs.Database -const aql = arangojs.aql const SCHEMA = { docs: "https://github.com/arangodb/arangojs", @@ -48,7 +46,7 @@ class ArangoDBIntegration { } this.config = config - this.client = arangojs.arangojs(config) + this.client = new Database(config) } async read(query) { From 561ce349f9f56e7470867b533ecce34fa607122c Mon Sep 17 00:00:00 2001 From: mike12345567 <me@michaeldrury.co.uk> Date: Thu, 28 Jan 2021 14:03:19 +0000 Subject: [PATCH 13/26] Fixing an issue that aptkingston found with relationships were links on the way out would be multiplied (due to the bi-directional nature). --- packages/server/src/db/linkedRows/linkUtils.js | 16 +++++++++++++--- 1 file changed, 13 insertions(+), 3 deletions(-) diff --git a/packages/server/src/db/linkedRows/linkUtils.js b/packages/server/src/db/linkedRows/linkUtils.js index 3a9aff6c33..5f9dca4088 100644 --- a/packages/server/src/db/linkedRows/linkUtils.js +++ b/packages/server/src/db/linkedRows/linkUtils.js @@ -77,11 +77,21 @@ exports.getLinkDocuments = async function({ } params.include_docs = !!includeDocs try { - const response = await db.query(getQueryIndex(ViewNames.LINK), params) + let linkRows = (await db.query(getQueryIndex(ViewNames.LINK), params)).rows + // filter to get unique entries + const foundIds = [] + linkRows = linkRows.filter(link => { + const unique = foundIds.indexOf(link.id) === -1 + if (unique) { + foundIds.push(link.id) + } + return unique + }) + if (includeDocs) { - return response.rows.map(row => row.doc) + return linkRows.map(row => row.doc) } else { - return response.rows.map(row => row.value) + return linkRows.map(row => row.value) } } catch (err) { // check if the view doesn't exist, it should for all new instances From 0e7e5920c61ec8b805d97c2af9e794da4f76ee58 Mon Sep 17 00:00:00 2001 From: sovlookup <805408477@qq.com> Date: Thu, 28 Jan 2021 22:17:39 +0800 Subject: [PATCH 14/26] add arangodb integration --- packages/server/src/integrations/arangodb.js | 136 ++++++++++--------- 1 file changed, 69 insertions(+), 67 deletions(-) diff --git a/packages/server/src/integrations/arangodb.js b/packages/server/src/integrations/arangodb.js index f2aa54667e..2b3ee1b11b 100644 --- a/packages/server/src/integrations/arangodb.js +++ b/packages/server/src/integrations/arangodb.js @@ -2,84 +2,86 @@ const { Database, aql } = require("arangojs") const { FIELD_TYPES, QUERY_TYPES } = require("./Integration") const SCHEMA = { - docs: "https://github.com/arangodb/arangojs", - datasource: { - url: { - type: FIELD_TYPES.STRING, - default: "http://localhost:8529", - required: true, - }, - username: { - type: FIELD_TYPES.STRING, - default: "root", - required: true, - }, - password: { - type: FIELD_TYPES.PASSWORD, - required: true, - }, - databaseName: { - type: FIELD_TYPES.STRING, - default: "_system", - required: true, - }, - collection: { - type: FIELD_TYPES.STRING, - required: true, - }, + docs: "https://github.com/arangodb/arangojs", + datasource: { + url: { + type: FIELD_TYPES.STRING, + default: "http://localhost:8529", + required: true, }, - query: { - read: { - type: QUERY_TYPES.SQL, - }, - create: { - type: QUERY_TYPES.JSON, - }, + username: { + type: FIELD_TYPES.STRING, + default: "root", + required: true, }, + password: { + type: FIELD_TYPES.PASSWORD, + required: true, + }, + databaseName: { + type: FIELD_TYPES.STRING, + default: "_system", + required: true, + }, + collection: { + type: FIELD_TYPES.STRING, + required: true, + }, + }, + query: { + read: { + type: QUERY_TYPES.SQL, + }, + create: { + type: QUERY_TYPES.JSON, + }, + }, } class ArangoDBIntegration { - constructor(config) { - config.auth = { - username: config.username, - password: config.password, - } - - this.config = config - this.client = new Database(config) + constructor(config) { + config.auth = { + username: config.username, + password: config.password, } - async read(query) { - try { - const result = await this.client.query(query.sql) - let rl = [] - await result.forEach((r)=> rl.push(r)) - return rl - } catch (err) { - console.error("Error querying arangodb",err.message) - throw err - } finally { - this.client.close() - } - } + this.config = config + this.client = new Database(config) + } - async create(query) { - const clc = this.client.collection(this.config.collection) - try { - const result = await this.client.query(aql`INSERT ${query.json} INTO ${clc} LET n = NEW RETURN NEW`) - let rl = [] - await result.forEach((r)=> rl.push(r)) - return rl - } catch (err) { - console.error("Error querying arangodb",err.message) - throw err - } finally { - this.client.close() - } + async read(query) { + try { + const result = await this.client.query(query.sql) + let rl = [] + await result.forEach(r => rl.push(r)) + return rl + } catch (err) { + console.error("Error querying arangodb", err.message) + throw err + } finally { + this.client.close() } + } + + async create(query) { + const clc = this.client.collection(this.config.collection) + try { + const result = await this.client.query( + aql`INSERT ${query.json} INTO ${clc} LET n = NEW RETURN NEW` + ) + let rl = [] + await result.forEach(r => rl.push(r)) + return rl + } catch (err) { + console.error("Error querying arangodb", err.message) + throw err + } finally { + this.client.close() + } + } } module.exports = { schema: SCHEMA, integration: ArangoDBIntegration, -} \ No newline at end of file +} From 2f167d8245172f738819a9b44cab924e6155263a Mon Sep 17 00:00:00 2001 From: sovlookup <805408477@qq.com> Date: Thu, 28 Jan 2021 22:20:15 +0800 Subject: [PATCH 15/26] add arangodb integration --- packages/server/src/integrations/arangodb.js | 8 ++------ 1 file changed, 2 insertions(+), 6 deletions(-) diff --git a/packages/server/src/integrations/arangodb.js b/packages/server/src/integrations/arangodb.js index 2b3ee1b11b..c886b6b918 100644 --- a/packages/server/src/integrations/arangodb.js +++ b/packages/server/src/integrations/arangodb.js @@ -52,9 +52,7 @@ class ArangoDBIntegration { async read(query) { try { const result = await this.client.query(query.sql) - let rl = [] - await result.forEach(r => rl.push(r)) - return rl + return result.forEach(r => rl.push(r)) } catch (err) { console.error("Error querying arangodb", err.message) throw err @@ -69,9 +67,7 @@ class ArangoDBIntegration { const result = await this.client.query( aql`INSERT ${query.json} INTO ${clc} LET n = NEW RETURN NEW` ) - let rl = [] - await result.forEach(r => rl.push(r)) - return rl + return result.forEach(r => rl.push(r)) } catch (err) { console.error("Error querying arangodb", err.message) throw err From 136faa243b2681dd5d6a559f4482bbfc40d6bef6 Mon Sep 17 00:00:00 2001 From: sovlookup <805408477@qq.com> Date: Thu, 28 Jan 2021 22:23:17 +0800 Subject: [PATCH 16/26] fix a little space --- packages/server/src/integrations/index.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/packages/server/src/integrations/index.js b/packages/server/src/integrations/index.js index 8ff89f4900..9f9d5a1530 100644 --- a/packages/server/src/integrations/index.js +++ b/packages/server/src/integrations/index.js @@ -32,7 +32,7 @@ const INTEGRATIONS = { SQL_SERVER: sqlServer.integration, AIRTABLE: airtable.integration, MYSQL: mysql.integration, - ARANGODB: arangodb.integration, + ARANGODB: arangodb.integration, } module.exports = { From faaf4c6a270040a09ae9ce255f2931e16778e1a1 Mon Sep 17 00:00:00 2001 From: sovlookup <805408477@qq.com> Date: Thu, 28 Jan 2021 22:26:53 +0800 Subject: [PATCH 17/26] this commit is ok --- packages/server/src/integrations/arangodb.js | 2 ++ 1 file changed, 2 insertions(+) diff --git a/packages/server/src/integrations/arangodb.js b/packages/server/src/integrations/arangodb.js index c886b6b918..f4feed8246 100644 --- a/packages/server/src/integrations/arangodb.js +++ b/packages/server/src/integrations/arangodb.js @@ -52,6 +52,7 @@ class ArangoDBIntegration { async read(query) { try { const result = await this.client.query(query.sql) + let rl = [] return result.forEach(r => rl.push(r)) } catch (err) { console.error("Error querying arangodb", err.message) @@ -67,6 +68,7 @@ class ArangoDBIntegration { const result = await this.client.query( aql`INSERT ${query.json} INTO ${clc} LET n = NEW RETURN NEW` ) + let rl = [] return result.forEach(r => rl.push(r)) } catch (err) { console.error("Error querying arangodb", err.message) From 3f1797acd673177eac3fe9bda1b3b55fdbdfc992 Mon Sep 17 00:00:00 2001 From: sovlookup <805408477@qq.com> Date: Thu, 28 Jan 2021 22:35:41 +0800 Subject: [PATCH 18/26] cannot return result directly fix it --- packages/server/src/integrations/arangodb.js | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/packages/server/src/integrations/arangodb.js b/packages/server/src/integrations/arangodb.js index f4feed8246..2b3ee1b11b 100644 --- a/packages/server/src/integrations/arangodb.js +++ b/packages/server/src/integrations/arangodb.js @@ -53,7 +53,8 @@ class ArangoDBIntegration { try { const result = await this.client.query(query.sql) let rl = [] - return result.forEach(r => rl.push(r)) + await result.forEach(r => rl.push(r)) + return rl } catch (err) { console.error("Error querying arangodb", err.message) throw err @@ -69,7 +70,8 @@ class ArangoDBIntegration { aql`INSERT ${query.json} INTO ${clc} LET n = NEW RETURN NEW` ) let rl = [] - return result.forEach(r => rl.push(r)) + await result.forEach(r => rl.push(r)) + return rl } catch (err) { console.error("Error querying arangodb", err.message) throw err From a2bafdc814bd6003aa6892f6ebf27e1c0cb778d2 Mon Sep 17 00:00:00 2001 From: sovlookup <805408477@qq.com> Date: Thu, 28 Jan 2021 23:08:53 +0800 Subject: [PATCH 19/26] prettify code --- packages/server/src/integrations/arangodb.js | 10 +++------- 1 file changed, 3 insertions(+), 7 deletions(-) diff --git a/packages/server/src/integrations/arangodb.js b/packages/server/src/integrations/arangodb.js index 2b3ee1b11b..10449fc967 100644 --- a/packages/server/src/integrations/arangodb.js +++ b/packages/server/src/integrations/arangodb.js @@ -52,9 +52,7 @@ class ArangoDBIntegration { async read(query) { try { const result = await this.client.query(query.sql) - let rl = [] - await result.forEach(r => rl.push(r)) - return rl + return result.all() } catch (err) { console.error("Error querying arangodb", err.message) throw err @@ -67,11 +65,9 @@ class ArangoDBIntegration { const clc = this.client.collection(this.config.collection) try { const result = await this.client.query( - aql`INSERT ${query.json} INTO ${clc} LET n = NEW RETURN NEW` + aql`INSERT ${query.json} INTO ${clc} RETURN NEW` ) - let rl = [] - await result.forEach(r => rl.push(r)) - return rl + return result.all() } catch (err) { console.error("Error querying arangodb", err.message) throw err From f745975a0c06b44b4796045b7b8864fc4243933c Mon Sep 17 00:00:00 2001 From: Martin McKeaveney <martin@shogunsystems.co.uk> Date: Thu, 28 Jan 2021 19:32:13 +0000 Subject: [PATCH 20/26] privacy features + allow builder usage without cloud API key --- packages/builder/src/analytics.js | 13 +++ .../DatasourceNavigator/icons/ArangoDB.svelte | 53 ++++++++---- .../components/settings/tabs/APIKeys.svelte | 10 ++- .../start/BuilderSettingsModal.svelte | 21 +++++ .../components/start/CreateAppModal.svelte | 42 +--------- .../pages/[application]/deploy/index.svelte | 12 +++ packages/builder/src/pages/index.svelte | 5 +- packages/server/yarn.lock | 81 ++++++++++++++++++- 8 files changed, 172 insertions(+), 65 deletions(-) diff --git a/packages/builder/src/analytics.js b/packages/builder/src/analytics.js index f59d71ac30..c68f228c12 100644 --- a/packages/builder/src/analytics.js +++ b/packages/builder/src/analytics.js @@ -106,6 +106,16 @@ function highlightFeedbackIcon() { return isFeedbackTimeElapsed(firstRunStr) } +// Opt In/Out +const ifAnalyticsEnabled = func => () => { + if (analyticsEnabled && process.env.POSTHOG_TOKEN) { + return func() + } +} +const disabled = () => posthog.has_opted_out_capturing() +const optIn = () => posthog.opt_in_capturing() +const optOut = () => posthog.opt_out_capturing() + export default { activate, identify, @@ -115,4 +125,7 @@ export default { requestFeedbackOnDeploy, submitFeedback, highlightFeedbackIcon, + disabled: ifAnalyticsEnabled(disabled), + optIn: ifAnalyticsEnabled(optIn), + optOut: ifAnalyticsEnabled(optOut), } diff --git a/packages/builder/src/components/backend/DatasourceNavigator/icons/ArangoDB.svelte b/packages/builder/src/components/backend/DatasourceNavigator/icons/ArangoDB.svelte index 0be4ca2663..d305c08af0 100644 --- a/packages/builder/src/components/backend/DatasourceNavigator/icons/ArangoDB.svelte +++ b/packages/builder/src/components/backend/DatasourceNavigator/icons/ArangoDB.svelte @@ -3,20 +3,39 @@ export let height = "100" </script> - -<svg version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px" {width} {height} viewBox="0 0 2900 2000" > -<g id="layer101"> - <path fill="#5b350f" d="M735 1983 c-137 -19 -322 -95 -431 -175 -138 -103 -250 -315 -284 -542 -24 -161 22 -298 129 -382 123 -97 318 -180 577 -243 l130 -32 29 -67 c41 -94 135 -231 199 -289 292 -267 732 -319 1094 -128 148 79 224 151 418 400 137 176 173 242 228 414 41 130 70 301 70 416 0 236 -146 421 -382 484 -206 56 -392 19 -733 -144 -96 -47 -181 -85 -189 -85 -7 0 -61 46 -119 103 -163 159 -283 231 -433 261 -71 15 -229 19 -303 9z"/> - </g> -<g id="layer102"> - <path fill="#406f23" d="M735 1983 c-137 -19 -322 -95 -431 -175 -138 -103 -250 -315 -284 -542 -24 -161 22 -298 129 -382 123 -97 318 -180 577 -243 l130 -32 29 -67 c41 -94 135 -231 199 -289 292 -267 732 -319 1094 -128 148 79 224 151 418 400 137 176 173 242 228 414 41 130 70 301 70 416 0 236 -146 421 -382 484 -206 56 -392 19 -733 -144 -96 -47 -181 -85 -189 -85 -7 0 -61 46 -119 103 -163 159 -283 231 -433 261 -71 15 -229 19 -303 9z m460 -643 c163 -51 296 -150 329 -246 23 -69 20 -93 -20 -174 -51 -100 -126 -173 -238 -230 l-89 -45 -131 0 c-151 0 -222 18 -323 84 -138 89 -243 264 -243 406 0 62 12 76 120 134 160 85 229 102 405 96 87 -2 139 -9 190 -25z"/> - </g> -<g id="layer103"> - <path fill="#c6d821" d="M2215 1789 c-27 -4 -68 -15 -90 -23 -42 -15 -264 -116 -397 -180 l-77 -38 78 -102 c102 -134 144 -208 175 -305 37 -116 49 -200 44 -309 -7 -157 -46 -218 -175 -278 -94 -44 -178 -56 -313 -43 -108 10 -401 53 -479 70 -24 5 -45 8 -47 6 -2 -2 20 -44 49 -92 67 -115 176 -225 281 -284 87 -49 235 -103 335 -121 91 -16 253 -14 346 5 175 37 269 95 419 264 307 347 422 563 457 859 18 148 9 247 -29 325 -88 179 -340 286 -577 246z"/> - <path fill="#c6d821" d="M549 1680 c-272 -34 -426 -142 -495 -346 -22 -68 -26 -91 -22 -164 6 -115 32 -173 112 -248 70 -65 236 -153 370 -196 241 -79 722 -172 985 -192 180 -14 343 55 404 170 34 64 30 168 -11 271 -88 223 -245 373 -568 542 -222 116 -379 161 -584 168 -69 2 -155 0 -191 -5z m646 -340 c163 -51 296 -150 329 -246 23 -69 20 -93 -20 -174 -50 -100 -126 -173 -235 -229 -84 -42 -90 -44 -200 -48 -190 -8 -312 37 -434 161 -98 99 -155 221 -155 331 0 62 12 76 120 134 160 85 229 102 405 96 87 -2 139 -9 190 -25z"/> - </g> -<g id="layer104"> - <path fill="#f6f654" d="M2190 1721 c-57 -19 -469 -184 -494 -198 -12 -7 -5 -21 34 -72 28 -35 71 -96 97 -137 l46 -74 69 0 c38 0 83 -6 102 -14 52 -22 105 -75 139 -140 28 -55 32 -70 32 -147 0 -84 -2 -90 -48 -183 -96 -187 -234 -296 -376 -296 -44 0 -80 7 -110 20 -28 13 -65 20 -105 20 -72 0 -264 22 -426 49 -63 10 -117 17 -118 15 -10 -8 59 -113 110 -169 106 -115 238 -183 448 -231 155 -35 313 -29 447 17 78 27 210 117 279 191 82 89 277 353 336 456 92 159 137 344 125 513 -9 117 -37 189 -101 258 -109 116 -332 172 -486 122z"/> - <path fill="#f6f654" d="M490 1624 c-153 -33 -275 -125 -339 -257 -54 -109 -59 -201 -17 -301 32 -76 164 -189 288 -245 51 -23 260 -91 281 -91 3 0 -21 25 -54 56 -94 91 -150 193 -170 313 -14 90 1 111 123 172 161 81 195 91 343 96 111 5 143 2 215 -16 221 -55 380 -192 380 -327 0 -52 -46 -143 -106 -212 -75 -85 -233 -170 -323 -173 -25 -1 -25 -1 4 -10 140 -43 411 -62 527 -38 142 30 238 125 238 234 0 88 -58 230 -139 337 -105 139 -431 343 -676 423 -161 52 -429 71 -575 39z"/> - </g> -</svg> \ No newline at end of file +<svg + version="1.1" + xmlns="http://www.w3.org/2000/svg" + xmlns:xlink="http://www.w3.org/1999/xlink" + x="0px" + y="0px" + {width} + {height} + viewBox="0 0 2900 2000"> + <g id="layer101"> + <path + fill="#5b350f" + d="M735 1983 c-137 -19 -322 -95 -431 -175 -138 -103 -250 -315 -284 -542 -24 -161 22 -298 129 -382 123 -97 318 -180 577 -243 l130 -32 29 -67 c41 -94 135 -231 199 -289 292 -267 732 -319 1094 -128 148 79 224 151 418 400 137 176 173 242 228 414 41 130 70 301 70 416 0 236 -146 421 -382 484 -206 56 -392 19 -733 -144 -96 -47 -181 -85 -189 -85 -7 0 -61 46 -119 103 -163 159 -283 231 -433 261 -71 15 -229 19 -303 9z" /> + </g> + <g id="layer102"> + <path + fill="#406f23" + d="M735 1983 c-137 -19 -322 -95 -431 -175 -138 -103 -250 -315 -284 -542 -24 -161 22 -298 129 -382 123 -97 318 -180 577 -243 l130 -32 29 -67 c41 -94 135 -231 199 -289 292 -267 732 -319 1094 -128 148 79 224 151 418 400 137 176 173 242 228 414 41 130 70 301 70 416 0 236 -146 421 -382 484 -206 56 -392 19 -733 -144 -96 -47 -181 -85 -189 -85 -7 0 -61 46 -119 103 -163 159 -283 231 -433 261 -71 15 -229 19 -303 9z m460 -643 c163 -51 296 -150 329 -246 23 -69 20 -93 -20 -174 -51 -100 -126 -173 -238 -230 l-89 -45 -131 0 c-151 0 -222 18 -323 84 -138 89 -243 264 -243 406 0 62 12 76 120 134 160 85 229 102 405 96 87 -2 139 -9 190 -25z" /> + </g> + <g id="layer103"> + <path + fill="#c6d821" + d="M2215 1789 c-27 -4 -68 -15 -90 -23 -42 -15 -264 -116 -397 -180 l-77 -38 78 -102 c102 -134 144 -208 175 -305 37 -116 49 -200 44 -309 -7 -157 -46 -218 -175 -278 -94 -44 -178 -56 -313 -43 -108 10 -401 53 -479 70 -24 5 -45 8 -47 6 -2 -2 20 -44 49 -92 67 -115 176 -225 281 -284 87 -49 235 -103 335 -121 91 -16 253 -14 346 5 175 37 269 95 419 264 307 347 422 563 457 859 18 148 9 247 -29 325 -88 179 -340 286 -577 246z" /> + <path + fill="#c6d821" + d="M549 1680 c-272 -34 -426 -142 -495 -346 -22 -68 -26 -91 -22 -164 6 -115 32 -173 112 -248 70 -65 236 -153 370 -196 241 -79 722 -172 985 -192 180 -14 343 55 404 170 34 64 30 168 -11 271 -88 223 -245 373 -568 542 -222 116 -379 161 -584 168 -69 2 -155 0 -191 -5z m646 -340 c163 -51 296 -150 329 -246 23 -69 20 -93 -20 -174 -50 -100 -126 -173 -235 -229 -84 -42 -90 -44 -200 -48 -190 -8 -312 37 -434 161 -98 99 -155 221 -155 331 0 62 12 76 120 134 160 85 229 102 405 96 87 -2 139 -9 190 -25z" /> + </g> + <g id="layer104"> + <path + fill="#f6f654" + d="M2190 1721 c-57 -19 -469 -184 -494 -198 -12 -7 -5 -21 34 -72 28 -35 71 -96 97 -137 l46 -74 69 0 c38 0 83 -6 102 -14 52 -22 105 -75 139 -140 28 -55 32 -70 32 -147 0 -84 -2 -90 -48 -183 -96 -187 -234 -296 -376 -296 -44 0 -80 7 -110 20 -28 13 -65 20 -105 20 -72 0 -264 22 -426 49 -63 10 -117 17 -118 15 -10 -8 59 -113 110 -169 106 -115 238 -183 448 -231 155 -35 313 -29 447 17 78 27 210 117 279 191 82 89 277 353 336 456 92 159 137 344 125 513 -9 117 -37 189 -101 258 -109 116 -332 172 -486 122z" /> + <path + fill="#f6f654" + d="M490 1624 c-153 -33 -275 -125 -339 -257 -54 -109 -59 -201 -17 -301 32 -76 164 -189 288 -245 51 -23 260 -91 281 -91 3 0 -21 25 -54 56 -94 91 -150 193 -170 313 -14 90 1 111 123 172 161 81 195 91 343 96 111 5 143 2 215 -16 221 -55 380 -192 380 -327 0 -52 -46 -143 -106 -212 -75 -85 -233 -170 -323 -173 -25 -1 -25 -1 4 -10 140 -43 411 -62 527 -38 142 30 238 125 238 234 0 88 -58 230 -139 337 -105 139 -431 343 -676 423 -161 52 -429 71 -575 39z" /> + </g> +</svg> diff --git a/packages/builder/src/components/settings/tabs/APIKeys.svelte b/packages/builder/src/components/settings/tabs/APIKeys.svelte index 8e569596a4..82e66a12fd 100644 --- a/packages/builder/src/components/settings/tabs/APIKeys.svelte +++ b/packages/builder/src/components/settings/tabs/APIKeys.svelte @@ -1,6 +1,7 @@ <script> - import { Input, Label } from "@budibase/bbui" + import { Input, Label, TextButton } from "@budibase/bbui" import api from "builderStore/api" + import { notifier } from "builderStore/store/notifications" import { backendUiStore } from "builderStore" import analytics from "analytics" @@ -10,7 +11,7 @@ if (key === "budibase") { const isValid = await analytics.identifyByApiKey(value) if (!isValid) { - // TODO: add validation message + notifier.danger("Your API Key is invalid.") keys = { ...keys } return } @@ -38,7 +39,10 @@ thin edit value={keys.budibase} - label="Budibase API Key" /> + label="Budibase Cloud API Key" /> + <TextButton text medium blue href="https://portal.budi.live"> + Log in to the Budibase Hosting Portal to get your API Key. → + </TextButton> <div> <Label extraSmall grey>Instance ID (Webhooks)</Label> <span>{$backendUiStore.selectedDatabase._id}</span> diff --git a/packages/builder/src/components/start/BuilderSettingsModal.svelte b/packages/builder/src/components/start/BuilderSettingsModal.svelte index 6be420b5f9..ec3f3c7827 100644 --- a/packages/builder/src/components/start/BuilderSettingsModal.svelte +++ b/packages/builder/src/components/start/BuilderSettingsModal.svelte @@ -10,6 +10,8 @@ let hostingInfo let selfhosted = false + $: analyticsDisabled = analytics.disabled() + async function save() { hostingInfo.type = selfhosted ? HostingTypes.SELF : HostingTypes.CLOUD if (!selfhosted && hostingInfo._rev) { @@ -35,6 +37,15 @@ } } + function toggleAnalytics() { + console.log(analyticsDisabled) + if (analyticsDisabled) { + analytics.optIn() + } else { + analytics.optOut() + } + } + onMount(async () => { hostingInfo = await hostingStore.actions.fetch() selfhosted = hostingInfo.type === "self" @@ -59,6 +70,16 @@ <Input bind:value={hostingInfo.selfHostKey} label="Hosting Key" /> <Toggle thin text="HTTPS" bind:checked={hostingInfo.useHttps} /> {/if} + <h5>Analytics</h5> + <p> + If you would like to send analytics that help us make budibase better, + please let us know below. + </p> + <Toggle + thin + text="Send Analytics To Budibase" + checked={!analyticsDisabled} + on:change={toggleAnalytics} /> </ModalContent> <style> diff --git a/packages/builder/src/components/start/CreateAppModal.svelte b/packages/builder/src/components/start/CreateAppModal.svelte index 1e93892f86..836fbf2dd9 100644 --- a/packages/builder/src/components/start/CreateAppModal.svelte +++ b/packages/builder/src/components/start/CreateAppModal.svelte @@ -22,36 +22,11 @@ //Move this to context="module" once svelte-forms is updated so that it can bind to stores correctly const createAppStore = writable({ currentStep: 0, values: {} }) - export let hasKey export let template - let isApiKeyValid let lastApiKey let fetchApiKeyPromise - const validateApiKey = async apiKey => { - if (isApiKeyValid) return true - if (!apiKey) return false - - // make sure we only fetch once, unless API Key is changed - if (isApiKeyValid === undefined || apiKey !== lastApiKey) { - lastApiKey = apiKey - // svelte reactivity was causing a requst to get fired mutiple times - // so, we make everything await the same promise, if one exists - if (!fetchApiKeyPromise) { - fetchApiKeyPromise = analytics.identifyByApiKey(apiKey) - } - isApiKeyValid = await fetchApiKeyPromise - fetchApiKeyPromise = undefined - } - return isApiKeyValid - } - - const apiValidation = { - apiKey: string() - .required("Please enter your API key.") - .test("valid-apikey", "This API key is invalid", validateApiKey), - } const infoValidation = { applicationName: string().required("Your application must have a name."), } @@ -66,9 +41,9 @@ let submitting = false let errors = {} let validationErrors = {} - let validationSchemas = [apiValidation, infoValidation, userValidation] + let validationSchemas = [infoValidation, userValidation] - function buildStep(component) { + function buildStep(component, skippable) { return { component, errors, @@ -76,7 +51,7 @@ } // steps need to be initialized for cypress from the get go - let steps = [buildStep(API), buildStep(Info), buildStep(User)] + let steps = [buildStep(Info), buildStep(User)] onMount(async () => { let hostingInfo = await hostingStore.actions.fetch() @@ -87,17 +62,11 @@ infoValidation.applicationName = string() .required("Your application must have a name.") .notOneOf(existingAppNames) - isApiKeyValid = true steps = [buildStep(Info), buildStep(User)] validationSchemas = [infoValidation, userValidation] } }) - if (hasKey) { - validationSchemas.shift() - steps.shift() - } - // Handles form navigation const back = () => { if ($createAppStore.currentStep > 0) { @@ -145,11 +114,6 @@ async function createNewApp() { submitting = true try { - // Add API key if there is none. - if (!hasKey) { - await updateKey(["budibase", $createAppStore.values.apiKey]) - } - // Create App const appResp = await post("/api/applications", { name: $createAppStore.values.applicationName, diff --git a/packages/builder/src/pages/[application]/deploy/index.svelte b/packages/builder/src/pages/[application]/deploy/index.svelte index c1f081f571..d7e75e9a8e 100644 --- a/packages/builder/src/pages/[application]/deploy/index.svelte +++ b/packages/builder/src/pages/[application]/deploy/index.svelte @@ -17,6 +17,18 @@ $: appId = $store.appId async function deployApp() { + // Must have cloud or self host API key to deploy + if (!$hostingStore.hostingInfo?.selfHostKey) { + const response = await api.get(`/api/keys/`) + const userKeys = await response.json() + if (!userKeys.budibase) { + notifier.danger( + "No budibase API Keys configured. You must set either a self hosted or cloud API key to deploy your budibase app." + ) + } + return + } + const DEPLOY_URL = `/api/deploy` try { diff --git a/packages/builder/src/pages/index.svelte b/packages/builder/src/pages/index.svelte index fcf0f5af52..7de3a2bb35 100644 --- a/packages/builder/src/pages/index.svelte +++ b/packages/builder/src/pages/index.svelte @@ -1,4 +1,5 @@ <script> + import { store } from "builderStore" import api from "builderStore/api" import AppList from "components/start/AppList.svelte" import { get } from "builderStore/api" @@ -35,10 +36,6 @@ hasKey = true analytics.identify(keys.userId) } - - if (!keys.budibase) { - modal.show() - } } function selectTemplate(newTemplate) { diff --git a/packages/server/yarn.lock b/packages/server/yarn.lock index 55450d3e0c..36efad1747 100644 --- a/packages/server/yarn.lock +++ b/packages/server/yarn.lock @@ -947,6 +947,11 @@ resolved "https://registry.yarnpkg.com/@types/node/-/node-14.11.8.tgz#fe2012f2355e4ce08bca44aeb3abbb21cf88d33f" integrity sha512-KPcKqKm5UKDkaYPTuXSx8wEP7vE9GnuaXIZKijwRYcePpZFDVuy2a57LarFKiORbHOuTOOwYzxVxcUzsh2P2Pw== +"@types/node@>=13.13.4": + version "14.14.22" + resolved "https://registry.yarnpkg.com/@types/node/-/node-14.14.22.tgz#0d29f382472c4ccf3bd96ff0ce47daf5b7b84b18" + integrity sha512-g+f/qj/cNcqKkc3tFqlXOYjrmZA+jNBiDzbP3kH+B+otKFqAdPgVTGP1IeKRdMml/aE69as5S4FqtxAbl+LaMw== + "@types/node@>=8.0.0 <15": version "14.14.20" resolved "https://registry.yarnpkg.com/@types/node/-/node-14.14.20.tgz#f7974863edd21d1f8a494a73e8e2b3658615c340" @@ -1278,6 +1283,17 @@ app-builder-lib@22.9.1: semver "^7.3.2" temp-file "^3.3.7" +arangojs@^7.2.0: + version "7.2.0" + resolved "https://registry.yarnpkg.com/arangojs/-/arangojs-7.2.0.tgz#e576926b4b3469c5a130cceba45fada8b5f015d1" + integrity sha512-9mQRCcttaG0lckapNF9TA71ZU7H2ATXK2a1w+0fj+Y4TlTP1bNDMIz3ZN+EnaSgEtwVu0rb6N6Ac97Yd56GmkQ== + dependencies: + "@types/node" ">=13.13.4" + es6-error "^4.0.1" + multi-part "^3.0.0" + x3-linkedlist "1.2.0" + xhr "^2.4.1" + archive-type@^4.0.0: version "4.0.0" resolved "https://registry.yarnpkg.com/archive-type/-/archive-type-4.0.0.tgz#f92e72233056dfc6969472749c267bdb046b1d70" @@ -2759,7 +2775,7 @@ es3ify@^0.2.2: jstransform "~11.0.0" through "~2.3.4" -es6-error@^4.1.1: +es6-error@^4.0.1, es6-error@^4.1.1: version "4.1.1" resolved "https://registry.yarnpkg.com/es6-error/-/es6-error-4.1.1.tgz#9e3af407459deed47e9a91f9b885a84eb05c561d" integrity sha512-Um/+FxMr9CISWh0bi5Zv0iOD+4cFh5qLeks1qhAopKVAJw3drgKbKySikp7wGhDL0HPeaja0P5ULZrxLkniUVg== @@ -3173,6 +3189,11 @@ file-type@^11.1.0: resolved "https://registry.yarnpkg.com/file-type/-/file-type-11.1.0.tgz#93780f3fed98b599755d846b99a1617a2ad063b8" integrity sha512-rM0UO7Qm9K7TWTtA6AShI/t7H5BPjDeGVDaNyg9BjHAj3PysKy7+8C8D137R88jnR3rFJZQB/tFgydl5sN5m7g== +file-type@^12.1.0: + version "12.4.2" + resolved "https://registry.yarnpkg.com/file-type/-/file-type-12.4.2.tgz#a344ea5664a1d01447ee7fb1b635f72feb6169d9" + integrity sha512-UssQP5ZgIOKelfsaB5CuGAL+Y+q7EmONuiwF3N5HAH0t27rvrttgi6Ra9k/+DVaY9UF6+ybxu5pOXLUdA8N7Vg== + file-type@^3.8.0: version "3.9.0" resolved "https://registry.yarnpkg.com/file-type/-/file-type-3.9.0.tgz#257a078384d1db8087bc449d107d52a52672b9e9" @@ -3524,6 +3545,14 @@ global@~4.3.0: min-document "^2.19.0" process "~0.5.1" +global@~4.4.0: + version "4.4.0" + resolved "https://registry.yarnpkg.com/global/-/global-4.4.0.tgz#3e7b105179006a323ed71aafca3e9c57a5cc6406" + integrity sha512-wv/LAoHdRE3BeTGz53FAamhGlPLhlssK45usmGFThIi4XqnBmjKQ16u+RNbP7WvigRZDxUsM0J3gcQ5yicaL0w== + dependencies: + min-document "^2.19.0" + process "^0.11.10" + globals@^11.1.0: version "11.12.0" resolved "https://registry.yarnpkg.com/globals/-/globals-11.12.0.tgz#ab8795338868a0babd8525758018c2a7eb95c42e" @@ -5441,11 +5470,19 @@ mime-db@1.44.0: resolved "https://registry.yarnpkg.com/mime-db/-/mime-db-1.44.0.tgz#fa11c5eb0aca1334b4233cb4d52f10c5a6272f92" integrity sha512-/NOTfLrsPBVeH7YtFPgsVWveuL+4SjjYxaQ1xtM1KMFj7HdxlBlxeyNLzhyJVx7r4rZGJAZ/6lkKCitSc/Nmpg== -"mime-db@>= 1.43.0 < 2", mime-db@^1.28.0: +mime-db@1.45.0, "mime-db@>= 1.43.0 < 2", mime-db@^1.28.0: version "1.45.0" resolved "https://registry.yarnpkg.com/mime-db/-/mime-db-1.45.0.tgz#cceeda21ccd7c3a745eba2decd55d4b73e7879ea" integrity sha512-CkqLUxUk15hofLoLyljJSrukZi8mAtgd+yE5uO4tqRZsdsAJKv0O+rFMhVDRJgozy+yG6md5KwuXhD4ocIoP+w== +mime-kind@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/mime-kind/-/mime-kind-3.0.0.tgz#23bb3aba03ed6a1ea8c4f6093a9c7ab7121a9cb2" + integrity sha512-sx9lClVP7GXY2mO3aVDWTQLhfvAdDvNhGi3o3g7+ae3aKaoybeGbEIlnreoRKjrbDpvlPltlkIryxOtatojeXQ== + dependencies: + file-type "^12.1.0" + mime-types "^2.1.24" + mime-types@^2.1.12, mime-types@^2.1.18, mime-types@~2.1.19, mime-types@~2.1.24: version "2.1.27" resolved "https://registry.yarnpkg.com/mime-types/-/mime-types-2.1.27.tgz#47949f98e279ea53119f5722e0f34e529bec009f" @@ -5453,6 +5490,13 @@ mime-types@^2.1.12, mime-types@^2.1.18, mime-types@~2.1.19, mime-types@~2.1.24: dependencies: mime-db "1.44.0" +mime-types@^2.1.24: + version "2.1.28" + resolved "https://registry.yarnpkg.com/mime-types/-/mime-types-2.1.28.tgz#1160c4757eab2c5363888e005273ecf79d2a0ecd" + integrity sha512-0TO2yJ5YHYr7M2zzT7gDU1tbwHxEUWBCLt0lscSNpcdAfFyJOVEpRYNS7EXVcTLNj/25QO8gulHC5JtTzSE2UQ== + dependencies: + mime-db "1.45.0" + mime@^1.3.4, mime@^1.4.1: version "1.6.0" resolved "https://registry.yarnpkg.com/mime/-/mime-1.6.0.tgz#32cd9e5c64553bd58d19a568af452acff04981b1" @@ -5549,6 +5593,19 @@ mssql@^6.2.3: tarn "^1.1.5" tedious "^6.6.2" +multi-part-lite@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/multi-part-lite/-/multi-part-lite-1.0.0.tgz#7b86baf8ff83ef20ca13f1269a0f35aec42b9000" + integrity sha512-KxIRbBZZ45hoKX1ROD/19wJr0ql1bef1rE8Y1PCwD3PuNXV42pp7Wo8lEHYuAajoT4vfAFcd3rPjlkyEEyt1nw== + +multi-part@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/multi-part/-/multi-part-3.0.0.tgz#2bde386e8c1dcc9f15a2277267a7f5ed13aa0cc0" + integrity sha512-pDbdYQ6DLDxAsD83w9R7r7rlW56cETL7hIB5bCWX7FJYw0K+kL5JwHr0I8tRk9lGeFcAzf+2OEzXWlG/4wCnFw== + dependencies: + mime-kind "^3.0.0" + multi-part-lite "^1.0.0" + mute-stream@0.0.8: version "0.0.8" resolved "https://registry.yarnpkg.com/mute-stream/-/mute-stream-0.0.8.tgz#1630c42b2251ff81e2a283de96a5497ea92e5e0d" @@ -6452,6 +6509,11 @@ process-nextick-args@~2.0.0: resolved "https://registry.yarnpkg.com/process-nextick-args/-/process-nextick-args-2.0.1.tgz#7820d9b16120cc55ca9ae7792680ae7dba6d7fe2" integrity sha512-3ouUOpQhtgrbOa17J7+uxOTpITYWaGP7/AhoR3+A+/1e9skrzelGi/dXzEYyvbxubEF6Wn2ypscTKiKJFFn1ag== +process@^0.11.10: + version "0.11.10" + resolved "https://registry.yarnpkg.com/process/-/process-0.11.10.tgz#7332300e840161bda3e69a1d1d91a7d4bc16f182" + integrity sha1-czIwDoQBYb2j5podHZGn1LwW8YI= + process@~0.5.1: version "0.5.2" resolved "https://registry.yarnpkg.com/process/-/process-0.5.2.tgz#1638d8a8e34c2f440a91db95ab9aeb677fc185cf" @@ -8264,6 +8326,11 @@ ws@^5.2.0: dependencies: async-limiter "~1.0.0" +x3-linkedlist@1.2.0: + version "1.2.0" + resolved "https://registry.yarnpkg.com/x3-linkedlist/-/x3-linkedlist-1.2.0.tgz#c70467559b7c748595f0f79222af1d709402699e" + integrity sha512-mH/YwxpYSKNa8bDNF1yOuZCMuV+K80LtDN8vcLDUAwNazCxptDNsYt+zA/EJeYiGbdtKposhKLZjErGVOR8mag== + xdg-basedir@^4.0.0: version "4.0.0" resolved "https://registry.yarnpkg.com/xdg-basedir/-/xdg-basedir-4.0.0.tgz#4bc8d9984403696225ef83a1573cbbcb4e79db13" @@ -8279,6 +8346,16 @@ xhr@^2.0.1: parse-headers "^2.0.0" xtend "^4.0.0" +xhr@^2.4.1: + version "2.6.0" + resolved "https://registry.yarnpkg.com/xhr/-/xhr-2.6.0.tgz#b69d4395e792b4173d6b7df077f0fc5e4e2b249d" + integrity sha512-/eCGLb5rxjx5e3mF1A7s+pLlR6CGyqWN91fv1JgER5mVWg1MZmlhBvy9kjcsOdRk8RrIujotWyJamfyrp+WIcA== + dependencies: + global "~4.4.0" + is-function "^1.0.1" + parse-headers "^2.0.0" + xtend "^4.0.0" + 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" From 1f84372cccffce0de137b772e5c8b8890c0a8d23 Mon Sep 17 00:00:00 2001 From: Martin McKeaveney <martin@shogunsystems.co.uk> Date: Thu, 28 Jan 2021 19:34:24 +0000 Subject: [PATCH 21/26] remove log --- .../builder/src/components/start/BuilderSettingsModal.svelte | 1 - 1 file changed, 1 deletion(-) diff --git a/packages/builder/src/components/start/BuilderSettingsModal.svelte b/packages/builder/src/components/start/BuilderSettingsModal.svelte index ec3f3c7827..9409820662 100644 --- a/packages/builder/src/components/start/BuilderSettingsModal.svelte +++ b/packages/builder/src/components/start/BuilderSettingsModal.svelte @@ -38,7 +38,6 @@ } function toggleAnalytics() { - console.log(analyticsDisabled) if (analyticsDisabled) { analytics.optIn() } else { From d3e398984c9a9494f13f4c06b8173275b89bf946 Mon Sep 17 00:00:00 2001 From: Martin McKeaveney <martin@shogunsystems.co.uk> Date: Thu, 28 Jan 2021 19:35:04 +0000 Subject: [PATCH 22/26] remove superfluous param --- packages/builder/src/components/start/CreateAppModal.svelte | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/packages/builder/src/components/start/CreateAppModal.svelte b/packages/builder/src/components/start/CreateAppModal.svelte index 836fbf2dd9..945295ec51 100644 --- a/packages/builder/src/components/start/CreateAppModal.svelte +++ b/packages/builder/src/components/start/CreateAppModal.svelte @@ -43,7 +43,7 @@ let validationErrors = {} let validationSchemas = [infoValidation, userValidation] - function buildStep(component, skippable) { + function buildStep(component) { return { component, errors, From f7aa34be1323fefa64ced534fd6bed34cd3020b4 Mon Sep 17 00:00:00 2001 From: yashank09 <yashank@hey.com> Date: Thu, 28 Jan 2021 23:23:44 -0800 Subject: [PATCH 23/26] adds placeholder on automation trigger --- .../src/components/automation/SetupPanel/SchemaSetup.svelte | 1 + 1 file changed, 1 insertion(+) diff --git a/packages/builder/src/components/automation/SetupPanel/SchemaSetup.svelte b/packages/builder/src/components/automation/SetupPanel/SchemaSetup.svelte index 8855fb6895..50e7346876 100644 --- a/packages/builder/src/components/automation/SetupPanel/SchemaSetup.svelte +++ b/packages/builder/src/components/automation/SetupPanel/SchemaSetup.svelte @@ -43,6 +43,7 @@ <Input value={field.name} secondary + placeholder="Enter field name" on:change={fieldNameChanged(field.name)} /> <Select secondary From c8b8ddb67fd9fd83ca0af8ef0ca4f32713f1a058 Mon Sep 17 00:00:00 2001 From: Martin McKeaveney <martin@shogunsystems.co.uk> Date: Fri, 29 Jan 2021 10:41:08 +0000 Subject: [PATCH 24/26] add support for staging image that gets built on master push --- .github/workflows/budibase_ci.yml | 9 +++++++++ hosting/scripts/linux/release-to-docker-hub.sh | 10 ++++++++-- package.json | 3 ++- 3 files changed, 19 insertions(+), 3 deletions(-) diff --git a/.github/workflows/budibase_ci.yml b/.github/workflows/budibase_ci.yml index e03768a420..ccbfa3ae24 100644 --- a/.github/workflows/budibase_ci.yml +++ b/.github/workflows/budibase_ci.yml @@ -34,3 +34,12 @@ jobs: CI: true name: Budibase CI - run: yarn test:e2e:ci + + - name: Build and Push Staging Docker Image + # Only run on push + if: ${{ github.event_name == 'push' && github.ref == 'refs/heads/master' }} + run: yarn build:staging:docker + env: + DOCKER_USER: ${{ secrets.DOCKER_USERNAME }} + DOCKER_PASSWORD: ${{ secrets.DOCKER_API_KEY }} + diff --git a/hosting/scripts/linux/release-to-docker-hub.sh b/hosting/scripts/linux/release-to-docker-hub.sh index b1921916e4..1661fed9f0 100755 --- a/hosting/scripts/linux/release-to-docker-hub.sh +++ b/hosting/scripts/linux/release-to-docker-hub.sh @@ -1,9 +1,15 @@ #!/bin/bash + +tag=$1 +tag=${tag:-latest} + pushd ../../build docker-compose build --force app-service docker-compose build --force worker-service -docker tag build_app-service budibase/budibase-apps:latest + +docker tag build_app-service budibase/budibase-apps:$tag +docker tag build_worker-service budibase/budibase-worker:$tag + docker push budibase/budibase-apps -docker tag build_worker-service budibase/budibase-worker:latest docker push budibase/budibase-worker popd diff --git a/package.json b/package.json index 37efca51ba..037e9c4b1c 100644 --- a/package.json +++ b/package.json @@ -33,6 +33,7 @@ "format": "prettier --write \"{,!(node_modules)/**/}*.{js,jsx,svelte}\"", "test:e2e": "lerna run cy:test", "test:e2e:ci": "lerna run cy:ci", - "build:docker": "cd hosting/scripts/linux/ && ./release-to-docker-hub.sh && cd -" + "build:docker": "cd hosting/scripts/linux/ && ./release-to-docker-hub.sh && cd -", + "build:docker:staging": "cd hosting/scripts/linux/ && ./release-to-docker-hub.sh staging && cd -" } } From 1aa86f4bffcbf712b68118924c35fb67f6f1140a Mon Sep 17 00:00:00 2001 From: Martin McKeaveney <martin@shogunsystems.co.uk> Date: Fri, 29 Jan 2021 10:45:11 +0000 Subject: [PATCH 25/26] adding docker login command --- .github/workflows/budibase_ci.yml | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/.github/workflows/budibase_ci.yml b/.github/workflows/budibase_ci.yml index ccbfa3ae24..171780a058 100644 --- a/.github/workflows/budibase_ci.yml +++ b/.github/workflows/budibase_ci.yml @@ -38,7 +38,9 @@ jobs: - name: Build and Push Staging Docker Image # Only run on push if: ${{ github.event_name == 'push' && github.ref == 'refs/heads/master' }} - run: yarn build:staging:docker + run: | + docker login -u $DOCKER_USER -p $DOCKER_PASSWORD + yarn build:staging:docker env: DOCKER_USER: ${{ secrets.DOCKER_USERNAME }} DOCKER_PASSWORD: ${{ secrets.DOCKER_API_KEY }} From 5f727d6913448e3cb8c2b37fd9ea5a47b6e85829 Mon Sep 17 00:00:00 2001 From: Martin McKeaveney <martin@budibase.com> Date: Fri, 29 Jan 2021 12:11:40 +0000 Subject: [PATCH 26/26] Update budibase_ci.yml --- .github/workflows/budibase_ci.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/budibase_ci.yml b/.github/workflows/budibase_ci.yml index 171780a058..bd10833f91 100644 --- a/.github/workflows/budibase_ci.yml +++ b/.github/workflows/budibase_ci.yml @@ -40,7 +40,7 @@ jobs: if: ${{ github.event_name == 'push' && github.ref == 'refs/heads/master' }} run: | docker login -u $DOCKER_USER -p $DOCKER_PASSWORD - yarn build:staging:docker + yarn build:docker:staging env: DOCKER_USER: ${{ secrets.DOCKER_USERNAME }} DOCKER_PASSWORD: ${{ secrets.DOCKER_API_KEY }}