From 5695827f861e9eb61d7f54b0a04033dec864a96e Mon Sep 17 00:00:00 2001 From: Martin McKeaveney Date: Thu, 25 Nov 2021 10:29:09 +0100 Subject: [PATCH 001/175] auto app creation from template E2E, added warning to automations that they can't run in dev --- .../CreateAutomationModal.svelte | 13 +- .../components/start/CreateAppModal.svelte | 15 +- .../pages/builder/portal/apps/index.svelte | 71 +- packages/builder/yarn.lock | 787 +----------------- packages/server/scripts/qa/testScript.js | 46 + packages/server/src/integrations/index.ts | 4 +- packages/server/src/integrations/oracle.ts | 29 +- packages/server/src/integrations/utils.ts | 8 +- packages/server/yarn.lock | 787 +----------------- 9 files changed, 187 insertions(+), 1573 deletions(-) create mode 100644 packages/server/scripts/qa/testScript.js diff --git a/packages/builder/src/components/automation/AutomationPanel/CreateAutomationModal.svelte b/packages/builder/src/components/automation/AutomationPanel/CreateAutomationModal.svelte index cf3dc8f314..36723d7726 100644 --- a/packages/builder/src/components/automation/AutomationPanel/CreateAutomationModal.svelte +++ b/packages/builder/src/components/automation/AutomationPanel/CreateAutomationModal.svelte @@ -3,7 +3,14 @@ import { database } from "stores/backend" import { automationStore } from "builderStore" import { notifications } from "@budibase/bbui" - import { Input, ModalContent, Layout, Body, Icon } from "@budibase/bbui" + import { + Input, + InlineAlert, + ModalContent, + Layout, + Body, + Icon, + } from "@budibase/bbui" import analytics, { Events } from "analytics" let name @@ -56,6 +63,10 @@ onConfirm={createAutomation} disabled={!selectedTrigger || !name} > + Please name your automation, then select a trigger. Every automation must start with a trigger. diff --git a/packages/builder/src/components/start/CreateAppModal.svelte b/packages/builder/src/components/start/CreateAppModal.svelte index 68845e075b..75df17e532 100644 --- a/packages/builder/src/components/start/CreateAppModal.svelte +++ b/packages/builder/src/components/start/CreateAppModal.svelte @@ -83,12 +83,11 @@ } async function createNewApp() { - const letTemplateToUse = - Object.keys(template).length === 0 ? null : template + const templateToUse = Object.keys(template).length === 0 ? null : template submitting = true // Check a template exists if we are important - if (letTemplateToUse?.fromFile && !$values.file) { + if (templateToUse?.fromFile && !$values.file) { $errors.file = "Please choose a file to import" valid = false submitting = false @@ -99,10 +98,10 @@ // Create form data to create app let data = new FormData() data.append("name", $values.name.trim()) - data.append("useTemplate", letTemplateToUse != null) - if (letTemplateToUse) { - data.append("templateName", letTemplateToUse.name) - data.append("templateKey", letTemplateToUse.key) + data.append("useTemplate", templateToUse != null) + if (templateToUse) { + data.append("templateName", templateToUse.name) + data.append("templateKey", templateToUse.key) data.append("templateFile", $values.file) } @@ -116,7 +115,7 @@ analytics.captureEvent(Events.APP.CREATED, { name: $values.name, appId: appJson.instance._id, - letTemplateToUse, + templateToUse, }) // Select Correct Application/DB in prep for creating user diff --git a/packages/builder/src/pages/builder/portal/apps/index.svelte b/packages/builder/src/pages/builder/portal/apps/index.svelte index da0d977a42..7c2d7723d2 100644 --- a/packages/builder/src/pages/builder/portal/apps/index.svelte +++ b/packages/builder/src/pages/builder/portal/apps/index.svelte @@ -13,9 +13,11 @@ notifications, Search, } from "@budibase/bbui" + import Spinner from "components/common/Spinner.svelte" import CreateAppModal from "components/start/CreateAppModal.svelte" import UpdateAppModal from "components/start/UpdateAppModal.svelte" - import { del } from "builderStore/api" + import { store, automationStore } from "builderStore" + import api, { del, post, get } from "builderStore/api" import { onMount } from "svelte" import { apps, auth, admin } from "stores/portal" import download from "downloadjs" @@ -24,6 +26,7 @@ import AppCard from "components/start/AppCard.svelte" import AppRow from "components/start/AppRow.svelte" import { AppStatus } from "constants" + import analytics, { Events } from "analytics" let layout = "grid" let sortBy = "name" @@ -38,6 +41,7 @@ let searchTerm = "" let cloud = $admin.cloud let appName = "" + let creatingFromTemplate = false $: enrichedApps = enrichApps($apps, $auth.user, sortBy) $: filteredApps = enrichedApps.filter(app => @@ -92,6 +96,59 @@ creatingApp = true } + const autoCreateApp = async () => { + try { + // TODO: Iterate App Names and append a number + const appName = template.key + Math.floor(Math.random() * 100) + + console.log("APP NAME", appName) + + // Create form data to create app + let data = new FormData() + data.append("name", appName) + data.append("useTemplate", true) + data.append("templateKey", template.key) + + // Create App + const appResp = await post("/api/applications", data, {}) + const appJson = await appResp.json() + if (!appResp.ok) { + throw new Error(appJson.message) + } + + analytics.captureEvent(Events.APP.CREATED, { + name: appName, + appId: appJson.instance._id, + template, + }) + + // Select Correct Application/DB in prep for creating user + const applicationPkg = await get( + `/api/applications/${appJson.instance._id}/appPackage` + ) + const pkg = await applicationPkg.json() + if (applicationPkg.ok) { + await store.actions.initialise(pkg) + await automationStore.actions.fetch() + // update checklist - incase first app + await admin.init() + } else { + throw new Error(pkg) + } + + // Create user + const userResp = await api.post(`/api/users/metadata/self`, { + roleId: "BASIC", + }) + await userResp.json() + await auth.setInitInfo({}) + $goto(`/builder/app/${appJson.instance._id}`) + } catch (error) { + console.error(error) + notifications.error(error) + } + } + const stopAppCreation = () => { template = null creatingApp = false @@ -194,7 +251,7 @@ template = { key: templateKey, } - initiateAppCreation() + autoCreateApp() } else { notifications.error("Your Template URL is invalid. Please try another.") } @@ -202,12 +259,14 @@ onMount(async () => { await apps.load() - loaded = true // if the portal is loaded from an external URL with a template param const initInfo = await auth.getInitInfo() if (initInfo.init_template) { + creatingFromTemplate = true createAppFromTemplateUrl(initInfo.init_template) + return } + loaded = true }) @@ -285,6 +344,12 @@ {/if} + {#if creatingFromTemplate} +
+

Creating your Budibase app from your selected template...

+ +
+ {/if} =2.3.x" - -svg.filter.js@^2.0.2: - version "2.0.2" - resolved "https://registry.yarnpkg.com/svg.filter.js/-/svg.filter.js-2.0.2.tgz#91008e151389dd9230779fcbe6e2c9a362d1c203" - integrity sha1-kQCOFROJ3ZIwd5/L5uLJo2LRwgM= - dependencies: - svg.js "^2.2.5" - -svg.js@>=2.3.x, svg.js@^2.0.1, svg.js@^2.2.5, svg.js@^2.4.0, svg.js@^2.6.5: - version "2.7.1" - resolved "https://registry.yarnpkg.com/svg.js/-/svg.js-2.7.1.tgz#eb977ed4737001eab859949b4a398ee1bb79948d" - integrity sha512-ycbxpizEQktk3FYvn/8BH+6/EuWXg7ZpQREJvgacqn46gIddG24tNNe4Son6omdXCnSOaApnpZw6MPCBA1dODA== - -svg.pathmorphing.js@^0.1.3: - version "0.1.3" - resolved "https://registry.yarnpkg.com/svg.pathmorphing.js/-/svg.pathmorphing.js-0.1.3.tgz#c25718a1cc7c36e852ecabc380e758ac09bb2b65" - integrity sha512-49HWI9X4XQR/JG1qXkSDV8xViuTLIWm/B/7YuQELV5KMOPtXjiwH4XPJvr/ghEDibmLQ9Oc22dpWpG0vUDDNww== - dependencies: - svg.js "^2.4.0" - -svg.resize.js@^1.4.3: - version "1.4.3" - resolved "https://registry.yarnpkg.com/svg.resize.js/-/svg.resize.js-1.4.3.tgz#885abd248e0cd205b36b973c4b578b9a36f23332" - integrity sha512-9k5sXJuPKp+mVzXNvxz7U0uC9oVMQrrf7cFsETznzUDDm0x8+77dtZkWdMfRlmbkEEYvUn9btKuZ3n41oNA+uw== - dependencies: - svg.js "^2.6.5" - svg.select.js "^2.1.2" - -svg.select.js@^2.1.2: - version "2.1.2" - resolved "https://registry.yarnpkg.com/svg.select.js/-/svg.select.js-2.1.2.tgz#e41ce13b1acff43a7441f9f8be87a2319c87be73" - integrity sha512-tH6ABEyJsAOVAhwcCjF8mw4crjXSI1aa7j2VQR8ZuJ37H2MBUbyeqYr5nEO7sSN3cy9AR9DUwNg0t/962HlDbQ== - dependencies: - svg.js "^2.2.5" - -svg.select.js@^3.0.1: - version "3.0.1" - resolved "https://registry.yarnpkg.com/svg.select.js/-/svg.select.js-3.0.1.tgz#a4198e359f3825739226415f82176a90ea5cc917" - integrity sha512-h5IS/hKkuVCbKSieR9uQCj9w+zLHoPh+ce19bBYyqF53g6mnPB8sAtIbe1s9dh2S2fCmYX2xel1Ln3PJBbK4kw== - dependencies: - svg.js "^2.6.5" - symbol-observable@^1.1.0: version "1.2.0" resolved "https://registry.yarnpkg.com/symbol-observable/-/symbol-observable-1.2.0.tgz#c22688aed4eab3cdc2dfeacbb561660560a00804" @@ -6474,14 +5748,6 @@ throttleit@^1.0.0: resolved "https://registry.yarnpkg.com/throttleit/-/throttleit-1.0.0.tgz#9e785836daf46743145a5984b6268d828528ac6c" integrity sha1-nnhYNtr0Z0MUWlmEtiaNgoUorGw= -through2@^2.0.0: - version "2.0.5" - resolved "https://registry.yarnpkg.com/through2/-/through2-2.0.5.tgz#01c1e39eb31d07cb7d03a96a70823260b23132cd" - integrity sha512-/mrRod8xqpA+IHSLyGCQ2s8SPHiCDEeQJSep1jqLYeEUClOFG2Qsh+4FU6G9VeqpZnGW/Su8LQGc4YKni5rYSQ== - dependencies: - readable-stream "~2.3.6" - xtend "~4.0.1" - through@2, through@~2.3, through@~2.3.1: version "2.3.8" resolved "https://registry.yarnpkg.com/through/-/through-2.3.8.tgz#0dd4c9ffaabc357960b1b724115d7e0e86a2e1f5" @@ -6504,11 +5770,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-object-path@^0.3.0: version "0.3.0" resolved "https://registry.yarnpkg.com/to-object-path/-/to-object-path-0.3.0.tgz#297588b7b0e7e0ac08e04e672f85c1f4999e17af" @@ -6636,18 +5897,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.14.3" - resolved "https://registry.yarnpkg.com/uglify-js/-/uglify-js-3.14.3.tgz#c0f25dfea1e8e5323eccf59610be08b6043c15cf" - integrity sha512-mic3aOdiq01DuSVx0TseaEzMIVqebMZ0Z3vaeDhFEh9bsc24hV1TFvN74reA2vs08D0ZWfNjAcJ3UbVLaBss+g== - unicode-canonical-property-names-ecmascript@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/unicode-canonical-property-names-ecmascript/-/unicode-canonical-property-names-ecmascript-2.0.0.tgz#301acdc525631670d39f6146e0e77ff6bbdebddc" @@ -6789,11 +6038,6 @@ vite@^2.1.5: optionalDependencies: fsevents "~2.3.2" -vm2@^3.9.4: - version "3.9.5" - resolved "https://registry.yarnpkg.com/vm2/-/vm2-3.9.5.tgz#5288044860b4bbace443101fcd3bddb2a0aa2496" - integrity sha512-LuCAHZN75H9tdrAiLFf030oW7nJV5xwNMuk1ymOZwopmuK3d2H4L1Kv4+GFHgarKiLfXXLFU+7LDABHnwOkWng== - w3c-hr-time@^1.0.2: version "1.0.2" resolved "https://registry.yarnpkg.com/w3c-hr-time/-/w3c-hr-time-1.0.2.tgz#0a89cdf5cc15822df9c360543676963e0cc308cd" @@ -6894,11 +6138,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= - wrap-ansi@^3.0.1: version "3.0.1" resolved "https://registry.yarnpkg.com/wrap-ansi/-/wrap-ansi-3.0.1.tgz#288a04d87eda5c286e060dfe8f135ce8d007f8ba" @@ -6946,11 +6185,6 @@ xmlchars@^2.2.0: resolved "https://registry.yarnpkg.com/xmlchars/-/xmlchars-2.2.0.tgz#060fe1bcb7f9c76fe2a17db86a9bc3ab894210cb" integrity sha512-JZnDKK8B0RCDw84FNdDAIpZK+JuJw+s7Lz8nksI7SIuU3UXJJslUthsi+uWBUYOwPFwW7W7PRLRfUKpxjtjFCw== -xtend@~4.0.1: - version "4.0.2" - resolved "https://registry.yarnpkg.com/xtend/-/xtend-4.0.2.tgz#bb72779f5fa465186b1f438f674fa347fdb5db54" - integrity sha512-LKYU1iAXJXUgAXn9URjiu+MWhyUXHsvfp7mcuYm9dSUKK0/CjtrUwFAxD82/mCWbtLsGjFIad0wIsod4zrTAEQ== - y18n@^4.0.0: version "4.0.3" resolved "https://registry.yarnpkg.com/y18n/-/y18n-4.0.3.tgz#b5f259c82cd6e336921efd7bfd8bf560de9eeedf" @@ -6994,11 +6228,6 @@ yauzl@^2.10.0: buffer-crc32 "~0.2.3" fd-slicer "~1.1.0" -year@^0.2.1: - version "0.2.1" - resolved "https://registry.yarnpkg.com/year/-/year-0.2.1.tgz#4083ae520a318b23ec86037f3000cb892bdf9bb0" - integrity sha1-QIOuUgoxiyPshgN/MADLiSvfm7A= - yup@0.29.2: version "0.29.2" resolved "https://registry.yarnpkg.com/yup/-/yup-0.29.2.tgz#5302abd9024cca335b987793f8df868e410b7b67" diff --git a/packages/server/scripts/qa/testScript.js b/packages/server/scripts/qa/testScript.js new file mode 100644 index 0000000000..8e4648d8ee --- /dev/null +++ b/packages/server/scripts/qa/testScript.js @@ -0,0 +1,46 @@ +#!/usr/bin/env node +const { Client } = require("pg") + +let client + +// Connect +async function connect() { + client = new Client({ + host: "localhost", + port: 5432, + database: "test", + user: "postgres", + password: "root", + }) + await client.connect() +} + +async function insertData() { + const data = [{ id: 1 }, { id: 3 }] + let sql = "" + for (let item of data) { + sql += `INSERT INTO test(id) VALUES(${item.id}); \n` + } + console.log(sql) + await client.query(sql) +} + +// Fills up a postgres database +async function run() { + await connect() + + // Drops table + await client.query("DROP TABLE IF EXISTS test") + + // Creates new table + await client.query(`CREATE TABLE "test" ("id" serial, PRIMARY KEY ("id"))`) + + // Insert some data + await insertData() + + const res = await client.query("SELECT * from test") + console.log(res.rows) + await client.end() +} + +run() diff --git a/packages/server/src/integrations/index.ts b/packages/server/src/integrations/index.ts index eff499f978..8f2f083fc5 100644 --- a/packages/server/src/integrations/index.ts +++ b/packages/server/src/integrations/index.ts @@ -40,9 +40,9 @@ const INTEGRATIONS = { } // optionally add oracle integration if the oracle binary can be installed -if (!(process.arch === 'arm64' && process.platform === 'darwin')) { +if (!(process.arch === "arm64" && process.platform === "darwin")) { const oracle = require("./oracle") - DEFINITIONS[SourceNames.ORACLE] = oracle.schema + DEFINITIONS[SourceNames.ORACLE] = oracle.schema INTEGRATIONS[SourceNames.ORACLE] = oracle.integration } diff --git a/packages/server/src/integrations/oracle.ts b/packages/server/src/integrations/oracle.ts index c74977bece..13658399db 100644 --- a/packages/server/src/integrations/oracle.ts +++ b/packages/server/src/integrations/oracle.ts @@ -352,14 +352,23 @@ module OracleModule { * Knex default returning behaviour does not work with oracle * Manually add the behaviour for the return column */ - private addReturning(query: SqlQuery, bindings: BindParameters, returnColumn: string) { + private addReturning( + query: SqlQuery, + bindings: BindParameters, + returnColumn: string + ) { if (bindings instanceof Array) { bindings.push({ dir: oracledb.BIND_OUT }) - query.sql = query.sql + ` returning \"${returnColumn}\" into :${bindings.length}` + query.sql = + query.sql + ` returning \"${returnColumn}\" into :${bindings.length}` } } - private async internalQuery(query: SqlQuery, returnColum?: string, operation?: string): Promise> { + private async internalQuery( + query: SqlQuery, + returnColum?: string, + operation?: string + ): Promise> { let connection try { connection = await this.getConnection() @@ -367,7 +376,10 @@ module OracleModule { const options: ExecuteOptions = { autoCommit: true } const bindings: BindParameters = query.bindings || [] - if (returnColum && (operation === Operation.CREATE || operation === Operation.UPDATE)) { + if ( + returnColum && + (operation === Operation.CREATE || operation === Operation.UPDATE) + ) { this.addReturning(query, bindings, returnColum) } @@ -414,14 +426,14 @@ module OracleModule { return response.rows ? response.rows : [] } - async update(query: SqlQuery | string): Promise { + async update(query: SqlQuery | string): Promise { const response = await this.internalQuery(getSqlQuery(query)) return response.rows && response.rows.length ? response.rows : [{ updated: true }] } - async delete(query: SqlQuery | string): Promise { + async delete(query: SqlQuery | string): Promise { const response = await this.internalQuery(getSqlQuery(query)) return response.rows && response.rows.length ? response.rows @@ -431,8 +443,9 @@ module OracleModule { async query(json: QueryJson) { const primaryKeys = json.meta!.table!.primary const primaryKey = primaryKeys ? primaryKeys[0] : undefined - const queryFn = (query: any, operation: string) => this.internalQuery(query, primaryKey, operation) - const processFn = (response: any) => response.rows ? response.rows : [] + const queryFn = (query: any, operation: string) => + this.internalQuery(query, primaryKey, operation) + const processFn = (response: any) => (response.rows ? response.rows : []) const output = await this.queryWithReturning(json, queryFn, processFn) return output } diff --git a/packages/server/src/integrations/utils.ts b/packages/server/src/integrations/utils.ts index 07cf0505bf..97380b1b5b 100644 --- a/packages/server/src/integrations/utils.ts +++ b/packages/server/src/integrations/utils.ts @@ -2,7 +2,11 @@ import { SqlQuery } from "../definitions/datasource" import { Datasource, Table } from "../definitions/common" import { SourceNames } from "../definitions/datasource" const { DocumentTypes, SEPARATOR } = require("../db/utils") -const { FieldTypes, BuildSchemaErrors, InvalidColumns } = require("../constants") +const { + FieldTypes, + BuildSchemaErrors, + InvalidColumns, +} = require("../constants") const DOUBLE_SEPARATOR = `${SEPARATOR}${SEPARATOR}` const ROW_ID_REGEX = /^\[.*]$/g @@ -42,7 +46,7 @@ export enum SqlClients { MS_SQL = "mssql", POSTGRES = "pg", MY_SQL = "mysql", - ORACLE = "oracledb" + ORACLE = "oracledb", } export function isExternalTable(tableId: string) { diff --git a/packages/server/yarn.lock b/packages/server/yarn.lock index 18f89f9269..f609651afa 100644 --- a/packages/server/yarn.lock +++ b/packages/server/yarn.lock @@ -951,30 +951,6 @@ resolved "https://registry.yarnpkg.com/@bcoe/v8-coverage/-/v8-coverage-0.2.3.tgz#75a2e8b51cb758a7553d6804a5932d7aace75c39" integrity sha512-0hYQ8SB4Db5zvZB4axdMHGwEaQjkZzFjQiN9LVYvIFB2nSUHW9tYpxWriPrWDASIxiaXax83REcLxuSdnGPZtw== -"@budibase/auth@^0.9.185-alpha.12": - version "0.9.188" - resolved "https://registry.yarnpkg.com/@budibase/auth/-/auth-0.9.188.tgz#82df2fc6e6e3100679a19ced8bab6fe6625f8744" - integrity sha512-U/7MfxbSrsQGGFyTdAicPDafxGeR8zsuh0I17ZujcIiZUoi1eWbLz4/ODITlTj9zxiXojMf+/u68YAF1ABdxDw== - dependencies: - "@techpass/passport-openidconnect" "^0.3.0" - aws-sdk "^2.901.0" - bcryptjs "^2.4.3" - cls-hooked "^4.2.2" - ioredis "^4.27.1" - jsonwebtoken "^8.5.1" - koa-passport "^4.1.4" - lodash "^4.17.21" - lodash.isarguments "^3.1.0" - node-fetch "^2.6.1" - passport-google-auth "^1.0.2" - passport-google-oauth "^2.0.0" - passport-jwt "^4.0.0" - passport-local "^1.0.0" - sanitize-s3-objectkey "^0.0.1" - tar-fs "^2.1.1" - uuid "^8.3.2" - zlib "^1.0.5" - "@budibase/bbui@^0.9.139": version "0.9.187" resolved "https://registry.yarnpkg.com/@budibase/bbui/-/bbui-0.9.187.tgz#84f0a37301cfa41f50eaa335243ac08923d9e34f" @@ -1024,94 +1000,6 @@ svelte-flatpickr "^3.2.3" svelte-portal "^1.0.0" -"@budibase/bbui@^0.9.188": - version "0.9.188" - resolved "https://registry.yarnpkg.com/@budibase/bbui/-/bbui-0.9.188.tgz#82c108172fbf81a84378e0ef4ca7cba61ea8d0ba" - integrity sha512-KevJxHdASITX9RzLvm+b2K3VMwqYFTumvrlpStAP6UIoyPkls0xaAc2KiJJ7Kkq48UkkBtAbOYaMxsFbAaTsbQ== - dependencies: - "@adobe/spectrum-css-workflow-icons" "^1.2.1" - "@spectrum-css/actionbutton" "^1.0.1" - "@spectrum-css/actiongroup" "^1.0.1" - "@spectrum-css/avatar" "^3.0.2" - "@spectrum-css/button" "^3.0.1" - "@spectrum-css/buttongroup" "^3.0.2" - "@spectrum-css/checkbox" "^3.0.2" - "@spectrum-css/dialog" "^3.0.1" - "@spectrum-css/divider" "^1.0.3" - "@spectrum-css/dropzone" "^3.0.2" - "@spectrum-css/fieldgroup" "^3.0.2" - "@spectrum-css/fieldlabel" "^3.0.1" - "@spectrum-css/icon" "^3.0.1" - "@spectrum-css/illustratedmessage" "^3.0.2" - "@spectrum-css/inputgroup" "^3.0.2" - "@spectrum-css/label" "^2.0.10" - "@spectrum-css/link" "^3.1.1" - "@spectrum-css/menu" "^3.0.1" - "@spectrum-css/modal" "^3.0.1" - "@spectrum-css/pagination" "^3.0.3" - "@spectrum-css/picker" "^1.0.1" - "@spectrum-css/popover" "^3.0.1" - "@spectrum-css/progressbar" "^1.0.2" - "@spectrum-css/progresscircle" "^1.0.2" - "@spectrum-css/radio" "^3.0.2" - "@spectrum-css/search" "^3.0.2" - "@spectrum-css/sidenav" "^3.0.2" - "@spectrum-css/statuslight" "^3.0.2" - "@spectrum-css/stepper" "^3.0.3" - "@spectrum-css/switch" "^1.0.2" - "@spectrum-css/table" "^3.0.1" - "@spectrum-css/tabs" "^3.0.1" - "@spectrum-css/tags" "^3.0.2" - "@spectrum-css/textfield" "^3.0.1" - "@spectrum-css/toast" "^3.0.1" - "@spectrum-css/tooltip" "^3.0.3" - "@spectrum-css/treeview" "^3.0.2" - "@spectrum-css/typography" "^3.0.1" - "@spectrum-css/underlay" "^2.0.9" - "@spectrum-css/vars" "^3.0.1" - dayjs "^1.10.4" - svelte-flatpickr "^3.2.3" - svelte-portal "^1.0.0" - -"@budibase/client@^0.9.185-alpha.12": - version "0.9.188" - resolved "https://registry.yarnpkg.com/@budibase/client/-/client-0.9.188.tgz#c5bf6f3bccdb370b236b9e69e0118334ad3eccfd" - integrity sha512-yP2WLWb2yQAwPBxVzpNGjSHpATMZMzcxl2gK6vw662F7YC8xGFHNfZZqEwPvrVwnx+d7LFZR/kJxJOvvk7YCVw== - dependencies: - "@budibase/bbui" "^0.9.188" - "@budibase/standard-components" "^0.9.139" - "@budibase/string-templates" "^0.9.188" - regexparam "^1.3.0" - shortid "^2.2.15" - svelte-spa-router "^3.0.5" - -"@budibase/handlebars-helpers@^0.11.7": - version "0.11.7" - resolved "https://registry.yarnpkg.com/@budibase/handlebars-helpers/-/handlebars-helpers-0.11.7.tgz#8e5f9843d7dd10503e9f608555a96ccf4d836c46" - integrity sha512-PvGHAv22cWSFExs1kc0WglwsmCEUEOqWvSp6JCFZwtc3qAAr5yMfLK8WGVQ63ALvyzWZiyxF+yrlzeeaohCMJw== - dependencies: - array-sort "^1.0.0" - define-property "^2.0.2" - extend-shallow "^3.0.2" - for-in "^1.0.2" - get-object "^0.2.0" - get-value "^3.0.1" - handlebars "^4.7.7" - handlebars-utils "^1.0.6" - has-value "^2.0.2" - 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.1" - kind-of "^6.0.3" - micromatch "^3.1.5" - relative "^3.0.2" - striptags "^3.1.1" - to-gfm-code-block "^0.1.1" - year "^0.2.1" - "@budibase/standard-components@^0.9.139": version "0.9.139" resolved "https://registry.yarnpkg.com/@budibase/standard-components/-/standard-components-0.9.139.tgz#cf8e2b759ae863e469e50272b3ca87f2827e66e3" @@ -1130,18 +1018,6 @@ svelte-apexcharts "^1.0.2" svelte-flatpickr "^3.1.0" -"@budibase/string-templates@^0.9.185-alpha.12", "@budibase/string-templates@^0.9.188": - version "0.9.188" - resolved "https://registry.yarnpkg.com/@budibase/string-templates/-/string-templates-0.9.188.tgz#f37836ed23dbd2217cb157030ada7cd59f6a2165" - integrity sha512-O/bL0I5OJO9W2OizIe9vBHowCLwwASPBrsGiAIB8L0x6AivYMq8j1mvNRwLXZjpHTjv86bU/LyG/3CP837oDsg== - dependencies: - "@budibase/handlebars-helpers" "^0.11.7" - dayjs "^1.10.4" - handlebars "^4.7.6" - handlebars-utils "^1.0.6" - lodash "^4.17.20" - vm2 "^3.9.4" - "@bull-board/api@3.7.0", "@bull-board/api@^3.7.0": version "3.7.0" resolved "https://registry.yarnpkg.com/@bull-board/api/-/api-3.7.0.tgz#231f687187c0cb34e0b97f463917b6aaeb4ef6af" @@ -2177,17 +2053,6 @@ dependencies: defer-to-connect "^1.0.1" -"@techpass/passport-openidconnect@^0.3.0": - version "0.3.2" - resolved "https://registry.yarnpkg.com/@techpass/passport-openidconnect/-/passport-openidconnect-0.3.2.tgz#f8fd5d97256286665dbf26dac92431f977ab1e63" - integrity sha512-fnCtEiexXSHA029B//hJcCJlLJrT3lhpNCyA0rnz58Qttz0BLGCVv6yMT8HmOnGThH6vcDOVwdgKM3kbCQtEhw== - dependencies: - base64url "^3.0.1" - oauth "^0.9.15" - passport-strategy "^1.0.0" - request "^2.88.0" - webfinger "^0.4.2" - "@tootallnate/once@1": version "1.1.2" resolved "https://registry.yarnpkg.com/@tootallnate/once/-/once-1.1.2.tgz#ccb91445360179a04e7fe6aff78c00ffc1eeaf82" @@ -2830,7 +2695,7 @@ arg@^4.1.0: resolved "https://registry.yarnpkg.com/arg/-/arg-4.1.3.tgz#269fc7ad5b8e42cb63c896d5666017261c144089" integrity sha512-58S9QDqG0Xx27YwPSt9fJxivjYl432YCwfDMfZ+71RAqUrZef7LrKQZ3LHLOwCS4FLNBplP533Zx895SeOCHvA== -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== @@ -2872,15 +2737,6 @@ array-equal@^1.0.0: resolved "https://registry.yarnpkg.com/array-equal/-/array-equal-1.0.0.tgz#8c2a5ef2472fd9ea742b04c77a75093ba2757c93" integrity sha1-jCpe8kcv2ep0KwTHenUJO6J1fJM= -array-sort@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/array-sort/-/array-sort-1.0.0.tgz#e4c05356453f56f53512a7d1d6123f2c54c0a88a" - integrity sha512-ihLeJkonmdiAsD7vpgN3CRcx2J2S0TiYW+IS/5zHBI7mKUq3ySvBdzzBfD236ubDBQFiiyG3SWCPc+msQ9KoYg== - dependencies: - default-compare "^1.0.0" - get-value "^2.0.6" - kind-of "^5.0.2" - array-union@^2.1.0: version "2.1.0" resolved "https://registry.yarnpkg.com/array-union/-/array-union-2.1.0.tgz#b798420adbeb1de828d84acd8a2e23d3efe85e8d" @@ -2923,13 +2779,6 @@ astral-regex@^1.0.0: resolved "https://registry.yarnpkg.com/astral-regex/-/astral-regex-1.0.0.tgz#6c8c3fb827dd43ee3918f27b82782ab7658a6fd9" integrity sha512-+Ryf6g3BKoRc7jfp7ad8tM4TtMiaWvbF/1/sQcZPkkS7ag3D5nMBCe2UfOTONtAkaG0tO0ij3C5Lwmf1EiyjHg== -async-hook-jl@^1.7.6: - version "1.7.6" - resolved "https://registry.yarnpkg.com/async-hook-jl/-/async-hook-jl-1.7.6.tgz#4fd25c2f864dbaf279c610d73bf97b1b28595e68" - integrity sha512-gFaHkFfSxTjvoxDMYqDuGHlcRyUuamF8s+ZTtJdDzqjws4mCt7v0vuV79/E2Wr2/riMQgtG4/yUtXWs1gZ7JMg== - dependencies: - stack-chain "^1.3.7" - async-limiter@~1.0.0: version "1.0.1" resolved "https://registry.yarnpkg.com/async-limiter/-/async-limiter-1.0.1.tgz#dd379e94f0db8310b08291f9d64c3209766617fd" @@ -2947,13 +2796,6 @@ async@^2.6.3: dependencies: lodash "^4.17.14" -async@~2.1.4: - version "2.1.5" - resolved "https://registry.yarnpkg.com/async/-/async-2.1.5.tgz#e587c68580994ac67fc56ff86d3ac56bdbe810bc" - integrity sha1-5YfGhYCZSsZ/xW/4bTrFa9voELw= - dependencies: - lodash "^4.14.0" - asynckit@^0.4.0: version "0.4.0" resolved "https://registry.yarnpkg.com/asynckit/-/asynckit-0.4.0.tgz#c79ed97f7f34cb8f2ba1bc9790bcc366474b4b79" @@ -2969,13 +2811,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" - aws-sdk@^2.767.0: version "2.1030.0" resolved "https://registry.yarnpkg.com/aws-sdk/-/aws-sdk-2.1030.0.tgz#24a856af3d2b8b37c14a8f59974993661c66fd82" @@ -2991,21 +2826,6 @@ aws-sdk@^2.767.0: uuid "3.3.2" xml2js "0.4.19" -aws-sdk@^2.901.0: - version "2.1033.0" - resolved "https://registry.yarnpkg.com/aws-sdk/-/aws-sdk-2.1033.0.tgz#8bd0084142b15cc2ca427483c36c86b27abc046b" - integrity sha512-cgcjiuR82bhfBWTffqt6e9+Cn/UgeC6QPQTrlJy3GxwPxChthyrt/h5pekj2l4PLFvETsG10Y6CqQysJEMsncw== - dependencies: - buffer "4.9.2" - events "1.1.1" - ieee754 "1.1.13" - jmespath "0.15.0" - querystring "0.2.0" - sax "1.2.1" - url "0.10.3" - uuid "3.3.2" - xml2js "0.4.19" - aws-sign2@~0.7.0: version "0.7.0" resolved "https://registry.yarnpkg.com/aws-sign2/-/aws-sign2-0.7.0.tgz#b46e890934a9591f2d2f6f86d7e6a9f1b3fe76a8" @@ -3188,11 +3008,6 @@ base64-js@^1.0.2, base64-js@^1.3.1: resolved "https://registry.yarnpkg.com/base64-js/-/base64-js-1.5.1.tgz#1b1b440160a5bf7ad40b650f095963481903930a" integrity sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA== -base64url@3.x.x, base64url@^3.0.1: - version "3.0.1" - resolved "https://registry.yarnpkg.com/base64url/-/base64url-3.0.1.tgz#6399d572e2bc3f90a9a8b22d5dbb0a32d33f788d" - integrity sha512-ir1UPr3dkwexU7FdV8qBBbNDRUhMmIekYMFZfi+C/sLNnRESKPl23nB9b2pltqfOQNnGzsDdId90AEtG5tCx4A== - base@^0.11.1: version "0.11.2" resolved "https://registry.yarnpkg.com/base/-/base-0.11.2.tgz#7bde5ced145b6d551a90db87f83c558b4eb48a8f" @@ -3213,7 +3028,7 @@ bcrypt-pbkdf@^1.0.0: dependencies: tweetnacl "^0.14.3" -bcryptjs@2.4.3, bcryptjs@^2.4.3: +bcryptjs@2.4.3: version "2.4.3" resolved "https://registry.yarnpkg.com/bcryptjs/-/bcryptjs-2.4.3.tgz#9ab5627b93e60621ff7cdac5da9733027df1d0cb" integrity sha1-mrVie5PmBiH/fNrF2pczAn3x0Ms= @@ -3253,15 +3068,6 @@ bl@^3.0.0: dependencies: readable-stream "^3.0.1" -bl@^4.0.3: - version "4.1.0" - resolved "https://registry.yarnpkg.com/bl/-/bl-4.1.0.tgz#451535264182bec2fbbc83a62ab98cf11d9f7b3a" - integrity sha512-1W07cM9gS6DcLperZfFSj+bWLtaPGSOHWhPiGzXmvVJbRLdG82sH/Kn8EtW1VqWVA54AKf2h5k5BbnIbwF3h6w== - dependencies: - buffer "^5.5.0" - inherits "^2.0.4" - readable-stream "^3.4.0" - bluebird@^3.5.1, bluebird@^3.7.2: version "3.7.2" resolved "https://registry.yarnpkg.com/bluebird/-/bluebird-3.7.2.tgz#9f229c15be272454ffa973ace0dbee79a1b0c36f" @@ -3599,11 +3405,6 @@ chokidar@^3.5.2: optionalDependencies: fsevents "~2.3.2" -chownr@^1.1.1: - version "1.1.4" - resolved "https://registry.yarnpkg.com/chownr/-/chownr-1.1.4.tgz#6fc9d7b42d32a583596337666e7d08084da2cc6b" - integrity sha512-jJ0bqzaylmJtVnNgzTeSOs8DPavpbYgEr/b0YL8/2GO3xJEhInFmhKMUnEJQjZumK7KXGFhUy89PrsJWlakBVg== - ci-info@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/ci-info/-/ci-info-2.0.0.tgz#67a9e964be31a51e15e5010d58e6f12834002f46" @@ -3676,15 +3477,6 @@ clone-response@1.0.2, clone-response@^1.0.2: dependencies: mimic-response "^1.0.0" -cls-hooked@^4.2.2: - version "4.2.2" - resolved "https://registry.yarnpkg.com/cls-hooked/-/cls-hooked-4.2.2.tgz#ad2e9a4092680cdaffeb2d3551da0e225eae1908" - integrity sha512-J4Xj5f5wq/4jAvcdgoGsL3G103BtWpZrMo8NEinRltN+xpTZdI+M38pyQqhuFU/P792xkMFvnKSf+Lm81U1bxw== - dependencies: - async-hook-jl "^1.7.6" - emitter-listener "^1.0.1" - semver "^5.4.1" - cluster-key-slot@^1.1.0: version "1.1.0" resolved "https://registry.yarnpkg.com/cluster-key-slot/-/cluster-key-slot-1.1.0.tgz#30474b2a981fb12172695833052bc0d01336d10d" @@ -3801,13 +3593,6 @@ concat-map@0.0.1: resolved "https://registry.yarnpkg.com/concat-map/-/concat-map-0.0.1.tgz#d8a96bd77fd68df7793a73036a3ba0d5405d477b" integrity sha1-2Klr13/Wjfd5OnMDajug1UBdR3s= -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" - condense-newlines@^0.2.1: version "0.2.1" resolved "https://registry.yarnpkg.com/condense-newlines/-/condense-newlines-0.2.1.tgz#3de985553139475d32502c83b02f60684d24c55f" @@ -4041,13 +3826,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" @@ -4191,13 +3969,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" @@ -4457,13 +4228,6 @@ electron-to-chromium@^1.3.896: resolved "https://registry.yarnpkg.com/electron-to-chromium/-/electron-to-chromium-1.3.900.tgz#5be2c5818a2a012c511b4b43e87b6ab7a296d4f5" integrity sha512-SuXbQD8D4EjsaBaJJxySHbC+zq8JrFfxtb4GIr4E9n1BcROyMcRrJCYQNpJ9N+Wjf5mFp7Wp0OHykd14JNEzzQ== -emitter-listener@^1.0.1: - version "1.1.2" - resolved "https://registry.yarnpkg.com/emitter-listener/-/emitter-listener-1.1.2.tgz#56b140e8f6992375b3d7cb2cab1cc7432d9632e8" - integrity sha512-Bt1sBAGFHY9DKY+4/2cV6izcKJUf5T7/gkdmkxzX/qv9CcGH8xSwVRW5mtX03SWJtRTWSOpzCuWN9rBFYZepZQ== - dependencies: - shimmer "^1.2.0" - emittery@^0.8.1: version "0.8.1" resolved "https://registry.yarnpkg.com/emittery/-/emittery-0.8.1.tgz#bb23cc86d03b30aa75a7f734819dee2e1ba70860" @@ -4494,7 +4258,7 @@ encoding-down@^6.3.0: level-codec "^9.0.0" level-errors "^2.0.0" -end-of-stream@^1.0.0, end-of-stream@^1.1.0, end-of-stream@^1.4.1: +end-of-stream@^1.0.0, end-of-stream@^1.1.0: version "1.4.4" resolved "https://registry.yarnpkg.com/end-of-stream/-/end-of-stream-1.4.4.tgz#5ae64a5f45057baf3626ec14da0ca5e4b2431eb0" integrity sha512-+uw1inIHVPQoaVuHzRyXd21icM+cnt4CzD5rW+NC1wjOUSTOs+Te7FOv7AhN7vS9x/oIyhLP5PR1H+phQAHu5Q== @@ -4508,11 +4272,6 @@ end-stream@~0.1.0: dependencies: write-stream "~0.4.3" -ent@^2.2.0: - version "2.2.0" - resolved "https://registry.yarnpkg.com/ent/-/ent-2.2.0.tgz#e964219325a21d05f44466a2f686ed6ce5f5dd1d" - integrity sha1-6WQhkyWiHQX0RGai9obtbOX13R0= - errno@~0.1.1, errno@~0.1.7: version "0.1.8" resolved "https://registry.yarnpkg.com/errno/-/errno-0.1.8.tgz#8bb3e9c7d463be4976ff888f76b4809ebc2e811f" @@ -5272,11 +5031,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" @@ -5340,14 +5094,6 @@ get-intrinsic@^1.0.2, get-intrinsic@^1.1.0, get-intrinsic@^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-package-type@^0.1.0: version "0.1.0" resolved "https://registry.yarnpkg.com/get-package-type/-/get-package-type-0.1.0.tgz#8de2d803cff44df3bc6c456e6668b36c3926e11a" @@ -5410,13 +5156,6 @@ get-value@^2.0.3, get-value@^2.0.6: resolved "https://registry.yarnpkg.com/get-value/-/get-value-2.0.6.tgz#dc15ca1c672387ca76bd37ac0a395ba2042a2c28" integrity sha1-3BXKHGcjh8p2vTesCjlbogQqLCg= -get-value@^3.0.0, get-value@^3.0.1: - version "3.0.1" - resolved "https://registry.yarnpkg.com/get-value/-/get-value-3.0.1.tgz#5efd2a157f1d6a516d7524e124ac52d0a39ef5a8" - integrity sha512-mKZj9JLQrwMBtj5wxi6MH8Z5eSKaERpAwjg43dPtlGI1ZVEgH/qC7T8/6R2OBSUA+zzHBZgICsVJaEIV2tKTDA== - dependencies: - isobject "^3.0.1" - getopts@2.2.5: version "2.2.5" resolved "https://registry.yarnpkg.com/getopts/-/getopts-2.2.5.tgz#67a0fe471cacb9c687d817cab6450b96dde8313b" @@ -5506,32 +5245,6 @@ globby@^11.0.3: merge2 "^1.3.0" slash "^3.0.0" -google-auth-library@~0.10.0: - version "0.10.0" - resolved "https://registry.yarnpkg.com/google-auth-library/-/google-auth-library-0.10.0.tgz#6e15babee85fd1dd14d8d128a295b6838d52136e" - integrity sha1-bhW6vuhf0d0U2NEoopW2g41SE24= - dependencies: - gtoken "^1.2.1" - jws "^3.1.4" - lodash.noop "^3.0.1" - request "^2.74.0" - -google-p12-pem@^0.1.0: - version "0.1.2" - resolved "https://registry.yarnpkg.com/google-p12-pem/-/google-p12-pem-0.1.2.tgz#33c46ab021aa734fa0332b3960a9a3ffcb2f3177" - integrity sha1-M8RqsCGqc0+gMys5YKmj/8svMXc= - dependencies: - node-forge "^0.7.1" - -googleapis@^16.0.0: - version "16.1.0" - resolved "https://registry.yarnpkg.com/googleapis/-/googleapis-16.1.0.tgz#0f19f2d70572d918881a0f626e3b1a2fa8629576" - integrity sha1-Dxny1wVy2RiIGg9ibjsaL6hilXY= - dependencies: - async "~2.1.4" - google-auth-library "~0.10.0" - string-template "~1.0.0" - got@^8.3.1: version "8.3.2" resolved "https://registry.yarnpkg.com/got/-/got-8.3.2.tgz#1d23f64390e97f776cac52e5b936e5f514d2e937" @@ -5577,45 +5290,6 @@ graceful-fs@^4.1.10, graceful-fs@^4.1.11, graceful-fs@^4.1.15, graceful-fs@^4.1. resolved "https://registry.yarnpkg.com/graceful-fs/-/graceful-fs-4.2.8.tgz#e412b8d33f5e006593cbd3cee6df9f2cebbe802a" integrity sha512-qkIilPUYcNhJpd33n0GBXTB1MMPp14TxEsEs0pTrsSVucApsYzW5V+Q8Qxhik6KU3evy+qkAAowTByymK0avdg== -gtoken@^1.2.1: - version "1.2.3" - resolved "https://registry.yarnpkg.com/gtoken/-/gtoken-1.2.3.tgz#5509571b8afd4322e124cf66cf68115284c476d8" - integrity sha512-wQAJflfoqSgMWrSBk9Fg86q+sd6s7y6uJhIvvIPz++RElGlMtEqsdAR2oWwZ/WTEtp7P9xFbJRrT976oRgzJ/w== - dependencies: - google-p12-pem "^0.1.0" - jws "^3.0.0" - mime "^1.4.1" - request "^2.72.0" - -gulp-header@^1.7.1: - version "1.8.12" - resolved "https://registry.yarnpkg.com/gulp-header/-/gulp-header-1.8.12.tgz#ad306be0066599127281c4f8786660e705080a84" - integrity sha512-lh9HLdb53sC7XIZOYzTXM4lFuXElv3EVkSDhsd7DoJBj7hm+Ni7D3qYbb+Rr8DuM8nRanBvkVO9d7askreXGnQ== - dependencies: - concat-with-sourcemaps "*" - lodash.template "^4.4.0" - through2 "^2.0.0" - -handlebars-utils@^1.0.2, handlebars-utils@^1.0.4, handlebars-utils@^1.0.6: - version "1.0.6" - resolved "https://registry.yarnpkg.com/handlebars-utils/-/handlebars-utils-1.0.6.tgz#cb9db43362479054782d86ffe10f47abc76357f9" - integrity sha512-d5mmoQXdeEqSKMtQQZ9WkiUcO1E3tPbWxluCK9hVgIDPzQa9WsKo3Lbe/sGflTe7TomHEeZaOgwIkyIr1kfzkw== - dependencies: - kind-of "^6.0.0" - typeof-article "^0.1.1" - -handlebars@^4.7.6, handlebars@^4.7.7: - version "4.7.7" - resolved "https://registry.yarnpkg.com/handlebars/-/handlebars-4.7.7.tgz#9ce33416aad02dbd6c8fafa8240d5d98004945a1" - integrity sha512-aAcXm5OAfE/8IXkcZvCepKU3VzW1/39Fb5ZuqMtgI/hT8X2YgoMvBY5dLhq/cpOvw7Lk1nK/UF71aLG/ZnVYRA== - dependencies: - minimist "^1.2.5" - neo-async "^2.6.0" - source-map "^0.6.1" - wordwrap "^1.0.0" - optionalDependencies: - uglify-js "^3.1.4" - har-schema@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/har-schema/-/har-schema-2.0.0.tgz#a94c2224ebcac04782a0d9035521f24735b7ec92" @@ -5686,14 +5360,6 @@ has-value@^1.0.0: has-values "^1.0.0" isobject "^3.0.0" -has-value@^2.0.2: - version "2.0.2" - resolved "https://registry.yarnpkg.com/has-value/-/has-value-2.0.2.tgz#d0f12e8780ba8e90e66ad1a21c707fdb67c25658" - integrity sha512-ybKOlcRsK2MqrM3Hmz/lQxXHZ6ejzSPzpNabKB45jb5qDgJvKPa3SdapTsTLwEb9WltgWpOmNax7i+DzNOk4TA== - dependencies: - get-value "^3.0.0" - has-values "^2.0.1" - has-values@^0.1.4: version "0.1.4" resolved "https://registry.yarnpkg.com/has-values/-/has-values-0.1.4.tgz#6d61de95d91dfca9b9a02089ad384bff8f62b771" @@ -5707,13 +5373,6 @@ has-values@^1.0.0: is-number "^3.0.0" kind-of "^4.0.0" -has-values@^2.0.1: - version "2.0.1" - resolved "https://registry.yarnpkg.com/has-values/-/has-values-2.0.1.tgz#3876200ff86d8a8546a9264a952c17d5fc17579d" - integrity sha512-+QdH3jOmq9P8GfdjFg0eJudqx1FqU62NQJ4P16rOEHeRdl7ckgwn6uqQjzYE0ZoHVV/e5E2esuJ5Gl5+HUW19w== - dependencies: - kind-of "^6.0.2" - has-yarn@^2.1.0: version "2.1.0" resolved "https://registry.yarnpkg.com/has-yarn/-/has-yarn-2.1.0.tgz#137e11354a7b5bf11aa5cb649cf0c6f3ff2b2e77" @@ -5726,39 +5385,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.9" resolved "https://registry.yarnpkg.com/hosted-git-info/-/hosted-git-info-2.8.9.tgz#dffc0bf9a21c02209090f2aa69429e1414daf3f9" @@ -5788,14 +5414,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.5.0" resolved "https://registry.yarnpkg.com/http-assert/-/http-assert-1.5.0.tgz#c389ccd87ac16ed2dfa6246fd73b926aa00e6b8f" @@ -6042,7 +5660,7 @@ invert-kv@^2.0.0: resolved "https://registry.yarnpkg.com/invert-kv/-/invert-kv-2.0.0.tgz#7393f5afa59ec9ff5f67a27620d11c226e3eec02" integrity sha512-wPVv/y/QQ/Uiirj/vh3oP+1Ww+AWehmi1g5fFWGPF6IpCBCDVrhgHRMvrLfdYcwDh3QJbGXDW4JAuzxElLSqKA== -ioredis@^4.27.0, ioredis@^4.27.1: +ioredis@^4.27.0: version "4.28.0" resolved "https://registry.yarnpkg.com/ioredis/-/ioredis-4.28.0.tgz#5a2be3f37ff2075e2332f280eaeb02ab4d9ff0d3" integrity sha512-I+zkeeWp3XFgPT2CtJKxvaF5FjGBGt4yGYljRjQecdQKteThuAsKqffeF1lgHVlYnuNeozRbPOCDNZ7tDWPeig== @@ -6178,13 +5796,6 @@ is-docker@^2.0.0: resolved "https://registry.yarnpkg.com/is-docker/-/is-docker-2.2.1.tgz#33eeabe23cfe86f14bde4408a02c0cfb853acdaa" integrity sha512-F+i2BKsFrH66iaUFc0woD8sLy8getkwTwtOBjvs56Cx4CgJDeKQeqfz8wAYiSb8JOprWhHH5p77PbmYCvvUuXQ== -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" @@ -6274,13 +5885,6 @@ is-number-object@^1.0.4: dependencies: has-tostringtag "^1.0.0" -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" @@ -6303,13 +5907,6 @@ is-object@^1.0.1: resolved "https://registry.yarnpkg.com/is-object/-/is-object-1.0.2.tgz#a56552e1c665c9e950b4a025461da87e72f86fcf" integrity sha512-2rRIahhZr2UWb45fIOuvZGpFtz0TyOZLf32KxBbSoUCeZR495zCKlWUKKUByk3geS2eAs7ZAABt0Y/Rx0GiQGA== -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.2: version "3.0.3" resolved "https://registry.yarnpkg.com/is-path-inside/-/is-path-inside-3.0.3.tgz#d231362e53a07ff2b0e0ea7fed049161ffd16283" @@ -6355,13 +5952,6 @@ is-retry-allowed@^2.2.0: resolved "https://registry.yarnpkg.com/is-retry-allowed/-/is-retry-allowed-2.2.0.tgz#88f34cbd236e043e71b6932d09b0c65fb7b4d71d" integrity sha512-XVm7LOeLpTW4jV19QSH38vkswxoLud8sQ57YwJVTPWdiaI9I8keEhGFpBlslyVsgdQy4Opg8QOLb8YRgsyZiQg== -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-shared-array-buffer@^1.0.1: version "1.0.1" resolved "https://registry.yarnpkg.com/is-shared-array-buffer/-/is-shared-array-buffer-1.0.1.tgz#97b0c85fbdacb59c9c446fe653b82cf2b5b7cfe6" @@ -6454,11 +6044,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" @@ -7479,22 +7064,6 @@ jsonschema@1.4.0: resolved "https://registry.yarnpkg.com/jsonschema/-/jsonschema-1.4.0.tgz#1afa34c4bc22190d8e42271ec17ac8b3404f87b2" integrity sha512-/YgW6pRMr6M7C+4o8kS+B/2myEpHCrxO4PEWnqJNBFMjn7EWXqlQ4tGwL6xTHeRplwuZmcAncdvfOad1nT2yMw== -jsonwebtoken@^8.2.0, jsonwebtoken@^8.5.1: - version "8.5.1" - resolved "https://registry.yarnpkg.com/jsonwebtoken/-/jsonwebtoken-8.5.1.tgz#00e71e0b8df54c2121a1f26137df2280673bcc0d" - integrity sha512-XjwVfRS6jTMsqYs0EsuJ4LGxXV14zQybNd4L2r0UvbVnSF9Af8x7p5MzbJ90Ioz/9TI41/hTCvznF/loiSzn8w== - dependencies: - jws "^3.2.2" - lodash.includes "^4.3.0" - lodash.isboolean "^3.0.3" - lodash.isinteger "^4.0.4" - lodash.isnumber "^3.0.3" - lodash.isplainobject "^4.0.6" - lodash.isstring "^4.0.1" - lodash.once "^4.0.0" - ms "^2.1.1" - semver "^5.6.0" - jsprim@^1.2.2: version "1.4.0" resolved "https://registry.yarnpkg.com/jsprim/-/jsprim-1.4.0.tgz#a3b87e40298d8c380552d8cc7628a0bb95a22918" @@ -7534,7 +7103,7 @@ jwa@^1.4.1: ecdsa-sig-formatter "1.0.11" safe-buffer "^5.0.1" -jws@3.x.x, jws@^3.0.0, jws@^3.1.4, jws@^3.2.2: +jws@3.x.x: version "3.2.2" resolved "https://registry.yarnpkg.com/jws/-/jws-3.2.2.tgz#001099f3639468c9414000e99995fa52fb478304" integrity sha512-YHlZCB6lMTllWDtSPHz/ZXTsi8S00usEV6v1tjq8tOUZzw7DpSDWVXjXDre6ed1w/pd495ODpHZYSdkRTsa0HA== @@ -7561,7 +7130,7 @@ keyv@3.0.0, 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= @@ -7575,12 +7144,12 @@ 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== -kind-of@^6.0.0, kind-of@^6.0.2, kind-of@^6.0.3: +kind-of@^6.0.0, kind-of@^6.0.2: version "6.0.3" resolved "https://registry.yarnpkg.com/kind-of/-/kind-of-6.0.3.tgz#07c05034a6c349fa06e24fa35aa76db4580ce4dd" integrity sha512-dcS1ul+9tmeD95T+x28/ehLgd9mENa3LsvDTtzm3vyBEO7RPptvAD+t44WVXaUjTBRcrpFeFlC8WCruUR456hw== @@ -7675,13 +7244,6 @@ koa-mount@^4.0.0: debug "^4.0.1" koa-compose "^4.1.0" -koa-passport@^4.1.4: - version "4.1.4" - resolved "https://registry.yarnpkg.com/koa-passport/-/koa-passport-4.1.4.tgz#5f1665c1c2a37ace79af9f970b770885ca30ccfa" - integrity sha512-dJBCkl4X+zdYxbI2V2OtoGy0PUenpvp2ZLLWObc8UJhsId0iQpTFT8RVcuA0709AL2txGwRHnSPoT1bYNGa6Kg== - dependencies: - passport "^0.4.0" - koa-pino-logger@3.0.0: version "3.0.0" resolved "https://registry.yarnpkg.com/koa-pino-logger/-/koa-pino-logger-3.0.0.tgz#27600b4f3639e8767dfc6b66493109c5457f53ba" @@ -7998,11 +7560,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" @@ -8018,46 +7575,16 @@ lodash.flatten@^4.4.0: resolved "https://registry.yarnpkg.com/lodash.flatten/-/lodash.flatten-4.4.0.tgz#f31c22225a9632d2bbf8e4addbef240aa765a61f" integrity sha1-8xwiIlqWMtK7+OSt2+8kCqdlph8= -lodash.includes@^4.3.0: - version "4.3.0" - resolved "https://registry.yarnpkg.com/lodash.includes/-/lodash.includes-4.3.0.tgz#60bb98a87cb923c68ca1e51325483314849f553f" - integrity sha1-YLuYqHy5I8aMoeUTJUgzFISfVT8= - lodash.isarguments@^3.1.0: version "3.1.0" resolved "https://registry.yarnpkg.com/lodash.isarguments/-/lodash.isarguments-3.1.0.tgz#2f573d85c6a24289ff00663b491c1d338ff3458a" integrity sha1-L1c9hcaiQon/AGY7SRwdM4/zRYo= -lodash.isboolean@^3.0.3: - version "3.0.3" - resolved "https://registry.yarnpkg.com/lodash.isboolean/-/lodash.isboolean-3.0.3.tgz#6c2e171db2a257cd96802fd43b01b20d5f5870f6" - integrity sha1-bC4XHbKiV82WgC/UOwGyDV9YcPY= - lodash.isequal@^4.5.0: version "4.5.0" resolved "https://registry.yarnpkg.com/lodash.isequal/-/lodash.isequal-4.5.0.tgz#415c4478f2bcc30120c22ce10ed3226f7d3e18e0" integrity sha1-QVxEePK8wwEgwizhDtMib30+GOA= -lodash.isinteger@^4.0.4: - version "4.0.4" - resolved "https://registry.yarnpkg.com/lodash.isinteger/-/lodash.isinteger-4.0.4.tgz#619c0af3d03f8b04c31f5882840b77b11cd68343" - integrity sha1-YZwK89A/iwTDH1iChAt3sRzWg0M= - -lodash.isnumber@^3.0.3: - version "3.0.3" - resolved "https://registry.yarnpkg.com/lodash.isnumber/-/lodash.isnumber-3.0.3.tgz#3ce76810c5928d03352301ac287317f11c0b1ffc" - integrity sha1-POdoEMWSjQM1IwGsKHMX8RwLH/w= - -lodash.isplainobject@^4.0.6: - version "4.0.6" - resolved "https://registry.yarnpkg.com/lodash.isplainobject/-/lodash.isplainobject-4.0.6.tgz#7c526a52d89b45c45cc690b88163be0497f550cb" - integrity sha1-fFJqUtibRcRcxpC4gWO+BJf1UMs= - -lodash.isstring@^4.0.1: - version "4.0.1" - resolved "https://registry.yarnpkg.com/lodash.isstring/-/lodash.isstring-4.0.1.tgz#d527dfb5456eca7cc9bb95d5daeaf88ba54a5451" - integrity sha1-1SfftUVuynzJu5XV2ur4i6VKVFE= - lodash.keys@^4.2.0: version "4.2.0" resolved "https://registry.yarnpkg.com/lodash.keys/-/lodash.keys-4.2.0.tgz#a08602ac12e4fb83f91fc1fb7a360a4d9ba35205" @@ -8073,21 +7600,11 @@ lodash.merge@^4.6.2: resolved "https://registry.yarnpkg.com/lodash.merge/-/lodash.merge-4.6.2.tgz#558aa53b43b661e1925a0afdfa36a9a1085fe57a" integrity sha512-0KpjqXRVvrYyCsX1swR/XTK0va6VQkQM6MNo7PqW77ByjAhoARA8EfrP1N4+KlKj8YS0ZUCtRT/YUuhyYDujIQ== -lodash.noop@^3.0.1: - version "3.0.1" - resolved "https://registry.yarnpkg.com/lodash.noop/-/lodash.noop-3.0.1.tgz#38188f4d650a3a474258439b96ec45b32617133c" - integrity sha1-OBiPTWUKOkdCWEObluxFsyYXEzw= - lodash.omit@^4.5.0: version "4.5.0" resolved "https://registry.yarnpkg.com/lodash.omit/-/lodash.omit-4.5.0.tgz#6eb19ae5a1ee1dd9df0b969e66ce0b7fa30b5e60" integrity sha1-brGa5aHuHdnfC5aeZs4Lf6MLXmA= -lodash.once@^4.0.0: - version "4.1.1" - resolved "https://registry.yarnpkg.com/lodash.once/-/lodash.once-4.1.1.tgz#0dd3971213c7c56df880977d504c88fb471a97ac" - integrity sha1-DdOXEhPHxW34gJd9UEyI+0cal6w= - lodash.pick@^4.0.0: version "4.4.0" resolved "https://registry.yarnpkg.com/lodash.pick/-/lodash.pick-4.4.0.tgz#52f05610fff9ded422611441ed1fc123a03001b3" @@ -8098,21 +7615,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" @@ -8123,7 +7625,7 @@ 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.21, lodash@^4.14.0, lodash@^4.17.11, lodash@^4.17.14, lodash@^4.17.19, lodash@^4.17.20, lodash@^4.17.21, lodash@^4.17.3, lodash@^4.7.0: +lodash@4.17.21, lodash@^4.17.11, lodash@^4.17.14, lodash@^4.17.19, lodash@^4.17.21, lodash@^4.17.3, lodash@^4.7.0: version "4.17.21" resolved "https://registry.yarnpkg.com/lodash/-/lodash-4.17.21.tgz#679591c564c3bffaae8454cf0b3df370c3d6911c" integrity sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg== @@ -8293,7 +7795,7 @@ methods@^1.0.1, methods@^1.1.1, methods@^1.1.2: resolved "https://registry.yarnpkg.com/methods/-/methods-1.1.2.tgz#5529a4d67654134edcc5266656835b0f851afcee" integrity sha1-VSmk1nZUE07cxSZmVoNbD4Ua/O4= -micromatch@^3.1.10, micromatch@^3.1.4, micromatch@^3.1.5: +micromatch@^3.1.10, micromatch@^3.1.4: version "3.1.10" resolved "https://registry.yarnpkg.com/micromatch/-/micromatch-3.1.10.tgz#70859bc95c9840952f359a068a3fc49f9ecfac23" integrity sha512-MWikgl9n9M3w+bpsY3He8L+w9eF9338xRl8IAO5viDizwSzziFEyUzo2xrrloB64ADbTf8uA8vRqqttDTOmccg== @@ -8394,11 +7896,6 @@ mixin-deep@^1.2.0: for-in "^1.0.2" is-extendable "^1.0.1" -mkdirp-classic@^0.5.2: - version "0.5.3" - resolved "https://registry.yarnpkg.com/mkdirp-classic/-/mkdirp-classic-0.5.3.tgz#fa10c9115cc6d8865be221ba47ee9bed78601113" - integrity sha512-gKLcREMhtuZRwRAfqP3RFW+TK4JqApVBtOIftVgjuABpAtpxhPGaDcfvbhNvD0B8iD1oUr/txX35NjcaY6Ns/A== - mkdirp@^0.5.0, mkdirp@^0.5.1: version "0.5.5" resolved "https://registry.yarnpkg.com/mkdirp/-/mkdirp-0.5.5.tgz#d91cefd62d1436ca0f41620e251288d420099def" @@ -8418,7 +7915,7 @@ moment-timezone@^0.5.31: dependencies: moment ">= 2.9.0" -"moment@>= 2.9.0", moment@^2.18.1: +"moment@>= 2.9.0": version "2.29.1" resolved "https://registry.yarnpkg.com/moment/-/moment-2.29.1.tgz#b2be769fa31940be9eeea6469c075e35006fa3d3" integrity sha512-kHmoybcPV8Sqy59DwNDY3Jefr64lK/by/da0ViFcuA4DH0vQg5Q6Ze5VimxkfQNSC+Mls/Kx53s7TjP1RhFEDQ== @@ -8518,11 +8015,6 @@ nan@^2.12.1: resolved "https://registry.yarnpkg.com/nan/-/nan-2.15.0.tgz#3f34a473ff18e15c1b5626b62903b5ad6e665fee" integrity sha512-8ZtvEnA2c5aYCZYd1cvgdnU6cqwixRoYg70xPLWUws5ORTa/lnw+u4amixRS/Ac5U5mQVgp9pnlSUnbNWFaWZQ== -nanoid@^2.1.0: - version "2.1.11" - resolved "https://registry.yarnpkg.com/nanoid/-/nanoid-2.1.11.tgz#ec24b8a758d591561531b4176a01e3ab4f0f0280" - integrity sha512-s/snB+WGm6uwi0WjsZdaVcuf3KJXlfGl2LcxgwkEwJF0D/BWzVWAZW/XY4bFaiR7s0Jk3FPvlnepg1H1b1UwlA== - nanomatch@^1.2.9: version "1.2.13" resolved "https://registry.yarnpkg.com/nanomatch/-/nanomatch-1.2.13.tgz#b87a8aa4fc0de8fe6be88895b38983ff265bd119" @@ -8570,11 +8062,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== - nice-try@^1.0.4: version "1.0.5" resolved "https://registry.yarnpkg.com/nice-try/-/nice-try-1.0.5.tgz#a3378a7696ce7d223e88fc9b764bd7ef1089e366" @@ -8597,11 +8084,6 @@ node-fetch@^2.6.1: dependencies: whatwg-url "^5.0.0" -node-forge@^0.7.1: - version "0.7.6" - resolved "https://registry.yarnpkg.com/node-forge/-/node-forge-0.7.6.tgz#fdf3b418aee1f94f0ef642cd63486c77ca9724ac" - integrity sha512-sol30LUpz1jQFBjOKwbjxijiE3b6pjd74YwfD0fJOKPjF+fONKb2Yg8rYgS6+bK6VDl+/wfr4IYpC7jDzLUIfw== - node-gyp-build@~4.1.0: version "4.1.1" resolved "https://registry.yarnpkg.com/node-gyp-build/-/node-gyp-build-4.1.1.tgz#d7270b5d86717068d114cc57fff352f96d745feb" @@ -8720,11 +8202,6 @@ oauth-sign@~0.9.0: resolved "https://registry.yarnpkg.com/oauth-sign/-/oauth-sign-0.9.0.tgz#47a7b016baa68b5fa0ecf3dee08a85c679ac6455" integrity sha512-fexhUFFPTGV8ybAtSIGbV6gOkSv8UtRbDBnAyLQw4QPKkgNlsH2ByPGtMUqdWkos6YCRmAqViwgZrJc/mRDzZQ== -oauth@0.9.x, oauth@^0.9.15: - version "0.9.15" - resolved "https://registry.yarnpkg.com/oauth/-/oauth-0.9.15.tgz#bd1fefaf686c96b75475aed5196412ff60cfb9c1" - integrity sha1-vR/vr2hslrdUda7VGWQS/2DPucE= - object-assign@^2.0.0: version "2.1.1" resolved "https://registry.yarnpkg.com/object-assign/-/object-assign-2.1.1.tgz#43c36e5d569ff8e4816c4efa8be02d26967c18aa" @@ -9022,84 +8499,6 @@ pascalcase@^0.1.1: resolved "https://registry.yarnpkg.com/pascalcase/-/pascalcase-0.1.1.tgz#b363e55e8006ca6fe21784d2db22bd15d7917f14" integrity sha1-s2PlXoAGym/iF4TS2yK9FdeRfxQ= -passport-google-auth@^1.0.2: - version "1.0.2" - resolved "https://registry.yarnpkg.com/passport-google-auth/-/passport-google-auth-1.0.2.tgz#8b300b5aa442ef433de1d832ed3112877d0b2938" - integrity sha1-izALWqRC70M94dgy7TESh30LKTg= - dependencies: - googleapis "^16.0.0" - passport-strategy "1.x" - -passport-google-oauth1@1.x.x: - version "1.0.0" - resolved "https://registry.yarnpkg.com/passport-google-oauth1/-/passport-google-oauth1-1.0.0.tgz#af74a803df51ec646f66a44d82282be6f108e0cc" - integrity sha1-r3SoA99R7GRvZqRNgigr5vEI4Mw= - dependencies: - passport-oauth1 "1.x.x" - -passport-google-oauth20@2.x.x: - version "2.0.0" - resolved "https://registry.yarnpkg.com/passport-google-oauth20/-/passport-google-oauth20-2.0.0.tgz#0d241b2d21ebd3dc7f2b60669ec4d587e3a674ef" - integrity sha512-KSk6IJ15RoxuGq7D1UKK/8qKhNfzbLeLrG3gkLZ7p4A6DBCcv7xpyQwuXtWdpyR0+E0mwkpjY1VfPOhxQrKzdQ== - dependencies: - passport-oauth2 "1.x.x" - -passport-google-oauth@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/passport-google-oauth/-/passport-google-oauth-2.0.0.tgz#f6eb4bc96dd6c16ec0ecfdf4e05ec48ca54d4dae" - integrity sha512-JKxZpBx6wBQXX1/a1s7VmdBgwOugohH+IxCy84aPTZNq/iIPX6u7Mqov1zY7MKRz3niFPol0KJz8zPLBoHKtYA== - dependencies: - passport-google-oauth1 "1.x.x" - passport-google-oauth20 "2.x.x" - -passport-jwt@^4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/passport-jwt/-/passport-jwt-4.0.0.tgz#7f0be7ba942e28b9f5d22c2ebbb8ce96ef7cf065" - integrity sha512-BwC0n2GP/1hMVjR4QpnvqA61TxenUMlmfNjYNgK0ZAs0HK4SOQkHcSv4L328blNTLtHq7DbmvyNJiH+bn6C5Mg== - dependencies: - jsonwebtoken "^8.2.0" - passport-strategy "^1.0.0" - -passport-local@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/passport-local/-/passport-local-1.0.0.tgz#1fe63268c92e75606626437e3b906662c15ba6ee" - integrity sha1-H+YyaMkudWBmJkN+O5BmYsFbpu4= - dependencies: - passport-strategy "1.x.x" - -passport-oauth1@1.x.x: - version "1.2.0" - resolved "https://registry.yarnpkg.com/passport-oauth1/-/passport-oauth1-1.2.0.tgz#5229d431781bf5b265bec86ce9a9cce58a756cf9" - integrity sha512-Sv2YWodC6jN12M/OXwmR4BIXeeIHjjbwYTQw4kS6tHK4zYzSEpxBgSJJnknBjICA5cj0ju3FSnG1XmHgIhYnLg== - dependencies: - oauth "0.9.x" - passport-strategy "1.x.x" - utils-merge "1.x.x" - -passport-oauth2@1.x.x: - version "1.6.1" - resolved "https://registry.yarnpkg.com/passport-oauth2/-/passport-oauth2-1.6.1.tgz#c5aee8f849ce8bd436c7f81d904a3cd1666f181b" - integrity sha512-ZbV43Hq9d/SBSYQ22GOiglFsjsD1YY/qdiptA+8ej+9C1dL1TVB+mBE5kDH/D4AJo50+2i8f4bx0vg4/yDDZCQ== - dependencies: - base64url "3.x.x" - oauth "0.9.x" - passport-strategy "1.x.x" - uid2 "0.0.x" - utils-merge "1.x.x" - -passport-strategy@1.x, passport-strategy@1.x.x, passport-strategy@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/passport-strategy/-/passport-strategy-1.0.0.tgz#b5539aa8fc225a3d1ad179476ddf236b440f52e4" - integrity sha1-tVOaqPwiWj0a0XlHbd8ja0QPUuQ= - -passport@^0.4.0: - version "0.4.1" - resolved "https://registry.yarnpkg.com/passport/-/passport-0.4.1.tgz#941446a21cb92fc688d97a0861c38ce9f738f270" - integrity sha512-IxXgZZs8d7uFSt3eqNjM9NQ3g3uQCW5avD8mRNoXV99Yig50vjuaez6dQK2qC0kVWPRTujxY0dWgGfT09adjYg== - dependencies: - passport-strategy "1.x.x" - pause "0.0.1" - path-exists@^3.0.0: version "3.0.0" resolved "https://registry.yarnpkg.com/path-exists/-/path-exists-3.0.0.tgz#ce0ebeaa5f78cb18925ea7d810d7b59b010fd515" @@ -9154,11 +8553,6 @@ path-type@^4.0.0: resolved "https://registry.yarnpkg.com/path-type/-/path-type-4.0.0.tgz#84ed01c0a7ba380afe09d90a8c180dcd9d03043b" integrity sha512-gDKb8aZMDeD/tZWs9P6+q0J9Mwkdl6xMV8TjnGP3qJVJ06bdMgkbBlLU8IdfOsIsFz2BW1rNVT3XuNEl8zPAvw== -pause@0.0.1: - version "0.0.1" - resolved "https://registry.yarnpkg.com/pause/-/pause-0.0.1.tgz#1d408b3fdb76923b9543d96fb4c9dfd535d9cb5d" - integrity sha1-HUCLP9t2kjuVQ9lvtMnf1TXZy10= - pend@~1.2.0: version "1.2.0" resolved "https://registry.yarnpkg.com/pend/-/pend-1.2.0.tgz#7a57eb550a6783f9115331fcf4663d5c8e007a50" @@ -9855,7 +9249,7 @@ readable-stream@1.1.14, readable-stream@^1.0.27-1: isarray "0.0.1" string_decoder "~0.10.x" -"readable-stream@2 || 3", readable-stream@^3.0.0, readable-stream@^3.0.1, readable-stream@^3.1.1, readable-stream@^3.4.0, readable-stream@^3.6.0: +"readable-stream@2 || 3", readable-stream@^3.0.0, readable-stream@^3.0.1, readable-stream@^3.4.0, readable-stream@^3.6.0: version "3.6.0" resolved "https://registry.yarnpkg.com/readable-stream/-/readable-stream-3.6.0.tgz#337bbda3adc0706bd3e024426a286d4b4b2c9198" integrity sha512-BViHy7LKeTz4oNnkcLJ+lVSL6vpiFeX6/d3oSH8zCW7UxP2onchk+vTGB143xuFjHS3deTgkKoXXymXqymiIdA== @@ -9989,16 +9383,6 @@ regex-not@^1.0.0, regex-not@^1.0.2: extend-shallow "^3.0.2" safe-regex "^1.1.0" -regexparam@2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/regexparam/-/regexparam-2.0.0.tgz#059476767d5f5f87f735fc7922d133fd1a118c8c" - integrity sha512-gJKwd2MVPWHAIFLsaYDZfyKzHNS4o7E/v8YmNf44vmeV2e4YfVoDToTOKTvE7ab68cRJ++kLuEXJBaEeJVt5ow== - -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" @@ -10042,21 +9426,6 @@ regjsparser@^0.7.0: dependencies: jsesc "~0.5.0" -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" @@ -10093,7 +9462,7 @@ request-promise-native@^1.0.5: stealthy-require "^1.1.1" tough-cookie "^2.3.3" -request@^2.72.0, request@^2.74.0, request@^2.87.0, request@^2.88.0: +request@^2.87.0: version "2.88.2" resolved "https://registry.yarnpkg.com/request/-/request-2.88.2.tgz#d73c918731cb5a87da047e207234146f664d12b3" integrity sha512-MsvtOrfG9ZcrOwAW+Qi+F6HbD0CWXEh9ou77uOb7FM2WPhwT7smM833PzanhJLsgXjN89Ir6V2PczXNnMpwKhw== @@ -10295,11 +9664,6 @@ sane@^4.0.3: minimist "^1.1.1" walker "~1.0.5" -sanitize-s3-objectkey@^0.0.1: - version "0.0.1" - resolved "https://registry.yarnpkg.com/sanitize-s3-objectkey/-/sanitize-s3-objectkey-0.0.1.tgz#efa9887cd45275b40234fb4bb12fc5754fe64e7e" - integrity sha512-ZTk7aqLxy4sD40GWcYWoLfbe05XLmkKvh6vGKe13ADlei24xlezcvjgKy1qRArlaIbIMYaqK7PCalvZtulZlaQ== - saslprep@^1.0.0: version "1.0.3" resolved "https://registry.yarnpkg.com/saslprep/-/saslprep-1.0.3.tgz#4c02f946b56cf54297e347ba1093e7acac4cf226" @@ -10312,7 +9676,7 @@ sax@1.2.1: resolved "https://registry.yarnpkg.com/sax/-/sax-1.2.1.tgz#7b8e656190b228e81a66aea748480d828cd2d37a" integrity sha1-e45lYZCyKOgaZq6nSEgNgozS03o= -sax@>=0.1.1, sax@>=0.6.0, sax@^1.2.4: +sax@>=0.6.0, sax@^1.2.4: version "1.2.4" resolved "https://registry.yarnpkg.com/sax/-/sax-1.2.4.tgz#2816234e2378bddc4e5354fab5caa895df7100d9" integrity sha512-NqVDv9TpANUjFm0N8uM5GxL36UgKi9/atZw+x7YFnQ8ckwFGKrl4xX4yWtrey3UJm5nP1kUbnYgLopqWNSRhWw== @@ -10336,11 +9700,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-diff@^3.1.1: version "3.1.1" resolved "https://registry.yarnpkg.com/semver-diff/-/semver-diff-3.1.1.tgz#05f77ce59f325e00e2706afd67bb506ddb1ca32b" @@ -10348,7 +9707,7 @@ semver-diff@^3.1.1: dependencies: semver "^6.3.0" -"semver@2 || 3 || 4 || 5", semver@^5.1.0, semver@^5.4.1, semver@^5.5.0, semver@^5.6.0, semver@^5.7.1: +"semver@2 || 3 || 4 || 5", semver@^5.1.0, semver@^5.5.0, semver@^5.6.0, semver@^5.7.1: version "5.7.1" resolved "https://registry.yarnpkg.com/semver/-/semver-5.7.1.tgz#a954f931aeba508d307bbf069eff0c01c96116f7" integrity sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ== @@ -10445,18 +9804,6 @@ shell-path@^2.1.0: dependencies: shell-env "^0.3.0" -shimmer@^1.2.0: - version "1.2.1" - resolved "https://registry.yarnpkg.com/shimmer/-/shimmer-1.2.1.tgz#610859f7de327b587efebf501fb43117f9aff337" - integrity sha512-sQTKC1Re/rM6XyFM6fIAGHRPVGvyXfgzIDvzoq608vM+jeyVD0Tu1E6Np0Kc2zAIFWIj963V2800iF/9LPieQw== - -shortid@^2.2.15: - version "2.2.16" - resolved "https://registry.yarnpkg.com/shortid/-/shortid-2.2.16.tgz#b742b8f0cb96406fd391c76bfc18a67a57fe5608" - integrity sha512-Ugt+GIZqvGXCIItnsL+lvFJOiN7RYqlGy7QE41O3YC1xbNSeDGIRO7xg2JJXIAj1cAGnOeC1r7/T9pgrtQbv4g== - dependencies: - nanoid "^2.1.0" - side-channel@^1.0.4: version "1.0.4" resolved "https://registry.yarnpkg.com/side-channel/-/side-channel-1.0.4.tgz#efce5c8fdc104ee751b25c58d4290011fa5ea2cf" @@ -10706,11 +10053,6 @@ sshpk@^1.7.0: safer-buffer "^2.0.2" tweetnacl "~0.14.0" -stack-chain@^1.3.7: - version "1.3.7" - resolved "https://registry.yarnpkg.com/stack-chain/-/stack-chain-1.3.7.tgz#d192c9ff4ea6a22c94c4dd459171e3f00cea1285" - integrity sha1-0ZLJ/06moiyUxN1FkXHj8AzqEoU= - stack-utils@^1.0.1: version "1.0.5" resolved "https://registry.yarnpkg.com/stack-utils/-/stack-utils-1.0.5.tgz#a19b0b01947e0029c8e451d5d61a498f5bb1471b" @@ -10753,11 +10095,6 @@ stealthy-require@^1.1.1: resolved "https://registry.yarnpkg.com/stealthy-require/-/stealthy-require-1.1.1.tgz#35b09875b4ff49f26a777e509b3090a3226bf24b" integrity sha1-NbCYdbT/SfJqd35QmzCQoyJr8ks= -step@0.0.x: - version "0.0.6" - resolved "https://registry.yarnpkg.com/step/-/step-0.0.6.tgz#143e7849a5d7d3f4a088fe29af94915216eeede2" - integrity sha1-FD54SaXX0/SgiP4pr5SRUhbu7eI= - strict-uri-encode@^1.0.0: version "1.1.0" resolved "https://registry.yarnpkg.com/strict-uri-encode/-/strict-uri-encode-1.1.0.tgz#279b225df1d582b1f54e65addd4352e18faa0713" @@ -10771,11 +10108,6 @@ string-length@^4.0.1: char-regex "^1.0.2" strip-ansi "^6.0.0" -string-template@~1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/string-template/-/string-template-1.0.0.tgz#9e9f2233dc00f218718ec379a28a5673ecca8b96" - integrity sha1-np8iM9wA8hhxjsN5oopWc+zKi5Y= - string-width@^3.0.0, string-width@^3.1.0: version "3.1.0" resolved "https://registry.yarnpkg.com/string-width/-/string-width-3.1.0.tgz#22767be21b62af1081574306f69ac51b62203961" @@ -10901,11 +10233,6 @@ strip-outer@^1.0.0: dependencies: escape-string-regexp "^1.0.2" -striptags@^3.1.1: - version "3.2.0" - resolved "https://registry.yarnpkg.com/striptags/-/striptags-3.2.0.tgz#cc74a137db2de8b0b9a370006334161f7dd67052" - integrity sha512-g45ZOGzHDMe2bdYMdIvdAfCQkCTDMGBazSw1ypMowwGIee7ZQ5dU0rBJ8Jqgl+jAKIv4dbeE1jscZq9wid1Tkw== - sublevel-pouchdb@7.2.2: version "7.2.2" resolved "https://registry.yarnpkg.com/sublevel-pouchdb/-/sublevel-pouchdb-7.2.2.tgz#49e46cd37883bf7ff5006d7c5b9bcc7bcc1f422f" @@ -10995,13 +10322,6 @@ svelte-portal@^1.0.0: resolved "https://registry.yarnpkg.com/svelte-portal/-/svelte-portal-1.0.0.tgz#36a47c5578b1a4d9b4dc60fa32a904640ec4cdd3" integrity sha512-nHf+DS/jZ6jjnZSleBMSaZua9JlG5rZv9lOGKgJuaZStfevtjIlUJrkLc3vbV8QdBvPPVmvcjTlazAzfKu0v3Q== -svelte-spa-router@^3.0.5: - version "3.2.0" - resolved "https://registry.yarnpkg.com/svelte-spa-router/-/svelte-spa-router-3.2.0.tgz#fae3311d292451236cb57131262406cf312b15ee" - integrity sha512-igemo5Vs82TGBBw+DjWt6qKameXYzNs6aDXcTxou5XbEvOjiRcAM6MLkdVRCatn6u8r42dE99bt/br7T4qe/AQ== - dependencies: - regexparam "2.0.0" - svelte@^3.38.2: version "3.44.1" resolved "https://registry.yarnpkg.com/svelte/-/svelte-3.44.1.tgz#5cc772a8340f4519a4ecd1ac1a842325466b1a63" @@ -11077,16 +10397,6 @@ table@^5.2.3: slice-ansi "^2.1.0" string-width "^3.0.0" -tar-fs@^2.1.1: - version "2.1.1" - resolved "https://registry.yarnpkg.com/tar-fs/-/tar-fs-2.1.1.tgz#489a15ab85f1f0befabb370b7de4f9eb5cbe8784" - integrity sha512-V0r2Y9scmbDRLCNex/+hYzvp/zyYjvFbHPNgVTKfQvVrb6guiE/fxP+XblDNR011utopbkex2nM4dHNV6GDsng== - dependencies: - chownr "^1.1.1" - mkdirp-classic "^0.5.2" - pump "^3.0.0" - tar-stream "^2.1.4" - tar-stream@^1.5.2: version "1.6.2" resolved "https://registry.yarnpkg.com/tar-stream/-/tar-stream-1.6.2.tgz#8ea55dab37972253d9a9af90fdcd559ae435c555" @@ -11100,17 +10410,6 @@ tar-stream@^1.5.2: to-buffer "^1.1.1" xtend "^4.0.0" -tar-stream@^2.1.4: - version "2.2.0" - resolved "https://registry.yarnpkg.com/tar-stream/-/tar-stream-2.2.0.tgz#acad84c284136b060dc3faa64474aa9aebd77287" - integrity sha512-ujeqbceABgwMZxEJnk2HDY2DlnUZ+9oEcb1KzTVfYHio0UE6dG71n60d8D2I4qNvleWrrXpmjpt7vZeF1LnMZQ== - dependencies: - bl "^4.0.3" - end-of-stream "^1.4.1" - fs-constants "^1.0.0" - inherits "^2.0.3" - readable-stream "^3.1.1" - tarn@^1.1.5: version "1.1.5" resolved "https://registry.yarnpkg.com/tarn/-/tarn-1.1.5.tgz#7be88622e951738b9fa3fb77477309242cdddc2d" @@ -11277,11 +10576,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" @@ -11508,28 +10802,11 @@ typedarray-to-buffer@^3.1.5: dependencies: is-typedarray "^1.0.0" -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" - typescript@^4.3.5: version "4.3.5" resolved "https://registry.yarnpkg.com/typescript/-/typescript-4.3.5.tgz#4d1c37cc16e893973c45a06886b7113234f119f4" integrity sha512-DqQgihaQ9cUrskJo9kIyW/+g0Vxsk8cDtZ52a3NGh0YNTfpUSArXSohyUGnvbPazEPLu398C0UxmKSOrPumUzA== -uglify-js@^3.1.4: - version "3.14.3" - resolved "https://registry.yarnpkg.com/uglify-js/-/uglify-js-3.14.3.tgz#c0f25dfea1e8e5323eccf59610be08b6043c15cf" - integrity sha512-mic3aOdiq01DuSVx0TseaEzMIVqebMZ0Z3vaeDhFEh9bsc24hV1TFvN74reA2vs08D0ZWfNjAcJ3UbVLaBss+g== - -uid2@0.0.x: - version "0.0.4" - resolved "https://registry.yarnpkg.com/uid2/-/uid2-0.0.4.tgz#033f3b1d5d32505f5ce5f888b9f3b667123c0a44" - integrity sha512-IevTus0SbGwQzYh3+fRsAMTVVPOoIVufzacXcHPmdlle1jUpq7BRL+mw3dgeLanvGZdwwbWhRV6XrcFNdBmjWA== - unbox-primitive@^1.0.1: version "1.0.1" resolved "https://registry.yarnpkg.com/unbox-primitive/-/unbox-primitive-1.0.1.tgz#085e215625ec3162574dc8859abee78a59b14471" @@ -11720,11 +10997,6 @@ util.promisify@^1.0.0, util.promisify@^1.0.1: has-symbols "^1.0.1" object.getownpropertydescriptors "^2.1.1" -utils-merge@1.x.x: - version "1.0.1" - resolved "https://registry.yarnpkg.com/utils-merge/-/utils-merge-1.0.1.tgz#9f95710f50a267947b2ccc124741c1028427e713" - integrity sha1-n5VxD1CiZ5R7LMwSR0HBAoQn5xM= - uuid@3.3.2, uuid@^3.1.0, uuid@^3.3.2: version "3.3.2" resolved "https://registry.yarnpkg.com/uuid/-/uuid-3.3.2.tgz#1b4af4955eb3077c501c23872fc6513811587131" @@ -11784,7 +11056,7 @@ verror@1.3.6: dependencies: extsprintf "1.0.2" -vm2@^3.9.3, vm2@^3.9.4: +vm2@^3.9.3: version "3.9.5" resolved "https://registry.yarnpkg.com/vm2/-/vm2-3.9.5.tgz#5288044860b4bbace443101fcd3bddb2a0aa2496" integrity sha512-LuCAHZN75H9tdrAiLFf030oW7nJV5xwNMuk1ymOZwopmuK3d2H4L1Kv4+GFHgarKiLfXXLFU+7LDABHnwOkWng== @@ -11815,14 +11087,6 @@ walker@^1.0.7, walker@~1.0.5: dependencies: makeerror "1.0.12" -webfinger@^0.4.2: - version "0.4.2" - resolved "https://registry.yarnpkg.com/webfinger/-/webfinger-0.4.2.tgz#3477a6d97799461896039fcffc650b73468ee76d" - integrity sha1-NHem2XeZRhiWA5/P/GULc0aO520= - dependencies: - step "0.0.x" - xml2js "0.1.x" - webidl-conversions@^3.0.0: version "3.0.1" resolved "https://registry.yarnpkg.com/webidl-conversions/-/webidl-conversions-3.0.1.tgz#24534275e2a7bc6be7bc86611cc16ae0a5654871" @@ -11932,11 +11196,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" @@ -12042,13 +11301,6 @@ xml-parse-from-string@^1.0.0: resolved "https://registry.yarnpkg.com/xml-parse-from-string/-/xml-parse-from-string-1.0.1.tgz#a9029e929d3dbcded169f3c6e28238d95a5d5a28" integrity sha1-qQKekp09vN7RafPG4oI42VpdWig= -xml2js@0.1.x: - version "0.1.14" - resolved "https://registry.yarnpkg.com/xml2js/-/xml2js-0.1.14.tgz#5274e67f5a64c5f92974cd85139e0332adc6b90c" - integrity sha1-UnTmf1pkxfkpdM2FE54DMq3GuQw= - dependencies: - sax ">=0.1.1" - xml2js@0.4.19: version "0.4.19" resolved "https://registry.yarnpkg.com/xml2js/-/xml2js-0.4.19.tgz#686c20f213209e94abf0d1bcf1efaa291c7827a7" @@ -12182,11 +11434,6 @@ 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" @@ -12197,7 +11444,7 @@ yn@3.1.1: resolved "https://registry.yarnpkg.com/yn/-/yn-3.1.1.tgz#1e87401a09d767c1d5eab26a6e4c185182d2eb50" integrity sha512-Ux4ygGWsu2c7isFWe8Yu1YluJmqVhxqK2cLXNQA5AcC3QfbGNpM7fu0Y8b/z16pXLnFxZYvWhd3fhBY9DLmC6Q== -zlib@1.0.5, zlib@^1.0.5: +zlib@1.0.5: version "1.0.5" resolved "https://registry.yarnpkg.com/zlib/-/zlib-1.0.5.tgz#6e7c972fc371c645a6afb03ab14769def114fcc0" integrity sha1-bnyXL8NxxkWmr7A6sUdp3vEU/MA= From 90934c547f42fe7b5de38b11d5a9d5f1785025ad Mon Sep 17 00:00:00 2001 From: Martin McKeaveney Date: Thu, 25 Nov 2021 12:20:20 +0100 Subject: [PATCH 002/175] allow type editing on custom query datasource schemas --- .../components/integration/QueryViewer.svelte | 43 ++++++++++++------- 1 file changed, 27 insertions(+), 16 deletions(-) diff --git a/packages/builder/src/components/integration/QueryViewer.svelte b/packages/builder/src/components/integration/QueryViewer.svelte index 54e455b92f..550da98d6b 100644 --- a/packages/builder/src/components/integration/QueryViewer.svelte +++ b/packages/builder/src/components/integration/QueryViewer.svelte @@ -32,31 +32,22 @@ import { onMount } from "svelte" export let query - export let fields = [] + let fields = query.schema ? schemaToFields(query.schema) : [] let parameters let data = [] let roleId const transformerDocs = "https://docs.budibase.com/building-apps/data/transformers" const typeOptions = [ - { label: "Text", value: "STRING" }, - { label: "Number", value: "NUMBER" }, - { label: "Boolean", value: "BOOLEAN" }, - { label: "Datetime", value: "DATETIME" }, + { label: "Text", value: "string" }, + { label: "Number", value: "number" }, + { label: "Boolean", value: "boolean" }, + { label: "Datetime", value: "datetime" }, ] $: datasource = $datasources.list.find(ds => ds._id === query.datasourceId) - $: query.schema = fields.reduce( - (acc, next) => ({ - ...acc, - [next.name]: { - name: next.name, - type: "string", - }, - }), - {} - ) + $: query.schema = fieldsToSchema(fields) $: datasourceType = datasource?.source $: integrationInfo = $integrations[datasourceType] $: queryConfig = integrationInfo?.query @@ -135,7 +126,7 @@ // unique fields returned by the server fields = json.schemaFields.map(field => ({ name: field, - type: "STRING", + type: "string", })) } catch (err) { notifications.error(`Query Error: ${err.message}`) @@ -155,6 +146,26 @@ } } + function schemaToFields(schema) { + return Object.keys(schema).map(key => ({ + name: key, + type: query.schema[key].type, + })) + } + + function fieldsToSchema(fieldsToConvert) { + return fieldsToConvert.reduce( + (acc, next) => ({ + ...acc, + [next.name]: { + name: next.name, + type: next.type, + }, + }), + {} + ) + } + onMount(async () => { if (!query || !query._id) { roleId = Roles.BASIC From 38219f0ea386d4857be920a86106d30594a37c13 Mon Sep 17 00:00:00 2001 From: Andrew Kingston Date: Thu, 25 Nov 2021 11:21:54 +0000 Subject: [PATCH 003/175] Fix issue with determining when to hide sensitive fields from query definitions and never delete the query schema --- packages/server/src/api/controllers/query.js | 9 ++++++--- 1 file changed, 6 insertions(+), 3 deletions(-) diff --git a/packages/server/src/api/controllers/query.js b/packages/server/src/api/controllers/query.js index 502ef5e67b..80da246166 100644 --- a/packages/server/src/api/controllers/query.js +++ b/packages/server/src/api/controllers/query.js @@ -1,6 +1,10 @@ const { processString } = require("@budibase/string-templates") const CouchDB = require("../../db") -const { generateQueryID, getQueryParams } = require("../../db/utils") +const { + generateQueryID, + getQueryParams, + isProdAppID, +} = require("../../db/utils") const { BaseQueryVerbs } = require("../../constants") const env = require("../../environment") const { Thread, ThreadType } = require("../../threads") @@ -90,10 +94,9 @@ exports.find = async function (ctx) { const db = new CouchDB(ctx.appId) const query = enrichQueries(await db.get(ctx.params.queryId)) // remove properties that could be dangerous in real app - if (env.isProd()) { + if (isProdAppID(ctx.appId)) { delete query.fields delete query.parameters - delete query.schema } ctx.body = query } From 63fac77ad193894f2d6856a55120d3a669b1772e Mon Sep 17 00:00:00 2001 From: Andrew Kingston Date: Thu, 25 Nov 2021 11:35:19 +0000 Subject: [PATCH 004/175] Ensure horizontal cards in the card block don't exceed the width of the screen --- packages/client/src/components/app/blocks/CardsBlock.svelte | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/packages/client/src/components/app/blocks/CardsBlock.svelte b/packages/client/src/components/app/blocks/CardsBlock.svelte index d5a5f064b6..ec631ede36 100644 --- a/packages/client/src/components/app/blocks/CardsBlock.svelte +++ b/packages/client/src/components/app/blocks/CardsBlock.svelte @@ -182,7 +182,7 @@ }} styles={{ display: "grid", - "grid-template-columns": `repeat(auto-fill, minmax(${cardWidth}px, 1fr))`, + "grid-template-columns": `repeat(auto-fill, minmax(min(${cardWidth}px, 100%), 1fr))`, }} > Date: Thu, 25 Nov 2021 11:42:46 +0000 Subject: [PATCH 005/175] Lint --- packages/server/src/api/controllers/query.js | 1 - 1 file changed, 1 deletion(-) diff --git a/packages/server/src/api/controllers/query.js b/packages/server/src/api/controllers/query.js index 80da246166..cf6f03f00f 100644 --- a/packages/server/src/api/controllers/query.js +++ b/packages/server/src/api/controllers/query.js @@ -6,7 +6,6 @@ const { isProdAppID, } = require("../../db/utils") const { BaseQueryVerbs } = require("../../constants") -const env = require("../../environment") const { Thread, ThreadType } = require("../../threads") const Runner = new Thread(ThreadType.QUERY, { timeoutMs: 10000 }) From 3abaded20abde824cc8dda9f0d243751557d78c7 Mon Sep 17 00:00:00 2001 From: Andrew Kingston Date: Thu, 25 Nov 2021 11:52:02 +0000 Subject: [PATCH 006/175] Update tests --- packages/server/src/api/routes/tests/query.spec.js | 11 ++++++----- 1 file changed, 6 insertions(+), 5 deletions(-) diff --git a/packages/server/src/api/routes/tests/query.spec.js b/packages/server/src/api/routes/tests/query.spec.js index 6b9be7447f..f5ba497d1b 100644 --- a/packages/server/src/api/routes/tests/query.spec.js +++ b/packages/server/src/api/routes/tests/query.spec.js @@ -19,10 +19,12 @@ describe("/queries", () => { }) async function createInvalidIntegration() { - const datasource = await config.createDatasource({datasource: { - ...basicDatasource().datasource, - source: "INVALID_INTEGRATION", - }}) + const datasource = await config.createDatasource({ + datasource: { + ...basicDatasource().datasource, + source: "INVALID_INTEGRATION", + }, + }) const query = await config.createQuery() return { datasource, query } } @@ -98,7 +100,6 @@ describe("/queries", () => { .expect("Content-Type", /json/) expect(res.body.fields).toBeUndefined() expect(res.body.parameters).toBeUndefined() - expect(res.body.schema).toBeUndefined() }) }) }) From 5313e277973eb298f5efcf7bf60a357fa77ea232 Mon Sep 17 00:00:00 2001 From: Martin McKeaveney Date: Thu, 25 Nov 2021 13:00:21 +0100 Subject: [PATCH 007/175] auto name template based apps --- .../src/pages/builder/portal/apps/index.svelte | 11 +++++++---- 1 file changed, 7 insertions(+), 4 deletions(-) diff --git a/packages/builder/src/pages/builder/portal/apps/index.svelte b/packages/builder/src/pages/builder/portal/apps/index.svelte index 7c2d7723d2..15076a9a53 100644 --- a/packages/builder/src/pages/builder/portal/apps/index.svelte +++ b/packages/builder/src/pages/builder/portal/apps/index.svelte @@ -98,10 +98,12 @@ const autoCreateApp = async () => { try { - // TODO: Iterate App Names and append a number - const appName = template.key + Math.floor(Math.random() * 100) - - console.log("APP NAME", appName) + // Auto name app if has same name + let appName = template.key + const appsWithSameName = $apps.filter(app => + app.name?.startsWith(appName) + ) + appName = `${appName}-${appsWithSameName.length + 1}` // Create form data to create app let data = new FormData() @@ -120,6 +122,7 @@ name: appName, appId: appJson.instance._id, template, + fromTemplateMarketplace: true, }) // Select Correct Application/DB in prep for creating user From 3040613b53050657c47f91117341e456b32bb004 Mon Sep 17 00:00:00 2001 From: Martin McKeaveney Date: Thu, 25 Nov 2021 13:08:39 +0100 Subject: [PATCH 008/175] removing script dir --- packages/server/scripts/qa/testScript.js | 46 ------------------------ 1 file changed, 46 deletions(-) delete mode 100644 packages/server/scripts/qa/testScript.js diff --git a/packages/server/scripts/qa/testScript.js b/packages/server/scripts/qa/testScript.js deleted file mode 100644 index 8e4648d8ee..0000000000 --- a/packages/server/scripts/qa/testScript.js +++ /dev/null @@ -1,46 +0,0 @@ -#!/usr/bin/env node -const { Client } = require("pg") - -let client - -// Connect -async function connect() { - client = new Client({ - host: "localhost", - port: 5432, - database: "test", - user: "postgres", - password: "root", - }) - await client.connect() -} - -async function insertData() { - const data = [{ id: 1 }, { id: 3 }] - let sql = "" - for (let item of data) { - sql += `INSERT INTO test(id) VALUES(${item.id}); \n` - } - console.log(sql) - await client.query(sql) -} - -// Fills up a postgres database -async function run() { - await connect() - - // Drops table - await client.query("DROP TABLE IF EXISTS test") - - // Creates new table - await client.query(`CREATE TABLE "test" ("id" serial, PRIMARY KEY ("id"))`) - - // Insert some data - await insertData() - - const res = await client.query("SELECT * from test") - console.log(res.rows) - await client.end() -} - -run() From 0b239a5bec0529a0dfb3e4c8d6e2fe09cd43049d Mon Sep 17 00:00:00 2001 From: Andrew Kingston Date: Thu, 25 Nov 2021 13:00:43 +0000 Subject: [PATCH 009/175] Add test to ensure query schema is correctly cleared for prod app IDs --- .../server/src/api/routes/tests/query.spec.js | 35 +++++++++++++++++-- 1 file changed, 32 insertions(+), 3 deletions(-) diff --git a/packages/server/src/api/routes/tests/query.spec.js b/packages/server/src/api/routes/tests/query.spec.js index f5ba497d1b..37c969aba8 100644 --- a/packages/server/src/api/routes/tests/query.spec.js +++ b/packages/server/src/api/routes/tests/query.spec.js @@ -1,6 +1,13 @@ -// mock out postgres for this +// Mock out postgres for this jest.mock("pg") +// Mock isProdAppID to we can later mock the implementation and pretend we are +// using prod app IDs +const authDb = require("@budibase/auth/db") +const { isProdAppID } = authDb +const mockIsProdAppID = jest.fn(isProdAppID) +authDb.isProdAppID = mockIsProdAppID + const setup = require("./utilities") const { checkBuilderEndpoint } = require("./utilities/TestFunctions") const { basicQuery, basicDatasource } = setup.structures @@ -98,10 +105,32 @@ describe("/queries", () => { .set(await config.defaultHeaders()) .expect(200) .expect("Content-Type", /json/) - expect(res.body.fields).toBeUndefined() - expect(res.body.parameters).toBeUndefined() + expect(res.body.fields).toBeDefined() + expect(res.body.parameters).toBeDefined() + expect(res.body.schema).toBeDefined() }) }) + + it("should remove sensitive info for prod apps", async () => { + // Mock isProdAppID to pretend we are using a prod app + mockIsProdAppID.mockClear() + mockIsProdAppID.mockImplementation(() => true) + + const query = await config.createQuery() + const res = await request + .get(`/api/queries/${query._id}`) + .set(await config.defaultHeaders()) + .expect("Content-Type", /json/) + .expect(200) + expect(res.body._id).toEqual(query._id) + expect(res.body.fields).toBeUndefined() + expect(res.body.parameters).toBeUndefined() + expect(res.body.schema).toBeDefined() + + // Reset isProdAppID mock + expect(mockIsProdAppID).toHaveBeenCalledTimes(1) + mockIsProdAppID.mockImplementation(isProdAppID) + }) }) describe("destroy", () => { From 0c60a56a3a38b62d2a40a92384a664337ebb10c1 Mon Sep 17 00:00:00 2001 From: Peter Clement Date: Thu, 25 Nov 2021 14:45:36 +0000 Subject: [PATCH 010/175] remove initial screen creation --- packages/server/src/api/controllers/application.js | 6 ------ 1 file changed, 6 deletions(-) diff --git a/packages/server/src/api/controllers/application.js b/packages/server/src/api/controllers/application.js index ef2913e812..6f55834a49 100644 --- a/packages/server/src/api/controllers/application.js +++ b/packages/server/src/api/controllers/application.js @@ -15,14 +15,12 @@ const { generateAppID, getLayoutParams, getScreenParams, - generateScreenID, generateDevAppID, DocumentTypes, AppStatus, } = require("../../db/utils") const { BUILTIN_ROLE_IDS, AccessController } = require("@budibase/auth/roles") const { BASE_LAYOUTS } = require("../../constants/layouts") -const { createHomeScreen } = require("../../constants/screens") const { cloneDeep } = require("lodash/fp") const { processObject } = require("@budibase/string-templates") const { @@ -409,9 +407,5 @@ const createEmptyAppPackage = async (ctx, app) => { screensAndLayouts.push(await processObject(cloned, app)) } - const homeScreen = createHomeScreen(app) - homeScreen._id = generateScreenID() - screensAndLayouts.push(homeScreen) - await db.bulkDocs(screensAndLayouts) } From d42df03f25ac47a96ad5d6a346f5337e62c55238 Mon Sep 17 00:00:00 2001 From: Peter Clement Date: Thu, 25 Nov 2021 15:29:35 +0000 Subject: [PATCH 011/175] fix appPackage unit tests --- packages/server/src/api/routes/tests/application.spec.js | 2 -- packages/server/src/api/routes/tests/screen.spec.js | 2 +- 2 files changed, 1 insertion(+), 3 deletions(-) diff --git a/packages/server/src/api/routes/tests/application.spec.js b/packages/server/src/api/routes/tests/application.spec.js index 05e0bc231b..ce1cb80435 100644 --- a/packages/server/src/api/routes/tests/application.spec.js +++ b/packages/server/src/api/routes/tests/application.spec.js @@ -75,7 +75,6 @@ describe("/applications", () => { .expect("Content-Type", /json/) .expect(200) // should have empty packages - expect(res.body.screens.length).toEqual(1) expect(res.body.layouts.length).toEqual(2) }) }) @@ -88,7 +87,6 @@ describe("/applications", () => { .expect("Content-Type", /json/) .expect(200) expect(res.body.application).toBeDefined() - expect(res.body.screens.length).toEqual(1) expect(res.body.layouts.length).toEqual(2) }) }) diff --git a/packages/server/src/api/routes/tests/screen.spec.js b/packages/server/src/api/routes/tests/screen.spec.js index 6a47b78853..c2d60ec006 100644 --- a/packages/server/src/api/routes/tests/screen.spec.js +++ b/packages/server/src/api/routes/tests/screen.spec.js @@ -21,7 +21,7 @@ describe("/screens", () => { .set(config.defaultHeaders()) .expect("Content-Type", /json/) .expect(200) - expect(res.body.length).toEqual(2) + expect(res.body.length).toEqual(1) expect(res.body.some(s => s._id === screen._id)).toEqual(true) }) From 88f31bcf34017b9785c3681b539ae07b8c661a10 Mon Sep 17 00:00:00 2001 From: mike12345567 Date: Thu, 25 Nov 2021 16:13:19 +0000 Subject: [PATCH 012/175] Basic work for generating. --- packages/server/package.json | 4 +- packages/server/scripts/docs/generate.js | 59 + packages/server/src/api/routes/row.js | 56 + packages/server/yarn.lock | 1682 +++++++++++++++++++++- 4 files changed, 1766 insertions(+), 35 deletions(-) create mode 100644 packages/server/scripts/docs/generate.js diff --git a/packages/server/package.json b/packages/server/package.json index 0fce8a3759..7712c7c748 100644 --- a/packages/server/package.json +++ b/packages/server/package.json @@ -3,7 +3,7 @@ "email": "hi@budibase.com", "version": "0.9.190-alpha.0", "description": "Budibase Web Server", - "main": "src/index.js", + "main": "src/index.ts", "repository": { "type": "git", "url": "https://github.com/Budibase/budibase.git" @@ -130,6 +130,7 @@ "@babel/preset-env": "^7.14.4", "@budibase/standard-components": "^0.9.139", "@jest/test-sequencer": "^24.8.0", + "@types/apidoc": "^0.50.0", "@types/bull": "^3.15.1", "@types/jest": "^26.0.23", "@types/koa": "^2.13.3", @@ -137,6 +138,7 @@ "@types/node": "^15.12.4", "@types/oracledb": "^5.2.1", "@typescript-eslint/parser": "4.28.0", + "apidoc": "^0.50.2", "babel-jest": "^27.0.2", "copyfiles": "^2.4.1", "docker-compose": "^0.23.6", diff --git a/packages/server/scripts/docs/generate.js b/packages/server/scripts/docs/generate.js new file mode 100644 index 0000000000..f5b9c00fa5 --- /dev/null +++ b/packages/server/scripts/docs/generate.js @@ -0,0 +1,59 @@ +const fs = require("fs") +const { join } = require("path") +const { createDoc } = require("apidoc") +const packageJson = require("../../package.json") + +const config = { + name: "Budibase API", + version: packageJson.version, + description: + "Documentation for the various API endpoints of the Budibase backend.", + title: "Budibase app service API", +} + +const disallowed = [] + +function filter(parsedRouteFiles) { + const tagToSearch = "url" + for (let routeFile of parsedRouteFiles) { + for (let route of routeFile) { + let routeInfo = route["local"] + if (disallowed.includes(routeInfo[tagToSearch])) { + const idx = routeFile.indexOf(route) + routeFile.splice(idx, 1) + } + } + } +} + +function generate() { + // start by writing a config file + const configPath = join(__dirname, "config.json") + fs.writeFileSync(configPath, JSON.stringify(config)) + const mainPath = join(__dirname, "..", "..") + const srcPath = join(mainPath, "src", "api", "routes") + const assetsPath = join(mainPath, "builder", "assets", "docs") + if (!fs.existsSync(assetsPath)) { + fs.mkdirSync(assetsPath, { recursive: true }) + } + const doc = createDoc({ + src: srcPath, + dest: assetsPath, + silent: true, + filters: { + main: { + postFilter: filter, + }, + }, + config: configPath, + }) + if (typeof doc !== "boolean") { + console.log("Docs generated successfully.") + } else { + console.error("Unable to generate docs.") + } + // delete the temporary config file + fs.unlinkSync(configPath) +} + +generate() diff --git a/packages/server/src/api/routes/row.js b/packages/server/src/api/routes/row.js index 44f71ad545..7c2c42be14 100644 --- a/packages/server/src/api/routes/row.js +++ b/packages/server/src/api/routes/row.js @@ -14,24 +14,80 @@ const { const router = Router() router + /** + * @api {get} /api/:tableId/:rowId/enrich Get an enriched row + * @apiName /api/:tableId/:rowId/enrich + * @apiGroup rows + * @apiPermission table read access + * @apiDescription This API is only useful when dealing with rows that have relationships. + * Normally when a row is a returned from the API relationships will only have the structure + * `{ primaryDisplay: "name", _id: ... }` but this call will return the full related rows + * for each relationship instead. + * + * @apiParam {string} rowId The ID of the row which is to be retrieved and enriched. + * + * @apiSuccess {object} row The response body will be the enriched row. + * @apiError {string} message If the table or row could not be found then an error will be thrown. + */ .get( "/api/:tableId/:rowId/enrich", paramSubResource("tableId", "rowId"), authorized(PermissionTypes.TABLE, PermissionLevels.READ), rowController.fetchEnrichedRow ) + /** + * @api {get} /api/:tableId/rows Get all rows in a table + * @apiName /api/:tableId/rows + * @apiGroup rows + * @apiPermission table read access + * @apiDescription This is a deprecated endpoint that should not be used anymore, instead use the search endpoint. + * This endpoint gets all of the rows within the specified table - it is not heavily used + * due to its lack of support for pagination. With SQL tables this will retrieve up to a limit and then + * will simply stop. + * + * @apiParam {string} tableId The ID of the table to retrieve all rows within. + * + * @apiSuccess {object[]} rows The response body will be an array of all rows found. + * @apiError {string} message If the table could not be found then an error will be thrown. + */ .get( "/api/:tableId/rows", paramResource("tableId"), authorized(PermissionTypes.TABLE, PermissionLevels.READ), rowController.fetch ) + /** + * @api {get} /api/:tableId/rows/:rowId Retrieve a single row + * @apiName /api/:tableId/rows/:rowId + * @apiGroup rows + * @apiPermission table read access + * @apiDescription This endpoint retrieves only the specified row. If you wish to retrieve + * a row by anything other than its _id field, use the search endpoint. + * + * @apiParam {string} tableId The ID of the table to retrieve a row from. + * @apiParam {string} rowId The ID of the row to retrieve. + * + * @apiSuccess {object} row The response body will be the row that was found. + * @apiError {string} message If the table or row could not be found then an error will be thrown. + */ .get( "/api/:tableId/rows/:rowId", paramSubResource("tableId", "rowId"), authorized(PermissionTypes.TABLE, PermissionLevels.READ), rowController.find ) + /** + * @api {post} /api/:tableId/search Search for rows in a table + * @apiName /api/:tableId/search + * @apiGroup rows + * @apiPermission table read access + * @apiDescription This is the primary method of accessing rows in Budibase, the data provider + * and data UI in the builder are built atop this. All filtering, sorting and pagination is + * handled through this, for internal and external (datasource plus, e.g. SQL) tables. + * + * @apiBody + * + */ .post( "/api/:tableId/search", paramResource("tableId"), diff --git a/packages/server/yarn.lock b/packages/server/yarn.lock index f609651afa..1686e38a40 100644 --- a/packages/server/yarn.lock +++ b/packages/server/yarn.lock @@ -951,6 +951,30 @@ resolved "https://registry.yarnpkg.com/@bcoe/v8-coverage/-/v8-coverage-0.2.3.tgz#75a2e8b51cb758a7553d6804a5932d7aace75c39" integrity sha512-0hYQ8SB4Db5zvZB4axdMHGwEaQjkZzFjQiN9LVYvIFB2nSUHW9tYpxWriPrWDASIxiaXax83REcLxuSdnGPZtw== +"@budibase/auth@^0.9.190-alpha.0": + version "0.9.190-alpha.1" + resolved "https://registry.yarnpkg.com/@budibase/auth/-/auth-0.9.190-alpha.1.tgz#b00c1db33a800dcb6c2ba321ee8a06e353c623e0" + integrity sha512-GXWyb69ueIGkEzwS2wm+JhJi9w5vFe82fUdXRkV3QeTwFwyKuYnwCiulIvVDfi1yBhyGF1CpbsZRS1zkHD1rZA== + dependencies: + "@techpass/passport-openidconnect" "^0.3.0" + aws-sdk "^2.901.0" + bcryptjs "^2.4.3" + cls-hooked "^4.2.2" + ioredis "^4.27.1" + jsonwebtoken "^8.5.1" + koa-passport "^4.1.4" + lodash "^4.17.21" + lodash.isarguments "^3.1.0" + node-fetch "^2.6.1" + passport-google-auth "^1.0.2" + passport-google-oauth "^2.0.0" + passport-jwt "^4.0.0" + passport-local "^1.0.0" + sanitize-s3-objectkey "^0.0.1" + tar-fs "^2.1.1" + uuid "^8.3.2" + zlib "^1.0.5" + "@budibase/bbui@^0.9.139": version "0.9.187" resolved "https://registry.yarnpkg.com/@budibase/bbui/-/bbui-0.9.187.tgz#84f0a37301cfa41f50eaa335243ac08923d9e34f" @@ -1000,6 +1024,95 @@ svelte-flatpickr "^3.2.3" svelte-portal "^1.0.0" +"@budibase/bbui@^0.9.190-alpha.1": + version "0.9.190-alpha.1" + resolved "https://registry.yarnpkg.com/@budibase/bbui/-/bbui-0.9.190-alpha.1.tgz#b7056840a63231d507cd4bfe915647c7727d8fc5" + integrity sha512-Vt6PwV0gmHcCPslZk8aScHsky3bh82XyRGZnbbbeABkhRdh6Bj/gqBpkDjBPevsOYWXc+xI/Hrq9pJrj+lHxpQ== + dependencies: + "@adobe/spectrum-css-workflow-icons" "^1.2.1" + "@spectrum-css/actionbutton" "^1.0.1" + "@spectrum-css/actiongroup" "^1.0.1" + "@spectrum-css/avatar" "^3.0.2" + "@spectrum-css/button" "^3.0.1" + "@spectrum-css/buttongroup" "^3.0.2" + "@spectrum-css/checkbox" "^3.0.2" + "@spectrum-css/dialog" "^3.0.1" + "@spectrum-css/divider" "^1.0.3" + "@spectrum-css/dropzone" "^3.0.2" + "@spectrum-css/fieldgroup" "^3.0.2" + "@spectrum-css/fieldlabel" "^3.0.1" + "@spectrum-css/icon" "^3.0.1" + "@spectrum-css/illustratedmessage" "^3.0.2" + "@spectrum-css/inlinealert" "^2.0.1" + "@spectrum-css/inputgroup" "^3.0.2" + "@spectrum-css/label" "^2.0.10" + "@spectrum-css/link" "^3.1.1" + "@spectrum-css/menu" "^3.0.1" + "@spectrum-css/modal" "^3.0.1" + "@spectrum-css/pagination" "^3.0.3" + "@spectrum-css/picker" "^1.0.1" + "@spectrum-css/popover" "^3.0.1" + "@spectrum-css/progressbar" "^1.0.2" + "@spectrum-css/progresscircle" "^1.0.2" + "@spectrum-css/radio" "^3.0.2" + "@spectrum-css/search" "^3.0.2" + "@spectrum-css/sidenav" "^3.0.2" + "@spectrum-css/statuslight" "^3.0.2" + "@spectrum-css/stepper" "^3.0.3" + "@spectrum-css/switch" "^1.0.2" + "@spectrum-css/table" "^3.0.1" + "@spectrum-css/tabs" "^3.0.1" + "@spectrum-css/tags" "^3.0.2" + "@spectrum-css/textfield" "^3.0.1" + "@spectrum-css/toast" "^3.0.1" + "@spectrum-css/tooltip" "^3.0.3" + "@spectrum-css/treeview" "^3.0.2" + "@spectrum-css/typography" "^3.0.1" + "@spectrum-css/underlay" "^2.0.9" + "@spectrum-css/vars" "^3.0.1" + dayjs "^1.10.4" + svelte-flatpickr "^3.2.3" + svelte-portal "^1.0.0" + +"@budibase/client@^0.9.190-alpha.0": + version "0.9.190-alpha.1" + resolved "https://registry.yarnpkg.com/@budibase/client/-/client-0.9.190-alpha.1.tgz#e0a4eaead10b6fc9027e2e72c305404a7d787e75" + integrity sha512-llrwbsog/4iomSjuhx+vj0wfeIIzQEOEq07kalwb2vqyPFRU6PN4vTZNBr7Qt63L3z59pJ/vUb8zs9SGdkNp7g== + dependencies: + "@budibase/bbui" "^0.9.190-alpha.1" + "@budibase/standard-components" "^0.9.139" + "@budibase/string-templates" "^0.9.190-alpha.1" + regexparam "^1.3.0" + shortid "^2.2.15" + svelte-spa-router "^3.0.5" + +"@budibase/handlebars-helpers@^0.11.7": + version "0.11.7" + resolved "https://registry.yarnpkg.com/@budibase/handlebars-helpers/-/handlebars-helpers-0.11.7.tgz#8e5f9843d7dd10503e9f608555a96ccf4d836c46" + integrity sha512-PvGHAv22cWSFExs1kc0WglwsmCEUEOqWvSp6JCFZwtc3qAAr5yMfLK8WGVQ63ALvyzWZiyxF+yrlzeeaohCMJw== + dependencies: + array-sort "^1.0.0" + define-property "^2.0.2" + extend-shallow "^3.0.2" + for-in "^1.0.2" + get-object "^0.2.0" + get-value "^3.0.1" + handlebars "^4.7.7" + handlebars-utils "^1.0.6" + has-value "^2.0.2" + 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.1" + kind-of "^6.0.3" + micromatch "^3.1.5" + relative "^3.0.2" + striptags "^3.1.1" + to-gfm-code-block "^0.1.1" + year "^0.2.1" + "@budibase/standard-components@^0.9.139": version "0.9.139" resolved "https://registry.yarnpkg.com/@budibase/standard-components/-/standard-components-0.9.139.tgz#cf8e2b759ae863e469e50272b3ca87f2827e66e3" @@ -1018,6 +1131,18 @@ svelte-apexcharts "^1.0.2" svelte-flatpickr "^3.1.0" +"@budibase/string-templates@^0.9.190-alpha.0", "@budibase/string-templates@^0.9.190-alpha.1": + version "0.9.190-alpha.1" + resolved "https://registry.yarnpkg.com/@budibase/string-templates/-/string-templates-0.9.190-alpha.1.tgz#243f674f448225317b565933630c20b76dd16794" + integrity sha512-hXe4Hh2oFwWhqm4b/bFM82r6rr1ng1vb99ZdUkCPVWbBLUJKU+Hjnnt9bfsuupx+Ngw+TFT1N6GMZMsti5ySoQ== + dependencies: + "@budibase/handlebars-helpers" "^0.11.7" + dayjs "^1.10.4" + handlebars "^4.7.6" + handlebars-utils "^1.0.6" + lodash "^4.17.20" + vm2 "^3.9.4" + "@bull-board/api@3.7.0", "@bull-board/api@^3.7.0": version "3.7.0" resolved "https://registry.yarnpkg.com/@bull-board/api/-/api-3.7.0.tgz#231f687187c0cb34e0b97f463917b6aaeb4ef6af" @@ -1066,6 +1191,20 @@ dependencies: "@cspotcode/source-map-consumer" "0.8.0" +"@dabh/diagnostics@^2.0.2": + version "2.0.2" + resolved "https://registry.yarnpkg.com/@dabh/diagnostics/-/diagnostics-2.0.2.tgz#290d08f7b381b8f94607dc8f471a12c675f9db31" + integrity sha512-+A1YivoVDNNVCdfozHSR8v/jyuuLTMXwjWuxPFlFlUapXoGc+Gj9mDlTDDfrwl7rXCl2tNZ0kE8sIBO6YOn96Q== + dependencies: + colorspace "1.1.x" + enabled "2.0.x" + kuler "^2.0.0" + +"@discoveryjs/json-ext@^0.5.0": + version "0.5.5" + resolved "https://registry.yarnpkg.com/@discoveryjs/json-ext/-/json-ext-0.5.5.tgz#9283c9ce5b289a3c4f61c12757469e59377f81f3" + integrity sha512-6nFkfkmSeV/rqSaS4oWHgmpnYw194f6hmWF5is6b0J1naJZoiD0NTc9AiUwPHvWsowkjuHErCZT1wa0jg+BLIA== + "@elastic/elasticsearch@7.10.0": version "7.10.0" resolved "https://registry.yarnpkg.com/@elastic/elasticsearch/-/elasticsearch-7.10.0.tgz#da105a9c1f14146f9f2cab4e7026cb7949121b8d" @@ -1904,6 +2043,11 @@ resolved "https://registry.yarnpkg.com/@spectrum-css/illustratedmessage/-/illustratedmessage-3.0.8.tgz#69ef0c935bcc5027f233a78de5aeb0064bf033cb" integrity sha512-HvC4dywDi11GdrXQDCvKQ0vFlrXLTyJuc9UKf7meQLCGoJbGYDBwe+tHXNK1c6gPMD9BoL6pPMP1K/vRzR4EBQ== +"@spectrum-css/inlinealert@^2.0.1": + version "2.0.5" + resolved "https://registry.yarnpkg.com/@spectrum-css/inlinealert/-/inlinealert-2.0.5.tgz#76b50495c0ad0cd675d7df2f73fb0e9cd5cff4e9" + integrity sha512-Z37CDhoFX0cePjoyi5igRCi4/rIU7ETDpV8cwHjbTYj4IXpHmOCllxftncE8SJ3PZrQW2gB9mmXvfg+TBy3g2Q== + "@spectrum-css/inputgroup@^3.0.2": version "3.0.8" resolved "https://registry.yarnpkg.com/@spectrum-css/inputgroup/-/inputgroup-3.0.8.tgz#fc23afc8a73c24d17249c9d2337e8b42085b298b" @@ -2053,6 +2197,17 @@ dependencies: defer-to-connect "^1.0.1" +"@techpass/passport-openidconnect@^0.3.0": + version "0.3.2" + resolved "https://registry.yarnpkg.com/@techpass/passport-openidconnect/-/passport-openidconnect-0.3.2.tgz#f8fd5d97256286665dbf26dac92431f977ab1e63" + integrity sha512-fnCtEiexXSHA029B//hJcCJlLJrT3lhpNCyA0rnz58Qttz0BLGCVv6yMT8HmOnGThH6vcDOVwdgKM3kbCQtEhw== + dependencies: + base64url "^3.0.1" + oauth "^0.9.15" + passport-strategy "^1.0.0" + request "^2.88.0" + webfinger "^0.4.2" + "@tootallnate/once@1": version "1.1.2" resolved "https://registry.yarnpkg.com/@tootallnate/once/-/once-1.1.2.tgz#ccb91445360179a04e7fe6aff78c00ffc1eeaf82" @@ -2085,6 +2240,11 @@ dependencies: "@types/node" "*" +"@types/apidoc@^0.50.0": + version "0.50.0" + resolved "https://registry.yarnpkg.com/@types/apidoc/-/apidoc-0.50.0.tgz#9ac8ea6944ca647fcd3c0ba51199e4001f063cb5" + integrity sha512-hQdhX7WcVKi9rRzTME01MD/TPBRQH51n2nW3XdUv6wWvvGt6sctWEyjUgH555A5N80zXFH3Ug0rpO4RLvT59JA== + "@types/babel__core@^7.0.0", "@types/babel__core@^7.1.0", "@types/babel__core@^7.1.14": version "7.1.16" resolved "https://registry.yarnpkg.com/@types/babel__core/-/babel__core-7.1.16.tgz#bc12c74b7d65e82d29876b5d0baf5c625ac58702" @@ -2155,6 +2315,27 @@ "@types/keygrip" "*" "@types/node" "*" +"@types/eslint-scope@^3.7.0": + version "3.7.1" + resolved "https://registry.yarnpkg.com/@types/eslint-scope/-/eslint-scope-3.7.1.tgz#8dc390a7b4f9dd9f1284629efce982e41612116e" + integrity sha512-SCFeogqiptms4Fg29WpOTk5nHIzfpKCemSN63ksBQYKTcXoJEmJagV+DhVmbapZzY4/5YaOV1nZwrsU79fFm1g== + dependencies: + "@types/eslint" "*" + "@types/estree" "*" + +"@types/eslint@*": + version "8.2.0" + resolved "https://registry.yarnpkg.com/@types/eslint/-/eslint-8.2.0.tgz#afd0519223c29c347087542cbaee2fedc0873b16" + integrity sha512-74hbvsnc+7TEDa1z5YLSe4/q8hGYB3USNvCuzHUJrjPV6hXaq8IXcngCrHkuvFt0+8rFz7xYXrHgNayIX0UZvQ== + dependencies: + "@types/estree" "*" + "@types/json-schema" "*" + +"@types/estree@*", "@types/estree@^0.0.50": + version "0.0.50" + resolved "https://registry.yarnpkg.com/@types/estree/-/estree-0.0.50.tgz#1e0caa9364d3fccd2931c3ed96fdbeaa5d4cca83" + integrity sha512-C6N5s2ZFtuZRj54k2/zyRhNDjJwwcViAM3Nbm8zjBpbqAdZ00mr0CFxvSKeO8Y/e03WVFLpQMdHYVfUd6SB+Hw== + "@types/express-serve-static-core@^4.17.18": version "4.17.25" resolved "https://registry.yarnpkg.com/@types/express-serve-static-core/-/express-serve-static-core-4.17.25.tgz#e42f7046adc65ece2eb6059b77aecfbe9e9f82e0" @@ -2240,6 +2421,11 @@ jest-diff "^26.0.0" pretty-format "^26.0.0" +"@types/json-schema@*", "@types/json-schema@^7.0.8": + version "7.0.9" + resolved "https://registry.yarnpkg.com/@types/json-schema/-/json-schema-7.0.9.tgz#97edc9037ea0c38585320b28964dde3b39e4660d" + integrity sha512-qcUXuemtEu+E5wZSJHNxUXeCZhAfXKQ41D+duX+VYPde7xyEVZci+/oXKJL13tnRs9lR2pr4fod59GT6/X1/yQ== + "@types/keygrip@*": version "1.0.2" resolved "https://registry.yarnpkg.com/@types/keygrip/-/keygrip-1.0.2.tgz#513abfd256d7ad0bf1ee1873606317b33b1b2a72" @@ -2417,11 +2603,159 @@ "@typescript-eslint/types" "4.28.0" eslint-visitor-keys "^2.0.0" +"@webassemblyjs/ast@1.11.1": + version "1.11.1" + resolved "https://registry.yarnpkg.com/@webassemblyjs/ast/-/ast-1.11.1.tgz#2bfd767eae1a6996f432ff7e8d7fc75679c0b6a7" + integrity sha512-ukBh14qFLjxTQNTXocdyksN5QdM28S1CxHt2rdskFyL+xFV7VremuBLVbmCePj+URalXBENx/9Lm7lnhihtCSw== + dependencies: + "@webassemblyjs/helper-numbers" "1.11.1" + "@webassemblyjs/helper-wasm-bytecode" "1.11.1" + +"@webassemblyjs/floating-point-hex-parser@1.11.1": + version "1.11.1" + resolved "https://registry.yarnpkg.com/@webassemblyjs/floating-point-hex-parser/-/floating-point-hex-parser-1.11.1.tgz#f6c61a705f0fd7a6aecaa4e8198f23d9dc179e4f" + integrity sha512-iGRfyc5Bq+NnNuX8b5hwBrRjzf0ocrJPI6GWFodBFzmFnyvrQ83SHKhmilCU/8Jv67i4GJZBMhEzltxzcNagtQ== + +"@webassemblyjs/helper-api-error@1.11.1": + version "1.11.1" + resolved "https://registry.yarnpkg.com/@webassemblyjs/helper-api-error/-/helper-api-error-1.11.1.tgz#1a63192d8788e5c012800ba6a7a46c705288fd16" + integrity sha512-RlhS8CBCXfRUR/cwo2ho9bkheSXG0+NwooXcc3PAILALf2QLdFyj7KGsKRbVc95hZnhnERon4kW/D3SZpp6Tcg== + +"@webassemblyjs/helper-buffer@1.11.1": + version "1.11.1" + resolved "https://registry.yarnpkg.com/@webassemblyjs/helper-buffer/-/helper-buffer-1.11.1.tgz#832a900eb444884cde9a7cad467f81500f5e5ab5" + integrity sha512-gwikF65aDNeeXa8JxXa2BAk+REjSyhrNC9ZwdT0f8jc4dQQeDQ7G4m0f2QCLPJiMTTO6wfDmRmj/pW0PsUvIcA== + +"@webassemblyjs/helper-numbers@1.11.1": + version "1.11.1" + resolved "https://registry.yarnpkg.com/@webassemblyjs/helper-numbers/-/helper-numbers-1.11.1.tgz#64d81da219fbbba1e3bd1bfc74f6e8c4e10a62ae" + integrity sha512-vDkbxiB8zfnPdNK9Rajcey5C0w+QJugEglN0of+kmO8l7lDb77AnlKYQF7aarZuCrv+l0UvqL+68gSDr3k9LPQ== + dependencies: + "@webassemblyjs/floating-point-hex-parser" "1.11.1" + "@webassemblyjs/helper-api-error" "1.11.1" + "@xtuc/long" "4.2.2" + +"@webassemblyjs/helper-wasm-bytecode@1.11.1": + version "1.11.1" + resolved "https://registry.yarnpkg.com/@webassemblyjs/helper-wasm-bytecode/-/helper-wasm-bytecode-1.11.1.tgz#f328241e41e7b199d0b20c18e88429c4433295e1" + integrity sha512-PvpoOGiJwXeTrSf/qfudJhwlvDQxFgelbMqtq52WWiXC6Xgg1IREdngmPN3bs4RoO83PnL/nFrxucXj1+BX62Q== + +"@webassemblyjs/helper-wasm-section@1.11.1": + version "1.11.1" + resolved "https://registry.yarnpkg.com/@webassemblyjs/helper-wasm-section/-/helper-wasm-section-1.11.1.tgz#21ee065a7b635f319e738f0dd73bfbda281c097a" + integrity sha512-10P9No29rYX1j7F3EVPX3JvGPQPae+AomuSTPiF9eBQeChHI6iqjMIwR9JmOJXwpnn/oVGDk7I5IlskuMwU/pg== + dependencies: + "@webassemblyjs/ast" "1.11.1" + "@webassemblyjs/helper-buffer" "1.11.1" + "@webassemblyjs/helper-wasm-bytecode" "1.11.1" + "@webassemblyjs/wasm-gen" "1.11.1" + +"@webassemblyjs/ieee754@1.11.1": + version "1.11.1" + resolved "https://registry.yarnpkg.com/@webassemblyjs/ieee754/-/ieee754-1.11.1.tgz#963929e9bbd05709e7e12243a099180812992614" + integrity sha512-hJ87QIPtAMKbFq6CGTkZYJivEwZDbQUgYd3qKSadTNOhVY7p+gfP6Sr0lLRVTaG1JjFj+r3YchoqRYxNH3M0GQ== + dependencies: + "@xtuc/ieee754" "^1.2.0" + +"@webassemblyjs/leb128@1.11.1": + version "1.11.1" + resolved "https://registry.yarnpkg.com/@webassemblyjs/leb128/-/leb128-1.11.1.tgz#ce814b45574e93d76bae1fb2644ab9cdd9527aa5" + integrity sha512-BJ2P0hNZ0u+Th1YZXJpzW6miwqQUGcIHT1G/sf72gLVD9DZ5AdYTqPNbHZh6K1M5VmKvFXwGSWZADz+qBWxeRw== + dependencies: + "@xtuc/long" "4.2.2" + +"@webassemblyjs/utf8@1.11.1": + version "1.11.1" + resolved "https://registry.yarnpkg.com/@webassemblyjs/utf8/-/utf8-1.11.1.tgz#d1f8b764369e7c6e6bae350e854dec9a59f0a3ff" + integrity sha512-9kqcxAEdMhiwQkHpkNiorZzqpGrodQQ2IGrHHxCy+Ozng0ofyMA0lTqiLkVs1uzTRejX+/O0EOT7KxqVPuXosQ== + +"@webassemblyjs/wasm-edit@1.11.1": + version "1.11.1" + resolved "https://registry.yarnpkg.com/@webassemblyjs/wasm-edit/-/wasm-edit-1.11.1.tgz#ad206ebf4bf95a058ce9880a8c092c5dec8193d6" + integrity sha512-g+RsupUC1aTHfR8CDgnsVRVZFJqdkFHpsHMfJuWQzWU3tvnLC07UqHICfP+4XyL2tnr1amvl1Sdp06TnYCmVkA== + dependencies: + "@webassemblyjs/ast" "1.11.1" + "@webassemblyjs/helper-buffer" "1.11.1" + "@webassemblyjs/helper-wasm-bytecode" "1.11.1" + "@webassemblyjs/helper-wasm-section" "1.11.1" + "@webassemblyjs/wasm-gen" "1.11.1" + "@webassemblyjs/wasm-opt" "1.11.1" + "@webassemblyjs/wasm-parser" "1.11.1" + "@webassemblyjs/wast-printer" "1.11.1" + +"@webassemblyjs/wasm-gen@1.11.1": + version "1.11.1" + resolved "https://registry.yarnpkg.com/@webassemblyjs/wasm-gen/-/wasm-gen-1.11.1.tgz#86c5ea304849759b7d88c47a32f4f039ae3c8f76" + integrity sha512-F7QqKXwwNlMmsulj6+O7r4mmtAlCWfO/0HdgOxSklZfQcDu0TpLiD1mRt/zF25Bk59FIjEuGAIyn5ei4yMfLhA== + dependencies: + "@webassemblyjs/ast" "1.11.1" + "@webassemblyjs/helper-wasm-bytecode" "1.11.1" + "@webassemblyjs/ieee754" "1.11.1" + "@webassemblyjs/leb128" "1.11.1" + "@webassemblyjs/utf8" "1.11.1" + +"@webassemblyjs/wasm-opt@1.11.1": + version "1.11.1" + resolved "https://registry.yarnpkg.com/@webassemblyjs/wasm-opt/-/wasm-opt-1.11.1.tgz#657b4c2202f4cf3b345f8a4c6461c8c2418985f2" + integrity sha512-VqnkNqnZlU5EB64pp1l7hdm3hmQw7Vgqa0KF/KCNO9sIpI6Fk6brDEiX+iCOYrvMuBWDws0NkTOxYEb85XQHHw== + dependencies: + "@webassemblyjs/ast" "1.11.1" + "@webassemblyjs/helper-buffer" "1.11.1" + "@webassemblyjs/wasm-gen" "1.11.1" + "@webassemblyjs/wasm-parser" "1.11.1" + +"@webassemblyjs/wasm-parser@1.11.1": + version "1.11.1" + resolved "https://registry.yarnpkg.com/@webassemblyjs/wasm-parser/-/wasm-parser-1.11.1.tgz#86ca734534f417e9bd3c67c7a1c75d8be41fb199" + integrity sha512-rrBujw+dJu32gYB7/Lup6UhdkPx9S9SnobZzRVL7VcBH9Bt9bCBLEuX/YXOOtBsOZ4NQrRykKhffRWHvigQvOA== + dependencies: + "@webassemblyjs/ast" "1.11.1" + "@webassemblyjs/helper-api-error" "1.11.1" + "@webassemblyjs/helper-wasm-bytecode" "1.11.1" + "@webassemblyjs/ieee754" "1.11.1" + "@webassemblyjs/leb128" "1.11.1" + "@webassemblyjs/utf8" "1.11.1" + +"@webassemblyjs/wast-printer@1.11.1": + version "1.11.1" + resolved "https://registry.yarnpkg.com/@webassemblyjs/wast-printer/-/wast-printer-1.11.1.tgz#d0c73beda8eec5426f10ae8ef55cee5e7084c2f0" + integrity sha512-IQboUWM4eKzWW+N/jij2sRatKMh99QEelo3Eb2q0qXkvPRISAj8Qxtmw5itwqK+TTkBuUIE45AxYPToqPtL5gg== + dependencies: + "@webassemblyjs/ast" "1.11.1" + "@xtuc/long" "4.2.2" + +"@webpack-cli/configtest@^1.1.0": + version "1.1.0" + resolved "https://registry.yarnpkg.com/@webpack-cli/configtest/-/configtest-1.1.0.tgz#8342bef0badfb7dfd3b576f2574ab80c725be043" + integrity sha512-ttOkEkoalEHa7RaFYpM0ErK1xc4twg3Am9hfHhL7MVqlHebnkYd2wuI/ZqTDj0cVzZho6PdinY0phFZV3O0Mzg== + +"@webpack-cli/info@^1.4.0": + version "1.4.0" + resolved "https://registry.yarnpkg.com/@webpack-cli/info/-/info-1.4.0.tgz#b9179c3227ab09cbbb149aa733475fcf99430223" + integrity sha512-F6b+Man0rwE4n0409FyAJHStYA5OIZERxmnUfLVwv0mc0V1wLad3V7jqRlMkgKBeAq07jUvglacNaa6g9lOpuw== + dependencies: + envinfo "^7.7.3" + +"@webpack-cli/serve@^1.6.0": + version "1.6.0" + resolved "https://registry.yarnpkg.com/@webpack-cli/serve/-/serve-1.6.0.tgz#2c275aa05c895eccebbfc34cfb223c6e8bd591a2" + integrity sha512-ZkVeqEmRpBV2GHvjjUZqEai2PpUbuq8Bqd//vEYsp63J8WyexI8ppCqVS3Zs0QADf6aWuPdU+0XsPI647PVlQA== + "@xmldom/xmldom@^0.7.0": version "0.7.5" resolved "https://registry.yarnpkg.com/@xmldom/xmldom/-/xmldom-0.7.5.tgz#09fa51e356d07d0be200642b0e4f91d8e6dd408d" integrity sha512-V3BIhmY36fXZ1OtVcI9W+FxQqxVLsPKcNjWigIaa81dLC9IolJl5Mt4Cvhmr0flUnjSpTdrbMTSbXqYqV5dT6A== +"@xtuc/ieee754@^1.2.0": + version "1.2.0" + resolved "https://registry.yarnpkg.com/@xtuc/ieee754/-/ieee754-1.2.0.tgz#eef014a3145ae477a1cbc00cd1e552336dceb790" + integrity sha512-DX8nKgqcGwsc0eJSqYt5lwP4DH5FlHnmuWWBRy7X0NcaGR0ZtuyeESgMwTYVEtxmsNGY+qit4QYT/MIYTOTPeA== + +"@xtuc/long@4.2.2": + version "4.2.2" + resolved "https://registry.yarnpkg.com/@xtuc/long/-/long-4.2.2.tgz#d291c6a4e97989b5c61d9acf396ae4fe133a718d" + integrity sha512-NuHqBY1PB/D8xU6s/thBgOAiAP7HOYDQ32+BFZILJ8ivkUkAHQnWfn6WhL79Owj1qmUnoN/YPhktdIoucipkAQ== + abab@^2.0.0, abab@^2.0.3, abab@^2.0.5: version "2.0.5" resolved "https://registry.yarnpkg.com/abab/-/abab-2.0.5.tgz#c0b678fb32d60fc1219c784d6a826fe385aeb79a" @@ -2494,6 +2828,11 @@ acorn-globals@^6.0.0: acorn "^7.1.1" acorn-walk "^7.1.1" +acorn-import-assertions@^1.7.6: + version "1.8.0" + resolved "https://registry.yarnpkg.com/acorn-import-assertions/-/acorn-import-assertions-1.8.0.tgz#ba2b5939ce62c238db6d93d81c9b111b29b855e9" + integrity sha512-m7VZ3jwz4eK6A4Vtt8Ew1/mNbP24u0FhdyfA7fSvnJR6LMdfOYnmuIrrJAgrYfYJ10F/otaHTtrtrtmHdMNzEw== + acorn-jsx@^5.2.0: version "5.3.2" resolved "https://registry.yarnpkg.com/acorn-jsx/-/acorn-jsx-5.3.2.tgz#7ed5bb55908b3b2f1bc55c6af1653bada7f07937" @@ -2571,7 +2910,12 @@ airtable@0.10.1: lodash "^4.17.19" node-fetch "^2.6.1" -ajv@^6.10.0, ajv@^6.10.2, ajv@^6.12.3: +ajv-keywords@^3.5.2: + version "3.5.2" + resolved "https://registry.yarnpkg.com/ajv-keywords/-/ajv-keywords-3.5.2.tgz#31f29da5ab6e00d1c2d329acf7b5929614d5014d" + integrity sha512-5p6WTN0DdTGVQk6VjcEju19IgaHudalcfabD7yhDGeA6bcQnmL+CpveLJq/3hvfwd1aof6L386Ougkx6RfyMIQ== + +ajv@^6.10.0, ajv@^6.10.2, ajv@^6.12.3, ajv@^6.12.5: version "6.12.6" resolved "https://registry.yarnpkg.com/ajv/-/ajv-6.12.6.tgz#baf5a62e802b07d977034586f8c3baf5adf26df4" integrity sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g== @@ -2672,6 +3016,34 @@ apexcharts@^3.19.2, apexcharts@^3.22.1: svg.resize.js "^1.4.3" svg.select.js "^3.0.1" +apidoc@^0.50.2: + version "0.50.2" + resolved "https://registry.yarnpkg.com/apidoc/-/apidoc-0.50.2.tgz#84cbd4d37d8a8c60ac49b34f34b6092f6d04281f" + integrity sha512-y0o+gW77U2Q9+BebITTv3Z4G6YEZ6y3OxFmjAJeak9NHwxzxFEYYKqSYlzQX8X+BJTw9AlqlHXwAio8CKyLaaQ== + dependencies: + bootstrap "3.4.1" + commander "^8.3.0" + diff-match-patch "^1.0.5" + esbuild-loader "^2.16.0" + expose-loader "^3.1.0" + fs-extra "^10.0.0" + glob "^7.2.0" + handlebars "^4.7.7" + iconv-lite "^0.6.3" + jquery "^3.6.0" + klaw-sync "^6.0.0" + lodash "^4.17.21" + markdown-it "^12.2.0" + nodemon "^2.0.15" + path-to-regexp "^6.2.0" + prismjs "^1.25.0" + semver "^7.3.5" + style-loader "^3.3.1" + url-parse "^1.5.3" + webpack "^5.64.2" + webpack-cli "^4.9.1" + winston "^3.3.3" + arangojs@7.2.0: version "7.2.0" resolved "https://registry.yarnpkg.com/arangojs/-/arangojs-7.2.0.tgz#e576926b4b3469c5a130cceba45fada8b5f015d1" @@ -2695,13 +3067,18 @@ arg@^4.1.0: resolved "https://registry.yarnpkg.com/arg/-/arg-4.1.3.tgz#269fc7ad5b8e42cb63c896d5666017261c144089" integrity sha512-58S9QDqG0Xx27YwPSt9fJxivjYl432YCwfDMfZ+71RAqUrZef7LrKQZ3LHLOwCS4FLNBplP533Zx895SeOCHvA== -argparse@^1.0.7: +argparse@^1.0.10, argparse@^1.0.7: version "1.0.10" resolved "https://registry.yarnpkg.com/argparse/-/argparse-1.0.10.tgz#bcd6791ea5ae09725e17e5ad988134cd40b3d911" integrity sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg== dependencies: sprintf-js "~1.0.2" +argparse@^2.0.1: + version "2.0.1" + resolved "https://registry.yarnpkg.com/argparse/-/argparse-2.0.1.tgz#246f50f3ca78a3240f6c997e8a9bd1eac49e4b38" + integrity sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q== + args@^5.0.1: version "5.0.1" resolved "https://registry.yarnpkg.com/args/-/args-5.0.1.tgz#4bf298df90a4799a09521362c579278cc2fdd761" @@ -2737,6 +3114,15 @@ array-equal@^1.0.0: resolved "https://registry.yarnpkg.com/array-equal/-/array-equal-1.0.0.tgz#8c2a5ef2472fd9ea742b04c77a75093ba2757c93" integrity sha1-jCpe8kcv2ep0KwTHenUJO6J1fJM= +array-sort@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/array-sort/-/array-sort-1.0.0.tgz#e4c05356453f56f53512a7d1d6123f2c54c0a88a" + integrity sha512-ihLeJkonmdiAsD7vpgN3CRcx2J2S0TiYW+IS/5zHBI7mKUq3ySvBdzzBfD236ubDBQFiiyG3SWCPc+msQ9KoYg== + dependencies: + default-compare "^1.0.0" + get-value "^2.0.6" + kind-of "^5.0.2" + array-union@^2.1.0: version "2.1.0" resolved "https://registry.yarnpkg.com/array-union/-/array-union-2.1.0.tgz#b798420adbeb1de828d84acd8a2e23d3efe85e8d" @@ -2779,6 +3165,13 @@ astral-regex@^1.0.0: resolved "https://registry.yarnpkg.com/astral-regex/-/astral-regex-1.0.0.tgz#6c8c3fb827dd43ee3918f27b82782ab7658a6fd9" integrity sha512-+Ryf6g3BKoRc7jfp7ad8tM4TtMiaWvbF/1/sQcZPkkS7ag3D5nMBCe2UfOTONtAkaG0tO0ij3C5Lwmf1EiyjHg== +async-hook-jl@^1.7.6: + version "1.7.6" + resolved "https://registry.yarnpkg.com/async-hook-jl/-/async-hook-jl-1.7.6.tgz#4fd25c2f864dbaf279c610d73bf97b1b28595e68" + integrity sha512-gFaHkFfSxTjvoxDMYqDuGHlcRyUuamF8s+ZTtJdDzqjws4mCt7v0vuV79/E2Wr2/riMQgtG4/yUtXWs1gZ7JMg== + dependencies: + stack-chain "^1.3.7" + async-limiter@~1.0.0: version "1.0.1" resolved "https://registry.yarnpkg.com/async-limiter/-/async-limiter-1.0.1.tgz#dd379e94f0db8310b08291f9d64c3209766617fd" @@ -2796,6 +3189,18 @@ async@^2.6.3: dependencies: lodash "^4.17.14" +async@^3.1.0: + version "3.2.2" + resolved "https://registry.yarnpkg.com/async/-/async-3.2.2.tgz#2eb7671034bb2194d45d30e31e24ec7e7f9670cd" + integrity sha512-H0E+qZaDEfx/FY4t7iLRv1W2fFI6+pyCeTw1uN20AQPiwqwM6ojPxHxdLv4z8hi2DtnW9BOckSspLucW7pIE5g== + +async@~2.1.4: + version "2.1.5" + resolved "https://registry.yarnpkg.com/async/-/async-2.1.5.tgz#e587c68580994ac67fc56ff86d3ac56bdbe810bc" + integrity sha1-5YfGhYCZSsZ/xW/4bTrFa9voELw= + dependencies: + lodash "^4.14.0" + asynckit@^0.4.0: version "0.4.0" resolved "https://registry.yarnpkg.com/asynckit/-/asynckit-0.4.0.tgz#c79ed97f7f34cb8f2ba1bc9790bcc366474b4b79" @@ -2811,6 +3216,13 @@ 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" + aws-sdk@^2.767.0: version "2.1030.0" resolved "https://registry.yarnpkg.com/aws-sdk/-/aws-sdk-2.1030.0.tgz#24a856af3d2b8b37c14a8f59974993661c66fd82" @@ -2826,6 +3238,21 @@ aws-sdk@^2.767.0: uuid "3.3.2" xml2js "0.4.19" +aws-sdk@^2.901.0: + version "2.1036.0" + resolved "https://registry.yarnpkg.com/aws-sdk/-/aws-sdk-2.1036.0.tgz#47f0d0a38b5bfbd4a7a382a6756a6aa7af627aad" + integrity sha512-K0f4uXL32ZdoPmWiuSQEAC5ae5v7gNmhjzoEB7VonE5E8l2umWsoU0Ahm8WPr14LgsvtkeyBuqBjphbxLz6hIw== + dependencies: + buffer "4.9.2" + events "1.1.1" + ieee754 "1.1.13" + jmespath "0.15.0" + querystring "0.2.0" + sax "1.2.1" + url "0.10.3" + uuid "3.3.2" + xml2js "0.4.19" + aws-sign2@~0.7.0: version "0.7.0" resolved "https://registry.yarnpkg.com/aws-sign2/-/aws-sign2-0.7.0.tgz#b46e890934a9591f2d2f6f86d7e6a9f1b3fe76a8" @@ -3008,6 +3435,11 @@ base64-js@^1.0.2, base64-js@^1.3.1: resolved "https://registry.yarnpkg.com/base64-js/-/base64-js-1.5.1.tgz#1b1b440160a5bf7ad40b650f095963481903930a" integrity sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA== +base64url@3.x.x, base64url@^3.0.1: + version "3.0.1" + resolved "https://registry.yarnpkg.com/base64url/-/base64url-3.0.1.tgz#6399d572e2bc3f90a9a8b22d5dbb0a32d33f788d" + integrity sha512-ir1UPr3dkwexU7FdV8qBBbNDRUhMmIekYMFZfi+C/sLNnRESKPl23nB9b2pltqfOQNnGzsDdId90AEtG5tCx4A== + base@^0.11.1: version "0.11.2" resolved "https://registry.yarnpkg.com/base/-/base-0.11.2.tgz#7bde5ced145b6d551a90db87f83c558b4eb48a8f" @@ -3028,11 +3460,16 @@ bcrypt-pbkdf@^1.0.0: dependencies: tweetnacl "^0.14.3" -bcryptjs@2.4.3: +bcryptjs@2.4.3, bcryptjs@^2.4.3: version "2.4.3" resolved "https://registry.yarnpkg.com/bcryptjs/-/bcryptjs-2.4.3.tgz#9ab5627b93e60621ff7cdac5da9733027df1d0cb" integrity sha1-mrVie5PmBiH/fNrF2pczAn3x0Ms= +big.js@^5.2.2: + version "5.2.2" + resolved "https://registry.yarnpkg.com/big.js/-/big.js-5.2.2.tgz#65f0af382f578bcdc742bd9c281e9cb2d7768328" + integrity sha512-vyL2OymJxmarO8gxMr0mhChsO9QGwhynfuu4+MHTAW6czfq9humCB7rKpUjDd9YUiDPU4mzpyupFSvOClAwbmQ== + binary-extensions@^2.0.0: version "2.2.0" resolved "https://registry.yarnpkg.com/binary-extensions/-/binary-extensions-2.2.0.tgz#75f502eeaf9ffde42fc98829645be4ea76bd9e2d" @@ -3068,6 +3505,15 @@ bl@^3.0.0: dependencies: readable-stream "^3.0.1" +bl@^4.0.3: + version "4.1.0" + resolved "https://registry.yarnpkg.com/bl/-/bl-4.1.0.tgz#451535264182bec2fbbc83a62ab98cf11d9f7b3a" + integrity sha512-1W07cM9gS6DcLperZfFSj+bWLtaPGSOHWhPiGzXmvVJbRLdG82sH/Kn8EtW1VqWVA54AKf2h5k5BbnIbwF3h6w== + dependencies: + buffer "^5.5.0" + inherits "^2.0.4" + readable-stream "^3.4.0" + bluebird@^3.5.1, bluebird@^3.7.2: version "3.7.2" resolved "https://registry.yarnpkg.com/bluebird/-/bluebird-3.7.2.tgz#9f229c15be272454ffa973ace0dbee79a1b0c36f" @@ -3078,6 +3524,11 @@ bmp-js@^0.1.0: resolved "https://registry.yarnpkg.com/bmp-js/-/bmp-js-0.1.0.tgz#e05a63f796a6c1ff25f4771ec7adadc148c07233" integrity sha1-4Fpj95amwf8l9Hcex62twUjAcjM= +bootstrap@3.4.1: + version "3.4.1" + resolved "https://registry.yarnpkg.com/bootstrap/-/bootstrap-3.4.1.tgz#c3a347d419e289ad11f4033e3c4132b87c081d72" + integrity sha512-yN5oZVmRCwe5aKwzRj6736nSmKDX7pLYwsXiCj/EYmo16hODaBiT4En5btW/jhBF/seV+XMx3aYwukYC3A49DA== + boxen@^5.0.0: version "5.1.2" resolved "https://registry.yarnpkg.com/boxen/-/boxen-5.1.2.tgz#788cb686fc83c1f486dfa8a40c68fc2b831d2b50" @@ -3135,7 +3586,7 @@ browser-resolve@^1.11.3: dependencies: resolve "1.1.7" -browserslist@^4.17.5, browserslist@^4.17.6: +browserslist@^4.14.5, browserslist@^4.17.5, browserslist@^4.17.6: version "4.18.1" resolved "https://registry.yarnpkg.com/browserslist/-/browserslist-4.18.1.tgz#60d3920f25b6860eb917c6c7b185576f4d8b017f" integrity sha512-8ScCzdpPwR2wQh8IT82CA2VgDwjHyqMovPBZSNH54+tm4Jk2pCuv90gmAdH6J84OCRWi0b4gMe6O6XPXuJnjgQ== @@ -3405,6 +3856,16 @@ chokidar@^3.5.2: optionalDependencies: fsevents "~2.3.2" +chownr@^1.1.1: + version "1.1.4" + resolved "https://registry.yarnpkg.com/chownr/-/chownr-1.1.4.tgz#6fc9d7b42d32a583596337666e7d08084da2cc6b" + integrity sha512-jJ0bqzaylmJtVnNgzTeSOs8DPavpbYgEr/b0YL8/2GO3xJEhInFmhKMUnEJQjZumK7KXGFhUy89PrsJWlakBVg== + +chrome-trace-event@^1.0.2: + version "1.0.3" + resolved "https://registry.yarnpkg.com/chrome-trace-event/-/chrome-trace-event-1.0.3.tgz#1015eced4741e15d06664a957dbbf50d041e26ac" + integrity sha512-p3KULyQg4S7NIHixdwbGX+nFHkoBiA4YQmyWtjb8XngSKV124nJmRysgAeujbUVb15vh+RvFUfCPqU7rXk+hZg== + ci-info@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/ci-info/-/ci-info-2.0.0.tgz#67a9e964be31a51e15e5010d58e6f12834002f46" @@ -3470,6 +3931,15 @@ clone-buffer@1.0.0: resolved "https://registry.yarnpkg.com/clone-buffer/-/clone-buffer-1.0.0.tgz#e3e25b207ac4e701af721e2cb5a16792cac3dc58" integrity sha1-4+JbIHrE5wGvch4staFnksrD3Fg= +clone-deep@^4.0.1: + version "4.0.1" + resolved "https://registry.yarnpkg.com/clone-deep/-/clone-deep-4.0.1.tgz#c19fd9bdbbf85942b4fd979c84dcf7d5f07c2387" + integrity sha512-neHB9xuzh/wk0dIHweyAXv2aPGZIVk3pLMe+/RNzINf17fe0OG96QroktYAUm7SM1PBnzTabaLboqqxDyMU+SQ== + dependencies: + is-plain-object "^2.0.4" + kind-of "^6.0.2" + shallow-clone "^3.0.0" + clone-response@1.0.2, clone-response@^1.0.2: version "1.0.2" resolved "https://registry.yarnpkg.com/clone-response/-/clone-response-1.0.2.tgz#d1dc973920314df67fbeb94223b4ee350239e96b" @@ -3477,6 +3947,15 @@ clone-response@1.0.2, clone-response@^1.0.2: dependencies: mimic-response "^1.0.0" +cls-hooked@^4.2.2: + version "4.2.2" + resolved "https://registry.yarnpkg.com/cls-hooked/-/cls-hooked-4.2.2.tgz#ad2e9a4092680cdaffeb2d3551da0e225eae1908" + integrity sha512-J4Xj5f5wq/4jAvcdgoGsL3G103BtWpZrMo8NEinRltN+xpTZdI+M38pyQqhuFU/P792xkMFvnKSf+Lm81U1bxw== + dependencies: + async-hook-jl "^1.7.6" + emitter-listener "^1.0.1" + semver "^5.4.1" + cluster-key-slot@^1.1.0: version "1.1.0" resolved "https://registry.yarnpkg.com/cluster-key-slot/-/cluster-key-slot-1.1.0.tgz#30474b2a981fb12172695833052bc0d01336d10d" @@ -3510,7 +3989,7 @@ collection-visit@^1.0.0: map-visit "^1.0.0" object-visit "^1.0.0" -color-convert@^1.9.0: +color-convert@^1.9.0, color-convert@^1.9.3: version "1.9.3" resolved "https://registry.yarnpkg.com/color-convert/-/color-convert-1.9.3.tgz#bb71850690e1f136567de629d2d5471deda4c1e8" integrity sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg== @@ -3529,16 +4008,45 @@ color-name@1.1.3: resolved "https://registry.yarnpkg.com/color-name/-/color-name-1.1.3.tgz#a7d0558bd89c42f795dd42328f740831ca53bc25" integrity sha1-p9BVi9icQveV3UIyj3QIMcpTvCU= -color-name@~1.1.4: +color-name@^1.0.0, color-name@~1.1.4: version "1.1.4" resolved "https://registry.yarnpkg.com/color-name/-/color-name-1.1.4.tgz#c2a09a87acbde69543de6f63fa3995c826c536a2" integrity sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA== -colorette@2.0.16: +color-string@^1.6.0: + version "1.6.0" + resolved "https://registry.yarnpkg.com/color-string/-/color-string-1.6.0.tgz#c3915f61fe267672cb7e1e064c9d692219f6c312" + integrity sha512-c/hGS+kRWJutUBEngKKmk4iH3sD59MBkoxVapS/0wgpCz2u7XsNloxknyvBhzwEs1IbV36D9PwqLPJ2DTu3vMA== + dependencies: + color-name "^1.0.0" + simple-swizzle "^0.2.2" + +color@^3.1.3: + version "3.2.1" + resolved "https://registry.yarnpkg.com/color/-/color-3.2.1.tgz#3544dc198caf4490c3ecc9a790b54fe9ff45e164" + integrity sha512-aBl7dZI9ENN6fUGC7mWpMTPNHmWUSNan9tuWN6ahh5ZLNk9baLJOnSMlrQkHcrfFgz2/RigjUVAjdx36VcemKA== + dependencies: + color-convert "^1.9.3" + color-string "^1.6.0" + +colorette@2.0.16, colorette@^2.0.14: version "2.0.16" resolved "https://registry.yarnpkg.com/colorette/-/colorette-2.0.16.tgz#713b9af84fdb000139f04546bd4a93f62a5085da" integrity sha512-hUewv7oMjCp+wkBv5Rm0v87eJhq4woh5rSR+42YSQJKecCqgIqNkZ6lAlQms/BwHPJA5NKMRlpxPRv0n8HQW6g== +colors@^1.2.1: + version "1.4.0" + resolved "https://registry.yarnpkg.com/colors/-/colors-1.4.0.tgz#c50491479d4c1bdaed2c9ced32cf7c7dc2360f78" + integrity sha512-a+UqTh4kgZg/SlGvfbzDHpgRu7AAQOmmqRHJnxhRZICKFUT91brVhNNt58CMWU9PsBbv3PDCZUHbVxuDiH2mtA== + +colorspace@1.1.x: + version "1.1.4" + resolved "https://registry.yarnpkg.com/colorspace/-/colorspace-1.1.4.tgz#8d442d1186152f60453bf8070cd66eb364e59243" + integrity sha512-BgvKJiuVu1igBUF2kEjRCZXol6wiiGbY5ipL/oVPwm0BL9sIpMIzM8IK7vwuxIIzOXMV3Ey5w+vxhm0rR/TN8w== + dependencies: + color "^3.1.3" + text-hex "1.0.x" + combined-stream@^1.0.6, combined-stream@^1.0.8, combined-stream@~1.0.6: version "1.0.8" resolved "https://registry.yarnpkg.com/combined-stream/-/combined-stream-1.0.8.tgz#c3d45a8b34fd730631a110a8a2520682b31d5a7f" @@ -3546,16 +4054,21 @@ combined-stream@^1.0.6, combined-stream@^1.0.8, combined-stream@~1.0.6: dependencies: delayed-stream "~1.0.0" -commander@^2.19.0, commander@^2.5.0, commander@^2.8.1: +commander@^2.19.0, commander@^2.20.0, commander@^2.5.0, commander@^2.8.1: version "2.20.3" resolved "https://registry.yarnpkg.com/commander/-/commander-2.20.3.tgz#fd485e84c03eb4881c20722ba48035e8531aeb33" integrity sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ== -commander@^7.1.0: +commander@^7.0.0, commander@^7.1.0: version "7.2.0" resolved "https://registry.yarnpkg.com/commander/-/commander-7.2.0.tgz#a36cb57d0b501ce108e4d20559a150a391d97ab7" integrity sha512-QrWXB+ZQSVPmIWIhtEO9H+gwHaMGYiF5ChvoJ+K9ZGHG/sVsa6yiesAD1GC/x46sET00Xlwo1u49RVVVzvcSkw== +commander@^8.3.0: + version "8.3.0" + resolved "https://registry.yarnpkg.com/commander/-/commander-8.3.0.tgz#4837ea1b2da67b9c616a67afbb0fafee567bca66" + integrity sha512-OkTL9umf+He2DZkUq8f8J9of7yL6RJKI24dVITBmNfZBmri9zYZQrKkuXiKhyfPSu8tUhnVBB1iKXevvnlR4Ww== + commoner@^0.10.1: version "0.10.8" resolved "https://registry.yarnpkg.com/commoner/-/commoner-0.10.8.tgz#34fc3672cd24393e8bb47e70caa0293811f4f2c5" @@ -3593,6 +4106,13 @@ concat-map@0.0.1: resolved "https://registry.yarnpkg.com/concat-map/-/concat-map-0.0.1.tgz#d8a96bd77fd68df7793a73036a3ba0d5405d477b" integrity sha1-2Klr13/Wjfd5OnMDajug1UBdR3s= +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" + condense-newlines@^0.2.1: version "0.2.1" resolved "https://registry.yarnpkg.com/condense-newlines/-/condense-newlines-0.2.1.tgz#3de985553139475d32502c83b02f60684d24c55f" @@ -3826,6 +4346,13 @@ 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" @@ -3969,6 +4496,13 @@ deepmerge@^4.2.2: resolved "https://registry.yarnpkg.com/deepmerge/-/deepmerge-4.2.2.tgz#44d2ea3679b8f4d4ffba33f03d865fc1e7bf4955" integrity sha512-FJ3UgI4gIl+PHZm53knsuSFpE+nESMr7M4v9QcgB7S63Kj/6WqMiFQJpBBYz1Pt+66bZpP3Q7Lye0Oo9MPKEdg== +default-compare@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/default-compare/-/default-compare-1.0.0.tgz#cb61131844ad84d84788fb68fd01681ca7781a2f" + integrity sha512-QWfXlM0EkAbqOCbD/6HjdwT19j7WCkMyiRhWilc4H9/5h/RzTF9gv5LYh1+CmDV5d1rki6KAWLtQale0xt20eQ== + dependencies: + kind-of "^5.0.2" + default-shell@^1.0.0: version "1.0.1" resolved "https://registry.yarnpkg.com/default-shell/-/default-shell-1.0.1.tgz#752304bddc6174f49eb29cb988feea0b8813c8bc" @@ -4082,6 +4616,11 @@ detective@^4.3.1: acorn "^5.2.1" defined "^1.0.0" +diff-match-patch@^1.0.5: + version "1.0.5" + resolved "https://registry.yarnpkg.com/diff-match-patch/-/diff-match-patch-1.0.5.tgz#abb584d5f10cd1196dfc55aa03701592ae3f7b37" + integrity sha512-IayShXAgj/QMXgB0IWmKx+rOPuGMhqm5w6jvFxmVenXKIzRqTAAsbBPT3kWQeGANj3jGgvcvv4yK6SxqYmikgw== + diff-sequences@^24.9.0: version "24.9.0" resolved "https://registry.yarnpkg.com/diff-sequences/-/diff-sequences-24.9.0.tgz#5715d6244e2aa65f48bba0bc972db0b0b11e95b5" @@ -4228,6 +4767,13 @@ electron-to-chromium@^1.3.896: resolved "https://registry.yarnpkg.com/electron-to-chromium/-/electron-to-chromium-1.3.900.tgz#5be2c5818a2a012c511b4b43e87b6ab7a296d4f5" integrity sha512-SuXbQD8D4EjsaBaJJxySHbC+zq8JrFfxtb4GIr4E9n1BcROyMcRrJCYQNpJ9N+Wjf5mFp7Wp0OHykd14JNEzzQ== +emitter-listener@^1.0.1: + version "1.1.2" + resolved "https://registry.yarnpkg.com/emitter-listener/-/emitter-listener-1.1.2.tgz#56b140e8f6992375b3d7cb2cab1cc7432d9632e8" + integrity sha512-Bt1sBAGFHY9DKY+4/2cV6izcKJUf5T7/gkdmkxzX/qv9CcGH8xSwVRW5mtX03SWJtRTWSOpzCuWN9rBFYZepZQ== + dependencies: + shimmer "^1.2.0" + emittery@^0.8.1: version "0.8.1" resolved "https://registry.yarnpkg.com/emittery/-/emittery-0.8.1.tgz#bb23cc86d03b30aa75a7f734819dee2e1ba70860" @@ -4243,6 +4789,16 @@ emoji-regex@^8.0.0: resolved "https://registry.yarnpkg.com/emoji-regex/-/emoji-regex-8.0.0.tgz#e818fd69ce5ccfcb404594f842963bf53164cc37" integrity sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A== +emojis-list@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/emojis-list/-/emojis-list-3.0.0.tgz#5570662046ad29e2e916e71aae260abdff4f6a78" + integrity sha512-/kyM18EfinwXZbno9FyUGeFh87KC8HRQBQGildHZbEuRyWFOmv1U10o9BBp8XVZDVNNuQKyIGIu5ZYAAXJ0V2Q== + +enabled@2.0.x: + version "2.0.0" + resolved "https://registry.yarnpkg.com/enabled/-/enabled-2.0.0.tgz#f9dd92ec2d6f4bbc0d5d1e64e21d61cd4665e7c2" + integrity sha512-AKrN98kuwOzMIdAizXGI86UFBoo26CL21UM763y1h/GMSJ4/OHU9k2YlsmBpyScFo/wbLzWQJBMCW4+IO3/+OQ== + encodeurl@^1.0.2: version "1.0.2" resolved "https://registry.yarnpkg.com/encodeurl/-/encodeurl-1.0.2.tgz#ad3ff4c86ec2d029322f5a02c3a9a606c95b3f59" @@ -4258,7 +4814,7 @@ encoding-down@^6.3.0: level-codec "^9.0.0" level-errors "^2.0.0" -end-of-stream@^1.0.0, end-of-stream@^1.1.0: +end-of-stream@^1.0.0, end-of-stream@^1.1.0, end-of-stream@^1.4.1: version "1.4.4" resolved "https://registry.yarnpkg.com/end-of-stream/-/end-of-stream-1.4.4.tgz#5ae64a5f45057baf3626ec14da0ca5e4b2431eb0" integrity sha512-+uw1inIHVPQoaVuHzRyXd21icM+cnt4CzD5rW+NC1wjOUSTOs+Te7FOv7AhN7vS9x/oIyhLP5PR1H+phQAHu5Q== @@ -4272,6 +4828,29 @@ end-stream@~0.1.0: dependencies: write-stream "~0.4.3" +enhanced-resolve@^5.8.3: + version "5.8.3" + resolved "https://registry.yarnpkg.com/enhanced-resolve/-/enhanced-resolve-5.8.3.tgz#6d552d465cce0423f5b3d718511ea53826a7b2f0" + integrity sha512-EGAbGvH7j7Xt2nc0E7D99La1OiEs8LnyimkRgwExpUMScN6O+3x9tIWs7PLQZVNx4YD+00skHXPXi1yQHpAmZA== + dependencies: + graceful-fs "^4.2.4" + tapable "^2.2.0" + +ent@^2.2.0: + version "2.2.0" + resolved "https://registry.yarnpkg.com/ent/-/ent-2.2.0.tgz#e964219325a21d05f44466a2f686ed6ce5f5dd1d" + integrity sha1-6WQhkyWiHQX0RGai9obtbOX13R0= + +entities@~2.1.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/entities/-/entities-2.1.0.tgz#992d3129cf7df6870b96c57858c249a120f8b8b5" + integrity sha512-hCx1oky9PFrJ611mf0ifBLBRW8lUUVRlFolb5gWRfIELabBlbp9xZvrqZLZAs+NxFnbfQoeGd8wDkygjg7U85w== + +envinfo@^7.7.3: + version "7.8.1" + resolved "https://registry.yarnpkg.com/envinfo/-/envinfo-7.8.1.tgz#06377e3e5f4d379fea7ac592d5ad8927e0c4d475" + integrity sha512-/o+BXHmB7ocbHEAs6F2EnG0ogybVVUdkRunTT2glZU9XAaGmhqskrvKwqXuDfNjEO0LZKWdejEEpnq8aM0tOaw== + errno@~0.1.1, errno@~0.1.7: version "0.1.8" resolved "https://registry.yarnpkg.com/errno/-/errno-0.1.8.tgz#8bb3e9c7d463be4976ff888f76b4809ebc2e811f" @@ -4317,6 +4896,11 @@ es-abstract@^1.19.1: string.prototype.trimstart "^1.0.4" unbox-primitive "^1.0.1" +es-module-lexer@^0.9.0: + version "0.9.3" + resolved "https://registry.yarnpkg.com/es-module-lexer/-/es-module-lexer-0.9.3.tgz#6f13db00cc38417137daf74366f535c8eb438f19" + integrity sha512-1HQ2M2sPtxwnvOvT1ZClHyQDiggdNjURWpY2we6aMKCQiUVxTmVs2UYPLIrD84sS+kMdUwfBSylbJPwNnBrnHQ== + 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" @@ -4354,6 +4938,127 @@ es6-error@^4.0.1: resolved "https://registry.yarnpkg.com/es6-error/-/es6-error-4.1.1.tgz#9e3af407459deed47e9a91f9b885a84eb05c561d" integrity sha512-Um/+FxMr9CISWh0bi5Zv0iOD+4cFh5qLeks1qhAopKVAJw3drgKbKySikp7wGhDL0HPeaja0P5ULZrxLkniUVg== +esbuild-android-arm64@0.13.15: + version "0.13.15" + resolved "https://registry.yarnpkg.com/esbuild-android-arm64/-/esbuild-android-arm64-0.13.15.tgz#3fc3ff0bab76fe35dd237476b5d2b32bb20a3d44" + integrity sha512-m602nft/XXeO8YQPUDVoHfjyRVPdPgjyyXOxZ44MK/agewFFkPa8tUo6lAzSWh5Ui5PB4KR9UIFTSBKh/RrCmg== + +esbuild-darwin-64@0.13.15: + version "0.13.15" + resolved "https://registry.yarnpkg.com/esbuild-darwin-64/-/esbuild-darwin-64-0.13.15.tgz#8e9169c16baf444eacec60d09b24d11b255a8e72" + integrity sha512-ihOQRGs2yyp7t5bArCwnvn2Atr6X4axqPpEdCFPVp7iUj4cVSdisgvEKdNR7yH3JDjW6aQDw40iQFoTqejqxvQ== + +esbuild-darwin-arm64@0.13.15: + version "0.13.15" + resolved "https://registry.yarnpkg.com/esbuild-darwin-arm64/-/esbuild-darwin-arm64-0.13.15.tgz#1b07f893b632114f805e188ddfca41b2b778229a" + integrity sha512-i1FZssTVxUqNlJ6cBTj5YQj4imWy3m49RZRnHhLpefFIh0To05ow9DTrXROTE1urGTQCloFUXTX8QfGJy1P8dQ== + +esbuild-freebsd-64@0.13.15: + version "0.13.15" + resolved "https://registry.yarnpkg.com/esbuild-freebsd-64/-/esbuild-freebsd-64-0.13.15.tgz#0b8b7eca1690c8ec94c75680c38c07269c1f4a85" + integrity sha512-G3dLBXUI6lC6Z09/x+WtXBXbOYQZ0E8TDBqvn7aMaOCzryJs8LyVXKY4CPnHFXZAbSwkCbqiPuSQ1+HhrNk7EA== + +esbuild-freebsd-arm64@0.13.15: + version "0.13.15" + resolved "https://registry.yarnpkg.com/esbuild-freebsd-arm64/-/esbuild-freebsd-arm64-0.13.15.tgz#2e1a6c696bfdcd20a99578b76350b41db1934e52" + integrity sha512-KJx0fzEDf1uhNOZQStV4ujg30WlnwqUASaGSFPhznLM/bbheu9HhqZ6mJJZM32lkyfGJikw0jg7v3S0oAvtvQQ== + +esbuild-linux-32@0.13.15: + version "0.13.15" + resolved "https://registry.yarnpkg.com/esbuild-linux-32/-/esbuild-linux-32-0.13.15.tgz#6fd39f36fc66dd45b6b5f515728c7bbebc342a69" + integrity sha512-ZvTBPk0YWCLMCXiFmD5EUtB30zIPvC5Itxz0mdTu/xZBbbHJftQgLWY49wEPSn2T/TxahYCRDWun5smRa0Tu+g== + +esbuild-linux-64@0.13.15: + version "0.13.15" + resolved "https://registry.yarnpkg.com/esbuild-linux-64/-/esbuild-linux-64-0.13.15.tgz#9cb8e4bcd7574e67946e4ee5f1f1e12386bb6dd3" + integrity sha512-eCKzkNSLywNeQTRBxJRQ0jxRCl2YWdMB3+PkWFo2BBQYC5mISLIVIjThNtn6HUNqua1pnvgP5xX0nHbZbPj5oA== + +esbuild-linux-arm64@0.13.15: + version "0.13.15" + resolved "https://registry.yarnpkg.com/esbuild-linux-arm64/-/esbuild-linux-arm64-0.13.15.tgz#3891aa3704ec579a1b92d2a586122e5b6a2bfba1" + integrity sha512-bYpuUlN6qYU9slzr/ltyLTR9YTBS7qUDymO8SV7kjeNext61OdmqFAzuVZom+OLW1HPHseBfJ/JfdSlx8oTUoA== + +esbuild-linux-arm@0.13.15: + version "0.13.15" + resolved "https://registry.yarnpkg.com/esbuild-linux-arm/-/esbuild-linux-arm-0.13.15.tgz#8a00e99e6a0c6c9a6b7f334841364d8a2b4aecfe" + integrity sha512-wUHttDi/ol0tD8ZgUMDH8Ef7IbDX+/UsWJOXaAyTdkT7Yy9ZBqPg8bgB/Dn3CZ9SBpNieozrPRHm0BGww7W/jA== + +esbuild-linux-mips64le@0.13.15: + version "0.13.15" + resolved "https://registry.yarnpkg.com/esbuild-linux-mips64le/-/esbuild-linux-mips64le-0.13.15.tgz#36b07cc47c3d21e48db3bb1f4d9ef8f46aead4f7" + integrity sha512-KlVjIG828uFPyJkO/8gKwy9RbXhCEUeFsCGOJBepUlpa7G8/SeZgncUEz/tOOUJTcWMTmFMtdd3GElGyAtbSWg== + +esbuild-linux-ppc64le@0.13.15: + version "0.13.15" + resolved "https://registry.yarnpkg.com/esbuild-linux-ppc64le/-/esbuild-linux-ppc64le-0.13.15.tgz#f7e6bba40b9a11eb9dcae5b01550ea04670edad2" + integrity sha512-h6gYF+OsaqEuBjeesTBtUPw0bmiDu7eAeuc2OEH9S6mV9/jPhPdhOWzdeshb0BskRZxPhxPOjqZ+/OqLcxQwEQ== + +esbuild-loader@^2.16.0: + version "2.16.0" + resolved "https://registry.yarnpkg.com/esbuild-loader/-/esbuild-loader-2.16.0.tgz#a44a57a77ed2810d6b278579271f77d739aa7bc9" + integrity sha512-LCJEwkf+nMJbNmVYNgg/0PaIZDdr5OcHw1qbWAZLkrmBRX+KwHY/yAS6ia98UBtwzk/WhsftUBNB6tfPHgFIxw== + dependencies: + esbuild "^0.13.4" + joycon "^3.0.1" + json5 "^2.2.0" + loader-utils "^2.0.0" + tapable "^2.2.0" + type-fest "^1.4.0" + webpack-sources "^2.2.0" + +esbuild-netbsd-64@0.13.15: + version "0.13.15" + resolved "https://registry.yarnpkg.com/esbuild-netbsd-64/-/esbuild-netbsd-64-0.13.15.tgz#a2fedc549c2b629d580a732d840712b08d440038" + integrity sha512-3+yE9emwoevLMyvu+iR3rsa+Xwhie7ZEHMGDQ6dkqP/ndFzRHkobHUKTe+NCApSqG5ce2z4rFu+NX/UHnxlh3w== + +esbuild-openbsd-64@0.13.15: + version "0.13.15" + resolved "https://registry.yarnpkg.com/esbuild-openbsd-64/-/esbuild-openbsd-64-0.13.15.tgz#b22c0e5806d3a1fbf0325872037f885306b05cd7" + integrity sha512-wTfvtwYJYAFL1fSs8yHIdf5GEE4NkbtbXtjLWjM3Cw8mmQKqsg8kTiqJ9NJQe5NX/5Qlo7Xd9r1yKMMkHllp5g== + +esbuild-sunos-64@0.13.15: + version "0.13.15" + resolved "https://registry.yarnpkg.com/esbuild-sunos-64/-/esbuild-sunos-64-0.13.15.tgz#d0b6454a88375ee8d3964daeff55c85c91c7cef4" + integrity sha512-lbivT9Bx3t1iWWrSnGyBP9ODriEvWDRiweAs69vI+miJoeKwHWOComSRukttbuzjZ8r1q0mQJ8Z7yUsDJ3hKdw== + +esbuild-windows-32@0.13.15: + version "0.13.15" + resolved "https://registry.yarnpkg.com/esbuild-windows-32/-/esbuild-windows-32-0.13.15.tgz#c96d0b9bbb52f3303322582ef8e4847c5ad375a7" + integrity sha512-fDMEf2g3SsJ599MBr50cY5ve5lP1wyVwTe6aLJsM01KtxyKkB4UT+fc5MXQFn3RLrAIAZOG+tHC+yXObpSn7Nw== + +esbuild-windows-64@0.13.15: + version "0.13.15" + resolved "https://registry.yarnpkg.com/esbuild-windows-64/-/esbuild-windows-64-0.13.15.tgz#1f79cb9b1e1bb02fb25cd414cb90d4ea2892c294" + integrity sha512-9aMsPRGDWCd3bGjUIKG/ZOJPKsiztlxl/Q3C1XDswO6eNX/Jtwu4M+jb6YDH9hRSUflQWX0XKAfWzgy5Wk54JQ== + +esbuild-windows-arm64@0.13.15: + version "0.13.15" + resolved "https://registry.yarnpkg.com/esbuild-windows-arm64/-/esbuild-windows-arm64-0.13.15.tgz#482173070810df22a752c686509c370c3be3b3c3" + integrity sha512-zzvyCVVpbwQQATaf3IG8mu1IwGEiDxKkYUdA4FpoCHi1KtPa13jeScYDjlW0Qh+ebWzpKfR2ZwvqAQkSWNcKjA== + +esbuild@^0.13.4: + version "0.13.15" + resolved "https://registry.yarnpkg.com/esbuild/-/esbuild-0.13.15.tgz#db56a88166ee373f87dbb2d8798ff449e0450cdf" + integrity sha512-raCxt02HBKv8RJxE8vkTSCXGIyKHdEdGfUmiYb8wnabnaEmHzyW7DCHb5tEN0xU8ryqg5xw54mcwnYkC4x3AIw== + optionalDependencies: + esbuild-android-arm64 "0.13.15" + esbuild-darwin-64 "0.13.15" + esbuild-darwin-arm64 "0.13.15" + esbuild-freebsd-64 "0.13.15" + esbuild-freebsd-arm64 "0.13.15" + esbuild-linux-32 "0.13.15" + esbuild-linux-64 "0.13.15" + esbuild-linux-arm "0.13.15" + esbuild-linux-arm64 "0.13.15" + esbuild-linux-mips64le "0.13.15" + esbuild-linux-ppc64le "0.13.15" + esbuild-netbsd-64 "0.13.15" + esbuild-openbsd-64 "0.13.15" + esbuild-sunos-64 "0.13.15" + esbuild-windows-32 "0.13.15" + esbuild-windows-64 "0.13.15" + esbuild-windows-arm64 "0.13.15" + escalade@^3.1.1: version "3.1.1" resolved "https://registry.yarnpkg.com/escalade/-/escalade-3.1.1.tgz#d8cfdc7000965c5a0174b4a82eaa5c0552742e40" @@ -4403,7 +5108,7 @@ escodegen@^2.0.0: optionalDependencies: source-map "~0.6.1" -eslint-scope@^5.0.0: +eslint-scope@5.1.1, eslint-scope@^5.0.0: version "5.1.1" resolved "https://registry.yarnpkg.com/eslint-scope/-/eslint-scope-5.1.1.tgz#e786e59a66cb92b3f6c1fb0d508aab174848f48c" integrity sha512-2NxwbF/hZ0KpepYN0cNbo+FN6XoK7GaHlQhgx/hIZl6Va0bF45RQOOwhLIy8lQDbuCiadSLCBnH2CFYquit5bw== @@ -4559,6 +5264,11 @@ events@1.1.1: resolved "https://registry.yarnpkg.com/events/-/events-1.1.1.tgz#9ebdb7635ad099c70dcc4c2a1f5004288e8bd924" integrity sha1-nr23Y1rQmccNzEwqH1AEKI6L2SQ= +events@^3.2.0: + version "3.3.0" + resolved "https://registry.yarnpkg.com/events/-/events-3.3.0.tgz#31a95ad0a924e2d2c419a813aeb2c4e878ea7400" + integrity sha512-mQw+2fkQbALzQ7V0MY0IqdnXNOeTtP4r0lN9z7AAawCXgqea7bDii20AYrIBrFd/Hx0M2Ocz6S111CaFkUcb0Q== + exec-sh@^0.3.2: version "0.3.6" resolved "https://registry.yarnpkg.com/exec-sh/-/exec-sh-0.3.6.tgz#ff264f9e325519a60cb5e273692943483cca63bc" @@ -4652,6 +5362,11 @@ expect@^27.3.1: jest-message-util "^27.3.1" jest-regex-util "^27.0.6" +expose-loader@^3.1.0: + version "3.1.0" + resolved "https://registry.yarnpkg.com/expose-loader/-/expose-loader-3.1.0.tgz#7a0bdecb345b921ca238a8c4715a4ea7e227213f" + integrity sha512-2RExSo0yJiqP+xiUue13jQa2IHE8kLDzTI7b6kn+vUlBVvlzNSiLDzo4e5Pp5J039usvTUnxZ8sUOhv0Kg15NA== + ext-list@^2.0.0: version "2.2.2" resolved "https://registry.yarnpkg.com/ext-list/-/ext-list-2.2.2.tgz#0b98e64ed82f5acf0f2931babf69212ef52ddd37" @@ -4768,6 +5483,11 @@ fast-url-parser@^1.1.3: dependencies: punycode "^1.3.2" +fastest-levenshtein@^1.0.12: + version "1.0.12" + resolved "https://registry.yarnpkg.com/fastest-levenshtein/-/fastest-levenshtein-1.0.12.tgz#9990f7d3a88cc5a9ffd1f1745745251700d497e2" + integrity sha512-On2N+BpYJ15xIC974QNVuYGMOlEVt4s0EOI3wwMqOmK1fdDY+FN/zltPV8vosq4ad4c/gJ1KHScUn/6AWIgiow== + fastify-warning@^0.2.0: version "0.2.0" resolved "https://registry.yarnpkg.com/fastify-warning/-/fastify-warning-0.2.0.tgz#e717776026a4493dc9a2befa44db6d17f618008f" @@ -4794,6 +5514,11 @@ fd-slicer@~1.1.0: dependencies: pend "~1.2.0" +fecha@^4.2.0: + version "4.2.1" + resolved "https://registry.yarnpkg.com/fecha/-/fecha-4.2.1.tgz#0a83ad8f86ef62a091e22bb5a039cd03d23eecce" + integrity sha512-MMMQ0ludy/nBs1/o0zVOiKTpG7qMbonKUzjJgQFEuvq6INZ1OraKPRAWkBq5vlKLOUMpmNYG1JoN3oDPUQ9m3Q== + fetch-cookie@0.10.1: version "0.10.1" resolved "https://registry.yarnpkg.com/fetch-cookie/-/fetch-cookie-0.10.1.tgz#5ea88f3d36950543c87997c27ae2aeafb4b5c4d4" @@ -4947,6 +5672,11 @@ flatted@^2.0.0: resolved "https://registry.yarnpkg.com/flatted/-/flatted-2.0.2.tgz#4575b21e2bcee7434aa9be662f4b7b5f9c2b5138" integrity sha512-r5wGx7YeOwNWNlCA0wQ86zKyDLMQr+/RB8xy74M4hTphfmjlijTSSXGuH8rnvKZnfT9i+75zmd8jcKdMR4O6jA== +fn.name@1.x.x: + version "1.1.0" + resolved "https://registry.yarnpkg.com/fn.name/-/fn.name-1.1.0.tgz#26cad8017967aea8731bc42961d04a3d5988accc" + integrity sha512-GRnmB5gPyJpAhTQdSZTSp9uaPSvl09KoYcMQtsB9rQoOmzs9dH6ffeccH+Z+cv6P68Hu5bC6JjRh4Ah/mHSNRw== + follow-redirects@^1.14.0, follow-redirects@^1.14.4: version "1.14.5" resolved "https://registry.yarnpkg.com/follow-redirects/-/follow-redirects-1.14.5.tgz#f09a5848981d3c772b5392309778523f8d85c381" @@ -5031,6 +5761,11 @@ 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" @@ -5040,6 +5775,15 @@ fs-extra@8.1.0: jsonfile "^4.0.0" universalify "^0.1.0" +fs-extra@^10.0.0: + version "10.0.0" + resolved "https://registry.yarnpkg.com/fs-extra/-/fs-extra-10.0.0.tgz#9ff61b655dde53fb34a82df84bb214ce802e17c1" + integrity sha512-C5owb14u9eJwizKGdchcDUQeFtlSHHthBk8pbX9Vc1PFZrLombudjDnNns88aYslCyF6IY5SUw3Roz6xShcEIQ== + dependencies: + graceful-fs "^4.2.0" + jsonfile "^6.0.1" + universalify "^2.0.0" + fs.realpath@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/fs.realpath/-/fs.realpath-1.0.0.tgz#1504ad2523158caa40db4a2787cb01411994ea4f" @@ -5094,6 +5838,14 @@ get-intrinsic@^1.0.2, get-intrinsic@^1.1.0, get-intrinsic@^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-package-type@^0.1.0: version "0.1.0" resolved "https://registry.yarnpkg.com/get-package-type/-/get-package-type-0.1.0.tgz#8de2d803cff44df3bc6c456e6668b36c3926e11a" @@ -5156,6 +5908,13 @@ get-value@^2.0.3, get-value@^2.0.6: resolved "https://registry.yarnpkg.com/get-value/-/get-value-2.0.6.tgz#dc15ca1c672387ca76bd37ac0a395ba2042a2c28" integrity sha1-3BXKHGcjh8p2vTesCjlbogQqLCg= +get-value@^3.0.0, get-value@^3.0.1: + version "3.0.1" + resolved "https://registry.yarnpkg.com/get-value/-/get-value-3.0.1.tgz#5efd2a157f1d6a516d7524e124ac52d0a39ef5a8" + integrity sha512-mKZj9JLQrwMBtj5wxi6MH8Z5eSKaERpAwjg43dPtlGI1ZVEgH/qC7T8/6R2OBSUA+zzHBZgICsVJaEIV2tKTDA== + dependencies: + isobject "^3.0.1" + getopts@2.2.5: version "2.2.5" resolved "https://registry.yarnpkg.com/getopts/-/getopts-2.2.5.tgz#67a0fe471cacb9c687d817cab6450b96dde8313b" @@ -5183,6 +5942,11 @@ glob-parent@^5.0.0, glob-parent@^5.1.2, glob-parent@~5.1.2: dependencies: is-glob "^4.0.1" +glob-to-regexp@^0.4.1: + version "0.4.1" + resolved "https://registry.yarnpkg.com/glob-to-regexp/-/glob-to-regexp-0.4.1.tgz#c75297087c851b9a578bd217dd59a92f59fe546e" + integrity sha512-lkX1HJXwyMcprw/5YUZc2s7DrpAiHB21/V+E1rHUrVNokkvB6bqMzT0VfV6/86ZNabt1k14YOIaT7nDvOX3Iiw== + glob@^5.0.15: version "5.0.15" resolved "https://registry.yarnpkg.com/glob/-/glob-5.0.15.tgz#1bc936b9e02f4a603fcc222ecf7633d30b8b93b1" @@ -5194,7 +5958,7 @@ glob@^5.0.15: once "^1.3.0" path-is-absolute "^1.0.0" -glob@^7.0.5, glob@^7.1.1, glob@^7.1.2, glob@^7.1.3, glob@^7.1.4: +glob@^7.0.5, glob@^7.1.1, glob@^7.1.2, glob@^7.1.3, glob@^7.1.4, glob@^7.2.0: version "7.2.0" resolved "https://registry.yarnpkg.com/glob/-/glob-7.2.0.tgz#d15535af7732e02e948f4c41628bd910293f6023" integrity sha512-lmLf6gtyrPq8tTjSmrO94wBeQbFR3HbLHbuyD69wuyQkImp2hWqMGB47OX65FBkPffO641IP9jWa1z4ivqG26Q== @@ -5245,6 +6009,32 @@ globby@^11.0.3: merge2 "^1.3.0" slash "^3.0.0" +google-auth-library@~0.10.0: + version "0.10.0" + resolved "https://registry.yarnpkg.com/google-auth-library/-/google-auth-library-0.10.0.tgz#6e15babee85fd1dd14d8d128a295b6838d52136e" + integrity sha1-bhW6vuhf0d0U2NEoopW2g41SE24= + dependencies: + gtoken "^1.2.1" + jws "^3.1.4" + lodash.noop "^3.0.1" + request "^2.74.0" + +google-p12-pem@^0.1.0: + version "0.1.2" + resolved "https://registry.yarnpkg.com/google-p12-pem/-/google-p12-pem-0.1.2.tgz#33c46ab021aa734fa0332b3960a9a3ffcb2f3177" + integrity sha1-M8RqsCGqc0+gMys5YKmj/8svMXc= + dependencies: + node-forge "^0.7.1" + +googleapis@^16.0.0: + version "16.1.0" + resolved "https://registry.yarnpkg.com/googleapis/-/googleapis-16.1.0.tgz#0f19f2d70572d918881a0f626e3b1a2fa8629576" + integrity sha1-Dxny1wVy2RiIGg9ibjsaL6hilXY= + dependencies: + async "~2.1.4" + google-auth-library "~0.10.0" + string-template "~1.0.0" + got@^8.3.1: version "8.3.2" resolved "https://registry.yarnpkg.com/got/-/got-8.3.2.tgz#1d23f64390e97f776cac52e5b936e5f514d2e937" @@ -5290,6 +6080,45 @@ graceful-fs@^4.1.10, graceful-fs@^4.1.11, graceful-fs@^4.1.15, graceful-fs@^4.1. resolved "https://registry.yarnpkg.com/graceful-fs/-/graceful-fs-4.2.8.tgz#e412b8d33f5e006593cbd3cee6df9f2cebbe802a" integrity sha512-qkIilPUYcNhJpd33n0GBXTB1MMPp14TxEsEs0pTrsSVucApsYzW5V+Q8Qxhik6KU3evy+qkAAowTByymK0avdg== +gtoken@^1.2.1: + version "1.2.3" + resolved "https://registry.yarnpkg.com/gtoken/-/gtoken-1.2.3.tgz#5509571b8afd4322e124cf66cf68115284c476d8" + integrity sha512-wQAJflfoqSgMWrSBk9Fg86q+sd6s7y6uJhIvvIPz++RElGlMtEqsdAR2oWwZ/WTEtp7P9xFbJRrT976oRgzJ/w== + dependencies: + google-p12-pem "^0.1.0" + jws "^3.0.0" + mime "^1.4.1" + request "^2.72.0" + +gulp-header@^1.7.1: + version "1.8.12" + resolved "https://registry.yarnpkg.com/gulp-header/-/gulp-header-1.8.12.tgz#ad306be0066599127281c4f8786660e705080a84" + integrity sha512-lh9HLdb53sC7XIZOYzTXM4lFuXElv3EVkSDhsd7DoJBj7hm+Ni7D3qYbb+Rr8DuM8nRanBvkVO9d7askreXGnQ== + dependencies: + concat-with-sourcemaps "*" + lodash.template "^4.4.0" + through2 "^2.0.0" + +handlebars-utils@^1.0.2, handlebars-utils@^1.0.4, handlebars-utils@^1.0.6: + version "1.0.6" + resolved "https://registry.yarnpkg.com/handlebars-utils/-/handlebars-utils-1.0.6.tgz#cb9db43362479054782d86ffe10f47abc76357f9" + integrity sha512-d5mmoQXdeEqSKMtQQZ9WkiUcO1E3tPbWxluCK9hVgIDPzQa9WsKo3Lbe/sGflTe7TomHEeZaOgwIkyIr1kfzkw== + dependencies: + kind-of "^6.0.0" + typeof-article "^0.1.1" + +handlebars@^4.7.6, handlebars@^4.7.7: + version "4.7.7" + resolved "https://registry.yarnpkg.com/handlebars/-/handlebars-4.7.7.tgz#9ce33416aad02dbd6c8fafa8240d5d98004945a1" + integrity sha512-aAcXm5OAfE/8IXkcZvCepKU3VzW1/39Fb5ZuqMtgI/hT8X2YgoMvBY5dLhq/cpOvw7Lk1nK/UF71aLG/ZnVYRA== + dependencies: + minimist "^1.2.5" + neo-async "^2.6.0" + source-map "^0.6.1" + wordwrap "^1.0.0" + optionalDependencies: + uglify-js "^3.1.4" + har-schema@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/har-schema/-/har-schema-2.0.0.tgz#a94c2224ebcac04782a0d9035521f24735b7ec92" @@ -5360,6 +6189,14 @@ has-value@^1.0.0: has-values "^1.0.0" isobject "^3.0.0" +has-value@^2.0.2: + version "2.0.2" + resolved "https://registry.yarnpkg.com/has-value/-/has-value-2.0.2.tgz#d0f12e8780ba8e90e66ad1a21c707fdb67c25658" + integrity sha512-ybKOlcRsK2MqrM3Hmz/lQxXHZ6ejzSPzpNabKB45jb5qDgJvKPa3SdapTsTLwEb9WltgWpOmNax7i+DzNOk4TA== + dependencies: + get-value "^3.0.0" + has-values "^2.0.1" + has-values@^0.1.4: version "0.1.4" resolved "https://registry.yarnpkg.com/has-values/-/has-values-0.1.4.tgz#6d61de95d91dfca9b9a02089ad384bff8f62b771" @@ -5373,6 +6210,13 @@ has-values@^1.0.0: is-number "^3.0.0" kind-of "^4.0.0" +has-values@^2.0.1: + version "2.0.1" + resolved "https://registry.yarnpkg.com/has-values/-/has-values-2.0.1.tgz#3876200ff86d8a8546a9264a952c17d5fc17579d" + integrity sha512-+QdH3jOmq9P8GfdjFg0eJudqx1FqU62NQJ4P16rOEHeRdl7ckgwn6uqQjzYE0ZoHVV/e5E2esuJ5Gl5+HUW19w== + dependencies: + kind-of "^6.0.2" + has-yarn@^2.1.0: version "2.1.0" resolved "https://registry.yarnpkg.com/has-yarn/-/has-yarn-2.1.0.tgz#137e11354a7b5bf11aa5cb649cf0c6f3ff2b2e77" @@ -5385,6 +6229,39 @@ 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.9" resolved "https://registry.yarnpkg.com/hosted-git-info/-/hosted-git-info-2.8.9.tgz#dffc0bf9a21c02209090f2aa69429e1414daf3f9" @@ -5414,6 +6291,14 @@ 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.5.0" resolved "https://registry.yarnpkg.com/http-assert/-/http-assert-1.5.0.tgz#c389ccd87ac16ed2dfa6246fd73b926aa00e6b8f" @@ -5677,6 +6562,23 @@ ioredis@^4.27.0: redis-parser "^3.0.0" standard-as-callback "^2.1.0" +ioredis@^4.27.1: + version "4.28.1" + resolved "https://registry.yarnpkg.com/ioredis/-/ioredis-4.28.1.tgz#c2a7038d6a187e020d7045e11d6a677e8b51f785" + integrity sha512-7gcrUJEcPHWy+eEyq6wIZpXtfHt8crhbc5+z0sqrnHUkwBblXinygfamj+/jx83Qo+2LW3q87Nj2VsuH6BF2BA== + dependencies: + cluster-key-slot "^1.1.0" + debug "^4.3.1" + denque "^1.1.0" + lodash.defaults "^4.2.0" + lodash.flatten "^4.4.0" + lodash.isarguments "^3.1.0" + p-map "^2.1.0" + redis-commands "1.7.0" + redis-errors "^1.2.0" + redis-parser "^3.0.0" + standard-as-callback "^2.1.0" + ip-regex@^2.1.0: version "2.1.0" resolved "https://registry.yarnpkg.com/ip-regex/-/ip-regex-2.1.0.tgz#fa78bf5d2e6913c911ce9f819ee5146bb6d844e9" @@ -5701,6 +6603,11 @@ is-arrayish@^0.2.1: resolved "https://registry.yarnpkg.com/is-arrayish/-/is-arrayish-0.2.1.tgz#77c99840527aa8ecb1a8ba697b80645a7a926a9d" integrity sha1-d8mYQFJ6qOyxqLppe4BkWnqSap0= +is-arrayish@^0.3.1: + version "0.3.2" + resolved "https://registry.yarnpkg.com/is-arrayish/-/is-arrayish-0.3.2.tgz#4574a2ae56f7ab206896fb431eaeed066fdf8f03" + integrity sha512-eVRqCvVlZbuw3GrM63ovNSNAeA1K16kaR/LRY/92w0zxQ5/1YzwblUX652i4Xs9RwAGjW9d9y6X88t8OaAJfWQ== + is-bigint@^1.0.1: version "1.0.4" resolved "https://registry.yarnpkg.com/is-bigint/-/is-bigint-1.0.4.tgz#08147a1875bc2b32005d41ccd8291dffc6691df3" @@ -5796,6 +6703,13 @@ is-docker@^2.0.0: resolved "https://registry.yarnpkg.com/is-docker/-/is-docker-2.2.1.tgz#33eeabe23cfe86f14bde4408a02c0cfb853acdaa" integrity sha512-F+i2BKsFrH66iaUFc0woD8sLy8getkwTwtOBjvs56Cx4CgJDeKQeqfz8wAYiSb8JOprWhHH5p77PbmYCvvUuXQ== +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" @@ -5885,6 +6799,13 @@ is-number-object@^1.0.4: dependencies: has-tostringtag "^1.0.0" +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" @@ -5907,6 +6828,13 @@ is-object@^1.0.1: resolved "https://registry.yarnpkg.com/is-object/-/is-object-1.0.2.tgz#a56552e1c665c9e950b4a025461da87e72f86fcf" integrity sha512-2rRIahhZr2UWb45fIOuvZGpFtz0TyOZLf32KxBbSoUCeZR495zCKlWUKKUByk3geS2eAs7ZAABt0Y/Rx0GiQGA== +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.2: version "3.0.3" resolved "https://registry.yarnpkg.com/is-path-inside/-/is-path-inside-3.0.3.tgz#d231362e53a07ff2b0e0ea7fed049161ffd16283" @@ -5952,6 +6880,13 @@ is-retry-allowed@^2.2.0: resolved "https://registry.yarnpkg.com/is-retry-allowed/-/is-retry-allowed-2.2.0.tgz#88f34cbd236e043e71b6932d09b0c65fb7b4d71d" integrity sha512-XVm7LOeLpTW4jV19QSH38vkswxoLud8sQ57YwJVTPWdiaI9I8keEhGFpBlslyVsgdQy4Opg8QOLb8YRgsyZiQg== +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-shared-array-buffer@^1.0.1: version "1.0.1" resolved "https://registry.yarnpkg.com/is-shared-array-buffer/-/is-shared-array-buffer-1.0.1.tgz#97b0c85fbdacb59c9c446fe653b82cf2b5b7cfe6" @@ -6044,6 +6979,11 @@ isexe@^2.0.0: resolved "https://registry.yarnpkg.com/isexe/-/isexe-2.0.0.tgz#e8fbf374dc556ff8947a10dcb0572d633f2cfa10" integrity sha1-6PvzdNxVb/iUehDcsFctYz8s+hA= +isobject@^0.2.0: + version "0.2.0" + resolved "https://registry.yarnpkg.com/isobject/-/isobject-0.2.0.tgz#a3432192f39b910b5f02cc989487836ec70aa85e" + integrity sha1-o0MhkvObkQtfAsyYlIeDbscKqF4= + isobject@^2.0.0: version "2.1.0" resolved "https://registry.yarnpkg.com/isobject/-/isobject-2.1.0.tgz#f065561096a3f1da2ef46272f815c840d87e0c89" @@ -6847,7 +7787,7 @@ jest-worker@^24.6.0, jest-worker@^24.9.0: merge-stream "^2.0.0" supports-color "^6.1.0" -jest-worker@^27.3.1: +jest-worker@^27.0.6, jest-worker@^27.3.1: version "27.3.1" resolved "https://registry.yarnpkg.com/jest-worker/-/jest-worker-27.3.1.tgz#0def7feae5b8042be38479799aeb7b5facac24b2" integrity sha512-ks3WCzsiZaOPJl/oMsDjaf0TRiSv7ctNgs0FqRr2nARsovz6AWWy4oLElwcquGSz692DzgZQrCLScPNs5YlC4g== @@ -6902,11 +7842,21 @@ joycon@^2.2.5: resolved "https://registry.yarnpkg.com/joycon/-/joycon-2.2.5.tgz#8d4cf4cbb2544d7b7583c216fcdfec19f6be1615" integrity sha512-YqvUxoOcVPnCp0VU1/56f+iKSdvIRJYPznH22BdXV3xMk75SFXhWeJkZ8C9XxUWt1b5x2X1SxuFygW1U0FmkEQ== +joycon@^3.0.1: + version "3.0.1" + resolved "https://registry.yarnpkg.com/joycon/-/joycon-3.0.1.tgz#9074c9b08ccf37a6726ff74a18485f85efcaddaf" + integrity sha512-SJcJNBg32dGgxhPtM0wQqxqV0ax9k/9TaUskGDSJkSFSQOEWWvQ3zzWdGQRIUry2j1zA5+ReH13t0Mf3StuVZA== + jpeg-js@0.4.2: version "0.4.2" resolved "https://registry.yarnpkg.com/jpeg-js/-/jpeg-js-0.4.2.tgz#8b345b1ae4abde64c2da2fe67ea216a114ac279d" integrity sha512-+az2gi/hvex7eLTMTlbRLOhH6P6WFdk2ITI8HJsaH2VqYO0I594zXSYEP+tf4FW+8Cy68ScDXoAsQdyQanv3sw== +jquery@^3.6.0: + version "3.6.0" + resolved "https://registry.yarnpkg.com/jquery/-/jquery-3.6.0.tgz#c72a09f15c1bdce142f49dbf1170bdf8adac2470" + integrity sha512-JVzAR/AjBvVt2BmYhxRCSYysDsPcssdmTFnzyLEts9qNwmjmu4JTAMYubEfwVOSwpQ1I1sKKFcxhZCI2buerfw== + js-beautify@^1.6.12: version "1.14.0" resolved "https://registry.yarnpkg.com/js-beautify/-/js-beautify-1.14.0.tgz#2ce790c555d53ce1e3d7363227acf5dc69024c2d" @@ -7020,7 +7970,7 @@ json-buffer@3.0.0: resolved "https://registry.yarnpkg.com/json-buffer/-/json-buffer-3.0.0.tgz#5b1f397afc75d677bde8bcfc0e47e1f9a3d9a898" integrity sha1-Wx85evx11ne96Lz8Dkfh+aPZqJg= -json-parse-better-errors@^1.0.1: +json-parse-better-errors@^1.0.1, json-parse-better-errors@^1.0.2: version "1.0.2" resolved "https://registry.yarnpkg.com/json-parse-better-errors/-/json-parse-better-errors-1.0.2.tgz#bb867cfb3450e69107c131d1c514bab3dc8bcaa9" integrity sha512-mrqyZKfX5EhL7hvqcV6WG1yYjnjeuYDzDhhcAAUrq8Po85NBQBJP+ZDUT75qZQ98IkUoBqdkExkukOU7Ts2wrw== @@ -7045,7 +7995,7 @@ json-stringify-safe@^5.0.1, json-stringify-safe@~5.0.1: resolved "https://registry.yarnpkg.com/json-stringify-safe/-/json-stringify-safe-5.0.1.tgz#1296a2d58fd45f19a0f6ce01d65701e2c735b6eb" integrity sha1-Epai1Y/UXxmg9s4B1lcB4sc1tus= -json5@2.x, json5@^2.1.2: +json5@2.x, json5@^2.1.2, json5@^2.2.0: version "2.2.0" resolved "https://registry.yarnpkg.com/json5/-/json5-2.2.0.tgz#2dfefe720c6ba525d9ebd909950f0515316c89a3" integrity sha512-f+8cldu7X/y7RAJurMEJmdoKXGB/X550w2Nr3tTbezL6RwEE/iMcm+tZnXeoZtKuOq6ft8+CqzEkrIgx1fPoQA== @@ -7059,11 +8009,36 @@ jsonfile@^4.0.0: optionalDependencies: graceful-fs "^4.1.6" +jsonfile@^6.0.1: + version "6.1.0" + resolved "https://registry.yarnpkg.com/jsonfile/-/jsonfile-6.1.0.tgz#bc55b2634793c679ec6403094eb13698a6ec0aae" + integrity sha512-5dgndWOriYSm5cnYaJNhalLNDKOqFwyDB/rr1E9ZsGciGvKPs8R2xYGCacuf3z6K1YKDz182fd+fY3cn3pMqXQ== + dependencies: + universalify "^2.0.0" + optionalDependencies: + graceful-fs "^4.1.6" + jsonschema@1.4.0: version "1.4.0" resolved "https://registry.yarnpkg.com/jsonschema/-/jsonschema-1.4.0.tgz#1afa34c4bc22190d8e42271ec17ac8b3404f87b2" integrity sha512-/YgW6pRMr6M7C+4o8kS+B/2myEpHCrxO4PEWnqJNBFMjn7EWXqlQ4tGwL6xTHeRplwuZmcAncdvfOad1nT2yMw== +jsonwebtoken@^8.2.0, jsonwebtoken@^8.5.1: + version "8.5.1" + resolved "https://registry.yarnpkg.com/jsonwebtoken/-/jsonwebtoken-8.5.1.tgz#00e71e0b8df54c2121a1f26137df2280673bcc0d" + integrity sha512-XjwVfRS6jTMsqYs0EsuJ4LGxXV14zQybNd4L2r0UvbVnSF9Af8x7p5MzbJ90Ioz/9TI41/hTCvznF/loiSzn8w== + dependencies: + jws "^3.2.2" + lodash.includes "^4.3.0" + lodash.isboolean "^3.0.3" + lodash.isinteger "^4.0.4" + lodash.isnumber "^3.0.3" + lodash.isplainobject "^4.0.6" + lodash.isstring "^4.0.1" + lodash.once "^4.0.0" + ms "^2.1.1" + semver "^5.6.0" + jsprim@^1.2.2: version "1.4.0" resolved "https://registry.yarnpkg.com/jsprim/-/jsprim-1.4.0.tgz#a3b87e40298d8c380552d8cc7628a0bb95a22918" @@ -7103,7 +8078,7 @@ jwa@^1.4.1: ecdsa-sig-formatter "1.0.11" safe-buffer "^5.0.1" -jws@3.x.x: +jws@3.x.x, jws@^3.0.0, jws@^3.1.4, jws@^3.2.2: version "3.2.2" resolved "https://registry.yarnpkg.com/jws/-/jws-3.2.2.tgz#001099f3639468c9414000e99995fa52fb478304" integrity sha512-YHlZCB6lMTllWDtSPHz/ZXTsi8S00usEV6v1tjq8tOUZzw7DpSDWVXjXDre6ed1w/pd495ODpHZYSdkRTsa0HA== @@ -7130,7 +8105,7 @@ keyv@3.0.0, keyv@^3.0.0: dependencies: json-buffer "3.0.0" -kind-of@^3.0.2, kind-of@^3.0.3, kind-of@^3.2.0: +kind-of@^3.0.2, kind-of@^3.0.3, kind-of@^3.1.0, kind-of@^3.2.0: version "3.2.2" resolved "https://registry.yarnpkg.com/kind-of/-/kind-of-3.2.2.tgz#31ea21a734bab9bbb0f32466d893aea51e4a3c64" integrity sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ= @@ -7144,16 +8119,23 @@ kind-of@^4.0.0: dependencies: is-buffer "^1.1.5" -kind-of@^5.0.0: +kind-of@^5.0.0, kind-of@^5.0.2: version "5.1.0" resolved "https://registry.yarnpkg.com/kind-of/-/kind-of-5.1.0.tgz#729c91e2d857b7a419a1f9aa65685c4c33f5845d" integrity sha512-NGEErnH6F2vUuXDh+OlbcKW7/wOcfdRHaZ7VWtqCztfHri/++YKmP51OdWeGPuqCOba6kk2OTe5d02VmTB80Pw== -kind-of@^6.0.0, kind-of@^6.0.2: +kind-of@^6.0.0, kind-of@^6.0.2, kind-of@^6.0.3: version "6.0.3" resolved "https://registry.yarnpkg.com/kind-of/-/kind-of-6.0.3.tgz#07c05034a6c349fa06e24fa35aa76db4580ce4dd" integrity sha512-dcS1ul+9tmeD95T+x28/ehLgd9mENa3LsvDTtzm3vyBEO7RPptvAD+t44WVXaUjTBRcrpFeFlC8WCruUR456hw== +klaw-sync@^6.0.0: + version "6.0.0" + resolved "https://registry.yarnpkg.com/klaw-sync/-/klaw-sync-6.0.0.tgz#1fd2cfd56ebb6250181114f0a581167099c2b28c" + integrity sha512-nIeuVSzdCCs6TDPTqI8w1Yre34sSq7AkZ4B3sfOBbI2CgVSB4Du4aLQijFU2+lhAFCwt9+42Hel6lQNIv6AntQ== + dependencies: + graceful-fs "^4.1.11" + kleur@^3.0.3: version "3.0.3" resolved "https://registry.yarnpkg.com/kleur/-/kleur-3.0.3.tgz#a79c9ecc86ee1ce3fa6206d1216c501f147fc07e" @@ -7244,6 +8226,13 @@ koa-mount@^4.0.0: debug "^4.0.1" koa-compose "^4.1.0" +koa-passport@^4.1.4: + version "4.1.4" + resolved "https://registry.yarnpkg.com/koa-passport/-/koa-passport-4.1.4.tgz#5f1665c1c2a37ace79af9f970b770885ca30ccfa" + integrity sha512-dJBCkl4X+zdYxbI2V2OtoGy0PUenpvp2ZLLWObc8UJhsId0iQpTFT8RVcuA0709AL2txGwRHnSPoT1bYNGa6Kg== + dependencies: + passport "^0.4.0" + koa-pino-logger@3.0.0: version "3.0.0" resolved "https://registry.yarnpkg.com/koa-pino-logger/-/koa-pino-logger-3.0.0.tgz#27600b4f3639e8767dfc6b66493109c5457f53ba" @@ -7362,6 +8351,11 @@ koa@^2.13.1: type-is "^1.6.16" vary "^1.1.2" +kuler@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/kuler/-/kuler-2.0.0.tgz#e2c570a3800388fb44407e851531c1d670b061b3" + integrity sha512-Xq9nH7KlWZmXAtodXDDRE7vs6DU1gTU8zYDHDiWLSip45Egwq3plLHzPn27NgvzL2r1LMPC1vdqh98sQxtqj4A== + latest-version@^5.1.0: version "5.1.0" resolved "https://registry.yarnpkg.com/latest-version/-/latest-version-5.1.0.tgz#119dfe908fe38d15dfa43ecd13fa12ec8832face" @@ -7521,6 +8515,13 @@ lie@3.1.1: dependencies: immediate "~3.0.5" +linkify-it@^3.0.1: + version "3.0.3" + resolved "https://registry.yarnpkg.com/linkify-it/-/linkify-it-3.0.3.tgz#a98baf44ce45a550efb4d49c769d07524cc2fa2e" + integrity sha512-ynTsyrFSdE5oZ/O9GEf00kPngmOfVwazR5GKDq6EYfhlpFug3J2zybX56a2PRRpc9P+FuSoGNAwjlbDs9jJBPQ== + dependencies: + uc.micro "^1.0.1" + load-bmfont@^1.3.1, load-bmfont@^1.4.0: version "1.4.1" resolved "https://registry.yarnpkg.com/load-bmfont/-/load-bmfont-1.4.1.tgz#c0f5f4711a1e2ccff725a7b6078087ccfcddd3e9" @@ -7545,6 +8546,20 @@ load-json-file@^4.0.0: pify "^3.0.0" strip-bom "^3.0.0" +loader-runner@^4.2.0: + version "4.2.0" + resolved "https://registry.yarnpkg.com/loader-runner/-/loader-runner-4.2.0.tgz#d7022380d66d14c5fb1d496b89864ebcfd478384" + integrity sha512-92+huvxMvYlMzMt0iIOukcwYBFpkYJdpl2xsZ7LrlayO7E8SOv+JJUEK17B/dJIHAOLMfh2dZZ/Y18WgmGtYNw== + +loader-utils@^2.0.0: + version "2.0.2" + resolved "https://registry.yarnpkg.com/loader-utils/-/loader-utils-2.0.2.tgz#d6e3b4fb81870721ae4e0868ab11dd638368c129" + integrity sha512-TM57VeHptv569d/GKh6TAYdzKblwDNiumOdkFnejjD0XwTH87K90w3O7AiJRqdQoXygvi1VQTJTLGhJl7WqA7A== + dependencies: + big.js "^5.2.2" + emojis-list "^3.0.0" + json5 "^2.1.2" + locate-path@^3.0.0: version "3.0.0" resolved "https://registry.yarnpkg.com/locate-path/-/locate-path-3.0.0.tgz#dbec3b3ab759758071b58fe59fc41871af21400e" @@ -7560,6 +8575,11 @@ 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" @@ -7575,16 +8595,46 @@ lodash.flatten@^4.4.0: resolved "https://registry.yarnpkg.com/lodash.flatten/-/lodash.flatten-4.4.0.tgz#f31c22225a9632d2bbf8e4addbef240aa765a61f" integrity sha1-8xwiIlqWMtK7+OSt2+8kCqdlph8= +lodash.includes@^4.3.0: + version "4.3.0" + resolved "https://registry.yarnpkg.com/lodash.includes/-/lodash.includes-4.3.0.tgz#60bb98a87cb923c68ca1e51325483314849f553f" + integrity sha1-YLuYqHy5I8aMoeUTJUgzFISfVT8= + lodash.isarguments@^3.1.0: version "3.1.0" resolved "https://registry.yarnpkg.com/lodash.isarguments/-/lodash.isarguments-3.1.0.tgz#2f573d85c6a24289ff00663b491c1d338ff3458a" integrity sha1-L1c9hcaiQon/AGY7SRwdM4/zRYo= +lodash.isboolean@^3.0.3: + version "3.0.3" + resolved "https://registry.yarnpkg.com/lodash.isboolean/-/lodash.isboolean-3.0.3.tgz#6c2e171db2a257cd96802fd43b01b20d5f5870f6" + integrity sha1-bC4XHbKiV82WgC/UOwGyDV9YcPY= + lodash.isequal@^4.5.0: version "4.5.0" resolved "https://registry.yarnpkg.com/lodash.isequal/-/lodash.isequal-4.5.0.tgz#415c4478f2bcc30120c22ce10ed3226f7d3e18e0" integrity sha1-QVxEePK8wwEgwizhDtMib30+GOA= +lodash.isinteger@^4.0.4: + version "4.0.4" + resolved "https://registry.yarnpkg.com/lodash.isinteger/-/lodash.isinteger-4.0.4.tgz#619c0af3d03f8b04c31f5882840b77b11cd68343" + integrity sha1-YZwK89A/iwTDH1iChAt3sRzWg0M= + +lodash.isnumber@^3.0.3: + version "3.0.3" + resolved "https://registry.yarnpkg.com/lodash.isnumber/-/lodash.isnumber-3.0.3.tgz#3ce76810c5928d03352301ac287317f11c0b1ffc" + integrity sha1-POdoEMWSjQM1IwGsKHMX8RwLH/w= + +lodash.isplainobject@^4.0.6: + version "4.0.6" + resolved "https://registry.yarnpkg.com/lodash.isplainobject/-/lodash.isplainobject-4.0.6.tgz#7c526a52d89b45c45cc690b88163be0497f550cb" + integrity sha1-fFJqUtibRcRcxpC4gWO+BJf1UMs= + +lodash.isstring@^4.0.1: + version "4.0.1" + resolved "https://registry.yarnpkg.com/lodash.isstring/-/lodash.isstring-4.0.1.tgz#d527dfb5456eca7cc9bb95d5daeaf88ba54a5451" + integrity sha1-1SfftUVuynzJu5XV2ur4i6VKVFE= + lodash.keys@^4.2.0: version "4.2.0" resolved "https://registry.yarnpkg.com/lodash.keys/-/lodash.keys-4.2.0.tgz#a08602ac12e4fb83f91fc1fb7a360a4d9ba35205" @@ -7600,11 +8650,21 @@ lodash.merge@^4.6.2: resolved "https://registry.yarnpkg.com/lodash.merge/-/lodash.merge-4.6.2.tgz#558aa53b43b661e1925a0afdfa36a9a1085fe57a" integrity sha512-0KpjqXRVvrYyCsX1swR/XTK0va6VQkQM6MNo7PqW77ByjAhoARA8EfrP1N4+KlKj8YS0ZUCtRT/YUuhyYDujIQ== +lodash.noop@^3.0.1: + version "3.0.1" + resolved "https://registry.yarnpkg.com/lodash.noop/-/lodash.noop-3.0.1.tgz#38188f4d650a3a474258439b96ec45b32617133c" + integrity sha1-OBiPTWUKOkdCWEObluxFsyYXEzw= + lodash.omit@^4.5.0: version "4.5.0" resolved "https://registry.yarnpkg.com/lodash.omit/-/lodash.omit-4.5.0.tgz#6eb19ae5a1ee1dd9df0b969e66ce0b7fa30b5e60" integrity sha1-brGa5aHuHdnfC5aeZs4Lf6MLXmA= +lodash.once@^4.0.0: + version "4.1.1" + resolved "https://registry.yarnpkg.com/lodash.once/-/lodash.once-4.1.1.tgz#0dd3971213c7c56df880977d504c88fb471a97ac" + integrity sha1-DdOXEhPHxW34gJd9UEyI+0cal6w= + lodash.pick@^4.0.0: version "4.4.0" resolved "https://registry.yarnpkg.com/lodash.pick/-/lodash.pick-4.4.0.tgz#52f05610fff9ded422611441ed1fc123a03001b3" @@ -7615,6 +8675,21 @@ lodash.sortby@^4.7.0: resolved "https://registry.yarnpkg.com/lodash.sortby/-/lodash.sortby-4.7.0.tgz#edd14c824e2cc9c1e0b0a1b42bb5210516a42438" integrity sha1-7dFMgk4sycHgsKG0K7UhBRakJDg= +lodash.template@^4.4.0: + version "4.5.0" + resolved "https://registry.yarnpkg.com/lodash.template/-/lodash.template-4.5.0.tgz#f976195cf3f347d0d5f52483569fe8031ccce8ab" + integrity sha512-84vYFxIkmidUiFxidA/KjjH9pAycqW+h980j7Fuz5qxRtO9pgB7MDFTdys1N7A5mcucRiDyEq4fusljItR1T/A== + dependencies: + lodash._reinterpolate "^3.0.0" + lodash.templatesettings "^4.0.0" + +lodash.templatesettings@^4.0.0: + version "4.2.0" + resolved "https://registry.yarnpkg.com/lodash.templatesettings/-/lodash.templatesettings-4.2.0.tgz#e481310f049d3cf6d47e912ad09313b154f0fb33" + integrity sha512-stgLz+i3Aa9mZgnjr/O+v9ruKZsPsndy7qPZOchbqk2cnTU1ZaldKK+v7m54WoKIyxiuMZTKT2H81F8BeAc3ZQ== + dependencies: + lodash._reinterpolate "^3.0.0" + lodash.without@^4.4.0: version "4.4.0" resolved "https://registry.yarnpkg.com/lodash.without/-/lodash.without-4.4.0.tgz#3cd4574a00b67bae373a94b748772640507b7aac" @@ -7625,11 +8700,22 @@ 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.21, lodash@^4.17.11, lodash@^4.17.14, lodash@^4.17.19, lodash@^4.17.21, lodash@^4.17.3, lodash@^4.7.0: +lodash@4.17.21, lodash@^4.14.0, lodash@^4.17.11, lodash@^4.17.14, lodash@^4.17.19, lodash@^4.17.20, lodash@^4.17.21, lodash@^4.17.3, lodash@^4.7.0: version "4.17.21" resolved "https://registry.yarnpkg.com/lodash/-/lodash-4.17.21.tgz#679591c564c3bffaae8454cf0b3df370c3d6911c" integrity sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg== +logform@^2.2.0: + version "2.3.0" + resolved "https://registry.yarnpkg.com/logform/-/logform-2.3.0.tgz#a3997a05985de2ebd325ae0d166dffc9c6fe6b57" + integrity sha512-graeoWUH2knKbGthMtuG1EfaSPMZFZBIrhuJHhkS5ZseFBrc7DupCzihOQAzsK/qIKPQaPJ/lFQFctILUY5ARQ== + dependencies: + colors "^1.2.1" + fecha "^4.2.0" + ms "^2.1.1" + safe-stable-stringify "^1.1.0" + triple-beam "^1.3.0" + long@^4.0.0: version "4.0.0" resolved "https://registry.yarnpkg.com/long/-/long-4.0.0.tgz#9a7b71cfb7d361a194ea555241c92f7468d5bf28" @@ -7735,6 +8821,17 @@ map-visit@^1.0.0: dependencies: object-visit "^1.0.0" +markdown-it@^12.2.0: + version "12.2.0" + resolved "https://registry.yarnpkg.com/markdown-it/-/markdown-it-12.2.0.tgz#091f720fd5db206f80de7a8d1f1a7035fd0d38db" + integrity sha512-Wjws+uCrVQRqOoJvze4HCqkKl1AsSh95iFAeQDwnyfxM09divCBSXlDR1uTvyUP3Grzpn4Ru8GeCxYPM8vkCQg== + dependencies: + argparse "^2.0.1" + entities "~2.1.0" + linkify-it "^3.0.1" + mdurl "^1.0.1" + uc.micro "^1.0.5" + md5@^2.3.0: version "2.3.0" resolved "https://registry.yarnpkg.com/md5/-/md5-2.3.0.tgz#c3da9a6aae3a30b46b7b0c349b87b110dc3bda4f" @@ -7744,6 +8841,11 @@ md5@^2.3.0: crypt "0.0.2" is-buffer "~1.1.6" +mdurl@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/mdurl/-/mdurl-1.0.1.tgz#fe85b2ec75a59037f2adfec100fd6c601761152e" + integrity sha1-/oWy7HWlkDfyrf7BAP1sYBdhFS4= + media-typer@0.3.0: version "0.3.0" resolved "https://registry.yarnpkg.com/media-typer/-/media-typer-0.3.0.tgz#8710d7af0aa626f8fffa1ce00168545263255748" @@ -7795,7 +8897,7 @@ methods@^1.0.1, methods@^1.1.1, methods@^1.1.2: resolved "https://registry.yarnpkg.com/methods/-/methods-1.1.2.tgz#5529a4d67654134edcc5266656835b0f851afcee" integrity sha1-VSmk1nZUE07cxSZmVoNbD4Ua/O4= -micromatch@^3.1.10, micromatch@^3.1.4: +micromatch@^3.1.10, micromatch@^3.1.4, micromatch@^3.1.5: version "3.1.10" resolved "https://registry.yarnpkg.com/micromatch/-/micromatch-3.1.10.tgz#70859bc95c9840952f359a068a3fc49f9ecfac23" integrity sha512-MWikgl9n9M3w+bpsY3He8L+w9eF9338xRl8IAO5viDizwSzziFEyUzo2xrrloB64ADbTf8uA8vRqqttDTOmccg== @@ -7847,7 +8949,7 @@ mime-types@^2.1.12: dependencies: mime-db "~1.27.0" -mime-types@^2.1.18, mime-types@^2.1.24, mime-types@~2.1.19, mime-types@~2.1.24: +mime-types@^2.1.18, mime-types@^2.1.24, mime-types@^2.1.27, mime-types@~2.1.19, mime-types@~2.1.24: version "2.1.34" resolved "https://registry.yarnpkg.com/mime-types/-/mime-types-2.1.34.tgz#5a712f9ec1503511a945803640fafe09d3793c24" integrity sha512-6cP692WwGIs9XXdOO4++N+7qjqv0rqxxVvJ3VHPh/Sc9mVZcQP+ZGhkKiTvWMQRr2tbHkJP/Yn7Y0npb3ZBs4A== @@ -7896,6 +8998,11 @@ mixin-deep@^1.2.0: for-in "^1.0.2" is-extendable "^1.0.1" +mkdirp-classic@^0.5.2: + version "0.5.3" + resolved "https://registry.yarnpkg.com/mkdirp-classic/-/mkdirp-classic-0.5.3.tgz#fa10c9115cc6d8865be221ba47ee9bed78601113" + integrity sha512-gKLcREMhtuZRwRAfqP3RFW+TK4JqApVBtOIftVgjuABpAtpxhPGaDcfvbhNvD0B8iD1oUr/txX35NjcaY6Ns/A== + mkdirp@^0.5.0, mkdirp@^0.5.1: version "0.5.5" resolved "https://registry.yarnpkg.com/mkdirp/-/mkdirp-0.5.5.tgz#d91cefd62d1436ca0f41620e251288d420099def" @@ -7915,7 +9022,7 @@ moment-timezone@^0.5.31: dependencies: moment ">= 2.9.0" -"moment@>= 2.9.0": +"moment@>= 2.9.0", 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== @@ -8015,6 +9122,11 @@ nan@^2.12.1: resolved "https://registry.yarnpkg.com/nan/-/nan-2.15.0.tgz#3f34a473ff18e15c1b5626b62903b5ad6e665fee" integrity sha512-8ZtvEnA2c5aYCZYd1cvgdnU6cqwixRoYg70xPLWUws5ORTa/lnw+u4amixRS/Ac5U5mQVgp9pnlSUnbNWFaWZQ== +nanoid@^2.1.0: + version "2.1.11" + resolved "https://registry.yarnpkg.com/nanoid/-/nanoid-2.1.11.tgz#ec24b8a758d591561531b4176a01e3ab4f0f0280" + integrity sha512-s/snB+WGm6uwi0WjsZdaVcuf3KJXlfGl2LcxgwkEwJF0D/BWzVWAZW/XY4bFaiR7s0Jk3FPvlnepg1H1b1UwlA== + nanomatch@^1.2.9: version "1.2.13" resolved "https://registry.yarnpkg.com/nanomatch/-/nanomatch-1.2.13.tgz#b87a8aa4fc0de8fe6be88895b38983ff265bd119" @@ -8062,6 +9174,11 @@ 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, neo-async@^2.6.2: + version "2.6.2" + resolved "https://registry.yarnpkg.com/neo-async/-/neo-async-2.6.2.tgz#b4aafb93e3aeb2d8174ca53cf163ab7d7308305f" + integrity sha512-Yd3UES5mWCSqR+qNT93S3UoYUkqAZ9lLg8a7g9rimsWmYGK8cVToA4/sF3RrshdyV3sAGMXVUmpMYOw+dLpOuw== + nice-try@^1.0.4: version "1.0.5" resolved "https://registry.yarnpkg.com/nice-try/-/nice-try-1.0.5.tgz#a3378a7696ce7d223e88fc9b764bd7ef1089e366" @@ -8084,6 +9201,11 @@ node-fetch@^2.6.1: dependencies: whatwg-url "^5.0.0" +node-forge@^0.7.1: + version "0.7.6" + resolved "https://registry.yarnpkg.com/node-forge/-/node-forge-0.7.6.tgz#fdf3b418aee1f94f0ef642cd63486c77ca9724ac" + integrity sha512-sol30LUpz1jQFBjOKwbjxijiE3b6pjd74YwfD0fJOKPjF+fONKb2Yg8rYgS6+bK6VDl+/wfr4IYpC7jDzLUIfw== + node-gyp-build@~4.1.0: version "4.1.1" resolved "https://registry.yarnpkg.com/node-gyp-build/-/node-gyp-build-4.1.1.tgz#d7270b5d86717068d114cc57fff352f96d745feb" @@ -8104,7 +9226,7 @@ node-releases@^2.0.1: resolved "https://registry.yarnpkg.com/node-releases/-/node-releases-2.0.1.tgz#3d1d395f204f1f2f29a54358b9fb678765ad2fc5" integrity sha512-CqyzN6z7Q6aMeF/ktcMVTzhAHCEpf8SOarwpzpf8pNBY2k5/oM34UHldUwp8VKI7uxct2HxSRdJjBaZeESzcxA== -nodemon@^2.0.4: +nodemon@^2.0.15, nodemon@^2.0.4: version "2.0.15" resolved "https://registry.yarnpkg.com/nodemon/-/nodemon-2.0.15.tgz#504516ce3b43d9dc9a955ccd9ec57550a31a8d4e" integrity sha512-gdHMNx47Gw7b3kWxJV64NI+Q5nfl0y5DgDbiVtShiwa7Z0IZ07Ll4RLFo6AjrhzMtoEZn5PDE3/c2AbVsiCkpA== @@ -8202,6 +9324,11 @@ oauth-sign@~0.9.0: resolved "https://registry.yarnpkg.com/oauth-sign/-/oauth-sign-0.9.0.tgz#47a7b016baa68b5fa0ecf3dee08a85c679ac6455" integrity sha512-fexhUFFPTGV8ybAtSIGbV6gOkSv8UtRbDBnAyLQw4QPKkgNlsH2ByPGtMUqdWkos6YCRmAqViwgZrJc/mRDzZQ== +oauth@0.9.x, oauth@^0.9.15: + version "0.9.15" + resolved "https://registry.yarnpkg.com/oauth/-/oauth-0.9.15.tgz#bd1fefaf686c96b75475aed5196412ff60cfb9c1" + integrity sha1-vR/vr2hslrdUda7VGWQS/2DPucE= + object-assign@^2.0.0: version "2.1.1" resolved "https://registry.yarnpkg.com/object-assign/-/object-assign-2.1.1.tgz#43c36e5d569ff8e4816c4efa8be02d26967c18aa" @@ -8283,6 +9410,13 @@ once@^1.3.0, once@^1.3.1, once@^1.4.0: dependencies: wrappy "1" +one-time@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/one-time/-/one-time-1.0.0.tgz#e06bc174aed214ed58edede573b433bbf827cb45" + integrity sha512-5DXOiRKwuSEcQ/l0kGCF6Q3jcADFv5tSmRaJck/OqkVFcOzutB134KRSfF0xDrL39MNnqxbHBbUUcjZIhTgb2g== + dependencies: + fn.name "1.x.x" + onetime@^5.1.0, onetime@^5.1.2: version "5.1.2" resolved "https://registry.yarnpkg.com/onetime/-/onetime-5.1.2.tgz#d0e96ebb56b07476df1dd9c4806e5237985ca45e" @@ -8499,6 +9633,84 @@ pascalcase@^0.1.1: resolved "https://registry.yarnpkg.com/pascalcase/-/pascalcase-0.1.1.tgz#b363e55e8006ca6fe21784d2db22bd15d7917f14" integrity sha1-s2PlXoAGym/iF4TS2yK9FdeRfxQ= +passport-google-auth@^1.0.2: + version "1.0.2" + resolved "https://registry.yarnpkg.com/passport-google-auth/-/passport-google-auth-1.0.2.tgz#8b300b5aa442ef433de1d832ed3112877d0b2938" + integrity sha1-izALWqRC70M94dgy7TESh30LKTg= + dependencies: + googleapis "^16.0.0" + passport-strategy "1.x" + +passport-google-oauth1@1.x.x: + version "1.0.0" + resolved "https://registry.yarnpkg.com/passport-google-oauth1/-/passport-google-oauth1-1.0.0.tgz#af74a803df51ec646f66a44d82282be6f108e0cc" + integrity sha1-r3SoA99R7GRvZqRNgigr5vEI4Mw= + dependencies: + passport-oauth1 "1.x.x" + +passport-google-oauth20@2.x.x: + version "2.0.0" + resolved "https://registry.yarnpkg.com/passport-google-oauth20/-/passport-google-oauth20-2.0.0.tgz#0d241b2d21ebd3dc7f2b60669ec4d587e3a674ef" + integrity sha512-KSk6IJ15RoxuGq7D1UKK/8qKhNfzbLeLrG3gkLZ7p4A6DBCcv7xpyQwuXtWdpyR0+E0mwkpjY1VfPOhxQrKzdQ== + dependencies: + passport-oauth2 "1.x.x" + +passport-google-oauth@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/passport-google-oauth/-/passport-google-oauth-2.0.0.tgz#f6eb4bc96dd6c16ec0ecfdf4e05ec48ca54d4dae" + integrity sha512-JKxZpBx6wBQXX1/a1s7VmdBgwOugohH+IxCy84aPTZNq/iIPX6u7Mqov1zY7MKRz3niFPol0KJz8zPLBoHKtYA== + dependencies: + passport-google-oauth1 "1.x.x" + passport-google-oauth20 "2.x.x" + +passport-jwt@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/passport-jwt/-/passport-jwt-4.0.0.tgz#7f0be7ba942e28b9f5d22c2ebbb8ce96ef7cf065" + integrity sha512-BwC0n2GP/1hMVjR4QpnvqA61TxenUMlmfNjYNgK0ZAs0HK4SOQkHcSv4L328blNTLtHq7DbmvyNJiH+bn6C5Mg== + dependencies: + jsonwebtoken "^8.2.0" + passport-strategy "^1.0.0" + +passport-local@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/passport-local/-/passport-local-1.0.0.tgz#1fe63268c92e75606626437e3b906662c15ba6ee" + integrity sha1-H+YyaMkudWBmJkN+O5BmYsFbpu4= + dependencies: + passport-strategy "1.x.x" + +passport-oauth1@1.x.x: + version "1.2.0" + resolved "https://registry.yarnpkg.com/passport-oauth1/-/passport-oauth1-1.2.0.tgz#5229d431781bf5b265bec86ce9a9cce58a756cf9" + integrity sha512-Sv2YWodC6jN12M/OXwmR4BIXeeIHjjbwYTQw4kS6tHK4zYzSEpxBgSJJnknBjICA5cj0ju3FSnG1XmHgIhYnLg== + dependencies: + oauth "0.9.x" + passport-strategy "1.x.x" + utils-merge "1.x.x" + +passport-oauth2@1.x.x: + version "1.6.1" + resolved "https://registry.yarnpkg.com/passport-oauth2/-/passport-oauth2-1.6.1.tgz#c5aee8f849ce8bd436c7f81d904a3cd1666f181b" + integrity sha512-ZbV43Hq9d/SBSYQ22GOiglFsjsD1YY/qdiptA+8ej+9C1dL1TVB+mBE5kDH/D4AJo50+2i8f4bx0vg4/yDDZCQ== + dependencies: + base64url "3.x.x" + oauth "0.9.x" + passport-strategy "1.x.x" + uid2 "0.0.x" + utils-merge "1.x.x" + +passport-strategy@1.x, passport-strategy@1.x.x, passport-strategy@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/passport-strategy/-/passport-strategy-1.0.0.tgz#b5539aa8fc225a3d1ad179476ddf236b440f52e4" + integrity sha1-tVOaqPwiWj0a0XlHbd8ja0QPUuQ= + +passport@^0.4.0: + version "0.4.1" + resolved "https://registry.yarnpkg.com/passport/-/passport-0.4.1.tgz#941446a21cb92fc688d97a0861c38ce9f738f270" + integrity sha512-IxXgZZs8d7uFSt3eqNjM9NQ3g3uQCW5avD8mRNoXV99Yig50vjuaez6dQK2qC0kVWPRTujxY0dWgGfT09adjYg== + dependencies: + passport-strategy "1.x.x" + pause "0.0.1" + path-exists@^3.0.0: version "3.0.0" resolved "https://registry.yarnpkg.com/path-exists/-/path-exists-3.0.0.tgz#ce0ebeaa5f78cb18925ea7d810d7b59b010fd515" @@ -8536,7 +9748,7 @@ path-to-regexp@^1.1.1: dependencies: isarray "0.0.1" -path-to-regexp@^6.1.0: +path-to-regexp@^6.1.0, path-to-regexp@^6.2.0: version "6.2.0" resolved "https://registry.yarnpkg.com/path-to-regexp/-/path-to-regexp-6.2.0.tgz#f7b3803336104c346889adece614669230645f38" integrity sha512-f66KywYG6+43afgE/8j/GoiNyygk/bnoCbps++3ErRKsIYkGGupyv07R2Ok5m9i67Iqc+T2g1eAUGUPzWhYTyg== @@ -8553,6 +9765,11 @@ path-type@^4.0.0: resolved "https://registry.yarnpkg.com/path-type/-/path-type-4.0.0.tgz#84ed01c0a7ba380afe09d90a8c180dcd9d03043b" integrity sha512-gDKb8aZMDeD/tZWs9P6+q0J9Mwkdl6xMV8TjnGP3qJVJ06bdMgkbBlLU8IdfOsIsFz2BW1rNVT3XuNEl8zPAvw== +pause@0.0.1: + version "0.0.1" + resolved "https://registry.yarnpkg.com/pause/-/pause-0.0.1.tgz#1d408b3fdb76923b9543d96fb4c9dfd535d9cb5d" + integrity sha1-HUCLP9t2kjuVQ9lvtMnf1TXZy10= + pend@~1.2.0: version "1.2.0" resolved "https://registry.yarnpkg.com/pend/-/pend-1.2.0.tgz#7a57eb550a6783f9115331fcf4663d5c8e007a50" @@ -9056,6 +10273,11 @@ pretty@^2.0.0: extend-shallow "^2.0.1" js-beautify "^1.6.12" +prismjs@^1.25.0: + version "1.25.0" + resolved "https://registry.yarnpkg.com/prismjs/-/prismjs-1.25.0.tgz#6f822df1bdad965734b310b315a23315cf999756" + integrity sha512-WCjJHl1KEWbnkQom1+SzftbtXMKQoezOCYs5rECqMN+jP+apI7ftoflyqigqzopSO3hMhTEb0mFClA8lkolgEg== + private@^0.1.6, private@~0.1.5: version "0.1.8" resolved "https://registry.yarnpkg.com/private/-/private-0.1.8.tgz#2381edb3689f7a53d653190060fcf822d2f368ff" @@ -9172,6 +10394,11 @@ querystring@0.2.0: resolved "https://registry.yarnpkg.com/querystring/-/querystring-0.2.0.tgz#b209849203bb25df820da756e747005878521620" integrity sha1-sgmEkgO7Jd+CDadW50cAWHhSFiA= +querystringify@^2.1.1: + version "2.2.0" + resolved "https://registry.yarnpkg.com/querystringify/-/querystringify-2.2.0.tgz#3345941b4153cb9d082d8eee4cda2016a9aef7f6" + integrity sha512-FIqgj2EUvTa7R50u0rGsyTftzjYmv/a3hO345bZNrqabNqjtgiDMgmo4mkUjd+nzU5oF3dClKqFIPUKybUyqoQ== + queue-microtask@^1.2.2: version "1.2.3" resolved "https://registry.yarnpkg.com/queue-microtask/-/queue-microtask-1.2.3.tgz#4929228bbc724dfac43e0efb058caf7b6cfb6243" @@ -9182,6 +10409,13 @@ quick-format-unescaped@^4.0.3: resolved "https://registry.yarnpkg.com/quick-format-unescaped/-/quick-format-unescaped-4.0.4.tgz#93ef6dd8d3453cbc7970dd614fad4c5954d6b5a7" integrity sha512-tYC1Q1hgyRuHgloV/YXs2w15unPVh8qfu/qCTfhTYamaw7fyhumKa2yGpdSo87vY32rIclj+4fWYQXUMs9EHvg== +randombytes@^2.1.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/randombytes/-/randombytes-2.1.0.tgz#df6f84372f0270dc65cdf6291349ab7a473d4f2a" + integrity sha512-vYl3iOX+4CKUWuxGi9Ukhie6fsqXqS9FE2Zaic4tNFD2N2QQaXOMFbuKK4QmDHC0JO6B1Zp41J0LpT0oR68amQ== + dependencies: + safe-buffer "^5.1.0" + raw-body@^2.2.0: version "2.4.2" resolved "https://registry.yarnpkg.com/raw-body/-/raw-body-2.4.2.tgz#baf3e9c21eebced59dd6533ac872b71f7b61cb32" @@ -9249,7 +10483,7 @@ readable-stream@1.1.14, readable-stream@^1.0.27-1: isarray "0.0.1" string_decoder "~0.10.x" -"readable-stream@2 || 3", readable-stream@^3.0.0, readable-stream@^3.0.1, readable-stream@^3.4.0, readable-stream@^3.6.0: +"readable-stream@2 || 3", readable-stream@^3.0.0, readable-stream@^3.0.1, readable-stream@^3.1.1, readable-stream@^3.4.0, readable-stream@^3.6.0: version "3.6.0" resolved "https://registry.yarnpkg.com/readable-stream/-/readable-stream-3.6.0.tgz#337bbda3adc0706bd3e024426a286d4b4b2c9198" integrity sha512-BViHy7LKeTz4oNnkcLJ+lVSL6vpiFeX6/d3oSH8zCW7UxP2onchk+vTGB143xuFjHS3deTgkKoXXymXqymiIdA== @@ -9268,7 +10502,7 @@ readable-stream@1.1.14, readable-stream@^1.0.27-1: isarray "0.0.1" string_decoder "~0.10.x" -readable-stream@^2.0.0, readable-stream@^2.3.0, readable-stream@^2.3.5, readable-stream@~2.3.6: +readable-stream@^2.0.0, readable-stream@^2.3.0, readable-stream@^2.3.5, readable-stream@^2.3.7, 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== @@ -9327,6 +10561,13 @@ rechoir@0.7.0: dependencies: resolve "^1.9.0" +rechoir@^0.7.0: + version "0.7.1" + resolved "https://registry.yarnpkg.com/rechoir/-/rechoir-0.7.1.tgz#9478a96a1ca135b5e88fc027f03ee92d6c645686" + integrity sha512-/njmZ8s1wVeR6pjTZ+0nCnv8SpZNRMT2D1RLOJQESlYFDBvwpTA4KWJpZ+sBJ4+vhjILRcK7JIFdGCdxEAAitg== + dependencies: + resolve "^1.9.0" + redis-commands@1.7.0: version "1.7.0" resolved "https://registry.yarnpkg.com/redis-commands/-/redis-commands-1.7.0.tgz#15a6fea2d58281e27b1cd1acfb4b293e278c3a89" @@ -9383,6 +10624,16 @@ regex-not@^1.0.0, regex-not@^1.0.2: extend-shallow "^3.0.2" safe-regex "^1.1.0" +regexparam@2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/regexparam/-/regexparam-2.0.0.tgz#059476767d5f5f87f735fc7922d133fd1a118c8c" + integrity sha512-gJKwd2MVPWHAIFLsaYDZfyKzHNS4o7E/v8YmNf44vmeV2e4YfVoDToTOKTvE7ab68cRJ++kLuEXJBaEeJVt5ow== + +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" @@ -9426,6 +10677,21 @@ regjsparser@^0.7.0: dependencies: jsesc "~0.5.0" +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" @@ -9462,7 +10728,7 @@ request-promise-native@^1.0.5: stealthy-require "^1.1.1" tough-cookie "^2.3.3" -request@^2.87.0: +request@^2.72.0, request@^2.74.0, request@^2.87.0, request@^2.88.0: version "2.88.2" resolved "https://registry.yarnpkg.com/request/-/request-2.88.2.tgz#d73c918731cb5a87da047e207234146f664d12b3" integrity sha512-MsvtOrfG9ZcrOwAW+Qi+F6HbD0CWXEh9ou77uOb7FM2WPhwT7smM833PzanhJLsgXjN89Ir6V2PczXNnMpwKhw== @@ -9506,6 +10772,11 @@ require_optional@^1.0.1: resolve-from "^2.0.0" semver "^5.1.0" +requires-port@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/requires-port/-/requires-port-1.0.0.tgz#925d2601d39ac485e091cf0da5c6e694dc3dcaff" + integrity sha1-kl0mAdOaxIXgkc8NpcbmlNw9yv8= + resolve-cwd@^3.0.0: version "3.0.0" resolved "https://registry.yarnpkg.com/resolve-cwd/-/resolve-cwd-3.0.0.tgz#0f0075f1bb2544766cf73ba6a6e2adfebcb13f2d" @@ -9622,7 +10893,7 @@ rxjs@^6.6.0: dependencies: tslib "^1.9.0" -safe-buffer@*, safe-buffer@^5.1.1, safe-buffer@^5.1.2, safe-buffer@~5.2.0: +safe-buffer@*, safe-buffer@^5.1.0, safe-buffer@^5.1.1, safe-buffer@^5.1.2, safe-buffer@~5.2.0: version "5.2.1" resolved "https://registry.yarnpkg.com/safe-buffer/-/safe-buffer-5.2.1.tgz#1eaf9fa9bdb1fdd4ec75f58f9cdb4e6b7827eec6" integrity sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ== @@ -9644,6 +10915,11 @@ safe-regex@^1.1.0: dependencies: ret "~0.1.10" +safe-stable-stringify@^1.1.0: + version "1.1.1" + resolved "https://registry.yarnpkg.com/safe-stable-stringify/-/safe-stable-stringify-1.1.1.tgz#c8a220ab525cd94e60ebf47ddc404d610dc5d84a" + integrity sha512-ERq4hUjKDbJfE4+XtZLFPCDi8Vb1JqaxAPTxWFLBx8XcAlf9Bda/ZJdVezs/NAfsMQScyIlUMx+Yeu7P7rx5jw== + "safer-buffer@>= 2.1.2 < 3", "safer-buffer@>= 2.1.2 < 3.0.0", safer-buffer@^2.0.2, safer-buffer@^2.1.0, safer-buffer@~2.1.0: version "2.1.2" resolved "https://registry.yarnpkg.com/safer-buffer/-/safer-buffer-2.1.2.tgz#44fa161b0187b9549dd84bb91802f9bd8385cd6a" @@ -9664,6 +10940,11 @@ sane@^4.0.3: minimist "^1.1.1" walker "~1.0.5" +sanitize-s3-objectkey@^0.0.1: + version "0.0.1" + resolved "https://registry.yarnpkg.com/sanitize-s3-objectkey/-/sanitize-s3-objectkey-0.0.1.tgz#efa9887cd45275b40234fb4bb12fc5754fe64e7e" + integrity sha512-ZTk7aqLxy4sD40GWcYWoLfbe05XLmkKvh6vGKe13ADlei24xlezcvjgKy1qRArlaIbIMYaqK7PCalvZtulZlaQ== + saslprep@^1.0.0: version "1.0.3" resolved "https://registry.yarnpkg.com/saslprep/-/saslprep-1.0.3.tgz#4c02f946b56cf54297e347ba1093e7acac4cf226" @@ -9676,7 +10957,7 @@ sax@1.2.1: resolved "https://registry.yarnpkg.com/sax/-/sax-1.2.1.tgz#7b8e656190b228e81a66aea748480d828cd2d37a" integrity sha1-e45lYZCyKOgaZq6nSEgNgozS03o= -sax@>=0.6.0, sax@^1.2.4: +sax@>=0.1.1, sax@>=0.6.0, sax@^1.2.4: version "1.2.4" resolved "https://registry.yarnpkg.com/sax/-/sax-1.2.4.tgz#2816234e2378bddc4e5354fab5caa895df7100d9" integrity sha512-NqVDv9TpANUjFm0N8uM5GxL36UgKi9/atZw+x7YFnQ8ckwFGKrl4xX4yWtrey3UJm5nP1kUbnYgLopqWNSRhWw== @@ -9688,6 +10969,15 @@ saxes@^5.0.1: dependencies: xmlchars "^2.2.0" +schema-utils@^3.1.0, schema-utils@^3.1.1: + version "3.1.1" + resolved "https://registry.yarnpkg.com/schema-utils/-/schema-utils-3.1.1.tgz#bc74c4b6b6995c1d88f76a8b77bea7219e0c8281" + integrity sha512-Y5PQxS4ITlC+EahLuXaY86TXfR7Dc5lw294alXOq86JAHCihAIZfqv8nNCWvaEJvaC51uN9hbLGeV0cFBdH+Fw== + dependencies: + "@types/json-schema" "^7.0.8" + ajv "^6.12.5" + ajv-keywords "^3.5.2" + secure-json-parse@^2.1.0: version "2.4.0" resolved "https://registry.yarnpkg.com/secure-json-parse/-/secure-json-parse-2.4.0.tgz#5aaeaaef85c7a417f76271a4f5b0cc3315ddca85" @@ -9700,6 +10990,11 @@ 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-diff@^3.1.1: version "3.1.1" resolved "https://registry.yarnpkg.com/semver-diff/-/semver-diff-3.1.1.tgz#05f77ce59f325e00e2706afd67bb506ddb1ca32b" @@ -9707,7 +11002,7 @@ semver-diff@^3.1.1: dependencies: semver "^6.3.0" -"semver@2 || 3 || 4 || 5", semver@^5.1.0, semver@^5.5.0, semver@^5.6.0, semver@^5.7.1: +"semver@2 || 3 || 4 || 5", semver@^5.1.0, semver@^5.4.1, semver@^5.5.0, semver@^5.6.0, semver@^5.7.1: version "5.7.1" resolved "https://registry.yarnpkg.com/semver/-/semver-5.7.1.tgz#a954f931aeba508d307bbf069eff0c01c96116f7" integrity sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ== @@ -9734,6 +11029,13 @@ seq-queue@^0.0.5: resolved "https://registry.yarnpkg.com/seq-queue/-/seq-queue-0.0.5.tgz#d56812e1c017a6e4e7c3e3a37a1da6d78dd3c93e" integrity sha1-1WgS4cAXpuTnw+Ojeh2m143TyT4= +serialize-javascript@^6.0.0: + version "6.0.0" + resolved "https://registry.yarnpkg.com/serialize-javascript/-/serialize-javascript-6.0.0.tgz#efae5d88f45d7924141da8b5c3a7a7e663fefeb8" + integrity sha512-Qr3TosvguFt8ePWqsvRfrKyQXIiW+nGbYpy8XK24NQHE83caxWt+mIymTT19DGFbNWNLfEwsrkSmN64lVWB9ag== + dependencies: + randombytes "^2.1.0" + server-destroy@1.0.1: version "1.0.1" resolved "https://registry.yarnpkg.com/server-destroy/-/server-destroy-1.0.1.tgz#f13bf928e42b9c3e79383e61cc3998b5d14e6cdd" @@ -9764,6 +11066,13 @@ setprototypeof@1.2.0: resolved "https://registry.yarnpkg.com/setprototypeof/-/setprototypeof-1.2.0.tgz#66c9a24a73f9fc28cbe66b09fed3d33dcaf1b424" integrity sha512-E5LDX7Wrp85Kil5bhZv46j8jOeboKq5JMmYM3gVGdGH8xFpPWXUMsNrlODCrkoxMEeNi/XZIwuRvY4XNwYMJpw== +shallow-clone@^3.0.0: + version "3.0.1" + resolved "https://registry.yarnpkg.com/shallow-clone/-/shallow-clone-3.0.1.tgz#8f2981ad92531f55035b01fb230769a40e02efa3" + integrity sha512-/6KqX+GVUdqPuPPd2LxDDxzX6CAbjJehAAOKlNpqqUpAqPM6HeL8f+o3a+JsyGjn2lv0WY8UsTgUJjU9Ok55NA== + dependencies: + kind-of "^6.0.2" + shebang-command@^1.2.0: version "1.2.0" resolved "https://registry.yarnpkg.com/shebang-command/-/shebang-command-1.2.0.tgz#44aac65b695b03398968c39f363fee5deafdf1ea" @@ -9804,6 +11113,18 @@ shell-path@^2.1.0: dependencies: shell-env "^0.3.0" +shimmer@^1.2.0: + version "1.2.1" + resolved "https://registry.yarnpkg.com/shimmer/-/shimmer-1.2.1.tgz#610859f7de327b587efebf501fb43117f9aff337" + integrity sha512-sQTKC1Re/rM6XyFM6fIAGHRPVGvyXfgzIDvzoq608vM+jeyVD0Tu1E6Np0Kc2zAIFWIj963V2800iF/9LPieQw== + +shortid@^2.2.15: + version "2.2.16" + resolved "https://registry.yarnpkg.com/shortid/-/shortid-2.2.16.tgz#b742b8f0cb96406fd391c76bfc18a67a57fe5608" + integrity sha512-Ugt+GIZqvGXCIItnsL+lvFJOiN7RYqlGy7QE41O3YC1xbNSeDGIRO7xg2JJXIAj1cAGnOeC1r7/T9pgrtQbv4g== + dependencies: + nanoid "^2.1.0" + side-channel@^1.0.4: version "1.0.4" resolved "https://registry.yarnpkg.com/side-channel/-/side-channel-1.0.4.tgz#efce5c8fdc104ee751b25c58d4290011fa5ea2cf" @@ -9823,6 +11144,13 @@ signal-exit@^3.0.0, signal-exit@^3.0.2, signal-exit@^3.0.3: resolved "https://registry.yarnpkg.com/signal-exit/-/signal-exit-3.0.5.tgz#9e3e8cc0c75a99472b44321033a7702e7738252f" integrity sha512-KWcOiKeQj6ZyXx7zq4YxSMgHRlod4czeBQZrPb8OKcohcqAXShm7E20kEMle9WBt26hFcAf0qLOcp5zmY7kOqQ== +simple-swizzle@^0.2.2: + version "0.2.2" + resolved "https://registry.yarnpkg.com/simple-swizzle/-/simple-swizzle-0.2.2.tgz#a4da6b635ffcccca33f70d17cb92592de95e557a" + integrity sha1-pNprY1/8zMoz9w0Xy5JZLeleVXo= + dependencies: + is-arrayish "^0.3.1" + sisteransi@^1.0.5: version "1.0.5" resolved "https://registry.yarnpkg.com/sisteransi/-/sisteransi-1.0.5.tgz#134d681297756437cc05ca01370d3a7a571075ed" @@ -9906,6 +11234,11 @@ sort-keys@^2.0.0: dependencies: is-plain-obj "^1.0.0" +source-list-map@^2.0.1: + version "2.0.1" + resolved "https://registry.yarnpkg.com/source-list-map/-/source-list-map-2.0.1.tgz#3993bd873bfc48479cca9ea3a547835c7c154b34" + integrity sha512-qnQ7gVMxGNxsiL4lEuJwe/To8UnK7fAnmbGEEH8RpLouuKbeEm0lhbQVFIrNSuB+G7tVrAlVsZgETT5nljf+Iw== + source-map-resolve@^0.5.0: version "0.5.3" resolved "https://registry.yarnpkg.com/source-map-resolve/-/source-map-resolve-0.5.3.tgz#190866bece7553e1f8f267a2ee82c606b5509a1a" @@ -9925,6 +11258,14 @@ source-map-support@^0.5.6: buffer-from "^1.0.0" source-map "^0.6.0" +source-map-support@~0.5.20: + version "0.5.21" + resolved "https://registry.yarnpkg.com/source-map-support/-/source-map-support-0.5.21.tgz#04fe7c7f9e1ed2d662233c28cb2b35b9f63f6e4f" + integrity sha512-uBHU3L3czsIyYXKX88fdrGovxdSCoTGDRZ6SYXtSRxLZUzHg5P/66Ht6uoUlHu9EZod+inXhKo3qQgwXUT/y1w== + dependencies: + buffer-from "^1.0.0" + source-map "^0.6.0" + source-map-url@^0.4.0: version "0.4.1" resolved "https://registry.yarnpkg.com/source-map-url/-/source-map-url-0.4.1.tgz#0af66605a745a5a2f91cf1bbf8a7afbc283dec56" @@ -9954,7 +11295,7 @@ source-map@^0.6.0, source-map@^0.6.1, source-map@~0.6.1: resolved "https://registry.yarnpkg.com/source-map/-/source-map-0.6.1.tgz#74722af32e9614e9c287a8d0bbde48b5e2f1a263" integrity sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g== -source-map@^0.7.3: +source-map@^0.7.3, source-map@~0.7.2: version "0.7.3" resolved "https://registry.yarnpkg.com/source-map/-/source-map-0.7.3.tgz#5302f8169031735226544092e64981f751750383" integrity sha512-CkCj6giN3S+n9qrYiBTX5gystlENnRW5jZeNLHpe6aue+SrHcG5VYwujhW9s4dY31mEGsxBDrHR6oI69fTXsaQ== @@ -10053,6 +11394,16 @@ sshpk@^1.7.0: safer-buffer "^2.0.2" tweetnacl "~0.14.0" +stack-chain@^1.3.7: + version "1.3.7" + resolved "https://registry.yarnpkg.com/stack-chain/-/stack-chain-1.3.7.tgz#d192c9ff4ea6a22c94c4dd459171e3f00cea1285" + integrity sha1-0ZLJ/06moiyUxN1FkXHj8AzqEoU= + +stack-trace@0.0.x: + version "0.0.10" + resolved "https://registry.yarnpkg.com/stack-trace/-/stack-trace-0.0.10.tgz#547c70b347e8d32b4e108ea1a2a159e5fdde19c0" + integrity sha1-VHxws0fo0ytOEI6hoqFZ5f3eGcA= + stack-utils@^1.0.1: version "1.0.5" resolved "https://registry.yarnpkg.com/stack-utils/-/stack-utils-1.0.5.tgz#a19b0b01947e0029c8e451d5d61a498f5bb1471b" @@ -10095,6 +11446,11 @@ stealthy-require@^1.1.1: resolved "https://registry.yarnpkg.com/stealthy-require/-/stealthy-require-1.1.1.tgz#35b09875b4ff49f26a777e509b3090a3226bf24b" integrity sha1-NbCYdbT/SfJqd35QmzCQoyJr8ks= +step@0.0.x: + version "0.0.6" + resolved "https://registry.yarnpkg.com/step/-/step-0.0.6.tgz#143e7849a5d7d3f4a088fe29af94915216eeede2" + integrity sha1-FD54SaXX0/SgiP4pr5SRUhbu7eI= + strict-uri-encode@^1.0.0: version "1.1.0" resolved "https://registry.yarnpkg.com/strict-uri-encode/-/strict-uri-encode-1.1.0.tgz#279b225df1d582b1f54e65addd4352e18faa0713" @@ -10108,6 +11464,11 @@ string-length@^4.0.1: char-regex "^1.0.2" strip-ansi "^6.0.0" +string-template@~1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/string-template/-/string-template-1.0.0.tgz#9e9f2233dc00f218718ec379a28a5673ecca8b96" + integrity sha1-np8iM9wA8hhxjsN5oopWc+zKi5Y= + string-width@^3.0.0, string-width@^3.1.0: version "3.1.0" resolved "https://registry.yarnpkg.com/string-width/-/string-width-3.1.0.tgz#22767be21b62af1081574306f69ac51b62203961" @@ -10233,6 +11594,16 @@ strip-outer@^1.0.0: dependencies: escape-string-regexp "^1.0.2" +striptags@^3.1.1: + version "3.2.0" + resolved "https://registry.yarnpkg.com/striptags/-/striptags-3.2.0.tgz#cc74a137db2de8b0b9a370006334161f7dd67052" + integrity sha512-g45ZOGzHDMe2bdYMdIvdAfCQkCTDMGBazSw1ypMowwGIee7ZQ5dU0rBJ8Jqgl+jAKIv4dbeE1jscZq9wid1Tkw== + +style-loader@^3.3.1: + version "3.3.1" + resolved "https://registry.yarnpkg.com/style-loader/-/style-loader-3.3.1.tgz#057dfa6b3d4d7c7064462830f9113ed417d38575" + integrity sha512-GPcQ+LDJbrcxHORTRes6Jy2sfvK2kS6hpSfI/fXhPt+spVzxF6LJ1dHLN9zIGmVaaP044YKaIatFaufENRiDoQ== + sublevel-pouchdb@7.2.2: version "7.2.2" resolved "https://registry.yarnpkg.com/sublevel-pouchdb/-/sublevel-pouchdb-7.2.2.tgz#49e46cd37883bf7ff5006d7c5b9bcc7bcc1f422f" @@ -10322,6 +11693,13 @@ svelte-portal@^1.0.0: resolved "https://registry.yarnpkg.com/svelte-portal/-/svelte-portal-1.0.0.tgz#36a47c5578b1a4d9b4dc60fa32a904640ec4cdd3" integrity sha512-nHf+DS/jZ6jjnZSleBMSaZua9JlG5rZv9lOGKgJuaZStfevtjIlUJrkLc3vbV8QdBvPPVmvcjTlazAzfKu0v3Q== +svelte-spa-router@^3.0.5: + version "3.2.0" + resolved "https://registry.yarnpkg.com/svelte-spa-router/-/svelte-spa-router-3.2.0.tgz#fae3311d292451236cb57131262406cf312b15ee" + integrity sha512-igemo5Vs82TGBBw+DjWt6qKameXYzNs6aDXcTxou5XbEvOjiRcAM6MLkdVRCatn6u8r42dE99bt/br7T4qe/AQ== + dependencies: + regexparam "2.0.0" + svelte@^3.38.2: version "3.44.1" resolved "https://registry.yarnpkg.com/svelte/-/svelte-3.44.1.tgz#5cc772a8340f4519a4ecd1ac1a842325466b1a63" @@ -10397,6 +11775,21 @@ table@^5.2.3: slice-ansi "^2.1.0" string-width "^3.0.0" +tapable@^2.1.1, tapable@^2.2.0: + version "2.2.1" + resolved "https://registry.yarnpkg.com/tapable/-/tapable-2.2.1.tgz#1967a73ef4060a82f12ab96af86d52fdb76eeca0" + integrity sha512-GNzQvQTOIP6RyTfE2Qxb8ZVlNmw0n88vp1szwWRimP02mnTsx3Wtn5qRdqY9w2XduFNUgvOwhNnQsjwCp+kqaQ== + +tar-fs@^2.1.1: + version "2.1.1" + resolved "https://registry.yarnpkg.com/tar-fs/-/tar-fs-2.1.1.tgz#489a15ab85f1f0befabb370b7de4f9eb5cbe8784" + integrity sha512-V0r2Y9scmbDRLCNex/+hYzvp/zyYjvFbHPNgVTKfQvVrb6guiE/fxP+XblDNR011utopbkex2nM4dHNV6GDsng== + dependencies: + chownr "^1.1.1" + mkdirp-classic "^0.5.2" + pump "^3.0.0" + tar-stream "^2.1.4" + tar-stream@^1.5.2: version "1.6.2" resolved "https://registry.yarnpkg.com/tar-stream/-/tar-stream-1.6.2.tgz#8ea55dab37972253d9a9af90fdcd559ae435c555" @@ -10410,6 +11803,17 @@ tar-stream@^1.5.2: to-buffer "^1.1.1" xtend "^4.0.0" +tar-stream@^2.1.4: + version "2.2.0" + resolved "https://registry.yarnpkg.com/tar-stream/-/tar-stream-2.2.0.tgz#acad84c284136b060dc3faa64474aa9aebd77287" + integrity sha512-ujeqbceABgwMZxEJnk2HDY2DlnUZ+9oEcb1KzTVfYHio0UE6dG71n60d8D2I4qNvleWrrXpmjpt7vZeF1LnMZQ== + dependencies: + bl "^4.0.3" + end-of-stream "^1.4.1" + fs-constants "^1.0.0" + inherits "^2.0.3" + readable-stream "^3.1.1" + tarn@^1.1.5: version "1.1.5" resolved "https://registry.yarnpkg.com/tarn/-/tarn-1.1.5.tgz#7be88622e951738b9fa3fb77477309242cdddc2d" @@ -10445,6 +11849,26 @@ terminal-link@^2.0.0: ansi-escapes "^4.2.1" supports-hyperlinks "^2.0.0" +terser-webpack-plugin@^5.1.3: + version "5.2.5" + resolved "https://registry.yarnpkg.com/terser-webpack-plugin/-/terser-webpack-plugin-5.2.5.tgz#ce65b9880a0c36872555c4874f45bbdb02ee32c9" + integrity sha512-3luOVHku5l0QBeYS8r4CdHYWEGMmIj3H1U64jgkdZzECcSOJAyJ9TjuqcQZvw1Y+4AOBN9SeYJPJmFn2cM4/2g== + dependencies: + jest-worker "^27.0.6" + schema-utils "^3.1.1" + serialize-javascript "^6.0.0" + source-map "^0.6.1" + terser "^5.7.2" + +terser@^5.7.2: + version "5.10.0" + resolved "https://registry.yarnpkg.com/terser/-/terser-5.10.0.tgz#b86390809c0389105eb0a0b62397563096ddafcc" + integrity sha512-AMmF99DMfEDiRJfxfY5jj5wNH/bYO09cniSqhfoyxc8sFoYIgkJy86G04UoZU5VjlpnplVu0K6Tx6E9b5+DlHA== + dependencies: + commander "^2.20.0" + source-map "~0.7.2" + source-map-support "~0.5.20" + test-exclude@^5.2.3: version "5.2.3" resolved "https://registry.yarnpkg.com/test-exclude/-/test-exclude-5.2.3.tgz#c3d3e1e311eb7ee405e092dac10aefd09091eac0" @@ -10464,6 +11888,11 @@ test-exclude@^6.0.0: glob "^7.1.4" minimatch "^3.0.4" +text-hex@1.0.x: + version "1.0.0" + resolved "https://registry.yarnpkg.com/text-hex/-/text-hex-1.0.0.tgz#69dc9c1b17446ee79a92bf5b884bb4b9127506f5" + integrity sha512-uuVGNWzgJ4yhRaNSiubPY7OjISw4sw4E5Uv0wbjp+OzcbmVU/rsT8ujgcXJhn9ypzsgr5vlzpPqP+MBBKcGvbg== + text-table@^0.2.0: version "0.2.0" resolved "https://registry.yarnpkg.com/text-table/-/text-table-0.2.0.tgz#7f5ee823ae805207c00af2df4a84ec3fcfa570b4" @@ -10576,6 +12005,11 @@ to-fast-properties@^2.0.0: resolved "https://registry.yarnpkg.com/to-fast-properties/-/to-fast-properties-2.0.0.tgz#dc5e698cbd079265bc73e0377681a4e4e83f616e" integrity sha1-3F5pjL0HkmW8c+A3doGk5Og/YW4= +to-gfm-code-block@^0.1.1: + version "0.1.1" + resolved "https://registry.yarnpkg.com/to-gfm-code-block/-/to-gfm-code-block-0.1.1.tgz#25d045a5fae553189e9637b590900da732d8aa82" + integrity sha1-JdBFpfrlUxielje1kJANpzLYqoI= + to-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" @@ -10689,6 +12123,11 @@ trim-repeated@^1.0.0: dependencies: escape-string-regexp "^1.0.2" +triple-beam@^1.2.0, triple-beam@^1.3.0: + version "1.3.0" + resolved "https://registry.yarnpkg.com/triple-beam/-/triple-beam-1.3.0.tgz#a595214c7298db8339eeeee083e4d10bd8cb8dd9" + integrity sha512-XrHUvV5HpdLmIj4uVMxHggLbFSZYIn7HEWsqePZcI50pco+MPqJ50wMGY794X7AOOhxOBAjbkqfAbEe/QMp2Lw== + ts-jest@^27.0.3: version "27.0.7" resolved "https://registry.yarnpkg.com/ts-jest/-/ts-jest-27.0.7.tgz#fb7c8c8cb5526ab371bc1b23d06e745652cca2d0" @@ -10787,6 +12226,11 @@ type-fest@^0.8.1: resolved "https://registry.yarnpkg.com/type-fest/-/type-fest-0.8.1.tgz#09e249ebde851d3b1e48d27c105444667f17b83d" integrity sha512-4dbzIzqvjtgiM5rw1k5rEHtBANKmdudhGyBEajN01fEyhaAIhsoKNy6y7+IN93IfpFtwY9iqi7kD+xwKhQsNJA== +type-fest@^1.4.0: + version "1.4.0" + resolved "https://registry.yarnpkg.com/type-fest/-/type-fest-1.4.0.tgz#e9fb813fe3bf1744ec359d55d1affefa76f14be1" + integrity sha512-yGSza74xk0UG8k+pLh5oeoYirvIiWo5t0/o3zHHAO2tRDiZcxWP7fywNlXhqb6/r6sWvwi+RsyQMWhVLe4BVuA== + type-is@^1.6.14, type-is@^1.6.16: version "1.6.18" resolved "https://registry.yarnpkg.com/type-is/-/type-is-1.6.18.tgz#4e552cd05df09467dcbc4ef739de89f2cf37c131" @@ -10802,11 +12246,33 @@ typedarray-to-buffer@^3.1.5: dependencies: is-typedarray "^1.0.0" +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" + typescript@^4.3.5: version "4.3.5" resolved "https://registry.yarnpkg.com/typescript/-/typescript-4.3.5.tgz#4d1c37cc16e893973c45a06886b7113234f119f4" integrity sha512-DqQgihaQ9cUrskJo9kIyW/+g0Vxsk8cDtZ52a3NGh0YNTfpUSArXSohyUGnvbPazEPLu398C0UxmKSOrPumUzA== +uc.micro@^1.0.1, uc.micro@^1.0.5: + version "1.0.6" + resolved "https://registry.yarnpkg.com/uc.micro/-/uc.micro-1.0.6.tgz#9c411a802a409a91fc6cf74081baba34b24499ac" + integrity sha512-8Y75pvTYkLJW2hWQHXxoqRgV7qb9B+9vFEtidML+7koHUFapnVJAZ6cKs+Qjz5Aw3aZWHMC6u0wJE3At+nSGwA== + +uglify-js@^3.1.4: + version "3.14.3" + resolved "https://registry.yarnpkg.com/uglify-js/-/uglify-js-3.14.3.tgz#c0f25dfea1e8e5323eccf59610be08b6043c15cf" + integrity sha512-mic3aOdiq01DuSVx0TseaEzMIVqebMZ0Z3vaeDhFEh9bsc24hV1TFvN74reA2vs08D0ZWfNjAcJ3UbVLaBss+g== + +uid2@0.0.x: + version "0.0.4" + resolved "https://registry.yarnpkg.com/uid2/-/uid2-0.0.4.tgz#033f3b1d5d32505f5ce5f888b9f3b667123c0a44" + integrity sha512-IevTus0SbGwQzYh3+fRsAMTVVPOoIVufzacXcHPmdlle1jUpq7BRL+mw3dgeLanvGZdwwbWhRV6XrcFNdBmjWA== + unbox-primitive@^1.0.1: version "1.0.1" resolved "https://registry.yarnpkg.com/unbox-primitive/-/unbox-primitive-1.0.1.tgz#085e215625ec3162574dc8859abee78a59b14471" @@ -10880,6 +12346,11 @@ universalify@^0.1.0, universalify@^0.1.2: resolved "https://registry.yarnpkg.com/universalify/-/universalify-0.1.2.tgz#b646f69be3942dabcecc9d6639c80dc105efaa66" integrity sha512-rBJeI5CXAlmy1pV+617WB9J63U6XcazHHF2f2dbJix4XzpUF0RS3Zbj0FGIOCAva5P/d/GBOYaACQ1w+0azUkg== +universalify@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/universalify/-/universalify-2.0.0.tgz#75a4984efedc4b08975c5aeb73f530d02df25717" + integrity sha512-hAZsKq7Yy11Zu1DE0OzWjw7nnLZmJZYTDZZyEFHZdUhV8FkH5MCfoU1XMaxXovpyW5nq5scPqq0ZDP9Zyl04oQ== + unpipe@1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/unpipe/-/unpipe-1.0.0.tgz#b2bf4ee8514aae6165b4817829d21b2ef49904ec" @@ -10956,6 +12427,14 @@ url-parse-lax@^3.0.0: dependencies: prepend-http "^2.0.0" +url-parse@^1.5.3: + version "1.5.3" + resolved "https://registry.yarnpkg.com/url-parse/-/url-parse-1.5.3.tgz#71c1303d38fb6639ade183c2992c8cc0686df862" + integrity sha512-IIORyIQD9rvj0A4CLWsHkBBJuNqWpFQe224b6j9t/ABmquIS0qDU2pY6kl6AuOrL5OkCXHMCFNe1jBcuAggjvQ== + dependencies: + querystringify "^2.1.1" + requires-port "^1.0.0" + url-to-options@^1.0.1: version "1.0.1" resolved "https://registry.yarnpkg.com/url-to-options/-/url-to-options-1.0.1.tgz#1505a03a289a48cbd7a434efbaeec5055f5633a9" @@ -10997,6 +12476,11 @@ util.promisify@^1.0.0, util.promisify@^1.0.1: has-symbols "^1.0.1" object.getownpropertydescriptors "^2.1.1" +utils-merge@1.x.x: + version "1.0.1" + resolved "https://registry.yarnpkg.com/utils-merge/-/utils-merge-1.0.1.tgz#9f95710f50a267947b2ccc124741c1028427e713" + integrity sha1-n5VxD1CiZ5R7LMwSR0HBAoQn5xM= + uuid@3.3.2, uuid@^3.1.0, uuid@^3.3.2: version "3.3.2" resolved "https://registry.yarnpkg.com/uuid/-/uuid-3.3.2.tgz#1b4af4955eb3077c501c23872fc6513811587131" @@ -11056,7 +12540,7 @@ verror@1.3.6: dependencies: extsprintf "1.0.2" -vm2@^3.9.3: +vm2@^3.9.3, vm2@^3.9.4: version "3.9.5" resolved "https://registry.yarnpkg.com/vm2/-/vm2-3.9.5.tgz#5288044860b4bbace443101fcd3bddb2a0aa2496" integrity sha512-LuCAHZN75H9tdrAiLFf030oW7nJV5xwNMuk1ymOZwopmuK3d2H4L1Kv4+GFHgarKiLfXXLFU+7LDABHnwOkWng== @@ -11087,6 +12571,22 @@ walker@^1.0.7, walker@~1.0.5: dependencies: makeerror "1.0.12" +watchpack@^2.2.0: + version "2.3.0" + resolved "https://registry.yarnpkg.com/watchpack/-/watchpack-2.3.0.tgz#a41bca3da6afaff31e92a433f4c856a0c25ea0c4" + integrity sha512-MnN0Q1OsvB/GGHETrFeZPQaOelWh/7O+EiFlj8sM9GPjtQkis7k01aAxrg/18kTfoIVcLL+haEVFlXDaSRwKRw== + dependencies: + glob-to-regexp "^0.4.1" + graceful-fs "^4.1.2" + +webfinger@^0.4.2: + version "0.4.2" + resolved "https://registry.yarnpkg.com/webfinger/-/webfinger-0.4.2.tgz#3477a6d97799461896039fcffc650b73468ee76d" + integrity sha1-NHem2XeZRhiWA5/P/GULc0aO520= + dependencies: + step "0.0.x" + xml2js "0.1.x" + webidl-conversions@^3.0.0: version "3.0.1" resolved "https://registry.yarnpkg.com/webidl-conversions/-/webidl-conversions-3.0.1.tgz#24534275e2a7bc6be7bc86611cc16ae0a5654871" @@ -11107,6 +12607,75 @@ webidl-conversions@^6.1.0: resolved "https://registry.yarnpkg.com/webidl-conversions/-/webidl-conversions-6.1.0.tgz#9111b4d7ea80acd40f5270d666621afa78b69514" integrity sha512-qBIvFLGiBpLjfwmYAaHPXsn+ho5xZnGvyGvsarywGNc8VyQJUMHJ8OBKGGrPER0okBeMDaan4mNBlgBROxuI8w== +webpack-cli@^4.9.1: + version "4.9.1" + resolved "https://registry.yarnpkg.com/webpack-cli/-/webpack-cli-4.9.1.tgz#b64be825e2d1b130f285c314caa3b1ba9a4632b3" + integrity sha512-JYRFVuyFpzDxMDB+v/nanUdQYcZtqFPGzmlW4s+UkPMFhSpfRNmf1z4AwYcHJVdvEFAM7FFCQdNTpsBYhDLusQ== + dependencies: + "@discoveryjs/json-ext" "^0.5.0" + "@webpack-cli/configtest" "^1.1.0" + "@webpack-cli/info" "^1.4.0" + "@webpack-cli/serve" "^1.6.0" + colorette "^2.0.14" + commander "^7.0.0" + execa "^5.0.0" + fastest-levenshtein "^1.0.12" + import-local "^3.0.2" + interpret "^2.2.0" + rechoir "^0.7.0" + webpack-merge "^5.7.3" + +webpack-merge@^5.7.3: + version "5.8.0" + resolved "https://registry.yarnpkg.com/webpack-merge/-/webpack-merge-5.8.0.tgz#2b39dbf22af87776ad744c390223731d30a68f61" + integrity sha512-/SaI7xY0831XwP6kzuwhKWVKDP9t1QY1h65lAFLbZqMPIuYcD9QAW4u9STIbU9kaJbPBB/geU/gLr1wDjOhQ+Q== + dependencies: + clone-deep "^4.0.1" + wildcard "^2.0.0" + +webpack-sources@^2.2.0: + version "2.3.1" + resolved "https://registry.yarnpkg.com/webpack-sources/-/webpack-sources-2.3.1.tgz#570de0af163949fe272233c2cefe1b56f74511fd" + integrity sha512-y9EI9AO42JjEcrTJFOYmVywVZdKVUfOvDUPsJea5GIr1JOEGFVqwlY2K098fFoIjOkDzHn2AjRvM8dsBZu+gCA== + dependencies: + source-list-map "^2.0.1" + source-map "^0.6.1" + +webpack-sources@^3.2.2: + version "3.2.2" + resolved "https://registry.yarnpkg.com/webpack-sources/-/webpack-sources-3.2.2.tgz#d88e3741833efec57c4c789b6010db9977545260" + integrity sha512-cp5qdmHnu5T8wRg2G3vZZHoJPN14aqQ89SyQ11NpGH5zEMDCclt49rzo+MaRazk7/UeILhAI+/sEtcM+7Fr0nw== + +webpack@^5.64.2: + version "5.64.3" + resolved "https://registry.yarnpkg.com/webpack/-/webpack-5.64.3.tgz#f4792cc3f8528db2c18375fa2cd269f69e0bf69f" + integrity sha512-XF6/IL9Bw2PPQioiR1UYA8Bs4tX3QXJtSelezKECdLFeSFzWoe44zqTzPW5N+xI3fACaRl2/G3sNA4WYHD7Iww== + dependencies: + "@types/eslint-scope" "^3.7.0" + "@types/estree" "^0.0.50" + "@webassemblyjs/ast" "1.11.1" + "@webassemblyjs/wasm-edit" "1.11.1" + "@webassemblyjs/wasm-parser" "1.11.1" + acorn "^8.4.1" + acorn-import-assertions "^1.7.6" + browserslist "^4.14.5" + chrome-trace-event "^1.0.2" + enhanced-resolve "^5.8.3" + es-module-lexer "^0.9.0" + eslint-scope "5.1.1" + events "^3.2.0" + glob-to-regexp "^0.4.1" + graceful-fs "^4.2.4" + json-parse-better-errors "^1.0.2" + loader-runner "^4.2.0" + mime-types "^2.1.27" + neo-async "^2.6.2" + schema-utils "^3.1.0" + tapable "^2.1.1" + terser-webpack-plugin "^5.1.3" + watchpack "^2.2.0" + webpack-sources "^3.2.2" + whatwg-encoding@^1.0.1, whatwg-encoding@^1.0.3, whatwg-encoding@^1.0.5: version "1.0.5" resolved "https://registry.yarnpkg.com/whatwg-encoding/-/whatwg-encoding-1.0.5.tgz#5abacf777c32166a51d085d6b4f3e7d27113ddb0" @@ -11191,11 +12760,44 @@ widest-line@^3.1.0: dependencies: string-width "^4.0.0" +wildcard@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/wildcard/-/wildcard-2.0.0.tgz#a77d20e5200c6faaac979e4b3aadc7b3dd7f8fec" + integrity sha512-JcKqAHLPxcdb9KM49dufGXn2x3ssnfjbcaQdLlfZsL9rH9wgDQjUtDxbo8NE0F6SFvydeu1VhZe7hZuHsB2/pw== + +winston-transport@^4.4.0: + version "4.4.0" + resolved "https://registry.yarnpkg.com/winston-transport/-/winston-transport-4.4.0.tgz#17af518daa690d5b2ecccaa7acf7b20ca7925e59" + integrity sha512-Lc7/p3GtqtqPBYYtS6KCN3c77/2QCev51DvcJKbkFPQNoj1sinkGwLGFDxkXY9J6p9+EPnYs+D90uwbnaiURTw== + dependencies: + readable-stream "^2.3.7" + triple-beam "^1.2.0" + +winston@^3.3.3: + version "3.3.3" + resolved "https://registry.yarnpkg.com/winston/-/winston-3.3.3.tgz#ae6172042cafb29786afa3d09c8ff833ab7c9170" + integrity sha512-oEXTISQnC8VlSAKf1KYSSd7J6IWuRPQqDdo8eoRNaYKLvwSb5+79Z3Yi1lrl6KDpU6/VWaxpakDAtb1oQ4n9aw== + dependencies: + "@dabh/diagnostics" "^2.0.2" + async "^3.1.0" + is-stream "^2.0.0" + logform "^2.2.0" + one-time "^1.0.0" + readable-stream "^3.4.0" + stack-trace "0.0.x" + triple-beam "^1.3.0" + winston-transport "^4.4.0" + word-wrap@~1.2.3: version "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" @@ -11301,6 +12903,13 @@ xml-parse-from-string@^1.0.0: resolved "https://registry.yarnpkg.com/xml-parse-from-string/-/xml-parse-from-string-1.0.1.tgz#a9029e929d3dbcded169f3c6e28238d95a5d5a28" integrity sha1-qQKekp09vN7RafPG4oI42VpdWig= +xml2js@0.1.x: + version "0.1.14" + resolved "https://registry.yarnpkg.com/xml2js/-/xml2js-0.1.14.tgz#5274e67f5a64c5f92974cd85139e0332adc6b90c" + integrity sha1-UnTmf1pkxfkpdM2FE54DMq3GuQw= + dependencies: + sax ">=0.1.1" + xml2js@0.4.19: version "0.4.19" resolved "https://registry.yarnpkg.com/xml2js/-/xml2js-0.4.19.tgz#686c20f213209e94abf0d1bcf1efaa291c7827a7" @@ -11434,6 +13043,11 @@ 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" @@ -11444,7 +13058,7 @@ yn@3.1.1: resolved "https://registry.yarnpkg.com/yn/-/yn-3.1.1.tgz#1e87401a09d767c1d5eab26a6e4c185182d2eb50" integrity sha512-Ux4ygGWsu2c7isFWe8Yu1YluJmqVhxqK2cLXNQA5AcC3QfbGNpM7fu0Y8b/z16pXLnFxZYvWhd3fhBY9DLmC6Q== -zlib@1.0.5: +zlib@1.0.5, zlib@^1.0.5: version "1.0.5" resolved "https://registry.yarnpkg.com/zlib/-/zlib-1.0.5.tgz#6e7c972fc371c645a6afb03ab14769def114fcc0" integrity sha1-bnyXL8NxxkWmr7A6sUdp3vEU/MA= From b68cd07431858a987ab6e36136775cf67bf841d5 Mon Sep 17 00:00:00 2001 From: mike12345567 Date: Thu, 25 Nov 2021 16:41:19 +0000 Subject: [PATCH 013/175] Fixing issue with data import error not invalidating modals. --- .../components/backend/TableNavigator/TableDataImport.svelte | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/packages/builder/src/components/backend/TableNavigator/TableDataImport.svelte b/packages/builder/src/components/backend/TableNavigator/TableDataImport.svelte index 46c3d32708..343440231b 100644 --- a/packages/builder/src/components/backend/TableNavigator/TableDataImport.svelte +++ b/packages/builder/src/components/backend/TableNavigator/TableDataImport.svelte @@ -19,7 +19,10 @@ let fields = [] let hasValidated = false - $: valid = !schema || fields.every(column => schema[column].success) + $: valid = + !schema || + (fields.every(column => schema[column].success) && + Object.keys(schema).length > 0) $: dataImport = { valid, schema: buildTableSchema(schema), From 7e97d2ba9508ccc7d03a20ac9fba82f94b16af8e Mon Sep 17 00:00:00 2001 From: Budibase Staging Release Bot <> Date: Thu, 25 Nov 2021 16:50:21 +0000 Subject: [PATCH 014/175] v0.9.190-alpha.2 --- lerna.json | 2 +- packages/auth/package.json | 2 +- packages/bbui/package.json | 2 +- packages/builder/package.json | 8 ++++---- packages/cli/package.json | 2 +- packages/client/package.json | 6 +++--- packages/server/package.json | 8 ++++---- packages/string-templates/package.json | 2 +- packages/worker/package.json | 6 +++--- 9 files changed, 19 insertions(+), 19 deletions(-) diff --git a/lerna.json b/lerna.json index 1a1cf12e12..25dba265c8 100644 --- a/lerna.json +++ b/lerna.json @@ -1,5 +1,5 @@ { - "version": "0.9.190-alpha.1", + "version": "0.9.190-alpha.2", "npmClient": "yarn", "packages": [ "packages/*" diff --git a/packages/auth/package.json b/packages/auth/package.json index cd4e9785d1..7c7f554a0f 100644 --- a/packages/auth/package.json +++ b/packages/auth/package.json @@ -1,6 +1,6 @@ { "name": "@budibase/auth", - "version": "0.9.190-alpha.1", + "version": "0.9.190-alpha.2", "description": "Authentication middlewares for budibase builder and apps", "main": "src/index.js", "author": "Budibase", diff --git a/packages/bbui/package.json b/packages/bbui/package.json index ba19b4645c..5f229fbaa5 100644 --- a/packages/bbui/package.json +++ b/packages/bbui/package.json @@ -1,7 +1,7 @@ { "name": "@budibase/bbui", "description": "A UI solution used in the different Budibase projects.", - "version": "0.9.190-alpha.1", + "version": "0.9.190-alpha.2", "license": "MPL-2.0", "svelte": "src/index.js", "module": "dist/bbui.es.js", diff --git a/packages/builder/package.json b/packages/builder/package.json index d9bf0e3e3f..d6eaf178aa 100644 --- a/packages/builder/package.json +++ b/packages/builder/package.json @@ -1,6 +1,6 @@ { "name": "@budibase/builder", - "version": "0.9.190-alpha.1", + "version": "0.9.190-alpha.2", "license": "GPL-3.0", "private": true, "scripts": { @@ -65,10 +65,10 @@ } }, "dependencies": { - "@budibase/bbui": "^0.9.190-alpha.1", - "@budibase/client": "^0.9.190-alpha.1", + "@budibase/bbui": "^0.9.190-alpha.2", + "@budibase/client": "^0.9.190-alpha.2", "@budibase/colorpicker": "1.1.2", - "@budibase/string-templates": "^0.9.190-alpha.1", + "@budibase/string-templates": "^0.9.190-alpha.2", "@sentry/browser": "5.19.1", "@spectrum-css/page": "^3.0.1", "@spectrum-css/vars": "^3.0.1", diff --git a/packages/cli/package.json b/packages/cli/package.json index 50e1f4e749..922c99c4ca 100644 --- a/packages/cli/package.json +++ b/packages/cli/package.json @@ -1,6 +1,6 @@ { "name": "@budibase/cli", - "version": "0.9.190-alpha.1", + "version": "0.9.190-alpha.2", "description": "Budibase CLI, for developers, self hosting and migrations.", "main": "src/index.js", "bin": { diff --git a/packages/client/package.json b/packages/client/package.json index 95dbf7b496..dd4da10914 100644 --- a/packages/client/package.json +++ b/packages/client/package.json @@ -1,6 +1,6 @@ { "name": "@budibase/client", - "version": "0.9.190-alpha.1", + "version": "0.9.190-alpha.2", "license": "MPL-2.0", "module": "dist/budibase-client.js", "main": "dist/budibase-client.js", @@ -19,9 +19,9 @@ "dev:builder": "rollup -cw" }, "dependencies": { - "@budibase/bbui": "^0.9.190-alpha.1", + "@budibase/bbui": "^0.9.190-alpha.2", "@budibase/standard-components": "^0.9.139", - "@budibase/string-templates": "^0.9.190-alpha.1", + "@budibase/string-templates": "^0.9.190-alpha.2", "regexparam": "^1.3.0", "shortid": "^2.2.15", "svelte-spa-router": "^3.0.5" diff --git a/packages/server/package.json b/packages/server/package.json index ca3ecfbccc..70bd181519 100644 --- a/packages/server/package.json +++ b/packages/server/package.json @@ -1,7 +1,7 @@ { "name": "@budibase/server", "email": "hi@budibase.com", - "version": "0.9.190-alpha.1", + "version": "0.9.190-alpha.2", "description": "Budibase Web Server", "main": "src/index.js", "repository": { @@ -68,9 +68,9 @@ "author": "Budibase", "license": "GPL-3.0", "dependencies": { - "@budibase/auth": "^0.9.190-alpha.1", - "@budibase/client": "^0.9.190-alpha.1", - "@budibase/string-templates": "^0.9.190-alpha.1", + "@budibase/auth": "^0.9.190-alpha.2", + "@budibase/client": "^0.9.190-alpha.2", + "@budibase/string-templates": "^0.9.190-alpha.2", "@bull-board/api": "^3.7.0", "@bull-board/koa": "^3.7.0", "@elastic/elasticsearch": "7.10.0", diff --git a/packages/string-templates/package.json b/packages/string-templates/package.json index b06f1f226f..78bd352670 100644 --- a/packages/string-templates/package.json +++ b/packages/string-templates/package.json @@ -1,6 +1,6 @@ { "name": "@budibase/string-templates", - "version": "0.9.190-alpha.1", + "version": "0.9.190-alpha.2", "description": "Handlebars wrapper for Budibase templating.", "main": "src/index.cjs", "module": "dist/bundle.mjs", diff --git a/packages/worker/package.json b/packages/worker/package.json index 1e610be851..05fcb99c71 100644 --- a/packages/worker/package.json +++ b/packages/worker/package.json @@ -1,7 +1,7 @@ { "name": "@budibase/worker", "email": "hi@budibase.com", - "version": "0.9.190-alpha.1", + "version": "0.9.190-alpha.2", "description": "Budibase background service", "main": "src/index.js", "repository": { @@ -29,8 +29,8 @@ "author": "Budibase", "license": "GPL-3.0", "dependencies": { - "@budibase/auth": "^0.9.190-alpha.1", - "@budibase/string-templates": "^0.9.190-alpha.1", + "@budibase/auth": "^0.9.190-alpha.2", + "@budibase/string-templates": "^0.9.190-alpha.2", "@koa/router": "^8.0.0", "@sentry/node": "^6.0.0", "@techpass/passport-openidconnect": "^0.3.0", From 5b2e6bddf8773a8d87718c8f6467c1064f633ec9 Mon Sep 17 00:00:00 2001 From: mike12345567 Date: Thu, 25 Nov 2021 17:44:47 +0000 Subject: [PATCH 015/175] Updating docs. --- packages/server/scripts/docs/generate.js | 6 +- packages/server/src/api/routes/row.js | 136 +++++++++++++++++++++-- 2 files changed, 130 insertions(+), 12 deletions(-) diff --git a/packages/server/scripts/docs/generate.js b/packages/server/scripts/docs/generate.js index f5b9c00fa5..3006e6cca6 100644 --- a/packages/server/scripts/docs/generate.js +++ b/packages/server/scripts/docs/generate.js @@ -6,8 +6,7 @@ const packageJson = require("../../package.json") const config = { name: "Budibase API", version: packageJson.version, - description: - "Documentation for the various API endpoints of the Budibase backend.", + description: "Documenting the Budibase backend API", title: "Budibase app service API", } @@ -37,9 +36,8 @@ function generate() { fs.mkdirSync(assetsPath, { recursive: true }) } const doc = createDoc({ - src: srcPath, + src: [srcPath], dest: assetsPath, - silent: true, filters: { main: { postFilter: filter, diff --git a/packages/server/src/api/routes/row.js b/packages/server/src/api/routes/row.js index 7c2c42be14..a7cbd7fcdf 100644 --- a/packages/server/src/api/routes/row.js +++ b/packages/server/src/api/routes/row.js @@ -16,7 +16,7 @@ const router = Router() router /** * @api {get} /api/:tableId/:rowId/enrich Get an enriched row - * @apiName /api/:tableId/:rowId/enrich + * @apiName Get an enriched row * @apiGroup rows * @apiPermission table read access * @apiDescription This API is only useful when dealing with rows that have relationships. @@ -27,7 +27,6 @@ router * @apiParam {string} rowId The ID of the row which is to be retrieved and enriched. * * @apiSuccess {object} row The response body will be the enriched row. - * @apiError {string} message If the table or row could not be found then an error will be thrown. */ .get( "/api/:tableId/:rowId/enrich", @@ -37,7 +36,7 @@ router ) /** * @api {get} /api/:tableId/rows Get all rows in a table - * @apiName /api/:tableId/rows + * @apiName Get all rows in a table * @apiGroup rows * @apiPermission table read access * @apiDescription This is a deprecated endpoint that should not be used anymore, instead use the search endpoint. @@ -48,7 +47,6 @@ router * @apiParam {string} tableId The ID of the table to retrieve all rows within. * * @apiSuccess {object[]} rows The response body will be an array of all rows found. - * @apiError {string} message If the table could not be found then an error will be thrown. */ .get( "/api/:tableId/rows", @@ -58,7 +56,7 @@ router ) /** * @api {get} /api/:tableId/rows/:rowId Retrieve a single row - * @apiName /api/:tableId/rows/:rowId + * @apiName Retrieve a single row * @apiGroup rows * @apiPermission table read access * @apiDescription This endpoint retrieves only the specified row. If you wish to retrieve @@ -68,7 +66,6 @@ router * @apiParam {string} rowId The ID of the row to retrieve. * * @apiSuccess {object} row The response body will be the row that was found. - * @apiError {string} message If the table or row could not be found then an error will be thrown. */ .get( "/api/:tableId/rows/:rowId", @@ -78,15 +75,68 @@ router ) /** * @api {post} /api/:tableId/search Search for rows in a table - * @apiName /api/:tableId/search + * @apiName Search for rows in a table * @apiGroup rows * @apiPermission table read access * @apiDescription This is the primary method of accessing rows in Budibase, the data provider * and data UI in the builder are built atop this. All filtering, sorting and pagination is * handled through this, for internal and external (datasource plus, e.g. SQL) tables. * - * @apiBody + * @apiParam {string} tableId The ID of the table to retrieve rows from. * + * @apiBody {boolean} [paginate] If pagination is required then this should be set to true, + * defaults to false. + * @apiBody {object} [query] This contains a set of filters which should be applied, if none + * specified then the request will be unfiltered. An example with all of the possible query + * options has been supplied below. + * @apiBody {number} [limit] This sets a limit for the number of rows that will be returned, + * this will be implemented at the database level if supported for performance reasons. This + * is useful when paginating to set exactly how many rows per page. + * @apiBody {string} [bookmark] If pagination is enabled then a bookmark will be returned + * with each successful search request, this should be supplied back to get the next page. + * @apiBody {object} [sort] If sort is desired this should contain the name of the column to + * sort on. + * @apiBody {string} [sortOrder] If sort is enabled then this can be either "descending" or + * "ascending" as required. + * @apiBody {string} [sortType] If sort is enabled then you must specify the type of search + * being used, either "string" or "number". This is only used for internal tables. + * + * @apiParamExample {json} Example: + * { + * "tableId": "ta_70260ff0b85c467ca74364aefc46f26d", + * "query": { + * "string": {}, + * "fuzzy": {}, + * "range": { + * "columnName": { + * "high": 20, + * "low": 10, + * } + * }, + * "equal": { + * "columnName": "someValue" + * }, + * "notEqual": {}, + * "empty": {}, + * "notEmpty": {}, + * "contains": {}, + * "notContains": {} + * "oneOf": { + * "columnName": ["value"] + * } + * }, + * "limit": 10, + * "sort": "name", + * "sortOrder": "descending", + * "sortType": "string", + * "paginate": true + * } + * + * @apiSuccess {object[]} rows An array of rows that was found based on the supplied parameters. + * @apiSuccess {boolean} hasNextPage If pagination was enabled then this specifies whether or + * not there is another page after this request. + * @apiSuccess {string} bookmark The bookmark to be sent with the next request to get the next + * page. */ .post( "/api/:tableId/search", @@ -102,6 +152,30 @@ router authorized(PermissionTypes.TABLE, PermissionLevels.READ), rowController.search ) + /** + * @api {post} /api/:tableId/rows Creates a new row + * @apiName Creates a new row + * @apiGroup rows + * @apiPermission table write access + * @apiDescription This API will create a new row based on the supplied body. If the + * body includes an "_id" field then it will update an existing row if the field + * links to one. Please note that "_id", "_rev" and "tableId" are fields that are + * already used by Budibase tables and cannot be used for columns. + * + * @apiParam {string} tableId The ID of the table to save a row to. + * + * @apiBody {string} [_id] If the row exists already then an ID for the row must be provided. + * @apiBody {string} [_rev] If working with an existing row for an internal table its revision + * must also be provided. + * @apiBody {string} tableId The ID of the table should also be specified in the row body itself. + * @apiBody {any} [any] Any field supplied in the body will be assessed to see if it matches + * a column in the specified table. All other fields will be dropped and not stored. + * + * @apiSuccess {string} _id The ID of the row that was just saved, if it was just created this + * is the rows new ID. + * @apiSuccess {string} [_rev] If saving to an internal table a revision will also be returned. + * @apiSuccess {any} [any] The contents of the row that was saved will be returned as well. + */ .post( "/api/:tableId/rows", paramResource("tableId"), @@ -109,18 +183,64 @@ router usage, rowController.save ) + /** + * @api {patch} /api/:tableId/rows Updates a row + * @apiName Update a row + * @apiGroup rows + * @apiPermission table write access + * @apiDescription This endpoint is identical to the row creation endpoint but instead it will + * error if an _id isn't provided, it will only function for existing rows. + */ .patch( "/api/:tableId/rows", paramResource("tableId"), authorized(PermissionTypes.TABLE, PermissionLevels.WRITE), rowController.patch ) + /** + * @api {post} /api/:tableId/rows/validate Validate inputs for a row + * @apiName Validate inputs for a row + * @apiGroup rows + * @apiPermission table write access + * @apiDescription When attempting to save a row you may want to check if the row is valid + * given the table schema, this will iterate through all the constraints on the table and + * check if the request body is valid. + * + * @apiParam {string} tableId The ID of the table the row is to be validated for. + * + * @apiBody {any} [any] Any fields provided in the request body will be tested + * against the table schema and constraints. + * + * @apiSuccess {boolean} valid If inputs provided are acceptable within the table schema this + * will be true, if it is not then then errors property will be populated. + * @apiSuccess {object} [errors] A key value map of information about fields on the input + * which do not match the table schema. The key name will be the column names that have breached + * the schema. + */ .post( "/api/:tableId/rows/validate", paramResource("tableId"), authorized(PermissionTypes.TABLE, PermissionLevels.WRITE), rowController.validate ) + /** + * @api {delete} /api/:tableId/rows Delete rows + * @apiName Delete rows + * @apiGroup rows + * @apiPermission table write access + * @apiDescription This endpoint can delete a single row, or delete them in a bulk + * fashion. + * + * @apiBody {object[]} [rows] If bulk deletion is desired then provide the rows in this + * key of the request body that are to be deleted. + * @apiBody {string} [_id] If deleting a single row then provide its ID in this field. + * @apiBody {string} [_rev] If deleting a single row from an internal table then provide its + * revision here. + * + * @apiSuccess {object[]|object} rows If deleting bulk then the response body will be an array + * of the deleted rows, if deleting a single row then the body will contain a "row" property which + * is the deleted row. + */ .delete( "/api/:tableId/rows", paramResource("tableId"), From 82a0bfa5f56f386227644908d0f50730bd3b5197 Mon Sep 17 00:00:00 2001 From: mike12345567 Date: Thu, 25 Nov 2021 17:56:50 +0000 Subject: [PATCH 016/175] Fixing issue discovered by Cypress. --- .../components/backend/TableNavigator/TableDataImport.svelte | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/packages/builder/src/components/backend/TableNavigator/TableDataImport.svelte b/packages/builder/src/components/backend/TableNavigator/TableDataImport.svelte index 343440231b..44cb374092 100644 --- a/packages/builder/src/components/backend/TableNavigator/TableDataImport.svelte +++ b/packages/builder/src/components/backend/TableNavigator/TableDataImport.svelte @@ -22,7 +22,7 @@ $: valid = !schema || (fields.every(column => schema[column].success) && - Object.keys(schema).length > 0) + (!hasValidated || Object.keys(schema).length > 0)) $: dataImport = { valid, schema: buildTableSchema(schema), From aa010163a7b52921ff9a3c8f67ad9600c6cadc54 Mon Sep 17 00:00:00 2001 From: Budibase Staging Release Bot <> Date: Thu, 25 Nov 2021 18:04:35 +0000 Subject: [PATCH 017/175] v0.9.190-alpha.3 --- lerna.json | 2 +- packages/auth/package.json | 2 +- packages/bbui/package.json | 2 +- packages/builder/package.json | 8 ++++---- packages/cli/package.json | 2 +- packages/client/package.json | 6 +++--- packages/server/package.json | 8 ++++---- packages/string-templates/package.json | 2 +- packages/worker/package.json | 6 +++--- 9 files changed, 19 insertions(+), 19 deletions(-) diff --git a/lerna.json b/lerna.json index 25dba265c8..fa174a2714 100644 --- a/lerna.json +++ b/lerna.json @@ -1,5 +1,5 @@ { - "version": "0.9.190-alpha.2", + "version": "0.9.190-alpha.3", "npmClient": "yarn", "packages": [ "packages/*" diff --git a/packages/auth/package.json b/packages/auth/package.json index 7c7f554a0f..6c75aa38ad 100644 --- a/packages/auth/package.json +++ b/packages/auth/package.json @@ -1,6 +1,6 @@ { "name": "@budibase/auth", - "version": "0.9.190-alpha.2", + "version": "0.9.190-alpha.3", "description": "Authentication middlewares for budibase builder and apps", "main": "src/index.js", "author": "Budibase", diff --git a/packages/bbui/package.json b/packages/bbui/package.json index 5f229fbaa5..25e288497a 100644 --- a/packages/bbui/package.json +++ b/packages/bbui/package.json @@ -1,7 +1,7 @@ { "name": "@budibase/bbui", "description": "A UI solution used in the different Budibase projects.", - "version": "0.9.190-alpha.2", + "version": "0.9.190-alpha.3", "license": "MPL-2.0", "svelte": "src/index.js", "module": "dist/bbui.es.js", diff --git a/packages/builder/package.json b/packages/builder/package.json index d6eaf178aa..e8ca02c430 100644 --- a/packages/builder/package.json +++ b/packages/builder/package.json @@ -1,6 +1,6 @@ { "name": "@budibase/builder", - "version": "0.9.190-alpha.2", + "version": "0.9.190-alpha.3", "license": "GPL-3.0", "private": true, "scripts": { @@ -65,10 +65,10 @@ } }, "dependencies": { - "@budibase/bbui": "^0.9.190-alpha.2", - "@budibase/client": "^0.9.190-alpha.2", + "@budibase/bbui": "^0.9.190-alpha.3", + "@budibase/client": "^0.9.190-alpha.3", "@budibase/colorpicker": "1.1.2", - "@budibase/string-templates": "^0.9.190-alpha.2", + "@budibase/string-templates": "^0.9.190-alpha.3", "@sentry/browser": "5.19.1", "@spectrum-css/page": "^3.0.1", "@spectrum-css/vars": "^3.0.1", diff --git a/packages/cli/package.json b/packages/cli/package.json index 922c99c4ca..ec257b3536 100644 --- a/packages/cli/package.json +++ b/packages/cli/package.json @@ -1,6 +1,6 @@ { "name": "@budibase/cli", - "version": "0.9.190-alpha.2", + "version": "0.9.190-alpha.3", "description": "Budibase CLI, for developers, self hosting and migrations.", "main": "src/index.js", "bin": { diff --git a/packages/client/package.json b/packages/client/package.json index dd4da10914..7f1dba1953 100644 --- a/packages/client/package.json +++ b/packages/client/package.json @@ -1,6 +1,6 @@ { "name": "@budibase/client", - "version": "0.9.190-alpha.2", + "version": "0.9.190-alpha.3", "license": "MPL-2.0", "module": "dist/budibase-client.js", "main": "dist/budibase-client.js", @@ -19,9 +19,9 @@ "dev:builder": "rollup -cw" }, "dependencies": { - "@budibase/bbui": "^0.9.190-alpha.2", + "@budibase/bbui": "^0.9.190-alpha.3", "@budibase/standard-components": "^0.9.139", - "@budibase/string-templates": "^0.9.190-alpha.2", + "@budibase/string-templates": "^0.9.190-alpha.3", "regexparam": "^1.3.0", "shortid": "^2.2.15", "svelte-spa-router": "^3.0.5" diff --git a/packages/server/package.json b/packages/server/package.json index 70bd181519..0608f86bcb 100644 --- a/packages/server/package.json +++ b/packages/server/package.json @@ -1,7 +1,7 @@ { "name": "@budibase/server", "email": "hi@budibase.com", - "version": "0.9.190-alpha.2", + "version": "0.9.190-alpha.3", "description": "Budibase Web Server", "main": "src/index.js", "repository": { @@ -68,9 +68,9 @@ "author": "Budibase", "license": "GPL-3.0", "dependencies": { - "@budibase/auth": "^0.9.190-alpha.2", - "@budibase/client": "^0.9.190-alpha.2", - "@budibase/string-templates": "^0.9.190-alpha.2", + "@budibase/auth": "^0.9.190-alpha.3", + "@budibase/client": "^0.9.190-alpha.3", + "@budibase/string-templates": "^0.9.190-alpha.3", "@bull-board/api": "^3.7.0", "@bull-board/koa": "^3.7.0", "@elastic/elasticsearch": "7.10.0", diff --git a/packages/string-templates/package.json b/packages/string-templates/package.json index 78bd352670..378b2ea0e6 100644 --- a/packages/string-templates/package.json +++ b/packages/string-templates/package.json @@ -1,6 +1,6 @@ { "name": "@budibase/string-templates", - "version": "0.9.190-alpha.2", + "version": "0.9.190-alpha.3", "description": "Handlebars wrapper for Budibase templating.", "main": "src/index.cjs", "module": "dist/bundle.mjs", diff --git a/packages/worker/package.json b/packages/worker/package.json index 05fcb99c71..858a144a76 100644 --- a/packages/worker/package.json +++ b/packages/worker/package.json @@ -1,7 +1,7 @@ { "name": "@budibase/worker", "email": "hi@budibase.com", - "version": "0.9.190-alpha.2", + "version": "0.9.190-alpha.3", "description": "Budibase background service", "main": "src/index.js", "repository": { @@ -29,8 +29,8 @@ "author": "Budibase", "license": "GPL-3.0", "dependencies": { - "@budibase/auth": "^0.9.190-alpha.2", - "@budibase/string-templates": "^0.9.190-alpha.2", + "@budibase/auth": "^0.9.190-alpha.3", + "@budibase/string-templates": "^0.9.190-alpha.3", "@koa/router": "^8.0.0", "@sentry/node": "^6.0.0", "@techpass/passport-openidconnect": "^0.3.0", From a99bf1bba3bf1dae6a33620db964dab0fccb0442 Mon Sep 17 00:00:00 2001 From: mike12345567 Date: Thu, 25 Nov 2021 18:13:14 +0000 Subject: [PATCH 018/175] Updating scripts to allow opening in the browser when generated. --- package.json | 1 + packages/server/package.json | 3 ++- packages/server/scripts/docs/generate.js | 7 ++++++- packages/server/yarn.lock | 22 ++++++++++++++-------- 4 files changed, 23 insertions(+), 10 deletions(-) diff --git a/package.json b/package.json index f863f3f440..e0b567ce59 100644 --- a/package.json +++ b/package.json @@ -47,6 +47,7 @@ "build:docker:selfhost": "lerna run build:docker && cd hosting/scripts/linux/ && ./release-to-docker-hub.sh latest && cd -", "build:docker:develop": "node scripts/pinVersions && lerna run build:docker && cd hosting/scripts/linux/ && ./release-to-docker-hub.sh develop && cd -", "build:docker:airgap": "node hosting/scripts/airgapped/airgappedDockerBuild", + "build:docs": "lerna run build:docs", "release:helm": "./scripts/release_helm_chart.sh", "env:multi:enable": "lerna run env:multi:enable", "env:multi:disable": "lerna run env:multi:disable", diff --git a/packages/server/package.json b/packages/server/package.json index 7712c7c748..bc6de5c92f 100644 --- a/packages/server/package.json +++ b/packages/server/package.json @@ -15,6 +15,7 @@ "test:watch": "jest --watch", "predocker": "copyfiles -f ../client/dist/budibase-client.js ../client/manifest.json client", "build:docker": "yarn run predocker && docker build . -t app-service --label version=$BUDIBASE_RELEASE_VERSION", + "build:docs": "node ./scripts/docs/generate.js open", "run:docker": "node dist/index.js", "dev:stack:up": "node scripts/dev/manage.js up", "dev:stack:down": "node scripts/dev/manage.js down", @@ -106,7 +107,7 @@ "mssql": "6.2.3", "mysql2": "^2.3.1", "node-fetch": "2.6.0", - "open": "7.3.0", + "open": "^8.4.0", "pg": "8.5.1", "pino-pretty": "4.0.0", "posthog-node": "^1.1.4", diff --git a/packages/server/scripts/docs/generate.js b/packages/server/scripts/docs/generate.js index 3006e6cca6..8465f9afd6 100644 --- a/packages/server/scripts/docs/generate.js +++ b/packages/server/scripts/docs/generate.js @@ -2,6 +2,7 @@ const fs = require("fs") const { join } = require("path") const { createDoc } = require("apidoc") const packageJson = require("../../package.json") +const open = require("open") const config = { name: "Budibase API", @@ -10,6 +11,7 @@ const config = { title: "Budibase app service API", } +const shouldOpen = process.argv[2] const disallowed = [] function filter(parsedRouteFiles) { @@ -25,7 +27,7 @@ function filter(parsedRouteFiles) { } } -function generate() { +async function generate() { // start by writing a config file const configPath = join(__dirname, "config.json") fs.writeFileSync(configPath, JSON.stringify(config)) @@ -52,6 +54,9 @@ function generate() { } // delete the temporary config file fs.unlinkSync(configPath) + if (shouldOpen === "open") { + await open(join(assetsPath, "index.html"), { wait: false }) + } } generate() diff --git a/packages/server/yarn.lock b/packages/server/yarn.lock index 1686e38a40..32eabd7c4c 100644 --- a/packages/server/yarn.lock +++ b/packages/server/yarn.lock @@ -4529,6 +4529,11 @@ deferred-leveldown@~5.3.0: abstract-leveldown "~6.2.1" inherits "^2.0.3" +define-lazy-prop@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/define-lazy-prop/-/define-lazy-prop-2.0.0.tgz#3f7ae421129bcaaac9bc74905c98a0009ec9ee7f" + integrity sha512-Ds09qNh8yw3khSjiJjiUInaGX9xlqZDY7JVryGxdxV7NPeuqQfplOpQ66yJFZut3jLa5zOwkXw1g9EI2uKh4Og== + define-properties@^1.1.3: version "1.1.3" resolved "https://registry.yarnpkg.com/define-properties/-/define-properties-1.1.3.tgz#cf88da6cbee26fe6db7094f61d870cbd84cee9f1" @@ -6698,7 +6703,7 @@ is-descriptor@^1.0.0, is-descriptor@^1.0.2: is-data-descriptor "^1.0.0" kind-of "^6.0.2" -is-docker@^2.0.0: +is-docker@^2.0.0, is-docker@^2.1.1: version "2.2.1" resolved "https://registry.yarnpkg.com/is-docker/-/is-docker-2.2.1.tgz#33eeabe23cfe86f14bde4408a02c0cfb853acdaa" integrity sha512-F+i2BKsFrH66iaUFc0woD8sLy8getkwTwtOBjvs56Cx4CgJDeKQeqfz8wAYiSb8JOprWhHH5p77PbmYCvvUuXQ== @@ -6952,7 +6957,7 @@ is-windows@^1.0.2: resolved "https://registry.yarnpkg.com/is-windows/-/is-windows-1.0.2.tgz#d1850eb9791ecd18e6182ce12a30f396634bb19d" integrity sha512-eXK1UInq2bPmjyX6e3VHIzMLobc4J94i4AWn+Hpq3OU5KkrRC96OAcR3PRJ/pGu6m8TRnBHP9dkXQVsT/COVIA== -is-wsl@^2.1.1: +is-wsl@^2.2.0: version "2.2.0" resolved "https://registry.yarnpkg.com/is-wsl/-/is-wsl-2.2.0.tgz#74a4c76e77ca9fd3f932f290c17ea326cd157271" integrity sha512-fKzAra0rGJUUBwGBgNkHZuToZcn+TtXHpeCgmkMJMMYx1sQDYaCSyjJBSCa2nH1DGm7s3n1oBnohoVTBaN7Lww== @@ -9429,13 +9434,14 @@ only@~0.0.2: resolved "https://registry.yarnpkg.com/only/-/only-0.0.2.tgz#2afde84d03e50b9a8edc444e30610a70295edfb4" integrity sha1-Kv3oTQPlC5qO3EROMGEKcCle37Q= -open@7.3.0: - version "7.3.0" - resolved "https://registry.yarnpkg.com/open/-/open-7.3.0.tgz#45461fdee46444f3645b6e14eb3ca94b82e1be69" - integrity sha512-mgLwQIx2F/ye9SmbrUkurZCnkoXyXyu9EbHtJZrICjVAJfyMArdHp3KkixGdZx1ZHFPNIwl0DDM1dFFqXbTLZw== +open@^8.4.0: + version "8.4.0" + resolved "https://registry.yarnpkg.com/open/-/open-8.4.0.tgz#345321ae18f8138f82565a910fdc6b39e8c244f8" + integrity sha512-XgFPPM+B28FtCCgSb9I+s9szOC1vZRSwgWsRUA5ylIxRTgKozqjOCrVOqGsYABPYK5qnfqClxZTFBa8PKt2v6Q== dependencies: - is-docker "^2.0.0" - is-wsl "^2.1.1" + define-lazy-prop "^2.0.0" + is-docker "^2.1.1" + is-wsl "^2.2.0" opencollective-postinstall@^2.0.0: version "2.0.3" From 2945b15ee346cc431ba5cf3919c70b4ca3338218 Mon Sep 17 00:00:00 2001 From: Peter Clement Date: Thu, 25 Nov 2021 21:48:07 +0000 Subject: [PATCH 019/175] update cypress to account for no default screen --- packages/builder/cypress/support/commands.js | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/packages/builder/cypress/support/commands.js b/packages/builder/cypress/support/commands.js index 1b1cc0c2b0..0870ceac7a 100644 --- a/packages/builder/cypress/support/commands.js +++ b/packages/builder/cypress/support/commands.js @@ -182,7 +182,9 @@ Cypress.Commands.add("navigateToFrontend", () => { cy.wait(1000) cy.contains("Design").click() cy.get(".spectrum-Search").type("/") - cy.get(".nav-item").contains("Home").click() + cy.createScreen("home", "home") + cy.addComponent("Elements", "Headline") + cy.get(".nav-item").contains("home").click() }) Cypress.Commands.add("createScreen", (screenName, route) => { From fec86890692ea9fd3045498045920d00f59fdaf2 Mon Sep 17 00:00:00 2001 From: Peter Clement Date: Thu, 25 Nov 2021 21:57:27 +0000 Subject: [PATCH 020/175] change colour of autoscreen selection --- .../src/components/design/NavigationPanel/NewScreenModal.svelte | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/packages/builder/src/components/design/NavigationPanel/NewScreenModal.svelte b/packages/builder/src/components/design/NavigationPanel/NewScreenModal.svelte index 57a40b9081..fbd1fc9256 100644 --- a/packages/builder/src/components/design/NavigationPanel/NewScreenModal.svelte +++ b/packages/builder/src/components/design/NavigationPanel/NewScreenModal.svelte @@ -132,7 +132,7 @@ padding: var(--spectrum-alias-item-padding-s); background: var(--spectrum-alias-background-color-primary); transition: 0.3s all; - border: 1px solid #e7e7e7; + border: 1px solid var(--spectrum-global-color-gray-300); border-radius: 4px; box-sizing: border-box; border-width: 1px; From 186ef7a92298632977f41510b18dc382fd23c996 Mon Sep 17 00:00:00 2001 From: Budibase Staging Release Bot <> Date: Thu, 25 Nov 2021 22:21:36 +0000 Subject: [PATCH 021/175] v0.9.190-alpha.4 --- lerna.json | 2 +- packages/auth/package.json | 2 +- packages/bbui/package.json | 2 +- packages/builder/package.json | 8 ++++---- packages/cli/package.json | 2 +- packages/client/package.json | 6 +++--- packages/server/package.json | 8 ++++---- packages/string-templates/package.json | 2 +- packages/worker/package.json | 6 +++--- 9 files changed, 19 insertions(+), 19 deletions(-) diff --git a/lerna.json b/lerna.json index fa174a2714..e1257c1594 100644 --- a/lerna.json +++ b/lerna.json @@ -1,5 +1,5 @@ { - "version": "0.9.190-alpha.3", + "version": "0.9.190-alpha.4", "npmClient": "yarn", "packages": [ "packages/*" diff --git a/packages/auth/package.json b/packages/auth/package.json index 6c75aa38ad..b9fde80a3b 100644 --- a/packages/auth/package.json +++ b/packages/auth/package.json @@ -1,6 +1,6 @@ { "name": "@budibase/auth", - "version": "0.9.190-alpha.3", + "version": "0.9.190-alpha.4", "description": "Authentication middlewares for budibase builder and apps", "main": "src/index.js", "author": "Budibase", diff --git a/packages/bbui/package.json b/packages/bbui/package.json index 25e288497a..fd3d85654e 100644 --- a/packages/bbui/package.json +++ b/packages/bbui/package.json @@ -1,7 +1,7 @@ { "name": "@budibase/bbui", "description": "A UI solution used in the different Budibase projects.", - "version": "0.9.190-alpha.3", + "version": "0.9.190-alpha.4", "license": "MPL-2.0", "svelte": "src/index.js", "module": "dist/bbui.es.js", diff --git a/packages/builder/package.json b/packages/builder/package.json index e8ca02c430..c1775d9123 100644 --- a/packages/builder/package.json +++ b/packages/builder/package.json @@ -1,6 +1,6 @@ { "name": "@budibase/builder", - "version": "0.9.190-alpha.3", + "version": "0.9.190-alpha.4", "license": "GPL-3.0", "private": true, "scripts": { @@ -65,10 +65,10 @@ } }, "dependencies": { - "@budibase/bbui": "^0.9.190-alpha.3", - "@budibase/client": "^0.9.190-alpha.3", + "@budibase/bbui": "^0.9.190-alpha.4", + "@budibase/client": "^0.9.190-alpha.4", "@budibase/colorpicker": "1.1.2", - "@budibase/string-templates": "^0.9.190-alpha.3", + "@budibase/string-templates": "^0.9.190-alpha.4", "@sentry/browser": "5.19.1", "@spectrum-css/page": "^3.0.1", "@spectrum-css/vars": "^3.0.1", diff --git a/packages/cli/package.json b/packages/cli/package.json index ec257b3536..8865607a33 100644 --- a/packages/cli/package.json +++ b/packages/cli/package.json @@ -1,6 +1,6 @@ { "name": "@budibase/cli", - "version": "0.9.190-alpha.3", + "version": "0.9.190-alpha.4", "description": "Budibase CLI, for developers, self hosting and migrations.", "main": "src/index.js", "bin": { diff --git a/packages/client/package.json b/packages/client/package.json index 7f1dba1953..95c8a35871 100644 --- a/packages/client/package.json +++ b/packages/client/package.json @@ -1,6 +1,6 @@ { "name": "@budibase/client", - "version": "0.9.190-alpha.3", + "version": "0.9.190-alpha.4", "license": "MPL-2.0", "module": "dist/budibase-client.js", "main": "dist/budibase-client.js", @@ -19,9 +19,9 @@ "dev:builder": "rollup -cw" }, "dependencies": { - "@budibase/bbui": "^0.9.190-alpha.3", + "@budibase/bbui": "^0.9.190-alpha.4", "@budibase/standard-components": "^0.9.139", - "@budibase/string-templates": "^0.9.190-alpha.3", + "@budibase/string-templates": "^0.9.190-alpha.4", "regexparam": "^1.3.0", "shortid": "^2.2.15", "svelte-spa-router": "^3.0.5" diff --git a/packages/server/package.json b/packages/server/package.json index 0608f86bcb..104426202d 100644 --- a/packages/server/package.json +++ b/packages/server/package.json @@ -1,7 +1,7 @@ { "name": "@budibase/server", "email": "hi@budibase.com", - "version": "0.9.190-alpha.3", + "version": "0.9.190-alpha.4", "description": "Budibase Web Server", "main": "src/index.js", "repository": { @@ -68,9 +68,9 @@ "author": "Budibase", "license": "GPL-3.0", "dependencies": { - "@budibase/auth": "^0.9.190-alpha.3", - "@budibase/client": "^0.9.190-alpha.3", - "@budibase/string-templates": "^0.9.190-alpha.3", + "@budibase/auth": "^0.9.190-alpha.4", + "@budibase/client": "^0.9.190-alpha.4", + "@budibase/string-templates": "^0.9.190-alpha.4", "@bull-board/api": "^3.7.0", "@bull-board/koa": "^3.7.0", "@elastic/elasticsearch": "7.10.0", diff --git a/packages/string-templates/package.json b/packages/string-templates/package.json index 378b2ea0e6..8bbd124647 100644 --- a/packages/string-templates/package.json +++ b/packages/string-templates/package.json @@ -1,6 +1,6 @@ { "name": "@budibase/string-templates", - "version": "0.9.190-alpha.3", + "version": "0.9.190-alpha.4", "description": "Handlebars wrapper for Budibase templating.", "main": "src/index.cjs", "module": "dist/bundle.mjs", diff --git a/packages/worker/package.json b/packages/worker/package.json index 858a144a76..6db14dccc9 100644 --- a/packages/worker/package.json +++ b/packages/worker/package.json @@ -1,7 +1,7 @@ { "name": "@budibase/worker", "email": "hi@budibase.com", - "version": "0.9.190-alpha.3", + "version": "0.9.190-alpha.4", "description": "Budibase background service", "main": "src/index.js", "repository": { @@ -29,8 +29,8 @@ "author": "Budibase", "license": "GPL-3.0", "dependencies": { - "@budibase/auth": "^0.9.190-alpha.3", - "@budibase/string-templates": "^0.9.190-alpha.3", + "@budibase/auth": "^0.9.190-alpha.4", + "@budibase/string-templates": "^0.9.190-alpha.4", "@koa/router": "^8.0.0", "@sentry/node": "^6.0.0", "@techpass/passport-openidconnect": "^0.3.0", From eec02321f5b7ab680ff03f1ee26e8ce181983069 Mon Sep 17 00:00:00 2001 From: Martin McKeaveney Date: Fri, 26 Nov 2021 11:42:37 +0100 Subject: [PATCH 022/175] fix cypress tests --- packages/builder/cypress/integration/createAutomation.spec.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/packages/builder/cypress/integration/createAutomation.spec.js b/packages/builder/cypress/integration/createAutomation.spec.js index afd405d5ab..6ff013cd7a 100644 --- a/packages/builder/cypress/integration/createAutomation.spec.js +++ b/packages/builder/cypress/integration/createAutomation.spec.js @@ -12,7 +12,7 @@ context("Create a automation", () => { cy.get("[data-cy='new-screen'] > .spectrum-Icon").click() cy.get(".modal-inner-wrapper").within(() => { cy.get("input").type("Add Row") - cy.contains("Row Created").click() + cy.contains("Row Created").click({ force: true }) cy.wait(500) cy.get(".spectrum-Button--cta").click() }) From 688d461fcc7af0dea3989e34f1858400fa3eb694 Mon Sep 17 00:00:00 2001 From: Budibase Staging Release Bot <> Date: Fri, 26 Nov 2021 11:08:02 +0000 Subject: [PATCH 023/175] v0.9.190-alpha.5 --- lerna.json | 2 +- packages/auth/package.json | 2 +- packages/bbui/package.json | 2 +- packages/builder/package.json | 8 ++++---- packages/cli/package.json | 2 +- packages/client/package.json | 6 +++--- packages/server/package.json | 8 ++++---- packages/string-templates/package.json | 2 +- packages/worker/package.json | 6 +++--- 9 files changed, 19 insertions(+), 19 deletions(-) diff --git a/lerna.json b/lerna.json index e1257c1594..a1485d42ca 100644 --- a/lerna.json +++ b/lerna.json @@ -1,5 +1,5 @@ { - "version": "0.9.190-alpha.4", + "version": "0.9.190-alpha.5", "npmClient": "yarn", "packages": [ "packages/*" diff --git a/packages/auth/package.json b/packages/auth/package.json index b9fde80a3b..b56fa7a727 100644 --- a/packages/auth/package.json +++ b/packages/auth/package.json @@ -1,6 +1,6 @@ { "name": "@budibase/auth", - "version": "0.9.190-alpha.4", + "version": "0.9.190-alpha.5", "description": "Authentication middlewares for budibase builder and apps", "main": "src/index.js", "author": "Budibase", diff --git a/packages/bbui/package.json b/packages/bbui/package.json index fd3d85654e..fcab4feb97 100644 --- a/packages/bbui/package.json +++ b/packages/bbui/package.json @@ -1,7 +1,7 @@ { "name": "@budibase/bbui", "description": "A UI solution used in the different Budibase projects.", - "version": "0.9.190-alpha.4", + "version": "0.9.190-alpha.5", "license": "MPL-2.0", "svelte": "src/index.js", "module": "dist/bbui.es.js", diff --git a/packages/builder/package.json b/packages/builder/package.json index c1775d9123..faa8d5e34a 100644 --- a/packages/builder/package.json +++ b/packages/builder/package.json @@ -1,6 +1,6 @@ { "name": "@budibase/builder", - "version": "0.9.190-alpha.4", + "version": "0.9.190-alpha.5", "license": "GPL-3.0", "private": true, "scripts": { @@ -65,10 +65,10 @@ } }, "dependencies": { - "@budibase/bbui": "^0.9.190-alpha.4", - "@budibase/client": "^0.9.190-alpha.4", + "@budibase/bbui": "^0.9.190-alpha.5", + "@budibase/client": "^0.9.190-alpha.5", "@budibase/colorpicker": "1.1.2", - "@budibase/string-templates": "^0.9.190-alpha.4", + "@budibase/string-templates": "^0.9.190-alpha.5", "@sentry/browser": "5.19.1", "@spectrum-css/page": "^3.0.1", "@spectrum-css/vars": "^3.0.1", diff --git a/packages/cli/package.json b/packages/cli/package.json index 8865607a33..f902db07bb 100644 --- a/packages/cli/package.json +++ b/packages/cli/package.json @@ -1,6 +1,6 @@ { "name": "@budibase/cli", - "version": "0.9.190-alpha.4", + "version": "0.9.190-alpha.5", "description": "Budibase CLI, for developers, self hosting and migrations.", "main": "src/index.js", "bin": { diff --git a/packages/client/package.json b/packages/client/package.json index 95c8a35871..bbf5118620 100644 --- a/packages/client/package.json +++ b/packages/client/package.json @@ -1,6 +1,6 @@ { "name": "@budibase/client", - "version": "0.9.190-alpha.4", + "version": "0.9.190-alpha.5", "license": "MPL-2.0", "module": "dist/budibase-client.js", "main": "dist/budibase-client.js", @@ -19,9 +19,9 @@ "dev:builder": "rollup -cw" }, "dependencies": { - "@budibase/bbui": "^0.9.190-alpha.4", + "@budibase/bbui": "^0.9.190-alpha.5", "@budibase/standard-components": "^0.9.139", - "@budibase/string-templates": "^0.9.190-alpha.4", + "@budibase/string-templates": "^0.9.190-alpha.5", "regexparam": "^1.3.0", "shortid": "^2.2.15", "svelte-spa-router": "^3.0.5" diff --git a/packages/server/package.json b/packages/server/package.json index 104426202d..cc76cc6c3d 100644 --- a/packages/server/package.json +++ b/packages/server/package.json @@ -1,7 +1,7 @@ { "name": "@budibase/server", "email": "hi@budibase.com", - "version": "0.9.190-alpha.4", + "version": "0.9.190-alpha.5", "description": "Budibase Web Server", "main": "src/index.js", "repository": { @@ -68,9 +68,9 @@ "author": "Budibase", "license": "GPL-3.0", "dependencies": { - "@budibase/auth": "^0.9.190-alpha.4", - "@budibase/client": "^0.9.190-alpha.4", - "@budibase/string-templates": "^0.9.190-alpha.4", + "@budibase/auth": "^0.9.190-alpha.5", + "@budibase/client": "^0.9.190-alpha.5", + "@budibase/string-templates": "^0.9.190-alpha.5", "@bull-board/api": "^3.7.0", "@bull-board/koa": "^3.7.0", "@elastic/elasticsearch": "7.10.0", diff --git a/packages/string-templates/package.json b/packages/string-templates/package.json index 8bbd124647..4a38f95dfe 100644 --- a/packages/string-templates/package.json +++ b/packages/string-templates/package.json @@ -1,6 +1,6 @@ { "name": "@budibase/string-templates", - "version": "0.9.190-alpha.4", + "version": "0.9.190-alpha.5", "description": "Handlebars wrapper for Budibase templating.", "main": "src/index.cjs", "module": "dist/bundle.mjs", diff --git a/packages/worker/package.json b/packages/worker/package.json index 6db14dccc9..89d0f1c4ec 100644 --- a/packages/worker/package.json +++ b/packages/worker/package.json @@ -1,7 +1,7 @@ { "name": "@budibase/worker", "email": "hi@budibase.com", - "version": "0.9.190-alpha.4", + "version": "0.9.190-alpha.5", "description": "Budibase background service", "main": "src/index.js", "repository": { @@ -29,8 +29,8 @@ "author": "Budibase", "license": "GPL-3.0", "dependencies": { - "@budibase/auth": "^0.9.190-alpha.4", - "@budibase/string-templates": "^0.9.190-alpha.4", + "@budibase/auth": "^0.9.190-alpha.5", + "@budibase/string-templates": "^0.9.190-alpha.5", "@koa/router": "^8.0.0", "@sentry/node": "^6.0.0", "@techpass/passport-openidconnect": "^0.3.0", From 78de4719482c86e7d4178b9445eb82acd16cc5d1 Mon Sep 17 00:00:00 2001 From: Budibase Staging Release Bot <> Date: Fri, 26 Nov 2021 11:36:30 +0000 Subject: [PATCH 024/175] v0.9.190-alpha.6 --- lerna.json | 2 +- packages/auth/package.json | 2 +- packages/bbui/package.json | 2 +- packages/builder/package.json | 8 ++++---- packages/cli/package.json | 2 +- packages/client/package.json | 6 +++--- packages/server/package.json | 8 ++++---- packages/string-templates/package.json | 2 +- packages/worker/package.json | 6 +++--- 9 files changed, 19 insertions(+), 19 deletions(-) diff --git a/lerna.json b/lerna.json index a1485d42ca..99e26808d2 100644 --- a/lerna.json +++ b/lerna.json @@ -1,5 +1,5 @@ { - "version": "0.9.190-alpha.5", + "version": "0.9.190-alpha.6", "npmClient": "yarn", "packages": [ "packages/*" diff --git a/packages/auth/package.json b/packages/auth/package.json index b56fa7a727..a0cb7f7e21 100644 --- a/packages/auth/package.json +++ b/packages/auth/package.json @@ -1,6 +1,6 @@ { "name": "@budibase/auth", - "version": "0.9.190-alpha.5", + "version": "0.9.190-alpha.6", "description": "Authentication middlewares for budibase builder and apps", "main": "src/index.js", "author": "Budibase", diff --git a/packages/bbui/package.json b/packages/bbui/package.json index fcab4feb97..aff5c126e3 100644 --- a/packages/bbui/package.json +++ b/packages/bbui/package.json @@ -1,7 +1,7 @@ { "name": "@budibase/bbui", "description": "A UI solution used in the different Budibase projects.", - "version": "0.9.190-alpha.5", + "version": "0.9.190-alpha.6", "license": "MPL-2.0", "svelte": "src/index.js", "module": "dist/bbui.es.js", diff --git a/packages/builder/package.json b/packages/builder/package.json index faa8d5e34a..60a0c516cc 100644 --- a/packages/builder/package.json +++ b/packages/builder/package.json @@ -1,6 +1,6 @@ { "name": "@budibase/builder", - "version": "0.9.190-alpha.5", + "version": "0.9.190-alpha.6", "license": "GPL-3.0", "private": true, "scripts": { @@ -65,10 +65,10 @@ } }, "dependencies": { - "@budibase/bbui": "^0.9.190-alpha.5", - "@budibase/client": "^0.9.190-alpha.5", + "@budibase/bbui": "^0.9.190-alpha.6", + "@budibase/client": "^0.9.190-alpha.6", "@budibase/colorpicker": "1.1.2", - "@budibase/string-templates": "^0.9.190-alpha.5", + "@budibase/string-templates": "^0.9.190-alpha.6", "@sentry/browser": "5.19.1", "@spectrum-css/page": "^3.0.1", "@spectrum-css/vars": "^3.0.1", diff --git a/packages/cli/package.json b/packages/cli/package.json index f902db07bb..d12cceeddb 100644 --- a/packages/cli/package.json +++ b/packages/cli/package.json @@ -1,6 +1,6 @@ { "name": "@budibase/cli", - "version": "0.9.190-alpha.5", + "version": "0.9.190-alpha.6", "description": "Budibase CLI, for developers, self hosting and migrations.", "main": "src/index.js", "bin": { diff --git a/packages/client/package.json b/packages/client/package.json index bbf5118620..48b1129a96 100644 --- a/packages/client/package.json +++ b/packages/client/package.json @@ -1,6 +1,6 @@ { "name": "@budibase/client", - "version": "0.9.190-alpha.5", + "version": "0.9.190-alpha.6", "license": "MPL-2.0", "module": "dist/budibase-client.js", "main": "dist/budibase-client.js", @@ -19,9 +19,9 @@ "dev:builder": "rollup -cw" }, "dependencies": { - "@budibase/bbui": "^0.9.190-alpha.5", + "@budibase/bbui": "^0.9.190-alpha.6", "@budibase/standard-components": "^0.9.139", - "@budibase/string-templates": "^0.9.190-alpha.5", + "@budibase/string-templates": "^0.9.190-alpha.6", "regexparam": "^1.3.0", "shortid": "^2.2.15", "svelte-spa-router": "^3.0.5" diff --git a/packages/server/package.json b/packages/server/package.json index cc76cc6c3d..eb09d84994 100644 --- a/packages/server/package.json +++ b/packages/server/package.json @@ -1,7 +1,7 @@ { "name": "@budibase/server", "email": "hi@budibase.com", - "version": "0.9.190-alpha.5", + "version": "0.9.190-alpha.6", "description": "Budibase Web Server", "main": "src/index.js", "repository": { @@ -68,9 +68,9 @@ "author": "Budibase", "license": "GPL-3.0", "dependencies": { - "@budibase/auth": "^0.9.190-alpha.5", - "@budibase/client": "^0.9.190-alpha.5", - "@budibase/string-templates": "^0.9.190-alpha.5", + "@budibase/auth": "^0.9.190-alpha.6", + "@budibase/client": "^0.9.190-alpha.6", + "@budibase/string-templates": "^0.9.190-alpha.6", "@bull-board/api": "^3.7.0", "@bull-board/koa": "^3.7.0", "@elastic/elasticsearch": "7.10.0", diff --git a/packages/string-templates/package.json b/packages/string-templates/package.json index 4a38f95dfe..361984defa 100644 --- a/packages/string-templates/package.json +++ b/packages/string-templates/package.json @@ -1,6 +1,6 @@ { "name": "@budibase/string-templates", - "version": "0.9.190-alpha.5", + "version": "0.9.190-alpha.6", "description": "Handlebars wrapper for Budibase templating.", "main": "src/index.cjs", "module": "dist/bundle.mjs", diff --git a/packages/worker/package.json b/packages/worker/package.json index 89d0f1c4ec..c5dfa4883b 100644 --- a/packages/worker/package.json +++ b/packages/worker/package.json @@ -1,7 +1,7 @@ { "name": "@budibase/worker", "email": "hi@budibase.com", - "version": "0.9.190-alpha.5", + "version": "0.9.190-alpha.6", "description": "Budibase background service", "main": "src/index.js", "repository": { @@ -29,8 +29,8 @@ "author": "Budibase", "license": "GPL-3.0", "dependencies": { - "@budibase/auth": "^0.9.190-alpha.5", - "@budibase/string-templates": "^0.9.190-alpha.5", + "@budibase/auth": "^0.9.190-alpha.6", + "@budibase/string-templates": "^0.9.190-alpha.6", "@koa/router": "^8.0.0", "@sentry/node": "^6.0.0", "@techpass/passport-openidconnect": "^0.3.0", From 4697b21ef18680d389c465d3b6dfa401e2bafe98 Mon Sep 17 00:00:00 2001 From: mike12345567 Date: Fri, 26 Nov 2021 14:13:53 +0000 Subject: [PATCH 025/175] Updating docs for tables, adding a swagger generation tool and a README describing how to use it. --- packages/server/package.json | 1 + packages/server/scripts/docs/README.md | 31 +++ packages/server/scripts/docs/generate.js | 28 +- packages/server/scripts/docs/toSwagger.js | 320 ++++++++++++++++++++++ packages/server/src/api/routes/row.js | 38 +-- packages/server/src/api/routes/table.js | 153 ++++++++++- 6 files changed, 540 insertions(+), 31 deletions(-) create mode 100644 packages/server/scripts/docs/README.md create mode 100644 packages/server/scripts/docs/toSwagger.js diff --git a/packages/server/package.json b/packages/server/package.json index bc6de5c92f..2576d159e1 100644 --- a/packages/server/package.json +++ b/packages/server/package.json @@ -146,6 +146,7 @@ "eslint": "^6.8.0", "jest": "^27.0.5", "nodemon": "^2.0.4", + "path-to-regexp": "^6.2.0", "prettier": "^2.3.1", "rimraf": "^3.0.2", "supertest": "^4.0.2", diff --git a/packages/server/scripts/docs/README.md b/packages/server/scripts/docs/README.md new file mode 100644 index 0000000000..f1075754d3 --- /dev/null +++ b/packages/server/scripts/docs/README.md @@ -0,0 +1,31 @@ +### Documentation + +This directory contains the scripts required to generate the APIDoc based documentation. +You can find the docs about comment structure at the [APIDocs page](https://apidocjs.com/). + +In general most API endpoints will look like: +```js + /** + * @api {post} /api/:param/url Give it a name + * @apiName Give it a name + * @apiGroup group + * @apiPermission permission + * @apiDescription Describe what the endpoint does, any special cases the user + * should be aware of. + * + * @apiParam {string} param describe a URL parameter. + * + * @apiParam (Body) input describe a field on the body. + * + * @apiSuccess {object} output describe the output. + */ +``` + +There are a few key points to note when writing API docs: +1. Don't use `@apiBody` - this isn't currently supported by our swagger converter. +2. Make sure to always have an `@api` definition at the start, which must always have the +HTTP verb, the endpoint URL and the name. +3. There are three ways you can specify parameters used as inputs for your endpoint, +`@apiParam` for a URL param, `@apiParam (Body)` for a field on the request body and `@apiParam (Query)` +for query string parameters. +4. The `@apiGroup` should be the same for all API Doc comments in a route file. \ No newline at end of file diff --git a/packages/server/scripts/docs/generate.js b/packages/server/scripts/docs/generate.js index 8465f9afd6..0d6d42fd32 100644 --- a/packages/server/scripts/docs/generate.js +++ b/packages/server/scripts/docs/generate.js @@ -2,6 +2,7 @@ const fs = require("fs") const { join } = require("path") const { createDoc } = require("apidoc") const packageJson = require("../../package.json") +const toSwagger = require("./toSwagger") const open = require("open") const config = { @@ -37,7 +38,7 @@ async function generate() { if (!fs.existsSync(assetsPath)) { fs.mkdirSync(assetsPath, { recursive: true }) } - const doc = createDoc({ + const options = { src: [srcPath], dest: assetsPath, filters: { @@ -46,17 +47,28 @@ async function generate() { }, }, config: configPath, - }) + } + const doc = createDoc(options) if (typeof doc !== "boolean") { - console.log("Docs generated successfully.") + const swagger = toSwagger(JSON.parse(doc.data), JSON.parse(doc.project)) + fs.writeFileSync(join(assetsPath, "swagger.json"), JSON.stringify(swagger)) + fs.writeFileSync(join(assetsPath, "apidoc.json"), doc.data) + fs.writeFileSync(join(assetsPath, "project.json"), doc.project) + console.log( + `Docs generated successfully, find in ${assetsPath}, swagger.json, apidoc.json and project.json` + ) } else { - console.error("Unable to generate docs.") + throw "Unable to generate docs." } // delete the temporary config file fs.unlinkSync(configPath) - if (shouldOpen === "open") { - await open(join(assetsPath, "index.html"), { wait: false }) - } + setTimeout(async () => { + if (shouldOpen === "open") { + await open(join(assetsPath, "index.html"), { wait: false }) + } + }, 2000) } -generate() +generate().catch(err => { + console.error(err) +}) diff --git a/packages/server/scripts/docs/toSwagger.js b/packages/server/scripts/docs/toSwagger.js new file mode 100644 index 0000000000..c9680143fc --- /dev/null +++ b/packages/server/scripts/docs/toSwagger.js @@ -0,0 +1,320 @@ +let _ = require("lodash") +let { pathToRegexp } = require("path-to-regexp") + +/******************************************************** + * Based on: https://github.com/fsbahman/apidoc-swagger * + ********************************************************/ + +let swagger = { + swagger: "2.0", + info: {}, + paths: {}, + definitions: {}, +} + +function toSwagger(apidocJson, projectJson) { + swagger.info = addInfo(projectJson) + swagger.paths = extractPaths(apidocJson) + return swagger +} + +let tagsRegex = /(<([^>]+)>)/gi +// Removes

tags from text +function removeTags(text) { + return text ? text.replace(tagsRegex, "") : text +} + +function addInfo(projectJson) { + let info = {} + info["title"] = projectJson.title || projectJson.name + info["version"] = projectJson.version + info["description"] = projectJson.description + return info +} + +/** + * Extracts paths provided in json format + * post, patch, put request parameters are extracted in body + * get and delete are extracted to path parameters + * @param apidocJson + * @returns {{}} + */ +function extractPaths(apidocJson) { + let apiPaths = groupByUrl(apidocJson) + let paths = {} + for (let i = 0; i < apiPaths.length; i++) { + let verbs = apiPaths[i].verbs + let url = verbs[0].url + let pattern = pathToRegexp(url, null) + let matches = pattern.exec(url) + + // Surrounds URL parameters with curly brackets -> :email with {email} + let pathKeys = [] + for (let j = 1; j < matches.length; j++) { + let key = matches[j].substr(1) + url = url.replace(matches[j], "{" + key + "}") + pathKeys.push(key) + } + + for (let j = 0; j < verbs.length; j++) { + let verb = verbs[j] + let type = verb.type + + let obj = (paths[url] = paths[url] || {}) + + if (type === "post" || type === "patch" || type === "put") { + _.extend( + obj, + createPostPushPutOutput(verb, swagger.definitions, pathKeys) + ) + } else { + _.extend(obj, createGetDeleteOutput(verb, swagger.definitions)) + } + } + } + return paths +} + +function createPostPushPutOutput(verbs, definitions, pathKeys) { + let pathItemObject = {} + let verbDefinitionResult = createVerbDefinitions(verbs, definitions) + + let params = [] + let pathParams = createPathParameters(verbs, pathKeys) + pathParams = _.filter(pathParams, function (param) { + let hasKey = pathKeys.indexOf(param.name) !== -1 + return !(param.in === "path" && !hasKey) + }) + + params = params.concat(pathParams) + let required = + verbs.parameter && + verbs.parameter.fields && + verbs.parameter.fields.Parameter && + verbs.parameter.fields.Parameter.length > 0 + + params.push({ + in: "body", + name: "body", + description: removeTags(verbs.description), + required: required, + schema: { + $ref: "#/definitions/" + verbDefinitionResult.topLevelParametersRef, + }, + }) + + pathItemObject[verbs.type] = { + tags: [verbs.group], + summary: removeTags(verbs.description), + consumes: ["application/json"], + produces: ["application/json"], + parameters: params, + } + + if (verbDefinitionResult.topLevelSuccessRef) { + pathItemObject[verbs.type].responses = { + 200: { + description: "successful operation", + schema: { + type: verbDefinitionResult.topLevelSuccessRefType, + items: { + $ref: "#/definitions/" + verbDefinitionResult.topLevelSuccessRef, + }, + }, + }, + } + } + + return pathItemObject +} + +function createVerbDefinitions(verbs, definitions) { + let result = { + topLevelParametersRef: null, + topLevelSuccessRef: null, + topLevelSuccessRefType: null, + } + let defaultObjectName = verbs.name + + let fieldArrayResult = {} + if (verbs && verbs.parameter && verbs.parameter.fields) { + fieldArrayResult = createFieldArrayDefinitions( + verbs.parameter.fields.Parameter, + definitions, + verbs.name, + defaultObjectName + ) + result.topLevelParametersRef = fieldArrayResult.topLevelRef + } + + if (verbs && verbs.success && verbs.success.fields) { + fieldArrayResult = createFieldArrayDefinitions( + verbs.success.fields["Success 200"], + definitions, + verbs.name, + defaultObjectName + ) + result.topLevelSuccessRef = fieldArrayResult.topLevelRef + result.topLevelSuccessRefType = fieldArrayResult.topLevelRefType + } + + return result +} + +function createFieldArrayDefinitions( + fieldArray, + definitions, + topLevelRef, + defaultObjectName +) { + let result = { + topLevelRef: topLevelRef, + topLevelRefType: null, + } + + if (!fieldArray) { + return result + } + + for (let i = 0; i < fieldArray.length; i++) { + let parameter = fieldArray[i] + + let nestedName = createNestedName(parameter.field) + let objectName = nestedName.objectName + if (!objectName) { + objectName = defaultObjectName + } + let type = parameter.type + if (i === 0) { + result.topLevelRefType = type + if (parameter.type === "Object") { + objectName = nestedName.propertyName + nestedName.propertyName = null + } else if (parameter.type === "Array") { + objectName = nestedName.propertyName + nestedName.propertyName = null + result.topLevelRefType = "array" + } + result.topLevelRef = objectName + } + + definitions[objectName] = definitions[objectName] || { + properties: {}, + required: [], + } + + if (nestedName.propertyName) { + let prop = { + type: (parameter.type || "").toLowerCase(), + description: removeTags(parameter.description), + } + if (parameter.type === "Object") { + prop.$ref = "#/definitions/" + parameter.field + } + + let typeIndex = type.indexOf("[]") + if (typeIndex !== -1 && typeIndex === type.length - 2) { + prop.type = "array" + prop.items = { + type: type.slice(0, type.length - 2), + } + } + + definitions[objectName]["properties"][nestedName.propertyName] = prop + if (!parameter.optional) { + let arr = definitions[objectName]["required"] + if (arr.indexOf(nestedName.propertyName) === -1) { + arr.push(nestedName.propertyName) + } + } + } + } + + return result +} + +function createNestedName(field) { + let propertyName = field + let objectName + let propertyNames = field.split(".") + if (propertyNames && propertyNames.length > 1) { + propertyName = propertyNames[propertyNames.length - 1] + propertyNames.pop() + objectName = propertyNames.join(".") + } + + return { + propertyName: propertyName, + objectName: objectName, + } +} + +/** + * Generate get, delete method output + * @param verbs + * @param definitions + * @returns {{}} + */ +function createGetDeleteOutput(verbs, definitions) { + let pathItemObject = {} + verbs.type = verbs.type === "del" ? "delete" : verbs.type + + let verbDefinitionResult = createVerbDefinitions(verbs, definitions) + pathItemObject[verbs.type] = { + tags: [verbs.group], + summary: removeTags(verbs.description), + consumes: ["application/json"], + produces: ["application/json"], + parameters: createPathParameters(verbs), + } + if (verbDefinitionResult.topLevelSuccessRef) { + pathItemObject[verbs.type].responses = { + 200: { + description: "successful operation", + schema: { + type: verbDefinitionResult.topLevelSuccessRefType, + items: { + $ref: "#/definitions/" + verbDefinitionResult.topLevelSuccessRef, + }, + }, + }, + } + } + return pathItemObject +} + +/** + * Iterate through all method parameters and create array of parameter objects which are stored as path parameters + * @param verbs + * @returns {Array} + */ +function createPathParameters(verbs) { + let pathItemObject = [] + if (verbs.parameter && verbs.parameter.fields.Parameter) { + for (let i = 0; i < verbs.parameter.fields.Parameter.length; i++) { + let param = verbs.parameter.fields.Parameter[i] + let field = param.field + let type = param.type + pathItemObject.push({ + name: field, + in: type === "file" ? "formData" : "path", + required: !param.optional, + type: param.type.toLowerCase(), + description: removeTags(param.description), + }) + } + } + return pathItemObject +} + +function groupByUrl(apidocJson) { + return _.chain(apidocJson) + .groupBy("url") + .toPairs() + .map(function (element) { + return _.zipObject(["url", "verbs"], element) + }) + .value() +} + +module.exports = toSwagger diff --git a/packages/server/src/api/routes/row.js b/packages/server/src/api/routes/row.js index a7cbd7fcdf..8251328df3 100644 --- a/packages/server/src/api/routes/row.js +++ b/packages/server/src/api/routes/row.js @@ -65,7 +65,7 @@ router * @apiParam {string} tableId The ID of the table to retrieve a row from. * @apiParam {string} rowId The ID of the row to retrieve. * - * @apiSuccess {object} row The response body will be the row that was found. + * @apiSuccess {object} body The response body will be the row that was found. */ .get( "/api/:tableId/rows/:rowId", @@ -84,21 +84,21 @@ router * * @apiParam {string} tableId The ID of the table to retrieve rows from. * - * @apiBody {boolean} [paginate] If pagination is required then this should be set to true, + * @apiParam (Body) {boolean} [paginate] If pagination is required then this should be set to true, * defaults to false. - * @apiBody {object} [query] This contains a set of filters which should be applied, if none + * @apiParam (Body) {object} [query] This contains a set of filters which should be applied, if none * specified then the request will be unfiltered. An example with all of the possible query * options has been supplied below. - * @apiBody {number} [limit] This sets a limit for the number of rows that will be returned, + * @apiParam (Body) {number} [limit] This sets a limit for the number of rows that will be returned, * this will be implemented at the database level if supported for performance reasons. This * is useful when paginating to set exactly how many rows per page. - * @apiBody {string} [bookmark] If pagination is enabled then a bookmark will be returned + * @apiParam (Body) {string} [bookmark] If pagination is enabled then a bookmark will be returned * with each successful search request, this should be supplied back to get the next page. - * @apiBody {object} [sort] If sort is desired this should contain the name of the column to + * @apiParam (Body) {object} [sort] If sort is desired this should contain the name of the column to * sort on. - * @apiBody {string} [sortOrder] If sort is enabled then this can be either "descending" or + * @apiParam (Body) {string} [sortOrder] If sort is enabled then this can be either "descending" or * "ascending" as required. - * @apiBody {string} [sortType] If sort is enabled then you must specify the type of search + * @apiParam (Body) {string} [sortType] If sort is enabled then you must specify the type of search * being used, either "string" or "number". This is only used for internal tables. * * @apiParamExample {json} Example: @@ -164,17 +164,17 @@ router * * @apiParam {string} tableId The ID of the table to save a row to. * - * @apiBody {string} [_id] If the row exists already then an ID for the row must be provided. - * @apiBody {string} [_rev] If working with an existing row for an internal table its revision + * @apiParam (Body) {string} [_id] If the row exists already then an ID for the row must be provided. + * @apiParam (Body) {string} [_rev] If working with an existing row for an internal table its revision * must also be provided. - * @apiBody {string} tableId The ID of the table should also be specified in the row body itself. - * @apiBody {any} [any] Any field supplied in the body will be assessed to see if it matches + * @apiParam (Body) {string} tableId The ID of the table should also be specified in the row body itself. + * @apiParam (Body) {any} [any] Any field supplied in the body will be assessed to see if it matches * a column in the specified table. All other fields will be dropped and not stored. * * @apiSuccess {string} _id The ID of the row that was just saved, if it was just created this * is the rows new ID. * @apiSuccess {string} [_rev] If saving to an internal table a revision will also be returned. - * @apiSuccess {any} [any] The contents of the row that was saved will be returned as well. + * @apiSuccess {object} body The contents of the row that was saved will be returned as well. */ .post( "/api/:tableId/rows", @@ -208,7 +208,7 @@ router * * @apiParam {string} tableId The ID of the table the row is to be validated for. * - * @apiBody {any} [any] Any fields provided in the request body will be tested + * @apiParam (Body) {any} [any] Any fields provided in the request body will be tested * against the table schema and constraints. * * @apiSuccess {boolean} valid If inputs provided are acceptable within the table schema this @@ -231,13 +231,15 @@ router * @apiDescription This endpoint can delete a single row, or delete them in a bulk * fashion. * - * @apiBody {object[]} [rows] If bulk deletion is desired then provide the rows in this + * @apiParam {string} tableId The ID of the table the row is to be deleted from. + * + * @apiParam (Body) {object[]} [rows] If bulk deletion is desired then provide the rows in this * key of the request body that are to be deleted. - * @apiBody {string} [_id] If deleting a single row then provide its ID in this field. - * @apiBody {string} [_rev] If deleting a single row from an internal table then provide its + * @apiParam (Body) {string} [_id] If deleting a single row then provide its ID in this field. + * @apiParam (Body) {string} [_rev] If deleting a single row from an internal table then provide its * revision here. * - * @apiSuccess {object[]|object} rows If deleting bulk then the response body will be an array + * @apiSuccess {object[]|object} body If deleting bulk then the response body will be an array * of the deleted rows, if deleting a single row then the body will contain a "row" property which * is the deleted row. */ diff --git a/packages/server/src/api/routes/table.js b/packages/server/src/api/routes/table.js index 62146b0bbe..d8ddbe8133 100644 --- a/packages/server/src/api/routes/table.js +++ b/packages/server/src/api/routes/table.js @@ -27,13 +27,110 @@ function generateSaveValidator() { } router + /** + * @api {get} /api/tables Fetch all tables + * @apiName Fetch all tables + * @apiGroup tables + * @apiPermission table read access + * @apiDescription This endpoint retrieves all of the tables which have been created in + * an app. This includes all of the external and internal tables; to tell the difference + * between these look for the "type" property on each table, either being "internal" or "external". + * + * @apiSuccess {object[]} body The response body will be the list of tables that was found - as + * this does not take any parameters the only error scenario is no access. + */ .get("/api/tables", authorized(BUILDER), tableController.fetch) + /** + * @api {get} /api/tables/:id Fetch a single table + * @apiName Fetch a single table + * @apiGroup tables + * @apiPermission table read access + * @apiDescription Retrieves a single table this could be be internal or external based on + * the provided table ID. + * + * @apiParam {string} id The ID of the table which is to be retrieved. + * + * @apiSuccess {object[]} body The response body will be the table that was found. + */ .get( "/api/tables/:id", paramResource("id"), authorized(PermissionTypes.TABLE, PermissionLevels.READ), tableController.find ) + /** + * @api {post} /api/tables Save a table + * @apiName Save a table + * @apiGroup tables + * @apiPermission builder + * @apiDescription Create or update a table with this endpoint, this will function for both internal + * external tables. + * + * @apiParam (Body) {string} [_id] If updating an existing table then the ID of the table must be specified. + * @apiParam (Body) {string} [_rev] If updating an existing internal table then the revision must also be specified. + * @apiParam (Body) {string} type] This should either be "internal" or "external" depending on the table type - + * this will default to internal. + * @apiParam (Body) {string} [sourceId] If creating an external table then this should be set to the data source ID. If + * building an internal table this does not need to be set, although it will be returned as "bb_internal". + * @apiParam (Body) {string} name The name of the table, this will be used in the UI. To rename the table simply + * supply the table structure to this endpoint with the name changed. + * @apiParam (Body) {object} schema A key value object which has all of the columns in the table as the keys in this + * object. For each column a "type" and "constraints" must be specified, with some types requiring further information. + * More information about the schema structure can be found in the Typescript definitions. + * @apiParam (Body) {string} [primaryDisplay] The name of the column which should be used when displaying rows + * from this table as relationships. + * @apiParam (Body) {object[]} [indexes] Specifies the search indexes - this is deprecated behaviour with the introduction + * of lucene indexes. This functionality is only available for internal tables. + * @apiParam (Body) {object} [_rename] If a column is to be renamed then the "old" column name should be set in this + * structure, and the "updated", new column name should also be supplied. The schema should also be updated, this field + * lets the server know that a field hasn't just been deleted, that the data has moved to a new name, this will fix + * the rows in the table. This functionality is only available for internal tables. + * @apiParam (Body) {object} [dataImport] When creating an internal table it can be built from a CSV, by using the + * CSV validation endpoint. Send the CSV data to the validation endpoint, then put the results of that call + * into this property, along with the CSV and a table/rows will be built from it. This is not supported when updating + * or for external tables. + * + * @apiParamExample {json} Example: + * { + * "_id": "ta_05541307fa0f4044abee071ca2a82119", + * "_rev": "10-0fbe4e78f69b255d79f1017e2eeef807", + * "type": "internal", + * "views": {}, + * "name": "tableName", + * "schema": { + * "column": { + * "type": "string", + * "constraints": { + * "type": "string", + * "length": { + * "maximum": null + * }, + * "presence": false + * }, + * "name": "column" + * }, + * }, + * "primaryDisplay": "column", + * "indexes": [], + * "sourceId": "bb_internal", + * "_rename": { + * "old": "columnName", + * "updated": "newColumnName", + * }, + * "dataImport": { + * "csvString": "column\nvalue", + * "primaryDisplay": "column", + * "schema": { + * "column": { + * "type": "string" + * } + * } + * } + * } + * + * @apiSuccess {object} table The response body will contain the table structure after being cleaned up and + * saved to the database. + */ .post( "/api/tables", // allows control over updating a table @@ -42,22 +139,68 @@ router generateSaveValidator(), tableController.save ) + /** + * @api {post} /api/tables/csv/validate Validate a CSV for a table + * @apiName Validate a CSV for a table + * @apiGroup tables + * @apiPermission builder + * @apiDescription When creating a new table, or importing a CSV to an existing table the CSV must be validated and + * converted into a Budibase schema; this endpoint does this. + * + * @apiParam (Body) {string} csvString The CSV which is to be validated as a string. + * @apiParam (Body) {object} [schema] When a CSV has been validated it is possible to re-validate after changing the + * type of a field, by default everything will be strings as there is no way to infer types. The returned schema can + * be updated and then returned to the endpoint to re-validate and check if the type will work for the CSV, e.g. + * using a number instead of strings. + * @apiParam (Body) {string} [tableId] If importing data to an existing table this will pull the current table and + * remove any fields from the CSV schema which do not exist on the table/don't match the type of the table. When + * importing a CSV to an existing table only fields that are present on the table can be imported. + * + * @apiSuccess {object} schema The response body will contain a "schema" object that represents the schema found for + * the CSV - this will be in the same format used for table schema.s + */ .post( "/api/tables/csv/validate", authorized(BUILDER), tableController.validateCSVSchema ) + /** + * @api {post} /api/tables/:tableId/:revId Delete a table + * @apiName Delete a table + * @apiGroup tables + * @apiPermission builder + * @apiDescription This endpoint will delete a table and all of its associated data, for this reason it is + * quite dangerous - it will work for internal and external tables. + * + * @apiParam {string} tableId The ID of the table which is to be deleted. + * @apiParam {string} [revId] If deleting an internal table then the revision must also be supplied (_rev), for + * external tables this can simply be set to anything, e.g. "external". + * + * @apiSuccess {string} message A message stating that the table was deleted successfully. + */ .delete( "/api/tables/:tableId/:revId", paramResource("tableId"), authorized(BUILDER), tableController.destroy ) - // this is currently builder only, but in the future - // it could be carried out by an end user in app, - // however some thought will need to be had about - // implications for automations (triggers) - // new trigger type, bulk rows created + /** + * @api {post} /api/tables/:tableId/:revId Import CSV to existing table + * @apiName Import CSV to existing table + * @apiGroup tables + * @apiPermission builder + * @apiDescription This endpoint will import data to existing tables, internal or external. It is used in combination + * with the CSV validation endpoint. Take the output of the CSV validation endpoint and pass it to this endpoint to + * import the data; please note this will only import fields that already exist on the table/match the type. + * + * @apiParam {string} tableId The ID of the table which the data should be imported to. + * + * @apiParam (Body) {object} dataImport This is the same as the structure used when creating an internal table with + * a CSV, it will have the "schema" returned from the CSV validation endpoint and the "csvString" which is to be + * turned into rows. + * + * @apiSuccess {string} message A message stating that the data was imported successfully. + */ .post( "/api/tables/:tableId/import", paramResource("tableId"), From 5e9f3969c90c0beacba432f395a6985028ac13c9 Mon Sep 17 00:00:00 2001 From: mike12345567 Date: Fri, 26 Nov 2021 14:14:53 +0000 Subject: [PATCH 026/175] Fixing a few issues that became obvious when I was looking at examples of what gets sent to the API for table saving. --- .../backend/DataTable/modals/CreateEditColumn.svelte | 3 +++ packages/builder/src/stores/backend/tables.js | 2 +- packages/server/src/api/controllers/table/internal.js | 4 ---- 3 files changed, 4 insertions(+), 5 deletions(-) diff --git a/packages/builder/src/components/backend/DataTable/modals/CreateEditColumn.svelte b/packages/builder/src/components/backend/DataTable/modals/CreateEditColumn.svelte index c47bf1a538..b88a66d222 100644 --- a/packages/builder/src/components/backend/DataTable/modals/CreateEditColumn.svelte +++ b/packages/builder/src/components/backend/DataTable/modals/CreateEditColumn.svelte @@ -102,6 +102,9 @@ if (field.type === AUTO_TYPE) { field = buildAutoColumn($tables.draft.name, field.name, field.subtype) } + if (field.type !== LINK_TYPE) { + delete field.fieldName + } try { await tables.saveField({ originalName, diff --git a/packages/builder/src/stores/backend/tables.js b/packages/builder/src/stores/backend/tables.js index c63685914b..02db48c549 100644 --- a/packages/builder/src/stores/backend/tables.js +++ b/packages/builder/src/stores/backend/tables.js @@ -122,7 +122,7 @@ export function createTablesStore() { update(state => { // delete the original if renaming // need to handle if the column had no name, empty string - if (originalName || originalName === "") { + if (originalName != null && originalName !== field.name) { delete state.draft.schema[originalName] state.draft._rename = { old: originalName, diff --git a/packages/server/src/api/controllers/table/internal.js b/packages/server/src/api/controllers/table/internal.js index 660618aef0..10a5c9746a 100644 --- a/packages/server/src/api/controllers/table/internal.js +++ b/packages/server/src/api/controllers/table/internal.js @@ -44,14 +44,10 @@ exports.save = async function (ctx) { // the column if you want to change the type if (oldTable && oldTable.schema) { for (let propKey of Object.keys(tableToSave.schema)) { - let column = tableToSave.schema[propKey] let oldColumn = oldTable.schema[propKey] if (oldColumn && oldColumn.type === "internal") { oldColumn.type = "auto" } - if (oldColumn && oldColumn.type !== column.type) { - ctx.throw(400, "Cannot change the type of a column") - } } } From a33204e4cfb26341e1088b2677aafb043aa17302 Mon Sep 17 00:00:00 2001 From: Martin McKeaveney Date: Fri, 26 Nov 2021 15:26:51 +0100 Subject: [PATCH 027/175] adding check for initinfo --- packages/builder/src/pages/builder/portal/apps/index.svelte | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/packages/builder/src/pages/builder/portal/apps/index.svelte b/packages/builder/src/pages/builder/portal/apps/index.svelte index 15076a9a53..40218b0ca9 100644 --- a/packages/builder/src/pages/builder/portal/apps/index.svelte +++ b/packages/builder/src/pages/builder/portal/apps/index.svelte @@ -264,7 +264,7 @@ await apps.load() // if the portal is loaded from an external URL with a template param const initInfo = await auth.getInitInfo() - if (initInfo.init_template) { + if (initInfo?.init_template) { creatingFromTemplate = true createAppFromTemplateUrl(initInfo.init_template) return From 4b79045dac22f22f43fc96fa9f00c89394a1eee1 Mon Sep 17 00:00:00 2001 From: Martin McKeaveney Date: Fri, 26 Nov 2021 15:27:37 +0100 Subject: [PATCH 028/175] adding check on backend --- packages/worker/src/api/controllers/global/auth.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/packages/worker/src/api/controllers/global/auth.js b/packages/worker/src/api/controllers/global/auth.js index 5f7e656f7d..592787c5ea 100644 --- a/packages/worker/src/api/controllers/global/auth.js +++ b/packages/worker/src/api/controllers/global/auth.js @@ -100,7 +100,7 @@ exports.setInitInfo = ctx => { } exports.getInitInfo = ctx => { - ctx.body = getCookie(ctx, Cookies.Init) + ctx.body = getCookie(ctx, Cookies.Init) || {} } /** From 15381e44ebd7aeb6b4a6ac4a0bd32941e8545897 Mon Sep 17 00:00:00 2001 From: Budibase Staging Release Bot <> Date: Fri, 26 Nov 2021 14:35:06 +0000 Subject: [PATCH 029/175] v0.9.190-alpha.7 --- lerna.json | 2 +- packages/auth/package.json | 2 +- packages/bbui/package.json | 2 +- packages/builder/package.json | 8 ++++---- packages/cli/package.json | 2 +- packages/client/package.json | 6 +++--- packages/server/package.json | 8 ++++---- packages/string-templates/package.json | 2 +- packages/worker/package.json | 6 +++--- 9 files changed, 19 insertions(+), 19 deletions(-) diff --git a/lerna.json b/lerna.json index 99e26808d2..be885ac4c7 100644 --- a/lerna.json +++ b/lerna.json @@ -1,5 +1,5 @@ { - "version": "0.9.190-alpha.6", + "version": "0.9.190-alpha.7", "npmClient": "yarn", "packages": [ "packages/*" diff --git a/packages/auth/package.json b/packages/auth/package.json index a0cb7f7e21..de0c3f7255 100644 --- a/packages/auth/package.json +++ b/packages/auth/package.json @@ -1,6 +1,6 @@ { "name": "@budibase/auth", - "version": "0.9.190-alpha.6", + "version": "0.9.190-alpha.7", "description": "Authentication middlewares for budibase builder and apps", "main": "src/index.js", "author": "Budibase", diff --git a/packages/bbui/package.json b/packages/bbui/package.json index aff5c126e3..fe0771c6bb 100644 --- a/packages/bbui/package.json +++ b/packages/bbui/package.json @@ -1,7 +1,7 @@ { "name": "@budibase/bbui", "description": "A UI solution used in the different Budibase projects.", - "version": "0.9.190-alpha.6", + "version": "0.9.190-alpha.7", "license": "MPL-2.0", "svelte": "src/index.js", "module": "dist/bbui.es.js", diff --git a/packages/builder/package.json b/packages/builder/package.json index 60a0c516cc..ecea2b4bb7 100644 --- a/packages/builder/package.json +++ b/packages/builder/package.json @@ -1,6 +1,6 @@ { "name": "@budibase/builder", - "version": "0.9.190-alpha.6", + "version": "0.9.190-alpha.7", "license": "GPL-3.0", "private": true, "scripts": { @@ -65,10 +65,10 @@ } }, "dependencies": { - "@budibase/bbui": "^0.9.190-alpha.6", - "@budibase/client": "^0.9.190-alpha.6", + "@budibase/bbui": "^0.9.190-alpha.7", + "@budibase/client": "^0.9.190-alpha.7", "@budibase/colorpicker": "1.1.2", - "@budibase/string-templates": "^0.9.190-alpha.6", + "@budibase/string-templates": "^0.9.190-alpha.7", "@sentry/browser": "5.19.1", "@spectrum-css/page": "^3.0.1", "@spectrum-css/vars": "^3.0.1", diff --git a/packages/cli/package.json b/packages/cli/package.json index d12cceeddb..dadf9ee5b1 100644 --- a/packages/cli/package.json +++ b/packages/cli/package.json @@ -1,6 +1,6 @@ { "name": "@budibase/cli", - "version": "0.9.190-alpha.6", + "version": "0.9.190-alpha.7", "description": "Budibase CLI, for developers, self hosting and migrations.", "main": "src/index.js", "bin": { diff --git a/packages/client/package.json b/packages/client/package.json index 48b1129a96..a65264f2fa 100644 --- a/packages/client/package.json +++ b/packages/client/package.json @@ -1,6 +1,6 @@ { "name": "@budibase/client", - "version": "0.9.190-alpha.6", + "version": "0.9.190-alpha.7", "license": "MPL-2.0", "module": "dist/budibase-client.js", "main": "dist/budibase-client.js", @@ -19,9 +19,9 @@ "dev:builder": "rollup -cw" }, "dependencies": { - "@budibase/bbui": "^0.9.190-alpha.6", + "@budibase/bbui": "^0.9.190-alpha.7", "@budibase/standard-components": "^0.9.139", - "@budibase/string-templates": "^0.9.190-alpha.6", + "@budibase/string-templates": "^0.9.190-alpha.7", "regexparam": "^1.3.0", "shortid": "^2.2.15", "svelte-spa-router": "^3.0.5" diff --git a/packages/server/package.json b/packages/server/package.json index eb09d84994..b60ea1dbda 100644 --- a/packages/server/package.json +++ b/packages/server/package.json @@ -1,7 +1,7 @@ { "name": "@budibase/server", "email": "hi@budibase.com", - "version": "0.9.190-alpha.6", + "version": "0.9.190-alpha.7", "description": "Budibase Web Server", "main": "src/index.js", "repository": { @@ -68,9 +68,9 @@ "author": "Budibase", "license": "GPL-3.0", "dependencies": { - "@budibase/auth": "^0.9.190-alpha.6", - "@budibase/client": "^0.9.190-alpha.6", - "@budibase/string-templates": "^0.9.190-alpha.6", + "@budibase/auth": "^0.9.190-alpha.7", + "@budibase/client": "^0.9.190-alpha.7", + "@budibase/string-templates": "^0.9.190-alpha.7", "@bull-board/api": "^3.7.0", "@bull-board/koa": "^3.7.0", "@elastic/elasticsearch": "7.10.0", diff --git a/packages/string-templates/package.json b/packages/string-templates/package.json index 361984defa..900b25ab92 100644 --- a/packages/string-templates/package.json +++ b/packages/string-templates/package.json @@ -1,6 +1,6 @@ { "name": "@budibase/string-templates", - "version": "0.9.190-alpha.6", + "version": "0.9.190-alpha.7", "description": "Handlebars wrapper for Budibase templating.", "main": "src/index.cjs", "module": "dist/bundle.mjs", diff --git a/packages/worker/package.json b/packages/worker/package.json index c5dfa4883b..19eba91433 100644 --- a/packages/worker/package.json +++ b/packages/worker/package.json @@ -1,7 +1,7 @@ { "name": "@budibase/worker", "email": "hi@budibase.com", - "version": "0.9.190-alpha.6", + "version": "0.9.190-alpha.7", "description": "Budibase background service", "main": "src/index.js", "repository": { @@ -29,8 +29,8 @@ "author": "Budibase", "license": "GPL-3.0", "dependencies": { - "@budibase/auth": "^0.9.190-alpha.6", - "@budibase/string-templates": "^0.9.190-alpha.6", + "@budibase/auth": "^0.9.190-alpha.7", + "@budibase/string-templates": "^0.9.190-alpha.7", "@koa/router": "^8.0.0", "@sentry/node": "^6.0.0", "@techpass/passport-openidconnect": "^0.3.0", From 115fc08aa4d08ca08c65c84e3805c6df0e1ea0b8 Mon Sep 17 00:00:00 2001 From: Rory Powell Date: Fri, 26 Nov 2021 15:02:03 +0000 Subject: [PATCH 030/175] Improve returning logic for oracle --- .../integrations/oracle/docker-compose.yml | 2 +- packages/server/src/integrations/base/sql.ts | 2 - packages/server/src/integrations/oracle.ts | 64 +++++++++---------- 3 files changed, 30 insertions(+), 38 deletions(-) diff --git a/packages/server/scripts/integrations/oracle/docker-compose.yml b/packages/server/scripts/integrations/oracle/docker-compose.yml index 5cd5e02f81..c54cd0a40b 100644 --- a/packages/server/scripts/integrations/oracle/docker-compose.yml +++ b/packages/server/scripts/integrations/oracle/docker-compose.yml @@ -4,7 +4,7 @@ version: "3.8" services: db: - container_name: oracle-xe + restart: always platform: linux/x86_64 image: container-registry.oracle.com/database/express:18.4.0-xe environment: diff --git a/packages/server/src/integrations/base/sql.ts b/packages/server/src/integrations/base/sql.ts index 471774db3d..9bf248d895 100644 --- a/packages/server/src/integrations/base/sql.ts +++ b/packages/server/src/integrations/base/sql.ts @@ -435,8 +435,6 @@ class SqlQueryBuilder extends SqlTableQueryBuilder { id = results?.[0].id } else if (sqlClient === SqlClients.MY_SQL) { id = results?.insertId - } else if (sqlClient === SqlClients.ORACLE) { - id = response.outBinds[0][0] } row = processFn( await this.getReturningRow(queryFn, this.checkLookupKeys(id, json)) diff --git a/packages/server/src/integrations/oracle.ts b/packages/server/src/integrations/oracle.ts index 13658399db..683dceed70 100644 --- a/packages/server/src/integrations/oracle.ts +++ b/packages/server/src/integrations/oracle.ts @@ -348,27 +348,7 @@ module OracleModule { this.schemaErrors = final.errors } - /** - * Knex default returning behaviour does not work with oracle - * Manually add the behaviour for the return column - */ - private addReturning( - query: SqlQuery, - bindings: BindParameters, - returnColumn: string - ) { - if (bindings instanceof Array) { - bindings.push({ dir: oracledb.BIND_OUT }) - query.sql = - query.sql + ` returning \"${returnColumn}\" into :${bindings.length}` - } - } - - private async internalQuery( - query: SqlQuery, - returnColum?: string, - operation?: string - ): Promise> { + private async internalQuery(query: SqlQuery): Promise> { let connection try { connection = await this.getConnection() @@ -376,13 +356,6 @@ module OracleModule { const options: ExecuteOptions = { autoCommit: true } const bindings: BindParameters = query.bindings || [] - if ( - returnColum && - (operation === Operation.CREATE || operation === Operation.UPDATE) - ) { - this.addReturning(query, bindings, returnColum) - } - const result: Result = await connection.execute( query.sql, bindings, @@ -441,13 +414,34 @@ module OracleModule { } async query(json: QueryJson) { - const primaryKeys = json.meta!.table!.primary - const primaryKey = primaryKeys ? primaryKeys[0] : undefined - const queryFn = (query: any, operation: string) => - this.internalQuery(query, primaryKey, operation) - const processFn = (response: any) => (response.rows ? response.rows : []) - const output = await this.queryWithReturning(json, queryFn, processFn) - return output + const operation = this._operation(json).toLowerCase() + const input = this._query(json, { disableReturning: true }) + if (Array.isArray(input)) { + const responses = [] + for (let query of input) { + responses.push(await this.internalQuery(query)) + } + return responses + } else { + const response = await this.internalQuery(input) + if (response.rows?.length) { + return response.rows + } else { + // get the last row that was updated + if ( + response.lastRowid && + json.endpoint?.entityId && + operation.toUpperCase() !== Operation.DELETE + ) { + const lastRow = await this.internalQuery({ + sql: `SELECT * FROM \"${json.endpoint.entityId}\" WHERE ROWID = '${response.lastRowid}'`, + }) + return lastRow.rows + } else { + return [{ [operation]: true }] + } + } + } } } From 531985c8dad6e56030f766ece7521d4a734ef77e Mon Sep 17 00:00:00 2001 From: Budibase Staging Release Bot <> Date: Fri, 26 Nov 2021 15:29:05 +0000 Subject: [PATCH 031/175] v0.9.190-alpha.8 --- lerna.json | 2 +- packages/auth/package.json | 2 +- packages/bbui/package.json | 2 +- packages/builder/package.json | 8 ++++---- packages/cli/package.json | 2 +- packages/client/package.json | 6 +++--- packages/server/package.json | 8 ++++---- packages/string-templates/package.json | 2 +- packages/worker/package.json | 6 +++--- 9 files changed, 19 insertions(+), 19 deletions(-) diff --git a/lerna.json b/lerna.json index be885ac4c7..8b7e036ddc 100644 --- a/lerna.json +++ b/lerna.json @@ -1,5 +1,5 @@ { - "version": "0.9.190-alpha.7", + "version": "0.9.190-alpha.8", "npmClient": "yarn", "packages": [ "packages/*" diff --git a/packages/auth/package.json b/packages/auth/package.json index de0c3f7255..72ca7c90d7 100644 --- a/packages/auth/package.json +++ b/packages/auth/package.json @@ -1,6 +1,6 @@ { "name": "@budibase/auth", - "version": "0.9.190-alpha.7", + "version": "0.9.190-alpha.8", "description": "Authentication middlewares for budibase builder and apps", "main": "src/index.js", "author": "Budibase", diff --git a/packages/bbui/package.json b/packages/bbui/package.json index fe0771c6bb..6d0bc1a8fc 100644 --- a/packages/bbui/package.json +++ b/packages/bbui/package.json @@ -1,7 +1,7 @@ { "name": "@budibase/bbui", "description": "A UI solution used in the different Budibase projects.", - "version": "0.9.190-alpha.7", + "version": "0.9.190-alpha.8", "license": "MPL-2.0", "svelte": "src/index.js", "module": "dist/bbui.es.js", diff --git a/packages/builder/package.json b/packages/builder/package.json index ecea2b4bb7..ecda1be172 100644 --- a/packages/builder/package.json +++ b/packages/builder/package.json @@ -1,6 +1,6 @@ { "name": "@budibase/builder", - "version": "0.9.190-alpha.7", + "version": "0.9.190-alpha.8", "license": "GPL-3.0", "private": true, "scripts": { @@ -65,10 +65,10 @@ } }, "dependencies": { - "@budibase/bbui": "^0.9.190-alpha.7", - "@budibase/client": "^0.9.190-alpha.7", + "@budibase/bbui": "^0.9.190-alpha.8", + "@budibase/client": "^0.9.190-alpha.8", "@budibase/colorpicker": "1.1.2", - "@budibase/string-templates": "^0.9.190-alpha.7", + "@budibase/string-templates": "^0.9.190-alpha.8", "@sentry/browser": "5.19.1", "@spectrum-css/page": "^3.0.1", "@spectrum-css/vars": "^3.0.1", diff --git a/packages/cli/package.json b/packages/cli/package.json index dadf9ee5b1..e37a6f6cad 100644 --- a/packages/cli/package.json +++ b/packages/cli/package.json @@ -1,6 +1,6 @@ { "name": "@budibase/cli", - "version": "0.9.190-alpha.7", + "version": "0.9.190-alpha.8", "description": "Budibase CLI, for developers, self hosting and migrations.", "main": "src/index.js", "bin": { diff --git a/packages/client/package.json b/packages/client/package.json index a65264f2fa..0ab9d0fc65 100644 --- a/packages/client/package.json +++ b/packages/client/package.json @@ -1,6 +1,6 @@ { "name": "@budibase/client", - "version": "0.9.190-alpha.7", + "version": "0.9.190-alpha.8", "license": "MPL-2.0", "module": "dist/budibase-client.js", "main": "dist/budibase-client.js", @@ -19,9 +19,9 @@ "dev:builder": "rollup -cw" }, "dependencies": { - "@budibase/bbui": "^0.9.190-alpha.7", + "@budibase/bbui": "^0.9.190-alpha.8", "@budibase/standard-components": "^0.9.139", - "@budibase/string-templates": "^0.9.190-alpha.7", + "@budibase/string-templates": "^0.9.190-alpha.8", "regexparam": "^1.3.0", "shortid": "^2.2.15", "svelte-spa-router": "^3.0.5" diff --git a/packages/server/package.json b/packages/server/package.json index e88caa634b..a16ff8bc49 100644 --- a/packages/server/package.json +++ b/packages/server/package.json @@ -1,7 +1,7 @@ { "name": "@budibase/server", "email": "hi@budibase.com", - "version": "0.9.190-alpha.7", + "version": "0.9.190-alpha.8", "description": "Budibase Web Server", "main": "src/index.ts", "repository": { @@ -69,9 +69,9 @@ "author": "Budibase", "license": "GPL-3.0", "dependencies": { - "@budibase/auth": "^0.9.190-alpha.7", - "@budibase/client": "^0.9.190-alpha.7", - "@budibase/string-templates": "^0.9.190-alpha.7", + "@budibase/auth": "^0.9.190-alpha.8", + "@budibase/client": "^0.9.190-alpha.8", + "@budibase/string-templates": "^0.9.190-alpha.8", "@bull-board/api": "^3.7.0", "@bull-board/koa": "^3.7.0", "@elastic/elasticsearch": "7.10.0", diff --git a/packages/string-templates/package.json b/packages/string-templates/package.json index 900b25ab92..b4203429f4 100644 --- a/packages/string-templates/package.json +++ b/packages/string-templates/package.json @@ -1,6 +1,6 @@ { "name": "@budibase/string-templates", - "version": "0.9.190-alpha.7", + "version": "0.9.190-alpha.8", "description": "Handlebars wrapper for Budibase templating.", "main": "src/index.cjs", "module": "dist/bundle.mjs", diff --git a/packages/worker/package.json b/packages/worker/package.json index 19eba91433..10389c2f1d 100644 --- a/packages/worker/package.json +++ b/packages/worker/package.json @@ -1,7 +1,7 @@ { "name": "@budibase/worker", "email": "hi@budibase.com", - "version": "0.9.190-alpha.7", + "version": "0.9.190-alpha.8", "description": "Budibase background service", "main": "src/index.js", "repository": { @@ -29,8 +29,8 @@ "author": "Budibase", "license": "GPL-3.0", "dependencies": { - "@budibase/auth": "^0.9.190-alpha.7", - "@budibase/string-templates": "^0.9.190-alpha.7", + "@budibase/auth": "^0.9.190-alpha.8", + "@budibase/string-templates": "^0.9.190-alpha.8", "@koa/router": "^8.0.0", "@sentry/node": "^6.0.0", "@techpass/passport-openidconnect": "^0.3.0", From f75928a9c97c208f626be9f10b7b2434d7e21b0f Mon Sep 17 00:00:00 2001 From: Rory Powell Date: Fri, 26 Nov 2021 16:50:15 +0000 Subject: [PATCH 032/175] Deletion support for returning rows --- packages/server/src/integrations/oracle.ts | 20 ++++++++++++++++---- 1 file changed, 16 insertions(+), 4 deletions(-) diff --git a/packages/server/src/integrations/oracle.ts b/packages/server/src/integrations/oracle.ts index 683dceed70..bf8e83350e 100644 --- a/packages/server/src/integrations/oracle.ts +++ b/packages/server/src/integrations/oracle.ts @@ -414,7 +414,7 @@ module OracleModule { } async query(json: QueryJson) { - const operation = this._operation(json).toLowerCase() + const operation = this._operation(json) const input = this._query(json, { disableReturning: true }) if (Array.isArray(input)) { const responses = [] @@ -423,22 +423,34 @@ module OracleModule { } return responses } else { + // read the row to be deleted up front for the return + let deletedRows + if (operation === Operation.DELETE) { + const queryFn = (query: any) => this.internalQuery(query) + deletedRows = await this.getReturningRow(queryFn, json) + } + + // run the query const response = await this.internalQuery(input) - if (response.rows?.length) { + + // get the results or return the created / updated / deleted row + if (deletedRows?.rows?.length) { + return deletedRows.rows + } else if (response.rows?.length) { return response.rows } else { // get the last row that was updated if ( response.lastRowid && json.endpoint?.entityId && - operation.toUpperCase() !== Operation.DELETE + operation !== Operation.DELETE ) { const lastRow = await this.internalQuery({ sql: `SELECT * FROM \"${json.endpoint.entityId}\" WHERE ROWID = '${response.lastRowid}'`, }) return lastRow.rows } else { - return [{ [operation]: true }] + return [{ [ operation.toLowerCase() ]: true }] } } } From d06ab10c1dfd28872a5c8f6a7193c56511570543 Mon Sep 17 00:00:00 2001 From: mike12345567 Date: Fri, 26 Nov 2021 17:08:56 +0000 Subject: [PATCH 033/175] Fixing issue found with enriching rows in SQL - the system was assuming the array of entries contained a row ID that needed to be broken down. --- .../server/src/api/controllers/row/ExternalRequest.ts | 10 ++++++++-- packages/server/src/definitions/datasource.ts | 11 +++++++++++ packages/server/src/integrations/base/sql.ts | 2 +- 3 files changed, 20 insertions(+), 3 deletions(-) diff --git a/packages/server/src/api/controllers/row/ExternalRequest.ts b/packages/server/src/api/controllers/row/ExternalRequest.ts index 2226dc99be..af199561dc 100644 --- a/packages/server/src/api/controllers/row/ExternalRequest.ts +++ b/packages/server/src/api/controllers/row/ExternalRequest.ts @@ -1,4 +1,5 @@ import { + FilterTypes, IncludeRelationships, Operation, PaginationJson, @@ -118,8 +119,13 @@ module External { } // check the row and filters to make sure they aren't a key of some sort if (config.filters) { - for (let filter of Object.values(config.filters)) { - if (typeof filter !== "object" || Object.keys(filter).length === 0) { + for (let [key, filter] of Object.entries(config.filters)) { + // oneOf is an array, don't iterate it + if ( + typeof filter !== "object" || + Object.keys(filter).length === 0 || + key === FilterTypes.ONE_OF + ) { continue } iterateObject(filter) diff --git a/packages/server/src/definitions/datasource.ts b/packages/server/src/definitions/datasource.ts index 3760f54f2c..eb65ac994f 100644 --- a/packages/server/src/definitions/datasource.ts +++ b/packages/server/src/definitions/datasource.ts @@ -54,6 +54,17 @@ export enum IncludeRelationships { EXCLUDE = 0, } +export enum FilterTypes { + STRING = "string", + FUZZY = "fuzzy", + RANGE = "range", + EQUAL = "equal", + NOT_EQUAL = "notEqual", + EMPTY = "empty", + NOT_EMPTY = "notEmpty", + ONE_OF = "oneOf", +} + export interface QueryDefinition { type: QueryTypes displayName?: string diff --git a/packages/server/src/integrations/base/sql.ts b/packages/server/src/integrations/base/sql.ts index 471774db3d..1f733ac135 100644 --- a/packages/server/src/integrations/base/sql.ts +++ b/packages/server/src/integrations/base/sql.ts @@ -93,7 +93,7 @@ class InternalBuilder { if (filters.oneOf) { iterate(filters.oneOf, (key, array) => { const fnc = allOr ? "orWhereIn" : "whereIn" - query = query[fnc](key, array) + query = query[fnc](key, Array.isArray(array) ? array : [array]) }) } if (filters.string) { From 7ef5ae88232cc5197b2400f4db18351425ba28e5 Mon Sep 17 00:00:00 2001 From: Budibase Staging Release Bot <> Date: Fri, 26 Nov 2021 17:52:27 +0000 Subject: [PATCH 034/175] v0.9.190-alpha.9 --- lerna.json | 2 +- packages/auth/package.json | 2 +- packages/bbui/package.json | 2 +- packages/builder/package.json | 8 ++++---- packages/cli/package.json | 2 +- packages/client/package.json | 6 +++--- packages/server/package.json | 8 ++++---- packages/string-templates/package.json | 2 +- packages/worker/package.json | 6 +++--- 9 files changed, 19 insertions(+), 19 deletions(-) diff --git a/lerna.json b/lerna.json index 8b7e036ddc..df45b3c53b 100644 --- a/lerna.json +++ b/lerna.json @@ -1,5 +1,5 @@ { - "version": "0.9.190-alpha.8", + "version": "0.9.190-alpha.9", "npmClient": "yarn", "packages": [ "packages/*" diff --git a/packages/auth/package.json b/packages/auth/package.json index 72ca7c90d7..4c0dcd1785 100644 --- a/packages/auth/package.json +++ b/packages/auth/package.json @@ -1,6 +1,6 @@ { "name": "@budibase/auth", - "version": "0.9.190-alpha.8", + "version": "0.9.190-alpha.9", "description": "Authentication middlewares for budibase builder and apps", "main": "src/index.js", "author": "Budibase", diff --git a/packages/bbui/package.json b/packages/bbui/package.json index 6d0bc1a8fc..16ea645a0f 100644 --- a/packages/bbui/package.json +++ b/packages/bbui/package.json @@ -1,7 +1,7 @@ { "name": "@budibase/bbui", "description": "A UI solution used in the different Budibase projects.", - "version": "0.9.190-alpha.8", + "version": "0.9.190-alpha.9", "license": "MPL-2.0", "svelte": "src/index.js", "module": "dist/bbui.es.js", diff --git a/packages/builder/package.json b/packages/builder/package.json index ecda1be172..6357b73824 100644 --- a/packages/builder/package.json +++ b/packages/builder/package.json @@ -1,6 +1,6 @@ { "name": "@budibase/builder", - "version": "0.9.190-alpha.8", + "version": "0.9.190-alpha.9", "license": "GPL-3.0", "private": true, "scripts": { @@ -65,10 +65,10 @@ } }, "dependencies": { - "@budibase/bbui": "^0.9.190-alpha.8", - "@budibase/client": "^0.9.190-alpha.8", + "@budibase/bbui": "^0.9.190-alpha.9", + "@budibase/client": "^0.9.190-alpha.9", "@budibase/colorpicker": "1.1.2", - "@budibase/string-templates": "^0.9.190-alpha.8", + "@budibase/string-templates": "^0.9.190-alpha.9", "@sentry/browser": "5.19.1", "@spectrum-css/page": "^3.0.1", "@spectrum-css/vars": "^3.0.1", diff --git a/packages/cli/package.json b/packages/cli/package.json index e37a6f6cad..4b73252dce 100644 --- a/packages/cli/package.json +++ b/packages/cli/package.json @@ -1,6 +1,6 @@ { "name": "@budibase/cli", - "version": "0.9.190-alpha.8", + "version": "0.9.190-alpha.9", "description": "Budibase CLI, for developers, self hosting and migrations.", "main": "src/index.js", "bin": { diff --git a/packages/client/package.json b/packages/client/package.json index 0ab9d0fc65..dbe9c66a29 100644 --- a/packages/client/package.json +++ b/packages/client/package.json @@ -1,6 +1,6 @@ { "name": "@budibase/client", - "version": "0.9.190-alpha.8", + "version": "0.9.190-alpha.9", "license": "MPL-2.0", "module": "dist/budibase-client.js", "main": "dist/budibase-client.js", @@ -19,9 +19,9 @@ "dev:builder": "rollup -cw" }, "dependencies": { - "@budibase/bbui": "^0.9.190-alpha.8", + "@budibase/bbui": "^0.9.190-alpha.9", "@budibase/standard-components": "^0.9.139", - "@budibase/string-templates": "^0.9.190-alpha.8", + "@budibase/string-templates": "^0.9.190-alpha.9", "regexparam": "^1.3.0", "shortid": "^2.2.15", "svelte-spa-router": "^3.0.5" diff --git a/packages/server/package.json b/packages/server/package.json index a16ff8bc49..b22c1c9aa9 100644 --- a/packages/server/package.json +++ b/packages/server/package.json @@ -1,7 +1,7 @@ { "name": "@budibase/server", "email": "hi@budibase.com", - "version": "0.9.190-alpha.8", + "version": "0.9.190-alpha.9", "description": "Budibase Web Server", "main": "src/index.ts", "repository": { @@ -69,9 +69,9 @@ "author": "Budibase", "license": "GPL-3.0", "dependencies": { - "@budibase/auth": "^0.9.190-alpha.8", - "@budibase/client": "^0.9.190-alpha.8", - "@budibase/string-templates": "^0.9.190-alpha.8", + "@budibase/auth": "^0.9.190-alpha.9", + "@budibase/client": "^0.9.190-alpha.9", + "@budibase/string-templates": "^0.9.190-alpha.9", "@bull-board/api": "^3.7.0", "@bull-board/koa": "^3.7.0", "@elastic/elasticsearch": "7.10.0", diff --git a/packages/string-templates/package.json b/packages/string-templates/package.json index b4203429f4..a9f9ada1c9 100644 --- a/packages/string-templates/package.json +++ b/packages/string-templates/package.json @@ -1,6 +1,6 @@ { "name": "@budibase/string-templates", - "version": "0.9.190-alpha.8", + "version": "0.9.190-alpha.9", "description": "Handlebars wrapper for Budibase templating.", "main": "src/index.cjs", "module": "dist/bundle.mjs", diff --git a/packages/worker/package.json b/packages/worker/package.json index 10389c2f1d..1659659da6 100644 --- a/packages/worker/package.json +++ b/packages/worker/package.json @@ -1,7 +1,7 @@ { "name": "@budibase/worker", "email": "hi@budibase.com", - "version": "0.9.190-alpha.8", + "version": "0.9.190-alpha.9", "description": "Budibase background service", "main": "src/index.js", "repository": { @@ -29,8 +29,8 @@ "author": "Budibase", "license": "GPL-3.0", "dependencies": { - "@budibase/auth": "^0.9.190-alpha.8", - "@budibase/string-templates": "^0.9.190-alpha.8", + "@budibase/auth": "^0.9.190-alpha.9", + "@budibase/string-templates": "^0.9.190-alpha.9", "@koa/router": "^8.0.0", "@sentry/node": "^6.0.0", "@techpass/passport-openidconnect": "^0.3.0", From d33eeec665623510d332717419cf2bceb4cc7535 Mon Sep 17 00:00:00 2001 From: Budibase Staging Release Bot <> Date: Fri, 26 Nov 2021 19:01:35 +0000 Subject: [PATCH 035/175] v0.9.190-alpha.10 --- lerna.json | 2 +- packages/auth/package.json | 2 +- packages/bbui/package.json | 2 +- packages/builder/package.json | 8 ++++---- packages/cli/package.json | 2 +- packages/client/package.json | 6 +++--- packages/server/package.json | 8 ++++---- packages/string-templates/package.json | 2 +- packages/worker/package.json | 6 +++--- 9 files changed, 19 insertions(+), 19 deletions(-) diff --git a/lerna.json b/lerna.json index df45b3c53b..7c04122790 100644 --- a/lerna.json +++ b/lerna.json @@ -1,5 +1,5 @@ { - "version": "0.9.190-alpha.9", + "version": "0.9.190-alpha.10", "npmClient": "yarn", "packages": [ "packages/*" diff --git a/packages/auth/package.json b/packages/auth/package.json index 4c0dcd1785..cbdeb91afe 100644 --- a/packages/auth/package.json +++ b/packages/auth/package.json @@ -1,6 +1,6 @@ { "name": "@budibase/auth", - "version": "0.9.190-alpha.9", + "version": "0.9.190-alpha.10", "description": "Authentication middlewares for budibase builder and apps", "main": "src/index.js", "author": "Budibase", diff --git a/packages/bbui/package.json b/packages/bbui/package.json index 16ea645a0f..546d76495d 100644 --- a/packages/bbui/package.json +++ b/packages/bbui/package.json @@ -1,7 +1,7 @@ { "name": "@budibase/bbui", "description": "A UI solution used in the different Budibase projects.", - "version": "0.9.190-alpha.9", + "version": "0.9.190-alpha.10", "license": "MPL-2.0", "svelte": "src/index.js", "module": "dist/bbui.es.js", diff --git a/packages/builder/package.json b/packages/builder/package.json index 6357b73824..00cdef4138 100644 --- a/packages/builder/package.json +++ b/packages/builder/package.json @@ -1,6 +1,6 @@ { "name": "@budibase/builder", - "version": "0.9.190-alpha.9", + "version": "0.9.190-alpha.10", "license": "GPL-3.0", "private": true, "scripts": { @@ -65,10 +65,10 @@ } }, "dependencies": { - "@budibase/bbui": "^0.9.190-alpha.9", - "@budibase/client": "^0.9.190-alpha.9", + "@budibase/bbui": "^0.9.190-alpha.10", + "@budibase/client": "^0.9.190-alpha.10", "@budibase/colorpicker": "1.1.2", - "@budibase/string-templates": "^0.9.190-alpha.9", + "@budibase/string-templates": "^0.9.190-alpha.10", "@sentry/browser": "5.19.1", "@spectrum-css/page": "^3.0.1", "@spectrum-css/vars": "^3.0.1", diff --git a/packages/cli/package.json b/packages/cli/package.json index 4b73252dce..81ad1ef20f 100644 --- a/packages/cli/package.json +++ b/packages/cli/package.json @@ -1,6 +1,6 @@ { "name": "@budibase/cli", - "version": "0.9.190-alpha.9", + "version": "0.9.190-alpha.10", "description": "Budibase CLI, for developers, self hosting and migrations.", "main": "src/index.js", "bin": { diff --git a/packages/client/package.json b/packages/client/package.json index dbe9c66a29..13e2ee725f 100644 --- a/packages/client/package.json +++ b/packages/client/package.json @@ -1,6 +1,6 @@ { "name": "@budibase/client", - "version": "0.9.190-alpha.9", + "version": "0.9.190-alpha.10", "license": "MPL-2.0", "module": "dist/budibase-client.js", "main": "dist/budibase-client.js", @@ -19,9 +19,9 @@ "dev:builder": "rollup -cw" }, "dependencies": { - "@budibase/bbui": "^0.9.190-alpha.9", + "@budibase/bbui": "^0.9.190-alpha.10", "@budibase/standard-components": "^0.9.139", - "@budibase/string-templates": "^0.9.190-alpha.9", + "@budibase/string-templates": "^0.9.190-alpha.10", "regexparam": "^1.3.0", "shortid": "^2.2.15", "svelte-spa-router": "^3.0.5" diff --git a/packages/server/package.json b/packages/server/package.json index b22c1c9aa9..748e5abc8f 100644 --- a/packages/server/package.json +++ b/packages/server/package.json @@ -1,7 +1,7 @@ { "name": "@budibase/server", "email": "hi@budibase.com", - "version": "0.9.190-alpha.9", + "version": "0.9.190-alpha.10", "description": "Budibase Web Server", "main": "src/index.ts", "repository": { @@ -69,9 +69,9 @@ "author": "Budibase", "license": "GPL-3.0", "dependencies": { - "@budibase/auth": "^0.9.190-alpha.9", - "@budibase/client": "^0.9.190-alpha.9", - "@budibase/string-templates": "^0.9.190-alpha.9", + "@budibase/auth": "^0.9.190-alpha.10", + "@budibase/client": "^0.9.190-alpha.10", + "@budibase/string-templates": "^0.9.190-alpha.10", "@bull-board/api": "^3.7.0", "@bull-board/koa": "^3.7.0", "@elastic/elasticsearch": "7.10.0", diff --git a/packages/string-templates/package.json b/packages/string-templates/package.json index a9f9ada1c9..b2b7f26276 100644 --- a/packages/string-templates/package.json +++ b/packages/string-templates/package.json @@ -1,6 +1,6 @@ { "name": "@budibase/string-templates", - "version": "0.9.190-alpha.9", + "version": "0.9.190-alpha.10", "description": "Handlebars wrapper for Budibase templating.", "main": "src/index.cjs", "module": "dist/bundle.mjs", diff --git a/packages/worker/package.json b/packages/worker/package.json index 1659659da6..0494bfef97 100644 --- a/packages/worker/package.json +++ b/packages/worker/package.json @@ -1,7 +1,7 @@ { "name": "@budibase/worker", "email": "hi@budibase.com", - "version": "0.9.190-alpha.9", + "version": "0.9.190-alpha.10", "description": "Budibase background service", "main": "src/index.js", "repository": { @@ -29,8 +29,8 @@ "author": "Budibase", "license": "GPL-3.0", "dependencies": { - "@budibase/auth": "^0.9.190-alpha.9", - "@budibase/string-templates": "^0.9.190-alpha.9", + "@budibase/auth": "^0.9.190-alpha.10", + "@budibase/string-templates": "^0.9.190-alpha.10", "@koa/router": "^8.0.0", "@sentry/node": "^6.0.0", "@techpass/passport-openidconnect": "^0.3.0", From 8b4bd84ab5a9dd9d3d5a2ab6d21d375a4204e96a Mon Sep 17 00:00:00 2001 From: Andrew Kingston Date: Mon, 29 Nov 2021 08:30:52 +0000 Subject: [PATCH 036/175] Preserve bindings when duplicating components --- packages/builder/src/builderStore/store/frontend.js | 4 ++-- .../design/NavigationPanel/ComponentDropdownMenu.svelte | 6 +++--- 2 files changed, 5 insertions(+), 5 deletions(-) diff --git a/packages/builder/src/builderStore/store/frontend.js b/packages/builder/src/builderStore/store/frontend.js index 1f1fb035a4..c94c759792 100644 --- a/packages/builder/src/builderStore/store/frontend.js +++ b/packages/builder/src/builderStore/store/frontend.js @@ -524,7 +524,7 @@ export const getFrontendStore = () => { } } }, - paste: async (targetComponent, mode) => { + paste: async (targetComponent, mode, preserveBindings = false) => { let promises = [] store.update(state => { // Stop if we have nothing to paste @@ -536,7 +536,7 @@ export const getFrontendStore = () => { const cut = state.componentToPaste.isCut // immediately need to remove bindings, currently these aren't valid when pasted - if (!cut) { + if (!cut && !preserveBindings) { state.componentToPaste = removeBindings(state.componentToPaste) } diff --git a/packages/builder/src/components/design/NavigationPanel/ComponentDropdownMenu.svelte b/packages/builder/src/components/design/NavigationPanel/ComponentDropdownMenu.svelte index 06293e4168..56c5eef2ad 100644 --- a/packages/builder/src/components/design/NavigationPanel/ComponentDropdownMenu.svelte +++ b/packages/builder/src/components/design/NavigationPanel/ComponentDropdownMenu.svelte @@ -53,7 +53,7 @@ const duplicateComponent = () => { storeComponentForCopy(false) - pasteComponent("below") + pasteComponent("below", true) } const deleteComponent = async () => { @@ -69,9 +69,9 @@ store.actions.components.copy(component, cut) } - const pasteComponent = mode => { + const pasteComponent = (mode, preserveBindings = false) => { // lives in store - also used by drag drop - store.actions.components.paste(component, mode) + store.actions.components.paste(component, mode, preserveBindings) } From 71e4764b174a4745454103dd26925b04310e79b0 Mon Sep 17 00:00:00 2001 From: Andrew Kingston Date: Mon, 29 Nov 2021 08:58:49 +0000 Subject: [PATCH 037/175] Fix issue with navigation links editor mutating real component structure --- .../NavigationEditor/NavigationEditor.svelte | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/packages/builder/src/components/design/PropertiesPanel/PropertyControls/NavigationEditor/NavigationEditor.svelte b/packages/builder/src/components/design/PropertiesPanel/PropertyControls/NavigationEditor/NavigationEditor.svelte index b7a272e608..ea02b4184d 100644 --- a/packages/builder/src/components/design/PropertiesPanel/PropertyControls/NavigationEditor/NavigationEditor.svelte +++ b/packages/builder/src/components/design/PropertiesPanel/PropertyControls/NavigationEditor/NavigationEditor.svelte @@ -2,13 +2,15 @@ import { Button, ActionButton, Drawer } from "@budibase/bbui" import { createEventDispatcher } from "svelte" import NavigationDrawer from "./NavigationDrawer.svelte" + import { cloneDeep } from "lodash/fp" export let value = [] let drawer + let links = cloneDeep(value) const dispatch = createEventDispatcher() const save = () => { - dispatch("change", value) + dispatch("change", links) drawer.hide() } @@ -19,5 +21,5 @@ Configure the links in your navigation bar. - + From c81ca0502a316e61cf8482947d383483e5087392 Mon Sep 17 00:00:00 2001 From: Andrew Kingston Date: Mon, 29 Nov 2021 09:05:46 +0000 Subject: [PATCH 038/175] Fix layout navigation not scrolling when required --- packages/client/src/components/app/Layout.svelte | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/packages/client/src/components/app/Layout.svelte b/packages/client/src/components/app/Layout.svelte index 87e5ac3b5b..59765f9305 100644 --- a/packages/client/src/components/app/Layout.svelte +++ b/packages/client/src/components/app/Layout.svelte @@ -313,6 +313,9 @@ height: 100%; overflow: auto; } + .desktop.layout--left .links { + overflow-y: auto; + } .desktop .nav--left { width: 250px; @@ -379,6 +382,7 @@ justify-content: flex-start; align-items: stretch; padding: var(--spacing-xl); + overflow-y: auto; } .mobile .link { width: calc(100% - 30px); From d716f387593aed5b3c88ea253722a551d2e2e3ad Mon Sep 17 00:00:00 2001 From: Peter Clement Date: Mon, 29 Nov 2021 11:53:46 +0000 Subject: [PATCH 039/175] autoscreen fixes --- .../FrontendNavigatePane.svelte | 11 ++- .../NavigationPanel/NewScreenModal.svelte | 73 +++++++++++++------ .../NavigationPanel/ScreenDetailsModal.svelte | 6 ++ .../NavigationPanel/ScreenWizard.svelte | 16 ++-- 4 files changed, 70 insertions(+), 36 deletions(-) diff --git a/packages/builder/src/components/design/NavigationPanel/FrontendNavigatePane.svelte b/packages/builder/src/components/design/NavigationPanel/FrontendNavigatePane.svelte index 51dd44026e..ea9ebbf2c5 100644 --- a/packages/builder/src/components/design/NavigationPanel/FrontendNavigatePane.svelte +++ b/packages/builder/src/components/design/NavigationPanel/FrontendNavigatePane.svelte @@ -25,8 +25,7 @@ key: "layout", }, ] - - let modal + let newLayoutModal $: selected = tabs.find(t => t.key === $params.assetType)?.title || "Screens" const navigate = ({ detail }) => { @@ -93,14 +92,18 @@ {#each $store.layouts as layout, idx (layout._id)} 0} /> {/each} - +
- +
diff --git a/packages/builder/src/components/design/NavigationPanel/NewScreenModal.svelte b/packages/builder/src/components/design/NavigationPanel/NewScreenModal.svelte index fbd1fc9256..67dbf581f2 100644 --- a/packages/builder/src/components/design/NavigationPanel/NewScreenModal.svelte +++ b/packages/builder/src/components/design/NavigationPanel/NewScreenModal.svelte @@ -10,16 +10,39 @@ ProgressCircle, } from "@budibase/bbui" import getTemplates from "builderStore/store/screenTemplates" + import { onDestroy } from "svelte" + + import { createEventDispatcher } from "svelte" - export let selectedScreens = [] export let chooseModal export let save export let showProgressCircle = false + + let selectedScreens = [] + const blankScreen = "createFromScratch" + const dispatch = createEventDispatcher() + + function setScreens() { + dispatch("save", { + screens: selectedScreens, + }) + } $: blankSelected = selectedScreens?.length === 1 $: autoSelected = selectedScreens?.length > 0 && !blankSelected + let templates = getTemplates($store, $tables.list) + + const confirm = async () => { + if (autoSelected) { + setScreens() + await save() + } else { + setScreens() + chooseModal(1) + } + } const toggleScreenSelection = table => { if (selectedScreens.find(s => s.table === table.name)) { selectedScreens = selectedScreens.filter( @@ -32,14 +55,18 @@ selectedScreens = [...partialTemplates, ...selectedScreens] } } + + onDestroy(() => { + selectedScreens = [] + }) -
+
(autoSelected ? save() : chooseModal(1))} + onConfirm={() => confirm()} disabled={!selectedScreens.length} size="L" > @@ -70,29 +97,31 @@ {/if}
- Autogenerated Screens + {#if $tables.list.filter(table => table._id !== "ta_users").length > 0} + Autogenerated Screens - {#each $tables.list.filter(table => table._id !== "ta_users") as table} -
x.table === table.name)} - on:click={() => toggleScreenSelection(table)} - class="item" - > -
-
{table.name}
-
+ {#each $tables.list.filter(table => table._id !== "ta_users") as table}
x.table === table.name)} + on:click={() => toggleScreenSelection(table)} + class="item" > - {#if selectedScreens.find(x => x.table === table.name)} -
- -
- {/if} +
+
{table.name}
+
+
+ {#if selectedScreens.find(x => x.table === table.name)} +
+ +
+ {/if} +
-
- {/each} + {/each} + {/if}
{#if showProgressCircle} diff --git a/packages/builder/src/components/design/NavigationPanel/ScreenDetailsModal.svelte b/packages/builder/src/components/design/NavigationPanel/ScreenDetailsModal.svelte index e5cc839045..6d906da742 100644 --- a/packages/builder/src/components/design/NavigationPanel/ScreenDetailsModal.svelte +++ b/packages/builder/src/components/design/NavigationPanel/ScreenDetailsModal.svelte @@ -2,6 +2,7 @@ import { ModalContent, Input, ProgressCircle } from "@budibase/bbui" import sanitizeUrl from "builderStore/store/screenTemplates/utils/sanitizeUrl" import { selectedAccessRole, allScreens } from "builderStore" + import { onDestroy } from "svelte" export let screenName export let url @@ -32,6 +33,11 @@ screen.routing.roleId === roleId ) } + + onDestroy(() => { + screenName = "" + url = "" + }) { let existingScreenCount = $store.screens.filter( s => s.props._instanceName == draftScreen.props._instanceName @@ -90,17 +89,14 @@ ) } - onDestroy(() => { - selectedScreens = [] - screenName = "" - url = "" - createdScreens = [] - }) - export const showModal = () => { newScreenModal.show() } + const setScreens = evt => { + selectedScreens = evt.detail.screens + } + const chooseModal = index => { /* 0 = newScreenModal @@ -119,7 +115,7 @@ Date: Mon, 29 Nov 2021 13:58:47 +0000 Subject: [PATCH 040/175] v0.9.190-alpha.11 --- lerna.json | 2 +- packages/auth/package.json | 2 +- packages/bbui/package.json | 2 +- packages/builder/package.json | 8 ++++---- packages/cli/package.json | 2 +- packages/client/package.json | 6 +++--- packages/server/package.json | 8 ++++---- packages/string-templates/package.json | 2 +- packages/worker/package.json | 6 +++--- 9 files changed, 19 insertions(+), 19 deletions(-) diff --git a/lerna.json b/lerna.json index 7c04122790..f2b3975169 100644 --- a/lerna.json +++ b/lerna.json @@ -1,5 +1,5 @@ { - "version": "0.9.190-alpha.10", + "version": "0.9.190-alpha.11", "npmClient": "yarn", "packages": [ "packages/*" diff --git a/packages/auth/package.json b/packages/auth/package.json index cbdeb91afe..6987c8c88b 100644 --- a/packages/auth/package.json +++ b/packages/auth/package.json @@ -1,6 +1,6 @@ { "name": "@budibase/auth", - "version": "0.9.190-alpha.10", + "version": "0.9.190-alpha.11", "description": "Authentication middlewares for budibase builder and apps", "main": "src/index.js", "author": "Budibase", diff --git a/packages/bbui/package.json b/packages/bbui/package.json index 546d76495d..814a4971bf 100644 --- a/packages/bbui/package.json +++ b/packages/bbui/package.json @@ -1,7 +1,7 @@ { "name": "@budibase/bbui", "description": "A UI solution used in the different Budibase projects.", - "version": "0.9.190-alpha.10", + "version": "0.9.190-alpha.11", "license": "MPL-2.0", "svelte": "src/index.js", "module": "dist/bbui.es.js", diff --git a/packages/builder/package.json b/packages/builder/package.json index 00cdef4138..1f7996d1b2 100644 --- a/packages/builder/package.json +++ b/packages/builder/package.json @@ -1,6 +1,6 @@ { "name": "@budibase/builder", - "version": "0.9.190-alpha.10", + "version": "0.9.190-alpha.11", "license": "GPL-3.0", "private": true, "scripts": { @@ -65,10 +65,10 @@ } }, "dependencies": { - "@budibase/bbui": "^0.9.190-alpha.10", - "@budibase/client": "^0.9.190-alpha.10", + "@budibase/bbui": "^0.9.190-alpha.11", + "@budibase/client": "^0.9.190-alpha.11", "@budibase/colorpicker": "1.1.2", - "@budibase/string-templates": "^0.9.190-alpha.10", + "@budibase/string-templates": "^0.9.190-alpha.11", "@sentry/browser": "5.19.1", "@spectrum-css/page": "^3.0.1", "@spectrum-css/vars": "^3.0.1", diff --git a/packages/cli/package.json b/packages/cli/package.json index 81ad1ef20f..e37ef7f849 100644 --- a/packages/cli/package.json +++ b/packages/cli/package.json @@ -1,6 +1,6 @@ { "name": "@budibase/cli", - "version": "0.9.190-alpha.10", + "version": "0.9.190-alpha.11", "description": "Budibase CLI, for developers, self hosting and migrations.", "main": "src/index.js", "bin": { diff --git a/packages/client/package.json b/packages/client/package.json index 13e2ee725f..96e6ea76cb 100644 --- a/packages/client/package.json +++ b/packages/client/package.json @@ -1,6 +1,6 @@ { "name": "@budibase/client", - "version": "0.9.190-alpha.10", + "version": "0.9.190-alpha.11", "license": "MPL-2.0", "module": "dist/budibase-client.js", "main": "dist/budibase-client.js", @@ -19,9 +19,9 @@ "dev:builder": "rollup -cw" }, "dependencies": { - "@budibase/bbui": "^0.9.190-alpha.10", + "@budibase/bbui": "^0.9.190-alpha.11", "@budibase/standard-components": "^0.9.139", - "@budibase/string-templates": "^0.9.190-alpha.10", + "@budibase/string-templates": "^0.9.190-alpha.11", "regexparam": "^1.3.0", "shortid": "^2.2.15", "svelte-spa-router": "^3.0.5" diff --git a/packages/server/package.json b/packages/server/package.json index 748e5abc8f..eea2b18124 100644 --- a/packages/server/package.json +++ b/packages/server/package.json @@ -1,7 +1,7 @@ { "name": "@budibase/server", "email": "hi@budibase.com", - "version": "0.9.190-alpha.10", + "version": "0.9.190-alpha.11", "description": "Budibase Web Server", "main": "src/index.ts", "repository": { @@ -69,9 +69,9 @@ "author": "Budibase", "license": "GPL-3.0", "dependencies": { - "@budibase/auth": "^0.9.190-alpha.10", - "@budibase/client": "^0.9.190-alpha.10", - "@budibase/string-templates": "^0.9.190-alpha.10", + "@budibase/auth": "^0.9.190-alpha.11", + "@budibase/client": "^0.9.190-alpha.11", + "@budibase/string-templates": "^0.9.190-alpha.11", "@bull-board/api": "^3.7.0", "@bull-board/koa": "^3.7.0", "@elastic/elasticsearch": "7.10.0", diff --git a/packages/string-templates/package.json b/packages/string-templates/package.json index b2b7f26276..7378b79b60 100644 --- a/packages/string-templates/package.json +++ b/packages/string-templates/package.json @@ -1,6 +1,6 @@ { "name": "@budibase/string-templates", - "version": "0.9.190-alpha.10", + "version": "0.9.190-alpha.11", "description": "Handlebars wrapper for Budibase templating.", "main": "src/index.cjs", "module": "dist/bundle.mjs", diff --git a/packages/worker/package.json b/packages/worker/package.json index 0494bfef97..63c392d275 100644 --- a/packages/worker/package.json +++ b/packages/worker/package.json @@ -1,7 +1,7 @@ { "name": "@budibase/worker", "email": "hi@budibase.com", - "version": "0.9.190-alpha.10", + "version": "0.9.190-alpha.11", "description": "Budibase background service", "main": "src/index.js", "repository": { @@ -29,8 +29,8 @@ "author": "Budibase", "license": "GPL-3.0", "dependencies": { - "@budibase/auth": "^0.9.190-alpha.10", - "@budibase/string-templates": "^0.9.190-alpha.10", + "@budibase/auth": "^0.9.190-alpha.11", + "@budibase/string-templates": "^0.9.190-alpha.11", "@koa/router": "^8.0.0", "@sentry/node": "^6.0.0", "@techpass/passport-openidconnect": "^0.3.0", From 40aa9656e122dc96ac05235fd52b7e9f448df63c Mon Sep 17 00:00:00 2001 From: Budibase Staging Release Bot <> Date: Tue, 30 Nov 2021 10:14:02 +0000 Subject: [PATCH 041/175] v0.9.190-alpha.12 --- lerna.json | 2 +- packages/auth/package.json | 2 +- packages/bbui/package.json | 2 +- packages/builder/package.json | 8 ++++---- packages/cli/package.json | 2 +- packages/client/package.json | 6 +++--- packages/server/package.json | 8 ++++---- packages/string-templates/package.json | 2 +- packages/worker/package.json | 6 +++--- 9 files changed, 19 insertions(+), 19 deletions(-) diff --git a/lerna.json b/lerna.json index f2b3975169..c1939719a8 100644 --- a/lerna.json +++ b/lerna.json @@ -1,5 +1,5 @@ { - "version": "0.9.190-alpha.11", + "version": "0.9.190-alpha.12", "npmClient": "yarn", "packages": [ "packages/*" diff --git a/packages/auth/package.json b/packages/auth/package.json index 6987c8c88b..2aec96c6f8 100644 --- a/packages/auth/package.json +++ b/packages/auth/package.json @@ -1,6 +1,6 @@ { "name": "@budibase/auth", - "version": "0.9.190-alpha.11", + "version": "0.9.190-alpha.12", "description": "Authentication middlewares for budibase builder and apps", "main": "src/index.js", "author": "Budibase", diff --git a/packages/bbui/package.json b/packages/bbui/package.json index 814a4971bf..b50a3ded2c 100644 --- a/packages/bbui/package.json +++ b/packages/bbui/package.json @@ -1,7 +1,7 @@ { "name": "@budibase/bbui", "description": "A UI solution used in the different Budibase projects.", - "version": "0.9.190-alpha.11", + "version": "0.9.190-alpha.12", "license": "MPL-2.0", "svelte": "src/index.js", "module": "dist/bbui.es.js", diff --git a/packages/builder/package.json b/packages/builder/package.json index 1f7996d1b2..7774dfbffc 100644 --- a/packages/builder/package.json +++ b/packages/builder/package.json @@ -1,6 +1,6 @@ { "name": "@budibase/builder", - "version": "0.9.190-alpha.11", + "version": "0.9.190-alpha.12", "license": "GPL-3.0", "private": true, "scripts": { @@ -65,10 +65,10 @@ } }, "dependencies": { - "@budibase/bbui": "^0.9.190-alpha.11", - "@budibase/client": "^0.9.190-alpha.11", + "@budibase/bbui": "^0.9.190-alpha.12", + "@budibase/client": "^0.9.190-alpha.12", "@budibase/colorpicker": "1.1.2", - "@budibase/string-templates": "^0.9.190-alpha.11", + "@budibase/string-templates": "^0.9.190-alpha.12", "@sentry/browser": "5.19.1", "@spectrum-css/page": "^3.0.1", "@spectrum-css/vars": "^3.0.1", diff --git a/packages/cli/package.json b/packages/cli/package.json index e37ef7f849..b43b28a9fc 100644 --- a/packages/cli/package.json +++ b/packages/cli/package.json @@ -1,6 +1,6 @@ { "name": "@budibase/cli", - "version": "0.9.190-alpha.11", + "version": "0.9.190-alpha.12", "description": "Budibase CLI, for developers, self hosting and migrations.", "main": "src/index.js", "bin": { diff --git a/packages/client/package.json b/packages/client/package.json index 96e6ea76cb..32781cfedc 100644 --- a/packages/client/package.json +++ b/packages/client/package.json @@ -1,6 +1,6 @@ { "name": "@budibase/client", - "version": "0.9.190-alpha.11", + "version": "0.9.190-alpha.12", "license": "MPL-2.0", "module": "dist/budibase-client.js", "main": "dist/budibase-client.js", @@ -19,9 +19,9 @@ "dev:builder": "rollup -cw" }, "dependencies": { - "@budibase/bbui": "^0.9.190-alpha.11", + "@budibase/bbui": "^0.9.190-alpha.12", "@budibase/standard-components": "^0.9.139", - "@budibase/string-templates": "^0.9.190-alpha.11", + "@budibase/string-templates": "^0.9.190-alpha.12", "regexparam": "^1.3.0", "shortid": "^2.2.15", "svelte-spa-router": "^3.0.5" diff --git a/packages/server/package.json b/packages/server/package.json index eea2b18124..5966cc81fc 100644 --- a/packages/server/package.json +++ b/packages/server/package.json @@ -1,7 +1,7 @@ { "name": "@budibase/server", "email": "hi@budibase.com", - "version": "0.9.190-alpha.11", + "version": "0.9.190-alpha.12", "description": "Budibase Web Server", "main": "src/index.ts", "repository": { @@ -69,9 +69,9 @@ "author": "Budibase", "license": "GPL-3.0", "dependencies": { - "@budibase/auth": "^0.9.190-alpha.11", - "@budibase/client": "^0.9.190-alpha.11", - "@budibase/string-templates": "^0.9.190-alpha.11", + "@budibase/auth": "^0.9.190-alpha.12", + "@budibase/client": "^0.9.190-alpha.12", + "@budibase/string-templates": "^0.9.190-alpha.12", "@bull-board/api": "^3.7.0", "@bull-board/koa": "^3.7.0", "@elastic/elasticsearch": "7.10.0", diff --git a/packages/string-templates/package.json b/packages/string-templates/package.json index 7378b79b60..2fafa1f7ab 100644 --- a/packages/string-templates/package.json +++ b/packages/string-templates/package.json @@ -1,6 +1,6 @@ { "name": "@budibase/string-templates", - "version": "0.9.190-alpha.11", + "version": "0.9.190-alpha.12", "description": "Handlebars wrapper for Budibase templating.", "main": "src/index.cjs", "module": "dist/bundle.mjs", diff --git a/packages/worker/package.json b/packages/worker/package.json index 63c392d275..6ac6b2ab61 100644 --- a/packages/worker/package.json +++ b/packages/worker/package.json @@ -1,7 +1,7 @@ { "name": "@budibase/worker", "email": "hi@budibase.com", - "version": "0.9.190-alpha.11", + "version": "0.9.190-alpha.12", "description": "Budibase background service", "main": "src/index.js", "repository": { @@ -29,8 +29,8 @@ "author": "Budibase", "license": "GPL-3.0", "dependencies": { - "@budibase/auth": "^0.9.190-alpha.11", - "@budibase/string-templates": "^0.9.190-alpha.11", + "@budibase/auth": "^0.9.190-alpha.12", + "@budibase/string-templates": "^0.9.190-alpha.12", "@koa/router": "^8.0.0", "@sentry/node": "^6.0.0", "@techpass/passport-openidconnect": "^0.3.0", From 4b0704736bff5bb7cef126050e23abf269f5ed39 Mon Sep 17 00:00:00 2001 From: Budibase Release Bot <> Date: Tue, 30 Nov 2021 13:36:54 +0000 Subject: [PATCH 042/175] v0.9.190 --- lerna.json | 2 +- packages/auth/package.json | 2 +- packages/bbui/package.json | 2 +- packages/builder/package.json | 8 ++++---- packages/cli/package.json | 2 +- packages/client/package.json | 6 +++--- packages/server/package.json | 8 ++++---- packages/string-templates/package.json | 2 +- packages/worker/package.json | 6 +++--- 9 files changed, 19 insertions(+), 19 deletions(-) diff --git a/lerna.json b/lerna.json index c1939719a8..06d5c93c0a 100644 --- a/lerna.json +++ b/lerna.json @@ -1,5 +1,5 @@ { - "version": "0.9.190-alpha.12", + "version": "0.9.190", "npmClient": "yarn", "packages": [ "packages/*" diff --git a/packages/auth/package.json b/packages/auth/package.json index 2aec96c6f8..c0737e21a4 100644 --- a/packages/auth/package.json +++ b/packages/auth/package.json @@ -1,6 +1,6 @@ { "name": "@budibase/auth", - "version": "0.9.190-alpha.12", + "version": "0.9.190", "description": "Authentication middlewares for budibase builder and apps", "main": "src/index.js", "author": "Budibase", diff --git a/packages/bbui/package.json b/packages/bbui/package.json index b50a3ded2c..da234637f3 100644 --- a/packages/bbui/package.json +++ b/packages/bbui/package.json @@ -1,7 +1,7 @@ { "name": "@budibase/bbui", "description": "A UI solution used in the different Budibase projects.", - "version": "0.9.190-alpha.12", + "version": "0.9.190", "license": "MPL-2.0", "svelte": "src/index.js", "module": "dist/bbui.es.js", diff --git a/packages/builder/package.json b/packages/builder/package.json index 7774dfbffc..2d38faed41 100644 --- a/packages/builder/package.json +++ b/packages/builder/package.json @@ -1,6 +1,6 @@ { "name": "@budibase/builder", - "version": "0.9.190-alpha.12", + "version": "0.9.190", "license": "GPL-3.0", "private": true, "scripts": { @@ -65,10 +65,10 @@ } }, "dependencies": { - "@budibase/bbui": "^0.9.190-alpha.12", - "@budibase/client": "^0.9.190-alpha.12", + "@budibase/bbui": "^0.9.190", + "@budibase/client": "^0.9.190", "@budibase/colorpicker": "1.1.2", - "@budibase/string-templates": "^0.9.190-alpha.12", + "@budibase/string-templates": "^0.9.190", "@sentry/browser": "5.19.1", "@spectrum-css/page": "^3.0.1", "@spectrum-css/vars": "^3.0.1", diff --git a/packages/cli/package.json b/packages/cli/package.json index b43b28a9fc..093966191a 100644 --- a/packages/cli/package.json +++ b/packages/cli/package.json @@ -1,6 +1,6 @@ { "name": "@budibase/cli", - "version": "0.9.190-alpha.12", + "version": "0.9.190", "description": "Budibase CLI, for developers, self hosting and migrations.", "main": "src/index.js", "bin": { diff --git a/packages/client/package.json b/packages/client/package.json index 32781cfedc..f1a2f6f595 100644 --- a/packages/client/package.json +++ b/packages/client/package.json @@ -1,6 +1,6 @@ { "name": "@budibase/client", - "version": "0.9.190-alpha.12", + "version": "0.9.190", "license": "MPL-2.0", "module": "dist/budibase-client.js", "main": "dist/budibase-client.js", @@ -19,9 +19,9 @@ "dev:builder": "rollup -cw" }, "dependencies": { - "@budibase/bbui": "^0.9.190-alpha.12", + "@budibase/bbui": "^0.9.190", "@budibase/standard-components": "^0.9.139", - "@budibase/string-templates": "^0.9.190-alpha.12", + "@budibase/string-templates": "^0.9.190", "regexparam": "^1.3.0", "shortid": "^2.2.15", "svelte-spa-router": "^3.0.5" diff --git a/packages/server/package.json b/packages/server/package.json index 5966cc81fc..f60fbdc2a4 100644 --- a/packages/server/package.json +++ b/packages/server/package.json @@ -1,7 +1,7 @@ { "name": "@budibase/server", "email": "hi@budibase.com", - "version": "0.9.190-alpha.12", + "version": "0.9.190", "description": "Budibase Web Server", "main": "src/index.ts", "repository": { @@ -69,9 +69,9 @@ "author": "Budibase", "license": "GPL-3.0", "dependencies": { - "@budibase/auth": "^0.9.190-alpha.12", - "@budibase/client": "^0.9.190-alpha.12", - "@budibase/string-templates": "^0.9.190-alpha.12", + "@budibase/auth": "^0.9.190", + "@budibase/client": "^0.9.190", + "@budibase/string-templates": "^0.9.190", "@bull-board/api": "^3.7.0", "@bull-board/koa": "^3.7.0", "@elastic/elasticsearch": "7.10.0", diff --git a/packages/string-templates/package.json b/packages/string-templates/package.json index 2fafa1f7ab..71d4d987f4 100644 --- a/packages/string-templates/package.json +++ b/packages/string-templates/package.json @@ -1,6 +1,6 @@ { "name": "@budibase/string-templates", - "version": "0.9.190-alpha.12", + "version": "0.9.190", "description": "Handlebars wrapper for Budibase templating.", "main": "src/index.cjs", "module": "dist/bundle.mjs", diff --git a/packages/worker/package.json b/packages/worker/package.json index 6ac6b2ab61..ff11b13fbb 100644 --- a/packages/worker/package.json +++ b/packages/worker/package.json @@ -1,7 +1,7 @@ { "name": "@budibase/worker", "email": "hi@budibase.com", - "version": "0.9.190-alpha.12", + "version": "0.9.190", "description": "Budibase background service", "main": "src/index.js", "repository": { @@ -29,8 +29,8 @@ "author": "Budibase", "license": "GPL-3.0", "dependencies": { - "@budibase/auth": "^0.9.190-alpha.12", - "@budibase/string-templates": "^0.9.190-alpha.12", + "@budibase/auth": "^0.9.190", + "@budibase/string-templates": "^0.9.190", "@koa/router": "^8.0.0", "@sentry/node": "^6.0.0", "@techpass/passport-openidconnect": "^0.3.0", From 2c91b89f021c742be54b6ed32cda6c8d0a2f37ad Mon Sep 17 00:00:00 2001 From: Andrew Kingston Date: Tue, 30 Nov 2021 14:32:18 +0000 Subject: [PATCH 043/175] Prevent data providers from using arbitrary context-providing components as sources --- .../builder/src/builderStore/dataBinding.js | 4 ++-- .../PropertyControls/DataSourceSelect.svelte | 21 +++++++++++-------- .../EventsEditor/actions/SaveRow.svelte | 4 ++-- 3 files changed, 16 insertions(+), 13 deletions(-) diff --git a/packages/builder/src/builderStore/dataBinding.js b/packages/builder/src/builderStore/dataBinding.js index 9a41ad2afc..cb09b33970 100644 --- a/packages/builder/src/builderStore/dataBinding.js +++ b/packages/builder/src/builderStore/dataBinding.js @@ -61,7 +61,7 @@ export const getComponentBindableProperties = (asset, componentId) => { /** * Gets all data provider components above a component. */ -export const getDataProviderComponents = (asset, componentId) => { +export const getContextProviderComponents = (asset, componentId) => { if (!asset || !componentId) { return [] } @@ -143,7 +143,7 @@ export const getDatasourceForProvider = (asset, component) => { */ const getContextBindings = (asset, componentId) => { // Extract any components which provide data contexts - const dataProviders = getDataProviderComponents(asset, componentId) + const dataProviders = getContextProviderComponents(asset, componentId) // Generate bindings for all matching components return getProviderContextBindings(asset, dataProviders) diff --git a/packages/builder/src/components/design/PropertiesPanel/PropertyControls/DataSourceSelect.svelte b/packages/builder/src/components/design/PropertiesPanel/PropertyControls/DataSourceSelect.svelte index bc15110c09..8f5f7ef807 100644 --- a/packages/builder/src/components/design/PropertiesPanel/PropertyControls/DataSourceSelect.svelte +++ b/packages/builder/src/components/design/PropertiesPanel/PropertyControls/DataSourceSelect.svelte @@ -1,5 +1,5 @@ -Define actions +Define actions Define what actions to run. - + From 7824fe3163af82a56bf6adf423588d2a27ca931d Mon Sep 17 00:00:00 2001 From: Budibase Release Bot <> Date: Wed, 1 Dec 2021 10:57:38 +0000 Subject: [PATCH 051/175] v1.0.3 --- lerna.json | 2 +- packages/auth/package.json | 2 +- packages/bbui/package.json | 2 +- packages/builder/package.json | 8 ++++---- packages/cli/package.json | 2 +- packages/client/package.json | 6 +++--- packages/server/package.json | 8 ++++---- packages/string-templates/package.json | 2 +- packages/worker/package.json | 6 +++--- 9 files changed, 19 insertions(+), 19 deletions(-) diff --git a/lerna.json b/lerna.json index ecdba97c2d..294808f4b9 100644 --- a/lerna.json +++ b/lerna.json @@ -1,5 +1,5 @@ { - "version": "1.0.2", + "version": "1.0.3", "npmClient": "yarn", "packages": [ "packages/*" diff --git a/packages/auth/package.json b/packages/auth/package.json index 36cf59d8c8..0be71ae7ff 100644 --- a/packages/auth/package.json +++ b/packages/auth/package.json @@ -1,6 +1,6 @@ { "name": "@budibase/auth", - "version": "1.0.2", + "version": "1.0.3", "description": "Authentication middlewares for budibase builder and apps", "main": "src/index.js", "author": "Budibase", diff --git a/packages/bbui/package.json b/packages/bbui/package.json index d2c7244cd7..edf08413fb 100644 --- a/packages/bbui/package.json +++ b/packages/bbui/package.json @@ -1,7 +1,7 @@ { "name": "@budibase/bbui", "description": "A UI solution used in the different Budibase projects.", - "version": "1.0.2", + "version": "1.0.3", "license": "MPL-2.0", "svelte": "src/index.js", "module": "dist/bbui.es.js", diff --git a/packages/builder/package.json b/packages/builder/package.json index 3761e3ae54..d846e1fac5 100644 --- a/packages/builder/package.json +++ b/packages/builder/package.json @@ -1,6 +1,6 @@ { "name": "@budibase/builder", - "version": "1.0.2", + "version": "1.0.3", "license": "GPL-3.0", "private": true, "scripts": { @@ -65,10 +65,10 @@ } }, "dependencies": { - "@budibase/bbui": "^1.0.2", - "@budibase/client": "^1.0.2", + "@budibase/bbui": "^1.0.3", + "@budibase/client": "^1.0.3", "@budibase/colorpicker": "1.1.2", - "@budibase/string-templates": "^1.0.2", + "@budibase/string-templates": "^1.0.3", "@sentry/browser": "5.19.1", "@spectrum-css/page": "^3.0.1", "@spectrum-css/vars": "^3.0.1", diff --git a/packages/cli/package.json b/packages/cli/package.json index d3c09d5be9..e7da79beb7 100644 --- a/packages/cli/package.json +++ b/packages/cli/package.json @@ -1,6 +1,6 @@ { "name": "@budibase/cli", - "version": "1.0.2", + "version": "1.0.3", "description": "Budibase CLI, for developers, self hosting and migrations.", "main": "src/index.js", "bin": { diff --git a/packages/client/package.json b/packages/client/package.json index 97835597a3..8b04e5a5e3 100644 --- a/packages/client/package.json +++ b/packages/client/package.json @@ -1,6 +1,6 @@ { "name": "@budibase/client", - "version": "1.0.2", + "version": "1.0.3", "license": "MPL-2.0", "module": "dist/budibase-client.js", "main": "dist/budibase-client.js", @@ -19,9 +19,9 @@ "dev:builder": "rollup -cw" }, "dependencies": { - "@budibase/bbui": "^1.0.2", + "@budibase/bbui": "^1.0.3", "@budibase/standard-components": "^0.9.139", - "@budibase/string-templates": "^1.0.2", + "@budibase/string-templates": "^1.0.3", "regexparam": "^1.3.0", "shortid": "^2.2.15", "svelte-spa-router": "^3.0.5" diff --git a/packages/server/package.json b/packages/server/package.json index 17ce9e6582..d86d303da2 100644 --- a/packages/server/package.json +++ b/packages/server/package.json @@ -1,7 +1,7 @@ { "name": "@budibase/server", "email": "hi@budibase.com", - "version": "1.0.2", + "version": "1.0.3", "description": "Budibase Web Server", "main": "src/index.ts", "repository": { @@ -69,9 +69,9 @@ "author": "Budibase", "license": "GPL-3.0", "dependencies": { - "@budibase/auth": "^1.0.2", - "@budibase/client": "^1.0.2", - "@budibase/string-templates": "^1.0.2", + "@budibase/auth": "^1.0.3", + "@budibase/client": "^1.0.3", + "@budibase/string-templates": "^1.0.3", "@bull-board/api": "^3.7.0", "@bull-board/koa": "^3.7.0", "@elastic/elasticsearch": "7.10.0", diff --git a/packages/string-templates/package.json b/packages/string-templates/package.json index ba3bd76dad..62acf460f1 100644 --- a/packages/string-templates/package.json +++ b/packages/string-templates/package.json @@ -1,6 +1,6 @@ { "name": "@budibase/string-templates", - "version": "1.0.2", + "version": "1.0.3", "description": "Handlebars wrapper for Budibase templating.", "main": "src/index.cjs", "module": "dist/bundle.mjs", diff --git a/packages/worker/package.json b/packages/worker/package.json index 1ec2488af3..91330aff09 100644 --- a/packages/worker/package.json +++ b/packages/worker/package.json @@ -1,7 +1,7 @@ { "name": "@budibase/worker", "email": "hi@budibase.com", - "version": "1.0.2", + "version": "1.0.3", "description": "Budibase background service", "main": "src/index.js", "repository": { @@ -29,8 +29,8 @@ "author": "Budibase", "license": "GPL-3.0", "dependencies": { - "@budibase/auth": "^1.0.2", - "@budibase/string-templates": "^1.0.2", + "@budibase/auth": "^1.0.3", + "@budibase/string-templates": "^1.0.3", "@koa/router": "^8.0.0", "@sentry/node": "^6.0.0", "@techpass/passport-openidconnect": "^0.3.0", From 820bb44b18db394a99ff2eceba7dd1f625f2c995 Mon Sep 17 00:00:00 2001 From: Budibase Staging Release Bot <> Date: Wed, 1 Dec 2021 11:52:00 +0000 Subject: [PATCH 052/175] v1.0.3-alpha.0 --- lerna.json | 2 +- packages/auth/package.json | 2 +- packages/bbui/package.json | 2 +- packages/builder/package.json | 8 ++++---- packages/cli/package.json | 2 +- packages/client/package.json | 6 +++--- packages/server/package.json | 8 ++++---- packages/string-templates/package.json | 2 +- packages/worker/package.json | 6 +++--- 9 files changed, 19 insertions(+), 19 deletions(-) diff --git a/lerna.json b/lerna.json index ecdba97c2d..5ba227120b 100644 --- a/lerna.json +++ b/lerna.json @@ -1,5 +1,5 @@ { - "version": "1.0.2", + "version": "1.0.3-alpha.0", "npmClient": "yarn", "packages": [ "packages/*" diff --git a/packages/auth/package.json b/packages/auth/package.json index 36cf59d8c8..782f42fd7f 100644 --- a/packages/auth/package.json +++ b/packages/auth/package.json @@ -1,6 +1,6 @@ { "name": "@budibase/auth", - "version": "1.0.2", + "version": "1.0.3-alpha.0", "description": "Authentication middlewares for budibase builder and apps", "main": "src/index.js", "author": "Budibase", diff --git a/packages/bbui/package.json b/packages/bbui/package.json index d2c7244cd7..41829cf4a4 100644 --- a/packages/bbui/package.json +++ b/packages/bbui/package.json @@ -1,7 +1,7 @@ { "name": "@budibase/bbui", "description": "A UI solution used in the different Budibase projects.", - "version": "1.0.2", + "version": "1.0.3-alpha.0", "license": "MPL-2.0", "svelte": "src/index.js", "module": "dist/bbui.es.js", diff --git a/packages/builder/package.json b/packages/builder/package.json index 3761e3ae54..f542d6cf39 100644 --- a/packages/builder/package.json +++ b/packages/builder/package.json @@ -1,6 +1,6 @@ { "name": "@budibase/builder", - "version": "1.0.2", + "version": "1.0.3-alpha.0", "license": "GPL-3.0", "private": true, "scripts": { @@ -65,10 +65,10 @@ } }, "dependencies": { - "@budibase/bbui": "^1.0.2", - "@budibase/client": "^1.0.2", + "@budibase/bbui": "^1.0.3-alpha.0", + "@budibase/client": "^1.0.3-alpha.0", "@budibase/colorpicker": "1.1.2", - "@budibase/string-templates": "^1.0.2", + "@budibase/string-templates": "^1.0.3-alpha.0", "@sentry/browser": "5.19.1", "@spectrum-css/page": "^3.0.1", "@spectrum-css/vars": "^3.0.1", diff --git a/packages/cli/package.json b/packages/cli/package.json index d3c09d5be9..52ec593393 100644 --- a/packages/cli/package.json +++ b/packages/cli/package.json @@ -1,6 +1,6 @@ { "name": "@budibase/cli", - "version": "1.0.2", + "version": "1.0.3-alpha.0", "description": "Budibase CLI, for developers, self hosting and migrations.", "main": "src/index.js", "bin": { diff --git a/packages/client/package.json b/packages/client/package.json index 97835597a3..3375644932 100644 --- a/packages/client/package.json +++ b/packages/client/package.json @@ -1,6 +1,6 @@ { "name": "@budibase/client", - "version": "1.0.2", + "version": "1.0.3-alpha.0", "license": "MPL-2.0", "module": "dist/budibase-client.js", "main": "dist/budibase-client.js", @@ -19,9 +19,9 @@ "dev:builder": "rollup -cw" }, "dependencies": { - "@budibase/bbui": "^1.0.2", + "@budibase/bbui": "^1.0.3-alpha.0", "@budibase/standard-components": "^0.9.139", - "@budibase/string-templates": "^1.0.2", + "@budibase/string-templates": "^1.0.3-alpha.0", "regexparam": "^1.3.0", "shortid": "^2.2.15", "svelte-spa-router": "^3.0.5" diff --git a/packages/server/package.json b/packages/server/package.json index 17ce9e6582..c7ab5ccb67 100644 --- a/packages/server/package.json +++ b/packages/server/package.json @@ -1,7 +1,7 @@ { "name": "@budibase/server", "email": "hi@budibase.com", - "version": "1.0.2", + "version": "1.0.3-alpha.0", "description": "Budibase Web Server", "main": "src/index.ts", "repository": { @@ -69,9 +69,9 @@ "author": "Budibase", "license": "GPL-3.0", "dependencies": { - "@budibase/auth": "^1.0.2", - "@budibase/client": "^1.0.2", - "@budibase/string-templates": "^1.0.2", + "@budibase/auth": "^1.0.3-alpha.0", + "@budibase/client": "^1.0.3-alpha.0", + "@budibase/string-templates": "^1.0.3-alpha.0", "@bull-board/api": "^3.7.0", "@bull-board/koa": "^3.7.0", "@elastic/elasticsearch": "7.10.0", diff --git a/packages/string-templates/package.json b/packages/string-templates/package.json index ba3bd76dad..e405cf607d 100644 --- a/packages/string-templates/package.json +++ b/packages/string-templates/package.json @@ -1,6 +1,6 @@ { "name": "@budibase/string-templates", - "version": "1.0.2", + "version": "1.0.3-alpha.0", "description": "Handlebars wrapper for Budibase templating.", "main": "src/index.cjs", "module": "dist/bundle.mjs", diff --git a/packages/worker/package.json b/packages/worker/package.json index 1ec2488af3..38cf957e32 100644 --- a/packages/worker/package.json +++ b/packages/worker/package.json @@ -1,7 +1,7 @@ { "name": "@budibase/worker", "email": "hi@budibase.com", - "version": "1.0.2", + "version": "1.0.3-alpha.0", "description": "Budibase background service", "main": "src/index.js", "repository": { @@ -29,8 +29,8 @@ "author": "Budibase", "license": "GPL-3.0", "dependencies": { - "@budibase/auth": "^1.0.2", - "@budibase/string-templates": "^1.0.2", + "@budibase/auth": "^1.0.3-alpha.0", + "@budibase/string-templates": "^1.0.3-alpha.0", "@koa/router": "^8.0.0", "@sentry/node": "^6.0.0", "@techpass/passport-openidconnect": "^0.3.0", From 6c5a5dc192e1cee1e4f166ae74f6d279c4f2983d Mon Sep 17 00:00:00 2001 From: Budibase Release Bot <> Date: Wed, 1 Dec 2021 13:49:09 +0000 Subject: [PATCH 053/175] v1.0.4 --- lerna.json | 2 +- packages/auth/package.json | 2 +- packages/bbui/package.json | 2 +- packages/builder/package.json | 8 ++++---- packages/cli/package.json | 2 +- packages/client/package.json | 6 +++--- packages/server/package.json | 8 ++++---- packages/string-templates/package.json | 2 +- packages/worker/package.json | 6 +++--- 9 files changed, 19 insertions(+), 19 deletions(-) diff --git a/lerna.json b/lerna.json index 294808f4b9..4db25a14c5 100644 --- a/lerna.json +++ b/lerna.json @@ -1,5 +1,5 @@ { - "version": "1.0.3", + "version": "1.0.4", "npmClient": "yarn", "packages": [ "packages/*" diff --git a/packages/auth/package.json b/packages/auth/package.json index 0be71ae7ff..7ce3784639 100644 --- a/packages/auth/package.json +++ b/packages/auth/package.json @@ -1,6 +1,6 @@ { "name": "@budibase/auth", - "version": "1.0.3", + "version": "1.0.4", "description": "Authentication middlewares for budibase builder and apps", "main": "src/index.js", "author": "Budibase", diff --git a/packages/bbui/package.json b/packages/bbui/package.json index edf08413fb..c0431b33a1 100644 --- a/packages/bbui/package.json +++ b/packages/bbui/package.json @@ -1,7 +1,7 @@ { "name": "@budibase/bbui", "description": "A UI solution used in the different Budibase projects.", - "version": "1.0.3", + "version": "1.0.4", "license": "MPL-2.0", "svelte": "src/index.js", "module": "dist/bbui.es.js", diff --git a/packages/builder/package.json b/packages/builder/package.json index d846e1fac5..acaef5bbc5 100644 --- a/packages/builder/package.json +++ b/packages/builder/package.json @@ -1,6 +1,6 @@ { "name": "@budibase/builder", - "version": "1.0.3", + "version": "1.0.4", "license": "GPL-3.0", "private": true, "scripts": { @@ -65,10 +65,10 @@ } }, "dependencies": { - "@budibase/bbui": "^1.0.3", - "@budibase/client": "^1.0.3", + "@budibase/bbui": "^1.0.4", + "@budibase/client": "^1.0.4", "@budibase/colorpicker": "1.1.2", - "@budibase/string-templates": "^1.0.3", + "@budibase/string-templates": "^1.0.4", "@sentry/browser": "5.19.1", "@spectrum-css/page": "^3.0.1", "@spectrum-css/vars": "^3.0.1", diff --git a/packages/cli/package.json b/packages/cli/package.json index e7da79beb7..613b448807 100644 --- a/packages/cli/package.json +++ b/packages/cli/package.json @@ -1,6 +1,6 @@ { "name": "@budibase/cli", - "version": "1.0.3", + "version": "1.0.4", "description": "Budibase CLI, for developers, self hosting and migrations.", "main": "src/index.js", "bin": { diff --git a/packages/client/package.json b/packages/client/package.json index 8b04e5a5e3..8297503485 100644 --- a/packages/client/package.json +++ b/packages/client/package.json @@ -1,6 +1,6 @@ { "name": "@budibase/client", - "version": "1.0.3", + "version": "1.0.4", "license": "MPL-2.0", "module": "dist/budibase-client.js", "main": "dist/budibase-client.js", @@ -19,9 +19,9 @@ "dev:builder": "rollup -cw" }, "dependencies": { - "@budibase/bbui": "^1.0.3", + "@budibase/bbui": "^1.0.4", "@budibase/standard-components": "^0.9.139", - "@budibase/string-templates": "^1.0.3", + "@budibase/string-templates": "^1.0.4", "regexparam": "^1.3.0", "shortid": "^2.2.15", "svelte-spa-router": "^3.0.5" diff --git a/packages/server/package.json b/packages/server/package.json index d86d303da2..8088c7acdd 100644 --- a/packages/server/package.json +++ b/packages/server/package.json @@ -1,7 +1,7 @@ { "name": "@budibase/server", "email": "hi@budibase.com", - "version": "1.0.3", + "version": "1.0.4", "description": "Budibase Web Server", "main": "src/index.ts", "repository": { @@ -69,9 +69,9 @@ "author": "Budibase", "license": "GPL-3.0", "dependencies": { - "@budibase/auth": "^1.0.3", - "@budibase/client": "^1.0.3", - "@budibase/string-templates": "^1.0.3", + "@budibase/auth": "^1.0.4", + "@budibase/client": "^1.0.4", + "@budibase/string-templates": "^1.0.4", "@bull-board/api": "^3.7.0", "@bull-board/koa": "^3.7.0", "@elastic/elasticsearch": "7.10.0", diff --git a/packages/string-templates/package.json b/packages/string-templates/package.json index 62acf460f1..669382ad02 100644 --- a/packages/string-templates/package.json +++ b/packages/string-templates/package.json @@ -1,6 +1,6 @@ { "name": "@budibase/string-templates", - "version": "1.0.3", + "version": "1.0.4", "description": "Handlebars wrapper for Budibase templating.", "main": "src/index.cjs", "module": "dist/bundle.mjs", diff --git a/packages/worker/package.json b/packages/worker/package.json index 91330aff09..43214d5cb6 100644 --- a/packages/worker/package.json +++ b/packages/worker/package.json @@ -1,7 +1,7 @@ { "name": "@budibase/worker", "email": "hi@budibase.com", - "version": "1.0.3", + "version": "1.0.4", "description": "Budibase background service", "main": "src/index.js", "repository": { @@ -29,8 +29,8 @@ "author": "Budibase", "license": "GPL-3.0", "dependencies": { - "@budibase/auth": "^1.0.3", - "@budibase/string-templates": "^1.0.3", + "@budibase/auth": "^1.0.4", + "@budibase/string-templates": "^1.0.4", "@koa/router": "^8.0.0", "@sentry/node": "^6.0.0", "@techpass/passport-openidconnect": "^0.3.0", From 60a07193d22113c69b919ea368bfc12c13ff1556 Mon Sep 17 00:00:00 2001 From: Budibase Staging Release Bot <> Date: Wed, 1 Dec 2021 14:28:00 +0000 Subject: [PATCH 054/175] v1.0.5-alpha.0 --- lerna.json | 2 +- packages/auth/package.json | 2 +- packages/bbui/package.json | 2 +- packages/builder/package.json | 8 ++++---- packages/cli/package.json | 2 +- packages/client/package.json | 6 +++--- packages/server/package.json | 8 ++++---- packages/string-templates/package.json | 2 +- packages/worker/package.json | 6 +++--- 9 files changed, 19 insertions(+), 19 deletions(-) diff --git a/lerna.json b/lerna.json index 4db25a14c5..1a7e49a54e 100644 --- a/lerna.json +++ b/lerna.json @@ -1,5 +1,5 @@ { - "version": "1.0.4", + "version": "1.0.5-alpha.0", "npmClient": "yarn", "packages": [ "packages/*" diff --git a/packages/auth/package.json b/packages/auth/package.json index 7ce3784639..0748fadcf2 100644 --- a/packages/auth/package.json +++ b/packages/auth/package.json @@ -1,6 +1,6 @@ { "name": "@budibase/auth", - "version": "1.0.4", + "version": "1.0.5-alpha.0", "description": "Authentication middlewares for budibase builder and apps", "main": "src/index.js", "author": "Budibase", diff --git a/packages/bbui/package.json b/packages/bbui/package.json index c0431b33a1..44f3536011 100644 --- a/packages/bbui/package.json +++ b/packages/bbui/package.json @@ -1,7 +1,7 @@ { "name": "@budibase/bbui", "description": "A UI solution used in the different Budibase projects.", - "version": "1.0.4", + "version": "1.0.5-alpha.0", "license": "MPL-2.0", "svelte": "src/index.js", "module": "dist/bbui.es.js", diff --git a/packages/builder/package.json b/packages/builder/package.json index acaef5bbc5..3145a9e5ed 100644 --- a/packages/builder/package.json +++ b/packages/builder/package.json @@ -1,6 +1,6 @@ { "name": "@budibase/builder", - "version": "1.0.4", + "version": "1.0.5-alpha.0", "license": "GPL-3.0", "private": true, "scripts": { @@ -65,10 +65,10 @@ } }, "dependencies": { - "@budibase/bbui": "^1.0.4", - "@budibase/client": "^1.0.4", + "@budibase/bbui": "^1.0.5-alpha.0", + "@budibase/client": "^1.0.5-alpha.0", "@budibase/colorpicker": "1.1.2", - "@budibase/string-templates": "^1.0.4", + "@budibase/string-templates": "^1.0.5-alpha.0", "@sentry/browser": "5.19.1", "@spectrum-css/page": "^3.0.1", "@spectrum-css/vars": "^3.0.1", diff --git a/packages/cli/package.json b/packages/cli/package.json index 613b448807..f34117c22c 100644 --- a/packages/cli/package.json +++ b/packages/cli/package.json @@ -1,6 +1,6 @@ { "name": "@budibase/cli", - "version": "1.0.4", + "version": "1.0.5-alpha.0", "description": "Budibase CLI, for developers, self hosting and migrations.", "main": "src/index.js", "bin": { diff --git a/packages/client/package.json b/packages/client/package.json index 8297503485..bd6e562691 100644 --- a/packages/client/package.json +++ b/packages/client/package.json @@ -1,6 +1,6 @@ { "name": "@budibase/client", - "version": "1.0.4", + "version": "1.0.5-alpha.0", "license": "MPL-2.0", "module": "dist/budibase-client.js", "main": "dist/budibase-client.js", @@ -19,9 +19,9 @@ "dev:builder": "rollup -cw" }, "dependencies": { - "@budibase/bbui": "^1.0.4", + "@budibase/bbui": "^1.0.5-alpha.0", "@budibase/standard-components": "^0.9.139", - "@budibase/string-templates": "^1.0.4", + "@budibase/string-templates": "^1.0.5-alpha.0", "regexparam": "^1.3.0", "shortid": "^2.2.15", "svelte-spa-router": "^3.0.5" diff --git a/packages/server/package.json b/packages/server/package.json index 8088c7acdd..955dd0b1f4 100644 --- a/packages/server/package.json +++ b/packages/server/package.json @@ -1,7 +1,7 @@ { "name": "@budibase/server", "email": "hi@budibase.com", - "version": "1.0.4", + "version": "1.0.5-alpha.0", "description": "Budibase Web Server", "main": "src/index.ts", "repository": { @@ -69,9 +69,9 @@ "author": "Budibase", "license": "GPL-3.0", "dependencies": { - "@budibase/auth": "^1.0.4", - "@budibase/client": "^1.0.4", - "@budibase/string-templates": "^1.0.4", + "@budibase/auth": "^1.0.5-alpha.0", + "@budibase/client": "^1.0.5-alpha.0", + "@budibase/string-templates": "^1.0.5-alpha.0", "@bull-board/api": "^3.7.0", "@bull-board/koa": "^3.7.0", "@elastic/elasticsearch": "7.10.0", diff --git a/packages/string-templates/package.json b/packages/string-templates/package.json index 669382ad02..145800dbb5 100644 --- a/packages/string-templates/package.json +++ b/packages/string-templates/package.json @@ -1,6 +1,6 @@ { "name": "@budibase/string-templates", - "version": "1.0.4", + "version": "1.0.5-alpha.0", "description": "Handlebars wrapper for Budibase templating.", "main": "src/index.cjs", "module": "dist/bundle.mjs", diff --git a/packages/worker/package.json b/packages/worker/package.json index 43214d5cb6..6917856ceb 100644 --- a/packages/worker/package.json +++ b/packages/worker/package.json @@ -1,7 +1,7 @@ { "name": "@budibase/worker", "email": "hi@budibase.com", - "version": "1.0.4", + "version": "1.0.5-alpha.0", "description": "Budibase background service", "main": "src/index.js", "repository": { @@ -29,8 +29,8 @@ "author": "Budibase", "license": "GPL-3.0", "dependencies": { - "@budibase/auth": "^1.0.4", - "@budibase/string-templates": "^1.0.4", + "@budibase/auth": "^1.0.5-alpha.0", + "@budibase/string-templates": "^1.0.5-alpha.0", "@koa/router": "^8.0.0", "@sentry/node": "^6.0.0", "@techpass/passport-openidconnect": "^0.3.0", From e003f28e2750f1cae6a8351cc0ff2ff5843d0edc Mon Sep 17 00:00:00 2001 From: Martin McKeaveney Date: Wed, 1 Dec 2021 21:33:38 +0100 Subject: [PATCH 055/175] completely automate digitalocean release with hashicorp packer --- hosting/.env | 1 - hosting/digitalocean/README.md | 19 + hosting/digitalocean/build.sh | 2 + .../files/etc/update-motd.d/99-one-click | 19 + .../lib/cloud/scripts/per-instance/001_onboot | 22 + hosting/digitalocean/scripts/90-cleanup.sh | 49 ++ hosting/digitalocean/scripts/99-img_check.sh | 617 ++++++++++++++++++ hosting/digitalocean/template.json | 65 ++ packages/builder/package.json | 2 +- 9 files changed, 794 insertions(+), 2 deletions(-) delete mode 120000 hosting/.env create mode 100644 hosting/digitalocean/README.md create mode 100755 hosting/digitalocean/build.sh create mode 100644 hosting/digitalocean/files/etc/update-motd.d/99-one-click create mode 100755 hosting/digitalocean/files/var/lib/cloud/scripts/per-instance/001_onboot create mode 100644 hosting/digitalocean/scripts/90-cleanup.sh create mode 100644 hosting/digitalocean/scripts/99-img_check.sh create mode 100644 hosting/digitalocean/template.json diff --git a/hosting/.env b/hosting/.env deleted file mode 120000 index bb1b54ad77..0000000000 --- a/hosting/.env +++ /dev/null @@ -1 +0,0 @@ -hosting.properties \ No newline at end of file diff --git a/hosting/digitalocean/README.md b/hosting/digitalocean/README.md new file mode 100644 index 0000000000..07370b1b87 --- /dev/null +++ b/hosting/digitalocean/README.md @@ -0,0 +1,19 @@ +# Budibase DigitalOcean One Click +You will find in this directory configuration for packaging and creating a snapshot for the Budibase 1 click Digitalocean build. We use this configuration to have an immutable and reproducible build package for Digitalocean, that rarely needs updated. + +## Prerequisites +You must install Hashicorps `packer` to build the snapshot for digitalocean. Follow the instructions to install packer [here](https://learn.hashicorp.com/tutorials/packer/get-started-install-cli) + +You must have the `DIGITALOCEAN_TOKEN` environment variable set, so that packer can reach out to the digitalocean API for build information. + +## Building +Just run the following command: +``` +./build.sh +``` + +## Uploading to Marketplace +You can upload the snapshot to the Digitalocean vendor portal at the following link (Requires vendor account): + +https://marketplace.digitalocean.com/vendorportal + diff --git a/hosting/digitalocean/build.sh b/hosting/digitalocean/build.sh new file mode 100755 index 0000000000..743629ca12 --- /dev/null +++ b/hosting/digitalocean/build.sh @@ -0,0 +1,2 @@ +#!/bin/bash +packer build template.json diff --git a/hosting/digitalocean/files/etc/update-motd.d/99-one-click b/hosting/digitalocean/files/etc/update-motd.d/99-one-click new file mode 100644 index 0000000000..0f087a26ee --- /dev/null +++ b/hosting/digitalocean/files/etc/update-motd.d/99-one-click @@ -0,0 +1,19 @@ +#!/bin/sh +# +# Configured as part of the DigitalOcean 1-Click Image build process + +myip=$(hostname -I | awk '{print$1}') +cat <> .env +done /root/.bash_history +unset HISTFILE +find /var/log -mtime -1 -type f -exec truncate -s 0 {} \; +rm -rf /var/log/*.gz /var/log/*.[0-9] /var/log/*-???????? +rm -rf /var/lib/cloud/instances/* +rm -f /root/.ssh/authorized_keys /etc/ssh/*key* +touch /etc/ssh/revoked_keys +chmod 600 /etc/ssh/revoked_keys + +# Securely erase the unused portion of the filesystem +GREEN='\033[0;32m' +NC='\033[0m' +printf "\n${GREEN}Writing zeros to the remaining disk space to securely +erase the unused portion of the file system. +Depending on your disk size this may take several minutes. +The secure erase will complete successfully when you see:${NC} + dd: writing to '/zerofile': No space left on device\n +Beginning secure erase now\n" + +dd if=/dev/zero of=/zerofile bs=4096 || rm /zerofile diff --git a/hosting/digitalocean/scripts/99-img_check.sh b/hosting/digitalocean/scripts/99-img_check.sh new file mode 100644 index 0000000000..32a9e77eac --- /dev/null +++ b/hosting/digitalocean/scripts/99-img_check.sh @@ -0,0 +1,617 @@ +#!/bin/bash + +# DigitalOcean Marketplace Image Validation Tool +# © 2021 DigitalOcean LLC. +# This code is licensed under Apache 2.0 license (see LICENSE.md for details) + +VERSION="v. 1.6" +RUNDATE=$( date ) + +# Script should be run with SUDO +if [ "$EUID" -ne 0 ] + then echo "[Error] - This script must be run with sudo or as the root user." + exit 1 +fi + +STATUS=0 +PASS=0 +WARN=0 +FAIL=0 + +# $1 == command to check for +# returns: 0 == true, 1 == false +cmdExists() { + if command -v "$1" > /dev/null 2>&1; then + return 0 + else + return 1 + fi +} + +function getDistro { + if [ -f /etc/os-release ]; then + # freedesktop.org and systemd + . /etc/os-release + OS=$NAME + VER=$VERSION_ID +elif type lsb_release >/dev/null 2>&1; then + # linuxbase.org + OS=$(lsb_release -si) + VER=$(lsb_release -sr) +elif [ -f /etc/lsb-release ]; then + # For some versions of Debian/Ubuntu without lsb_release command + . /etc/lsb-release + OS=$DISTRIB_ID + VER=$DISTRIB_RELEASE +elif [ -f /etc/debian_version ]; then + # Older Debian/Ubuntu/etc. + OS=Debian + VER=$(cat /etc/debian_version) +elif [ -f /etc/SuSe-release ]; then + # Older SuSE/etc. + : +elif [ -f /etc/redhat-release ]; then + # Older Red Hat, CentOS, etc. + VER=$( cat /etc/redhat-release | cut -d" " -f3 | cut -d "." -f1) + d=$( cat /etc/redhat-release | cut -d" " -f1 | cut -d "." -f1) + if [[ $d == "CentOS" ]]; then + OS="CentOS Linux" + fi +else + # Fall back to uname, e.g. "Linux ", also works for BSD, etc. + OS=$(uname -s) + VER=$(uname -r) +fi +} +function loadPasswords { +SHADOW=$(cat /etc/shadow) +} + +function checkAgent { + # Check for the presence of the do-agent in the filesystem + if [ -d /var/opt/digitalocean/do-agent ];then + echo -en "\e[41m[FAIL]\e[0m DigitalOcean Monitoring Agent detected.\n" + ((FAIL++)) + STATUS=2 + if [[ $OS == "CentOS Linux" ]] || [[ $OS == "CentOS Stream" ]] || [[ $OS == "Rocky Linux" ]]; then + echo "The agent can be removed with 'sudo yum remove do-agent' " + elif [[ $OS == "Ubuntu" ]]; then + echo "The agent can be removed with 'sudo apt-get purge do-agent' " + fi + else + echo -en "\e[32m[PASS]\e[0m DigitalOcean Monitoring agent was not found\n" + ((PASS++)) + fi +} + +function checkLogs { + cp_ignore="/var/log/cpanel-install.log" + echo -en "\nChecking for log files in /var/log\n\n" + # Check if there are log archives or log files that have not been recently cleared. + for f in /var/log/*-????????; do + [[ -e $f ]] || break + if [ $f != $cp_ignore ]; then + echo -en "\e[93m[WARN]\e[0m Log archive ${f} found\n" + ((WARN++)) + if [[ $STATUS != 2 ]]; then + STATUS=1 + fi + fi + done + for f in /var/log/*.[0-9];do + [[ -e $f ]] || break + echo -en "\e[93m[WARN]\e[0m Log archive ${f} found\n" + ((WARN++)) + if [[ $STATUS != 2 ]]; then + STATUS=1 + fi + done + for f in /var/log/*.log; do + [[ -e $f ]] || break + if [[ "${f}" = '/var/log/lfd.log' && "$( cat "${f}" | egrep -v '/var/log/messages has been reset| Watching /var/log/messages' | wc -c)" -gt 50 ]]; then + if [ $f != $cp_ignore ]; then + echo -en "\e[93m[WARN]\e[0m un-cleared log file, ${f} found\n" + ((WARN++)) + if [[ $STATUS != 2 ]]; then + STATUS=1 + fi + fi + elif [[ "${f}" != '/var/log/lfd.log' && "$( cat "${f}" | wc -c)" -gt 50 ]]; then + if [ $f != $cp_ignore ]; then + echo -en "\e[93m[WARN]\e[0m un-cleared log file, ${f} found\n" + ((WARN++)) + if [[ $STATUS != 2 ]]; then + STATUS=1 + fi + fi + fi + done +} +function checkTMP { + # Check the /tmp directory to ensure it is empty. Warn on any files found. + return 1 +} +function checkRoot { + user="root" + uhome="/root" + for usr in $SHADOW + do + IFS=':' read -r -a u <<< "$usr" + if [[ "${u[0]}" == "${user}" ]]; then + if [[ ${u[1]} == "!" ]] || [[ ${u[1]} == "!!" ]] || [[ ${u[1]} == "*" ]]; then + echo -en "\e[32m[PASS]\e[0m User ${user} has no password set.\n" + ((PASS++)) + else + echo -en "\e[41m[FAIL]\e[0m User ${user} has a password set on their account.\n" + ((FAIL++)) + STATUS=2 + fi + fi + done + if [ -d ${uhome}/ ]; then + if [ -d ${uhome}/.ssh/ ]; then + if ls ${uhome}/.ssh/*> /dev/null 2>&1; then + for key in ${uhome}/.ssh/* + do + if [ "${key}" == "${uhome}/.ssh/authorized_keys" ]; then + + if [ "$( cat "${key}" | wc -c)" -gt 50 ]; then + echo -en "\e[41m[FAIL]\e[0m User \e[1m${user}\e[0m has a populated authorized_keys file in \e[93m${key}\e[0m\n" + akey=$(cat ${key}) + echo "File Contents:" + echo $akey + echo "--------------" + ((FAIL++)) + STATUS=2 + fi + elif [ "${key}" == "${uhome}/.ssh/id_rsa" ]; then + if [ "$( cat "${key}" | wc -c)" -gt 0 ]; then + echo -en "\e[41m[FAIL]\e[0m User \e[1m${user}\e[0m has a private key file in \e[93m${key}\e[0m\n" + akey=$(cat ${key}) + echo "File Contents:" + echo $akey + echo "--------------" + ((FAIL++)) + STATUS=2 + else + echo -en "\e[93m[WARN]\e[0m User \e[1m${user}\e[0m has empty private key file in \e[93m${key}\e[0m\n" + ((WARN++)) + if [[ $STATUS != 2 ]]; then + STATUS=1 + fi + fi + elif [ "${key}" != "${uhome}/.ssh/known_hosts" ]; then + echo -en "\e[93m[WARN]\e[0m User \e[1m${user}\e[0m has a file in their .ssh directory at \e[93m${key}\e[0m\n" + ((WARN++)) + if [[ $STATUS != 2 ]]; then + STATUS=1 + fi + else + if [ "$( cat "${key}" | wc -c)" -gt 50 ]; then + echo -en "\e[93m[WARN]\e[0m User \e[1m${user}\e[0m has a populated known_hosts file in \e[93m${key}\e[0m\n" + ((WARN++)) + if [[ $STATUS != 2 ]]; then + STATUS=1 + fi + fi + fi + done + else + echo -en "\e[32m[ OK ]\e[0m User \e[1m${user}\e[0m has no SSH keys present\n" + fi + else + echo -en "\e[32m[ OK ]\e[0m User \e[1m${user}\e[0m does not have an .ssh directory\n" + fi + if [ -f /root/.bash_history ];then + + BH_S=$( cat /root/.bash_history | wc -c) + + if [[ $BH_S -lt 200 ]]; then + echo -en "\e[32m[PASS]\e[0m ${user}'s Bash History appears to have been cleared\n" + ((PASS++)) + else + echo -en "\e[41m[FAIL]\e[0m ${user}'s Bash History should be cleared to prevent sensitive information from leaking\n" + ((FAIL++)) + STATUS=2 + fi + + return 1; + else + echo -en "\e[32m[PASS]\e[0m The Root User's Bash History is not present\n" + ((PASS++)) + fi + else + echo -en "\e[32m[ OK ]\e[0m User \e[1m${user}\e[0m does not have a directory in /home\n" + fi + echo -en "\n\n" + return 1 +} + +function checkUsers { + # Check each user-created account + for user in $(awk -F: '$3 >= 1000 && $1 != "nobody" {print $1}' /etc/passwd;) + do + # Skip some other non-user system accounts + if [[ $user == "centos" ]]; then + : + elif [[ $user == "nfsnobody" ]]; then + : + else + echo -en "\nChecking user: ${user}...\n" + for usr in $SHADOW + do + IFS=':' read -r -a u <<< "$usr" + if [[ "${u[0]}" == "${user}" ]]; then + if [[ ${u[1]} == "!" ]] || [[ ${u[1]} == "!!" ]] || [[ ${u[1]} == "*" ]]; then + echo -en "\e[32m[PASS]\e[0m User ${user} has no password set.\n" + ((PASS++)) + else + echo -en "\e[41m[FAIL]\e[0m User ${user} has a password set on their account. Only system users are allowed on the image.\n" + ((FAIL++)) + STATUS=2 + fi + fi + done + #echo "User Found: ${user}" + uhome="/home/${user}" + if [ -d "${uhome}/" ]; then + if [ -d "${uhome}/.ssh/" ]; then + if ls "${uhome}/.ssh/*"> /dev/null 2>&1; then + for key in ${uhome}/.ssh/* + do + if [ "${key}" == "${uhome}/.ssh/authorized_keys" ]; then + if [ "$( cat "${key}" | wc -c)" -gt 50 ]; then + echo -en "\e[41m[FAIL]\e[0m User \e[1m${user}\e[0m has a populated authorized_keys file in \e[93m${key}\e[0m\n" + akey=$(cat ${key}) + echo "File Contents:" + echo $akey + echo "--------------" + ((FAIL++)) + STATUS=2 + fi + elif [ "${key}" == "${uhome}/.ssh/id_rsa" ]; then + if [ "$( cat "${key}" | wc -c)" -gt 0 ]; then + echo -en "\e[41m[FAIL]\e[0m User \e[1m${user}\e[0m has a private key file in \e[93m${key}\e[0m\n" + akey=$(cat ${key}) + echo "File Contents:" + echo $akey + echo "--------------" + ((FAIL++)) + STATUS=2 + else + echo -en "\e[93m[WARN]\e[0m User \e[1m${user}\e[0m has empty private key file in \e[93m${key}\e[0m\n" + ((WARN++)) + if [[ $STATUS != 2 ]]; then + STATUS=1 + fi + fi + elif [ "${key}" != "${uhome}/.ssh/known_hosts" ]; then + + echo -en "\e[93m[WARN]\e[0m User \e[1m${user}\e[0m has a file in their .ssh directory named \e[93m${key}\e[0m\n" + ((WARN++)) + if [[ $STATUS != 2 ]]; then + STATUS=1 + fi + + else + if [ "$( cat "${key}" | wc -c)" -gt 50 ]; then + echo -en "\e[93m[WARN]\e[0m User \e[1m${user}\e[0m has a known_hosts file in \e[93m${key}\e[0m\n" + ((WARN++)) + if [[ $STATUS != 2 ]]; then + STATUS=1 + fi + fi + fi + + + done + else + echo -en "\e[32m[ OK ]\e[0m User \e[1m${user}\e[0m has no SSH keys present\n" + fi + else + echo -en "\e[32m[ OK ]\e[0m User \e[1m${user}\e[0m does not have an .ssh directory\n" + fi + else + echo -en "\e[32m[ OK ]\e[0m User \e[1m${user}\e[0m does not have a directory in /home\n" + fi + + # Check for an uncleared .bash_history for this user + if [ -f "${uhome}/.bash_history" ]; then + BH_S=$( cat "${uhome}/.bash_history" | wc -c ) + + if [[ $BH_S -lt 200 ]]; then + echo -en "\e[32m[PASS]\e[0m ${user}'s Bash History appears to have been cleared\n" + ((PASS++)) + else + echo -en "\e[41m[FAIL]\e[0m ${user}'s Bash History should be cleared to prevent sensitive information from leaking\n" + ((FAIL++)) + STATUS=2 + + fi + echo -en "\n\n" + fi + fi + done +} +function checkFirewall { + + if [[ $OS == "Ubuntu" ]]; then + fw="ufw" + ufwa=$(ufw status |head -1| sed -e "s/^Status:\ //") + if [[ $ufwa == "active" ]]; then + FW_VER="\e[32m[PASS]\e[0m Firewall service (${fw}) is active\n" + ((PASS++)) + else + FW_VER="\e[93m[WARN]\e[0m No firewall is configured. Ensure ${fw} is installed and configured\n" + ((WARN++)) + fi + elif [[ $OS == "CentOS Linux" ]] || [[ $OS == "CentOS Stream" ]] || [[ $OS == "Rocky Linux" ]]; then + if [ -f /usr/lib/systemd/system/csf.service ]; then + fw="csf" + if [[ $(systemctl status $fw >/dev/null 2>&1) ]]; then + + FW_VER="\e[32m[PASS]\e[0m Firewall service (${fw}) is active\n" + ((PASS++)) + elif cmdExists "firewall-cmd"; then + if [[ $(systemctl is-active firewalld >/dev/null 2>&1 && echo 1 || echo 0) ]]; then + FW_VER="\e[32m[PASS]\e[0m Firewall service (${fw}) is active\n" + ((PASS++)) + else + FW_VER="\e[93m[WARN]\e[0m No firewall is configured. Ensure ${fw} is installed and configured\n" + ((WARN++)) + fi + else + FW_VER="\e[93m[WARN]\e[0m No firewall is configured. Ensure ${fw} is installed and configured\n" + ((WARN++)) + fi + else + fw="firewalld" + if [[ $(systemctl is-active firewalld >/dev/null 2>&1 && echo 1 || echo 0) ]]; then + FW_VER="\e[32m[PASS]\e[0m Firewall service (${fw}) is active\n" + ((PASS++)) + else + FW_VER="\e[93m[WARN]\e[0m No firewall is configured. Ensure ${fw} is installed and configured\n" + ((WARN++)) + fi + fi + elif [[ "$OS" =~ Debian.* ]]; then + # user could be using a number of different services for managing their firewall + # we will check some of the most common + if cmdExists 'ufw'; then + fw="ufw" + ufwa=$(ufw status |head -1| sed -e "s/^Status:\ //") + if [[ $ufwa == "active" ]]; then + FW_VER="\e[32m[PASS]\e[0m Firewall service (${fw}) is active\n" + ((PASS++)) + else + FW_VER="\e[93m[WARN]\e[0m No firewall is configured. Ensure ${fw} is installed and configured\n" + ((WARN++)) + fi + elif cmdExists "firewall-cmd"; then + fw="firewalld" + if [[ $(systemctl is-active --quiet $fw) ]]; then + FW_VER="\e[32m[PASS]\e[0m Firewall service (${fw}) is active\n" + ((PASS++)) + else + FW_VER="\e[93m[WARN]\e[0m No firewall is configured. Ensure ${fw} is installed and configured\n" + ((WARN++)) + fi + else + # user could be using vanilla iptables, check if kernel module is loaded + fw="iptables" + if [[ $(lsmod | grep -q '^ip_tables' 2>/dev/null) ]]; then + FW_VER="\e[32m[PASS]\e[0m Firewall service (${fw}) is active\n" + ((PASS++)) + else + FW_VER="\e[93m[WARN]\e[0m No firewall is configured. Ensure ${fw} is installed and configured\n" + ((WARN++)) + fi + fi + fi + +} +function checkUpdates { + if [[ $OS == "Ubuntu" ]] || [[ "$OS" =~ Debian.* ]]; then + # Ensure /tmp exists and has the proper permissions before + # checking for security updates + # https://github.com/digitalocean/marketplace-partners/issues/94 + if [[ ! -d /tmp ]]; then + mkdir /tmp + fi + chmod 1777 /tmp + + echo -en "\nUpdating apt package database to check for security updates, this may take a minute...\n\n" + apt-get -y update > /dev/null + + uc=$(apt-get --just-print upgrade | grep -i "security" | wc -l) + if [[ $uc -gt 0 ]]; then + update_count=$(( ${uc} / 2 )) + else + update_count=0 + fi + + if [[ $update_count -gt 0 ]]; then + echo -en "\e[41m[FAIL]\e[0m There are ${update_count} security updates available for this image that have not been installed.\n" + echo -en + echo -en "Here is a list of the security updates that are not installed:\n" + sleep 2 + apt-get --just-print upgrade | grep -i security | awk '{print $2}' | awk '!seen[$0]++' + echo -en + ((FAIL++)) + STATUS=2 + else + echo -en "\e[32m[PASS]\e[0m There are no pending security updates for this image.\n\n" + fi + elif [[ $OS == "CentOS Linux" ]] || [[ $OS == "CentOS Stream" ]] || [[ $OS == "Rocky Linux" ]]; then + echo -en "\nChecking for available security updates, this may take a minute...\n\n" + + update_count=$(yum check-update --security --quiet | wc -l) + if [[ $update_count -gt 0 ]]; then + echo -en "\e[41m[FAIL]\e[0m There are ${update_count} security updates available for this image that have not been installed.\n" + ((FAIL++)) + STATUS=2 + else + echo -en "\e[32m[PASS]\e[0m There are no pending security updates for this image.\n" + ((PASS++)) + fi + else + echo "Error encountered" + exit 1 + fi + + return 1; +} +function checkCloudInit { + + if hash cloud-init 2>/dev/null; then + CI="\e[32m[PASS]\e[0m Cloud-init is installed.\n" + ((PASS++)) + else + CI="\e[41m[FAIL]\e[0m No valid verison of cloud-init was found.\n" + ((FAIL++)) + STATUS=2 + fi + return 1 +} + +function version_gt() { test "$(printf '%s\n' "$@" | sort -V | head -n 1)" != "$1"; } + + +clear +echo "DigitalOcean Marketplace Image Validation Tool ${VERSION}" +echo "Executed on: ${RUNDATE}" +echo "Checking local system for Marketplace compatibility..." + +getDistro + +echo -en "\n\e[1mDistribution:\e[0m ${OS}\n" +echo -en "\e[1mVersion:\e[0m ${VER}\n\n" + +ost=0 +osv=0 + +if [[ $OS == "Ubuntu" ]]; then + ost=1 + if [[ $VER == "20.04" ]]; then + osv=1 + elif [[ $VER == "18.04" ]]; then + osv=1 + elif [[ $VER == "16.04" ]]; then + osv=1 + else + osv=0 + fi + +elif [[ "$OS" =~ Debian.* ]]; then + ost=1 + case "$VER" in + 9) + osv=1 + ;; + 10) + osv=1 + ;; + *) + osv=2 + ;; + esac + +elif [[ $OS == "CentOS Linux" ]]; then + ost=1 + if [[ $VER == "8" ]]; then + osv=1 + elif [[ $VER == "7" ]]; then + osv=1 + elif [[ $VER == "6" ]]; then + osv=1 + else + osv=2 + fi +elif [[ $OS == "CentOS Stream" ]]; then + ost=1 + if [[ $VER == "8" ]]; then + osv=1 + else + osv=2 + fi +elif [[ $OS == "Rocky Linux" ]]; then + ost=1 + if [[ $VER =~ "8." ]]; then + osv=1 + else + osv=2 + fi +else + ost=0 +fi + +if [[ $ost == 1 ]]; then + echo -en "\e[32m[PASS]\e[0m Supported Operating System Detected: ${OS}\n" + ((PASS++)) +else + echo -en "\e[41m[FAIL]\e[0m ${OS} is not a supported Operating System\n" + ((FAIL++)) + STATUS=2 +fi + +if [[ $osv == 1 ]]; then + echo -en "\e[32m[PASS]\e[0m Supported Release Detected: ${VER}\n" + ((PASS++)) +elif [[ $ost == 1 ]]; then + echo -en "\e[41m[FAIL]\e[0m ${OS} ${VER} is not a supported Operating System Version\n" + ((FAIL++)) + STATUS=2 +else + echo "Exiting..." + exit 1 +fi + +checkCloudInit + +echo -en "${CI}" + +checkFirewall + +echo -en "${FW_VER}" + +checkUpdates + +loadPasswords + +checkLogs + +echo -en "\n\nChecking all user-created accounts...\n" +checkUsers + +echo -en "\n\nChecking the root account...\n" +checkRoot + +checkAgent + + +# Summary +echo -en "\n\n---------------------------------------------------------------------------------------------------\n" + +if [[ $STATUS == 0 ]]; then + echo -en "Scan Complete.\n\e[32mAll Tests Passed!\e[0m\n" +elif [[ $STATUS == 1 ]]; then + echo -en "Scan Complete. \n\e[93mSome non-critical tests failed. Please review these items.\e[0m\e[0m\n" +else + echo -en "Scan Complete. \n\e[41mOne or more tests failed. Please review these items and re-test.\e[0m\n" +fi +echo "---------------------------------------------------------------------------------------------------" +echo -en "\e[1m${PASS} Tests PASSED\e[0m\n" +echo -en "\e[1m${WARN} WARNINGS\e[0m\n" +echo -en "\e[1m${FAIL} Tests FAILED\e[0m\n" +echo -en "---------------------------------------------------------------------------------------------------\n" + +if [[ $STATUS == 0 ]]; then + echo -en "We did not detect any issues with this image. Please be sure to manually ensure that all software installed on the base system is functional, secure and properly configured (or facilities for configuration on first-boot have been created).\n\n" + exit 0 +elif [[ $STATUS == 1 ]]; then + echo -en "Please review all [WARN] items above and ensure they are intended or resolved. If you do not have a specific requirement, we recommend resolving these items before image submission\n\n" + exit 0 +else + echo -en "Some critical tests failed. These items must be resolved and this scan re-run before you submit your image to the DigitalOcean Marketplace.\n\n" + exit 1 +fi diff --git a/hosting/digitalocean/template.json b/hosting/digitalocean/template.json new file mode 100644 index 0000000000..bc3679abdc --- /dev/null +++ b/hosting/digitalocean/template.json @@ -0,0 +1,65 @@ +{ + "variables": { + "token": "{{env `DIGITALOCEAN_TOKEN`}}", + "image_name": "budibase-marketplace-snapshot-{{timestamp}}", + "apt_packages": "jq" + }, + "builders": [ + { + "type": "digitalocean", + "api_token": "{{user `token`}}", + "image": "docker-20-04", + "region": "lon1", + "size": "s-1vcpu-1gb", + "ssh_username": "root", + "snapshot_name": "{{user `image_name`}}" + } + ], + "provisioners": [ + { + "type": "shell", + "inline": [ + "cloud-init status --wait" + ] + }, + { + "type": "file", + "source": "files/etc/", + "destination": "/etc/" + }, + { + "type": "file", + "source": "files/var/", + "destination": "/var/" + }, + { + "type": "shell", + "environment_vars": [ + "DEBIAN_FRONTEND=noninteractive", + "LC_ALL=C", + "LANG=en_US.UTF-8", + "LC_CTYPE=en_US.UTF-8" + ], + "inline": [ + "apt -qqy update", + "apt -qqy -o Dpkg::Options::='--force-confdef' -o Dpkg::Options::='--force-confold' full-upgrade", + "apt -qqy -o Dpkg::Options::='--force-confdef' -o Dpkg::Options::='--force-confold' install {{user `apt_packages`}}" + ] + }, + { + "type": "shell", + "environment_vars": [ + "application_name={{user `application_name`}}", + "application_version={{user `application_version`}}", + "DEBIAN_FRONTEND=noninteractive", + "LC_ALL=C", + "LANG=en_US.UTF-8", + "LC_CTYPE=en_US.UTF-8" + ], + "scripts": [ + "scripts/90-cleanup.sh", + "scripts/99-img_check.sh" + ] + } + ] +} diff --git a/packages/builder/package.json b/packages/builder/package.json index d846e1fac5..f910f8a10d 100644 --- a/packages/builder/package.json +++ b/packages/builder/package.json @@ -14,7 +14,7 @@ "cy:setup": "node ./cypress/setup.js", "cy:run": "cypress run", "cy:open": "cypress open", - "cy:run:ci": "cypress run --record --key f308590b-6070-41af-b970-794a3823d451", + "cy:run:ci": "cypress run --record", "cy:test": "start-server-and-test cy:setup http://localhost:10001/builder cy:run", "cy:ci": "start-server-and-test cy:setup http://localhost:10001/builder cy:run", "cy:debug": "start-server-and-test cy:setup http://localhost:10001/builder cy:open" From e71dd8fb77e1b5df4375d82cfda41f688fe8d90e Mon Sep 17 00:00:00 2001 From: Andrew Kingston Date: Thu, 2 Dec 2021 12:27:59 +0000 Subject: [PATCH 056/175] Reset client features when selecting a new app --- packages/builder/src/builderStore/store/frontend.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/packages/builder/src/builderStore/store/frontend.js b/packages/builder/src/builderStore/store/frontend.js index c94c759792..9f1a20605f 100644 --- a/packages/builder/src/builderStore/store/frontend.js +++ b/packages/builder/src/builderStore/store/frontend.js @@ -82,7 +82,7 @@ export const getFrontendStore = () => { libraries: application.componentLibraries, components, clientFeatures: { - ...state.clientFeatures, + ...INITIAL_FRONTEND_STATE.clientFeatures, ...components.features, }, name: application.name, From 9a7cb713718259890436ffb5b2ba9ee53b02bf39 Mon Sep 17 00:00:00 2001 From: Andrew Kingston Date: Thu, 2 Dec 2021 12:28:12 +0000 Subject: [PATCH 057/175] Fix custom query params not appearing --- .../PropertiesPanel/PropertyControls/DataSourceSelect.svelte | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/packages/builder/src/components/design/PropertiesPanel/PropertyControls/DataSourceSelect.svelte b/packages/builder/src/components/design/PropertiesPanel/PropertyControls/DataSourceSelect.svelte index 8f5f7ef807..dc1b24077a 100644 --- a/packages/builder/src/components/design/PropertiesPanel/PropertyControls/DataSourceSelect.svelte +++ b/packages/builder/src/components/design/PropertiesPanel/PropertyControls/DataSourceSelect.svelte @@ -149,7 +149,7 @@ - {#if getQueryParams(value._id).length > 0} + {#if getQueryParams(value).length > 0} Date: Thu, 2 Dec 2021 13:31:45 +0000 Subject: [PATCH 058/175] v1.0.5 --- lerna.json | 2 +- packages/auth/package.json | 2 +- packages/bbui/package.json | 2 +- packages/builder/package.json | 8 ++++---- packages/cli/package.json | 2 +- packages/client/package.json | 6 +++--- packages/server/package.json | 8 ++++---- packages/string-templates/package.json | 2 +- packages/worker/package.json | 6 +++--- 9 files changed, 19 insertions(+), 19 deletions(-) diff --git a/lerna.json b/lerna.json index 4db25a14c5..7159f433c5 100644 --- a/lerna.json +++ b/lerna.json @@ -1,5 +1,5 @@ { - "version": "1.0.4", + "version": "1.0.5", "npmClient": "yarn", "packages": [ "packages/*" diff --git a/packages/auth/package.json b/packages/auth/package.json index 7ce3784639..8892f232a6 100644 --- a/packages/auth/package.json +++ b/packages/auth/package.json @@ -1,6 +1,6 @@ { "name": "@budibase/auth", - "version": "1.0.4", + "version": "1.0.5", "description": "Authentication middlewares for budibase builder and apps", "main": "src/index.js", "author": "Budibase", diff --git a/packages/bbui/package.json b/packages/bbui/package.json index c0431b33a1..8198fed4d5 100644 --- a/packages/bbui/package.json +++ b/packages/bbui/package.json @@ -1,7 +1,7 @@ { "name": "@budibase/bbui", "description": "A UI solution used in the different Budibase projects.", - "version": "1.0.4", + "version": "1.0.5", "license": "MPL-2.0", "svelte": "src/index.js", "module": "dist/bbui.es.js", diff --git a/packages/builder/package.json b/packages/builder/package.json index acaef5bbc5..450478d803 100644 --- a/packages/builder/package.json +++ b/packages/builder/package.json @@ -1,6 +1,6 @@ { "name": "@budibase/builder", - "version": "1.0.4", + "version": "1.0.5", "license": "GPL-3.0", "private": true, "scripts": { @@ -65,10 +65,10 @@ } }, "dependencies": { - "@budibase/bbui": "^1.0.4", - "@budibase/client": "^1.0.4", + "@budibase/bbui": "^1.0.5", + "@budibase/client": "^1.0.5", "@budibase/colorpicker": "1.1.2", - "@budibase/string-templates": "^1.0.4", + "@budibase/string-templates": "^1.0.5", "@sentry/browser": "5.19.1", "@spectrum-css/page": "^3.0.1", "@spectrum-css/vars": "^3.0.1", diff --git a/packages/cli/package.json b/packages/cli/package.json index 613b448807..42dffc8901 100644 --- a/packages/cli/package.json +++ b/packages/cli/package.json @@ -1,6 +1,6 @@ { "name": "@budibase/cli", - "version": "1.0.4", + "version": "1.0.5", "description": "Budibase CLI, for developers, self hosting and migrations.", "main": "src/index.js", "bin": { diff --git a/packages/client/package.json b/packages/client/package.json index 8297503485..8cb916e427 100644 --- a/packages/client/package.json +++ b/packages/client/package.json @@ -1,6 +1,6 @@ { "name": "@budibase/client", - "version": "1.0.4", + "version": "1.0.5", "license": "MPL-2.0", "module": "dist/budibase-client.js", "main": "dist/budibase-client.js", @@ -19,9 +19,9 @@ "dev:builder": "rollup -cw" }, "dependencies": { - "@budibase/bbui": "^1.0.4", + "@budibase/bbui": "^1.0.5", "@budibase/standard-components": "^0.9.139", - "@budibase/string-templates": "^1.0.4", + "@budibase/string-templates": "^1.0.5", "regexparam": "^1.3.0", "shortid": "^2.2.15", "svelte-spa-router": "^3.0.5" diff --git a/packages/server/package.json b/packages/server/package.json index 8088c7acdd..31aabf1dad 100644 --- a/packages/server/package.json +++ b/packages/server/package.json @@ -1,7 +1,7 @@ { "name": "@budibase/server", "email": "hi@budibase.com", - "version": "1.0.4", + "version": "1.0.5", "description": "Budibase Web Server", "main": "src/index.ts", "repository": { @@ -69,9 +69,9 @@ "author": "Budibase", "license": "GPL-3.0", "dependencies": { - "@budibase/auth": "^1.0.4", - "@budibase/client": "^1.0.4", - "@budibase/string-templates": "^1.0.4", + "@budibase/auth": "^1.0.5", + "@budibase/client": "^1.0.5", + "@budibase/string-templates": "^1.0.5", "@bull-board/api": "^3.7.0", "@bull-board/koa": "^3.7.0", "@elastic/elasticsearch": "7.10.0", diff --git a/packages/string-templates/package.json b/packages/string-templates/package.json index 669382ad02..e14c584e09 100644 --- a/packages/string-templates/package.json +++ b/packages/string-templates/package.json @@ -1,6 +1,6 @@ { "name": "@budibase/string-templates", - "version": "1.0.4", + "version": "1.0.5", "description": "Handlebars wrapper for Budibase templating.", "main": "src/index.cjs", "module": "dist/bundle.mjs", diff --git a/packages/worker/package.json b/packages/worker/package.json index 43214d5cb6..7a112ab00e 100644 --- a/packages/worker/package.json +++ b/packages/worker/package.json @@ -1,7 +1,7 @@ { "name": "@budibase/worker", "email": "hi@budibase.com", - "version": "1.0.4", + "version": "1.0.5", "description": "Budibase background service", "main": "src/index.js", "repository": { @@ -29,8 +29,8 @@ "author": "Budibase", "license": "GPL-3.0", "dependencies": { - "@budibase/auth": "^1.0.4", - "@budibase/string-templates": "^1.0.4", + "@budibase/auth": "^1.0.5", + "@budibase/string-templates": "^1.0.5", "@koa/router": "^8.0.0", "@sentry/node": "^6.0.0", "@techpass/passport-openidconnect": "^0.3.0", From eb7468494e408b6a5bf67d10ffac7ab8f4ecb30b Mon Sep 17 00:00:00 2001 From: Martin McKeaveney Date: Thu, 2 Dec 2021 14:38:57 +0100 Subject: [PATCH 059/175] adding yarn command for DO build --- hosting/digitalocean/README.md | 2 +- package.json | 1 + 2 files changed, 2 insertions(+), 1 deletion(-) diff --git a/hosting/digitalocean/README.md b/hosting/digitalocean/README.md index 07370b1b87..72c1950d17 100644 --- a/hosting/digitalocean/README.md +++ b/hosting/digitalocean/README.md @@ -9,7 +9,7 @@ You must have the `DIGITALOCEAN_TOKEN` environment variable set, so that packer ## Building Just run the following command: ``` -./build.sh +yarn build:digitalocean ``` ## Uploading to Marketplace diff --git a/package.json b/package.json index e0b567ce59..4be3fe1401 100644 --- a/package.json +++ b/package.json @@ -47,6 +47,7 @@ "build:docker:selfhost": "lerna run build:docker && cd hosting/scripts/linux/ && ./release-to-docker-hub.sh latest && cd -", "build:docker:develop": "node scripts/pinVersions && lerna run build:docker && cd hosting/scripts/linux/ && ./release-to-docker-hub.sh develop && cd -", "build:docker:airgap": "node hosting/scripts/airgapped/airgappedDockerBuild", + "build:digitalocean": "cd hosting/digitalocean && ./build.sh && cd -", "build:docs": "lerna run build:docs", "release:helm": "./scripts/release_helm_chart.sh", "env:multi:enable": "lerna run env:multi:enable", From 0fce0c076bf5419e84975c7a7c364812f1d9f00f Mon Sep 17 00:00:00 2001 From: Budibase Staging Release Bot <> Date: Thu, 2 Dec 2021 13:47:17 +0000 Subject: [PATCH 060/175] v1.0.5-alpha.1 --- lerna.json | 2 +- packages/auth/package.json | 2 +- packages/bbui/package.json | 2 +- packages/builder/package.json | 8 ++++---- packages/cli/package.json | 2 +- packages/client/package.json | 6 +++--- packages/server/package.json | 8 ++++---- packages/string-templates/package.json | 2 +- packages/worker/package.json | 6 +++--- 9 files changed, 19 insertions(+), 19 deletions(-) diff --git a/lerna.json b/lerna.json index 1a7e49a54e..5a5b6a24d2 100644 --- a/lerna.json +++ b/lerna.json @@ -1,5 +1,5 @@ { - "version": "1.0.5-alpha.0", + "version": "1.0.5-alpha.1", "npmClient": "yarn", "packages": [ "packages/*" diff --git a/packages/auth/package.json b/packages/auth/package.json index 0748fadcf2..137381ea77 100644 --- a/packages/auth/package.json +++ b/packages/auth/package.json @@ -1,6 +1,6 @@ { "name": "@budibase/auth", - "version": "1.0.5-alpha.0", + "version": "1.0.5-alpha.1", "description": "Authentication middlewares for budibase builder and apps", "main": "src/index.js", "author": "Budibase", diff --git a/packages/bbui/package.json b/packages/bbui/package.json index 44f3536011..4b1397bb2c 100644 --- a/packages/bbui/package.json +++ b/packages/bbui/package.json @@ -1,7 +1,7 @@ { "name": "@budibase/bbui", "description": "A UI solution used in the different Budibase projects.", - "version": "1.0.5-alpha.0", + "version": "1.0.5-alpha.1", "license": "MPL-2.0", "svelte": "src/index.js", "module": "dist/bbui.es.js", diff --git a/packages/builder/package.json b/packages/builder/package.json index 9b285dc4d4..7e7f70f48e 100644 --- a/packages/builder/package.json +++ b/packages/builder/package.json @@ -1,6 +1,6 @@ { "name": "@budibase/builder", - "version": "1.0.5-alpha.0", + "version": "1.0.5-alpha.1", "license": "GPL-3.0", "private": true, "scripts": { @@ -65,10 +65,10 @@ } }, "dependencies": { - "@budibase/bbui": "^1.0.5-alpha.0", - "@budibase/client": "^1.0.5-alpha.0", + "@budibase/bbui": "^1.0.5-alpha.1", + "@budibase/client": "^1.0.5-alpha.1", "@budibase/colorpicker": "1.1.2", - "@budibase/string-templates": "^1.0.5-alpha.0", + "@budibase/string-templates": "^1.0.5-alpha.1", "@sentry/browser": "5.19.1", "@spectrum-css/page": "^3.0.1", "@spectrum-css/vars": "^3.0.1", diff --git a/packages/cli/package.json b/packages/cli/package.json index f34117c22c..c917d1b520 100644 --- a/packages/cli/package.json +++ b/packages/cli/package.json @@ -1,6 +1,6 @@ { "name": "@budibase/cli", - "version": "1.0.5-alpha.0", + "version": "1.0.5-alpha.1", "description": "Budibase CLI, for developers, self hosting and migrations.", "main": "src/index.js", "bin": { diff --git a/packages/client/package.json b/packages/client/package.json index bd6e562691..b0aa07df0e 100644 --- a/packages/client/package.json +++ b/packages/client/package.json @@ -1,6 +1,6 @@ { "name": "@budibase/client", - "version": "1.0.5-alpha.0", + "version": "1.0.5-alpha.1", "license": "MPL-2.0", "module": "dist/budibase-client.js", "main": "dist/budibase-client.js", @@ -19,9 +19,9 @@ "dev:builder": "rollup -cw" }, "dependencies": { - "@budibase/bbui": "^1.0.5-alpha.0", + "@budibase/bbui": "^1.0.5-alpha.1", "@budibase/standard-components": "^0.9.139", - "@budibase/string-templates": "^1.0.5-alpha.0", + "@budibase/string-templates": "^1.0.5-alpha.1", "regexparam": "^1.3.0", "shortid": "^2.2.15", "svelte-spa-router": "^3.0.5" diff --git a/packages/server/package.json b/packages/server/package.json index 955dd0b1f4..eaa38735fa 100644 --- a/packages/server/package.json +++ b/packages/server/package.json @@ -1,7 +1,7 @@ { "name": "@budibase/server", "email": "hi@budibase.com", - "version": "1.0.5-alpha.0", + "version": "1.0.5-alpha.1", "description": "Budibase Web Server", "main": "src/index.ts", "repository": { @@ -69,9 +69,9 @@ "author": "Budibase", "license": "GPL-3.0", "dependencies": { - "@budibase/auth": "^1.0.5-alpha.0", - "@budibase/client": "^1.0.5-alpha.0", - "@budibase/string-templates": "^1.0.5-alpha.0", + "@budibase/auth": "^1.0.5-alpha.1", + "@budibase/client": "^1.0.5-alpha.1", + "@budibase/string-templates": "^1.0.5-alpha.1", "@bull-board/api": "^3.7.0", "@bull-board/koa": "^3.7.0", "@elastic/elasticsearch": "7.10.0", diff --git a/packages/string-templates/package.json b/packages/string-templates/package.json index 145800dbb5..eed709984b 100644 --- a/packages/string-templates/package.json +++ b/packages/string-templates/package.json @@ -1,6 +1,6 @@ { "name": "@budibase/string-templates", - "version": "1.0.5-alpha.0", + "version": "1.0.5-alpha.1", "description": "Handlebars wrapper for Budibase templating.", "main": "src/index.cjs", "module": "dist/bundle.mjs", diff --git a/packages/worker/package.json b/packages/worker/package.json index 6917856ceb..fd1b83a1ec 100644 --- a/packages/worker/package.json +++ b/packages/worker/package.json @@ -1,7 +1,7 @@ { "name": "@budibase/worker", "email": "hi@budibase.com", - "version": "1.0.5-alpha.0", + "version": "1.0.5-alpha.1", "description": "Budibase background service", "main": "src/index.js", "repository": { @@ -29,8 +29,8 @@ "author": "Budibase", "license": "GPL-3.0", "dependencies": { - "@budibase/auth": "^1.0.5-alpha.0", - "@budibase/string-templates": "^1.0.5-alpha.0", + "@budibase/auth": "^1.0.5-alpha.1", + "@budibase/string-templates": "^1.0.5-alpha.1", "@koa/router": "^8.0.0", "@sentry/node": "^6.0.0", "@techpass/passport-openidconnect": "^0.3.0", From 4cc03de7e712badfdef2b86b8d01f46735b3c3e0 Mon Sep 17 00:00:00 2001 From: Budibase Staging Release Bot <> Date: Thu, 2 Dec 2021 15:08:26 +0000 Subject: [PATCH 061/175] v1.0.6-alpha.0 --- lerna.json | 2 +- packages/auth/package.json | 2 +- packages/bbui/package.json | 2 +- packages/builder/package.json | 8 ++++---- packages/cli/package.json | 2 +- packages/client/package.json | 6 +++--- packages/server/package.json | 8 ++++---- packages/string-templates/package.json | 2 +- packages/worker/package.json | 6 +++--- 9 files changed, 19 insertions(+), 19 deletions(-) diff --git a/lerna.json b/lerna.json index 7159f433c5..75968afafc 100644 --- a/lerna.json +++ b/lerna.json @@ -1,5 +1,5 @@ { - "version": "1.0.5", + "version": "1.0.6-alpha.0", "npmClient": "yarn", "packages": [ "packages/*" diff --git a/packages/auth/package.json b/packages/auth/package.json index 8892f232a6..1af76f49b6 100644 --- a/packages/auth/package.json +++ b/packages/auth/package.json @@ -1,6 +1,6 @@ { "name": "@budibase/auth", - "version": "1.0.5", + "version": "1.0.6-alpha.0", "description": "Authentication middlewares for budibase builder and apps", "main": "src/index.js", "author": "Budibase", diff --git a/packages/bbui/package.json b/packages/bbui/package.json index 8198fed4d5..173cd891aa 100644 --- a/packages/bbui/package.json +++ b/packages/bbui/package.json @@ -1,7 +1,7 @@ { "name": "@budibase/bbui", "description": "A UI solution used in the different Budibase projects.", - "version": "1.0.5", + "version": "1.0.6-alpha.0", "license": "MPL-2.0", "svelte": "src/index.js", "module": "dist/bbui.es.js", diff --git a/packages/builder/package.json b/packages/builder/package.json index 0d5ec62007..3f3afa1d1c 100644 --- a/packages/builder/package.json +++ b/packages/builder/package.json @@ -1,6 +1,6 @@ { "name": "@budibase/builder", - "version": "1.0.5", + "version": "1.0.6-alpha.0", "license": "GPL-3.0", "private": true, "scripts": { @@ -65,10 +65,10 @@ } }, "dependencies": { - "@budibase/bbui": "^1.0.5", - "@budibase/client": "^1.0.5", + "@budibase/bbui": "^1.0.6-alpha.0", + "@budibase/client": "^1.0.6-alpha.0", "@budibase/colorpicker": "1.1.2", - "@budibase/string-templates": "^1.0.5", + "@budibase/string-templates": "^1.0.6-alpha.0", "@sentry/browser": "5.19.1", "@spectrum-css/page": "^3.0.1", "@spectrum-css/vars": "^3.0.1", diff --git a/packages/cli/package.json b/packages/cli/package.json index 42dffc8901..f2394cac36 100644 --- a/packages/cli/package.json +++ b/packages/cli/package.json @@ -1,6 +1,6 @@ { "name": "@budibase/cli", - "version": "1.0.5", + "version": "1.0.6-alpha.0", "description": "Budibase CLI, for developers, self hosting and migrations.", "main": "src/index.js", "bin": { diff --git a/packages/client/package.json b/packages/client/package.json index 8cb916e427..7284a58bb8 100644 --- a/packages/client/package.json +++ b/packages/client/package.json @@ -1,6 +1,6 @@ { "name": "@budibase/client", - "version": "1.0.5", + "version": "1.0.6-alpha.0", "license": "MPL-2.0", "module": "dist/budibase-client.js", "main": "dist/budibase-client.js", @@ -19,9 +19,9 @@ "dev:builder": "rollup -cw" }, "dependencies": { - "@budibase/bbui": "^1.0.5", + "@budibase/bbui": "^1.0.6-alpha.0", "@budibase/standard-components": "^0.9.139", - "@budibase/string-templates": "^1.0.5", + "@budibase/string-templates": "^1.0.6-alpha.0", "regexparam": "^1.3.0", "shortid": "^2.2.15", "svelte-spa-router": "^3.0.5" diff --git a/packages/server/package.json b/packages/server/package.json index 31aabf1dad..fd0907144c 100644 --- a/packages/server/package.json +++ b/packages/server/package.json @@ -1,7 +1,7 @@ { "name": "@budibase/server", "email": "hi@budibase.com", - "version": "1.0.5", + "version": "1.0.6-alpha.0", "description": "Budibase Web Server", "main": "src/index.ts", "repository": { @@ -69,9 +69,9 @@ "author": "Budibase", "license": "GPL-3.0", "dependencies": { - "@budibase/auth": "^1.0.5", - "@budibase/client": "^1.0.5", - "@budibase/string-templates": "^1.0.5", + "@budibase/auth": "^1.0.6-alpha.0", + "@budibase/client": "^1.0.6-alpha.0", + "@budibase/string-templates": "^1.0.6-alpha.0", "@bull-board/api": "^3.7.0", "@bull-board/koa": "^3.7.0", "@elastic/elasticsearch": "7.10.0", diff --git a/packages/string-templates/package.json b/packages/string-templates/package.json index e14c584e09..c967f18389 100644 --- a/packages/string-templates/package.json +++ b/packages/string-templates/package.json @@ -1,6 +1,6 @@ { "name": "@budibase/string-templates", - "version": "1.0.5", + "version": "1.0.6-alpha.0", "description": "Handlebars wrapper for Budibase templating.", "main": "src/index.cjs", "module": "dist/bundle.mjs", diff --git a/packages/worker/package.json b/packages/worker/package.json index 7a112ab00e..04e096bddb 100644 --- a/packages/worker/package.json +++ b/packages/worker/package.json @@ -1,7 +1,7 @@ { "name": "@budibase/worker", "email": "hi@budibase.com", - "version": "1.0.5", + "version": "1.0.6-alpha.0", "description": "Budibase background service", "main": "src/index.js", "repository": { @@ -29,8 +29,8 @@ "author": "Budibase", "license": "GPL-3.0", "dependencies": { - "@budibase/auth": "^1.0.5", - "@budibase/string-templates": "^1.0.5", + "@budibase/auth": "^1.0.6-alpha.0", + "@budibase/string-templates": "^1.0.6-alpha.0", "@koa/router": "^8.0.0", "@sentry/node": "^6.0.0", "@techpass/passport-openidconnect": "^0.3.0", From 6b13d2ceaa30647d5180a040ae9d6d06dbae0869 Mon Sep 17 00:00:00 2001 From: mike12345567 Date: Thu, 2 Dec 2021 16:04:44 +0000 Subject: [PATCH 062/175] Removing auto columns from export - the new table will provide these if required. --- .../server/src/api/controllers/view/index.js | 17 +++++++++++++++-- 1 file changed, 15 insertions(+), 2 deletions(-) diff --git a/packages/server/src/api/controllers/view/index.js b/packages/server/src/api/controllers/view/index.js index 3b43ef2408..b4399f416d 100644 --- a/packages/server/src/api/controllers/view/index.js +++ b/packages/server/src/api/controllers/view/index.js @@ -77,6 +77,7 @@ exports.exportView = async ctx => { } await fetchView(ctx) + let rows = ctx.body let schema = view && view.meta && view.meta.schema if (!schema) { @@ -85,11 +86,23 @@ exports.exportView = async ctx => { schema = table.schema } + // remove any auto columns + const autocolumns = Object.entries(schema) + .filter(entry => entry[1].autocolumn) + .map(entry => entry[0]) + rows.forEach(row => { + autocolumns.forEach(column => delete row[column]) + }) + // delete auto columns from schema + autocolumns.forEach(column => { + delete schema[column] + }) + // make sure no "undefined" entries appear in the CSV if (format === exporters.ExportFormats.CSV) { const schemaKeys = Object.keys(schema) for (let key of schemaKeys) { - for (let row of ctx.body) { + for (let row of rows) { if (row[key] == null) { row[key] = "" } @@ -103,5 +116,5 @@ exports.exportView = async ctx => { const filename = `${viewName}.${format}` // send down the file ctx.attachment(filename) - ctx.body = apiFileReturn(exporter(headers, ctx.body)) + ctx.body = apiFileReturn(exporter(headers, rows)) } From a6de5a4fa1f8affe5b783126d7475a0f84614d6e Mon Sep 17 00:00:00 2001 From: mike12345567 Date: Thu, 2 Dec 2021 16:17:10 +0000 Subject: [PATCH 063/175] Exporting date and auto id field, but not importing autocolumns when table is created. --- packages/server/src/api/controllers/table/utils.js | 1 + packages/server/src/api/controllers/view/index.js | 13 +++++++------ packages/server/src/utilities/csvParser.js | 7 +++++-- 3 files changed, 13 insertions(+), 8 deletions(-) diff --git a/packages/server/src/api/controllers/table/utils.js b/packages/server/src/api/controllers/table/utils.js index 0623fc64b5..e4086e8071 100644 --- a/packages/server/src/api/controllers/table/utils.js +++ b/packages/server/src/api/controllers/table/utils.js @@ -75,6 +75,7 @@ exports.handleDataImport = async (appId, user, table, dataImport) => { if (!dataImport || !dataImport.csvString) { return table } + const db = new CouchDB(appId) // Populate the table with rows imported from CSV in a bulk update const data = await csvParser.transform({ diff --git a/packages/server/src/api/controllers/view/index.js b/packages/server/src/api/controllers/view/index.js index b4399f416d..9a844fedff 100644 --- a/packages/server/src/api/controllers/view/index.js +++ b/packages/server/src/api/controllers/view/index.js @@ -5,6 +5,7 @@ const exporters = require("./exporters") const { saveView, getView, getViews, deleteView } = require("./utils") const { fetchView } = require("../row") const { getTable } = require("../table/utils") +const { FieldTypes } = require("../../../constants") exports.fetch = async ctx => { const db = new CouchDB(ctx.appId) @@ -86,15 +87,15 @@ exports.exportView = async ctx => { schema = table.schema } - // remove any auto columns - const autocolumns = Object.entries(schema) - .filter(entry => entry[1].autocolumn) + // remove any relationships + const relationships = Object.entries(schema) + .filter(entry => entry[1].type === FieldTypes.LINK) .map(entry => entry[0]) rows.forEach(row => { - autocolumns.forEach(column => delete row[column]) + relationships.forEach(column => delete row[column]) }) - // delete auto columns from schema - autocolumns.forEach(column => { + // delete relationships from schema + relationships.forEach(column => { delete schema[column] }) diff --git a/packages/server/src/utilities/csvParser.js b/packages/server/src/utilities/csvParser.js index c548a71758..8f9b3373c9 100644 --- a/packages/server/src/utilities/csvParser.js +++ b/packages/server/src/utilities/csvParser.js @@ -102,8 +102,11 @@ async function transform({ schema, csvString, existingTable }) { schema = updateSchema({ schema, existingTable }) } - for (let key of Object.keys(schema)) { - colParser[key] = PARSERS[schema[key].type] || schema[key].type + for (let [key, field] of Object.entries(schema)) { + // don't import data to auto columns + if (!field.autocolumn) { + colParser[key] = PARSERS[field.type] || field.type + } } try { From a7e779639d3464b48a0254fba5e6be52fa159733 Mon Sep 17 00:00:00 2001 From: mike12345567 Date: Fri, 3 Dec 2021 10:31:09 +0000 Subject: [PATCH 064/175] Refactor. --- packages/server/src/api/controllers/view/index.js | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/packages/server/src/api/controllers/view/index.js b/packages/server/src/api/controllers/view/index.js index 9a844fedff..e3232323bf 100644 --- a/packages/server/src/api/controllers/view/index.js +++ b/packages/server/src/api/controllers/view/index.js @@ -91,11 +91,11 @@ exports.exportView = async ctx => { const relationships = Object.entries(schema) .filter(entry => entry[1].type === FieldTypes.LINK) .map(entry => entry[0]) - rows.forEach(row => { - relationships.forEach(column => delete row[column]) - }) - // delete relationships from schema + // iterate relationship columns and remove from and row and schema relationships.forEach(column => { + rows.forEach(row => { + delete row[column] + }) delete schema[column] }) From 36218ccea9155a1e5663df531c420071449a174e Mon Sep 17 00:00:00 2001 From: Rory Powell Date: Fri, 3 Dec 2021 10:48:47 +0000 Subject: [PATCH 065/175] Fix oracle password config --- packages/server/scripts/integrations/oracle/oracle.md | 2 +- packages/server/src/integrations/oracle.ts | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/packages/server/scripts/integrations/oracle/oracle.md b/packages/server/scripts/integrations/oracle/oracle.md index 912de08b65..6c2d7a9252 100644 --- a/packages/server/scripts/integrations/oracle/oracle.md +++ b/packages/server/scripts/integrations/oracle/oracle.md @@ -84,7 +84,7 @@ The `HR` schema is populated with dummy data by default in oracle for testing pu To connect to the HR schema first update the user password and unlock the account by performing ```sql ALTER USER hr ACCOUNT UNLOCK; -ALTER USER hr IDENTIFIED BY hr +ALTER USER hr IDENTIFIED BY hr; ``` You should now be able to connect to the hr schema using the credentials hr/hr diff --git a/packages/server/src/integrations/oracle.ts b/packages/server/src/integrations/oracle.ts index bf8e83350e..afaa902655 100644 --- a/packages/server/src/integrations/oracle.ts +++ b/packages/server/src/integrations/oracle.ts @@ -381,7 +381,7 @@ module OracleModule { }` const attributes: ConnectionAttributes = { user: this.config.user, - password: this.config.user, + password: this.config.password, connectString, } return oracledb.getConnection(attributes) From 6118b7ba36f2ab17e3cbd16afcb285871eaba897 Mon Sep 17 00:00:00 2001 From: Rory Powell Date: Fri, 3 Dec 2021 10:48:47 +0000 Subject: [PATCH 066/175] Fix oracle password config --- packages/server/scripts/integrations/oracle/oracle.md | 2 +- packages/server/src/integrations/oracle.ts | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/packages/server/scripts/integrations/oracle/oracle.md b/packages/server/scripts/integrations/oracle/oracle.md index 912de08b65..6c2d7a9252 100644 --- a/packages/server/scripts/integrations/oracle/oracle.md +++ b/packages/server/scripts/integrations/oracle/oracle.md @@ -84,7 +84,7 @@ The `HR` schema is populated with dummy data by default in oracle for testing pu To connect to the HR schema first update the user password and unlock the account by performing ```sql ALTER USER hr ACCOUNT UNLOCK; -ALTER USER hr IDENTIFIED BY hr +ALTER USER hr IDENTIFIED BY hr; ``` You should now be able to connect to the hr schema using the credentials hr/hr diff --git a/packages/server/src/integrations/oracle.ts b/packages/server/src/integrations/oracle.ts index bf8e83350e..afaa902655 100644 --- a/packages/server/src/integrations/oracle.ts +++ b/packages/server/src/integrations/oracle.ts @@ -381,7 +381,7 @@ module OracleModule { }` const attributes: ConnectionAttributes = { user: this.config.user, - password: this.config.user, + password: this.config.password, connectString, } return oracledb.getConnection(attributes) From d9afc58401760c31203037f9a65c046ff9960c5a Mon Sep 17 00:00:00 2001 From: mike12345567 Date: Fri, 3 Dec 2021 11:17:48 +0000 Subject: [PATCH 067/175] Extending logout TTL from a day to a week. --- packages/auth/src/security/sessions.js | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/packages/auth/src/security/sessions.js b/packages/auth/src/security/sessions.js index 93c2d0a9ca..ad21627bd9 100644 --- a/packages/auth/src/security/sessions.js +++ b/packages/auth/src/security/sessions.js @@ -1,6 +1,7 @@ const redis = require("../redis/authRedis") -const EXPIRY_SECONDS = 86400 +// a week in seconds +const EXPIRY_SECONDS = 86400 * 7 async function getSessionsForUser(userId) { const client = await redis.getSessionClient() From e6680c5c520e1fba92febd03db2cb1f108ca771a Mon Sep 17 00:00:00 2001 From: Budibase Staging Release Bot <> Date: Fri, 3 Dec 2021 11:20:24 +0000 Subject: [PATCH 068/175] v1.0.6-alpha.1 --- lerna.json | 2 +- packages/auth/package.json | 2 +- packages/bbui/package.json | 2 +- packages/builder/package.json | 8 ++++---- packages/cli/package.json | 2 +- packages/client/package.json | 6 +++--- packages/server/package.json | 8 ++++---- packages/string-templates/package.json | 2 +- packages/worker/package.json | 6 +++--- 9 files changed, 19 insertions(+), 19 deletions(-) diff --git a/lerna.json b/lerna.json index 75968afafc..b3a4772683 100644 --- a/lerna.json +++ b/lerna.json @@ -1,5 +1,5 @@ { - "version": "1.0.6-alpha.0", + "version": "1.0.6-alpha.1", "npmClient": "yarn", "packages": [ "packages/*" diff --git a/packages/auth/package.json b/packages/auth/package.json index 1af76f49b6..bfda6eb1d0 100644 --- a/packages/auth/package.json +++ b/packages/auth/package.json @@ -1,6 +1,6 @@ { "name": "@budibase/auth", - "version": "1.0.6-alpha.0", + "version": "1.0.6-alpha.1", "description": "Authentication middlewares for budibase builder and apps", "main": "src/index.js", "author": "Budibase", diff --git a/packages/bbui/package.json b/packages/bbui/package.json index 173cd891aa..507a980da3 100644 --- a/packages/bbui/package.json +++ b/packages/bbui/package.json @@ -1,7 +1,7 @@ { "name": "@budibase/bbui", "description": "A UI solution used in the different Budibase projects.", - "version": "1.0.6-alpha.0", + "version": "1.0.6-alpha.1", "license": "MPL-2.0", "svelte": "src/index.js", "module": "dist/bbui.es.js", diff --git a/packages/builder/package.json b/packages/builder/package.json index 3f3afa1d1c..ae8f026956 100644 --- a/packages/builder/package.json +++ b/packages/builder/package.json @@ -1,6 +1,6 @@ { "name": "@budibase/builder", - "version": "1.0.6-alpha.0", + "version": "1.0.6-alpha.1", "license": "GPL-3.0", "private": true, "scripts": { @@ -65,10 +65,10 @@ } }, "dependencies": { - "@budibase/bbui": "^1.0.6-alpha.0", - "@budibase/client": "^1.0.6-alpha.0", + "@budibase/bbui": "^1.0.6-alpha.1", + "@budibase/client": "^1.0.6-alpha.1", "@budibase/colorpicker": "1.1.2", - "@budibase/string-templates": "^1.0.6-alpha.0", + "@budibase/string-templates": "^1.0.6-alpha.1", "@sentry/browser": "5.19.1", "@spectrum-css/page": "^3.0.1", "@spectrum-css/vars": "^3.0.1", diff --git a/packages/cli/package.json b/packages/cli/package.json index f2394cac36..6b83b1afe7 100644 --- a/packages/cli/package.json +++ b/packages/cli/package.json @@ -1,6 +1,6 @@ { "name": "@budibase/cli", - "version": "1.0.6-alpha.0", + "version": "1.0.6-alpha.1", "description": "Budibase CLI, for developers, self hosting and migrations.", "main": "src/index.js", "bin": { diff --git a/packages/client/package.json b/packages/client/package.json index 7284a58bb8..121b70b6e2 100644 --- a/packages/client/package.json +++ b/packages/client/package.json @@ -1,6 +1,6 @@ { "name": "@budibase/client", - "version": "1.0.6-alpha.0", + "version": "1.0.6-alpha.1", "license": "MPL-2.0", "module": "dist/budibase-client.js", "main": "dist/budibase-client.js", @@ -19,9 +19,9 @@ "dev:builder": "rollup -cw" }, "dependencies": { - "@budibase/bbui": "^1.0.6-alpha.0", + "@budibase/bbui": "^1.0.6-alpha.1", "@budibase/standard-components": "^0.9.139", - "@budibase/string-templates": "^1.0.6-alpha.0", + "@budibase/string-templates": "^1.0.6-alpha.1", "regexparam": "^1.3.0", "shortid": "^2.2.15", "svelte-spa-router": "^3.0.5" diff --git a/packages/server/package.json b/packages/server/package.json index fd0907144c..150a01ce78 100644 --- a/packages/server/package.json +++ b/packages/server/package.json @@ -1,7 +1,7 @@ { "name": "@budibase/server", "email": "hi@budibase.com", - "version": "1.0.6-alpha.0", + "version": "1.0.6-alpha.1", "description": "Budibase Web Server", "main": "src/index.ts", "repository": { @@ -69,9 +69,9 @@ "author": "Budibase", "license": "GPL-3.0", "dependencies": { - "@budibase/auth": "^1.0.6-alpha.0", - "@budibase/client": "^1.0.6-alpha.0", - "@budibase/string-templates": "^1.0.6-alpha.0", + "@budibase/auth": "^1.0.6-alpha.1", + "@budibase/client": "^1.0.6-alpha.1", + "@budibase/string-templates": "^1.0.6-alpha.1", "@bull-board/api": "^3.7.0", "@bull-board/koa": "^3.7.0", "@elastic/elasticsearch": "7.10.0", diff --git a/packages/string-templates/package.json b/packages/string-templates/package.json index c967f18389..92bfe2f2f4 100644 --- a/packages/string-templates/package.json +++ b/packages/string-templates/package.json @@ -1,6 +1,6 @@ { "name": "@budibase/string-templates", - "version": "1.0.6-alpha.0", + "version": "1.0.6-alpha.1", "description": "Handlebars wrapper for Budibase templating.", "main": "src/index.cjs", "module": "dist/bundle.mjs", diff --git a/packages/worker/package.json b/packages/worker/package.json index 04e096bddb..894a47a887 100644 --- a/packages/worker/package.json +++ b/packages/worker/package.json @@ -1,7 +1,7 @@ { "name": "@budibase/worker", "email": "hi@budibase.com", - "version": "1.0.6-alpha.0", + "version": "1.0.6-alpha.1", "description": "Budibase background service", "main": "src/index.js", "repository": { @@ -29,8 +29,8 @@ "author": "Budibase", "license": "GPL-3.0", "dependencies": { - "@budibase/auth": "^1.0.6-alpha.0", - "@budibase/string-templates": "^1.0.6-alpha.0", + "@budibase/auth": "^1.0.6-alpha.1", + "@budibase/string-templates": "^1.0.6-alpha.1", "@koa/router": "^8.0.0", "@sentry/node": "^6.0.0", "@techpass/passport-openidconnect": "^0.3.0", From aecc29b4d7dff98caa0183f3f2f3596b3fcb541f Mon Sep 17 00:00:00 2001 From: Budibase Release Bot <> Date: Fri, 3 Dec 2021 11:22:44 +0000 Subject: [PATCH 069/175] v1.0.6 --- lerna.json | 2 +- packages/auth/package.json | 2 +- packages/bbui/package.json | 2 +- packages/builder/package.json | 8 ++++---- packages/cli/package.json | 2 +- packages/client/package.json | 6 +++--- packages/server/package.json | 8 ++++---- packages/string-templates/package.json | 2 +- packages/worker/package.json | 6 +++--- 9 files changed, 19 insertions(+), 19 deletions(-) diff --git a/lerna.json b/lerna.json index 7159f433c5..73fa6bd62d 100644 --- a/lerna.json +++ b/lerna.json @@ -1,5 +1,5 @@ { - "version": "1.0.5", + "version": "1.0.6", "npmClient": "yarn", "packages": [ "packages/*" diff --git a/packages/auth/package.json b/packages/auth/package.json index 8892f232a6..d9fc21720a 100644 --- a/packages/auth/package.json +++ b/packages/auth/package.json @@ -1,6 +1,6 @@ { "name": "@budibase/auth", - "version": "1.0.5", + "version": "1.0.6", "description": "Authentication middlewares for budibase builder and apps", "main": "src/index.js", "author": "Budibase", diff --git a/packages/bbui/package.json b/packages/bbui/package.json index 8198fed4d5..7c76c3bef6 100644 --- a/packages/bbui/package.json +++ b/packages/bbui/package.json @@ -1,7 +1,7 @@ { "name": "@budibase/bbui", "description": "A UI solution used in the different Budibase projects.", - "version": "1.0.5", + "version": "1.0.6", "license": "MPL-2.0", "svelte": "src/index.js", "module": "dist/bbui.es.js", diff --git a/packages/builder/package.json b/packages/builder/package.json index 450478d803..d4e07d5c86 100644 --- a/packages/builder/package.json +++ b/packages/builder/package.json @@ -1,6 +1,6 @@ { "name": "@budibase/builder", - "version": "1.0.5", + "version": "1.0.6", "license": "GPL-3.0", "private": true, "scripts": { @@ -65,10 +65,10 @@ } }, "dependencies": { - "@budibase/bbui": "^1.0.5", - "@budibase/client": "^1.0.5", + "@budibase/bbui": "^1.0.6", + "@budibase/client": "^1.0.6", "@budibase/colorpicker": "1.1.2", - "@budibase/string-templates": "^1.0.5", + "@budibase/string-templates": "^1.0.6", "@sentry/browser": "5.19.1", "@spectrum-css/page": "^3.0.1", "@spectrum-css/vars": "^3.0.1", diff --git a/packages/cli/package.json b/packages/cli/package.json index 42dffc8901..299a822e4c 100644 --- a/packages/cli/package.json +++ b/packages/cli/package.json @@ -1,6 +1,6 @@ { "name": "@budibase/cli", - "version": "1.0.5", + "version": "1.0.6", "description": "Budibase CLI, for developers, self hosting and migrations.", "main": "src/index.js", "bin": { diff --git a/packages/client/package.json b/packages/client/package.json index 8cb916e427..58e848d22a 100644 --- a/packages/client/package.json +++ b/packages/client/package.json @@ -1,6 +1,6 @@ { "name": "@budibase/client", - "version": "1.0.5", + "version": "1.0.6", "license": "MPL-2.0", "module": "dist/budibase-client.js", "main": "dist/budibase-client.js", @@ -19,9 +19,9 @@ "dev:builder": "rollup -cw" }, "dependencies": { - "@budibase/bbui": "^1.0.5", + "@budibase/bbui": "^1.0.6", "@budibase/standard-components": "^0.9.139", - "@budibase/string-templates": "^1.0.5", + "@budibase/string-templates": "^1.0.6", "regexparam": "^1.3.0", "shortid": "^2.2.15", "svelte-spa-router": "^3.0.5" diff --git a/packages/server/package.json b/packages/server/package.json index 31aabf1dad..d22669626b 100644 --- a/packages/server/package.json +++ b/packages/server/package.json @@ -1,7 +1,7 @@ { "name": "@budibase/server", "email": "hi@budibase.com", - "version": "1.0.5", + "version": "1.0.6", "description": "Budibase Web Server", "main": "src/index.ts", "repository": { @@ -69,9 +69,9 @@ "author": "Budibase", "license": "GPL-3.0", "dependencies": { - "@budibase/auth": "^1.0.5", - "@budibase/client": "^1.0.5", - "@budibase/string-templates": "^1.0.5", + "@budibase/auth": "^1.0.6", + "@budibase/client": "^1.0.6", + "@budibase/string-templates": "^1.0.6", "@bull-board/api": "^3.7.0", "@bull-board/koa": "^3.7.0", "@elastic/elasticsearch": "7.10.0", diff --git a/packages/string-templates/package.json b/packages/string-templates/package.json index e14c584e09..60c35a2a2d 100644 --- a/packages/string-templates/package.json +++ b/packages/string-templates/package.json @@ -1,6 +1,6 @@ { "name": "@budibase/string-templates", - "version": "1.0.5", + "version": "1.0.6", "description": "Handlebars wrapper for Budibase templating.", "main": "src/index.cjs", "module": "dist/bundle.mjs", diff --git a/packages/worker/package.json b/packages/worker/package.json index 7a112ab00e..d9d32ce35c 100644 --- a/packages/worker/package.json +++ b/packages/worker/package.json @@ -1,7 +1,7 @@ { "name": "@budibase/worker", "email": "hi@budibase.com", - "version": "1.0.5", + "version": "1.0.6", "description": "Budibase background service", "main": "src/index.js", "repository": { @@ -29,8 +29,8 @@ "author": "Budibase", "license": "GPL-3.0", "dependencies": { - "@budibase/auth": "^1.0.5", - "@budibase/string-templates": "^1.0.5", + "@budibase/auth": "^1.0.6", + "@budibase/string-templates": "^1.0.6", "@koa/router": "^8.0.0", "@sentry/node": "^6.0.0", "@techpass/passport-openidconnect": "^0.3.0", From e695396bb88ae45154949d3181ded650c3948c89 Mon Sep 17 00:00:00 2001 From: Andrew Kingston Date: Fri, 3 Dec 2021 11:38:49 +0000 Subject: [PATCH 070/175] Ensure links prop is always an array when configuring layout links --- .../PropertyControls/NavigationEditor/NavigationDrawer.svelte | 1 + 1 file changed, 1 insertion(+) diff --git a/packages/builder/src/components/design/PropertiesPanel/PropertyControls/NavigationEditor/NavigationDrawer.svelte b/packages/builder/src/components/design/PropertiesPanel/PropertyControls/NavigationEditor/NavigationDrawer.svelte index 4d1823108c..4301028ba0 100644 --- a/packages/builder/src/components/design/PropertiesPanel/PropertyControls/NavigationEditor/NavigationDrawer.svelte +++ b/packages/builder/src/components/design/PropertiesPanel/PropertyControls/NavigationEditor/NavigationDrawer.svelte @@ -17,6 +17,7 @@ const flipDurationMs = 150 let dragDisabled = true + $: links = links || [] $: links.forEach(link => { if (!link.id) { link.id = generate() From 39d5c81b72ab3f6fee18139cb399c4416f38eaf7 Mon Sep 17 00:00:00 2001 From: Andrew Kingston Date: Fri, 3 Dec 2021 11:45:04 +0000 Subject: [PATCH 071/175] Ensure links are an array in the wrapper component for a cleaner fix --- .../PropertyControls/NavigationEditor/NavigationDrawer.svelte | 1 - .../PropertyControls/NavigationEditor/NavigationEditor.svelte | 2 +- 2 files changed, 1 insertion(+), 2 deletions(-) diff --git a/packages/builder/src/components/design/PropertiesPanel/PropertyControls/NavigationEditor/NavigationDrawer.svelte b/packages/builder/src/components/design/PropertiesPanel/PropertyControls/NavigationEditor/NavigationDrawer.svelte index 4301028ba0..4d1823108c 100644 --- a/packages/builder/src/components/design/PropertiesPanel/PropertyControls/NavigationEditor/NavigationDrawer.svelte +++ b/packages/builder/src/components/design/PropertiesPanel/PropertyControls/NavigationEditor/NavigationDrawer.svelte @@ -17,7 +17,6 @@ const flipDurationMs = 150 let dragDisabled = true - $: links = links || [] $: links.forEach(link => { if (!link.id) { link.id = generate() diff --git a/packages/builder/src/components/design/PropertiesPanel/PropertyControls/NavigationEditor/NavigationEditor.svelte b/packages/builder/src/components/design/PropertiesPanel/PropertyControls/NavigationEditor/NavigationEditor.svelte index ea02b4184d..40357f50be 100644 --- a/packages/builder/src/components/design/PropertiesPanel/PropertyControls/NavigationEditor/NavigationEditor.svelte +++ b/packages/builder/src/components/design/PropertiesPanel/PropertyControls/NavigationEditor/NavigationEditor.svelte @@ -6,7 +6,7 @@ export let value = [] let drawer - let links = cloneDeep(value) + let links = cloneDeep(value || []) const dispatch = createEventDispatcher() const save = () => { From de72792576e032b0dc6edf2f331ecbaa39a47679 Mon Sep 17 00:00:00 2001 From: mike12345567 Date: Fri, 3 Dec 2021 12:39:20 +0000 Subject: [PATCH 072/175] Setting auth cookie to not expire. --- packages/auth/src/constants.js | 1 + packages/auth/src/utils.js | 9 +++++---- .../worker/src/api/controllers/global/auth.js | 17 +---------------- 3 files changed, 7 insertions(+), 20 deletions(-) diff --git a/packages/auth/src/constants.js b/packages/auth/src/constants.js index 9892275bec..363274eda5 100644 --- a/packages/auth/src/constants.js +++ b/packages/auth/src/constants.js @@ -34,4 +34,5 @@ exports.Configs = { OIDC_LOGOS: "logos_oidc", } +exports.MAX_VALID_DATE = new Date(2147483647000) exports.DEFAULT_TENANT_ID = "default" diff --git a/packages/auth/src/utils.js b/packages/auth/src/utils.js index f7ab5d6990..b8fa7b9588 100644 --- a/packages/auth/src/utils.js +++ b/packages/auth/src/utils.js @@ -7,7 +7,7 @@ const { const jwt = require("jsonwebtoken") const { options } = require("./middleware/passport/jwt") const { createUserEmailView } = require("./db/views") -const { Headers, UserStatus, Cookies } = require("./constants") +const { Headers, UserStatus, Cookies, MAX_VALID_DATE } = require("./constants") const { getGlobalDB, updateTenantId, @@ -83,14 +83,15 @@ exports.getCookie = (ctx, name) => { * @param {object} ctx The request which is to be manipulated. * @param {string} name The name of the cookie to set. * @param {string|object} value The value of cookie which will be set. + * @param {object} opts options like whether to sign. */ -exports.setCookie = (ctx, value, name = "builder") => { - if (value) { +exports.setCookie = (ctx, value, name = "builder", opts = { sign: true }) => { + if (value && opts && opts.sign) { value = jwt.sign(value, options.secretOrKey) } const config = { - maxAge: Number.MAX_SAFE_INTEGER, + expires: MAX_VALID_DATE, path: "/", httpOnly: false, overwrite: true, diff --git a/packages/worker/src/api/controllers/global/auth.js b/packages/worker/src/api/controllers/global/auth.js index 592787c5ea..cd7d8abcee 100644 --- a/packages/worker/src/api/controllers/global/auth.js +++ b/packages/worker/src/api/controllers/global/auth.js @@ -56,26 +56,11 @@ async function authInternal(ctx, user, err = null, info = null) { return ctx.throw(403, info ? info : "Unauthorized") } - const expires = new Date() - expires.setDate(expires.getDate() + 1) - if (!user) { return ctx.throw(403, info ? info : "Unauthorized") } - const config = { - expires, - path: "/", - httpOnly: false, - overwrite: true, - } - - if (env.COOKIE_DOMAIN) { - config.domain = env.COOKIE_DOMAIN - } - - // just store the user ID - ctx.cookies.set(Cookies.Auth, user.token, config) + setCookie(ctx, user.token, Cookies.Auth, { sign: false }) // get rid of any app cookies on login // have to check test because this breaks cypress if (!env.isTest()) { From 2c081c65577bf179cbd67daf3ebc9158c292c31c Mon Sep 17 00:00:00 2001 From: Budibase Release Bot <> Date: Fri, 3 Dec 2021 13:24:14 +0000 Subject: [PATCH 073/175] v1.0.7 --- lerna.json | 2 +- packages/auth/package.json | 2 +- packages/bbui/package.json | 2 +- packages/builder/package.json | 8 ++++---- packages/cli/package.json | 2 +- packages/client/package.json | 6 +++--- packages/server/package.json | 8 ++++---- packages/string-templates/package.json | 2 +- packages/worker/package.json | 6 +++--- 9 files changed, 19 insertions(+), 19 deletions(-) diff --git a/lerna.json b/lerna.json index 73fa6bd62d..49a49487d3 100644 --- a/lerna.json +++ b/lerna.json @@ -1,5 +1,5 @@ { - "version": "1.0.6", + "version": "1.0.7", "npmClient": "yarn", "packages": [ "packages/*" diff --git a/packages/auth/package.json b/packages/auth/package.json index d9fc21720a..a66b3c912b 100644 --- a/packages/auth/package.json +++ b/packages/auth/package.json @@ -1,6 +1,6 @@ { "name": "@budibase/auth", - "version": "1.0.6", + "version": "1.0.7", "description": "Authentication middlewares for budibase builder and apps", "main": "src/index.js", "author": "Budibase", diff --git a/packages/bbui/package.json b/packages/bbui/package.json index 7c76c3bef6..82fb9bbda6 100644 --- a/packages/bbui/package.json +++ b/packages/bbui/package.json @@ -1,7 +1,7 @@ { "name": "@budibase/bbui", "description": "A UI solution used in the different Budibase projects.", - "version": "1.0.6", + "version": "1.0.7", "license": "MPL-2.0", "svelte": "src/index.js", "module": "dist/bbui.es.js", diff --git a/packages/builder/package.json b/packages/builder/package.json index d4e07d5c86..e91c57415f 100644 --- a/packages/builder/package.json +++ b/packages/builder/package.json @@ -1,6 +1,6 @@ { "name": "@budibase/builder", - "version": "1.0.6", + "version": "1.0.7", "license": "GPL-3.0", "private": true, "scripts": { @@ -65,10 +65,10 @@ } }, "dependencies": { - "@budibase/bbui": "^1.0.6", - "@budibase/client": "^1.0.6", + "@budibase/bbui": "^1.0.7", + "@budibase/client": "^1.0.7", "@budibase/colorpicker": "1.1.2", - "@budibase/string-templates": "^1.0.6", + "@budibase/string-templates": "^1.0.7", "@sentry/browser": "5.19.1", "@spectrum-css/page": "^3.0.1", "@spectrum-css/vars": "^3.0.1", diff --git a/packages/cli/package.json b/packages/cli/package.json index 299a822e4c..e7ec3372a1 100644 --- a/packages/cli/package.json +++ b/packages/cli/package.json @@ -1,6 +1,6 @@ { "name": "@budibase/cli", - "version": "1.0.6", + "version": "1.0.7", "description": "Budibase CLI, for developers, self hosting and migrations.", "main": "src/index.js", "bin": { diff --git a/packages/client/package.json b/packages/client/package.json index 58e848d22a..8656c443ce 100644 --- a/packages/client/package.json +++ b/packages/client/package.json @@ -1,6 +1,6 @@ { "name": "@budibase/client", - "version": "1.0.6", + "version": "1.0.7", "license": "MPL-2.0", "module": "dist/budibase-client.js", "main": "dist/budibase-client.js", @@ -19,9 +19,9 @@ "dev:builder": "rollup -cw" }, "dependencies": { - "@budibase/bbui": "^1.0.6", + "@budibase/bbui": "^1.0.7", "@budibase/standard-components": "^0.9.139", - "@budibase/string-templates": "^1.0.6", + "@budibase/string-templates": "^1.0.7", "regexparam": "^1.3.0", "shortid": "^2.2.15", "svelte-spa-router": "^3.0.5" diff --git a/packages/server/package.json b/packages/server/package.json index d22669626b..67f6de62c0 100644 --- a/packages/server/package.json +++ b/packages/server/package.json @@ -1,7 +1,7 @@ { "name": "@budibase/server", "email": "hi@budibase.com", - "version": "1.0.6", + "version": "1.0.7", "description": "Budibase Web Server", "main": "src/index.ts", "repository": { @@ -69,9 +69,9 @@ "author": "Budibase", "license": "GPL-3.0", "dependencies": { - "@budibase/auth": "^1.0.6", - "@budibase/client": "^1.0.6", - "@budibase/string-templates": "^1.0.6", + "@budibase/auth": "^1.0.7", + "@budibase/client": "^1.0.7", + "@budibase/string-templates": "^1.0.7", "@bull-board/api": "^3.7.0", "@bull-board/koa": "^3.7.0", "@elastic/elasticsearch": "7.10.0", diff --git a/packages/string-templates/package.json b/packages/string-templates/package.json index 60c35a2a2d..3036bf7e9f 100644 --- a/packages/string-templates/package.json +++ b/packages/string-templates/package.json @@ -1,6 +1,6 @@ { "name": "@budibase/string-templates", - "version": "1.0.6", + "version": "1.0.7", "description": "Handlebars wrapper for Budibase templating.", "main": "src/index.cjs", "module": "dist/bundle.mjs", diff --git a/packages/worker/package.json b/packages/worker/package.json index d9d32ce35c..d556d5f581 100644 --- a/packages/worker/package.json +++ b/packages/worker/package.json @@ -1,7 +1,7 @@ { "name": "@budibase/worker", "email": "hi@budibase.com", - "version": "1.0.6", + "version": "1.0.7", "description": "Budibase background service", "main": "src/index.js", "repository": { @@ -29,8 +29,8 @@ "author": "Budibase", "license": "GPL-3.0", "dependencies": { - "@budibase/auth": "^1.0.6", - "@budibase/string-templates": "^1.0.6", + "@budibase/auth": "^1.0.7", + "@budibase/string-templates": "^1.0.7", "@koa/router": "^8.0.0", "@sentry/node": "^6.0.0", "@techpass/passport-openidconnect": "^0.3.0", From 5d4fb2e7c7f51c3b5de0558c1510c016bd0284b3 Mon Sep 17 00:00:00 2001 From: Budibase Staging Release Bot <> Date: Fri, 3 Dec 2021 13:36:10 +0000 Subject: [PATCH 074/175] v1.0.8-alpha.0 --- lerna.json | 2 +- packages/auth/package.json | 2 +- packages/bbui/package.json | 2 +- packages/builder/package.json | 8 ++++---- packages/cli/package.json | 2 +- packages/client/package.json | 6 +++--- packages/server/package.json | 8 ++++---- packages/string-templates/package.json | 2 +- packages/worker/package.json | 6 +++--- 9 files changed, 19 insertions(+), 19 deletions(-) diff --git a/lerna.json b/lerna.json index 49a49487d3..bfd6b5f7b6 100644 --- a/lerna.json +++ b/lerna.json @@ -1,5 +1,5 @@ { - "version": "1.0.7", + "version": "1.0.8-alpha.0", "npmClient": "yarn", "packages": [ "packages/*" diff --git a/packages/auth/package.json b/packages/auth/package.json index a66b3c912b..761c5ee304 100644 --- a/packages/auth/package.json +++ b/packages/auth/package.json @@ -1,6 +1,6 @@ { "name": "@budibase/auth", - "version": "1.0.7", + "version": "1.0.8-alpha.0", "description": "Authentication middlewares for budibase builder and apps", "main": "src/index.js", "author": "Budibase", diff --git a/packages/bbui/package.json b/packages/bbui/package.json index 82fb9bbda6..cc246957d0 100644 --- a/packages/bbui/package.json +++ b/packages/bbui/package.json @@ -1,7 +1,7 @@ { "name": "@budibase/bbui", "description": "A UI solution used in the different Budibase projects.", - "version": "1.0.7", + "version": "1.0.8-alpha.0", "license": "MPL-2.0", "svelte": "src/index.js", "module": "dist/bbui.es.js", diff --git a/packages/builder/package.json b/packages/builder/package.json index ada46fc3cf..372d9627ab 100644 --- a/packages/builder/package.json +++ b/packages/builder/package.json @@ -1,6 +1,6 @@ { "name": "@budibase/builder", - "version": "1.0.7", + "version": "1.0.8-alpha.0", "license": "GPL-3.0", "private": true, "scripts": { @@ -65,10 +65,10 @@ } }, "dependencies": { - "@budibase/bbui": "^1.0.7", - "@budibase/client": "^1.0.7", + "@budibase/bbui": "^1.0.8-alpha.0", + "@budibase/client": "^1.0.8-alpha.0", "@budibase/colorpicker": "1.1.2", - "@budibase/string-templates": "^1.0.7", + "@budibase/string-templates": "^1.0.8-alpha.0", "@sentry/browser": "5.19.1", "@spectrum-css/page": "^3.0.1", "@spectrum-css/vars": "^3.0.1", diff --git a/packages/cli/package.json b/packages/cli/package.json index e7ec3372a1..9bc7f16dc0 100644 --- a/packages/cli/package.json +++ b/packages/cli/package.json @@ -1,6 +1,6 @@ { "name": "@budibase/cli", - "version": "1.0.7", + "version": "1.0.8-alpha.0", "description": "Budibase CLI, for developers, self hosting and migrations.", "main": "src/index.js", "bin": { diff --git a/packages/client/package.json b/packages/client/package.json index 8656c443ce..2c79866336 100644 --- a/packages/client/package.json +++ b/packages/client/package.json @@ -1,6 +1,6 @@ { "name": "@budibase/client", - "version": "1.0.7", + "version": "1.0.8-alpha.0", "license": "MPL-2.0", "module": "dist/budibase-client.js", "main": "dist/budibase-client.js", @@ -19,9 +19,9 @@ "dev:builder": "rollup -cw" }, "dependencies": { - "@budibase/bbui": "^1.0.7", + "@budibase/bbui": "^1.0.8-alpha.0", "@budibase/standard-components": "^0.9.139", - "@budibase/string-templates": "^1.0.7", + "@budibase/string-templates": "^1.0.8-alpha.0", "regexparam": "^1.3.0", "shortid": "^2.2.15", "svelte-spa-router": "^3.0.5" diff --git a/packages/server/package.json b/packages/server/package.json index 67f6de62c0..ffe1d568f5 100644 --- a/packages/server/package.json +++ b/packages/server/package.json @@ -1,7 +1,7 @@ { "name": "@budibase/server", "email": "hi@budibase.com", - "version": "1.0.7", + "version": "1.0.8-alpha.0", "description": "Budibase Web Server", "main": "src/index.ts", "repository": { @@ -69,9 +69,9 @@ "author": "Budibase", "license": "GPL-3.0", "dependencies": { - "@budibase/auth": "^1.0.7", - "@budibase/client": "^1.0.7", - "@budibase/string-templates": "^1.0.7", + "@budibase/auth": "^1.0.8-alpha.0", + "@budibase/client": "^1.0.8-alpha.0", + "@budibase/string-templates": "^1.0.8-alpha.0", "@bull-board/api": "^3.7.0", "@bull-board/koa": "^3.7.0", "@elastic/elasticsearch": "7.10.0", diff --git a/packages/string-templates/package.json b/packages/string-templates/package.json index 3036bf7e9f..586af4820c 100644 --- a/packages/string-templates/package.json +++ b/packages/string-templates/package.json @@ -1,6 +1,6 @@ { "name": "@budibase/string-templates", - "version": "1.0.7", + "version": "1.0.8-alpha.0", "description": "Handlebars wrapper for Budibase templating.", "main": "src/index.cjs", "module": "dist/bundle.mjs", diff --git a/packages/worker/package.json b/packages/worker/package.json index d556d5f581..62b52d35c0 100644 --- a/packages/worker/package.json +++ b/packages/worker/package.json @@ -1,7 +1,7 @@ { "name": "@budibase/worker", "email": "hi@budibase.com", - "version": "1.0.7", + "version": "1.0.8-alpha.0", "description": "Budibase background service", "main": "src/index.js", "repository": { @@ -29,8 +29,8 @@ "author": "Budibase", "license": "GPL-3.0", "dependencies": { - "@budibase/auth": "^1.0.7", - "@budibase/string-templates": "^1.0.7", + "@budibase/auth": "^1.0.8-alpha.0", + "@budibase/string-templates": "^1.0.8-alpha.0", "@koa/router": "^8.0.0", "@sentry/node": "^6.0.0", "@techpass/passport-openidconnect": "^0.3.0", From 5f86321f0b326c3a60f71c36a5ff9ccbc94cabb6 Mon Sep 17 00:00:00 2001 From: Martin McKeaveney Date: Mon, 6 Dec 2021 17:19:53 +0100 Subject: [PATCH 075/175] packaging helm chart with consolidated config --- docs/budibase-0.2.3.tgz | Bin 0 -> 42443 bytes hosting/kubernetes/budibase/Chart.yaml | 4 +- .../budibase/charts/couchdb-3.3.4.tgz | Bin 0 -> 9668 bytes .../budibase/charts/couchdb/Chart.yaml | 19 -- .../budibase/charts/couchdb/README.md | 244 ------------------ .../charts/couchdb/ci/required-values.yaml | 3 - .../budibase/charts/couchdb/ci/sidecar.yaml | 9 - .../budibase/charts/couchdb/password.ini | 2 - .../charts/couchdb/templates/NOTES.txt | 20 -- .../charts/couchdb/templates/_helpers.tpl | 81 ------ .../charts/couchdb/templates/configmap.yaml | 23 -- .../charts/couchdb/templates/headless.yaml | 17 -- .../charts/couchdb/templates/ingress.yaml | 33 --- .../couchdb/templates/networkpolicy.yaml | 31 --- .../charts/couchdb/templates/secrets.yaml | 19 -- .../charts/couchdb/templates/service.yaml | 23 -- .../couchdb/templates/serviceaccount.yaml | 15 -- .../charts/couchdb/templates/statefulset.yaml | 202 --------------- .../budibase/charts/couchdb/values.yaml | 201 --------------- hosting/kubernetes/budibase/values.yaml | 150 ++++++++++- scripts/index.yaml | 30 +++ 21 files changed, 180 insertions(+), 946 deletions(-) create mode 100644 docs/budibase-0.2.3.tgz create mode 100644 hosting/kubernetes/budibase/charts/couchdb-3.3.4.tgz delete mode 100755 hosting/kubernetes/budibase/charts/couchdb/Chart.yaml delete mode 100755 hosting/kubernetes/budibase/charts/couchdb/README.md delete mode 100755 hosting/kubernetes/budibase/charts/couchdb/ci/required-values.yaml delete mode 100755 hosting/kubernetes/budibase/charts/couchdb/ci/sidecar.yaml delete mode 100755 hosting/kubernetes/budibase/charts/couchdb/password.ini delete mode 100755 hosting/kubernetes/budibase/charts/couchdb/templates/NOTES.txt delete mode 100755 hosting/kubernetes/budibase/charts/couchdb/templates/_helpers.tpl delete mode 100755 hosting/kubernetes/budibase/charts/couchdb/templates/configmap.yaml delete mode 100755 hosting/kubernetes/budibase/charts/couchdb/templates/headless.yaml delete mode 100755 hosting/kubernetes/budibase/charts/couchdb/templates/ingress.yaml delete mode 100755 hosting/kubernetes/budibase/charts/couchdb/templates/networkpolicy.yaml delete mode 100755 hosting/kubernetes/budibase/charts/couchdb/templates/secrets.yaml delete mode 100755 hosting/kubernetes/budibase/charts/couchdb/templates/service.yaml delete mode 100755 hosting/kubernetes/budibase/charts/couchdb/templates/serviceaccount.yaml delete mode 100755 hosting/kubernetes/budibase/charts/couchdb/templates/statefulset.yaml delete mode 100755 hosting/kubernetes/budibase/charts/couchdb/values.yaml create mode 100644 scripts/index.yaml diff --git a/docs/budibase-0.2.3.tgz b/docs/budibase-0.2.3.tgz new file mode 100644 index 0000000000000000000000000000000000000000..23fbe03712063a9a505435306cf01f76a437f727 GIT binary patch literal 42443 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 literal 0 HcmV?d00001 diff --git a/hosting/kubernetes/budibase/Chart.yaml b/hosting/kubernetes/budibase/Chart.yaml index c5233842ad..a8db638a7e 100644 --- a/hosting/kubernetes/budibase/Chart.yaml +++ b/hosting/kubernetes/budibase/Chart.yaml @@ -22,13 +22,13 @@ type: application # This is the chart version. This version number should be incremented each time you make changes # to the chart and its templates, including the app version. # Versions are expected to follow Semantic Versioning (https://semver.org/) -version: 0.2.2 +version: 0.2.3 # This is the version number of the application being deployed. This version number should be # incremented each time you make changes to the application. Versions are not expected to # follow Semantic Versioning. They should reflect the version the application is using. # It is recommended to use it with quotes. -appVersion: "0.9.169" +appVersion: "0.1.6" dependencies: - name: couchdb diff --git a/hosting/kubernetes/budibase/charts/couchdb-3.3.4.tgz b/hosting/kubernetes/budibase/charts/couchdb-3.3.4.tgz new file mode 100644 index 0000000000000000000000000000000000000000..f7ebfd3e9653ef2e0fba07de4e498b46311de606 GIT binary patch literal 9668 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 GzyJWm|L4yD literal 0 HcmV?d00001 diff --git a/hosting/kubernetes/budibase/charts/couchdb/Chart.yaml b/hosting/kubernetes/budibase/charts/couchdb/Chart.yaml deleted file mode 100755 index 74ae734a17..0000000000 --- a/hosting/kubernetes/budibase/charts/couchdb/Chart.yaml +++ /dev/null @@ -1,19 +0,0 @@ -apiVersion: v1 -appVersion: 3.1.0 -description: A database featuring seamless multi-master sync, that scales from big - data to mobile, with an intuitive HTTP/JSON API and designed for reliability. -home: https://couchdb.apache.org/ -icon: http://couchdb.apache.org/CouchDB-visual-identity/logo/CouchDB-couch-symbol.svg -keywords: -- couchdb -- database -- nosql -maintainers: -- email: kocolosk@apache.org - name: kocolosk -- email: willholley@apache.org - name: willholley -name: couchdb -sources: -- https://github.com/apache/couchdb-docker -version: 3.3.4 diff --git a/hosting/kubernetes/budibase/charts/couchdb/README.md b/hosting/kubernetes/budibase/charts/couchdb/README.md deleted file mode 100755 index 3227123d06..0000000000 --- a/hosting/kubernetes/budibase/charts/couchdb/README.md +++ /dev/null @@ -1,244 +0,0 @@ -# CouchDB - -Apache CouchDB is a database featuring seamless multi-master sync, that scales -from big data to mobile, with an intuitive HTTP/JSON API and designed for -reliability. - -This chart deploys a CouchDB cluster as a StatefulSet. It creates a ClusterIP -Service in front of the Deployment for load balancing by default, but can also -be configured to deploy other Service types or an Ingress Controller. The -default persistence mechanism is simply the ephemeral local filesystem, but -production deployments should set `persistentVolume.enabled` to `true` to attach -storage volumes to each Pod in the Deployment. - -## TL;DR - -```bash -$ helm repo add couchdb https://apache.github.io/couchdb-helm -$ helm install couchdb/couchdb \ - --set allowAdminParty=true \ - --set couchdbConfig.couchdb.uuid=$(curl https://www.uuidgenerator.net/api/version4 2>/dev/null | tr -d -) -``` - -## Prerequisites - -- Kubernetes 1.9+ with Beta APIs enabled -- Ingress requires Kubernetes 1.14+ - -## Installing the Chart - -To install the chart with the release name `my-release`: - -Add the CouchDB Helm repository: - -```bash -$ helm repo add couchdb https://apache.github.io/couchdb-helm -``` - -Afterwards install the chart replacing the UUID -`decafbaddecafbaddecafbaddecafbad` with a custom one: - -```bash -$ helm install \ - --name my-release \ - --set couchdbConfig.couchdb.uuid=decafbaddecafbaddecafbaddecafbad \ - couchdb/couchdb -``` - -This will create a Secret containing the admin credentials for the cluster. -Those credentials can be retrieved as follows: - -```bash -$ kubectl get secret my-release-couchdb -o go-template='{{ .data.adminPassword }}' | base64 --decode -``` - -If you prefer to configure the admin credentials directly you can create a -Secret containing `adminUsername`, `adminPassword` and `cookieAuthSecret` keys: - -```bash -$ kubectl create secret generic my-release-couchdb --from-literal=adminUsername=foo --from-literal=adminPassword=bar --from-literal=cookieAuthSecret=baz -``` - -If you want to set the `adminHash` directly to achieve consistent salts between -different nodes you need to addionally add the key `password.ini` to the secret: - -```bash -$ kubectl create secret generic my-release-couchdb \ - --from-literal=adminUsername=foo \ - --from-literal=cookieAuthSecret=baz \ - --from-file=./my-password.ini -``` - -With the following contents in `my-password.ini`: - -``` -[admins] -foo = -``` - -and then install the chart while overriding the `createAdminSecret` setting: - -```bash -$ helm install \ - --name my-release \ - --set createAdminSecret=false \ - --set couchdbConfig.couchdb.uuid=decafbaddecafbaddecafbaddecafbad \ - couchdb/couchdb -``` - -This Helm chart deploys CouchDB on the Kubernetes cluster in a default -configuration. The [configuration](#configuration) section lists -the parameters that can be configured during installation. - -> **Tip**: List all releases using `helm list` - -## Uninstalling the Chart - -To uninstall/delete the `my-release` Deployment: - -```bash -$ helm delete my-release -``` - -The command removes all the Kubernetes components associated with the chart and -deletes the release. - -## Upgrading an existing Release to a new major version - -A major chart version change (like v0.2.3 -> v1.0.0) indicates that there is an -incompatible breaking change needing manual actions. - -### Upgrade to 3.0.0 - -Since version 3.0.0 setting the CouchDB server instance UUID is mandatory. -Therefore you need to generate a UUID and supply it as a value during the -upgrade as follows: - -```bash -$ helm upgrade \ - --reuse-values \ - --set couchdbConfig.couchdb.uuid= \ - couchdb/couchdb -``` - -## Migrating from stable/couchdb - -This chart replaces the `stable/couchdb` chart previously hosted by Helm and continues the -version semantics. You can upgrade directly from `stable/couchdb` to this chart using: - -```bash -$ helm repo add couchdb https://apache.github.io/couchdb-helm -$ helm upgrade my-release couchdb/couchdb -``` - -## Configuration - -The following table lists the most commonly configured parameters of the -CouchDB chart and their default values: - -| Parameter | Description | Default | -|---------------------------------|-------------------------------------------------------|----------------------------------------| -| `clusterSize` | The initial number of nodes in the CouchDB cluster | 3 | -| `couchdbConfig` | Map allowing override elements of server .ini config | *See below* | -| `allowAdminParty` | If enabled, start cluster without admin account | false (requires creating a Secret) | -| `createAdminSecret` | If enabled, create an admin account and cookie secret | true | -| `schedulerName` | Name of the k8s scheduler (other than default) | `nil` | -| `erlangFlags` | Map of flags supplied to the underlying Erlang VM | name: couchdb, setcookie: monster -| `persistentVolume.enabled` | Boolean determining whether to attach a PV to each node | false -| `persistentVolume.size` | If enabled, the size of the persistent volume to attach | 10Gi -| `enableSearch` | Adds a sidecar for Lucene-powered text search | false | - -You can set the values of the `couchdbConfig` map according to the -[official configuration][4]. The following shows the map's default values and -required options to set: - -| Parameter | Description | Default | -|---------------------------------|--------------------------------------------------------------------|----------------------------------------| -| `couchdb.uuid` | UUID for this CouchDB server instance ([Required in a cluster][5]) | | -| `chttpd.bind_address` | listens on all interfaces when set to any | any | -| `chttpd.require_valid_user` | disables all the anonymous requests to the port 5984 when true | false | - -A variety of other parameters are also configurable. See the comments in the -`values.yaml` file for further details: - -| Parameter | Default | -|--------------------------------------|----------------------------------------| -| `adminUsername` | admin | -| `adminPassword` | auto-generated | -| `adminHash` | | -| `cookieAuthSecret` | auto-generated | -| `image.repository` | couchdb | -| `image.tag` | 3.1.0 | -| `image.pullPolicy` | IfNotPresent | -| `searchImage.repository` | kocolosk/couchdb-search | -| `searchImage.tag` | 0.1.0 | -| `searchImage.pullPolicy` | IfNotPresent | -| `initImage.repository` | busybox | -| `initImage.tag` | latest | -| `initImage.pullPolicy` | Always | -| `ingress.enabled` | false | -| `ingress.hosts` | chart-example.local | -| `ingress.annotations` | | -| `ingress.path` | / | -| `ingress.tls` | | -| `persistentVolume.accessModes` | ReadWriteOnce | -| `persistentVolume.storageClass` | Default for the Kube cluster | -| `podManagementPolicy` | Parallel | -| `affinity` | | -| `annotations` | | -| `tolerations` | | -| `resources` | | -| `service.annotations` | | -| `service.enabled` | true | -| `service.type` | ClusterIP | -| `service.externalPort` | 5984 | -| `dns.clusterDomainSuffix` | cluster.local | -| `networkPolicy.enabled` | true | -| `serviceAccount.enabled` | true | -| `serviceAccount.create` | true | -| `serviceAccount.imagePullSecrets` | | -| `sidecars` | {} | -| `livenessProbe.enabled` | true | -| `livenessProbe.failureThreshold` | 3 | -| `livenessProbe.initialDelaySeconds` | 0 | -| `livenessProbe.periodSeconds` | 10 | -| `livenessProbe.successThreshold` | 1 | -| `livenessProbe.timeoutSeconds` | 1 | -| `readinessProbe.enabled` | true | -| `readinessProbe.failureThreshold` | 3 | -| `readinessProbe.initialDelaySeconds` | 0 | -| `readinessProbe.periodSeconds` | 10 | -| `readinessProbe.successThreshold` | 1 | -| `readinessProbe.timeoutSeconds` | 1 | - -## Feedback, Issues, Contributing - -General feedback is welcome at our [user][1] or [developer][2] mailing lists. - -Apache CouchDB has a [CONTRIBUTING][3] file with details on how to get started -with issue reporting or contributing to the upkeep of this project. In short, -use GitHub Issues, do not report anything on Docker's website. - -## Non-Apache CouchDB Development Team Contributors - -- [@natarajaya](https://github.com/natarajaya) -- [@satchpx](https://github.com/satchpx) -- [@spanato](https://github.com/spanato) -- [@jpds](https://github.com/jpds) -- [@sebastien-prudhomme](https://github.com/sebastien-prudhomme) -- [@stepanstipl](https://github.com/sebastien-stepanstipl) -- [@amatas](https://github.com/amatas) -- [@Chimney42](https://github.com/Chimney42) -- [@mattjmcnaughton](https://github.com/mattjmcnaughton) -- [@mainephd](https://github.com/mainephd) -- [@AdamDang](https://github.com/AdamDang) -- [@mrtyler](https://github.com/mrtyler) -- [@kevinwlau](https://github.com/kevinwlau) -- [@jeyenzo](https://github.com/jeyenzo) -- [@Pinpin31.](https://github.com/Pinpin31) - -[1]: http://mail-archives.apache.org/mod_mbox/couchdb-user/ -[2]: http://mail-archives.apache.org/mod_mbox/couchdb-dev/ -[3]: https://github.com/apache/couchdb/blob/master/CONTRIBUTING.md -[4]: https://docs.couchdb.org/en/stable/config/index.html -[5]: https://docs.couchdb.org/en/latest/setup/cluster.html#preparing-couchdb-nodes-to-be-joined-into-a-cluster diff --git a/hosting/kubernetes/budibase/charts/couchdb/ci/required-values.yaml b/hosting/kubernetes/budibase/charts/couchdb/ci/required-values.yaml deleted file mode 100755 index 79589d2e04..0000000000 --- a/hosting/kubernetes/budibase/charts/couchdb/ci/required-values.yaml +++ /dev/null @@ -1,3 +0,0 @@ -couchdbConfig: - couchdb: - uuid: "decafbaddecafbaddecafbaddecafbad" diff --git a/hosting/kubernetes/budibase/charts/couchdb/ci/sidecar.yaml b/hosting/kubernetes/budibase/charts/couchdb/ci/sidecar.yaml deleted file mode 100755 index aa570bdf74..0000000000 --- a/hosting/kubernetes/budibase/charts/couchdb/ci/sidecar.yaml +++ /dev/null @@ -1,9 +0,0 @@ -sidecars: - - name: foo - image: "busybox" - imagePullPolicy: IfNotPresent - resources: - requests: - cpu: "0.1" - memory: 10Mi - command: ['while true; do echo "foo"; sleep 5; done;'] diff --git a/hosting/kubernetes/budibase/charts/couchdb/password.ini b/hosting/kubernetes/budibase/charts/couchdb/password.ini deleted file mode 100755 index 4ce8445aae..0000000000 --- a/hosting/kubernetes/budibase/charts/couchdb/password.ini +++ /dev/null @@ -1,2 +0,0 @@ -[admins] -{{ .Values.adminUsername }} = {{ .Values.adminHash }} diff --git a/hosting/kubernetes/budibase/charts/couchdb/templates/NOTES.txt b/hosting/kubernetes/budibase/charts/couchdb/templates/NOTES.txt deleted file mode 100755 index a3658bd37f..0000000000 --- a/hosting/kubernetes/budibase/charts/couchdb/templates/NOTES.txt +++ /dev/null @@ -1,20 +0,0 @@ -Apache CouchDB is starting. Check the status of the Pods using: - - kubectl get pods --namespace {{ .Release.Namespace }} -l "app={{ template "couchdb.name" . }},release={{ .Release.Name }}" - -Once all of the Pods are fully Ready, execute the following command to create -some required system databases: - - kubectl exec --namespace {{ .Release.Namespace }} {{ if not .Values.allowAdminParty }}-it {{ end }}{{ template "couchdb.fullname" . }}-0 -c couchdb -- \ - curl -s \ - http://127.0.0.1:5984/_cluster_setup \ - -X POST \ - -H "Content-Type: application/json" \ -{{- if .Values.allowAdminParty }} - -d '{"action": "finish_cluster"}' -{{- else }} - -d '{"action": "finish_cluster"}' \ - -u -{{- end }} - -Then it's time to relax. diff --git a/hosting/kubernetes/budibase/charts/couchdb/templates/_helpers.tpl b/hosting/kubernetes/budibase/charts/couchdb/templates/_helpers.tpl deleted file mode 100755 index f9d013e487..0000000000 --- a/hosting/kubernetes/budibase/charts/couchdb/templates/_helpers.tpl +++ /dev/null @@ -1,81 +0,0 @@ -{{/* vim: set filetype=mustache: */}} -{{/* -Expand the name of the chart. -*/}} -{{- define "couchdb.name" -}} -{{- default .Chart.Name .Values.nameOverride | trunc 63 | trimSuffix "-" -}} -{{- end -}} - -{{/* -Create a default fully qualified app name. -We truncate at 63 chars because some Kubernetes name fields are limited to this (by the DNS naming spec). -*/}} -{{- define "couchdb.fullname" -}} -{{- if .Values.fullnameOverride -}} -{{- printf "%s-%s" .Values.fullnameOverride .Chart.Name | trunc 63 | trimSuffix "-" -}} -{{- else -}} -{{- $name := default .Chart.Name .Values.nameOverride -}} -{{- printf "%s-%s" .Release.Name $name | trunc 63 | trimSuffix "-" -}} -{{- end -}} -{{- end -}} - -{{/* -In the event that we create both a headless service and a traditional one, -ensure that the latter gets a unique name. -*/}} -{{- define "couchdb.svcname" -}} -{{- if .Values.fullnameOverride -}} -{{- printf "%s-svc-%s" .Values.fullnameOverride .Chart.Name | trunc 63 | trimSuffix "-" -}} -{{- else -}} -{{- $name := default .Chart.Name .Values.nameOverride -}} -{{- printf "%s-svc-%s" .Release.Name $name | trunc 63 | trimSuffix "-" -}} -{{- end -}} -{{- end -}} - -{{/* -Create a random string if the supplied key does not exist -*/}} -{{- define "couchdb.defaultsecret" -}} -{{- if . -}} -{{- . | b64enc | quote -}} -{{- else -}} -{{- randAlphaNum 20 | b64enc | quote -}} -{{- end -}} -{{- end -}} - -{{/* -Labels used to define Pods in the CouchDB statefulset -*/}} -{{- define "couchdb.ss.selector" -}} -app: {{ template "couchdb.name" . }} -release: {{ .Release.Name }} -{{- end -}} - -{{/* -Generates a comma delimited list of nodes in the cluster -*/}} -{{- define "couchdb.seedlist" -}} -{{- $nodeCount := min 5 .Values.clusterSize | int }} - {{- range $index0 := until $nodeCount -}} - {{- $index1 := $index0 | add1 -}} - {{ $.Values.erlangFlags.name }}@{{ template "couchdb.fullname" $ }}-{{ $index0 }}.{{ template "couchdb.fullname" $ }}.{{ $.Release.Namespace }}.svc.{{ $.Values.dns.clusterDomainSuffix }}{{ if ne $index1 $nodeCount }},{{ end }} - {{- end -}} -{{- end -}} - -{{/* -If serviceAccount.name is specified, use that, else use the couchdb instance name -*/}} -{{- define "couchdb.serviceAccount" -}} -{{- if .Values.serviceAccount.name -}} -{{- .Values.serviceAccount.name }} -{{- else -}} -{{- template "couchdb.fullname" . -}} -{{- end -}} -{{- end -}} - -{{/* -Fail if couchdbConfig.couchdb.uuid is undefined -*/}} -{{- define "couchdb.uuid" -}} -{{- required "A value for couchdbConfig.couchdb.uuid must be set" (.Values.couchdbConfig.couchdb | default dict).uuid -}} -{{- end -}} \ No newline at end of file diff --git a/hosting/kubernetes/budibase/charts/couchdb/templates/configmap.yaml b/hosting/kubernetes/budibase/charts/couchdb/templates/configmap.yaml deleted file mode 100755 index a6a20e0574..0000000000 --- a/hosting/kubernetes/budibase/charts/couchdb/templates/configmap.yaml +++ /dev/null @@ -1,23 +0,0 @@ -apiVersion: v1 -kind: ConfigMap -metadata: - name: {{ template "couchdb.fullname" . }} - labels: - app: {{ template "couchdb.name" . }} - chart: "{{ .Chart.Name }}-{{ .Chart.Version }}" - heritage: {{ .Release.Service | quote }} - release: {{ .Release.Name | quote }} -data: - inifile: | - {{ $couchdbConfig := dict "couchdb" (dict "uuid" (include "couchdb.uuid" .)) -}} - {{- $couchdbConfig := merge $couchdbConfig .Values.couchdbConfig -}} - {{- range $section, $settings := $couchdbConfig -}} - {{ printf "[%s]" $section }} - {{ range $key, $value := $settings -}} - {{ printf "%s = %s" $key ($value | toString) }} - {{ end }} - {{ end }} - - seedlistinifile: | - [cluster] - seedlist = {{ template "couchdb.seedlist" . }} diff --git a/hosting/kubernetes/budibase/charts/couchdb/templates/headless.yaml b/hosting/kubernetes/budibase/charts/couchdb/templates/headless.yaml deleted file mode 100755 index 0ce3ef0f35..0000000000 --- a/hosting/kubernetes/budibase/charts/couchdb/templates/headless.yaml +++ /dev/null @@ -1,17 +0,0 @@ -apiVersion: v1 -kind: Service -metadata: - name: {{ template "couchdb.fullname" . }} - labels: - app: {{ template "couchdb.name" . }} - chart: {{ .Chart.Name }}-{{ .Chart.Version | replace "+" "_" }} - release: {{ .Release.Name }} - heritage: {{ .Release.Service }} -spec: - clusterIP: None - publishNotReadyAddresses: true - ports: - - name: couchdb - port: 5984 - selector: -{{ include "couchdb.ss.selector" . | indent 4 }} diff --git a/hosting/kubernetes/budibase/charts/couchdb/templates/ingress.yaml b/hosting/kubernetes/budibase/charts/couchdb/templates/ingress.yaml deleted file mode 100755 index c547847ce5..0000000000 --- a/hosting/kubernetes/budibase/charts/couchdb/templates/ingress.yaml +++ /dev/null @@ -1,33 +0,0 @@ -{{- if .Values.ingress.enabled -}} -{{- $serviceName := include "couchdb.fullname" . -}} -{{- $servicePort := .Values.service.externalPort -}} -{{- $path := .Values.ingress.path | quote -}} -apiVersion: networking.k8s.io/v1beta1 -kind: Ingress -metadata: - name: {{ template "couchdb.fullname" . }} - labels: - app: {{ template "couchdb.name" . }} - chart: {{ .Chart.Name }}-{{ .Chart.Version | replace "+" "_" }} - release: {{ .Release.Name }} - heritage: {{ .Release.Service }} - annotations: - {{- range $key, $value := .Values.ingress.annotations }} - {{ $key }}: {{ $value | quote }} - {{- end }} -spec: - rules: - {{- range $host := .Values.ingress.hosts }} - - host: {{ $host }} - http: - paths: - - path: {{ $path }} - backend: - serviceName: {{ $serviceName }} - servicePort: {{ $servicePort }} - {{- end -}} - {{- if .Values.ingress.tls }} - tls: -{{ toYaml .Values.ingress.tls | indent 4 }} - {{- end -}} -{{- end -}} diff --git a/hosting/kubernetes/budibase/charts/couchdb/templates/networkpolicy.yaml b/hosting/kubernetes/budibase/charts/couchdb/templates/networkpolicy.yaml deleted file mode 100755 index 2830708bef..0000000000 --- a/hosting/kubernetes/budibase/charts/couchdb/templates/networkpolicy.yaml +++ /dev/null @@ -1,31 +0,0 @@ - -{{- if .Values.networkPolicy.enabled }} -kind: NetworkPolicy -apiVersion: networking.k8s.io/v1 -metadata: - name: {{ template "couchdb.fullname" . }} - labels: - app: {{ template "couchdb.name" . }} - chart: {{ .Chart.Name }}-{{ .Chart.Version | replace "+" "_" }} - release: {{ .Release.Name }} - heritage: {{ .Release.Service }} -spec: - podSelector: - matchLabels: -{{ include "couchdb.ss.selector" . | indent 6 }} - ingress: - - ports: - - protocol: TCP - port: 5984 - - ports: - - protocol: TCP - port: 9100 - - protocol: TCP - port: 4369 - from: - - podSelector: - matchLabels: -{{ include "couchdb.ss.selector" . | indent 14 }} - policyTypes: - - Ingress -{{- end }} diff --git a/hosting/kubernetes/budibase/charts/couchdb/templates/secrets.yaml b/hosting/kubernetes/budibase/charts/couchdb/templates/secrets.yaml deleted file mode 100755 index 92f55c6d6b..0000000000 --- a/hosting/kubernetes/budibase/charts/couchdb/templates/secrets.yaml +++ /dev/null @@ -1,19 +0,0 @@ -{{- if .Values.createAdminSecret -}} -apiVersion: v1 -kind: Secret -metadata: - name: {{ template "couchdb.fullname" . }} - labels: - app: {{ template "couchdb.fullname" . }} - chart: "{{ .Chart.Name }}-{{ .Chart.Version }}" - release: "{{ .Release.Name }}" - heritage: "{{ .Release.Service }}" -type: Opaque -data: - adminUsername: {{ template "couchdb.defaultsecret" .Values.adminUsername }} - adminPassword: {{ template "couchdb.defaultsecret" .Values.adminPassword }} - cookieAuthSecret: {{ template "couchdb.defaultsecret" .Values.cookieAuthSecret }} -{{- if .Values.adminHash }} - password.ini: {{ tpl (.Files.Get "password.ini") . | b64enc }} -{{- end -}} -{{- end -}} diff --git a/hosting/kubernetes/budibase/charts/couchdb/templates/service.yaml b/hosting/kubernetes/budibase/charts/couchdb/templates/service.yaml deleted file mode 100755 index 6d0382477d..0000000000 --- a/hosting/kubernetes/budibase/charts/couchdb/templates/service.yaml +++ /dev/null @@ -1,23 +0,0 @@ -{{- if .Values.service.enabled -}} -apiVersion: v1 -kind: Service -metadata: - name: {{ template "couchdb.svcname" . }} - labels: - app: {{ template "couchdb.name" . }} - chart: {{ .Chart.Name }}-{{ .Chart.Version | replace "+" "_" }} - release: {{ .Release.Name }} - heritage: {{ .Release.Service }} -{{- if .Values.service.annotations }} - annotations: -{{ toYaml .Values.service.annotations | indent 4 }} -{{- end }} -spec: - ports: - - port: {{ .Values.service.externalPort }} - protocol: TCP - targetPort: 5984 - type: {{ .Values.service.type }} - selector: -{{ include "couchdb.ss.selector" . | indent 4 }} -{{- end -}} diff --git a/hosting/kubernetes/budibase/charts/couchdb/templates/serviceaccount.yaml b/hosting/kubernetes/budibase/charts/couchdb/templates/serviceaccount.yaml deleted file mode 100755 index bb82799a49..0000000000 --- a/hosting/kubernetes/budibase/charts/couchdb/templates/serviceaccount.yaml +++ /dev/null @@ -1,15 +0,0 @@ -{{- if .Values.serviceAccount.create }} -apiVersion: v1 -kind: ServiceAccount -metadata: - name: {{ template "couchdb.serviceAccount" . }} - labels: - app: {{ template "couchdb.name" . }} - chart: {{ .Chart.Name }}-{{ .Chart.Version | replace "+" "_" }} - release: {{ .Release.Name }} - heritage: {{ .Release.Service }} -{{- if .Values.serviceAccount.imagePullSecrets }} -imagePullSecrets: -{{ toYaml .Values.serviceAccount.imagePullSecrets }} -{{- end }} -{{- end }} diff --git a/hosting/kubernetes/budibase/charts/couchdb/templates/statefulset.yaml b/hosting/kubernetes/budibase/charts/couchdb/templates/statefulset.yaml deleted file mode 100755 index 6225fbe98c..0000000000 --- a/hosting/kubernetes/budibase/charts/couchdb/templates/statefulset.yaml +++ /dev/null @@ -1,202 +0,0 @@ -apiVersion: apps/v1 -kind: StatefulSet -metadata: - name: {{ template "couchdb.fullname" . }} - labels: - app: {{ template "couchdb.name" . }} - chart: {{ .Chart.Name }}-{{ .Chart.Version | replace "+" "_" }} - release: {{ .Release.Name }} - heritage: {{ .Release.Service }} -spec: - replicas: {{ .Values.clusterSize }} - serviceName: {{ template "couchdb.fullname" . }} - podManagementPolicy: {{ .Values.podManagementPolicy }} - selector: - matchLabels: -{{ include "couchdb.ss.selector" . | indent 6 }} - template: - metadata: - labels: -{{ include "couchdb.ss.selector" . | indent 8 }} -{{- with .Values.annotations }} - annotations: - checksum/config: {{ include (print $.Template.BasePath "/configmap.yaml") . | sha256sum }} -{{ toYaml . | indent 8 }} -{{- end }} - spec: - {{- if .Values.schedulerName }} - schedulerName: "{{ .Values.schedulerName }}" - {{- end }} - {{- if .Values.serviceAccount.enabled }} - serviceAccountName: {{ template "couchdb.serviceAccount" . }} - {{- end }} - initContainers: - - name: init-copy - image: "{{ .Values.initImage.repository }}:{{ .Values.initImage.tag }}" - imagePullPolicy: {{ .Values.initImage.pullPolicy }} - command: ['sh','-c','cp /tmp/chart.ini /default.d; cp /tmp/seedlist.ini /default.d; ls -lrt /default.d;'] - volumeMounts: - - name: config - mountPath: /tmp/ - - name: config-storage - mountPath: /default.d -{{- if .Values.adminHash }} - - name: admin-hash-copy - image: "{{ .Values.initImage.repository }}:{{ .Values.initImage.tag }}" - imagePullPolicy: {{ .Values.initImage.pullPolicy }} - command: ['sh','-c','cp /tmp/password.ini /local.d/ ;'] - volumeMounts: - - name: admin-password - mountPath: /tmp/password.ini - subPath: "password.ini" - - name: local-config-storage - mountPath: /local.d -{{- end }} - containers: - - name: couchdb - image: "{{ .Values.image.repository }}:{{ .Values.image.tag }}" - imagePullPolicy: {{ .Values.image.pullPolicy }} - ports: - - name: couchdb - containerPort: 5984 - - name: epmd - containerPort: 4369 - - containerPort: 9100 - env: -{{- if not .Values.allowAdminParty }} - - name: COUCHDB_USER - valueFrom: - secretKeyRef: - name: {{ template "couchdb.fullname" . }} - key: adminUsername - - name: COUCHDB_PASSWORD - valueFrom: - secretKeyRef: - name: {{ template "couchdb.fullname" . }} - key: adminPassword - - name: COUCHDB_SECRET - valueFrom: - secretKeyRef: - name: {{ template "couchdb.fullname" . }} - key: cookieAuthSecret -{{- end }} - - name: ERL_FLAGS - value: "{{ range $k, $v := .Values.erlangFlags }} -{{ $k }} {{ $v }} {{ end }}" -{{- if .Values.livenessProbe.enabled }} - livenessProbe: -{{- if .Values.couchdbConfig.chttpd.require_valid_user }} - exec: - command: - - sh - - -c - - curl -G --silent --fail -u ${COUCHDB_USER}:${COUCHDB_PASSWORD} http://localhost:5984/_up -{{- else }} - httpGet: - path: /_up - port: 5984 -{{- end }} - failureThreshold: {{ .Values.livenessProbe.failureThreshold }} - initialDelaySeconds: {{ .Values.livenessProbe.initialDelaySeconds }} - periodSeconds: {{ .Values.livenessProbe.periodSeconds }} - successThreshold: {{ .Values.livenessProbe.successThreshold }} - timeoutSeconds: {{ .Values.livenessProbe.timeoutSeconds }} -{{- end }} -{{- if .Values.readinessProbe.enabled }} - readinessProbe: -{{- if .Values.couchdbConfig.chttpd.require_valid_user }} - exec: - command: - - sh - - -c - - curl -G --silent --fail -u ${COUCHDB_USER}:${COUCHDB_PASSWORD} http://localhost:5984/_up -{{- else }} - httpGet: - path: /_up - port: 5984 -{{- end }} - failureThreshold: {{ .Values.readinessProbe.failureThreshold }} - initialDelaySeconds: {{ .Values.readinessProbe.initialDelaySeconds }} - periodSeconds: {{ .Values.readinessProbe.periodSeconds }} - successThreshold: {{ .Values.readinessProbe.successThreshold }} - timeoutSeconds: {{ .Values.readinessProbe.timeoutSeconds }} -{{- end }} - resources: -{{ toYaml .Values.resources | indent 12 }} - volumeMounts: - - name: config-storage - mountPath: /opt/couchdb/etc/default.d -{{- if .Values.adminHash }} - - name: local-config-storage - mountPath: /opt/couchdb/etc/local.d -{{- end }} - - name: database-storage - mountPath: /opt/couchdb/data -{{- if .Values.enableSearch }} - - name: clouseau - image: "{{ .Values.searchImage.repository }}:{{ .Values.searchImage.tag }}" - imagePullPolicy: {{ .Values.searchImage.pullPolicy }} - volumeMounts: - - name: database-storage - mountPath: /opt/couchdb-search/data -{{- end }} -{{- if .Values.sidecars }} -{{ toYaml .Values.sidecars | indent 8}} -{{- end }} -{{- if .Values.nodeSelector }} - nodeSelector: -{{ toYaml .Values.nodeSelector | indent 8 }} -{{- end }} -{{- with .Values.tolerations }} - tolerations: -{{ toYaml . | indent 8 }} -{{- end }} -{{- with .Values.affinity }} - affinity: -{{ toYaml . | indent 8 }} -{{- end }} - volumes: - - name: config-storage - emptyDir: {} - - name: config - configMap: - name: {{ template "couchdb.fullname" . }} - items: - - key: inifile - path: chart.ini - - key: seedlistinifile - path: seedlist.ini - -{{- if .Values.adminHash }} - - name: local-config-storage - emptyDir: {} - - name: admin-password - secret: - secretName: {{ template "couchdb.fullname" . }} -{{- end -}} - -{{- if not .Values.persistentVolume.enabled }} - - name: database-storage - emptyDir: {} -{{- else }} - volumeClaimTemplates: - - metadata: - name: database-storage - labels: - app: {{ template "couchdb.name" . }} - release: {{ .Release.Name }} - spec: - accessModes: - {{- range .Values.persistentVolume.accessModes }} - - {{ . | quote }} - {{- end }} - resources: - requests: - storage: {{ .Values.persistentVolume.size | quote }} - {{- if .Values.persistentVolume.storageClass }} - {{- if (eq "-" .Values.persistentVolume.storageClass) }} - storageClassName: "" - {{- else }} - storageClassName: "{{ .Values.persistentVolume.storageClass }}" - {{- end }} - {{- end }} -{{- end }} diff --git a/hosting/kubernetes/budibase/charts/couchdb/values.yaml b/hosting/kubernetes/budibase/charts/couchdb/values.yaml deleted file mode 100755 index 5a5025f816..0000000000 --- a/hosting/kubernetes/budibase/charts/couchdb/values.yaml +++ /dev/null @@ -1,201 +0,0 @@ -## clusterSize is the initial size of the CouchDB cluster. -clusterSize: 3 - -## If allowAdminParty is enabled the cluster will start up without any database -## administrator account; i.e., all users will be granted administrative -## access. Otherwise, the system will look for a Secret called -## -couchdb containing `adminUsername`, `adminPassword` and -## `cookieAuthSecret` keys. See the `createAdminSecret` flag. -## ref: https://kubernetes.io/docs/concepts/configuration/secret/ -allowAdminParty: false - -## If createAdminSecret is enabled a Secret called -couchdb will -## be created containing auto-generated credentials. Users who prefer to set -## these values themselves have a couple of options: -## -## 1) The `adminUsername`, `adminPassword`, `adminHash`, and `cookieAuthSecret` -## can be defined directly in the chart's values. Note that all of a chart's -## values are currently stored in plaintext in a ConfigMap in the tiller -## namespace. -## -## 2) This flag can be disabled and a Secret with the required keys can be -## created ahead of time. -createAdminSecret: true - -# adminUsername: budibase -# adminPassword: budibase -# adminHash: -pbkdf2-this_is_not_necessarily_secure_either -# cookieAuthSecret: admin - -## When enabled, will deploy a networkpolicy that allows CouchDB pods to -## communicate with each other for clustering and ingress on port 5984 -networkPolicy: - enabled: true - -## Use an alternate scheduler, e.g. "stork". -## ref: https://kubernetes.io/docs/tasks/administer-cluster/configure-multiple-schedulers/ -## -# schedulerName: - -# Use a service account -serviceAccount: - enabled: true - create: true -# name: -# imagePullSecrets: -# - name: myimagepullsecret - -## The storage volume used by each Pod in the StatefulSet. If a -## persistentVolume is not enabled, the Pods will use `emptyDir` ephemeral -## local storage. Setting the storageClass attribute to "-" disables dynamic -## provisioning of Persistent Volumes; leaving it unset will invoke the default -## provisioner. -persistentVolume: - enabled: false - accessModes: - - ReadWriteOnce - size: 10Gi - storageClass: "" - -## The CouchDB image -image: - repository: couchdb - tag: 3.1.0 - pullPolicy: IfNotPresent - -## Experimental integration with Lucene-powered fulltext search -searchImage: - repository: kocolosk/couchdb-search - tag: 0.2.0 - pullPolicy: IfNotPresent - -## Flip this to flag to include the Search container in each Pod -enableSearch: true - -initImage: - repository: busybox - tag: latest - pullPolicy: Always - -## CouchDB is happy to spin up cluster nodes in parallel, but if you encounter -## problems you can try setting podManagementPolicy to the StatefulSet default -## `OrderedReady` -podManagementPolicy: Parallel - -## To better tolerate Node failures, we can prevent Kubernetes scheduler from -## assigning more than one Pod of CouchDB StatefulSet per Node using podAntiAffinity. -affinity: {} - # podAntiAffinity: - # requiredDuringSchedulingIgnoredDuringExecution: - # - labelSelector: - # matchExpressions: - # - key: "app" - # operator: In - # values: - # - couchdb - # topologyKey: "kubernetes.io/hostname" - -## Optional pod annotations -annotations: {} - -## Optional tolerations -tolerations: [] - -## A StatefulSet requires a headless Service to establish the stable network -## identities of the Pods, and that Service is created automatically by this -## chart without any additional configuration. The Service block below refers -## to a second Service that governs how clients connect to the CouchDB cluster. -service: - # annotations: - enabled: true - type: ClusterIP - externalPort: 5984 - -## An Ingress resource can provide name-based virtual hosting and TLS -## termination among other things for CouchDB deployments which are accessed -## from outside the Kubernetes cluster. -## ref: https://kubernetes.io/docs/concepts/services-networking/ingress/ -ingress: - enabled: false - hosts: - - chart-example.local - path: / - annotations: [] - # kubernetes.io/ingress.class: nginx - # kubernetes.io/tls-acme: "true" - tls: - # Secrets must be manually created in the namespace. - # - secretName: chart-example-tls - # hosts: - # - chart-example.local - -## Optional resource requests and limits for the CouchDB container -## ref: http://kubernetes.io/docs/user-guide/compute-resources/ -resources: - {} - # requests: - # cpu: 100m - # memory: 128Mi - # limits: - # cpu: 56 - # memory: 256Gi - -## erlangFlags is a map that is passed to the Erlang VM as flags using the -## ERL_FLAGS env. `name` and `setcookie` flags are minimally required to -## establish connectivity between cluster nodes. -## ref: http://erlang.org/doc/man/erl.html#init_flags -erlangFlags: - name: couchdb - setcookie: monster - -## couchdbConfig will override default CouchDB configuration settings. -## The contents of this map are reformatted into a .ini file laid down -## by a ConfigMap object. -## ref: http://docs.couchdb.org/en/latest/config/index.html -couchdbConfig: - couchdb: - uuid: budibase-couchdb # REQUIRED: Unique identifier for this CouchDB server instance - # cluster: - # q: 8 # Create 8 shards for each database - chttpd: - bind_address: any - # chttpd.require_valid_user disables all the anonymous requests to the port - # 5984 when is set to true. - require_valid_user: false - -# Kubernetes local cluster domain. -# This is used to generate FQDNs for peers when joining the CouchDB cluster. -dns: - clusterDomainSuffix: cluster.local - -## Configure liveness and readiness probe values -## Ref: https://kubernetes.io/docs/tasks/configure-pod-container/configure-liveness-readiness-probes/#configure-probes -livenessProbe: - enabled: true - failureThreshold: 3 - initialDelaySeconds: 0 - periodSeconds: 10 - successThreshold: 1 - timeoutSeconds: 1 -readinessProbe: - enabled: true - failureThreshold: 3 - initialDelaySeconds: 0 - periodSeconds: 10 - successThreshold: 1 - timeoutSeconds: 1 - -# Configure arbitrary sidecar containers for CouchDB pods created by the -# StatefulSet -sidecars: {} - # - name: foo - # image: "busybox" - # imagePullPolicy: IfNotPresent - # resources: - # requests: - # cpu: "0.1" - # memory: 10Mi - # command: ['echo "foo";'] - # volumeMounts: - # - name: database-storage - # mountPath: /opt/couchdb/data/ diff --git a/hosting/kubernetes/budibase/values.yaml b/hosting/kubernetes/budibase/values.yaml index bd9f6543b3..ec3629e094 100644 --- a/hosting/kubernetes/budibase/values.yaml +++ b/hosting/kubernetes/budibase/values.yaml @@ -126,12 +126,10 @@ services: couchdb: enabled: true - replicaCount: 3 # url: "" # only change if pointing to existing couch server # user: "" # only change if pointing to existing couch server # password: "" # only change if pointing to existing couch server port: 5984 - storage: 100Mi redis: enabled: true # disable if using external redis @@ -151,3 +149,151 @@ services: region: "" # AWS_REGION if using S3 or existing minio secret url: "" # only change if pointing to existing minio cluster and minio: false storage: 100Mi + +# Override values in couchDB subchart +couchdb: + ## clusterSize is the initial size of the CouchDB cluster. + clusterSize: 3 + allowAdminParty: false + + # Secret Management + createAdminSecret: true + + # adminUsername: budibase + # adminPassword: budibase + # adminHash: -pbkdf2-this_is_not_necessarily_secure_either + # cookieAuthSecret: admin + + ## When enabled, will deploy a networkpolicy that allows CouchDB pods to + ## communicate with each other for clustering and ingress on port 5984 + networkPolicy: + enabled: true + + # Use a service account + serviceAccount: + enabled: true + create: true + # name: + # imagePullSecrets: + # - name: myimagepullsecret + + ## The storage volume used by each Pod in the StatefulSet. If a + ## persistentVolume is not enabled, the Pods will use `emptyDir` ephemeral + ## local storage. Setting the storageClass attribute to "-" disables dynamic + ## provisioning of Persistent Volumes; leaving it unset will invoke the default + ## provisioner. + persistentVolume: + enabled: false + accessModes: + - ReadWriteOnce + size: 10Gi + storageClass: "" + + ## The CouchDB image + image: + repository: couchdb + tag: 3.1.0 + pullPolicy: IfNotPresent + + ## Experimental integration with Lucene-powered fulltext search + enableSearch: true + searchImage: + repository: kocolosk/couchdb-search + tag: 0.2.0 + pullPolicy: IfNotPresent + + initImage: + repository: busybox + tag: latest + pullPolicy: Always + + ## CouchDB is happy to spin up cluster nodes in parallel, but if you encounter + ## problems you can try setting podManagementPolicy to the StatefulSet default + ## `OrderedReady` + podManagementPolicy: Parallel + + ## Optional pod annotations + annotations: {} + + ## Optional tolerations + tolerations: [] + + service: + # annotations: + enabled: true + type: ClusterIP + externalPort: 5984 + + ## An Ingress resource can provide name-based virtual hosting and TLS + ## termination among other things for CouchDB deployments which are accessed + ## from outside the Kubernetes cluster. + ## ref: https://kubernetes.io/docs/concepts/services-networking/ingress/ + ingress: + enabled: false + hosts: + - chart-example.local + path: / + annotations: [] + # kubernetes.io/ingress.class: nginx + # kubernetes.io/tls-acme: "true" + tls: + # Secrets must be manually created in the namespace. + # - secretName: chart-example-tls + # hosts: + # - chart-example.local + + ## Optional resource requests and limits for the CouchDB container + ## ref: http://kubernetes.io/docs/user-guide/compute-resources/ + resources: + {} + # requests: + # cpu: 100m + # memory: 128Mi + # limits: + # cpu: 56 + # memory: 256Gi + + ## erlangFlags is a map that is passed to the Erlang VM as flags using the + ## ERL_FLAGS env. `name` and `setcookie` flags are minimally required to + ## establish connectivity between cluster nodes. + ## ref: http://erlang.org/doc/man/erl.html#init_flags + erlangFlags: + name: couchdb + setcookie: monster + + ## couchdbConfig will override default CouchDB configuration settings. + ## The contents of this map are reformatted into a .ini file laid down + ## by a ConfigMap object. + ## ref: http://docs.couchdb.org/en/latest/config/index.html + couchdbConfig: + couchdb: + uuid: budibase-couchdb # REQUIRED: Unique identifier for this CouchDB server instance + # cluster: + # q: 8 # Create 8 shards for each database + chttpd: + bind_address: any + # chttpd.require_valid_user disables all the anonymous requests to the port + # 5984 when is set to true. + require_valid_user: false + + # Kubernetes local cluster domain. + # This is used to generate FQDNs for peers when joining the CouchDB cluster. + dns: + clusterDomainSuffix: cluster.local + + ## Configure liveness and readiness probe values + ## Ref: https://kubernetes.io/docs/tasks/configure-pod-container/configure-liveness-readiness-probes/#configure-probes + livenessProbe: + enabled: true + failureThreshold: 3 + initialDelaySeconds: 0 + periodSeconds: 10 + successThreshold: 1 + timeoutSeconds: 1 + readinessProbe: + enabled: true + failureThreshold: 3 + initialDelaySeconds: 0 + periodSeconds: 10 + successThreshold: 1 + timeoutSeconds: 1 \ No newline at end of file diff --git a/scripts/index.yaml b/scripts/index.yaml new file mode 100644 index 0000000000..2990f842ce --- /dev/null +++ b/scripts/index.yaml @@ -0,0 +1,30 @@ +apiVersion: v1 +entries: + budibase: + - apiVersion: v2 + appVersion: 0.1.6 + created: "2021-12-06T17:18:57.819135+01:00" + dependencies: + - condition: services.couchdb.enabled + name: couchdb + repository: https://apache.github.io/couchdb-helm + version: 3.3.4 + - condition: ingress.nginx + name: ingress-nginx + repository: https://github.com/kubernetes/ingress-nginx + version: 3.35.0 + description: Budibase is an open source low-code platform, helping thousands of teams build apps for their workplace in minutes. + digest: 5bd6418e9a78bf4d8df6de077d4392a647ea30324e33cae38da480e162af3c22 + keywords: + - low-code + - database + - cluster + name: budibase + sources: + - https://github.com/Budibase/budibase + - https://budibase.com + type: application + urls: + - https://budibase.github.io/budibase/budibase-0.2.3.tgz + version: 0.2.3 +generated: "2021-12-06T17:18:57.814315+01:00" From 8269e85eb92623c259f28e9dc455b52608d16a92 Mon Sep 17 00:00:00 2001 From: Martin McKeaveney Date: Mon, 6 Dec 2021 18:33:31 +0100 Subject: [PATCH 076/175] helm chart release --- docs/budibase-0.2.3.tgz | Bin 42443 -> 43033 bytes docs/index.yaml | 38 +++++++++++++++++++++---- hosting/kubernetes/budibase/Chart.yaml | 2 +- scripts/index.yaml | 30 ------------------- 4 files changed, 33 insertions(+), 37 deletions(-) delete mode 100644 scripts/index.yaml diff --git a/docs/budibase-0.2.3.tgz b/docs/budibase-0.2.3.tgz index 23fbe03712063a9a505435306cf01f76a437f727..b7207376a131ead28492f3a9f6330788396b7ee2 100644 GIT binary patch literal 43033 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 diff --git a/docs/index.yaml b/docs/index.yaml index 04543c147e..1230b3cbc2 100644 --- a/docs/index.yaml +++ b/docs/index.yaml @@ -1,9 +1,35 @@ apiVersion: v1 entries: budibase: + - apiVersion: v2 + appVersion: 1.0.6 + created: "2021-12-06T18:32:46.48467+01:00" + dependencies: + - condition: services.couchdb.enabled + name: couchdb + repository: https://apache.github.io/couchdb-helm + version: 3.3.4 + - condition: ingress.nginx + name: ingress-nginx + repository: https://github.com/kubernetes/ingress-nginx + version: 3.35.0 + description: Budibase is an open source low-code platform, helping thousands of teams build apps for their workplace in minutes. + digest: 6c58f3fa361f9447721405d11616436679599c90c719a91cf892add5b1ad665a + keywords: + - low-code + - database + - cluster + name: budibase + sources: + - https://github.com/Budibase/budibase + - https://budibase.com + type: application + urls: + - https://budibase.github.io/budibase/budibase-0.2.3.tgz + version: 0.2.3 - apiVersion: v2 appVersion: 0.9.169 - created: "2021-10-20T14:27:23.521358+01:00" + created: "2021-12-06T18:32:46.480554+01:00" dependencies: - condition: services.couchdb.enabled name: couchdb @@ -29,7 +55,7 @@ entries: version: 0.2.2 - apiVersion: v2 appVersion: 0.9.163 - created: "2021-10-20T14:27:23.5153+01:00" + created: "2021-12-06T18:32:46.475721+01:00" dependencies: - condition: services.couchdb.enabled name: couchdb @@ -55,7 +81,7 @@ entries: version: 0.2.1 - apiVersion: v2 appVersion: 0.9.163 - created: "2021-10-20T14:27:23.510041+01:00" + created: "2021-12-06T18:32:46.47183+01:00" dependencies: - condition: services.couchdb.enabled name: couchdb @@ -81,7 +107,7 @@ entries: version: 0.2.0 - apiVersion: v2 appVersion: 0.9.56 - created: "2021-10-20T14:27:23.504543+01:00" + created: "2021-12-06T18:32:46.468237+01:00" dependencies: - condition: services.couchdb.enabled name: couchdb @@ -106,7 +132,7 @@ entries: version: 0.1.1 - apiVersion: v2 appVersion: 0.9.56 - created: "2021-10-20T14:27:23.496847+01:00" + created: "2021-12-06T18:32:46.463312+01:00" dependencies: - condition: services.couchdb.enabled name: couchdb @@ -129,4 +155,4 @@ entries: urls: - https://budibase.github.io/budibase/budibase-0.1.0.tgz version: 0.1.0 -generated: "2021-10-20T14:27:23.491132+01:00" +generated: "2021-12-06T18:32:46.459076+01:00" diff --git a/hosting/kubernetes/budibase/Chart.yaml b/hosting/kubernetes/budibase/Chart.yaml index a8db638a7e..cc4bbaa5f5 100644 --- a/hosting/kubernetes/budibase/Chart.yaml +++ b/hosting/kubernetes/budibase/Chart.yaml @@ -28,7 +28,7 @@ version: 0.2.3 # incremented each time you make changes to the application. Versions are not expected to # follow Semantic Versioning. They should reflect the version the application is using. # It is recommended to use it with quotes. -appVersion: "0.1.6" +appVersion: "1.0.6" dependencies: - name: couchdb diff --git a/scripts/index.yaml b/scripts/index.yaml deleted file mode 100644 index 2990f842ce..0000000000 --- a/scripts/index.yaml +++ /dev/null @@ -1,30 +0,0 @@ -apiVersion: v1 -entries: - budibase: - - apiVersion: v2 - appVersion: 0.1.6 - created: "2021-12-06T17:18:57.819135+01:00" - dependencies: - - condition: services.couchdb.enabled - name: couchdb - repository: https://apache.github.io/couchdb-helm - version: 3.3.4 - - condition: ingress.nginx - name: ingress-nginx - repository: https://github.com/kubernetes/ingress-nginx - version: 3.35.0 - description: Budibase is an open source low-code platform, helping thousands of teams build apps for their workplace in minutes. - digest: 5bd6418e9a78bf4d8df6de077d4392a647ea30324e33cae38da480e162af3c22 - keywords: - - low-code - - database - - cluster - name: budibase - sources: - - https://github.com/Budibase/budibase - - https://budibase.com - type: application - urls: - - https://budibase.github.io/budibase/budibase-0.2.3.tgz - version: 0.2.3 -generated: "2021-12-06T17:18:57.814315+01:00" From 1d0b08905f496e8db613194f4c2dc8dc9fb2ef98 Mon Sep 17 00:00:00 2001 From: Martin McKeaveney Date: Wed, 8 Dec 2021 08:27:04 +0000 Subject: [PATCH 077/175] adding image tag to worker and app services --- .../kubernetes/budibase/templates/app-service-deployment.yaml | 2 +- .../budibase/templates/worker-service-deployment.yaml | 2 +- hosting/kubernetes/budibase/values.yaml | 3 +-- 3 files changed, 3 insertions(+), 4 deletions(-) diff --git a/hosting/kubernetes/budibase/templates/app-service-deployment.yaml b/hosting/kubernetes/budibase/templates/app-service-deployment.yaml index 7c62ada63f..949a8f6286 100644 --- a/hosting/kubernetes/budibase/templates/app-service-deployment.yaml +++ b/hosting/kubernetes/budibase/templates/app-service-deployment.yaml @@ -110,7 +110,7 @@ spec: value: {{ .Values.globals.accountPortalApiKey | quote }} - name: COOKIE_DOMAIN value: {{ .Values.globals.cookieDomain | quote }} - image: budibase/apps + image: budibase/apps:{{ .Values.services.budibaseVersion }} imagePullPolicy: Always name: bbapps ports: diff --git a/hosting/kubernetes/budibase/templates/worker-service-deployment.yaml b/hosting/kubernetes/budibase/templates/worker-service-deployment.yaml index 6cded8545f..858587be1c 100644 --- a/hosting/kubernetes/budibase/templates/worker-service-deployment.yaml +++ b/hosting/kubernetes/budibase/templates/worker-service-deployment.yaml @@ -115,7 +115,7 @@ spec: value: {{ .Values.globals.smtp.from | quote }} - name: APPS_URL value: http://app-service:{{ .Values.services.apps.port }} - image: budibase/worker + image: budibase/worker:{{ .Values.services.budibaseVersion }} imagePullPolicy: Always name: bbworker ports: diff --git a/hosting/kubernetes/budibase/values.yaml b/hosting/kubernetes/budibase/values.yaml index ec3629e094..fe48a7b7e0 100644 --- a/hosting/kubernetes/budibase/values.yaml +++ b/hosting/kubernetes/budibase/values.yaml @@ -2,8 +2,6 @@ # This is a YAML-formatted file. # Declare variables to be passed into your templates. -replicaCount: 1 - image: pullPolicy: IfNotPresent # Overrides the image tag whose default is the chart appVersion. @@ -109,6 +107,7 @@ globals: enabled: false services: + budibaseVersion: latest dns: cluster.local proxy: From cb1f87083195399b7beb0469461c2341c4df8ca0 Mon Sep 17 00:00:00 2001 From: Andrew Kingston Date: Wed, 8 Dec 2021 08:35:19 +0000 Subject: [PATCH 078/175] Key links by URL as the svelte-spa-router link svelte action does not update correctly --- .../client/src/components/app/Link.svelte | 26 ++++++++++--------- 1 file changed, 14 insertions(+), 12 deletions(-) diff --git a/packages/client/src/components/app/Link.svelte b/packages/client/src/components/app/Link.svelte index 851b2f0b66..91537b5b38 100644 --- a/packages/client/src/components/app/Link.svelte +++ b/packages/client/src/components/app/Link.svelte @@ -79,18 +79,20 @@ {componentText} {:else} - - {componentText} - + {#key url} + + {componentText} + + {/key} {/if} {/if} From 49551ceb54fcc020f1e0edc7a7a45b63237310a2 Mon Sep 17 00:00:00 2001 From: Andrew Kingston Date: Wed, 8 Dec 2021 08:36:01 +0000 Subject: [PATCH 079/175] Fix incorrect icon used for repeater layout in settings bar --- packages/client/manifest.json | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/packages/client/manifest.json b/packages/client/manifest.json index d16b117215..de2ebc51e0 100644 --- a/packages/client/manifest.json +++ b/packages/client/manifest.json @@ -393,13 +393,13 @@ { "label": "Column", "value": "column", - "barIcon": "ViewRow", + "barIcon": "ViewColumn", "barTitle": "Column layout" }, { "label": "Row", "value": "row", - "barIcon": "ViewColumn", + "barIcon": "ViewRow", "barTitle": "Row layout" } ], From 6b20d5cf4616b656eaf7739e17e33b7a743ea329 Mon Sep 17 00:00:00 2001 From: Andrew Kingston Date: Wed, 8 Dec 2021 09:03:56 +0000 Subject: [PATCH 080/175] Allow internal links to be opened in a new tab --- .../client/src/components/app/Link.svelte | 22 +++++++++++++++---- 1 file changed, 18 insertions(+), 4 deletions(-) diff --git a/packages/client/src/components/app/Link.svelte b/packages/client/src/components/app/Link.svelte index 91537b5b38..f47a2a0522 100644 --- a/packages/client/src/components/app/Link.svelte +++ b/packages/client/src/components/app/Link.svelte @@ -21,11 +21,25 @@ $: target = openInNewTab ? "_blank" : "_self" $: placeholder = $builderStore.inBuilder && !text $: componentText = getComponentText(text, $builderStore, $component) + $: sanitizedUrl = getSanitizedUrl(url, externalLink, openInNewTab) // Add color styles to main styles object, otherwise the styleable helper // overrides the color when it's passed as inline style. $: styles = enrichStyles($component.styles, color) + const getSanitizedUrl = (url, externalLink, newTab) => { + if (!url) { + return externalLink || newTab ? "#/" : "/" + } + if (externalLink) { + return url + } + if (openInNewTab) { + return `#${url}` + } + return url + } + const getComponentText = (text, builderState, componentState) => { if (!builderState.inBuilder || componentState.editing) { return text || "" @@ -65,10 +79,10 @@ {componentText}
{:else if $builderStore.inBuilder || componentText} - {#if externalLink} + {#if externalLink || openInNewTab} {:else} - {#key url} + {#key sanitizedUrl} Date: Wed, 8 Dec 2021 09:31:39 +0000 Subject: [PATCH 081/175] Fix query params directly mutating the stored app definition --- .../PropertyControls/DataSourceSelect.svelte | 34 +++++++++++-------- 1 file changed, 19 insertions(+), 15 deletions(-) diff --git a/packages/builder/src/components/design/PropertiesPanel/PropertyControls/DataSourceSelect.svelte b/packages/builder/src/components/design/PropertiesPanel/PropertyControls/DataSourceSelect.svelte index dc1b24077a..4cb080d0c9 100644 --- a/packages/builder/src/components/design/PropertiesPanel/PropertyControls/DataSourceSelect.svelte +++ b/packages/builder/src/components/design/PropertiesPanel/PropertyControls/DataSourceSelect.svelte @@ -31,6 +31,7 @@ const arrayTypes = ["attachment", "array"] let anchorRight, dropdownRight let drawer + let tmpQueryParams $: text = value?.label ?? "Choose an option" $: tables = $tablesStore.list.map(m => ({ @@ -105,12 +106,12 @@ } }) - function handleSelected(selected) { + const handleSelected = selected => { dispatch("change", selected) dropdownRight.hide() } - function fetchQueryDefinition(query) { + const fetchQueryDefinition = query => { const source = $datasources.list.find( ds => ds._id === query.datasourceId ).source @@ -124,6 +125,19 @@ const getQueryDatasource = query => { return $datasources.list.find(ds => ds._id === query?.datasourceId) } + + const openQueryParamsDrawer = () => { + tmpQueryParams = value.queryParams + drawer.show() + } + + const saveQueryParams = () => { + handleSelected({ + ...value, + queryParams: tmpQueryParams, + }) + drawer.hide() + }
@@ -134,24 +148,14 @@ on:click={dropdownRight.show} /> {#if value?.type === "query"} - + - + {#if getQueryParams(value).length > 0} From 96e2ada5bd06dcf97c4afdc4b42f90f15e58d58b Mon Sep 17 00:00:00 2001 From: Andrew Kingston Date: Wed, 8 Dec 2021 09:42:19 +0000 Subject: [PATCH 082/175] Lint --- .../PropertiesPanel/PropertyControls/DataSourceSelect.svelte | 1 - 1 file changed, 1 deletion(-) diff --git a/packages/builder/src/components/design/PropertiesPanel/PropertyControls/DataSourceSelect.svelte b/packages/builder/src/components/design/PropertiesPanel/PropertyControls/DataSourceSelect.svelte index 4cb080d0c9..220bd41205 100644 --- a/packages/builder/src/components/design/PropertiesPanel/PropertyControls/DataSourceSelect.svelte +++ b/packages/builder/src/components/design/PropertiesPanel/PropertyControls/DataSourceSelect.svelte @@ -17,7 +17,6 @@ queries as queriesStore, } from "stores/backend" import { datasources, integrations } from "stores/backend" - import { notifications } from "@budibase/bbui" import ParameterBuilder from "components/integration/QueryParameterBuilder.svelte" import IntegrationQueryEditor from "components/integration/index.svelte" import { makePropSafe as safe } from "@budibase/string-templates" From a90cfc3e73a16e26651aeb2838b2cb10332b1bc0 Mon Sep 17 00:00:00 2001 From: Andrew Kingston Date: Wed, 8 Dec 2021 09:45:50 +0000 Subject: [PATCH 083/175] Coerce picker option labels to string to fix bug when using autocomplete with numeric labels --- packages/bbui/src/Form/Core/Picker.svelte | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/packages/bbui/src/Form/Core/Picker.svelte b/packages/bbui/src/Form/Core/Picker.svelte index 5f4da1cad9..1af819e44a 100644 --- a/packages/bbui/src/Form/Core/Picker.svelte +++ b/packages/bbui/src/Form/Core/Picker.svelte @@ -63,9 +63,9 @@ const getFilteredOptions = (options, term, getLabel) => { if (autocomplete && term) { const lowerCaseTerm = term.toLowerCase() - return options.filter(option => - getLabel(option)?.toLowerCase().includes(lowerCaseTerm) - ) + return options.filter(option => { + return `${getLabel(option)}`?.toLowerCase().includes(lowerCaseTerm) + }) } return options } From b8b66b0c0715c16d0d611baf24fceeb99a877f4f Mon Sep 17 00:00:00 2001 From: Andrew Kingston Date: Wed, 8 Dec 2021 09:47:43 +0000 Subject: [PATCH 084/175] Remove unnecessary optional chaining --- packages/bbui/src/Form/Core/Picker.svelte | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/packages/bbui/src/Form/Core/Picker.svelte b/packages/bbui/src/Form/Core/Picker.svelte index 1af819e44a..143536a60a 100644 --- a/packages/bbui/src/Form/Core/Picker.svelte +++ b/packages/bbui/src/Form/Core/Picker.svelte @@ -64,7 +64,7 @@ if (autocomplete && term) { const lowerCaseTerm = term.toLowerCase() return options.filter(option => { - return `${getLabel(option)}`?.toLowerCase().includes(lowerCaseTerm) + return `${getLabel(option)}`.toLowerCase().includes(lowerCaseTerm) }) } return options From 90011b53ccd1af548c1fedbddb0b9427a97d7653 Mon Sep 17 00:00:00 2001 From: Andrew Kingston Date: Wed, 8 Dec 2021 10:59:26 +0000 Subject: [PATCH 085/175] Use full runtime bindings in automation settings and enable JS bindings for backend log action --- .../SetupPanel/AutomationBlockSetup.svelte | 18 ++++++++++-------- 1 file changed, 10 insertions(+), 8 deletions(-) diff --git a/packages/builder/src/components/automation/SetupPanel/AutomationBlockSetup.svelte b/packages/builder/src/components/automation/SetupPanel/AutomationBlockSetup.svelte index e7208518d5..acda9b89e0 100644 --- a/packages/builder/src/components/automation/SetupPanel/AutomationBlockSetup.svelte +++ b/packages/builder/src/components/automation/SetupPanel/AutomationBlockSetup.svelte @@ -96,13 +96,16 @@ allSteps[idx].schema?.outputs?.properties ?? {} ) bindings = bindings.concat( - outputs.map(([name, value]) => ({ - label: name, - type: value.type, - description: value.description, - category: idx === 0 ? "Trigger outputs" : `Step ${idx} outputs`, - path: idx === 0 ? `trigger.${name}` : `steps.${idx}.${name}`, - })) + outputs.map(([name, value]) => { + const runtime = idx === 0 ? `trigger.${name}` : `steps.${idx}.${name}` + return { + label: runtime, + type: value.type, + description: value.description, + category: idx === 0 ? "Trigger outputs" : `Step ${idx} outputs`, + path: runtime, + } + }) ) } return bindings @@ -261,7 +264,6 @@ value={inputData[key]} on:change={e => onChange(e, key)} {bindings} - allowJS={false} />
{/if} From a382184cd0de4476eb74e8a3d6c84a1cfc27735c Mon Sep 17 00:00:00 2001 From: Budibase Release Bot <> Date: Wed, 8 Dec 2021 11:38:32 +0000 Subject: [PATCH 086/175] v1.0.8 --- lerna.json | 2 +- packages/auth/package.json | 2 +- packages/bbui/package.json | 2 +- packages/builder/package.json | 8 ++++---- packages/cli/package.json | 2 +- packages/client/package.json | 6 +++--- packages/server/package.json | 8 ++++---- packages/string-templates/package.json | 2 +- packages/worker/package.json | 6 +++--- 9 files changed, 19 insertions(+), 19 deletions(-) diff --git a/lerna.json b/lerna.json index 49a49487d3..d19745b11c 100644 --- a/lerna.json +++ b/lerna.json @@ -1,5 +1,5 @@ { - "version": "1.0.7", + "version": "1.0.8", "npmClient": "yarn", "packages": [ "packages/*" diff --git a/packages/auth/package.json b/packages/auth/package.json index a66b3c912b..aa41d93782 100644 --- a/packages/auth/package.json +++ b/packages/auth/package.json @@ -1,6 +1,6 @@ { "name": "@budibase/auth", - "version": "1.0.7", + "version": "1.0.8", "description": "Authentication middlewares for budibase builder and apps", "main": "src/index.js", "author": "Budibase", diff --git a/packages/bbui/package.json b/packages/bbui/package.json index 82fb9bbda6..826c833602 100644 --- a/packages/bbui/package.json +++ b/packages/bbui/package.json @@ -1,7 +1,7 @@ { "name": "@budibase/bbui", "description": "A UI solution used in the different Budibase projects.", - "version": "1.0.7", + "version": "1.0.8", "license": "MPL-2.0", "svelte": "src/index.js", "module": "dist/bbui.es.js", diff --git a/packages/builder/package.json b/packages/builder/package.json index e91c57415f..72552d7642 100644 --- a/packages/builder/package.json +++ b/packages/builder/package.json @@ -1,6 +1,6 @@ { "name": "@budibase/builder", - "version": "1.0.7", + "version": "1.0.8", "license": "GPL-3.0", "private": true, "scripts": { @@ -65,10 +65,10 @@ } }, "dependencies": { - "@budibase/bbui": "^1.0.7", - "@budibase/client": "^1.0.7", + "@budibase/bbui": "^1.0.8", + "@budibase/client": "^1.0.8", "@budibase/colorpicker": "1.1.2", - "@budibase/string-templates": "^1.0.7", + "@budibase/string-templates": "^1.0.8", "@sentry/browser": "5.19.1", "@spectrum-css/page": "^3.0.1", "@spectrum-css/vars": "^3.0.1", diff --git a/packages/cli/package.json b/packages/cli/package.json index e7ec3372a1..ad050235fe 100644 --- a/packages/cli/package.json +++ b/packages/cli/package.json @@ -1,6 +1,6 @@ { "name": "@budibase/cli", - "version": "1.0.7", + "version": "1.0.8", "description": "Budibase CLI, for developers, self hosting and migrations.", "main": "src/index.js", "bin": { diff --git a/packages/client/package.json b/packages/client/package.json index 8656c443ce..3b831055d0 100644 --- a/packages/client/package.json +++ b/packages/client/package.json @@ -1,6 +1,6 @@ { "name": "@budibase/client", - "version": "1.0.7", + "version": "1.0.8", "license": "MPL-2.0", "module": "dist/budibase-client.js", "main": "dist/budibase-client.js", @@ -19,9 +19,9 @@ "dev:builder": "rollup -cw" }, "dependencies": { - "@budibase/bbui": "^1.0.7", + "@budibase/bbui": "^1.0.8", "@budibase/standard-components": "^0.9.139", - "@budibase/string-templates": "^1.0.7", + "@budibase/string-templates": "^1.0.8", "regexparam": "^1.3.0", "shortid": "^2.2.15", "svelte-spa-router": "^3.0.5" diff --git a/packages/server/package.json b/packages/server/package.json index 67f6de62c0..155b85d84d 100644 --- a/packages/server/package.json +++ b/packages/server/package.json @@ -1,7 +1,7 @@ { "name": "@budibase/server", "email": "hi@budibase.com", - "version": "1.0.7", + "version": "1.0.8", "description": "Budibase Web Server", "main": "src/index.ts", "repository": { @@ -69,9 +69,9 @@ "author": "Budibase", "license": "GPL-3.0", "dependencies": { - "@budibase/auth": "^1.0.7", - "@budibase/client": "^1.0.7", - "@budibase/string-templates": "^1.0.7", + "@budibase/auth": "^1.0.8", + "@budibase/client": "^1.0.8", + "@budibase/string-templates": "^1.0.8", "@bull-board/api": "^3.7.0", "@bull-board/koa": "^3.7.0", "@elastic/elasticsearch": "7.10.0", diff --git a/packages/string-templates/package.json b/packages/string-templates/package.json index 3036bf7e9f..53d94f91e7 100644 --- a/packages/string-templates/package.json +++ b/packages/string-templates/package.json @@ -1,6 +1,6 @@ { "name": "@budibase/string-templates", - "version": "1.0.7", + "version": "1.0.8", "description": "Handlebars wrapper for Budibase templating.", "main": "src/index.cjs", "module": "dist/bundle.mjs", diff --git a/packages/worker/package.json b/packages/worker/package.json index d556d5f581..34986cef6a 100644 --- a/packages/worker/package.json +++ b/packages/worker/package.json @@ -1,7 +1,7 @@ { "name": "@budibase/worker", "email": "hi@budibase.com", - "version": "1.0.7", + "version": "1.0.8", "description": "Budibase background service", "main": "src/index.js", "repository": { @@ -29,8 +29,8 @@ "author": "Budibase", "license": "GPL-3.0", "dependencies": { - "@budibase/auth": "^1.0.7", - "@budibase/string-templates": "^1.0.7", + "@budibase/auth": "^1.0.8", + "@budibase/string-templates": "^1.0.8", "@koa/router": "^8.0.0", "@sentry/node": "^6.0.0", "@techpass/passport-openidconnect": "^0.3.0", From 6f7926015a83b720382a20da151075a069c3f783 Mon Sep 17 00:00:00 2001 From: Martin McKeaveney Date: Wed, 8 Dec 2021 13:19:43 +0000 Subject: [PATCH 087/175] ensure that dry runs between budibase-infra and standard templates match --- .../templates/app-service-deployment.yaml | 6 +-- .../budibase/templates/couchdb-backup.yaml | 43 +++++++++++++++++++ .../templates/worker-service-deployment.yaml | 6 +-- hosting/kubernetes/budibase/values.yaml | 8 +++- 4 files changed, 52 insertions(+), 11 deletions(-) create mode 100644 hosting/kubernetes/budibase/templates/couchdb-backup.yaml diff --git a/hosting/kubernetes/budibase/templates/app-service-deployment.yaml b/hosting/kubernetes/budibase/templates/app-service-deployment.yaml index 949a8f6286..5e45474c8a 100644 --- a/hosting/kubernetes/budibase/templates/app-service-deployment.yaml +++ b/hosting/kubernetes/budibase/templates/app-service-deployment.yaml @@ -73,17 +73,13 @@ spec: name: {{ template "budibase.fullname" . }} key: objectStoreSecret - name: MINIO_URL - {{ if .Values.services.objectStore.url }} value: {{ .Values.services.objectStore.url }} - {{ else }} - value: http://minio-service:{{ .Values.services.objectStore.port }} - {{ end }} - name: PORT value: {{ .Values.services.apps.port | quote }} - name: MULTI_TENANCY value: {{ .Values.globals.multiTenancy | quote }} - name: LOG_LEVEL - value: {{ .Values.services.apps.logLevel | quote }} + value: {{ default "info" .Values.services.apps.logLevel | quote }} - name: REDIS_PASSWORD value: {{ .Values.services.redis.password }} - name: REDIS_URL diff --git a/hosting/kubernetes/budibase/templates/couchdb-backup.yaml b/hosting/kubernetes/budibase/templates/couchdb-backup.yaml new file mode 100644 index 0000000000..8d9c368864 --- /dev/null +++ b/hosting/kubernetes/budibase/templates/couchdb-backup.yaml @@ -0,0 +1,43 @@ +{{- if .Values.services.couchdb.backup.enabled }} +apiVersion: apps/v1 +kind: Deployment +metadata: + annotations: + kompose.cmd: kompose convert + kompose.version: 1.21.0 (992df58d8) + creationTimestamp: null + labels: + app.kubernetes.io/name: couchdb-backup + name: couchdb-backup +spec: + replicas: 1 + selector: + matchLabels: + app.kubernetes.io/name: couchdb-backup + strategy: + type: Recreate + template: + metadata: + annotations: + kompose.cmd: kompose convert + kompose.version: 1.21.0 (992df58d8) + creationTimestamp: null + labels: + app.kubernetes.io/name: couchdb-backup + spec: + containers: + - env: + - name: SOURCE + value: {{ .Values.services.couchdb.url }} + - name: TARGET + value: {{ .Values.services.couchdb.backup.target }} + - name: RUN_EVERY_SECS + value: {{ .Values.services.couchdb.backup.interval }} + - name: VERBOSE + value: "true" + image: redgeoff/replicate-couchdb-cluster + imagePullPolicy: Always + name: couchdb-backup + resources: {} +status: {} +{{- end }} diff --git a/hosting/kubernetes/budibase/templates/worker-service-deployment.yaml b/hosting/kubernetes/budibase/templates/worker-service-deployment.yaml index 858587be1c..70249123d0 100644 --- a/hosting/kubernetes/budibase/templates/worker-service-deployment.yaml +++ b/hosting/kubernetes/budibase/templates/worker-service-deployment.yaml @@ -70,17 +70,13 @@ spec: name: {{ template "budibase.fullname" . }} key: objectStoreSecret - name: MINIO_URL - {{ if .Values.services.objectStore.url }} value: {{ .Values.services.objectStore.url }} - {{ else }} - value: http://minio-service:{{ .Values.services.objectStore.port }} - {{ end }} - name: PORT value: {{ .Values.services.worker.port | quote }} - name: MULTI_TENANCY value: {{ .Values.globals.multiTenancy | quote }} - name: LOG_LEVEL - value: {{ .Values.services.worker.logLevel | quote }} + value: {{ default "info" .Values.services.worker.logLevel | quote }} - name: REDIS_PASSWORD value: {{ .Values.services.redis.password | quote }} - name: REDIS_URL diff --git a/hosting/kubernetes/budibase/values.yaml b/hosting/kubernetes/budibase/values.yaml index fe48a7b7e0..24197383e2 100644 --- a/hosting/kubernetes/budibase/values.yaml +++ b/hosting/kubernetes/budibase/values.yaml @@ -129,6 +129,12 @@ services: # user: "" # only change if pointing to existing couch server # password: "" # only change if pointing to existing couch server port: 5984 + backup: + enabled: false + # target couchDB instance to back up to + target: "" + # backup interval in seconds + interval: "" redis: enabled: true # disable if using external redis @@ -146,7 +152,7 @@ services: accessKey: "" # AWS_ACCESS_KEY if using S3 or existing minio access key secretKey: "" # AWS_SECRET_ACCESS_KEY if using S3 or existing minio secret region: "" # AWS_REGION if using S3 or existing minio secret - url: "" # only change if pointing to existing minio cluster and minio: false + url: "http://minio-service:9000" # only change if pointing to existing minio cluster or S3 and minio: false storage: 100Mi # Override values in couchDB subchart From 7ff93e975a90d7da0bed6665d057663ef332fada Mon Sep 17 00:00:00 2001 From: Martin McKeaveney Date: Wed, 8 Dec 2021 16:27:33 +0000 Subject: [PATCH 088/175] completely automate helm chart incrementing and semver --- .github/workflows/release-selfhost.yml | 1 + docs/budibase-0.2.3.tgz | Bin 43033 -> 0 bytes docs/index.yaml | 22 +++++----- hosting/kubernetes/budibase/Chart.yaml | 39 +++++------------- .../templates/app-service-deployment.yaml | 2 +- .../templates/worker-service-deployment.yaml | 2 +- package.json | 3 +- scripts/releaseHelmChart.js | 39 ++++++++++++++++++ scripts/release_helm_chart.sh | 3 -- yarn.lock | 12 ++++++ 10 files changed, 78 insertions(+), 45 deletions(-) delete mode 100644 docs/budibase-0.2.3.tgz create mode 100755 scripts/releaseHelmChart.js delete mode 100755 scripts/release_helm_chart.sh diff --git a/.github/workflows/release-selfhost.yml b/.github/workflows/release-selfhost.yml index ad0941709c..444071fa7b 100644 --- a/.github/workflows/release-selfhost.yml +++ b/.github/workflows/release-selfhost.yml @@ -53,5 +53,6 @@ jobs: uses: helm/chart-releaser-action@v1.1.0 with: charts_dir: docs + branch: helm-repo env: CR_TOKEN: "${{ secrets.GITHUB_TOKEN }}" diff --git a/docs/budibase-0.2.3.tgz b/docs/budibase-0.2.3.tgz deleted file mode 100644 index b7207376a131ead28492f3a9f6330788396b7ee2..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 43033 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 + Budibase is an open source low-code platform, helping thousands of teams build + apps for their workplace in minutes. keywords: -- low-code -- database -- cluster + - low-code + - database + - cluster sources: -- https://github.com/Budibase/budibase -- https://budibase.com - -# A chart can be either an 'application' or a 'library' chart. -# -# Application charts are a collection of templates that can be packaged into versioned archives -# to be deployed. -# -# Library charts provide useful utilities or functions for the chart developer. They're included as -# a dependency of application charts to inject those utilities and functions into the rendering -# pipeline. Library charts do not define any templates and therefore cannot be deployed. + - https://github.com/Budibase/budibase + - https://budibase.com type: application - -# This is the chart version. This version number should be incremented each time you make changes -# to the chart and its templates, including the app version. -# Versions are expected to follow Semantic Versioning (https://semver.org/) -version: 0.2.3 - -# This is the version number of the application being deployed. This version number should be -# incremented each time you make changes to the application. Versions are not expected to -# follow Semantic Versioning. They should reflect the version the application is using. -# It is recommended to use it with quotes. -appVersion: "1.0.6" - +version: 0.2.4 +appVersion: 2.0.0 dependencies: - name: couchdb version: 3.3.4 repository: https://apache.github.io/couchdb-helm condition: services.couchdb.enabled - name: ingress-nginx - version: 3.35.0 + version: 3.35.0 repository: https://github.com/kubernetes/ingress-nginx condition: ingress.nginx diff --git a/hosting/kubernetes/budibase/templates/app-service-deployment.yaml b/hosting/kubernetes/budibase/templates/app-service-deployment.yaml index 5e45474c8a..e75f84e779 100644 --- a/hosting/kubernetes/budibase/templates/app-service-deployment.yaml +++ b/hosting/kubernetes/budibase/templates/app-service-deployment.yaml @@ -106,7 +106,7 @@ spec: value: {{ .Values.globals.accountPortalApiKey | quote }} - name: COOKIE_DOMAIN value: {{ .Values.globals.cookieDomain | quote }} - image: budibase/apps:{{ .Values.services.budibaseVersion }} + image: budibase/apps:{{ .Chart.appVersion }} imagePullPolicy: Always name: bbapps ports: diff --git a/hosting/kubernetes/budibase/templates/worker-service-deployment.yaml b/hosting/kubernetes/budibase/templates/worker-service-deployment.yaml index 70249123d0..d71fc80578 100644 --- a/hosting/kubernetes/budibase/templates/worker-service-deployment.yaml +++ b/hosting/kubernetes/budibase/templates/worker-service-deployment.yaml @@ -111,7 +111,7 @@ spec: value: {{ .Values.globals.smtp.from | quote }} - name: APPS_URL value: http://app-service:{{ .Values.services.apps.port }} - image: budibase/worker:{{ .Values.services.budibaseVersion }} + image: budibase/worker:{{ .Chart.appVersion }} imagePullPolicy: Always name: bbworker ports: diff --git a/package.json b/package.json index 4be3fe1401..63de8251d4 100644 --- a/package.json +++ b/package.json @@ -8,6 +8,7 @@ "eslint-plugin-cypress": "^2.11.3", "eslint-plugin-svelte3": "^3.2.0", "husky": "^7.0.1", + "js-yaml": "^4.1.0", "kill-port": "^1.6.1", "lerna": "3.14.1", "prettier": "^2.3.1", @@ -49,7 +50,7 @@ "build:docker:airgap": "node hosting/scripts/airgapped/airgappedDockerBuild", "build:digitalocean": "cd hosting/digitalocean && ./build.sh && cd -", "build:docs": "lerna run build:docs", - "release:helm": "./scripts/release_helm_chart.sh", + "release:helm": "node scripts/releaseHelmChart", "env:multi:enable": "lerna run env:multi:enable", "env:multi:disable": "lerna run env:multi:disable", "env:selfhost:enable": "lerna run env:selfhost:enable", diff --git a/scripts/releaseHelmChart.js b/scripts/releaseHelmChart.js new file mode 100755 index 0000000000..4c022c9a0c --- /dev/null +++ b/scripts/releaseHelmChart.js @@ -0,0 +1,39 @@ +const yaml = require("js-yaml") +const { execSync } = require("child_process") +const fs = require("fs") +const path = require("path") + +const UpgradeTypes = { + MAJOR: "major", + MINOR: "minor", + PATCH: "patch" +} + +const CHART_PATH = path.join(__dirname, "../", "hosting", "kubernetes", "budibase", "Chart.yaml") +const UPGRADE_VERSION = process.env.BUDIBASE_RELEASE_VERSION +const UPGRADE_TYPE = process.env.HELM_CHART_UPGRADE_TYPE || UpgradeTypes.PATCH + +if (!UPGRADE_VERSION) { + throw new Error("BUDIBASE_RELEASE_VERSION env var must be set.") +} + +try { + const chartFile = fs.readFileSync(CHART_PATH, "utf-8") + const chart = yaml.load(chartFile) + + // Upgrade app version in chart to match budibase release version + chart.appVersion = UPGRADE_VERSION + + // semantically version the chart + const [major, minor, patch] = chart.version.split(".") + const newPatch = parseInt(patch) + 1 + chart.version = [major, minor, newPatch].join(".") + const updatedChartYaml = yaml.dump(chart) + fs.writeFileSync(CHART_PATH, updatedChartYaml) + + execSync(`helm package hosting/kubernetes/budibase --destination docs`) + execSync(`helm repo index docs --url https://budibase.github.io/budibase`) +} catch (err) { + console.error("Error releasing helm chart") + throw err +} diff --git a/scripts/release_helm_chart.sh b/scripts/release_helm_chart.sh deleted file mode 100755 index b1594cca91..0000000000 --- a/scripts/release_helm_chart.sh +++ /dev/null @@ -1,3 +0,0 @@ -cd docs -helm package ../hosting/kubernetes/budibase -helm repo index . --url https://budibase.github.io/budibase \ No newline at end of file diff --git a/yarn.lock b/yarn.lock index aa02ce87f5..628e48bd0c 100644 --- a/yarn.lock +++ b/yarn.lock @@ -1082,6 +1082,11 @@ argparse@^1.0.7: dependencies: sprintf-js "~1.0.2" +argparse@^2.0.1: + version "2.0.1" + resolved "https://registry.yarnpkg.com/argparse/-/argparse-2.0.1.tgz#246f50f3ca78a3240f6c997e8a9bd1eac49e4b38" + integrity sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q== + arr-diff@^4.0.0: version "4.0.0" resolved "https://registry.yarnpkg.com/arr-diff/-/arr-diff-4.0.0.tgz#d6461074febfec71e7e15235761a329a5dc7c520" @@ -3260,6 +3265,13 @@ js-yaml@^3.13.1: argparse "^1.0.7" esprima "^4.0.0" +js-yaml@^4.1.0: + version "4.1.0" + resolved "https://registry.yarnpkg.com/js-yaml/-/js-yaml-4.1.0.tgz#c1fb65f8f5017901cdd2c951864ba18458a10602" + integrity sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA== + dependencies: + argparse "^2.0.1" + jsbn@~0.1.0: version "0.1.1" resolved "https://registry.yarnpkg.com/jsbn/-/jsbn-0.1.1.tgz#a5e654c2e5a2deb5f201d96cefbca80c0ef2f513" From 5a614f33c380db09ee9790ea536a4e2c5f0b1962 Mon Sep 17 00:00:00 2001 From: Martin McKeaveney Date: Wed, 8 Dec 2021 17:13:00 +0000 Subject: [PATCH 089/175] CI Automation for helm chart release --- .github/workflows/release-selfhost.yml | 6 +++++- .github/workflows/release.yml | 2 ++ docs/index.yaml | 2 +- hosting/kubernetes/budibase/Chart.yaml | 2 +- scripts/releaseHelmChart.js | 2 +- 5 files changed, 10 insertions(+), 4 deletions(-) diff --git a/.github/workflows/release-selfhost.yml b/.github/workflows/release-selfhost.yml index 444071fa7b..1c1806a0ef 100644 --- a/.github/workflows/release-selfhost.yml +++ b/.github/workflows/release-selfhost.yml @@ -43,10 +43,14 @@ jobs: DOCKER_PASSWORD: ${{ secrets.DOCKER_API_KEY }} BUDIBASE_RELEASE_VERSION: ${{ steps.previoustag.outputs.tag }} + - name: Configure Git + run: | + git config user.name "Budibase Production Bot" + git config user.email "<>" + - uses: azure/setup-helm@v1 id: install - # So, we need to inject the values into this - run: yarn release:helm - name: Run chart-releaser diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml index 71432c2403..d4142f7ac9 100644 --- a/.github/workflows/release.yml +++ b/.github/workflows/release.yml @@ -56,3 +56,5 @@ jobs: DOCKER_USER: ${{ secrets.DOCKER_USERNAME }} DOCKER_PASSWORD: ${{ secrets.DOCKER_API_KEY }} BUDIBASE_RELEASE_VERSION: ${{ steps.previoustag.outputs.tag }} + + # Release to pre-prod environment \ No newline at end of file diff --git a/docs/index.yaml b/docs/index.yaml index 21586652f6..232f3445f9 100644 --- a/docs/index.yaml +++ b/docs/index.yaml @@ -2,7 +2,7 @@ apiVersion: v1 entries: budibase: - apiVersion: v2 - appVersion: 2.0.0 + appVersion: 1.0.6 created: "2021-12-08T16:26:47.061065Z" dependencies: - condition: services.couchdb.enabled diff --git a/hosting/kubernetes/budibase/Chart.yaml b/hosting/kubernetes/budibase/Chart.yaml index 790c7845d8..0528e56562 100644 --- a/hosting/kubernetes/budibase/Chart.yaml +++ b/hosting/kubernetes/budibase/Chart.yaml @@ -12,7 +12,7 @@ sources: - https://budibase.com type: application version: 0.2.4 -appVersion: 2.0.0 +appVersion: 1.0.6 dependencies: - name: couchdb version: 3.3.4 diff --git a/scripts/releaseHelmChart.js b/scripts/releaseHelmChart.js index 4c022c9a0c..9c62f3dd8f 100755 --- a/scripts/releaseHelmChart.js +++ b/scripts/releaseHelmChart.js @@ -31,8 +31,8 @@ try { const updatedChartYaml = yaml.dump(chart) fs.writeFileSync(CHART_PATH, updatedChartYaml) + // package the chart and write to docs dir execSync(`helm package hosting/kubernetes/budibase --destination docs`) - execSync(`helm repo index docs --url https://budibase.github.io/budibase`) } catch (err) { console.error("Error releasing helm chart") throw err From fe85dc74e478731f6d1c41140a0f79aebd87193b Mon Sep 17 00:00:00 2001 From: Budibase Release Bot <> Date: Wed, 8 Dec 2021 17:44:39 +0000 Subject: [PATCH 090/175] v1.0.9 --- lerna.json | 2 +- packages/auth/package.json | 2 +- packages/bbui/package.json | 2 +- packages/builder/package.json | 8 ++++---- packages/cli/package.json | 2 +- packages/client/package.json | 6 +++--- packages/server/package.json | 8 ++++---- packages/string-templates/package.json | 2 +- packages/worker/package.json | 6 +++--- 9 files changed, 19 insertions(+), 19 deletions(-) diff --git a/lerna.json b/lerna.json index d19745b11c..fbc9c2ebde 100644 --- a/lerna.json +++ b/lerna.json @@ -1,5 +1,5 @@ { - "version": "1.0.8", + "version": "1.0.9", "npmClient": "yarn", "packages": [ "packages/*" diff --git a/packages/auth/package.json b/packages/auth/package.json index aa41d93782..12373bd273 100644 --- a/packages/auth/package.json +++ b/packages/auth/package.json @@ -1,6 +1,6 @@ { "name": "@budibase/auth", - "version": "1.0.8", + "version": "1.0.9", "description": "Authentication middlewares for budibase builder and apps", "main": "src/index.js", "author": "Budibase", diff --git a/packages/bbui/package.json b/packages/bbui/package.json index 826c833602..5a778bcab0 100644 --- a/packages/bbui/package.json +++ b/packages/bbui/package.json @@ -1,7 +1,7 @@ { "name": "@budibase/bbui", "description": "A UI solution used in the different Budibase projects.", - "version": "1.0.8", + "version": "1.0.9", "license": "MPL-2.0", "svelte": "src/index.js", "module": "dist/bbui.es.js", diff --git a/packages/builder/package.json b/packages/builder/package.json index 8bef61384f..0408010aaa 100644 --- a/packages/builder/package.json +++ b/packages/builder/package.json @@ -1,6 +1,6 @@ { "name": "@budibase/builder", - "version": "1.0.8", + "version": "1.0.9", "license": "GPL-3.0", "private": true, "scripts": { @@ -65,10 +65,10 @@ } }, "dependencies": { - "@budibase/bbui": "^1.0.8", - "@budibase/client": "^1.0.8", + "@budibase/bbui": "^1.0.9", + "@budibase/client": "^1.0.9", "@budibase/colorpicker": "1.1.2", - "@budibase/string-templates": "^1.0.8", + "@budibase/string-templates": "^1.0.9", "@sentry/browser": "5.19.1", "@spectrum-css/page": "^3.0.1", "@spectrum-css/vars": "^3.0.1", diff --git a/packages/cli/package.json b/packages/cli/package.json index ad050235fe..0ce9f23ac3 100644 --- a/packages/cli/package.json +++ b/packages/cli/package.json @@ -1,6 +1,6 @@ { "name": "@budibase/cli", - "version": "1.0.8", + "version": "1.0.9", "description": "Budibase CLI, for developers, self hosting and migrations.", "main": "src/index.js", "bin": { diff --git a/packages/client/package.json b/packages/client/package.json index 3b831055d0..086850c8cf 100644 --- a/packages/client/package.json +++ b/packages/client/package.json @@ -1,6 +1,6 @@ { "name": "@budibase/client", - "version": "1.0.8", + "version": "1.0.9", "license": "MPL-2.0", "module": "dist/budibase-client.js", "main": "dist/budibase-client.js", @@ -19,9 +19,9 @@ "dev:builder": "rollup -cw" }, "dependencies": { - "@budibase/bbui": "^1.0.8", + "@budibase/bbui": "^1.0.9", "@budibase/standard-components": "^0.9.139", - "@budibase/string-templates": "^1.0.8", + "@budibase/string-templates": "^1.0.9", "regexparam": "^1.3.0", "shortid": "^2.2.15", "svelte-spa-router": "^3.0.5" diff --git a/packages/server/package.json b/packages/server/package.json index 155b85d84d..3ac9fac4d1 100644 --- a/packages/server/package.json +++ b/packages/server/package.json @@ -1,7 +1,7 @@ { "name": "@budibase/server", "email": "hi@budibase.com", - "version": "1.0.8", + "version": "1.0.9", "description": "Budibase Web Server", "main": "src/index.ts", "repository": { @@ -69,9 +69,9 @@ "author": "Budibase", "license": "GPL-3.0", "dependencies": { - "@budibase/auth": "^1.0.8", - "@budibase/client": "^1.0.8", - "@budibase/string-templates": "^1.0.8", + "@budibase/auth": "^1.0.9", + "@budibase/client": "^1.0.9", + "@budibase/string-templates": "^1.0.9", "@bull-board/api": "^3.7.0", "@bull-board/koa": "^3.7.0", "@elastic/elasticsearch": "7.10.0", diff --git a/packages/string-templates/package.json b/packages/string-templates/package.json index 53d94f91e7..3656c4700a 100644 --- a/packages/string-templates/package.json +++ b/packages/string-templates/package.json @@ -1,6 +1,6 @@ { "name": "@budibase/string-templates", - "version": "1.0.8", + "version": "1.0.9", "description": "Handlebars wrapper for Budibase templating.", "main": "src/index.cjs", "module": "dist/bundle.mjs", diff --git a/packages/worker/package.json b/packages/worker/package.json index 34986cef6a..d4cb12e877 100644 --- a/packages/worker/package.json +++ b/packages/worker/package.json @@ -1,7 +1,7 @@ { "name": "@budibase/worker", "email": "hi@budibase.com", - "version": "1.0.8", + "version": "1.0.9", "description": "Budibase background service", "main": "src/index.js", "repository": { @@ -29,8 +29,8 @@ "author": "Budibase", "license": "GPL-3.0", "dependencies": { - "@budibase/auth": "^1.0.8", - "@budibase/string-templates": "^1.0.8", + "@budibase/auth": "^1.0.9", + "@budibase/string-templates": "^1.0.9", "@koa/router": "^8.0.0", "@sentry/node": "^6.0.0", "@techpass/passport-openidconnect": "^0.3.0", From 832a4e52622fcca4095ad0db92a0deee262d66e6 Mon Sep 17 00:00:00 2001 From: Martin McKeaveney Date: Wed, 8 Dec 2021 18:00:59 +0000 Subject: [PATCH 091/175] adding budibase release version env var --- .github/workflows/release-selfhost.yml | 2 ++ 1 file changed, 2 insertions(+) diff --git a/.github/workflows/release-selfhost.yml b/.github/workflows/release-selfhost.yml index 1c1806a0ef..ce2bb1c949 100644 --- a/.github/workflows/release-selfhost.yml +++ b/.github/workflows/release-selfhost.yml @@ -52,6 +52,8 @@ jobs: id: install - run: yarn release:helm + env: + BUDIBASE_RELEASE_VERSION: ${{ steps.previoustag.outputs.tag }} - name: Run chart-releaser uses: helm/chart-releaser-action@v1.1.0 From 92bab31ffc344536dd1df7297518aad353d325cd Mon Sep 17 00:00:00 2001 From: Budibase Release Bot <> Date: Wed, 8 Dec 2021 18:11:06 +0000 Subject: [PATCH 092/175] v1.0.10 --- lerna.json | 2 +- packages/auth/package.json | 2 +- packages/bbui/package.json | 2 +- packages/builder/package.json | 8 ++++---- packages/cli/package.json | 2 +- packages/client/package.json | 6 +++--- packages/server/package.json | 8 ++++---- packages/string-templates/package.json | 2 +- packages/worker/package.json | 6 +++--- 9 files changed, 19 insertions(+), 19 deletions(-) diff --git a/lerna.json b/lerna.json index fbc9c2ebde..3aef8ef137 100644 --- a/lerna.json +++ b/lerna.json @@ -1,5 +1,5 @@ { - "version": "1.0.9", + "version": "1.0.10", "npmClient": "yarn", "packages": [ "packages/*" diff --git a/packages/auth/package.json b/packages/auth/package.json index 12373bd273..a516e1ba58 100644 --- a/packages/auth/package.json +++ b/packages/auth/package.json @@ -1,6 +1,6 @@ { "name": "@budibase/auth", - "version": "1.0.9", + "version": "1.0.10", "description": "Authentication middlewares for budibase builder and apps", "main": "src/index.js", "author": "Budibase", diff --git a/packages/bbui/package.json b/packages/bbui/package.json index 5a778bcab0..8dedae0d3f 100644 --- a/packages/bbui/package.json +++ b/packages/bbui/package.json @@ -1,7 +1,7 @@ { "name": "@budibase/bbui", "description": "A UI solution used in the different Budibase projects.", - "version": "1.0.9", + "version": "1.0.10", "license": "MPL-2.0", "svelte": "src/index.js", "module": "dist/bbui.es.js", diff --git a/packages/builder/package.json b/packages/builder/package.json index 0408010aaa..b8eb15794f 100644 --- a/packages/builder/package.json +++ b/packages/builder/package.json @@ -1,6 +1,6 @@ { "name": "@budibase/builder", - "version": "1.0.9", + "version": "1.0.10", "license": "GPL-3.0", "private": true, "scripts": { @@ -65,10 +65,10 @@ } }, "dependencies": { - "@budibase/bbui": "^1.0.9", - "@budibase/client": "^1.0.9", + "@budibase/bbui": "^1.0.10", + "@budibase/client": "^1.0.10", "@budibase/colorpicker": "1.1.2", - "@budibase/string-templates": "^1.0.9", + "@budibase/string-templates": "^1.0.10", "@sentry/browser": "5.19.1", "@spectrum-css/page": "^3.0.1", "@spectrum-css/vars": "^3.0.1", diff --git a/packages/cli/package.json b/packages/cli/package.json index 0ce9f23ac3..a074da5f59 100644 --- a/packages/cli/package.json +++ b/packages/cli/package.json @@ -1,6 +1,6 @@ { "name": "@budibase/cli", - "version": "1.0.9", + "version": "1.0.10", "description": "Budibase CLI, for developers, self hosting and migrations.", "main": "src/index.js", "bin": { diff --git a/packages/client/package.json b/packages/client/package.json index 086850c8cf..b42abfc095 100644 --- a/packages/client/package.json +++ b/packages/client/package.json @@ -1,6 +1,6 @@ { "name": "@budibase/client", - "version": "1.0.9", + "version": "1.0.10", "license": "MPL-2.0", "module": "dist/budibase-client.js", "main": "dist/budibase-client.js", @@ -19,9 +19,9 @@ "dev:builder": "rollup -cw" }, "dependencies": { - "@budibase/bbui": "^1.0.9", + "@budibase/bbui": "^1.0.10", "@budibase/standard-components": "^0.9.139", - "@budibase/string-templates": "^1.0.9", + "@budibase/string-templates": "^1.0.10", "regexparam": "^1.3.0", "shortid": "^2.2.15", "svelte-spa-router": "^3.0.5" diff --git a/packages/server/package.json b/packages/server/package.json index 3ac9fac4d1..3b1e9add44 100644 --- a/packages/server/package.json +++ b/packages/server/package.json @@ -1,7 +1,7 @@ { "name": "@budibase/server", "email": "hi@budibase.com", - "version": "1.0.9", + "version": "1.0.10", "description": "Budibase Web Server", "main": "src/index.ts", "repository": { @@ -69,9 +69,9 @@ "author": "Budibase", "license": "GPL-3.0", "dependencies": { - "@budibase/auth": "^1.0.9", - "@budibase/client": "^1.0.9", - "@budibase/string-templates": "^1.0.9", + "@budibase/auth": "^1.0.10", + "@budibase/client": "^1.0.10", + "@budibase/string-templates": "^1.0.10", "@bull-board/api": "^3.7.0", "@bull-board/koa": "^3.7.0", "@elastic/elasticsearch": "7.10.0", diff --git a/packages/string-templates/package.json b/packages/string-templates/package.json index 3656c4700a..08e6b6383b 100644 --- a/packages/string-templates/package.json +++ b/packages/string-templates/package.json @@ -1,6 +1,6 @@ { "name": "@budibase/string-templates", - "version": "1.0.9", + "version": "1.0.10", "description": "Handlebars wrapper for Budibase templating.", "main": "src/index.cjs", "module": "dist/bundle.mjs", diff --git a/packages/worker/package.json b/packages/worker/package.json index d4cb12e877..62048dd240 100644 --- a/packages/worker/package.json +++ b/packages/worker/package.json @@ -1,7 +1,7 @@ { "name": "@budibase/worker", "email": "hi@budibase.com", - "version": "1.0.9", + "version": "1.0.10", "description": "Budibase background service", "main": "src/index.js", "repository": { @@ -29,8 +29,8 @@ "author": "Budibase", "license": "GPL-3.0", "dependencies": { - "@budibase/auth": "^1.0.9", - "@budibase/string-templates": "^1.0.9", + "@budibase/auth": "^1.0.10", + "@budibase/string-templates": "^1.0.10", "@koa/router": "^8.0.0", "@sentry/node": "^6.0.0", "@techpass/passport-openidconnect": "^0.3.0", From 7334fc6748dc44b7f008b8c177eeab052e1da018 Mon Sep 17 00:00:00 2001 From: Martin McKeaveney Date: Thu, 9 Dec 2021 11:05:43 +0000 Subject: [PATCH 093/175] automate helm deployment with CI --- .github/workflows/release-selfhost.yml | 17 +- .../budibase/.helmignore | 0 .../kubernetes => charts}/budibase/Chart.yaml | 4 +- .../kubernetes => charts}/budibase/README.md | 0 .../budibase/charts/couchdb-3.3.4.tgz | Bin .../budibase/charts/ingress-nginx-3.35.0.tgz | Bin .../budibase/templates/NOTES.txt | 0 .../budibase/templates/_helpers.tpl | 0 .../budibase/templates/alb-ingress.yaml | 0 .../templates/app-service-deployment.yaml | 2 +- .../templates/app-service-service.yaml | 0 .../budibase/templates/couchdb-backup.yaml | 4 +- .../budibase/templates/hpa.yaml | 0 .../budibase/templates/ingress.yaml | 0 .../minio-data-persistentvolumeclaim.yaml | 0 .../templates/minio-service-deployment.yaml | 0 .../templates/minio-service-service.yaml | 0 .../templates/proxy-service-deployment.yaml | 0 .../templates/proxy-service-service.yaml | 0 .../redis-data-persistentvolumeclaim.yaml | 0 .../templates/redis-service-deployment.yaml | 0 .../templates/redis-service-service.yaml | 0 .../budibase/templates/secrets.yaml | 0 .../budibase/templates/service.yaml | 0 .../budibase/templates/serviceaccount.yaml | 0 .../templates/tests/test-connection.yaml | 0 .../templates/worker-service-deployment.yaml | 2 +- .../templates/worker-service-service.yaml | 0 .../budibase/values.yaml | 1 + docs/budibase-0.1.0.tgz | Bin 43708 -> 0 bytes docs/budibase-0.1.1.tgz | Bin 43391 -> 0 bytes docs/budibase-0.2.0.tgz | Bin 40877 -> 0 bytes docs/budibase-0.2.1.tgz | Bin 40795 -> 0 bytes docs/budibase-0.2.2.tgz | Bin 40807 -> 0 bytes docs/index.html | 9 - docs/index.yaml | 158 ------------------ scripts/releaseHelmChart.js | 6 +- 37 files changed, 15 insertions(+), 188 deletions(-) rename {hosting/kubernetes => charts}/budibase/.helmignore (100%) rename {hosting/kubernetes => charts}/budibase/Chart.yaml (94%) rename {hosting/kubernetes => charts}/budibase/README.md (100%) rename {hosting/kubernetes => charts}/budibase/charts/couchdb-3.3.4.tgz (100%) rename {hosting/kubernetes => charts}/budibase/charts/ingress-nginx-3.35.0.tgz (100%) rename {hosting/kubernetes => charts}/budibase/templates/NOTES.txt (100%) rename {hosting/kubernetes => charts}/budibase/templates/_helpers.tpl (100%) rename {hosting/kubernetes => charts}/budibase/templates/alb-ingress.yaml (100%) rename {hosting/kubernetes => charts}/budibase/templates/app-service-deployment.yaml (98%) rename {hosting/kubernetes => charts}/budibase/templates/app-service-service.yaml (100%) rename {hosting/kubernetes => charts}/budibase/templates/couchdb-backup.yaml (87%) rename {hosting/kubernetes => charts}/budibase/templates/hpa.yaml (100%) rename {hosting/kubernetes => charts}/budibase/templates/ingress.yaml (100%) rename {hosting/kubernetes => charts}/budibase/templates/minio-data-persistentvolumeclaim.yaml (100%) rename {hosting/kubernetes => charts}/budibase/templates/minio-service-deployment.yaml (100%) rename {hosting/kubernetes => charts}/budibase/templates/minio-service-service.yaml (100%) rename {hosting/kubernetes => charts}/budibase/templates/proxy-service-deployment.yaml (100%) rename {hosting/kubernetes => charts}/budibase/templates/proxy-service-service.yaml (100%) rename {hosting/kubernetes => charts}/budibase/templates/redis-data-persistentvolumeclaim.yaml (100%) rename {hosting/kubernetes => charts}/budibase/templates/redis-service-deployment.yaml (100%) rename {hosting/kubernetes => charts}/budibase/templates/redis-service-service.yaml (100%) rename {hosting/kubernetes => charts}/budibase/templates/secrets.yaml (100%) rename {hosting/kubernetes => charts}/budibase/templates/service.yaml (100%) rename {hosting/kubernetes => charts}/budibase/templates/serviceaccount.yaml (100%) rename {hosting/kubernetes => charts}/budibase/templates/tests/test-connection.yaml (100%) rename {hosting/kubernetes => charts}/budibase/templates/worker-service-deployment.yaml (98%) rename {hosting/kubernetes => charts}/budibase/templates/worker-service-service.yaml (100%) rename {hosting/kubernetes => charts}/budibase/values.yaml (99%) delete mode 100644 docs/budibase-0.1.0.tgz delete mode 100644 docs/budibase-0.1.1.tgz delete mode 100644 docs/budibase-0.2.0.tgz delete mode 100644 docs/budibase-0.2.1.tgz delete mode 100644 docs/budibase-0.2.2.tgz delete mode 100644 docs/index.html delete mode 100644 docs/index.yaml diff --git a/.github/workflows/release-selfhost.yml b/.github/workflows/release-selfhost.yml index ce2bb1c949..78009501f8 100644 --- a/.github/workflows/release-selfhost.yml +++ b/.github/workflows/release-selfhost.yml @@ -43,11 +43,6 @@ jobs: DOCKER_PASSWORD: ${{ secrets.DOCKER_API_KEY }} BUDIBASE_RELEASE_VERSION: ${{ steps.previoustag.outputs.tag }} - - name: Configure Git - run: | - git config user.name "Budibase Production Bot" - git config user.email "<>" - - uses: azure/setup-helm@v1 id: install @@ -55,10 +50,12 @@ jobs: env: BUDIBASE_RELEASE_VERSION: ${{ steps.previoustag.outputs.tag }} + - name: Configure Git + run: | + git config user.name "Budibase Helm Bot" + git config user.email "<>" + - name: Run chart-releaser - uses: helm/chart-releaser-action@v1.1.0 - with: - charts_dir: docs - branch: helm-repo + uses: helm/chart-releaser-action@v1.2.0 env: - CR_TOKEN: "${{ secrets.GITHUB_TOKEN }}" + CR_TOKEN: "${{ secrets.GITHUB_TOKEN }}" \ No newline at end of file diff --git a/hosting/kubernetes/budibase/.helmignore b/charts/budibase/.helmignore similarity index 100% rename from hosting/kubernetes/budibase/.helmignore rename to charts/budibase/.helmignore diff --git a/hosting/kubernetes/budibase/Chart.yaml b/charts/budibase/Chart.yaml similarity index 94% rename from hosting/kubernetes/budibase/Chart.yaml rename to charts/budibase/Chart.yaml index 0528e56562..602ffbf420 100644 --- a/hosting/kubernetes/budibase/Chart.yaml +++ b/charts/budibase/Chart.yaml @@ -11,8 +11,8 @@ sources: - https://github.com/Budibase/budibase - https://budibase.com type: application -version: 0.2.4 -appVersion: 1.0.6 +version: 0.2.6 +appVersion: 1.0.10 dependencies: - name: couchdb version: 3.3.4 diff --git a/hosting/kubernetes/budibase/README.md b/charts/budibase/README.md similarity index 100% rename from hosting/kubernetes/budibase/README.md rename to charts/budibase/README.md diff --git a/hosting/kubernetes/budibase/charts/couchdb-3.3.4.tgz b/charts/budibase/charts/couchdb-3.3.4.tgz similarity index 100% rename from hosting/kubernetes/budibase/charts/couchdb-3.3.4.tgz rename to charts/budibase/charts/couchdb-3.3.4.tgz diff --git a/hosting/kubernetes/budibase/charts/ingress-nginx-3.35.0.tgz b/charts/budibase/charts/ingress-nginx-3.35.0.tgz similarity index 100% rename from hosting/kubernetes/budibase/charts/ingress-nginx-3.35.0.tgz rename to charts/budibase/charts/ingress-nginx-3.35.0.tgz diff --git a/hosting/kubernetes/budibase/templates/NOTES.txt b/charts/budibase/templates/NOTES.txt similarity index 100% rename from hosting/kubernetes/budibase/templates/NOTES.txt rename to charts/budibase/templates/NOTES.txt diff --git a/hosting/kubernetes/budibase/templates/_helpers.tpl b/charts/budibase/templates/_helpers.tpl similarity index 100% rename from hosting/kubernetes/budibase/templates/_helpers.tpl rename to charts/budibase/templates/_helpers.tpl diff --git a/hosting/kubernetes/budibase/templates/alb-ingress.yaml b/charts/budibase/templates/alb-ingress.yaml similarity index 100% rename from hosting/kubernetes/budibase/templates/alb-ingress.yaml rename to charts/budibase/templates/alb-ingress.yaml diff --git a/hosting/kubernetes/budibase/templates/app-service-deployment.yaml b/charts/budibase/templates/app-service-deployment.yaml similarity index 98% rename from hosting/kubernetes/budibase/templates/app-service-deployment.yaml rename to charts/budibase/templates/app-service-deployment.yaml index e75f84e779..8086c0ab20 100644 --- a/hosting/kubernetes/budibase/templates/app-service-deployment.yaml +++ b/charts/budibase/templates/app-service-deployment.yaml @@ -106,7 +106,7 @@ spec: value: {{ .Values.globals.accountPortalApiKey | quote }} - name: COOKIE_DOMAIN value: {{ .Values.globals.cookieDomain | quote }} - image: budibase/apps:{{ .Chart.appVersion }} + image: budibase/apps:{{ .Values.globals.appVersion }} imagePullPolicy: Always name: bbapps ports: diff --git a/hosting/kubernetes/budibase/templates/app-service-service.yaml b/charts/budibase/templates/app-service-service.yaml similarity index 100% rename from hosting/kubernetes/budibase/templates/app-service-service.yaml rename to charts/budibase/templates/app-service-service.yaml diff --git a/hosting/kubernetes/budibase/templates/couchdb-backup.yaml b/charts/budibase/templates/couchdb-backup.yaml similarity index 87% rename from hosting/kubernetes/budibase/templates/couchdb-backup.yaml rename to charts/budibase/templates/couchdb-backup.yaml index 8d9c368864..1072046c8c 100644 --- a/hosting/kubernetes/budibase/templates/couchdb-backup.yaml +++ b/charts/budibase/templates/couchdb-backup.yaml @@ -30,9 +30,9 @@ spec: - name: SOURCE value: {{ .Values.services.couchdb.url }} - name: TARGET - value: {{ .Values.services.couchdb.backup.target }} + value: {{ .Values.services.couchdb.backup.target | quote }} - name: RUN_EVERY_SECS - value: {{ .Values.services.couchdb.backup.interval }} + value: {{ .Values.services.couchdb.backup.interval | quote }} - name: VERBOSE value: "true" image: redgeoff/replicate-couchdb-cluster diff --git a/hosting/kubernetes/budibase/templates/hpa.yaml b/charts/budibase/templates/hpa.yaml similarity index 100% rename from hosting/kubernetes/budibase/templates/hpa.yaml rename to charts/budibase/templates/hpa.yaml diff --git a/hosting/kubernetes/budibase/templates/ingress.yaml b/charts/budibase/templates/ingress.yaml similarity index 100% rename from hosting/kubernetes/budibase/templates/ingress.yaml rename to charts/budibase/templates/ingress.yaml diff --git a/hosting/kubernetes/budibase/templates/minio-data-persistentvolumeclaim.yaml b/charts/budibase/templates/minio-data-persistentvolumeclaim.yaml similarity index 100% rename from hosting/kubernetes/budibase/templates/minio-data-persistentvolumeclaim.yaml rename to charts/budibase/templates/minio-data-persistentvolumeclaim.yaml diff --git a/hosting/kubernetes/budibase/templates/minio-service-deployment.yaml b/charts/budibase/templates/minio-service-deployment.yaml similarity index 100% rename from hosting/kubernetes/budibase/templates/minio-service-deployment.yaml rename to charts/budibase/templates/minio-service-deployment.yaml diff --git a/hosting/kubernetes/budibase/templates/minio-service-service.yaml b/charts/budibase/templates/minio-service-service.yaml similarity index 100% rename from hosting/kubernetes/budibase/templates/minio-service-service.yaml rename to charts/budibase/templates/minio-service-service.yaml diff --git a/hosting/kubernetes/budibase/templates/proxy-service-deployment.yaml b/charts/budibase/templates/proxy-service-deployment.yaml similarity index 100% rename from hosting/kubernetes/budibase/templates/proxy-service-deployment.yaml rename to charts/budibase/templates/proxy-service-deployment.yaml diff --git a/hosting/kubernetes/budibase/templates/proxy-service-service.yaml b/charts/budibase/templates/proxy-service-service.yaml similarity index 100% rename from hosting/kubernetes/budibase/templates/proxy-service-service.yaml rename to charts/budibase/templates/proxy-service-service.yaml diff --git a/hosting/kubernetes/budibase/templates/redis-data-persistentvolumeclaim.yaml b/charts/budibase/templates/redis-data-persistentvolumeclaim.yaml similarity index 100% rename from hosting/kubernetes/budibase/templates/redis-data-persistentvolumeclaim.yaml rename to charts/budibase/templates/redis-data-persistentvolumeclaim.yaml diff --git a/hosting/kubernetes/budibase/templates/redis-service-deployment.yaml b/charts/budibase/templates/redis-service-deployment.yaml similarity index 100% rename from hosting/kubernetes/budibase/templates/redis-service-deployment.yaml rename to charts/budibase/templates/redis-service-deployment.yaml diff --git a/hosting/kubernetes/budibase/templates/redis-service-service.yaml b/charts/budibase/templates/redis-service-service.yaml similarity index 100% rename from hosting/kubernetes/budibase/templates/redis-service-service.yaml rename to charts/budibase/templates/redis-service-service.yaml diff --git a/hosting/kubernetes/budibase/templates/secrets.yaml b/charts/budibase/templates/secrets.yaml similarity index 100% rename from hosting/kubernetes/budibase/templates/secrets.yaml rename to charts/budibase/templates/secrets.yaml diff --git a/hosting/kubernetes/budibase/templates/service.yaml b/charts/budibase/templates/service.yaml similarity index 100% rename from hosting/kubernetes/budibase/templates/service.yaml rename to charts/budibase/templates/service.yaml diff --git a/hosting/kubernetes/budibase/templates/serviceaccount.yaml b/charts/budibase/templates/serviceaccount.yaml similarity index 100% rename from hosting/kubernetes/budibase/templates/serviceaccount.yaml rename to charts/budibase/templates/serviceaccount.yaml diff --git a/hosting/kubernetes/budibase/templates/tests/test-connection.yaml b/charts/budibase/templates/tests/test-connection.yaml similarity index 100% rename from hosting/kubernetes/budibase/templates/tests/test-connection.yaml rename to charts/budibase/templates/tests/test-connection.yaml diff --git a/hosting/kubernetes/budibase/templates/worker-service-deployment.yaml b/charts/budibase/templates/worker-service-deployment.yaml similarity index 98% rename from hosting/kubernetes/budibase/templates/worker-service-deployment.yaml rename to charts/budibase/templates/worker-service-deployment.yaml index d71fc80578..8b6f5564ad 100644 --- a/hosting/kubernetes/budibase/templates/worker-service-deployment.yaml +++ b/charts/budibase/templates/worker-service-deployment.yaml @@ -111,7 +111,7 @@ spec: value: {{ .Values.globals.smtp.from | quote }} - name: APPS_URL value: http://app-service:{{ .Values.services.apps.port }} - image: budibase/worker:{{ .Chart.appVersion }} + image: budibase/worker:{{ .Values.globals.appVersion }} imagePullPolicy: Always name: bbworker ports: diff --git a/hosting/kubernetes/budibase/templates/worker-service-service.yaml b/charts/budibase/templates/worker-service-service.yaml similarity index 100% rename from hosting/kubernetes/budibase/templates/worker-service-service.yaml rename to charts/budibase/templates/worker-service-service.yaml diff --git a/hosting/kubernetes/budibase/values.yaml b/charts/budibase/values.yaml similarity index 99% rename from hosting/kubernetes/budibase/values.yaml rename to charts/budibase/values.yaml index 24197383e2..b634f1581f 100644 --- a/hosting/kubernetes/budibase/values.yaml +++ b/charts/budibase/values.yaml @@ -85,6 +85,7 @@ tolerations: [] affinity: {} globals: + appVersion: "latest" budibaseEnv: PRODUCTION enableAnalytics: true sentryDSN: "" diff --git a/docs/budibase-0.1.0.tgz b/docs/budibase-0.1.0.tgz deleted file mode 100644 index 7873874ab002c1d4bd6622aaa79c2b01e7d2b229..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 43708 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 diff --git a/docs/budibase-0.1.1.tgz b/docs/budibase-0.1.1.tgz deleted file mode 100644 index b38527c4a40a10a6f1d5afa8627fc5237a69da21..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 43391 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%0DQnUs9pIdxY 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 diff --git a/docs/budibase-0.2.1.tgz b/docs/budibase-0.2.1.tgz deleted file mode 100644 index f3423763a5e9f8246b7f0c0789f4b522b205ee8b..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 40795 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 diff --git a/docs/budibase-0.2.2.tgz b/docs/budibase-0.2.2.tgz deleted file mode 100644 index c70754eb990a6b711a3d7b3e7cdbc091d6c7b2f0..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 40807 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%0Dhs{NdkV&Me@L^E$}%r zW&-(F6W5N^ZAit2f~fhm(ibfy5sW9q8ah@(^xw7}l3J~WnyERZniu`N>dOy_zMjTw zURh^?)q9#c7ruUN9hzO#R+)6c*|M27OnA$-S~azRaa67olh0$(sU(?bQY8~G-#DSp zkxxyuoJOg=a>J8#K_kB6DY%syX9c=iI;9Jh9$E~lPlq4fd!5;B1XY-mpPN}p+W4t8 z&VOxyb*@8iz=IUi%qonX{X|pMjaK#KUuNiM?JEuath|({>z!LNvY?vp%))u}>NV+) z>bmKxgWB}KjbO0V%PJhKw=?uq)$cEwPzfE;m@-pGEh-XGi;oua2TDxr08I-~Vns-D=wZ^>?@W z5B4AT^0@p!K` zqk=POqZ%Goss2a2KqjXxvt1T!i!h|ff`Jk?}sfxobnIGzOc{A&=CznOcjn!rfsZF>2)!!yV| zKg42U6VEGQ1K}ibv7~JHdXwkaUv&ykJsB?ffI1;TaKYUy zxnP}s!bjjibbQPARr>$;gCN*Xl3IwmAMARWJY;vZmM}m2BT0&D$SN@pt~T+o1AFu4 z_%L{{WU|o^CyV}lZ_o^iOCfoNI3x2A+phG6fJvz4V7+a!3Jz$cu|M^Y0gpk-lGp}9 zv^iF*oT-olLv3F_U8+lW;}T0;Ot>JmA|~NyL1aP6lq8TN20~wp+C2EdyES|7O@T`( z5^^-=q2+R4JW{NWLhEx*Cy&rar0B)o4hqAB#5^H-w8uJ?T$SC`p~(efbjek1o;f>9 z!Tc<(lYMtl>fPFGxalyRnHhmYPvh2^2^F0SQz{kyeNhAC#fbCP0v50rLtHcqG@*Pk z#J|+0@ES8|(&Ork!BzU&YSI*{jwfp6)jZiek^-kvxV$|TLR9aS)7e(4ZOUo|6+L_rb+cJmGZoO&`jbV5 zeq?x)3y3nninT%OVFqsjHt{Y{P`yBZH|c68SWLdr4Vz%etPKHAXi99VB74r;Qa_s@ zTVH^>nr*&-+&A}v+<;=#IW1{`ugh&nt%QE0KKF_Cvi3tY%^`WhqX{$X&V2A z(M43aw4b^ONr_2D;FDaBW13%XQ>Q9!r5x&!lC{bFN+ z9;ft*plL7KindYs4Vw0&UetSnC`%y0vT&i93y4RGSwNW@36^x25;QCbzJk-L+f$ee z5_v+lI;0Z_2ms&050GxFZi3*PDvsL11TS40(^_QSdU`BiKM2ycFpSV!G%&M}R8S z3@Ox0nMw5?*yRxyU`Jppb(REq^{XUmTjg=L!ZN!&T4f5?@&FWAG8Z_l&sTw~k1ykGbGQtjva_n2Ubh zR6Ibv?G~h%x2XDN@Ts_TfJa&>Rup>Z5jIi^>n~8b$XE6{~8eol% zH4ahypk+BBNIhA1IclcbZOd`urM|d&=I4}tY?IPrW)I$zs@{7>)3#mK283s})xI$y zz2wN`?sSpz4L4r0gcRva&2p6@RM)H7S8ldt)%>_j6=YiZmh+UrAa!D1)zkHa=+Rpp z5yI&7N2eH4XU1-a);>h-5Z2ckL=5_ioA#=*Q9yaUE}mGOwO-AxcV*r(y&utjk|^qI zQ}ronyOCVpODylz)0=&bB@QeRvof3^*k*i9oB)|f`rX@| zcbZYI2#c8TYeQ0S{zx>a0x*6qDml;fWwI79e^rXHq>seqoT-DSk+;WMLEi9GRGKOUT7(o; zl}7BcIs$bb-|N!^o=5L>a$vREqq2a86CyE9*JHuVKpM}N9Ei`@&~=sCf;lwAca6#Z zIH!|a)M6=lXl18ljTW`$YjMHV(0MJ+>j=LT#-?LMdy7`^SO-Sui?MXn+fhI2t!l5< zVr7}t4x^tgc2$e*24zi#?uy4e<>IPgueGwpMPvVndbb#LyH(me)4Ber+gzmPd1;fD zcP$ue9#sp^j7}fE-l*Grt>$6ePp|PztlMHOX7GZQSsN{TEkX#`g`);xHzYSW%TuEB zX0L3~^EaJq_jZ`V4@~615uE%~P)Q(}>MdLJ4PBgo zU`ds|r}{@ZB))`PYjNJoxn*S(p-fZKy1>mAt)=2JY3p|LxNO&aUW=ZI<{h=@jJ58J z7Pdqv`oc5Qh%U7NQ`|~i_kt5GK84QQ<2EpQL6qk4BXFK;!nh!d*ZX>lwfz4pT5Ju{ z`@RX|XUt>6)4WLwzo12}uenPYoAFTIqucLCW7@qOQ+)Weev7S6b6+&-q`X|d_gVn^NoY#8f)Efp=iO^fZmU|(`(R=6se9e$g& zUhS>){+4UK%xB4)$6KuR3g;y=>MvNC*2TU>i^0YQ`i_ufh~ukGbSy+k#HKdbqr*~C zHV#bM%oL4GIYb4zCTYww$S};y0=+E-Dc-&9zeBu0Zxb>lDbLlLt#>HH6z+`S_9vRN z#hk!(;oF1PCl_bO-@dsxKKcIL+wFH+%>ehfM!$eKLlb_j?;oXB)srNEB2)nmcU_R* zA3@r|Y79<&oL>==Yh5H2C@=WWB$g36W=KqUAvc3k5cEBjKa@i^83_l&e%(02Y$hkr z1w)5Cz9PjVH5)@grMXW&;Vf*7@la0)m|R{EoK+Ld3$T}a`=1O;T;QMa48MD9ujtI( zT+Fj>_4x@D7g)xV{HC?6`DO~{m|@A=3+ivW;Lmv?T1%-9rY$nWLQ=xQyeN|i&oa{9 z?tD4ZfFwC)Lee~4QPC@@tKtkx+zz1rq>CL)XvWBFXREcO`>G3PSjwNXnBj6fk({+w zX_T=QDI@tLSx`fN)J69boE>5|ZY^p*npO)rOG(k*sQ#u4UXdwf*C{Sri@L97UCE5F zU)nc-`KAk=QkGM;-H%#}+OJQ7;BEii!1~6j!yV!xp3o@~k-1am#kiaCjzJ z7@`}z-TIum37K|-x7(&_bNQj7v+f_JeAv~N+g%^2L|GEN-SL`8ch64 zh(nuj__sEl|5H4R{6AvawRb|Hr`i6jK32v5?Dw9|<^Ox||G1y0cGWnjjDWOzS6R|z zfI6$}06Pz7@sIi}IsZmF{(`{o=2>_>|4m66 zB%W~88FAkE8xpA!R(92UM*jBb-2*1N-LvTY`zG&S+Q+K%-+TJBdH%Qdb|23FeLT*M z!SiNr=B3fewOd0G{MO(S}X+(Up@j8+PMvyxTodtz4#j z%p)-!cXxZe{3fiwi~xf`e7|xw4z9>d5nM3{LYwO`2$6Ljc<$gZ?DWN9UTD*6KrS`T$i8ZazfIa6e5y&8f-uz+tMJ| zKsF>*^)9H$NtMo`dKXy1*9fy?Dx?xjubzo$92XI-3CHy*sI`L728?8g<0~E7z0NosgpDcBsJBZKJYC(UfB2jOl{%X{SMO>@l5`f}pPnl@n5YjpDKZmu_q1ZwJuT zjq<{8Ys8BTOZC$8Th&fv!)1M z4FvtgOcMMG4M+jfT<XKhjKzf)naH`1R$&^C?uApK-XBHVT#!m8j={R(YZJQ zjJr5n5u!dn?4pS;7p)pJZcT6?YAQB6SS%QlM zBJe_xtuhxV;Y5I?j1r+{I=d7vS&bGfcoNPYNtDqWG$S%X z2RdX%Lh^#dz?5-SZ8=W!(Hocvb+@*kZ}p&CDo{p>F-Zc1YUimMxhA+U|C+iz>j8|4 zHo@mZ?Jbsg(bz0LSG6h%XDst<ha#ZjVf`k;j98XLPgBlJ{y_s5IeLpa|0+?Tj z$zVgFK+GlQIj8v)MZI;;$6gzb*Y?j`{fl;t6J@TZkR)aUDP;4_3)GML&l+HznR*MC z!YrM)^s4XE$`KC&5vG(~={O^Xf;p+civxv|glhb5TB)CE7dERFYL7w>+zSp*_CvcR6hV5B#e`&|(o9XHlQRjM2q6OZY$v1oN#IFrpy$LrlNX+wbjHaq8> z#ATsmhy%{R7dcnhn;Ox{!)-ZFgxxGT*l9vNQ_bV3luXrvxhdBSh{WPbbV2p6*vY~g z;dI4J#4>e1AzmXi$hbmDoarUkkz*2rSal^0n1amwb_2G*_2^ND5gEn2Ad%o1zKJp$P>ScVXSrJx#nWH-3kCw9A^BI6CK#Gdc|`|t!#8=zs`meFU@I>iB9XH+Bd zR6?!?VTx;EN_DISCqQl+8wx$?AX(b6KoNK2=xSWsy$%c@Vh&Ut=fliw0&<*=Lvams z55j5AQ8u;5s8I5bIv#3+8j@uQWaCVNr~|v*O{f>5$~xcc7VL0<;iXJ%Yg_eIDWswn ze|H+;Z@Pas#V;XPjVWmkjGQ>x+zLt?=q1gl_KgQ^vh95y1;Xcr$i;!6n%3u7uO1x7 zS`20=w#IgH%qr?4pP5x}Tz7TB;uX$M?j8^s=a%&l;hab#V-pnp^Fgp%VY#p+wAw-^z6g>N!-08$zgB|2RZ2)~!`YX(;j-xL0lO0tCx zO)Oo&dk)zSQ$CI|-3D+_TfP4CZhx!Wf7TUr%;<>5n90yw#e|ZF+KZ2}afn$G0!j_X zgr};PF!6dZ&A!x-{XaCmwbNy62+vDFbqjtG{;gHYzAa>zZh$5zfmy+p%7{4RUM#C1Ea(Rks6_NK;dE= z@-|yFNW!MH;0(;mr?{Xx(0~qeVQU|;sTiQQ?_hzdH--$^+m-KLzcz0gdBir1DN8eh z*oN~Z07CB9M=t8Tt`s^3%<#CFWSpH7(9u-^;_Q*oiF&>Fw^fgLVUAS?wl~{;bHf{M zgrt#}baS4j=O+5i0CoP8Oi3|Ad%euzaL4z2J_P9;E95!{aW%&>p430df{w?e7$~MF z4Jgx~s z{_M=Jq5;e(J0m!8IfN8&Q%)0fMYUE|adK8&b4`E=SIo!Eg4bwZfO>%yGdKjks}hBP z@S+2cnCL}DM`bt)hzp1*lbS=T-vqQUhp`d{b1)wAwK`ZR{1xUr0b}m2qfB0U5_{Ne zs*KJRnRV5X$>V;shd4`TPaI;jsZSJ2#7xrAIuzgOY;4$80g2D|6L=|CY~qd$q|P=n+CW7$ zbv#`N3dbAJZlY^K#}lbIK*Q4NtP%atX1Cl>wf32$`!2bQevPVz4$4u))jt)1lLD5xuQK)qUh?o**ZASqxy2V zyp|iDJ6E--j@jHt8z-;%K5X2cuL*z+>+_oe;evnO6%=!#v3?}adCJE#U^D6i#|2CiC1k?Tl4n2bjg-mzTs}O-ImO7`}{6jblnx!rm}}B^4v8S(ih8!lk90uHeG+1E=Sumnz9F@#2l!xJD1D zQH7gj)lmk4jDBC>n4J1P$GXThrl8-J9F6FdC~l~fq>7ZEsF{OXTF#hOi#om7(&h(f zyVvs>DYJFv^=wE}c*mZv+#mj>7*9wjtnS$DfO^t6HHYz{~rox5S3cKmuE)(uPJ8 zf>Sv;n2`AD6w8ULpcAEay88Pso$3Rm2<`W_c6Z!6#o8*t>W7PqQ}ePlx96_;*htf9 zUpI4QZkhM<`8W-W-;#|~wbjU#jOG)e-eNiyOve0Fv`oZ;Y3OTatuYJcZF3Sdu4$iw zMHA3Wi~H|21KUOrRp487mxdd~YFLP{Bj zt5wrM%dat4K`T8=S;9UdH*s1DMRGxHa77Xf;SoiQ6|_oIx zmRfjyR+KFCOsBgOUeI3@j!Qu;U>hgh4RgI3j(8CoBOkxJ(CCp)&0*8xb+zIKHedIs zm5i{TFU{`0td8xa{*V`3p|eZ7A1)=AaF=RWahO-XRSm}eloWVOz(2_Qh`raaoz#X} zx_c&hbMvVEq<4+)I?z$CBQfbt`#8-fxUV^Zs)#Y}5#FZkM>l9H&{lK|s zdBHOxC!`cXC1zLoS1Tz{>m~Q~wWo`M@%O4emze#37%4J((YQG z6sP2nUo&saLPBmsjiY{|EaBHR*~1mIcl=)6IwELD*sv9=cTK+LS+54woBV!Y+FAnB zo|UwY;EbV+W;jiGtX+GOg6AP+Hpz&~&8W*5p?nc>&uCn5!AG)d8+8^t(AO*T)-(96 zEYgkbn6)_%kh#8eL}UJ1(xsDiZ@ud`vH1GE^_~%-#zhF&w%DMCwpAkn3dmtu*$xna zFl3yHC(XMTd)KOCU0V*!Hgya6)i%`KuwfHJnhXD$-@ZRS)%d{-Ldllj8s9845*V!a z`W#TvnQ=t3RrRd>0G3>wSa=WQF7fWlcnSZ#i^)fO!pGfyu0E41iJ4o!W9h*)tOSW;vCuZ{Mj*G z=pk7nPPZYPF@|;zK%EoLNJnusoddAxJwELqIzocT$oH!Q1AlvmE4ir`nMT)EAGk3X z3rfny_FZ>lN(;pXsGS0LAm&4u7yO12vwM)xyslIIdSlb~&D7e@`qC6=`9KzW%*qT> z&cQF8#pQ|93;9Mlo(Ocp6LPA`Q^Ee<|M|btb(L(IzP-x+i2@vAlFUMfkd8!7Gkj>DYLA7B*yJNZ=W@jrQLQY7ijk-g(>kJev z(*T!==vHQvmRmfXuc7{1uLJ*>T0lEqdgtG+w*F#4GB26=>8ToZC)-=SXT91xMY^`M z@u<=4SPL0VkDm3O^;D5(y=U;Y(X?&YWeGQJy5Fj~iqR^Q+zPxNMH4zfFl$n_qAw?Gx8*|?fKHU!rm?&ncLd+CP7Ni2rBak{fGtwUt1{aqhJ&y zx>Gy$7N)n=9A+U_x8Kw*7m8JrCb>QOju*A{uFmA4XUx-!;D6m-WLjEHBJK|HuSEU7 z1@d2s{=tCdfIIhKBiS}gf9&TKW*Rw9qIpYEkHJbw##x%+JcJ-_w&J4qilwum+pPtF zmQk}=XoAvMS<<-Lfs8uPG34r17WC1m?@F=pBB%zvXe;X3de~YeS;lrzHNQ+4;#BaI zk0lo}Aw}b(GbnrU)#KCGhnFY&ua3@7_YaPq%r)-0V_MS&Hm$*U%UxZytE<{0^P}Hm+oAD6YB?$yrp(h_*SG2-h<$Kx3+gf`+W@p@ zd5w7_SuSUXw6ORcdOc=Tw&9iP-KLQ@z)GoP)@}(>`sBHfb-J3*2(R__ z0=w5SVXo}Gc#@;vg*Q2B^(aTyt9;szcB8&~x6}n3u+pjK+mt|7P!3)*+Q|w$F%5P! z^RCxd!T2*Dx+d(sqNxsUO*I`)>s6QjP`kpfUeDV=qPk=HR!^H97`6Yv!wc2T=7#oG zqC(4>I?XK`Lw-!{-RfTpDxB(DNjq=ebk?TWzRgjs)U%4)6>)*p+3Bcr(OFPPL)3x6 zRN_IKR%=bYmXKJAklcV@nv){Hd#t9}xet%TX%|?{0r?SZnB*%mIrJJ=0y4i zHh#q!b!H}u1U|=IysT>@kuk9bC8hO|1h*<#P%_n&|7SkbXKqyREOPaJ=0j+0fI96q zbr$%VFHiGb%Ng6S0^|Vc9oga$0;a#!5V$Rg(^NZ6OFxrlb@egdZ*^CKFq_qAf^O5l z_Ho+>O*rF)olUQf)}Gi8ZbxWza7JLFDI0s6tvX(3WlBDO9owe4DAU@;L}0{uF(E=* zqW@e9X~j9AOK+lF=fcJb&cTx_Q#%4wVT_POcuj=}r$p^Z(6eiweZ?h#2VFI<0Y7LLnzUhnFyVSE_LrzH~$dnYI zhKvg;X^hiaftG7BTeB9}Y={%zUvEUmD6GZdL6FdGG(QIji89Nu;wVaH$gEcP=p1ma zRdWF3H!{2$5bARh3*SM)y)^Hus6* z1|CnikWWwuEb!wePtf1dUT^1F?>Al;AyS{+ek`77?nDnm5zti4uAC5tFuEq>YSHQx zgpq4q57;1&1+NTP5`N9p1T0*H3(j9*Hrws>M9cK|dp-0udJNZK^(+^P?o=vtk4CDRI$)Vvy( znhfhZpY0wJzJ;>nXuH?jtWx#?>R#IdBcxe$o3q*AkBx#@xo z0RFN76Es%vD%o(R*k>?rR~RU=7WBq{icU#7LlR#p0zSoHHsx{xjR=-yVcgdbocFVN zZ7i~RaYc$yOiHP+Txe7sFuPjtqyla2^n|ZJ==aP(!C=;`l97E1axQu9_?jCMd-24L z3dp?xZS6It(g6?zizGM*cE{5c(l&wZT(Geb6l6*T7S zY*Wb~Uh?$Ti^9n2uE$2n~`Qq4ebKcMO zY>CD~1@4DE*qE=yz@_A%hCZ)Vz2H}bxjO4RRl`24p9pImTz9q(oWisB%o+flIp+oK zm~Q+Uw3~t7GOA9`I#+OTgKqCu2$)?uWwiI+b{IONb>rdCt+3OaIe(kcH(F$DzP-%Y ze34msQ(e5stbQJny~U8U0(Pg-HAg)W#n(?sBY$OZ1$~@zctz4(l-7ZH5>m`<-h1Av^fF4yPMFK75d!k z&^h0Rr5A$h8;oxmj^=LN9cs$_R^y$|w<>K;>O%GV@7S;uHC67$f~@5xaIqv|Oqb8T z-9JEBD7w0yuTd@NtBdzq3~{VOrt0{NYqeyfE$;0Fsy<|Ot8;!jXqII_wOCn{WYd&G z|9{}`PkB<&B+W}#XeiiNi%@G*D{veYrm4`p3p@g1IQ14`X`YX5jK$+&*Wh3w(728D zhl>Kw)V^-!68D1&<^`RqIk7^G>K~lOaVqBGq~Dt7RANd9-G`>5&`D206D-)Jm5GE7 z8FT`H6*kbt!KpiSih639EyuJ_Yqdr+casdbwh`@?s+bRr>#! zJu7i0)cfIR-Tv-z95?Y9C-I8YPUq&=RZ}D^v8D(P0m*jL+|Pa%UL?RbDMfZtVy)@K z6doHJz%Vigap(7m!lV zT$&inA+xPBOC7X3t=8wy25_z=hs0F-VG#g+fA{{?>F*cs zKYaXANo!Zw6YYmW0$mLA`uyQ3WgZrBfnh{BvFJ!i?}IO2c$$9s4$DB`4~#tDB+DP$ zpF7xxR)@X0_|*F?1m{be_U3q&yS5={YpbVDLuNi{gAVxe<&XpK*>WCrF^W@AdRY^v zI2WmxUmdIconkcvo`HRKQ3q&l7>hyd5V&GnfZrK*LLH1wK>YEg&EB2z+^D}e*dg-q z><jX|It=X{YsX5t8(l1szc$GAlIc$yU4X*0CWlZtHBYCmDzewb3^C zN@O?O&C=n&&UR)|E3ETl%Uu%W|UGQB}DHoqgV!WNLVNX9z0fb-O}FUr@I2ggLkop9g8O)NM8gs696ZX zQehWU3%>}LGoE{zl4x-c$~@0n@=kY&Fqwhd+uM$OJY=EB?SUa&xdWy<4yzw%7xUuu44)sQ*44~J`nWUD6{aXH7lVV@9Y7TF(76U5&o6-^4avg(5t6THeE=Y; zKLf9XVbG;@axqY6JWZSO-F{p zPwdQ1v;}$Bi5=)AAWhvXQ3K-Qjzt&b|KW->fS!eHXfr7PE3Cq<7UETI;61IuO?~=C zXE+iPQ_2>Xsg%BaX&vmkh#mm||2qEg?(E&`8MsOgeH97nQHGZP8Q-!X)?--CNYp-n z6u;~uLmeoVSL&*h>~WW~R;b`Z>qp;vDXaghSr)5~k+1*vd*f*=|L34T8ul9fe;?)Z z=k7DGaaJ?#vf;RplE5D+4L7YNoPlRurlNJ9wNCGRO5$a%=TQ1!Il^0_o*{zMr3-FG zREOObb$EhtCXPwcswV3Me*qG#Jqt{R?4Qo+a(#X6+<~?cbw()#{Wpj5gx_Frhav_i z1zKb&1}5eSxBe=Y-Y0`%kMS? z&QR0hz37@l2&?wBGJx?dr1i$ft+G?H{#|khDR#d{wvkem;|wG|%}}rvt@+oxK!DV*N|+jdrO{ilmM>I^$kq zIxd01ZDdSRXK#CaWJ~WM5xdF3+{7d-Ruw5w$<@ehmA5zwJrh$cN7OQ@+7>GqK~SUb z%!U2H-fzh}g#h`1!`O`PybjRXXR^gb+`lV@Q6zl8I5q&a)w@ie#VREZ#2w1a1flD^c8H{T8k?bG(t+}Xa?pl%1bQs{OTM5jwmAzrsO9mE z2!_->iMe3gmVgz)goUAn@<+;)myXb`T@w=^t}RkFHa-da{%9_KF}!~j~n~nK8iRx zre~+^^F-LIj=Ui%RhjLMunCv$q8p%KZdx64O;{LwegPWZQMUNakhtakfLz#8FNcam zLj4Zi2q9~w+-tU_1W#dZ&ww95L-;#Ar~h92i@>zub01+6{XqW^za)Dx_={uV=-i%( zhq(q1?IiNAKWBfjCsvT>idJ82vvosD@C z!}`J{SzRRY_)*C`!P{&oKVpv+#TeRCEq;f$fx%p9vVbJ~x5%a+qv%N~L2fEGZ54R% z=}E-9pZpdB6MT9Smn9u2t8uUxAfKMBF^siljsVf>u*YlV&P?=NQ!bOi)DaL$ZK?;9 z__g}h79HuFM*nBx{O_9n&mGTpyoJUFis=6+?*BRL4~Gr?-%I&s=>JQ;u~OJT!v}W2 z2apRzh*n8Ta~3G{+)(-R7F-#xS-?rbh@?}9s+B4ZAvH;(;y04+-IZ<_d+77|waZTE zKm8ZChHzJ&m=aJx|Hq@zFfRX32GfTA@1r~*{hzbF6Vm$sgXTMt@x@MTl{oT@R@P+% z-!i%9{*~dif@(rLzBm&rggb9c4BB#;M5Zl1;sH3Of697lLymxA;i|YxnA2$JiCY7Y@ki1TEGh4&(;bK__Z>rE4C=%~-w>kYTifIc zCt8bolf4Mf{CTHW%BB}WA}$7+U55hSWDXRm}`GQNDFm{z{94?_LqKZ%FV zU%qtd-?D$jb~&TpiMbG8oon#4V>=7TLOOo=0{-{s&*JYdUx3oC9h<6#C~XyF=%#AB zg4?m9&`)~jGM__KjN}UNG!09H*}HS8`ddzd2q2OqngNmf<-PY44}K(mPTus@)*z}A zKs9a=MR2_0Ph|`zUpyjpTR=X`jJ8>+&P`F1jg0TTTcw05%5jOlg zsen7v|Jc6-Ml0%nQ2qNJ?S0?90w^~@qyIJf-{aN)qFov- zZlnI~QT>ZA09Te|7N+gBrOJ951ISpd3A;l7QO(*BRoa;{r;aIt#tP<@@u)tDc`dn_ zj_^iRY*fWYReaoKC;Fd{{WQNnSqlCChVl2mlfh`x=zsetd({7mow>3@QRO;S9VS#u z5n)uuI^hat!X3SFDg1h>WpUmE0Io52G~r%$JPxn$e_NS%JokdkbF*?h87VnfyKn~H zt}*#Q$uNtJ&4a1D3XrervfQ8K`24)3()zSc1b<*blFuD)eW%u9HIBV|`s>>FUATfC zFU5Nzk*DgpOfR${)yCsF;azF1z5F6OxZDsIz4Iu78Mr96p#ee#r zwX-o@nf5srOg>@J;-3>S^A-Ooxs75?qM-V`@O-k#dM6)Fk3XJjpMJi0rG84-(s(T~ zU&t+Ln$Jb~yKCK5h*<^VaO+x+7B#sY|`Umi(pRM3n$eijoO!5{BC|_iUh>$g5I-z zB=Xk_=>gd=`b%X021S=*u7jgnF_ws`m2a70%aCV{;T1gH+EH=BVQZ|_Py!*b_8A%9 z5&*Qbt^+k@P!+}y->LVEmG3Qi)~=$9%arxX7%K`!6%C(|Fx%ijzMUBTBMUZN7TF1K z*@%D}=%sH}?Zs^5LA|fZcX@KQG{{8ku&lXmH89I^RSWfxTUe;U|8s77(@UZKzaRJi z98SiK{bw)bVfcUAo$mg{fc?k3s(huHl?O2`fORLK!u?I}G@DYsl&1et9+FTDHcZ_{mjVFV+|7U;N(Eq)ZJj07E(*0%M+@6Hq%DbiH1=i*W%IaojYmEt7(XDHU zy<76Gn9Z)ptQ4Xwn$qA=li97#KT8W)OaY4Izy5F(KmU`#pgI5hDB}F1AT_Cxp7t{@ z`{{Q`BG~Nf5Q&^*v2l#@TtL|rC0;*FEFh>#m>E37OeB{_ljF1dKP&`jnE}Z6XdC}K zl&$DLv2x#i%2Fi%P5W{AZ!~G%|Lmv4NENaC$4ttz2`k--TR2z5o5x_(4Ad35392uBsi%jVXXOyh4Lhwu5i+^s(Ip8?0v93(qW-N&{m?tef6TFR zybsW{?+cvBW7UeI?dDjmO9aGK*0MB@%j!4ccbPmc8ZG8UUN?Ad-cBnYL^nn_3XpoP z(T+I%$ZL`cTWtDeLigGpKG6gX0K!iNdp2rXCOo6<;r!<+VTH#Mxi{|;XZyIu72_9Y zh~QB~I}!FW)e-j|TSVPvsi88<&ptV5r5zk^yv<4^rUroc6irG{BmTXBAf@zYL~L60 zk@gx%#I4OCRz;*LFHCg$77APFTd+uA`5VTI&Wj73y}4ZH8d~?38$(w3xqv=K&7&RO zAH;`FOerl&b(gUyLo%!clS!F}c-!~Vv~Hkh>*wGgEF)K3zIC%LCnWwa)X0B!?81hX3H99uhQCwt4cXR zMh~J6V-{(BgeKWKtCpu`WGoJ`{4_9#7Mzi7C?l_JO1t>ZC<<^ z!$USS9MO^CFvn7g>WtHnI`}pOCOgzY3e3r{7eCHQM-N8;#~5@>h%mp|KwY2fl74HkaG@J+JJ05;xjIZ#XM z_3(}a=5eq{@G9C%_Zc|0Ea($(1Me{tQ_-4m`59A1hY7AMMl>)*L=o_;o6?hW4d8#k z)0n*d7jU6>2nK2RiOdR#&V)pp)8xlUwohxHhOxxQ%q#`8Sh3L6da(oKC%?+@)_O5* zJFV)w(~rNuJbU-*_si1{znsNVZxkj&;8L`f`al~qGv0SzcUi6U-U~B{#3sArBqF&( z?>UJH$R%o=Z@qO^6t7ltKXcH}U;TdZ;q?6d@vAhrXP~>rLDxl=>2_UbPXD(OJ$5jv z&j1)%IQ2HEWFcFTikf99Qq=`6Vg_XGUj%3#JIv}Y1qzo)~C+FiSRdr9`Nmsb* z;pyjBj}=eSOqy=@=Uy)#g=MP~<_uwm;4BXM3rjQd7Og#!>a3G_0%MxSM(HQc7cyM7 z^1w~3^osV(g`h4ZR#*2#iQ$uP3vM2jRSXVctR`i6?>+ZEmI7>Vgo-KjF__e;Mk1G@ z#pCW*nniL)R2Rv#=9T21>L?O)Wb@Ky_yV+@gf}&@8|wmmDecN! z-xfe|<~bw{5=Z-9fSk0Rwz-c>HTNkWvp8}}yV7HBojGx584|b5gjg-(VGf15zNVW% z;Xd+9kzrB7+q3Gy%rOh=G3_Qv=99j8pIw#m#94Qb*cw9Ptj{MtJNpP!kRk^lE_knsN=4u_5Z_dZHl|L<_k_w4{44%~QvHy+@-@BmjX zUDKwvCJ0-m>v#*DlLpXt9m~v=?ZodVRLDvoVvm03SbChd3fX7lb>4WLgE-A!jfMw6l<@F(Z zFsJf%9Oic8RNgq1KVqly#*4f0;%>aS8!v9qcyWIhUfj{QaKX>EL z-S~4qMm#+xr>@4IyYc64{J9%{?#7?H0FuU^yYc64{JD#0XyeZvmBydD@#p@wN)7+- zrEiwc{ro?Q^FItG{c+6ydoUd|@xS*{@^56*ykVd2+E-k07SD9cy@9r=QbOHhJc6>j z8O$Lu2f};&4GNq;sVMATAp2NUgMsEs9&;zn^I}rbk#L`mIewGCSzWHLubn&4{%@~c z;9dK;@*!^Pb{_hDQ*3`Ug9RkvT}hg&KmDF?_t%(y4M3SEa=y>Dx}HjP(cZkP)IO>% z+H*5&l|4lms@}pC3hsX>dU%U>OnZ~x z_z00`z&ldL3V$&-FfbQT`H5p8W%E{>-pR$!73QW-O`DnJuOGpzq+}>%kd(I{gGBG? z|9l9+r3U{ORhSD|DM6qp|I=ukc>gsSH~fDuMdANXFnfuOIuJ{*lpZ zgU*TK)6n_ndJY8%@4R-1_~#*bTHs44k91^*R``Az02Rjvv4>$n>6%) zFC}09)6}l7r1%|xB_TeZb-QddyzJV@!d+d(OQ%MxK~yaw(U(;5u;0)BfYw948{S5J z$)>CvP09?ndCHsLS*gdpF(ohZ=`68gZT2B#wx;VZ&3;>AI*K$qR5U+X>(K&h|0jV^3ORB(_F3>B+hG&1Nd&!L)6MGDy=s&on32 z@2pt4tPC(CNW8N}fYv@kt>SE+!(tO{$qcq{vV^!V3P3v z7>^tJzmJka|CMk#JaS1S_QRD=?$bTD984T2frzAbaUP=s^Nb`mp^;hyoQ%iRH4t?#1t~rI6^sB(JYV@f5L0e_}lGP-iu)I zWZ?iD(<*@SbKy41Zs2jJ6>}psz?0B_@`?Py_S7pU;2#bQ@Wc<$AJ8Ju4(o95#i)jj zZoOMGu#Yd!p5&l5;f7w_bv=fu%%E6mv(k@^>QVsO=DFs9{+P+2dRWR+%$0c; z`x@Uf!lqhsvX#J&y}sNn+}dK6eSmqOJh+U8F8R1p!c?MqDF_REgbzSiL3#)mf}Q__ zGG_wW4P#R&`Ihn^`F2uSYUK@HxX|KTrQyOSi3iCih_!|bDJb2#XBQ_C`DA{aw3 ziqOEx8TbJIvvvXq$Pz|x9sxnLW*Ar_K!`--nUPj5r_R8Ww`)v3&|cpm?*l@NPU5xi zyKn_PV!E$GQ8?Lz(^Q77&lp?y#)h|jn8E2PD?tWGd%S}-ztWp$#^^* zw*a`tY}EY@Dqqu4B>d#K5Z_}0R}tzlJa@eHody&G=-9h|^4KKv{gfK=e}G)L%lrS~ zXfll7|M&Zi{eLed#$|%JX?3gsQXM%i# z0gN%2zN6Ao`l;R4JXDom!oGQsh7Ann%C8GZs&^U2l*8dCAKB3#TuhGshMw&s$0Ioq z@PE4wj{abA;i>~CBj4?AEO@;E{aPnEbSGa*0M>XtG zoOy=)80F5k+6a9qf`#|<9;#gr7oRC;l^jPFCdE4pQ zo&=p%0$;wg^DbHAtL`GxerdXN~uB4114=N zwPma9XH0tia|NgE!^5HnJUUf`;NAu<}KpA-00cEqOLSt=c+M-S!iix=KR+L}p_12?tAUG`Lw7>2>2Y3}Z8i!_df7t$m%a?^AWzJ>TysCc;OBF z&8Bp}>55HO28cY_G(M#Ge?5hVDvzpNSJk9aPj(57D!pB*X0?Un8y`hVua!jKtWHv8 z-$yR)ZXy2(-_ot+zrkc0fB!Kaj2r*2y_7m$#ygP&lilw?CM?(K3G)<|F6rWlDYiU)}}0fd5a%3H#4*()fSxr<660SK|7+xuI02`Jugb2!iY;c>Hkc~5mtv?eWb(sr#1D@zlh|x{rMk`CW-SuXx@M9r{ur?s1W~C?25Ny zSJaIEd8zfXxA>ni;OoZ!%Pt|;1*3DrMzAnSE_;S~t+MjVLwGw*FuJ!C;v1|LQmX|NAL1 z`XHA1C12%CDNZKtO(gBztNIt)lO<%t*z~^XWE%0=e@-UQj!ic$lM5RwNXv5^YaFB` zK?=!q05=ZZ8E+g+P;h_ltQ_5*omN3`7eQhK8kPN%5RhUJ`N%#_x(F1y3+DHdFYfRG zTy2?aFZ5B=W95xr3OjM3G*xiVY?caW3>We&B!F>N<^o=Flp|B|*uiPpud zQh`VZwcaJ;uNo7j?(W|fUx zDN}-xzAHgmc&`}9Y<<;zDYgZB>CZ72Kp$Z$I^I*}Lsvxk!afL*ng6tKFkwG*>EE({ zIcej|ml^#|%!T;sT!W__+gU(NSiE}hzdwH#e}DM`ly>ddv@{%Q`#HtsAZ^+mKdc)+ znK^v;js)g$u)zA*X0T9JugrB*xqf+1-Dlv~vY=1E4ZO!;Bx2Sl1}NZ5%wp>T6Z7xj zSvRF8o_g_V%w6j*;6m?EW=D^T0SqH?(WR__66!6z$&ZPs;JGW9@-eku{Ag-DTZtq9 zQLzK$$G;ii`21Y^7R7}w+(Kd1`1}GT3UtYCMD2J_*-`(Cdd+H?fHfmnb0O5J?W!H6 zQ*RU7^3dCqptVush{W~>g*(S}Hqe6@Uj%3l^_{RJ#D5J*e0%sNSdS!)*W zlQ=7g)}(T$db@b9cx_n_Bb>OIrL;Cwe*OP|e7 z_g1Xy9c`{yue;k_v5t4Sy<%PG?=R)Kge)npbFx@!x{>PJD9xX!6gmHeC7F3kRnr*O zH_9)m3B3xtt3c@UAq`{a#!qk!hUz9I>iBh&KN;TJx@@dgIw0xE;d!t3i8@2Up*Tew2O{VsuDu^#Kg z-|*hQQK`%SePr7X4%R;1O7pe7fZ2`!1^mC?PsIP8_NGn#_q~+J|NH5JfTv|HfByoG zM-D;%FtI-SivE|KNvuFajJ<Xo;6p= zk89|OZW%X-65;Yxwqbf*=8(m53fr#&V%d6*DBH~yl;$ApCYpzV1o0n*K3+R=k z@iN)oTa)Kzmf7OjA7P^SR+Rmc{Zq*g-*BGXQkVW$NdjC*|NH$o{htmS``=zl3jJ4e zz-`SFzKJBl)rI^_=2APOFei(TDk*0+1D9CcQ({hu-@F8!4}Fln(XtKwFPj9ki2e_T ziTrPa$)utG`zVi;{y#_((S5UlJ!TY*bdeop7Omoz(IgsuyrnMvuMz~d=>C7)pEmiQ zAE?xO|5rZZdpez{9OJ!2HxC-s{b8>O5>Z(*(3KIHHKTT^=&WVhWPpVA>~S+|E1xZfw?mHElc_2 z4<*k3a2&V)52nK={>NTQ(&)RqpzEA>fY~+M)}h&cs3n^J5I^)127Af&XUCUsNE>TH znUa70J4@)UoP~!1xWyPn=YKqi#sBF~2hI84PdNY=CZTE)1_S}V)ZlgrJuqK8uI+dW z;G5Qsxq!ISIshM+4rW*WEc!WKLe~Wg7tOhEn&T~=g8;fFaW;@WG*!Nvp4~bC9$fI( z;7|PkUORWt=H%yp9(KTc&%Fo8V=XC2z=r{F9S?R|omZE?UlJ6+)&V#{s}=IVFDIA4 zb^_e$EF98h|K;GfI`cn+F8i(v|vl;*54#NZQ#E7K#61vXp?al8c|Y1ZvxxZ1#=gM!6jr`0+*H~_=WaMbCwS_b$u z9gHWxfeJ8n{k7|MX)|za+mS2}t{v#w!0`ZCLgh2IkPq$fMmtm=a0tp!g3_Oi>VVRp zjKI&nO;r;1nIe7D?+kjKemKS;9HT$2HAa8RrmLD!uTcQrTpWjE^usZR^~Mpayv`)aL*BOoJ@1pKR zN6hp^EtsY+4h0FafolKb@p~vrWUya3?pPmpJgqhEc*+;V6#GM2kv#P}gkq#a(L1WQ zB1aqw;qgeJh#4tB6lpUYdswhaBW0Ba8k|SHIwy-Z6L5yB!re00j9Q!WM89&buN`Q- zfv&qUJ-{?FNMOLZiULNz&MBhJ4#BbOqFc%!=#lo;D;PLdM42%?)l_Q%OrQzT(AUr~ zJsQ>-e|j|JXb{s?=_Wzo(lT9Wzh@Wh%2<4kek)K&WE3*6L1=#)ooG)2cEht6{-_ETG3j ztqDFjj@Te)i3WIuSnx|>fc)p_t7D25%j7%dl?hkKyMzRHS_b&Zx#Kl91A5?Cq#5KX zJ!-pUSc}|FhrPoXP;V}d+2PU6dopaNKx8P+^j{R5^I>$(`$rnclcQSnXmWHU4;ZIN z2D>tpPS*^dp)Ci*-3;%Q@n6*1^ph9;LvTiwDW*RLjA5f|exM_25>C2^T@4fjP53UM zE6+%SA*9X#n3lTueVwmOMw41I8BN&ng*G_XFa07C%Hr00rYlc$2*J24s5&bgAJqbN zd^9;^V?9}!cPq!U&m9YT82%I9KVi}mKj@wyF3j{BLZGw3(WI6TFq*uO+fGncfe}vE zCBKpT&h%^`P52Uyp^k~ss1_zhBaR7iKIJIv+%h`5F$0Gl(r{dzy^j0!#_f+na!a@R zAe5HrRM&iW+bEKO`hC7bWu4PLJ93H3U0W4=CwoK`;^Ne z*YOq#9BlehsQf3iO>i8&{0!^$q8%MT1_|F&BtZ7sf=t8ebw>S8j}IrW?x`%cgj5GK zwT&+bH0uwonH*cH-wTs0KT?u*dS_apbfAm)qd_gGTgM5TriwYB~{CG6VND|J6D8};kXuk8jd+B4FhmmBFrs@gs>bH z$de~ll7(n7d$kzRsMqI|Kp{JlCMi;%I!?V!(;FUwGalzo5nF|&g&Ae|ZkcKaemJOy z$$_BsGQ=RGFJVA9u8?!Pt>XckNlX|LU6h{c`?g;XlK$inyraUq=`z7K7KYpLq|nR8 zsCYIUjMos;QO1W7Y@MqQ>ru=hrI>UpN(SLN-ug}pnI^{@YYR4bQHwDSUcBH7rfdx% z3q<3n^BPQQiK>H1Pcq=hHb)r%XUEQ;5SaGL;nY=-mM2&}3D09u6Q3s&nLG!GsYYS6 zIJ)^Led4C~P}B&y+$c7+S|aUWauiZXf+#cSbq2bU2o5HLqodFcr7zsL-olMvP}a)L znukTjzEHc_m3VnqG z2nfU^8d6*SdIWaRV{^JT*^X0GiW_*J(3bm?TGo;NL|8|ZEydMiW)^^VKEhC%u_88t zfy^VUKyXy+{PvG}2|5wt_ygQH@K#*pV?|CDXn+&ii@)!xxGGy;X{FO#s+Q`b9QBzmPtF4%`w2%t_~ z`@MSj>5UG-TL)X<+PM?LAN$=9wZ#h2?{g}j2H*xlmy!NxlNiW{fk}kmxCj(ke-Kyg zdM|3xf!+(9whco|_E#N2*#NZ;c8?zH%Ug$7OD@7QigI&=I}0o5I0%^66sNzKEEwo3 zv@#tJ{Ny@*IJbdDxO>xDa!+qMJ_MKdo~02O8G}@udaR78;d5Avxb%iEgt1jvn%Nbk zo>xpyd*?D+v}bD>%M>{383lUMDDdy&x9616l2C~oPz89XO|=$R?+uR*!OQi^7nl{- zo#5j5t?Q;SyKYL#K#Ug9^D&Yp+(BqZ z5Cb07x=W(XLdK9fUUVMElW8sVO{V=r@YcM6kqX6?rWFbx;5q>h66_H`mZlfiuEH7j z^cj!p&>Y&Viuy0cexa@IQ7v-^ZN`r$)zj#~BM9JoY!MfOIke0*zt3m4Ga_Y(2cb=? zQ5`dY7jT-;|y_5rR2_f63e65+8c~;=(VWHJ(O<8|;?xJ~j zWnuyYo+8|tuL%lpcd>SC*hRM<3~*;}YjX`O(K_wTFkgC-Rn97n} zIsCoVlK#U6Fav0I>CX?1({HKdpZ^c1$FJU=Zsq(}?Eg0$B>aCT!zTX2e#(JMO`nbgK>=B;ZiG*<9indd zEhHU+jeO=|V!AH36t`N>o}I0H6cE!RvuDo$^4xnSf)7FDFAnV_gpTOu(}&aZ)8ot2 z-`^d-J^c;D%=sEf41$kT3`47x89GSe*d!5mmQnB~mqfVHNE3djUb0{tt=8|9A%4=n z{`T}h`}+{gp^I)izsuU{ToOy%r7V^G!T$5RsMkFd_u66>!sC{M@jFBE&z_^BIgY-y zmySS*B!_Ny?hi>T#StQ3#$jM$j4a0_(j8xjx#9-ehAwMBB46E(HuVsW!pVm<%S_*2 z1SXTZv!>4~!1(U@bn@o-!^hu%VTiFfI#hUh!(wQ8y<%8ZVE;uC`2WEGfmi6(BMx`Z zx?nfb+_3fXKHPm2rTWHIXy?+5%*D*ECjud3=7>cJCveCU%p7s3_(N$MG3iMIC;$QE zCj;6YaOMGi%})@xcJ8QZN}dBOL_c_ELD!|^ZBEq~A7KLK_u$;|Y;4|xbJMefdvG0~ z6*xgQv`ibW?q@0)oPl=?c#58!sYeK3LEBlc7(21TE)7Ug0GSK8LY;)39WhJrRSxO8;zw%MYV|wdClm;rC7C8=lhEeIROA^};1I`({Dkmx zzG^0RASPf1$r9O=&=LebDM#@j{I|gdK4i_1YloAe%k?R$pHka{w*YxiLYx4F-Q9+3 z!1k3i#{+G#o>MLiZXMSJx6C+#_?y3e2Yfoqg1`irT_>jCNH+ceZ6|;h;Y|M3yGua0 zNt~~goUwAM2nuJG?Cu;b^bY2TEVZSvxz8&RqJy`9RILf;@^cydE6^a%g5iktz;i=| z9Z+4!<}f%!cK;J|9wesYGOq_p)X_EV7DIpu^f5crpUM*>3Z<-UP|}}w#131ncZfi~ z$|O8B7_A_%o$G5DP#VI0mKfo*b?%D69FkiIIRmDLjcXmxfeo=0ICE%Iy7R$VnHao9 z7Th?Nv&I|=|L3OwEhO`9M>8ZSMnK<$roT4bK5Sp2Yw#&X3!-YV8;f{{5zz{q)f)fV z@gV80WM>9JhAstnz%gf)C1?TL368hsmMAV`B~J=BC;@97Fa%3f)8jY42f^C&=&U$v zD-c`+4`aKBZ*8^$T$X~qU!DjL04c_D*MOJs8U;{Ff#JKH1S@5pSY0Lr|IXOz zffe;#aH;CAU)bVmUX-2ybH2Z}&ouc5^FHF8~aOXnt^8#y`!E)tVva}JAjdO0|~f=bH1FMewblm4wFRB z;W{k<Sejel2(ajhK|y$0u;=(bB%FPJO1K$tOzjfc6r=ze;viBGXy4({pr=VbAf$q) zIH_?q%3oN5PfFDSAPvW})^kb?y3)_XuswVjGiyCjc>!9EmV#q~d(LnmT)$N#zn=TmTc{*p85%gb}{F-k<*Y6*AG z#D<_c?-Jd5Qq+qrv^(W@*7et!YsFpj7I)ogSK!2Or(7N=hrB2NS%^Hg`_-st9KPsF z3c@ANm_rgrwRwvT7n!ypEujX+F1yd20WYj;ND&p z;5pVkM7SCx4VPzK;1nNGk~#zUG0fFXI#nGh9rS$qm49^i2x<`59` z2GX5UdeZC#8N`Z}-9_v0T=wWtMiG@0G+AK`j$NH z033i5{!BH*{OS42@YhPzID`ST>8NdGjAQQ}AhKld_(GaS_dQ!r%QXXNgCz{05GGU{ zygoVII}XlYcEDSy!v-rEqgWDqwtk%jLJLk2RWXj6v&E$Xx-|&u%5GJBIo?7U|0g=n zf1XDAR=?Aq@{3Wb(?`i(A-P2XJ^7u*4W!GUF98n<+?KSs9UB6gf$P8^97g#$F{P3n z*IHzdT;=0G*Fi}kw!$iw+Q@X|{cPp;foZuAoUr46=3NISCc)Yw4>fgUIbUz$$6Tdk zM3hdRkyLC!&kP(y>HgB(@IVsScO7DE9C*uY`CM4IWu|5p(Pce%9Si(P*~ZDc{`iaI8Jk$auN_#a#h$}+|PAKBuy3v;57v2?hBld(+c->(SMR~yrH zY-URrUaOkj=t{k@zJ?}YB02(o05|N$(hS`j#DxuHJBd9~70W1Y{yVK_&v=L{(M=S* z0?eZ;S?qWg1U(k|sPpVu5rQ0!o6a--TAJ+!HaTSn^gI30Kc3Ti6L$Uji5&oDDy`wv zIvNl9!b_H2Vw?s63c$ap935VZ%-Ca(juN!}%wve=;@k|h+f4qFLgYHSPl;@M44-DW z1?1%oM-5|1{m!5>pg8tI$!h@#TYLtT>)b%rqi#WG5YNER7q34Yzd8j!9iN?_z6xUl zgZBSRi-P1fT`Gr9pv25(GHe$H&T6%0ceR`ly<*n|ETjawWiz;4-ZKO^Ug4^!W^T3+ z{UHnUKxIc}DPqDmN1%4T@9ysI!jp|w4mpv)D`sgy21;VW>1-`sKHY$#V~g<}-?e-D!R zUxveB-A<}*z3LMiEnFL|GCe9?zdW^A#c(aQhS#`OlC*Dqh7n!5^Z^_v>FeM^~X~x zoc|>>Z5ZH6te=%a{y$CR{~wH-_|JPOyW;<*ZNK6BgID;~_$e?~(BLKyJOegl>EapR zzl0=S83ngyU_;xupdx`VuNKJ_4~@LY^8(PY$||9zCNc>Y82|DosDl_DyWbm( zN9~l~v9*L+Qrh^>fyta2{&qq`h4W7=-&ote!A-euO+QR+SwIVl?SFCm|76#uTzU1Z!)3UY{qhDUN#sIj(QseyZ-u{=!|2iD>8vFlV%6{(uniKn2OU3hF`RxCX zGUtCZjOTwI4SLP_-$!{Q=f64m4^)cJKQzVpmx<|i&j0(Pl>5KN{=b*9m-GM7lWa<6 zsc`;<_2nzb|Gh!t{7)PGe=p_X?SBuAfxmaDaQ=P#wdDVPT>l@81`Yq;OWBY7?<4zC zByZ!HN@zWuN<1_o{-&kE`Ik8bOwX=H3yRNw!vAM7X#D^7Qno$+WjK6u{2yf`5z|k|Hu77lmBfm zCC2}E;O*Z$_WhPhmGfWM0icloC*pq$N6r2Je#!wjht~wmUDLZ^;j$nmVI(Y(A3rY+ za>LTU?Na6Z*9`zrbp8k9IR77xM$P%(OR2~Io7eu|OQ~}H>jnTQl>hsQ_&*+y5SVMopHODx08q&P6ZZeX zWZ1m_-%F`r+i%=>zr#}H{MQWtRA~Q8y#Jl{hmHU5UdmUo|25HmzL`?z{O|n!Z;-tI z?>F-QUdmTE|ILa0hDz1*|5fDwMEtM8q~F;8_fo3J|4kI1@2^xj|8*Y#7oPt_{-1HL z(f{{Ts`3BkweR;<>YV?b-~T7?|3;JM{O_gg{`^1mjGEGvrZlA~Wy=2z00960pWe+D H0AvIJht$&8 diff --git a/docs/index.html b/docs/index.html deleted file mode 100644 index 0fa6060f8f..0000000000 --- a/docs/index.html +++ /dev/null @@ -1,9 +0,0 @@ - - - Budibase Helm Chart Repo - - -

Budibase Charts Repo

-

Point Helm at this repo to see charts.

- - \ No newline at end of file diff --git a/docs/index.yaml b/docs/index.yaml deleted file mode 100644 index 232f3445f9..0000000000 --- a/docs/index.yaml +++ /dev/null @@ -1,158 +0,0 @@ -apiVersion: v1 -entries: - budibase: - - apiVersion: v2 - appVersion: 1.0.6 - created: "2021-12-08T16:26:47.061065Z" - dependencies: - - condition: services.couchdb.enabled - name: couchdb - repository: https://apache.github.io/couchdb-helm - version: 3.3.4 - - condition: ingress.nginx - name: ingress-nginx - repository: https://github.com/kubernetes/ingress-nginx - version: 3.35.0 - description: Budibase is an open source low-code platform, helping thousands of teams build apps for their workplace in minutes. - digest: 9e3d5b600368a4fd65ba827986c943b65d7ffae6544b3fda0418e760866e8929 - keywords: - - low-code - - database - - cluster - name: budibase - sources: - - https://github.com/Budibase/budibase - - https://budibase.com - type: application - urls: - - https://budibase.github.io/budibase/budibase-0.2.4.tgz - version: 0.2.4 - - apiVersion: v2 - appVersion: 0.9.169 - created: "2021-12-08T16:26:47.055284Z" - dependencies: - - condition: services.couchdb.enabled - name: couchdb - repository: https://apache.github.io/couchdb-helm - version: 3.3.4 - - condition: ingress.nginx - name: ingress-nginx - repository: https://github.com/kubernetes/ingress-nginx - version: 3.35.0 - description: Budibase is an open source low-code platform, helping thousands of teams build apps for their workplace in minutes. - digest: 57f365d799fcaace4658883cb8ec961a7905383a68acf065af4f6e57f9878ff8 - keywords: - - low-code - - database - - cluster - name: budibase - sources: - - https://github.com/Budibase/budibase - - https://budibase.com - type: application - urls: - - https://budibase.github.io/budibase/budibase-0.2.2.tgz - version: 0.2.2 - - apiVersion: v2 - appVersion: 0.9.163 - created: "2021-12-08T16:26:47.051008Z" - dependencies: - - condition: services.couchdb.enabled - name: couchdb - repository: https://apache.github.io/couchdb-helm - version: 3.3.4 - - condition: ingress.nginx - name: ingress-nginx - repository: https://github.com/kubernetes/ingress-nginx - version: 3.35.0 - description: Budibase is an open source low-code platform, helping thousands of teams build apps for their workplace in minutes. - digest: ebac6d8631cc38b266c3689508b5123f5afc395f23bdb02738be26c7cae0b0b5 - keywords: - - low-code - - database - - cluster - name: budibase - sources: - - https://github.com/Budibase/budibase - - https://budibase.com - type: application - urls: - - https://budibase.github.io/budibase/budibase-0.2.1.tgz - version: 0.2.1 - - apiVersion: v2 - appVersion: 0.9.163 - created: "2021-12-08T16:26:47.046825Z" - dependencies: - - condition: services.couchdb.enabled - name: couchdb - repository: https://apache.github.io/couchdb-helm - version: 3.3.4 - - condition: ingress.nginx - name: ingress-nginx - repository: https://github.com/kubernetes/ingress-nginx - version: 3.35.0 - description: Budibase is an open source low-code platform, helping thousands of teams build apps for their workplace in minutes. - digest: f369536c0eac1f6959d51e8ce6d74a87a7a9df29ae84fb9cbed0a273ab77429b - keywords: - - low-code - - database - - cluster - name: budibase - sources: - - https://github.com/Budibase/budibase - - https://budibase.com - type: application - urls: - - https://budibase.github.io/budibase/budibase-0.2.0.tgz - version: 0.2.0 - - apiVersion: v2 - appVersion: 0.9.56 - created: "2021-12-08T16:26:47.042113Z" - dependencies: - - condition: services.couchdb.enabled - name: couchdb - repository: https://apache.github.io/couchdb-helm - version: 3.3.4 - - name: ingress-nginx - repository: https://github.com/kubernetes/ingress-nginx - version: 3.35.0 - description: Budibase is an open source low-code platform, helping thousands of teams build apps for their workplace in minutes. - digest: 8dc4f2ed4d98cad5adf25936aefea680042d3e4e17832f846b961fd8708ad192 - keywords: - - low-code - - database - - cluster - name: budibase - sources: - - https://github.com/Budibase/budibase - - https://budibase.com - type: application - urls: - - https://budibase.github.io/budibase/budibase-0.1.1.tgz - version: 0.1.1 - - apiVersion: v2 - appVersion: 0.9.56 - created: "2021-12-08T16:26:47.036016Z" - dependencies: - - condition: services.couchdb.enabled - name: couchdb - repository: https://apache.github.io/couchdb-helm - version: 3.3.4 - - name: ingress-nginx - repository: https://github.com/kubernetes/ingress-nginx - version: 3.35.0 - description: Budibase is an open source low-code platform, helping thousands of teams build apps for their workplace in minutes. - digest: 08031b0803cce0eff64472e569d454d9176119c8207aa9873a9c95ee66cc7d3f - keywords: - - low-code - - database - - cluster - name: budibase - sources: - - https://github.com/Budibase/budibase - - https://budibase.com - type: application - urls: - - https://budibase.github.io/budibase/budibase-0.1.0.tgz - version: 0.1.0 -generated: "2021-12-08T16:26:47.031998Z" diff --git a/scripts/releaseHelmChart.js b/scripts/releaseHelmChart.js index 9c62f3dd8f..0e469bd012 100755 --- a/scripts/releaseHelmChart.js +++ b/scripts/releaseHelmChart.js @@ -1,5 +1,4 @@ const yaml = require("js-yaml") -const { execSync } = require("child_process") const fs = require("fs") const path = require("path") @@ -9,7 +8,7 @@ const UpgradeTypes = { PATCH: "patch" } -const CHART_PATH = path.join(__dirname, "../", "hosting", "kubernetes", "budibase", "Chart.yaml") +const CHART_PATH = path.join(__dirname, "../", "charts", "budibase", "Chart.yaml") const UPGRADE_VERSION = process.env.BUDIBASE_RELEASE_VERSION const UPGRADE_TYPE = process.env.HELM_CHART_UPGRADE_TYPE || UpgradeTypes.PATCH @@ -30,9 +29,6 @@ try { chart.version = [major, minor, newPatch].join(".") const updatedChartYaml = yaml.dump(chart) fs.writeFileSync(CHART_PATH, updatedChartYaml) - - // package the chart and write to docs dir - execSync(`helm package hosting/kubernetes/budibase --destination docs`) } catch (err) { console.error("Error releasing helm chart") throw err From 4a3f59641527d897addc1e37975bac79e275e740 Mon Sep 17 00:00:00 2001 From: Rory Powell Date: Thu, 9 Dec 2021 11:40:59 +0000 Subject: [PATCH 094/175] Escape mysql describe to handle non standard table names --- packages/server/src/integrations/mysql.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/packages/server/src/integrations/mysql.ts b/packages/server/src/integrations/mysql.ts index 98584e04d2..24a55a273d 100644 --- a/packages/server/src/integrations/mysql.ts +++ b/packages/server/src/integrations/mysql.ts @@ -143,7 +143,7 @@ module MySQLModule { const schema: TableSchema = {} const descResp = await internalQuery( this.client, - { sql: `DESCRIBE ${tableName};` }, + { sql: `DESCRIBE \`${tableName}\`;` }, false ) for (let column of descResp) { From 558c85d736ff2d63f7e5723c6d5337ddc87da4f4 Mon Sep 17 00:00:00 2001 From: Budibase Release Bot <> Date: Thu, 9 Dec 2021 14:33:04 +0000 Subject: [PATCH 095/175] v1.0.11 --- lerna.json | 2 +- packages/auth/package.json | 2 +- packages/bbui/package.json | 2 +- packages/builder/package.json | 8 ++++---- packages/cli/package.json | 2 +- packages/client/package.json | 6 +++--- packages/server/package.json | 8 ++++---- packages/string-templates/package.json | 2 +- packages/worker/package.json | 6 +++--- 9 files changed, 19 insertions(+), 19 deletions(-) diff --git a/lerna.json b/lerna.json index 3aef8ef137..4a50521f33 100644 --- a/lerna.json +++ b/lerna.json @@ -1,5 +1,5 @@ { - "version": "1.0.10", + "version": "1.0.11", "npmClient": "yarn", "packages": [ "packages/*" diff --git a/packages/auth/package.json b/packages/auth/package.json index a516e1ba58..b055740333 100644 --- a/packages/auth/package.json +++ b/packages/auth/package.json @@ -1,6 +1,6 @@ { "name": "@budibase/auth", - "version": "1.0.10", + "version": "1.0.11", "description": "Authentication middlewares for budibase builder and apps", "main": "src/index.js", "author": "Budibase", diff --git a/packages/bbui/package.json b/packages/bbui/package.json index 8dedae0d3f..294dd4be20 100644 --- a/packages/bbui/package.json +++ b/packages/bbui/package.json @@ -1,7 +1,7 @@ { "name": "@budibase/bbui", "description": "A UI solution used in the different Budibase projects.", - "version": "1.0.10", + "version": "1.0.11", "license": "MPL-2.0", "svelte": "src/index.js", "module": "dist/bbui.es.js", diff --git a/packages/builder/package.json b/packages/builder/package.json index b8eb15794f..bfd35e7f00 100644 --- a/packages/builder/package.json +++ b/packages/builder/package.json @@ -1,6 +1,6 @@ { "name": "@budibase/builder", - "version": "1.0.10", + "version": "1.0.11", "license": "GPL-3.0", "private": true, "scripts": { @@ -65,10 +65,10 @@ } }, "dependencies": { - "@budibase/bbui": "^1.0.10", - "@budibase/client": "^1.0.10", + "@budibase/bbui": "^1.0.11", + "@budibase/client": "^1.0.11", "@budibase/colorpicker": "1.1.2", - "@budibase/string-templates": "^1.0.10", + "@budibase/string-templates": "^1.0.11", "@sentry/browser": "5.19.1", "@spectrum-css/page": "^3.0.1", "@spectrum-css/vars": "^3.0.1", diff --git a/packages/cli/package.json b/packages/cli/package.json index a074da5f59..16fb9498e7 100644 --- a/packages/cli/package.json +++ b/packages/cli/package.json @@ -1,6 +1,6 @@ { "name": "@budibase/cli", - "version": "1.0.10", + "version": "1.0.11", "description": "Budibase CLI, for developers, self hosting and migrations.", "main": "src/index.js", "bin": { diff --git a/packages/client/package.json b/packages/client/package.json index b42abfc095..cbd921e053 100644 --- a/packages/client/package.json +++ b/packages/client/package.json @@ -1,6 +1,6 @@ { "name": "@budibase/client", - "version": "1.0.10", + "version": "1.0.11", "license": "MPL-2.0", "module": "dist/budibase-client.js", "main": "dist/budibase-client.js", @@ -19,9 +19,9 @@ "dev:builder": "rollup -cw" }, "dependencies": { - "@budibase/bbui": "^1.0.10", + "@budibase/bbui": "^1.0.11", "@budibase/standard-components": "^0.9.139", - "@budibase/string-templates": "^1.0.10", + "@budibase/string-templates": "^1.0.11", "regexparam": "^1.3.0", "shortid": "^2.2.15", "svelte-spa-router": "^3.0.5" diff --git a/packages/server/package.json b/packages/server/package.json index 3b1e9add44..39bedf4af6 100644 --- a/packages/server/package.json +++ b/packages/server/package.json @@ -1,7 +1,7 @@ { "name": "@budibase/server", "email": "hi@budibase.com", - "version": "1.0.10", + "version": "1.0.11", "description": "Budibase Web Server", "main": "src/index.ts", "repository": { @@ -69,9 +69,9 @@ "author": "Budibase", "license": "GPL-3.0", "dependencies": { - "@budibase/auth": "^1.0.10", - "@budibase/client": "^1.0.10", - "@budibase/string-templates": "^1.0.10", + "@budibase/auth": "^1.0.11", + "@budibase/client": "^1.0.11", + "@budibase/string-templates": "^1.0.11", "@bull-board/api": "^3.7.0", "@bull-board/koa": "^3.7.0", "@elastic/elasticsearch": "7.10.0", diff --git a/packages/string-templates/package.json b/packages/string-templates/package.json index 08e6b6383b..480ac11395 100644 --- a/packages/string-templates/package.json +++ b/packages/string-templates/package.json @@ -1,6 +1,6 @@ { "name": "@budibase/string-templates", - "version": "1.0.10", + "version": "1.0.11", "description": "Handlebars wrapper for Budibase templating.", "main": "src/index.cjs", "module": "dist/bundle.mjs", diff --git a/packages/worker/package.json b/packages/worker/package.json index 62048dd240..ba76aa9e5a 100644 --- a/packages/worker/package.json +++ b/packages/worker/package.json @@ -1,7 +1,7 @@ { "name": "@budibase/worker", "email": "hi@budibase.com", - "version": "1.0.10", + "version": "1.0.11", "description": "Budibase background service", "main": "src/index.js", "repository": { @@ -29,8 +29,8 @@ "author": "Budibase", "license": "GPL-3.0", "dependencies": { - "@budibase/auth": "^1.0.10", - "@budibase/string-templates": "^1.0.10", + "@budibase/auth": "^1.0.11", + "@budibase/string-templates": "^1.0.11", "@koa/router": "^8.0.0", "@sentry/node": "^6.0.0", "@techpass/passport-openidconnect": "^0.3.0", From 97816ab99f419a8a63151460d285d83f6d587763 Mon Sep 17 00:00:00 2001 From: Budibase Release Bot <> Date: Thu, 9 Dec 2021 19:15:19 +0000 Subject: [PATCH 096/175] v1.0.12 --- lerna.json | 2 +- packages/auth/package.json | 2 +- packages/bbui/package.json | 2 +- packages/builder/package.json | 8 ++++---- packages/cli/package.json | 2 +- packages/client/package.json | 6 +++--- packages/server/package.json | 8 ++++---- packages/string-templates/package.json | 2 +- packages/worker/package.json | 6 +++--- 9 files changed, 19 insertions(+), 19 deletions(-) diff --git a/lerna.json b/lerna.json index 4a50521f33..07bbf908e6 100644 --- a/lerna.json +++ b/lerna.json @@ -1,5 +1,5 @@ { - "version": "1.0.11", + "version": "1.0.12", "npmClient": "yarn", "packages": [ "packages/*" diff --git a/packages/auth/package.json b/packages/auth/package.json index b055740333..c0599f6bc0 100644 --- a/packages/auth/package.json +++ b/packages/auth/package.json @@ -1,6 +1,6 @@ { "name": "@budibase/auth", - "version": "1.0.11", + "version": "1.0.12", "description": "Authentication middlewares for budibase builder and apps", "main": "src/index.js", "author": "Budibase", diff --git a/packages/bbui/package.json b/packages/bbui/package.json index 294dd4be20..3ffb11667b 100644 --- a/packages/bbui/package.json +++ b/packages/bbui/package.json @@ -1,7 +1,7 @@ { "name": "@budibase/bbui", "description": "A UI solution used in the different Budibase projects.", - "version": "1.0.11", + "version": "1.0.12", "license": "MPL-2.0", "svelte": "src/index.js", "module": "dist/bbui.es.js", diff --git a/packages/builder/package.json b/packages/builder/package.json index bfd35e7f00..df91d83c98 100644 --- a/packages/builder/package.json +++ b/packages/builder/package.json @@ -1,6 +1,6 @@ { "name": "@budibase/builder", - "version": "1.0.11", + "version": "1.0.12", "license": "GPL-3.0", "private": true, "scripts": { @@ -65,10 +65,10 @@ } }, "dependencies": { - "@budibase/bbui": "^1.0.11", - "@budibase/client": "^1.0.11", + "@budibase/bbui": "^1.0.12", + "@budibase/client": "^1.0.12", "@budibase/colorpicker": "1.1.2", - "@budibase/string-templates": "^1.0.11", + "@budibase/string-templates": "^1.0.12", "@sentry/browser": "5.19.1", "@spectrum-css/page": "^3.0.1", "@spectrum-css/vars": "^3.0.1", diff --git a/packages/cli/package.json b/packages/cli/package.json index 16fb9498e7..6adda8617a 100644 --- a/packages/cli/package.json +++ b/packages/cli/package.json @@ -1,6 +1,6 @@ { "name": "@budibase/cli", - "version": "1.0.11", + "version": "1.0.12", "description": "Budibase CLI, for developers, self hosting and migrations.", "main": "src/index.js", "bin": { diff --git a/packages/client/package.json b/packages/client/package.json index cbd921e053..d85a297e73 100644 --- a/packages/client/package.json +++ b/packages/client/package.json @@ -1,6 +1,6 @@ { "name": "@budibase/client", - "version": "1.0.11", + "version": "1.0.12", "license": "MPL-2.0", "module": "dist/budibase-client.js", "main": "dist/budibase-client.js", @@ -19,9 +19,9 @@ "dev:builder": "rollup -cw" }, "dependencies": { - "@budibase/bbui": "^1.0.11", + "@budibase/bbui": "^1.0.12", "@budibase/standard-components": "^0.9.139", - "@budibase/string-templates": "^1.0.11", + "@budibase/string-templates": "^1.0.12", "regexparam": "^1.3.0", "shortid": "^2.2.15", "svelte-spa-router": "^3.0.5" diff --git a/packages/server/package.json b/packages/server/package.json index 39bedf4af6..f0e01676fd 100644 --- a/packages/server/package.json +++ b/packages/server/package.json @@ -1,7 +1,7 @@ { "name": "@budibase/server", "email": "hi@budibase.com", - "version": "1.0.11", + "version": "1.0.12", "description": "Budibase Web Server", "main": "src/index.ts", "repository": { @@ -69,9 +69,9 @@ "author": "Budibase", "license": "GPL-3.0", "dependencies": { - "@budibase/auth": "^1.0.11", - "@budibase/client": "^1.0.11", - "@budibase/string-templates": "^1.0.11", + "@budibase/auth": "^1.0.12", + "@budibase/client": "^1.0.12", + "@budibase/string-templates": "^1.0.12", "@bull-board/api": "^3.7.0", "@bull-board/koa": "^3.7.0", "@elastic/elasticsearch": "7.10.0", diff --git a/packages/string-templates/package.json b/packages/string-templates/package.json index 480ac11395..22b167c8af 100644 --- a/packages/string-templates/package.json +++ b/packages/string-templates/package.json @@ -1,6 +1,6 @@ { "name": "@budibase/string-templates", - "version": "1.0.11", + "version": "1.0.12", "description": "Handlebars wrapper for Budibase templating.", "main": "src/index.cjs", "module": "dist/bundle.mjs", diff --git a/packages/worker/package.json b/packages/worker/package.json index ba76aa9e5a..fa7117cd09 100644 --- a/packages/worker/package.json +++ b/packages/worker/package.json @@ -1,7 +1,7 @@ { "name": "@budibase/worker", "email": "hi@budibase.com", - "version": "1.0.11", + "version": "1.0.12", "description": "Budibase background service", "main": "src/index.js", "repository": { @@ -29,8 +29,8 @@ "author": "Budibase", "license": "GPL-3.0", "dependencies": { - "@budibase/auth": "^1.0.11", - "@budibase/string-templates": "^1.0.11", + "@budibase/auth": "^1.0.12", + "@budibase/string-templates": "^1.0.12", "@koa/router": "^8.0.0", "@sentry/node": "^6.0.0", "@techpass/passport-openidconnect": "^0.3.0", From b489ec1b5206c2776c9ca63a6dac9501ea7908b7 Mon Sep 17 00:00:00 2001 From: mike12345567 Date: Fri, 10 Dec 2021 11:04:19 +0000 Subject: [PATCH 097/175] Fixing symlink to env file for development. --- hosting/.env | 1 + 1 file changed, 1 insertion(+) create mode 120000 hosting/.env diff --git a/hosting/.env b/hosting/.env new file mode 120000 index 0000000000..bb1b54ad77 --- /dev/null +++ b/hosting/.env @@ -0,0 +1 @@ +hosting.properties \ No newline at end of file From dc92cbeac012da6d2d2dc68c07ccc4516472cff2 Mon Sep 17 00:00:00 2001 From: Budibase Release Bot <> Date: Fri, 10 Dec 2021 11:12:06 +0000 Subject: [PATCH 098/175] v1.0.13 --- lerna.json | 2 +- packages/auth/package.json | 2 +- packages/bbui/package.json | 2 +- packages/builder/package.json | 8 ++++---- packages/cli/package.json | 2 +- packages/client/package.json | 6 +++--- packages/server/package.json | 8 ++++---- packages/string-templates/package.json | 2 +- packages/worker/package.json | 6 +++--- 9 files changed, 19 insertions(+), 19 deletions(-) diff --git a/lerna.json b/lerna.json index 07bbf908e6..cf8ebab2af 100644 --- a/lerna.json +++ b/lerna.json @@ -1,5 +1,5 @@ { - "version": "1.0.12", + "version": "1.0.13", "npmClient": "yarn", "packages": [ "packages/*" diff --git a/packages/auth/package.json b/packages/auth/package.json index c0599f6bc0..7053ddab67 100644 --- a/packages/auth/package.json +++ b/packages/auth/package.json @@ -1,6 +1,6 @@ { "name": "@budibase/auth", - "version": "1.0.12", + "version": "1.0.13", "description": "Authentication middlewares for budibase builder and apps", "main": "src/index.js", "author": "Budibase", diff --git a/packages/bbui/package.json b/packages/bbui/package.json index 3ffb11667b..edc16608cb 100644 --- a/packages/bbui/package.json +++ b/packages/bbui/package.json @@ -1,7 +1,7 @@ { "name": "@budibase/bbui", "description": "A UI solution used in the different Budibase projects.", - "version": "1.0.12", + "version": "1.0.13", "license": "MPL-2.0", "svelte": "src/index.js", "module": "dist/bbui.es.js", diff --git a/packages/builder/package.json b/packages/builder/package.json index df91d83c98..f9a4cf2407 100644 --- a/packages/builder/package.json +++ b/packages/builder/package.json @@ -1,6 +1,6 @@ { "name": "@budibase/builder", - "version": "1.0.12", + "version": "1.0.13", "license": "GPL-3.0", "private": true, "scripts": { @@ -65,10 +65,10 @@ } }, "dependencies": { - "@budibase/bbui": "^1.0.12", - "@budibase/client": "^1.0.12", + "@budibase/bbui": "^1.0.13", + "@budibase/client": "^1.0.13", "@budibase/colorpicker": "1.1.2", - "@budibase/string-templates": "^1.0.12", + "@budibase/string-templates": "^1.0.13", "@sentry/browser": "5.19.1", "@spectrum-css/page": "^3.0.1", "@spectrum-css/vars": "^3.0.1", diff --git a/packages/cli/package.json b/packages/cli/package.json index 6adda8617a..6e5d4760c8 100644 --- a/packages/cli/package.json +++ b/packages/cli/package.json @@ -1,6 +1,6 @@ { "name": "@budibase/cli", - "version": "1.0.12", + "version": "1.0.13", "description": "Budibase CLI, for developers, self hosting and migrations.", "main": "src/index.js", "bin": { diff --git a/packages/client/package.json b/packages/client/package.json index d85a297e73..66bc2f4da0 100644 --- a/packages/client/package.json +++ b/packages/client/package.json @@ -1,6 +1,6 @@ { "name": "@budibase/client", - "version": "1.0.12", + "version": "1.0.13", "license": "MPL-2.0", "module": "dist/budibase-client.js", "main": "dist/budibase-client.js", @@ -19,9 +19,9 @@ "dev:builder": "rollup -cw" }, "dependencies": { - "@budibase/bbui": "^1.0.12", + "@budibase/bbui": "^1.0.13", "@budibase/standard-components": "^0.9.139", - "@budibase/string-templates": "^1.0.12", + "@budibase/string-templates": "^1.0.13", "regexparam": "^1.3.0", "shortid": "^2.2.15", "svelte-spa-router": "^3.0.5" diff --git a/packages/server/package.json b/packages/server/package.json index f0e01676fd..87610747af 100644 --- a/packages/server/package.json +++ b/packages/server/package.json @@ -1,7 +1,7 @@ { "name": "@budibase/server", "email": "hi@budibase.com", - "version": "1.0.12", + "version": "1.0.13", "description": "Budibase Web Server", "main": "src/index.ts", "repository": { @@ -69,9 +69,9 @@ "author": "Budibase", "license": "GPL-3.0", "dependencies": { - "@budibase/auth": "^1.0.12", - "@budibase/client": "^1.0.12", - "@budibase/string-templates": "^1.0.12", + "@budibase/auth": "^1.0.13", + "@budibase/client": "^1.0.13", + "@budibase/string-templates": "^1.0.13", "@bull-board/api": "^3.7.0", "@bull-board/koa": "^3.7.0", "@elastic/elasticsearch": "7.10.0", diff --git a/packages/string-templates/package.json b/packages/string-templates/package.json index 22b167c8af..ad7928f062 100644 --- a/packages/string-templates/package.json +++ b/packages/string-templates/package.json @@ -1,6 +1,6 @@ { "name": "@budibase/string-templates", - "version": "1.0.12", + "version": "1.0.13", "description": "Handlebars wrapper for Budibase templating.", "main": "src/index.cjs", "module": "dist/bundle.mjs", diff --git a/packages/worker/package.json b/packages/worker/package.json index fa7117cd09..7bba900ee7 100644 --- a/packages/worker/package.json +++ b/packages/worker/package.json @@ -1,7 +1,7 @@ { "name": "@budibase/worker", "email": "hi@budibase.com", - "version": "1.0.12", + "version": "1.0.13", "description": "Budibase background service", "main": "src/index.js", "repository": { @@ -29,8 +29,8 @@ "author": "Budibase", "license": "GPL-3.0", "dependencies": { - "@budibase/auth": "^1.0.12", - "@budibase/string-templates": "^1.0.12", + "@budibase/auth": "^1.0.13", + "@budibase/string-templates": "^1.0.13", "@koa/router": "^8.0.0", "@sentry/node": "^6.0.0", "@techpass/passport-openidconnect": "^0.3.0", From 312db6182d34bc947ab6e12f0d3a039278ce02ca Mon Sep 17 00:00:00 2001 From: mike12345567 Date: Fri, 10 Dec 2021 15:10:45 +0000 Subject: [PATCH 099/175] Reducing the load on DB caused by CouchDB all_db when working with a large number of couch databases. --- packages/auth/src/db/utils.js | 45 +++++++++++++++++++++++++++++------ packages/auth/src/helpers.js | 9 +++++++ 2 files changed, 47 insertions(+), 7 deletions(-) create mode 100644 packages/auth/src/helpers.js diff --git a/packages/auth/src/db/utils.js b/packages/auth/src/db/utils.js index d23d407dab..7ced405c82 100644 --- a/packages/auth/src/db/utils.js +++ b/packages/auth/src/db/utils.js @@ -3,10 +3,15 @@ const Replication = require("./Replication") const { DEFAULT_TENANT_ID, Configs } = require("../constants") const env = require("../environment") const { StaticDatabases, SEPARATOR, DocumentTypes } = require("./constants") -const { getTenantId, getTenantIDFromAppID } = require("../tenancy") +const { + getTenantId, + getTenantIDFromAppID, + getGlobalDBName, +} = require("../tenancy") const fetch = require("node-fetch") const { getCouch } = require("./index") const { getAppMetadata } = require("../cache/appMetadata") +const { checkSlashesInUrl } = require("../helpers") const NO_APP_ERROR = "No app provided" @@ -194,6 +199,10 @@ exports.getCouchUrl = () => { return `${protocol}://${env.COUCH_DB_USERNAME}:${env.COUCH_DB_PASSWORD}@${rest}` } +exports.getStartEndKeyURL = (base, baseKey, tenantId = "") => { + return `${base}?startkey="${baseKey}${SEPARATOR}${tenantId}"&endkey="${baseKey}${SEPARATOR}${tenantId}${UNICODE_MAX}"` +} + /** * if in production this will use the CouchDB _all_dbs call to retrieve a list of databases. If testing * when using Pouch it will use the pouchdb-all-dbs package. @@ -203,12 +212,34 @@ exports.getAllDbs = async () => { if (env.isTest()) { return getCouch().allDbs() } - const response = await fetch(`${exports.getCouchUrl()}/_all_dbs`) - if (response.status === 200) { - return response.json() - } else { - throw "Cannot connect to CouchDB instance" + let dbs = [] + async function addDbs(url) { + const response = await fetch(checkSlashesInUrl(encodeURI(url))) + if (response.status === 200) { + let json = await response.json() + dbs = dbs.concat(json) + } else { + throw "Cannot connect to CouchDB instance" + } } + let couchUrl = `${exports.getCouchUrl()}_all_dbs` + if (env.MULTI_TENANCY) { + let tenantId = getTenantId() + // get prod apps + await addDbs( + exports.getStartEndKeyURL(couchUrl, DocumentTypes.APP, tenantId) + ) + // get dev apps + await addDbs( + exports.getStartEndKeyURL(couchUrl, DocumentTypes.APP_DEV, tenantId) + ) + // add global db name + dbs.push(getGlobalDBName(tenantId)) + } else { + // just get all DBs in self host + await addDbs(couchUrl) + } + return dbs } /** @@ -389,7 +420,7 @@ const getScopedFullConfig = async function (db, { type, user, workspace }) { } const getPlatformUrl = async settings => { - let platformUrl = env.PLATFORM_URL + let platformUrl = env.PLATFORM_URL || "http://localhost:10000" if (!env.SELF_HOSTED && env.MULTI_TENANCY) { // cloud and multi tenant - add the tenant to the default platform url diff --git a/packages/auth/src/helpers.js b/packages/auth/src/helpers.js new file mode 100644 index 0000000000..b402a82cf3 --- /dev/null +++ b/packages/auth/src/helpers.js @@ -0,0 +1,9 @@ +/** + * Makes sure that a URL has the correct number of slashes, while maintaining the + * http(s):// double slashes. + * @param {string} url The URL to test and remove any extra double slashes. + * @return {string} The updated url. + */ +exports.checkSlashesInUrl = url => { + return url.replace(/(https?:\/\/)|(\/)+/g, "$1$2") +} From ce3d7df39de7f224aa3ef25b9dee01979f5478c1 Mon Sep 17 00:00:00 2001 From: mike12345567 Date: Fri, 10 Dec 2021 15:17:18 +0000 Subject: [PATCH 100/175] Allowing start end key syntax to be used outside of tenancy if we need to. --- packages/auth/src/db/utils.js | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/packages/auth/src/db/utils.js b/packages/auth/src/db/utils.js index 7ced405c82..a091896342 100644 --- a/packages/auth/src/db/utils.js +++ b/packages/auth/src/db/utils.js @@ -199,8 +199,9 @@ exports.getCouchUrl = () => { return `${protocol}://${env.COUCH_DB_USERNAME}:${env.COUCH_DB_PASSWORD}@${rest}` } -exports.getStartEndKeyURL = (base, baseKey, tenantId = "") => { - return `${base}?startkey="${baseKey}${SEPARATOR}${tenantId}"&endkey="${baseKey}${SEPARATOR}${tenantId}${UNICODE_MAX}"` +exports.getStartEndKeyURL = (base, baseKey, tenantId = null) => { + const tenancy = tenantId ? `${SEPARATOR}${tenantId}` : "" + return `${base}?startkey="${baseKey}${tenancy}"&endkey="${baseKey}${tenancy}${UNICODE_MAX}"` } /** From 7567c778c8b46b3a4630be6d37567a32d56d682c Mon Sep 17 00:00:00 2001 From: mike12345567 Date: Fri, 10 Dec 2021 15:18:57 +0000 Subject: [PATCH 101/175] Removing repeated line. --- packages/auth/src/db/utils.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/packages/auth/src/db/utils.js b/packages/auth/src/db/utils.js index a091896342..03c6e8e145 100644 --- a/packages/auth/src/db/utils.js +++ b/packages/auth/src/db/utils.js @@ -436,7 +436,7 @@ const getPlatformUrl = async settings => { } } - return platformUrl ? platformUrl : "http://localhost:10000" + return platformUrl } async function getScopedConfig(db, params) { From e1a527a4bbc086c926154cc81c59e25679ba6a8b Mon Sep 17 00:00:00 2001 From: Budibase Release Bot <> Date: Fri, 10 Dec 2021 15:45:07 +0000 Subject: [PATCH 102/175] v1.0.14 --- lerna.json | 2 +- packages/auth/package.json | 2 +- packages/bbui/package.json | 2 +- packages/builder/package.json | 8 ++++---- packages/cli/package.json | 2 +- packages/client/package.json | 6 +++--- packages/server/package.json | 8 ++++---- packages/string-templates/package.json | 2 +- packages/worker/package.json | 6 +++--- 9 files changed, 19 insertions(+), 19 deletions(-) diff --git a/lerna.json b/lerna.json index cf8ebab2af..77d9f56696 100644 --- a/lerna.json +++ b/lerna.json @@ -1,5 +1,5 @@ { - "version": "1.0.13", + "version": "1.0.14", "npmClient": "yarn", "packages": [ "packages/*" diff --git a/packages/auth/package.json b/packages/auth/package.json index 7053ddab67..9770f84c25 100644 --- a/packages/auth/package.json +++ b/packages/auth/package.json @@ -1,6 +1,6 @@ { "name": "@budibase/auth", - "version": "1.0.13", + "version": "1.0.14", "description": "Authentication middlewares for budibase builder and apps", "main": "src/index.js", "author": "Budibase", diff --git a/packages/bbui/package.json b/packages/bbui/package.json index edc16608cb..0a62ba22b3 100644 --- a/packages/bbui/package.json +++ b/packages/bbui/package.json @@ -1,7 +1,7 @@ { "name": "@budibase/bbui", "description": "A UI solution used in the different Budibase projects.", - "version": "1.0.13", + "version": "1.0.14", "license": "MPL-2.0", "svelte": "src/index.js", "module": "dist/bbui.es.js", diff --git a/packages/builder/package.json b/packages/builder/package.json index f9a4cf2407..5e64f3a427 100644 --- a/packages/builder/package.json +++ b/packages/builder/package.json @@ -1,6 +1,6 @@ { "name": "@budibase/builder", - "version": "1.0.13", + "version": "1.0.14", "license": "GPL-3.0", "private": true, "scripts": { @@ -65,10 +65,10 @@ } }, "dependencies": { - "@budibase/bbui": "^1.0.13", - "@budibase/client": "^1.0.13", + "@budibase/bbui": "^1.0.14", + "@budibase/client": "^1.0.14", "@budibase/colorpicker": "1.1.2", - "@budibase/string-templates": "^1.0.13", + "@budibase/string-templates": "^1.0.14", "@sentry/browser": "5.19.1", "@spectrum-css/page": "^3.0.1", "@spectrum-css/vars": "^3.0.1", diff --git a/packages/cli/package.json b/packages/cli/package.json index 6e5d4760c8..a04ed0b907 100644 --- a/packages/cli/package.json +++ b/packages/cli/package.json @@ -1,6 +1,6 @@ { "name": "@budibase/cli", - "version": "1.0.13", + "version": "1.0.14", "description": "Budibase CLI, for developers, self hosting and migrations.", "main": "src/index.js", "bin": { diff --git a/packages/client/package.json b/packages/client/package.json index 66bc2f4da0..8b708c0794 100644 --- a/packages/client/package.json +++ b/packages/client/package.json @@ -1,6 +1,6 @@ { "name": "@budibase/client", - "version": "1.0.13", + "version": "1.0.14", "license": "MPL-2.0", "module": "dist/budibase-client.js", "main": "dist/budibase-client.js", @@ -19,9 +19,9 @@ "dev:builder": "rollup -cw" }, "dependencies": { - "@budibase/bbui": "^1.0.13", + "@budibase/bbui": "^1.0.14", "@budibase/standard-components": "^0.9.139", - "@budibase/string-templates": "^1.0.13", + "@budibase/string-templates": "^1.0.14", "regexparam": "^1.3.0", "shortid": "^2.2.15", "svelte-spa-router": "^3.0.5" diff --git a/packages/server/package.json b/packages/server/package.json index 87610747af..bbd6248efd 100644 --- a/packages/server/package.json +++ b/packages/server/package.json @@ -1,7 +1,7 @@ { "name": "@budibase/server", "email": "hi@budibase.com", - "version": "1.0.13", + "version": "1.0.14", "description": "Budibase Web Server", "main": "src/index.ts", "repository": { @@ -69,9 +69,9 @@ "author": "Budibase", "license": "GPL-3.0", "dependencies": { - "@budibase/auth": "^1.0.13", - "@budibase/client": "^1.0.13", - "@budibase/string-templates": "^1.0.13", + "@budibase/auth": "^1.0.14", + "@budibase/client": "^1.0.14", + "@budibase/string-templates": "^1.0.14", "@bull-board/api": "^3.7.0", "@bull-board/koa": "^3.7.0", "@elastic/elasticsearch": "7.10.0", diff --git a/packages/string-templates/package.json b/packages/string-templates/package.json index ad7928f062..f8b298196f 100644 --- a/packages/string-templates/package.json +++ b/packages/string-templates/package.json @@ -1,6 +1,6 @@ { "name": "@budibase/string-templates", - "version": "1.0.13", + "version": "1.0.14", "description": "Handlebars wrapper for Budibase templating.", "main": "src/index.cjs", "module": "dist/bundle.mjs", diff --git a/packages/worker/package.json b/packages/worker/package.json index 7bba900ee7..0dabee0e97 100644 --- a/packages/worker/package.json +++ b/packages/worker/package.json @@ -1,7 +1,7 @@ { "name": "@budibase/worker", "email": "hi@budibase.com", - "version": "1.0.13", + "version": "1.0.14", "description": "Budibase background service", "main": "src/index.js", "repository": { @@ -29,8 +29,8 @@ "author": "Budibase", "license": "GPL-3.0", "dependencies": { - "@budibase/auth": "^1.0.13", - "@budibase/string-templates": "^1.0.13", + "@budibase/auth": "^1.0.14", + "@budibase/string-templates": "^1.0.14", "@koa/router": "^8.0.0", "@sentry/node": "^6.0.0", "@techpass/passport-openidconnect": "^0.3.0", From a0bb13e5c08148aca71a128cc4258558bfb14368 Mon Sep 17 00:00:00 2001 From: mike12345567 Date: Fri, 10 Dec 2021 16:44:58 +0000 Subject: [PATCH 103/175] Adding slash incase couch URL doesn't contain. --- packages/auth/src/db/utils.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/packages/auth/src/db/utils.js b/packages/auth/src/db/utils.js index 03c6e8e145..2bad09c306 100644 --- a/packages/auth/src/db/utils.js +++ b/packages/auth/src/db/utils.js @@ -223,7 +223,7 @@ exports.getAllDbs = async () => { throw "Cannot connect to CouchDB instance" } } - let couchUrl = `${exports.getCouchUrl()}_all_dbs` + let couchUrl = `${exports.getCouchUrl()}/_all_dbs` if (env.MULTI_TENANCY) { let tenantId = getTenantId() // get prod apps From 9f45829bfa9f2091540c34e51d628f195962d57e Mon Sep 17 00:00:00 2001 From: Budibase Release Bot <> Date: Fri, 10 Dec 2021 16:55:00 +0000 Subject: [PATCH 104/175] v1.0.15 --- lerna.json | 2 +- packages/auth/package.json | 2 +- packages/bbui/package.json | 2 +- packages/builder/package.json | 8 ++++---- packages/cli/package.json | 2 +- packages/client/package.json | 6 +++--- packages/server/package.json | 8 ++++---- packages/string-templates/package.json | 2 +- packages/worker/package.json | 6 +++--- 9 files changed, 19 insertions(+), 19 deletions(-) diff --git a/lerna.json b/lerna.json index 77d9f56696..2b05f84750 100644 --- a/lerna.json +++ b/lerna.json @@ -1,5 +1,5 @@ { - "version": "1.0.14", + "version": "1.0.15", "npmClient": "yarn", "packages": [ "packages/*" diff --git a/packages/auth/package.json b/packages/auth/package.json index 9770f84c25..ab4cc7f7ba 100644 --- a/packages/auth/package.json +++ b/packages/auth/package.json @@ -1,6 +1,6 @@ { "name": "@budibase/auth", - "version": "1.0.14", + "version": "1.0.15", "description": "Authentication middlewares for budibase builder and apps", "main": "src/index.js", "author": "Budibase", diff --git a/packages/bbui/package.json b/packages/bbui/package.json index 0a62ba22b3..e761b250bd 100644 --- a/packages/bbui/package.json +++ b/packages/bbui/package.json @@ -1,7 +1,7 @@ { "name": "@budibase/bbui", "description": "A UI solution used in the different Budibase projects.", - "version": "1.0.14", + "version": "1.0.15", "license": "MPL-2.0", "svelte": "src/index.js", "module": "dist/bbui.es.js", diff --git a/packages/builder/package.json b/packages/builder/package.json index 5e64f3a427..63318f3649 100644 --- a/packages/builder/package.json +++ b/packages/builder/package.json @@ -1,6 +1,6 @@ { "name": "@budibase/builder", - "version": "1.0.14", + "version": "1.0.15", "license": "GPL-3.0", "private": true, "scripts": { @@ -65,10 +65,10 @@ } }, "dependencies": { - "@budibase/bbui": "^1.0.14", - "@budibase/client": "^1.0.14", + "@budibase/bbui": "^1.0.15", + "@budibase/client": "^1.0.15", "@budibase/colorpicker": "1.1.2", - "@budibase/string-templates": "^1.0.14", + "@budibase/string-templates": "^1.0.15", "@sentry/browser": "5.19.1", "@spectrum-css/page": "^3.0.1", "@spectrum-css/vars": "^3.0.1", diff --git a/packages/cli/package.json b/packages/cli/package.json index a04ed0b907..7d032b77b5 100644 --- a/packages/cli/package.json +++ b/packages/cli/package.json @@ -1,6 +1,6 @@ { "name": "@budibase/cli", - "version": "1.0.14", + "version": "1.0.15", "description": "Budibase CLI, for developers, self hosting and migrations.", "main": "src/index.js", "bin": { diff --git a/packages/client/package.json b/packages/client/package.json index 8b708c0794..8d80e65b20 100644 --- a/packages/client/package.json +++ b/packages/client/package.json @@ -1,6 +1,6 @@ { "name": "@budibase/client", - "version": "1.0.14", + "version": "1.0.15", "license": "MPL-2.0", "module": "dist/budibase-client.js", "main": "dist/budibase-client.js", @@ -19,9 +19,9 @@ "dev:builder": "rollup -cw" }, "dependencies": { - "@budibase/bbui": "^1.0.14", + "@budibase/bbui": "^1.0.15", "@budibase/standard-components": "^0.9.139", - "@budibase/string-templates": "^1.0.14", + "@budibase/string-templates": "^1.0.15", "regexparam": "^1.3.0", "shortid": "^2.2.15", "svelte-spa-router": "^3.0.5" diff --git a/packages/server/package.json b/packages/server/package.json index bbd6248efd..fa716bedfd 100644 --- a/packages/server/package.json +++ b/packages/server/package.json @@ -1,7 +1,7 @@ { "name": "@budibase/server", "email": "hi@budibase.com", - "version": "1.0.14", + "version": "1.0.15", "description": "Budibase Web Server", "main": "src/index.ts", "repository": { @@ -69,9 +69,9 @@ "author": "Budibase", "license": "GPL-3.0", "dependencies": { - "@budibase/auth": "^1.0.14", - "@budibase/client": "^1.0.14", - "@budibase/string-templates": "^1.0.14", + "@budibase/auth": "^1.0.15", + "@budibase/client": "^1.0.15", + "@budibase/string-templates": "^1.0.15", "@bull-board/api": "^3.7.0", "@bull-board/koa": "^3.7.0", "@elastic/elasticsearch": "7.10.0", diff --git a/packages/string-templates/package.json b/packages/string-templates/package.json index f8b298196f..a383b15c89 100644 --- a/packages/string-templates/package.json +++ b/packages/string-templates/package.json @@ -1,6 +1,6 @@ { "name": "@budibase/string-templates", - "version": "1.0.14", + "version": "1.0.15", "description": "Handlebars wrapper for Budibase templating.", "main": "src/index.cjs", "module": "dist/bundle.mjs", diff --git a/packages/worker/package.json b/packages/worker/package.json index 0dabee0e97..a74c53f4af 100644 --- a/packages/worker/package.json +++ b/packages/worker/package.json @@ -1,7 +1,7 @@ { "name": "@budibase/worker", "email": "hi@budibase.com", - "version": "1.0.14", + "version": "1.0.15", "description": "Budibase background service", "main": "src/index.js", "repository": { @@ -29,8 +29,8 @@ "author": "Budibase", "license": "GPL-3.0", "dependencies": { - "@budibase/auth": "^1.0.14", - "@budibase/string-templates": "^1.0.14", + "@budibase/auth": "^1.0.15", + "@budibase/string-templates": "^1.0.15", "@koa/router": "^8.0.0", "@sentry/node": "^6.0.0", "@techpass/passport-openidconnect": "^0.3.0", From d7ffb02a5a44b204d1662f6ca7a6f2e0d7715383 Mon Sep 17 00:00:00 2001 From: Martin McKeaveney Date: Mon, 13 Dec 2021 12:46:54 +0100 Subject: [PATCH 105/175] index.yaml --- index.yaml | 3 +++ 1 file changed, 3 insertions(+) create mode 100644 index.yaml diff --git a/index.yaml b/index.yaml new file mode 100644 index 0000000000..4b00ff2f03 --- /dev/null +++ b/index.yaml @@ -0,0 +1,3 @@ +apiVersion: v1 +entries: {} +generated: "2021-12-13T12:46:40.291206+01:00" From b81b880eca99abb2b1b0f77aaa37e35f4cf3d1ab Mon Sep 17 00:00:00 2001 From: Budibase Release Bot <> Date: Mon, 13 Dec 2021 11:55:27 +0000 Subject: [PATCH 106/175] v1.0.16 --- lerna.json | 2 +- packages/auth/package.json | 2 +- packages/bbui/package.json | 2 +- packages/builder/package.json | 8 ++++---- packages/cli/package.json | 2 +- packages/client/package.json | 6 +++--- packages/server/package.json | 8 ++++---- packages/string-templates/package.json | 2 +- packages/worker/package.json | 6 +++--- 9 files changed, 19 insertions(+), 19 deletions(-) diff --git a/lerna.json b/lerna.json index 2b05f84750..66a4cb4c8f 100644 --- a/lerna.json +++ b/lerna.json @@ -1,5 +1,5 @@ { - "version": "1.0.15", + "version": "1.0.16", "npmClient": "yarn", "packages": [ "packages/*" diff --git a/packages/auth/package.json b/packages/auth/package.json index ab4cc7f7ba..18b1db4afd 100644 --- a/packages/auth/package.json +++ b/packages/auth/package.json @@ -1,6 +1,6 @@ { "name": "@budibase/auth", - "version": "1.0.15", + "version": "1.0.16", "description": "Authentication middlewares for budibase builder and apps", "main": "src/index.js", "author": "Budibase", diff --git a/packages/bbui/package.json b/packages/bbui/package.json index e761b250bd..e22bf14fb5 100644 --- a/packages/bbui/package.json +++ b/packages/bbui/package.json @@ -1,7 +1,7 @@ { "name": "@budibase/bbui", "description": "A UI solution used in the different Budibase projects.", - "version": "1.0.15", + "version": "1.0.16", "license": "MPL-2.0", "svelte": "src/index.js", "module": "dist/bbui.es.js", diff --git a/packages/builder/package.json b/packages/builder/package.json index 63318f3649..4e18800854 100644 --- a/packages/builder/package.json +++ b/packages/builder/package.json @@ -1,6 +1,6 @@ { "name": "@budibase/builder", - "version": "1.0.15", + "version": "1.0.16", "license": "GPL-3.0", "private": true, "scripts": { @@ -65,10 +65,10 @@ } }, "dependencies": { - "@budibase/bbui": "^1.0.15", - "@budibase/client": "^1.0.15", + "@budibase/bbui": "^1.0.16", + "@budibase/client": "^1.0.16", "@budibase/colorpicker": "1.1.2", - "@budibase/string-templates": "^1.0.15", + "@budibase/string-templates": "^1.0.16", "@sentry/browser": "5.19.1", "@spectrum-css/page": "^3.0.1", "@spectrum-css/vars": "^3.0.1", diff --git a/packages/cli/package.json b/packages/cli/package.json index 7d032b77b5..92b1d63e62 100644 --- a/packages/cli/package.json +++ b/packages/cli/package.json @@ -1,6 +1,6 @@ { "name": "@budibase/cli", - "version": "1.0.15", + "version": "1.0.16", "description": "Budibase CLI, for developers, self hosting and migrations.", "main": "src/index.js", "bin": { diff --git a/packages/client/package.json b/packages/client/package.json index 8d80e65b20..52946e8043 100644 --- a/packages/client/package.json +++ b/packages/client/package.json @@ -1,6 +1,6 @@ { "name": "@budibase/client", - "version": "1.0.15", + "version": "1.0.16", "license": "MPL-2.0", "module": "dist/budibase-client.js", "main": "dist/budibase-client.js", @@ -19,9 +19,9 @@ "dev:builder": "rollup -cw" }, "dependencies": { - "@budibase/bbui": "^1.0.15", + "@budibase/bbui": "^1.0.16", "@budibase/standard-components": "^0.9.139", - "@budibase/string-templates": "^1.0.15", + "@budibase/string-templates": "^1.0.16", "regexparam": "^1.3.0", "shortid": "^2.2.15", "svelte-spa-router": "^3.0.5" diff --git a/packages/server/package.json b/packages/server/package.json index fa716bedfd..43d31d9ecf 100644 --- a/packages/server/package.json +++ b/packages/server/package.json @@ -1,7 +1,7 @@ { "name": "@budibase/server", "email": "hi@budibase.com", - "version": "1.0.15", + "version": "1.0.16", "description": "Budibase Web Server", "main": "src/index.ts", "repository": { @@ -69,9 +69,9 @@ "author": "Budibase", "license": "GPL-3.0", "dependencies": { - "@budibase/auth": "^1.0.15", - "@budibase/client": "^1.0.15", - "@budibase/string-templates": "^1.0.15", + "@budibase/auth": "^1.0.16", + "@budibase/client": "^1.0.16", + "@budibase/string-templates": "^1.0.16", "@bull-board/api": "^3.7.0", "@bull-board/koa": "^3.7.0", "@elastic/elasticsearch": "7.10.0", diff --git a/packages/string-templates/package.json b/packages/string-templates/package.json index a383b15c89..9b11710c0b 100644 --- a/packages/string-templates/package.json +++ b/packages/string-templates/package.json @@ -1,6 +1,6 @@ { "name": "@budibase/string-templates", - "version": "1.0.15", + "version": "1.0.16", "description": "Handlebars wrapper for Budibase templating.", "main": "src/index.cjs", "module": "dist/bundle.mjs", diff --git a/packages/worker/package.json b/packages/worker/package.json index a74c53f4af..de1622ec42 100644 --- a/packages/worker/package.json +++ b/packages/worker/package.json @@ -1,7 +1,7 @@ { "name": "@budibase/worker", "email": "hi@budibase.com", - "version": "1.0.15", + "version": "1.0.16", "description": "Budibase background service", "main": "src/index.js", "repository": { @@ -29,8 +29,8 @@ "author": "Budibase", "license": "GPL-3.0", "dependencies": { - "@budibase/auth": "^1.0.15", - "@budibase/string-templates": "^1.0.15", + "@budibase/auth": "^1.0.16", + "@budibase/string-templates": "^1.0.16", "@koa/router": "^8.0.0", "@sentry/node": "^6.0.0", "@techpass/passport-openidconnect": "^0.3.0", From e3615cc472e8270e451f57aca5e08e91bd348283 Mon Sep 17 00:00:00 2001 From: Martin McKeaveney Date: Mon, 13 Dec 2021 13:49:02 +0100 Subject: [PATCH 107/175] updating chart releaser CI --- .github/workflows/release-selfhost.yml | 4 +--- 1 file changed, 1 insertion(+), 3 deletions(-) diff --git a/.github/workflows/release-selfhost.yml b/.github/workflows/release-selfhost.yml index 78009501f8..bca4000fbf 100644 --- a/.github/workflows/release-selfhost.yml +++ b/.github/workflows/release-selfhost.yml @@ -16,6 +16,7 @@ jobs: - uses: actions/checkout@v2 with: fetch-depth: 0 + - uses: actions/setup-node@v1 with: node-version: 14.x @@ -43,9 +44,6 @@ jobs: DOCKER_PASSWORD: ${{ secrets.DOCKER_API_KEY }} BUDIBASE_RELEASE_VERSION: ${{ steps.previoustag.outputs.tag }} - - uses: azure/setup-helm@v1 - id: install - - run: yarn release:helm env: BUDIBASE_RELEASE_VERSION: ${{ steps.previoustag.outputs.tag }} From ac6686cf9f3a1bdc0893d4de1e75b24d62c5b30c Mon Sep 17 00:00:00 2001 From: Budibase Release Bot <> Date: Mon, 13 Dec 2021 12:57:18 +0000 Subject: [PATCH 108/175] v1.0.17 --- lerna.json | 2 +- packages/auth/package.json | 2 +- packages/bbui/package.json | 2 +- packages/builder/package.json | 8 ++++---- packages/cli/package.json | 2 +- packages/client/package.json | 6 +++--- packages/server/package.json | 8 ++++---- packages/string-templates/package.json | 2 +- packages/worker/package.json | 6 +++--- 9 files changed, 19 insertions(+), 19 deletions(-) diff --git a/lerna.json b/lerna.json index 66a4cb4c8f..531ba511c5 100644 --- a/lerna.json +++ b/lerna.json @@ -1,5 +1,5 @@ { - "version": "1.0.16", + "version": "1.0.17", "npmClient": "yarn", "packages": [ "packages/*" diff --git a/packages/auth/package.json b/packages/auth/package.json index 18b1db4afd..38bd196796 100644 --- a/packages/auth/package.json +++ b/packages/auth/package.json @@ -1,6 +1,6 @@ { "name": "@budibase/auth", - "version": "1.0.16", + "version": "1.0.17", "description": "Authentication middlewares for budibase builder and apps", "main": "src/index.js", "author": "Budibase", diff --git a/packages/bbui/package.json b/packages/bbui/package.json index e22bf14fb5..f74ae8228a 100644 --- a/packages/bbui/package.json +++ b/packages/bbui/package.json @@ -1,7 +1,7 @@ { "name": "@budibase/bbui", "description": "A UI solution used in the different Budibase projects.", - "version": "1.0.16", + "version": "1.0.17", "license": "MPL-2.0", "svelte": "src/index.js", "module": "dist/bbui.es.js", diff --git a/packages/builder/package.json b/packages/builder/package.json index 4e18800854..e7dae2971b 100644 --- a/packages/builder/package.json +++ b/packages/builder/package.json @@ -1,6 +1,6 @@ { "name": "@budibase/builder", - "version": "1.0.16", + "version": "1.0.17", "license": "GPL-3.0", "private": true, "scripts": { @@ -65,10 +65,10 @@ } }, "dependencies": { - "@budibase/bbui": "^1.0.16", - "@budibase/client": "^1.0.16", + "@budibase/bbui": "^1.0.17", + "@budibase/client": "^1.0.17", "@budibase/colorpicker": "1.1.2", - "@budibase/string-templates": "^1.0.16", + "@budibase/string-templates": "^1.0.17", "@sentry/browser": "5.19.1", "@spectrum-css/page": "^3.0.1", "@spectrum-css/vars": "^3.0.1", diff --git a/packages/cli/package.json b/packages/cli/package.json index 92b1d63e62..cb48fc2669 100644 --- a/packages/cli/package.json +++ b/packages/cli/package.json @@ -1,6 +1,6 @@ { "name": "@budibase/cli", - "version": "1.0.16", + "version": "1.0.17", "description": "Budibase CLI, for developers, self hosting and migrations.", "main": "src/index.js", "bin": { diff --git a/packages/client/package.json b/packages/client/package.json index 52946e8043..84eaeb6b65 100644 --- a/packages/client/package.json +++ b/packages/client/package.json @@ -1,6 +1,6 @@ { "name": "@budibase/client", - "version": "1.0.16", + "version": "1.0.17", "license": "MPL-2.0", "module": "dist/budibase-client.js", "main": "dist/budibase-client.js", @@ -19,9 +19,9 @@ "dev:builder": "rollup -cw" }, "dependencies": { - "@budibase/bbui": "^1.0.16", + "@budibase/bbui": "^1.0.17", "@budibase/standard-components": "^0.9.139", - "@budibase/string-templates": "^1.0.16", + "@budibase/string-templates": "^1.0.17", "regexparam": "^1.3.0", "shortid": "^2.2.15", "svelte-spa-router": "^3.0.5" diff --git a/packages/server/package.json b/packages/server/package.json index 43d31d9ecf..063f852354 100644 --- a/packages/server/package.json +++ b/packages/server/package.json @@ -1,7 +1,7 @@ { "name": "@budibase/server", "email": "hi@budibase.com", - "version": "1.0.16", + "version": "1.0.17", "description": "Budibase Web Server", "main": "src/index.ts", "repository": { @@ -69,9 +69,9 @@ "author": "Budibase", "license": "GPL-3.0", "dependencies": { - "@budibase/auth": "^1.0.16", - "@budibase/client": "^1.0.16", - "@budibase/string-templates": "^1.0.16", + "@budibase/auth": "^1.0.17", + "@budibase/client": "^1.0.17", + "@budibase/string-templates": "^1.0.17", "@bull-board/api": "^3.7.0", "@bull-board/koa": "^3.7.0", "@elastic/elasticsearch": "7.10.0", diff --git a/packages/string-templates/package.json b/packages/string-templates/package.json index 9b11710c0b..ba89cdce5b 100644 --- a/packages/string-templates/package.json +++ b/packages/string-templates/package.json @@ -1,6 +1,6 @@ { "name": "@budibase/string-templates", - "version": "1.0.16", + "version": "1.0.17", "description": "Handlebars wrapper for Budibase templating.", "main": "src/index.cjs", "module": "dist/bundle.mjs", diff --git a/packages/worker/package.json b/packages/worker/package.json index de1622ec42..cb5ae2991e 100644 --- a/packages/worker/package.json +++ b/packages/worker/package.json @@ -1,7 +1,7 @@ { "name": "@budibase/worker", "email": "hi@budibase.com", - "version": "1.0.16", + "version": "1.0.17", "description": "Budibase background service", "main": "src/index.js", "repository": { @@ -29,8 +29,8 @@ "author": "Budibase", "license": "GPL-3.0", "dependencies": { - "@budibase/auth": "^1.0.16", - "@budibase/string-templates": "^1.0.16", + "@budibase/auth": "^1.0.17", + "@budibase/string-templates": "^1.0.17", "@koa/router": "^8.0.0", "@sentry/node": "^6.0.0", "@techpass/passport-openidconnect": "^0.3.0", From 2751f9d4c44c630896abb3a26624f98c1a4d2507 Mon Sep 17 00:00:00 2001 From: Martin McKeaveney Date: Mon, 13 Dec 2021 16:52:35 +0100 Subject: [PATCH 109/175] adding and updating helm repos --- .github/workflows/release-selfhost.yml | 8 +- packages/client/yarn.lock | 1014 +----------------------- packages/server/yarn.lock | 783 +----------------- packages/worker/yarn.lock | 658 +-------------- 4 files changed, 48 insertions(+), 2415 deletions(-) diff --git a/.github/workflows/release-selfhost.yml b/.github/workflows/release-selfhost.yml index bca4000fbf..09c2babec1 100644 --- a/.github/workflows/release-selfhost.yml +++ b/.github/workflows/release-selfhost.yml @@ -16,7 +16,6 @@ jobs: - uses: actions/checkout@v2 with: fetch-depth: 0 - - uses: actions/setup-node@v1 with: node-version: 14.x @@ -44,14 +43,19 @@ jobs: DOCKER_PASSWORD: ${{ secrets.DOCKER_API_KEY }} BUDIBASE_RELEASE_VERSION: ${{ steps.previoustag.outputs.tag }} + - uses: azure/setup-helm@v1 + id: install + - run: yarn release:helm env: BUDIBASE_RELEASE_VERSION: ${{ steps.previoustag.outputs.tag }} - - name: Configure Git + - name: Configure Git and Helm run: | git config user.name "Budibase Helm Bot" git config user.email "<>" + helm repo add budibase https://budibase.github.io/budibase + helm repo update - name: Run chart-releaser uses: helm/chart-releaser-action@v1.2.0 diff --git a/packages/client/yarn.lock b/packages/client/yarn.lock index b3e3e235a0..e57aed8eca 100644 --- a/packages/client/yarn.lock +++ b/packages/client/yarn.lock @@ -77,82 +77,6 @@ svelte-flatpickr "^3.2.3" svelte-portal "^1.0.0" -"@budibase/bbui@^0.9.185-alpha.12": - version "0.9.188" - resolved "https://registry.yarnpkg.com/@budibase/bbui/-/bbui-0.9.188.tgz#82c108172fbf81a84378e0ef4ca7cba61ea8d0ba" - integrity sha512-KevJxHdASITX9RzLvm+b2K3VMwqYFTumvrlpStAP6UIoyPkls0xaAc2KiJJ7Kkq48UkkBtAbOYaMxsFbAaTsbQ== - dependencies: - "@adobe/spectrum-css-workflow-icons" "^1.2.1" - "@spectrum-css/actionbutton" "^1.0.1" - "@spectrum-css/actiongroup" "^1.0.1" - "@spectrum-css/avatar" "^3.0.2" - "@spectrum-css/button" "^3.0.1" - "@spectrum-css/buttongroup" "^3.0.2" - "@spectrum-css/checkbox" "^3.0.2" - "@spectrum-css/dialog" "^3.0.1" - "@spectrum-css/divider" "^1.0.3" - "@spectrum-css/dropzone" "^3.0.2" - "@spectrum-css/fieldgroup" "^3.0.2" - "@spectrum-css/fieldlabel" "^3.0.1" - "@spectrum-css/icon" "^3.0.1" - "@spectrum-css/illustratedmessage" "^3.0.2" - "@spectrum-css/inputgroup" "^3.0.2" - "@spectrum-css/label" "^2.0.10" - "@spectrum-css/link" "^3.1.1" - "@spectrum-css/menu" "^3.0.1" - "@spectrum-css/modal" "^3.0.1" - "@spectrum-css/pagination" "^3.0.3" - "@spectrum-css/picker" "^1.0.1" - "@spectrum-css/popover" "^3.0.1" - "@spectrum-css/progressbar" "^1.0.2" - "@spectrum-css/progresscircle" "^1.0.2" - "@spectrum-css/radio" "^3.0.2" - "@spectrum-css/search" "^3.0.2" - "@spectrum-css/sidenav" "^3.0.2" - "@spectrum-css/statuslight" "^3.0.2" - "@spectrum-css/stepper" "^3.0.3" - "@spectrum-css/switch" "^1.0.2" - "@spectrum-css/table" "^3.0.1" - "@spectrum-css/tabs" "^3.0.1" - "@spectrum-css/tags" "^3.0.2" - "@spectrum-css/textfield" "^3.0.1" - "@spectrum-css/toast" "^3.0.1" - "@spectrum-css/tooltip" "^3.0.3" - "@spectrum-css/treeview" "^3.0.2" - "@spectrum-css/typography" "^3.0.1" - "@spectrum-css/underlay" "^2.0.9" - "@spectrum-css/vars" "^3.0.1" - dayjs "^1.10.4" - svelte-flatpickr "^3.2.3" - svelte-portal "^1.0.0" - -"@budibase/handlebars-helpers@^0.11.7": - version "0.11.7" - resolved "https://registry.yarnpkg.com/@budibase/handlebars-helpers/-/handlebars-helpers-0.11.7.tgz#8e5f9843d7dd10503e9f608555a96ccf4d836c46" - integrity sha512-PvGHAv22cWSFExs1kc0WglwsmCEUEOqWvSp6JCFZwtc3qAAr5yMfLK8WGVQ63ALvyzWZiyxF+yrlzeeaohCMJw== - dependencies: - array-sort "^1.0.0" - define-property "^2.0.2" - extend-shallow "^3.0.2" - for-in "^1.0.2" - get-object "^0.2.0" - get-value "^3.0.1" - handlebars "^4.7.7" - handlebars-utils "^1.0.6" - has-value "^2.0.2" - 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.1" - kind-of "^6.0.3" - micromatch "^3.1.5" - relative "^3.0.2" - striptags "^3.1.1" - to-gfm-code-block "^0.1.1" - year "^0.2.1" - "@budibase/standard-components@^0.9.139": version "0.9.139" resolved "https://registry.yarnpkg.com/@budibase/standard-components/-/standard-components-0.9.139.tgz#cf8e2b759ae863e469e50272b3ca87f2827e66e3" @@ -171,18 +95,6 @@ svelte-apexcharts "^1.0.2" svelte-flatpickr "^3.1.0" -"@budibase/string-templates@^0.9.185-alpha.12": - version "0.9.188" - resolved "https://registry.yarnpkg.com/@budibase/string-templates/-/string-templates-0.9.188.tgz#f37836ed23dbd2217cb157030ada7cd59f6a2165" - integrity sha512-O/bL0I5OJO9W2OizIe9vBHowCLwwASPBrsGiAIB8L0x6AivYMq8j1mvNRwLXZjpHTjv86bU/LyG/3CP837oDsg== - dependencies: - "@budibase/handlebars-helpers" "^0.11.7" - dayjs "^1.10.4" - handlebars "^4.7.6" - handlebars-utils "^1.0.6" - lodash "^4.17.20" - vm2 "^3.9.4" - "@rollup/plugin-alias@^3.1.5": version "3.1.8" resolved "https://registry.yarnpkg.com/@rollup/plugin-alias/-/plugin-alias-3.1.8.tgz#645fd84659e08d3d1b059408fcdf69c1dd435a6b" @@ -543,42 +455,6 @@ apexcharts@^3.19.2, apexcharts@^3.22.1: svg.resize.js "^1.4.3" svg.select.js "^3.0.1" -argparse@^1.0.10: - version "1.0.10" - resolved "https://registry.yarnpkg.com/argparse/-/argparse-1.0.10.tgz#bcd6791ea5ae09725e17e5ad988134cd40b3d911" - integrity sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg== - dependencies: - sprintf-js "~1.0.2" - -arr-diff@^4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/arr-diff/-/arr-diff-4.0.0.tgz#d6461074febfec71e7e15235761a329a5dc7c520" - integrity sha1-1kYQdP6/7HHn4VI1dhoyml3HxSA= - -arr-flatten@^1.1.0: - version "1.1.0" - resolved "https://registry.yarnpkg.com/arr-flatten/-/arr-flatten-1.1.0.tgz#36048bbff4e7b47e136644316c99669ea5ae91f1" - integrity sha512-L3hKV5R/p5o81R7O02IGnwpDmkp6E982XhtbuwSe3O4qOtMMMtodicASA1Cny2U+aCXcNpml+m4dPsvsJ3jatg== - -arr-union@^3.1.0: - version "3.1.0" - resolved "https://registry.yarnpkg.com/arr-union/-/arr-union-3.1.0.tgz#e39b09aea9def866a8f206e288af63919bae39c4" - integrity sha1-45sJrqne+Gao8gbiiK9jkZuuOcQ= - -array-sort@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/array-sort/-/array-sort-1.0.0.tgz#e4c05356453f56f53512a7d1d6123f2c54c0a88a" - integrity sha512-ihLeJkonmdiAsD7vpgN3CRcx2J2S0TiYW+IS/5zHBI7mKUq3ySvBdzzBfD236ubDBQFiiyG3SWCPc+msQ9KoYg== - 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" - integrity sha1-qJS3XUvE9s1nnvMkSp/Y9Gri1Cg= - asn1.js@^5.2.0: version "5.4.1" resolved "https://registry.yarnpkg.com/asn1.js/-/asn1.js-5.4.1.tgz#11a980b84ebb91781ce35b0fdc2ee294e3783f07" @@ -589,46 +465,16 @@ asn1.js@^5.2.0: minimalistic-assert "^1.0.0" safer-buffer "^2.1.0" -assign-symbols@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/assign-symbols/-/assign-symbols-1.0.0.tgz#59667f41fadd4f20ccbc2bb96b8d4f7f78ec0367" - integrity sha1-WWZ/QfrdTyDMvCu5a41Pf3jsA2c= - asynckit@^0.4.0: version "0.4.0" resolved "https://registry.yarnpkg.com/asynckit/-/asynckit-0.4.0.tgz#c79ed97f7f34cb8f2ba1bc9790bcc366474b4b79" integrity sha1-x57Zf380y48robyXkLzDZkdLS3k= -atob@^2.1.2: - version "2.1.2" - resolved "https://registry.yarnpkg.com/atob/-/atob-2.1.2.tgz#6d9517eb9e030d2436666651e86bd9f6f13533c9" - integrity sha512-Wm6ukoaOGJi/73p/cl2GvLjTI5JM1k/O14isD73YML8StrH/7/lRFgmg8nICZgD3bZZvjwCGxtMOD3wWNAu8cg== - -autolinker@~0.28.0: - version "0.28.1" - resolved "https://registry.yarnpkg.com/autolinker/-/autolinker-0.28.1.tgz#0652b491881879f0775dace0cdca3233942a4e47" - integrity sha1-BlK0kYgYefB3XazgzcoyM5QqTkc= - dependencies: - gulp-header "^1.7.1" - balanced-match@^1.0.0: version "1.0.2" resolved "https://registry.yarnpkg.com/balanced-match/-/balanced-match-1.0.2.tgz#e83e3a7e3f300b34cb9d87f615fa0cbf357690ee" integrity sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw== -base@^0.11.1: - version "0.11.2" - resolved "https://registry.yarnpkg.com/base/-/base-0.11.2.tgz#7bde5ced145b6d551a90db87f83c558b4eb48a8f" - integrity sha512-5T6P4xPgpp0YDFvSWwEZ4NoE3aM4QBQXDzmVbraCkFj8zHM+mba8SyqB5DbZWyR7mYHo6Y7BdQo3MoA4m0TeQg== - dependencies: - cache-base "^1.0.1" - class-utils "^0.3.5" - component-emitter "^1.2.1" - define-property "^1.0.0" - isobject "^3.0.1" - mixin-deep "^1.2.0" - pascalcase "^0.1.1" - big.js@^5.2.2: version "5.2.2" resolved "https://registry.yarnpkg.com/big.js/-/big.js-5.2.2.tgz#65f0af382f578bcdc742bd9c281e9cb2d7768328" @@ -664,22 +510,6 @@ brace-expansion@^1.1.7: balanced-match "^1.0.0" concat-map "0.0.1" -braces@^2.3.1: - version "2.3.2" - resolved "https://registry.yarnpkg.com/braces/-/braces-2.3.2.tgz#5979fd3f14cd531565e5fa2df1abfff1dfaee729" - integrity sha512-aNdbnj9P8PjdXU4ybaWLK2IF3jc/EoDYbC7AazW6to3TRsfXxscC9UXOB5iDiEQrkyIbWp2SLQda4+QAa7nc3w== - dependencies: - arr-flatten "^1.1.0" - array-unique "^0.3.2" - extend-shallow "^2.0.1" - fill-range "^4.0.0" - isobject "^3.0.1" - repeat-element "^1.1.2" - snapdragon "^0.8.1" - snapdragon-node "^2.0.1" - split-string "^3.0.2" - to-regex "^3.0.1" - brorand@^1.0.1, brorand@^1.1.0: version "1.1.0" resolved "https://registry.yarnpkg.com/brorand/-/brorand-1.1.0.tgz#12c25efe40a45e3c323eb8675a0a0ce57b22371f" @@ -784,21 +614,6 @@ builtin-modules@^3.1.0: resolved "https://registry.yarnpkg.com/builtin-modules/-/builtin-modules-3.2.0.tgz#45d5db99e7ee5e6bc4f362e008bf917ab5049887" integrity sha512-lGzLKcioL90C7wMczpkY0n/oART3MbBa8R9OFGE1rJxoVI86u4WAGfEk8Wjv10eKSyTHVGkSo3bvBylCEtk7LA== -cache-base@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/cache-base/-/cache-base-1.0.1.tgz#0a7f46416831c8b662ee36fe4e7c59d76f666ab2" - integrity sha512-AKcdTnFSWATd5/GCPRxr2ChwIJ85CeyrEyjRHlKxQ56d4XJMGym0uAiKn0xbLOGOl3+yRpOTi484dVCEc5AUzQ== - dependencies: - collection-visit "^1.0.0" - component-emitter "^1.2.1" - get-value "^2.0.6" - has-value "^1.0.0" - isobject "^3.0.1" - set-value "^2.0.0" - to-object-path "^0.3.0" - union-value "^1.0.0" - unset-value "^1.0.0" - caniuse-api@^3.0.0: version "3.0.0" resolved "https://registry.yarnpkg.com/caniuse-api/-/caniuse-api-3.0.0.tgz#5e4d90e2274961d46291997df599e3ed008ee4c0" @@ -839,29 +654,11 @@ cipher-base@^1.0.0, cipher-base@^1.0.1, cipher-base@^1.0.3: inherits "^2.0.1" safe-buffer "^5.0.1" -class-utils@^0.3.5: - version "0.3.6" - resolved "https://registry.yarnpkg.com/class-utils/-/class-utils-0.3.6.tgz#f93369ae8b9a7ce02fd41faad0ca83033190c463" - integrity sha512-qOhPa/Fj7s6TY8H8esGu5QNpMMQxz79h+urzrNYN6mn+9BnxlDGf5QZ+XeCDsxSjPqsSR56XOZOJmpeurnLMeg== - dependencies: - arr-union "^3.1.0" - define-property "^0.2.5" - isobject "^3.0.0" - static-extend "^0.1.1" - clone@~0.1.9: version "0.1.19" resolved "https://registry.yarnpkg.com/clone/-/clone-0.1.19.tgz#613fb68639b26a494ac53253e15b1a6bd88ada85" integrity sha1-YT+2hjmyaklKxTJT4Vsaa9iK2oU= -collection-visit@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/collection-visit/-/collection-visit-1.0.0.tgz#4bc0373c164bc3291b4d368c829cf1a80a59dca0" - integrity sha1-S8A3PBZLwykbTTaMgpzxqApZ3KA= - dependencies: - map-visit "^1.0.0" - object-visit "^1.0.0" - color-convert@^1.9.0: version "1.9.3" resolved "https://registry.yarnpkg.com/color-convert/-/color-convert-1.9.3.tgz#bb71850690e1f136567de629d2d5471deda4c1e8" @@ -913,11 +710,6 @@ commondir@^1.0.1: resolved "https://registry.yarnpkg.com/commondir/-/commondir-1.0.1.tgz#ddd800da0c66127393cca5950ea968a3aaf1253b" integrity sha1-3dgA2gxmEnOTzKWVDqloo6rxJTs= -component-emitter@^1.2.1: - version "1.3.0" - resolved "https://registry.yarnpkg.com/component-emitter/-/component-emitter-1.3.0.tgz#16e4070fba8ae29b679f2215853ee181ab2eabc0" - integrity sha512-Rd3se6QB+sO1TwqZjscQrurpEPIfO0/yYnSin6Q/rD3mOutHvUrCAhJub3r90uNb+SESBuE0QYoB90YdfatsRg== - concat-map@0.0.1: version "0.0.1" resolved "https://registry.yarnpkg.com/concat-map/-/concat-map-0.0.1.tgz#d8a96bd77fd68df7793a73036a3ba0d5405d477b" @@ -933,18 +725,13 @@ concat-stream@^1.4.4: readable-stream "^2.2.2" typedarray "^0.0.6" -concat-with-sourcemaps@*, concat-with-sourcemaps@^1.1.0: +concat-with-sourcemaps@^1.1.0: 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" -copy-descriptor@^0.1.0: - version "0.1.1" - resolved "https://registry.yarnpkg.com/copy-descriptor/-/copy-descriptor-0.1.1.tgz#676f6eb3c39997c2ee1ac3a924fd6124748f578d" - integrity sha1-Z29us8OZl8LuGsOpJP1hJHSPV40= - core-util-is@~1.0.0: version "1.0.3" resolved "https://registry.yarnpkg.com/core-util-is/-/core-util-is-1.0.3.tgz#a6042d3634c2b27e9328f837b965fac83808db85" @@ -1117,13 +904,6 @@ data-urls@^2.0.0: whatwg-mimetype "^2.3.0" whatwg-url "^8.0.0" -date.js@^0.3.1: - version "0.3.3" - resolved "https://registry.yarnpkg.com/date.js/-/date.js-0.3.3.tgz#ef1e92332f507a638795dbb985e951882e50bbda" - integrity sha512-HgigOS3h3k6HnW011nAb43c5xx5rBXk8P2v/WIT9Zv4koIaVXiH2BURguI78VVp+5Qc076T7OR378JViCnZtBw== - dependencies: - debug "~3.1.0" - dayjs@^1.10.4, dayjs@^1.10.5: version "1.10.7" resolved "https://registry.yarnpkg.com/dayjs/-/dayjs-1.10.7.tgz#2cf5f91add28116748440866a0a1d26f3a6ce468" @@ -1136,30 +916,11 @@ debug@4: dependencies: ms "2.1.2" -debug@^2.2.0, debug@^2.3.3: - version "2.6.9" - resolved "https://registry.yarnpkg.com/debug/-/debug-2.6.9.tgz#5d128515df134ff327e90a4c93f4e077a536341f" - integrity sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA== - dependencies: - ms "2.0.0" - -debug@~3.1.0: - version "3.1.0" - resolved "https://registry.yarnpkg.com/debug/-/debug-3.1.0.tgz#5bb5a0672628b64149566ba16819e61518c67261" - integrity sha512-OX8XqP7/1a9cqkxYw2yXss15f26NKWBpDXQd0/uK/KPqdQhxbPa994hnzjcE2VqQpDslf55723cKPUOGSmMY3g== - dependencies: - ms "2.0.0" - decimal.js@^10.2.1: version "10.3.1" resolved "https://registry.yarnpkg.com/decimal.js/-/decimal.js-10.3.1.tgz#d8c3a444a9c6774ba60ca6ad7261c3a94fd5e783" integrity sha512-V0pfhfr8suzyPGOx3nmq4aHqabehUZn6Ch9kyFpV79TGDTWFmHqUqXdabR7QHqxzrYolF4+tVmJhUG4OURg5dQ== -decode-uri-component@^0.2.0: - version "0.2.0" - resolved "https://registry.yarnpkg.com/decode-uri-component/-/decode-uri-component-0.2.0.tgz#eb3913333458775cb84cd1a1fae062106bb87545" - integrity sha1-6zkTMzRYd1y4TNGh+uBiEGu4dUU= - deep-is@~0.1.3: version "0.1.4" resolved "https://registry.yarnpkg.com/deep-is/-/deep-is-0.1.4.tgz#a6f2dce612fadd2ef1f519b73551f17e85199831" @@ -1170,13 +931,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" - deferred-leveldown@~0.2.0: version "0.2.0" resolved "https://registry.yarnpkg.com/deferred-leveldown/-/deferred-leveldown-0.2.0.tgz#2cef1f111e1c57870d8bbb8af2650e587cd2f5b4" @@ -1184,28 +938,6 @@ deferred-leveldown@~0.2.0: dependencies: abstract-leveldown "~0.12.1" -define-property@^0.2.5: - version "0.2.5" - resolved "https://registry.yarnpkg.com/define-property/-/define-property-0.2.5.tgz#c35b1ef918ec3c990f9a5bc57be04aacec5c8116" - integrity sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY= - dependencies: - is-descriptor "^0.1.0" - -define-property@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/define-property/-/define-property-1.0.0.tgz#769ebaaf3f4a63aad3af9e8d304c9bbe79bfb0e6" - integrity sha1-dp66rz9KY6rTr56NMEybvnm/sOY= - dependencies: - is-descriptor "^1.0.0" - -define-property@^2.0.2: - version "2.0.2" - resolved "https://registry.yarnpkg.com/define-property/-/define-property-2.0.2.tgz#d459689e8d654ba77e02a817f8710d702cb16e9d" - integrity sha512-jwK2UV4cnPpbcG7+VRARKTZPUWowwXA8bzH5NP6ud0oeAxyYPuGZUAC7hMugpCdz4BeSZl2Dl9k66CHJ/46ZYQ== - dependencies: - is-descriptor "^1.0.2" - isobject "^3.0.1" - delayed-stream@~1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/delayed-stream/-/delayed-stream-1.0.0.tgz#df3ae199acadfb7d440aaae0b29e2272b24ec619" @@ -1288,11 +1020,6 @@ emojis-list@^3.0.0: resolved "https://registry.yarnpkg.com/emojis-list/-/emojis-list-3.0.0.tgz#5570662046ad29e2e916e71aae260abdff4f6a78" integrity sha512-/kyM18EfinwXZbno9FyUGeFh87KC8HRQBQGildHZbEuRyWFOmv1U10o9BBp8XVZDVNNuQKyIGIu5ZYAAXJ0V2Q== -ent@^2.2.0: - version "2.2.0" - resolved "https://registry.yarnpkg.com/ent/-/ent-2.2.0.tgz#e964219325a21d05f44466a2f686ed6ce5f5dd1d" - integrity sha1-6WQhkyWiHQX0RGai9obtbOX13R0= - entities@^2.0.0: version "2.2.0" resolved "https://registry.yarnpkg.com/entities/-/entities-2.2.0.tgz#098dc90ebb83d8dffa089d55256b351d34c4da55" @@ -1380,73 +1107,16 @@ evp_bytestokey@^1.0.0, evp_bytestokey@^1.0.3: md5.js "^1.3.4" safe-buffer "^5.1.1" -expand-brackets@^2.1.4: - version "2.1.4" - resolved "https://registry.yarnpkg.com/expand-brackets/-/expand-brackets-2.1.4.tgz#b77735e315ce30f6b6eff0f83b04151a22449622" - integrity sha1-t3c14xXOMPa27/D4OwQVGiJEliI= - dependencies: - debug "^2.3.3" - define-property "^0.2.5" - extend-shallow "^2.0.1" - posix-character-classes "^0.1.0" - regex-not "^1.0.0" - snapdragon "^0.8.1" - to-regex "^3.0.1" - -extend-shallow@^2.0.1: - version "2.0.1" - resolved "https://registry.yarnpkg.com/extend-shallow/-/extend-shallow-2.0.1.tgz#51af7d614ad9a9f610ea1bafbb989d6b1c56890f" - integrity sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8= - dependencies: - is-extendable "^0.1.0" - -extend-shallow@^3.0.0, extend-shallow@^3.0.2: - version "3.0.2" - resolved "https://registry.yarnpkg.com/extend-shallow/-/extend-shallow-3.0.2.tgz#26a71aaf073b39fb2127172746131c2704028db8" - integrity sha1-Jqcarwc7OfshJxcnRhMcJwQCjbg= - dependencies: - assign-symbols "^1.0.0" - is-extendable "^1.0.1" - -extglob@^2.0.4: - version "2.0.4" - resolved "https://registry.yarnpkg.com/extglob/-/extglob-2.0.4.tgz#ad00fe4dc612a9232e8718711dc5cb5ab0285543" - integrity sha512-Nmb6QXkELsuBr24CJSkilo6UHHgbekK5UiZgfE6UHD3Eb27YC6oD+bhcT+tJ6cl8dmsgdQxnWlcry8ksBIBLpw== - dependencies: - array-unique "^0.3.2" - define-property "^1.0.0" - expand-brackets "^2.1.4" - extend-shallow "^2.0.1" - fragment-cache "^0.2.1" - regex-not "^1.0.0" - snapdragon "^0.8.1" - to-regex "^3.0.1" - fast-levenshtein@~2.0.6: version "2.0.6" resolved "https://registry.yarnpkg.com/fast-levenshtein/-/fast-levenshtein-2.0.6.tgz#3d8a5c66883a16a30ca8643e851f19baa7797917" integrity sha1-PYpcZog6FqMMqGQ+hR8Zuqd5eRc= -fill-range@^4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/fill-range/-/fill-range-4.0.0.tgz#d544811d428f98eb06a63dc402d2403c328c38f7" - integrity sha1-1USBHUKPmOsGpj3EAtJAPDKMOPc= - dependencies: - extend-shallow "^2.0.1" - is-number "^3.0.0" - repeat-string "^1.6.1" - to-regex-range "^2.1.0" - flatpickr@^4.5.2: version "4.6.9" resolved "https://registry.yarnpkg.com/flatpickr/-/flatpickr-4.6.9.tgz#9a13383e8a6814bda5d232eae3fcdccb97dc1499" integrity sha512-F0azNNi8foVWKSF+8X+ZJzz8r9sE1G4hl06RyceIaLvyltKvDl6vqk9Lm/6AUUCi5HWaIjiUbk7UpeE/fOXOpw== -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= - foreach@~2.0.1: version "2.0.5" resolved "https://registry.yarnpkg.com/foreach/-/foreach-2.0.5.tgz#0bee005018aeb260d0a3af3ae658dd0136ec1b99" @@ -1461,18 +1131,6 @@ form-data@^3.0.0: combined-stream "^1.0.8" mime-types "^2.1.12" -fragment-cache@^0.2.1: - version "0.2.1" - resolved "https://registry.yarnpkg.com/fragment-cache/-/fragment-cache-0.2.1.tgz#4290fad27f13e89be7f33799c6bc5a0abfff0d19" - integrity sha1-QpD60n8T6Jvn8zeZxrxaCr//DRk= - dependencies: - map-cache "^0.2.2" - -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" @@ -1511,26 +1169,6 @@ generic-names@^2.0.1: dependencies: loader-utils "^1.1.0" -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-value@^2.0.3, get-value@^2.0.6: - version "2.0.6" - resolved "https://registry.yarnpkg.com/get-value/-/get-value-2.0.6.tgz#dc15ca1c672387ca76bd37ac0a395ba2042a2c28" - integrity sha1-3BXKHGcjh8p2vTesCjlbogQqLCg= - -get-value@^3.0.0, get-value@^3.0.1: - version "3.0.1" - resolved "https://registry.yarnpkg.com/get-value/-/get-value-3.0.1.tgz#5efd2a157f1d6a516d7524e124ac52d0a39ef5a8" - integrity sha512-mKZj9JLQrwMBtj5wxi6MH8Z5eSKaERpAwjg43dPtlGI1ZVEgH/qC7T8/6R2OBSUA+zzHBZgICsVJaEIV2tKTDA== - dependencies: - isobject "^3.0.1" - glob@^7.1.6: version "7.2.0" resolved "https://registry.yarnpkg.com/glob/-/glob-7.2.0.tgz#d15535af7732e02e948f4c41628bd910293f6023" @@ -1548,35 +1186,6 @@ graceful-fs@^4.1.6, graceful-fs@^4.2.0: resolved "https://registry.yarnpkg.com/graceful-fs/-/graceful-fs-4.2.8.tgz#e412b8d33f5e006593cbd3cee6df9f2cebbe802a" integrity sha512-qkIilPUYcNhJpd33n0GBXTB1MMPp14TxEsEs0pTrsSVucApsYzW5V+Q8Qxhik6KU3evy+qkAAowTByymK0avdg== -gulp-header@^1.7.1: - version "1.8.12" - resolved "https://registry.yarnpkg.com/gulp-header/-/gulp-header-1.8.12.tgz#ad306be0066599127281c4f8786660e705080a84" - integrity sha512-lh9HLdb53sC7XIZOYzTXM4lFuXElv3EVkSDhsd7DoJBj7hm+Ni7D3qYbb+Rr8DuM8nRanBvkVO9d7askreXGnQ== - dependencies: - concat-with-sourcemaps "*" - lodash.template "^4.4.0" - through2 "^2.0.0" - -handlebars-utils@^1.0.2, handlebars-utils@^1.0.4, handlebars-utils@^1.0.6: - version "1.0.6" - resolved "https://registry.yarnpkg.com/handlebars-utils/-/handlebars-utils-1.0.6.tgz#cb9db43362479054782d86ffe10f47abc76357f9" - integrity sha512-d5mmoQXdeEqSKMtQQZ9WkiUcO1E3tPbWxluCK9hVgIDPzQa9WsKo3Lbe/sGflTe7TomHEeZaOgwIkyIr1kfzkw== - dependencies: - kind-of "^6.0.0" - typeof-article "^0.1.1" - -handlebars@^4.7.6, handlebars@^4.7.7: - version "4.7.7" - resolved "https://registry.yarnpkg.com/handlebars/-/handlebars-4.7.7.tgz#9ce33416aad02dbd6c8fafa8240d5d98004945a1" - integrity sha512-aAcXm5OAfE/8IXkcZvCepKU3VzW1/39Fb5ZuqMtgI/hT8X2YgoMvBY5dLhq/cpOvw7Lk1nK/UF71aLG/ZnVYRA== - dependencies: - minimist "^1.2.5" - neo-async "^2.6.0" - source-map "^0.6.1" - wordwrap "^1.0.0" - optionalDependencies: - uglify-js "^3.1.4" - has-flag@^3.0.0: version "3.0.0" resolved "https://registry.yarnpkg.com/has-flag/-/has-flag-3.0.0.tgz#b5d454dc2199ae225699f3467e5a07f3b955bafd" @@ -1587,52 +1196,6 @@ has-flag@^4.0.0: resolved "https://registry.yarnpkg.com/has-flag/-/has-flag-4.0.0.tgz#944771fd9c81c81265c4d6941860da06bb59479b" integrity sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ== -has-value@^0.3.1: - version "0.3.1" - resolved "https://registry.yarnpkg.com/has-value/-/has-value-0.3.1.tgz#7b1f58bada62ca827ec0a2078025654845995e1f" - integrity sha1-ex9YutpiyoJ+wKIHgCVlSEWZXh8= - dependencies: - get-value "^2.0.3" - has-values "^0.1.4" - isobject "^2.0.0" - -has-value@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/has-value/-/has-value-1.0.0.tgz#18b281da585b1c5c51def24c930ed29a0be6b177" - integrity sha1-GLKB2lhbHFxR3vJMkw7SmgvmsXc= - dependencies: - get-value "^2.0.6" - has-values "^1.0.0" - isobject "^3.0.0" - -has-value@^2.0.2: - version "2.0.2" - resolved "https://registry.yarnpkg.com/has-value/-/has-value-2.0.2.tgz#d0f12e8780ba8e90e66ad1a21c707fdb67c25658" - integrity sha512-ybKOlcRsK2MqrM3Hmz/lQxXHZ6ejzSPzpNabKB45jb5qDgJvKPa3SdapTsTLwEb9WltgWpOmNax7i+DzNOk4TA== - dependencies: - get-value "^3.0.0" - has-values "^2.0.1" - -has-values@^0.1.4: - version "0.1.4" - resolved "https://registry.yarnpkg.com/has-values/-/has-values-0.1.4.tgz#6d61de95d91dfca9b9a02089ad384bff8f62b771" - integrity sha1-bWHeldkd/Km5oCCJrThL/49it3E= - -has-values@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/has-values/-/has-values-1.0.0.tgz#95b0b63fec2146619a6fe57fe75628d5a39efe4f" - integrity sha1-lbC2P+whRmGab+V/51Yo1aOe/k8= - dependencies: - is-number "^3.0.0" - kind-of "^4.0.0" - -has-values@^2.0.1: - version "2.0.1" - resolved "https://registry.yarnpkg.com/has-values/-/has-values-2.0.1.tgz#3876200ff86d8a8546a9264a952c17d5fc17579d" - integrity sha512-+QdH3jOmq9P8GfdjFg0eJudqx1FqU62NQJ4P16rOEHeRdl7ckgwn6uqQjzYE0ZoHVV/e5E2esuJ5Gl5+HUW19w== - dependencies: - kind-of "^6.0.2" - has@^1.0.3: version "1.0.3" resolved "https://registry.yarnpkg.com/has/-/has-1.0.3.tgz#722d7cbfc1f6aa8241f16dd814e011e1f41e8796" @@ -1657,39 +1220,6 @@ hash.js@^1.0.0, hash.js@^1.0.3: inherits "^2.0.3" minimalistic-assert "^1.0.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== - hmac-drbg@^1.0.1: version "1.0.1" resolved "https://registry.yarnpkg.com/hmac-drbg/-/hmac-drbg-1.0.1.tgz#d2745701025a6c775a6c545793ed502fc0c649a1" @@ -1706,14 +1236,6 @@ html-encoding-sniffer@^2.0.1: dependencies: whatwg-encoding "^1.0.5" -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-proxy-agent@^4.0.1: version "4.0.1" resolved "https://registry.yarnpkg.com/http-proxy-agent/-/http-proxy-agent-4.0.1.tgz#8a8c8ef7f5932ccf953c296ca8291b95aa74aa3a" @@ -1790,25 +1312,6 @@ is-absolute-url@^3.0.3: resolved "https://registry.yarnpkg.com/is-absolute-url/-/is-absolute-url-3.0.3.tgz#96c6a22b6a23929b11ea0afb1836c36ad4a5d698" integrity sha512-opmNIX7uFnS96NtPmhWQgQx6/NYFgsUXYMllcfzwWKUMwfo8kku1TvE6hkNcH+Q1ts5cMVrsY7j0bxXQDciu9Q== -is-accessor-descriptor@^0.1.6: - version "0.1.6" - resolved "https://registry.yarnpkg.com/is-accessor-descriptor/-/is-accessor-descriptor-0.1.6.tgz#a9e12cb3ae8d876727eeef3843f8a0897b5c98d6" - integrity sha1-qeEss66Nh2cn7u84Q/igiXtcmNY= - dependencies: - kind-of "^3.0.2" - -is-accessor-descriptor@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/is-accessor-descriptor/-/is-accessor-descriptor-1.0.0.tgz#169c2f6d3df1f992618072365c9b0ea1f6878656" - integrity sha512-m5hnHTkcVsPfqx3AKlyttIPb7J+XykHvJP2B9bZDjlhLIoEq4XoK64Vg7boZlVWYK6LUY94dYPEE7Lh0ZkZKcQ== - dependencies: - kind-of "^6.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" - integrity sha512-NcdALwpXkTm5Zvvbk7owOUSvVvBKDgKP5/ewfXEznmQFfs4ZRmanOeKBTjRVjka3QFoN6XJ+9F3USqfHqTaU5w== - is-core-module@^2.2.0: version "2.8.0" resolved "https://registry.yarnpkg.com/is-core-module/-/is-core-module-2.8.0.tgz#0321336c3d0925e497fd97f5d95cb114a5ccd548" @@ -1816,107 +1319,16 @@ is-core-module@^2.2.0: dependencies: has "^1.0.3" -is-data-descriptor@^0.1.4: - version "0.1.4" - resolved "https://registry.yarnpkg.com/is-data-descriptor/-/is-data-descriptor-0.1.4.tgz#0b5ee648388e2c860282e793f1856fec3f301b56" - integrity sha1-C17mSDiOLIYCgueT8YVv7D8wG1Y= - dependencies: - kind-of "^3.0.2" - -is-data-descriptor@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/is-data-descriptor/-/is-data-descriptor-1.0.0.tgz#d84876321d0e7add03990406abbbbd36ba9268c7" - integrity sha512-jbRXy1FmtAoCjQkVmIVYwuuqDFUbaOeDjmed1tOGPrsMhtJA4rD9tkgA0F1qJ3gRFRXcHYVkdeaP50Q5rE/jLQ== - dependencies: - kind-of "^6.0.0" - -is-descriptor@^0.1.0: - version "0.1.6" - resolved "https://registry.yarnpkg.com/is-descriptor/-/is-descriptor-0.1.6.tgz#366d8240dde487ca51823b1ab9f07a10a78251ca" - integrity sha512-avDYr0SB3DwO9zsMov0gKCESFYqCnE4hq/4z3TdUlukEy5t9C0YRq7HLrsN52NAcqXKaepeCD0n+B0arnVG3Hg== - dependencies: - is-accessor-descriptor "^0.1.6" - is-data-descriptor "^0.1.4" - kind-of "^5.0.0" - -is-descriptor@^1.0.0, is-descriptor@^1.0.2: - version "1.0.2" - resolved "https://registry.yarnpkg.com/is-descriptor/-/is-descriptor-1.0.2.tgz#3b159746a66604b04f8c81524ba365c5f14d86ec" - integrity sha512-2eis5WqQGV7peooDyLmNEPUrps9+SXX5c9pL3xEB+4e9HnGuDa7mB7kHxHw4CbqS9k1T2hOH3miL8n8WtiYVtg== - dependencies: - is-accessor-descriptor "^1.0.0" - is-data-descriptor "^1.0.0" - kind-of "^6.0.2" - -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" - integrity sha1-YrEQ4omkcUGOPsNqYX1HLjAd/Ik= - -is-extendable@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/is-extendable/-/is-extendable-1.0.1.tgz#a7470f9e426733d81bd81e1155264e3a3507cab4" - integrity sha512-arnXMxT1hhoKo9k1LZdmlNyJdDDfy2v0fXjFlmok4+i8ul/6WlbVge9bhM74OpNPQPMGUToDtz+KXa1PneJxOA== - dependencies: - is-plain-object "^2.0.4" - -is-extglob@^2.1.1: - version "2.1.1" - resolved "https://registry.yarnpkg.com/is-extglob/-/is-extglob-2.1.1.tgz#a88c02535791f02ed37c76a1b9ea9773c833f8c2" - integrity sha1-qIwCU1eR8C7TfHahueqXc8gz+MI= - -is-glob@^4.0.1: - version "4.0.3" - resolved "https://registry.yarnpkg.com/is-glob/-/is-glob-4.0.3.tgz#64f61e42cbbb2eec2071a9dac0b28ba1e65d5084" - integrity sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg== - dependencies: - is-extglob "^2.1.1" - is-module@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/is-module/-/is-module-1.0.0.tgz#3258fb69f78c14d5b815d664336b4cffb6441591" integrity sha1-Mlj7afeMFNW4FdZkM2tM/7ZEFZE= -is-number@^2.0.2: - version "2.1.0" - resolved "https://registry.yarnpkg.com/is-number/-/is-number-2.1.0.tgz#01fcbbb393463a548f2f466cce16dece49db908f" - integrity sha1-Afy7s5NGOlSPL0ZszhbezknbkI8= - dependencies: - kind-of "^3.0.2" - -is-number@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/is-number/-/is-number-3.0.0.tgz#24fd6201a4782cf50561c810276afc7d12d71195" - integrity sha1-JP1iAaR4LPUFYcgQJ2r8fRLXEZU= - dependencies: - kind-of "^3.0.2" - is-object@~0.1.2: version "0.1.2" resolved "https://registry.yarnpkg.com/is-object/-/is-object-0.1.2.tgz#00efbc08816c33cfc4ac8251d132e10dc65098d7" integrity sha1-AO+8CIFsM8/ErIJR0TLhDcZQmNc= -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-plain-object@^2.0.3, is-plain-object@^2.0.4: - version "2.0.4" - resolved "https://registry.yarnpkg.com/is-plain-object/-/is-plain-object-2.0.4.tgz#2c163b3fafb1b606d9d17928f05c2a1c38e07677" - integrity sha512-h5PpgXkWitc38BBMYawTYMWJHFZJVnBquFE57xFpjB8pJFiF6gZ+bU+WyI/yqXiFR5mdLsgYNaPe8uao6Uv9Og== - dependencies: - isobject "^3.0.1" - is-potential-custom-element-name@^1.0.1: version "1.0.1" resolved "https://registry.yarnpkg.com/is-potential-custom-element-name/-/is-potential-custom-element-name-1.0.1.tgz#171ed6f19e3ac554394edf78caa05784a45bebb5" @@ -1934,18 +1346,6 @@ is-resolvable@^1.1.0: resolved "https://registry.yarnpkg.com/is-resolvable/-/is-resolvable-1.1.0.tgz#fb18f87ce1feb925169c9a407c19318a3206ed88" integrity sha512-qgDYXFSR5WvEfuS5dMj6oTMEbrrSaM0CrFk2Yiq/gXnBvD9pMa2jGXxyhGLfvhZpuMZe18CJpFxAt3CRs42NMg== -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-windows@^1.0.2: - version "1.0.2" - resolved "https://registry.yarnpkg.com/is-windows/-/is-windows-1.0.2.tgz#d1850eb9791ecd18e6182ce12a30f396634bb19d" - integrity sha512-eXK1UInq2bPmjyX6e3VHIzMLobc4J94i4AWn+Hpq3OU5KkrRC96OAcR3PRJ/pGu6m8TRnBHP9dkXQVsT/COVIA== - is@~0.2.6: version "0.2.7" resolved "https://registry.yarnpkg.com/is/-/is-0.2.7.tgz#3b34a2c48f359972f35042849193ae7264b63562" @@ -1956,7 +1356,7 @@ isarray@0.0.1: resolved "https://registry.yarnpkg.com/isarray/-/isarray-0.0.1.tgz#8a18acfca9a8f4177e09abfc6038939b05d1eedf" integrity sha1-ihis/Kmo9Bd+Cav8YDiTmwXR7t8= -isarray@1.0.0, isarray@~1.0.0: +isarray@~1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/isarray/-/isarray-1.0.0.tgz#bb935d48582cba168c06834957a54a3e07124f11" integrity sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE= @@ -1966,23 +1366,6 @@ isbuffer@~0.0.0: resolved "https://registry.yarnpkg.com/isbuffer/-/isbuffer-0.0.0.tgz#38c146d9df528b8bf9b0701c3d43cf12df3fc39b" integrity sha1-OMFG2d9Si4v5sHAcPUPPEt8/w5s= -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" - integrity sha1-8GVWEJaj8dou9GJy+BXIQNh+DIk= - dependencies: - isarray "1.0.0" - -isobject@^3.0.0, isobject@^3.0.1: - version "3.0.1" - resolved "https://registry.yarnpkg.com/isobject/-/isobject-3.0.1.tgz#4e431e92b11a9731636aa1f9c8d1ccbcfdab78df" - integrity sha1-TkMekrEalzFjaqH5yNHMvP2reN8= - jest-worker@^26.2.1: version "26.6.2" resolved "https://registry.yarnpkg.com/jest-worker/-/jest-worker-26.6.2.tgz#7f72cbc4d643c365e27b9fd775f9d0eaa9c7a8ed" @@ -2044,30 +1427,6 @@ jsonfile@^4.0.0: optionalDependencies: graceful-fs "^4.1.6" -kind-of@^3.0.2, kind-of@^3.0.3, kind-of@^3.1.0, kind-of@^3.2.0: - version "3.2.2" - resolved "https://registry.yarnpkg.com/kind-of/-/kind-of-3.2.2.tgz#31ea21a734bab9bbb0f32466d893aea51e4a3c64" - integrity sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ= - dependencies: - is-buffer "^1.1.5" - -kind-of@^4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/kind-of/-/kind-of-4.0.0.tgz#20813df3d712928b207378691a45066fae72dd57" - integrity sha1-IIE989cSkosgc3hpGkUGb65y3Vc= - dependencies: - is-buffer "^1.1.5" - -kind-of@^5.0.0, kind-of@^5.0.2: - version "5.1.0" - resolved "https://registry.yarnpkg.com/kind-of/-/kind-of-5.1.0.tgz#729c91e2d857b7a419a1f9aa65685c4c33f5845d" - integrity sha512-NGEErnH6F2vUuXDh+OlbcKW7/wOcfdRHaZ7VWtqCztfHri/++YKmP51OdWeGPuqCOba6kk2OTe5d02VmTB80Pw== - -kind-of@^6.0.0, kind-of@^6.0.2, kind-of@^6.0.3: - version "6.0.3" - resolved "https://registry.yarnpkg.com/kind-of/-/kind-of-6.0.3.tgz#07c05034a6c349fa06e24fa35aa76db4580ce4dd" - integrity sha512-dcS1ul+9tmeD95T+x28/ehLgd9mENa3LsvDTtzm3vyBEO7RPptvAD+t44WVXaUjTBRcrpFeFlC8WCruUR456hw== - level-blobs@^0.1.7: version "0.1.7" resolved "https://registry.yarnpkg.com/level-blobs/-/level-blobs-0.1.7.tgz#9ab9b97bb99f1edbf9f78a3433e21ed56386bdaf" @@ -2175,11 +1534,6 @@ loader-utils@^1.1.0: emojis-list "^3.0.0" json5 "^1.0.1" -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.camelcase@^4.3.0: version "4.3.0" resolved "https://registry.yarnpkg.com/lodash.camelcase/-/lodash.camelcase-4.3.0.tgz#b28aa6288a2b9fc651035c7711f65ab6190331a6" @@ -2190,27 +1544,12 @@ lodash.memoize@^4.1.2: resolved "https://registry.yarnpkg.com/lodash.memoize/-/lodash.memoize-4.1.2.tgz#bcc6c49a42a2840ed997f323eada5ecd182e0bfe" integrity sha1-vMbEmkKihA7Zl/Mj6tpezRguC/4= -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.uniq@^4.5.0: version "4.5.0" resolved "https://registry.yarnpkg.com/lodash.uniq/-/lodash.uniq-4.5.0.tgz#d0225373aeb652adc1bc82e4945339a842754773" integrity sha1-0CJTc662Uq3BvILklFM5qEJ1R3M= -lodash@^4.17.20, lodash@^4.7.0: +lodash@^4.7.0: version "4.17.21" resolved "https://registry.yarnpkg.com/lodash/-/lodash-4.17.21.tgz#679591c564c3bffaae8454cf0b3df370c3d6911c" integrity sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg== @@ -2234,18 +1573,6 @@ magic-string@^0.25.7: dependencies: sourcemap-codec "^1.4.4" -map-cache@^0.2.2: - version "0.2.2" - resolved "https://registry.yarnpkg.com/map-cache/-/map-cache-0.2.2.tgz#c32abd0bd6525d9b051645bb4f26ac5dc98a0dbf" - integrity sha1-wyq9C9ZSXZsFFkW7TyasXcmKDb8= - -map-visit@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/map-visit/-/map-visit-1.0.0.tgz#ecdca8f13144e660f1b5bd41f12f3479d98dfb8f" - integrity sha1-7Nyo8TFE5mDxtb1B8S80edmN+48= - dependencies: - object-visit "^1.0.0" - md5.js@^1.3.4: version "1.3.5" resolved "https://registry.yarnpkg.com/md5.js/-/md5.js-1.3.5.tgz#b5d07b8e3216e3e27cd728d72f70d1e6a342005f" @@ -2265,25 +1592,6 @@ merge-stream@^2.0.0: resolved "https://registry.yarnpkg.com/merge-stream/-/merge-stream-2.0.0.tgz#52823629a14dd00c9770fb6ad47dc6310f2c1f60" integrity sha512-abv/qOcuPfk3URPfDzmZU1LKmuw8kT+0nIHvKrKgFrwifol/doWcdA4ZqsWQ8ENrFKkd67Mfpo/LovbIUsbt3w== -micromatch@^3.1.5: - version "3.1.10" - resolved "https://registry.yarnpkg.com/micromatch/-/micromatch-3.1.10.tgz#70859bc95c9840952f359a068a3fc49f9ecfac23" - integrity sha512-MWikgl9n9M3w+bpsY3He8L+w9eF9338xRl8IAO5viDizwSzziFEyUzo2xrrloB64ADbTf8uA8vRqqttDTOmccg== - dependencies: - arr-diff "^4.0.0" - array-unique "^0.3.2" - braces "^2.3.1" - define-property "^2.0.2" - extend-shallow "^3.0.2" - extglob "^2.0.4" - fragment-cache "^0.2.1" - kind-of "^6.0.2" - nanomatch "^1.2.9" - object.pick "^1.3.0" - regex-not "^1.0.0" - snapdragon "^0.8.1" - to-regex "^3.0.2" - miller-rabin@^4.0.0: version "4.0.1" resolved "https://registry.yarnpkg.com/miller-rabin/-/miller-rabin-4.0.1.tgz#f080351c865b0dc562a8462966daa53543c78a4d" @@ -2321,29 +1629,11 @@ minimatch@^3.0.2, minimatch@^3.0.4: dependencies: brace-expansion "^1.1.7" -minimist@^1.2.0, minimist@^1.2.5: +minimist@^1.2.0: version "1.2.5" resolved "https://registry.yarnpkg.com/minimist/-/minimist-1.2.5.tgz#67d66014b66a6a8aaa0c083c5fd58df4e4e97602" integrity sha512-FM9nNUYrRBAELZQT3xeZQ7fmMOBg6nWNmJKTcgsJeaLstP/UODVpGsr5OhXhhXg6f+qtJ8uiZ+PUxkDWcgIXLw== -mixin-deep@^1.2.0: - version "1.3.2" - resolved "https://registry.yarnpkg.com/mixin-deep/-/mixin-deep-1.3.2.tgz#1120b43dc359a785dce65b55b82e257ccf479566" - integrity sha512-WRoDn//mXBiJ1H40rqa3vH0toePwSsGb45iInWlTySa+Uu4k3tYUSxa2v1KqAiLtvlrSzaExqS1gtk96A9zvEA== - dependencies: - for-in "^1.0.2" - is-extendable "^1.0.1" - -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== - -ms@2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/ms/-/ms-2.0.0.tgz#5608aeadfc00be6c2901df5f9861788de0d597c8" - integrity sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g= - ms@2.1.2: version "2.1.2" resolved "https://registry.yarnpkg.com/ms/-/ms-2.1.2.tgz#d09d1f357b443f493382a8eb3ccd183872ae6009" @@ -2359,28 +1649,6 @@ nanoid@^3.1.30: resolved "https://registry.yarnpkg.com/nanoid/-/nanoid-3.1.30.tgz#63f93cc548d2a113dc5dfbc63bfa09e2b9b64362" integrity sha512-zJpuPDwOv8D2zq2WRoMe1HsfZthVewpel9CAvTfc/2mBD1uUT/agc5f7GHGWXlYkFvi1mVxe4IjvP2HNrop7nQ== -nanomatch@^1.2.9: - version "1.2.13" - resolved "https://registry.yarnpkg.com/nanomatch/-/nanomatch-1.2.13.tgz#b87a8aa4fc0de8fe6be88895b38983ff265bd119" - integrity sha512-fpoe2T0RbHwBTBUOftAfBPaDEi06ufaUai0mE6Yn1kacc3SnTErfb/h+X94VXzI64rKFHYImXSvdwGGCmwOqCA== - dependencies: - arr-diff "^4.0.0" - array-unique "^0.3.2" - define-property "^2.0.2" - extend-shallow "^3.0.2" - fragment-cache "^0.2.1" - is-windows "^1.0.2" - kind-of "^6.0.2" - object.pick "^1.3.0" - regex-not "^1.0.0" - snapdragon "^0.8.1" - to-regex "^3.0.1" - -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== - node-releases@^2.0.1: version "2.0.1" resolved "https://registry.yarnpkg.com/node-releases/-/node-releases-2.0.1.tgz#3d1d395f204f1f2f29a54358b9fb678765ad2fc5" @@ -2403,15 +1671,6 @@ nwsapi@^2.2.0: resolved "https://registry.yarnpkg.com/nwsapi/-/nwsapi-2.2.0.tgz#204879a9e3d068ff2a55139c2c772780681a38b7" integrity sha512-h2AatdwYH+JHiZpv7pt/gSX1XoRGb7L/qSIeuqA6GwYoF9w1vP1cw42TO0aI2pNyshRK5893hNSl+1//vHK7hQ== -object-copy@^0.1.0: - version "0.1.0" - resolved "https://registry.yarnpkg.com/object-copy/-/object-copy-0.1.0.tgz#7e7d858b781bd7c991a41ba975ed3812754e998c" - integrity sha1-fn2Fi3gb18mRpBupde04EnVOmYw= - dependencies: - copy-descriptor "^0.1.0" - define-property "^0.2.5" - kind-of "^3.0.3" - object-keys@~0.2.0: version "0.2.0" resolved "https://registry.yarnpkg.com/object-keys/-/object-keys-0.2.0.tgz#cddec02998b091be42bf1035ae32e49f1cb6ea67" @@ -2426,20 +1685,6 @@ object-keys@~0.4.0: resolved "https://registry.yarnpkg.com/object-keys/-/object-keys-0.4.0.tgz#28a6aae7428dd2c3a92f3d95f21335dd204e0336" integrity sha1-KKaq50KN0sOpLz2V8hM13SBOAzY= -object-visit@^1.0.0: - version "1.0.1" - resolved "https://registry.yarnpkg.com/object-visit/-/object-visit-1.0.1.tgz#f79c4493af0c5377b59fe39d395e41042dd045bb" - integrity sha1-95xEk68MU3e1n+OdOV5BBC3QRbs= - dependencies: - isobject "^3.0.0" - -object.pick@^1.3.0: - version "1.3.0" - resolved "https://registry.yarnpkg.com/object.pick/-/object.pick-1.3.0.tgz#87a10ac4c1694bd2e1cbf53591a66141fb5dd747" - integrity sha1-h6EKxMFpS9Lhy/U1kaZhQftd10c= - dependencies: - isobject "^3.0.1" - octal@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/octal/-/octal-1.0.0.tgz#63e7162a68efbeb9e213588d58e989d1e5c4530b" @@ -2500,11 +1745,6 @@ parse5@6.0.1: resolved "https://registry.yarnpkg.com/parse5/-/parse5-6.0.1.tgz#e1a1c085c569b3dc08321184f19a39cc27f7c30b" integrity sha512-Ofn/CTFzRGTTxwpNEs9PP93gXShHcTq255nzRYSKe8AkVpZY7e1fpmTfOyoIvjP5HG7Z2ZM7VS9PPhQGW2pOpw== -pascalcase@^0.1.1: - version "0.1.1" - resolved "https://registry.yarnpkg.com/pascalcase/-/pascalcase-0.1.1.tgz#b363e55e8006ca6fe21784d2db22bd15d7917f14" - integrity sha1-s2PlXoAGym/iF4TS2yK9FdeRfxQ= - path-is-absolute@^1.0.0: version "1.0.1" resolved "https://registry.yarnpkg.com/path-is-absolute/-/path-is-absolute-1.0.1.tgz#174b9268735534ffbc7ace6bf53a5a9e1b5c5f5f" @@ -2541,11 +1781,6 @@ pify@^5.0.0: resolved "https://registry.yarnpkg.com/pify/-/pify-5.0.0.tgz#1f5eca3f5e87ebec28cc6d54a0e4aaf00acc127f" integrity sha512-eW/gHNMlxdSP6dmG6uJip6FXN0EQBwm2clYYd8Wul42Cwu/DK8HEftzsapcNdYe2MfLiIwZqsDk2RDEsTE79hA== -posix-character-classes@^0.1.0: - version "0.1.1" - resolved "https://registry.yarnpkg.com/posix-character-classes/-/posix-character-classes-0.1.1.tgz#01eac0fe3b5af71a2a6c02feabb8c1fef7e00eab" - integrity sha1-AerA/jta9xoqbAL+q7jB/vfgDqs= - postcss-calc@^8.0.0: version "8.0.0" resolved "https://registry.yarnpkg.com/postcss-calc/-/postcss-calc-8.0.0.tgz#a05b87aacd132740a5db09462a3612453e5df90a" @@ -2900,7 +2135,7 @@ readable-stream@^1.0.26-4: isarray "0.0.1" string_decoder "~0.10.x" -readable-stream@^2.2.2, readable-stream@~2.3.6: +readable-stream@^2.2.2: 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== @@ -2932,14 +2167,6 @@ readable-stream@~1.0.26, readable-stream@~1.0.26-4: isarray "0.0.1" string_decoder "~0.10.x" -regex-not@^1.0.0, regex-not@^1.0.2: - version "1.0.2" - resolved "https://registry.yarnpkg.com/regex-not/-/regex-not-1.0.2.tgz#1f4ece27e00b0b65e0247a6810e6a85d83a5752c" - integrity sha512-J6SDjUgDxQj5NusnOtdFxDwN/+HWykR8GELwctJ7mdqhcyy1xEc4SRFHUXvxTp661YaVKAjfRLZ9cCqS6tn32A== - dependencies: - extend-shallow "^3.0.2" - safe-regex "^1.1.0" - regexparam@2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/regexparam/-/regexparam-2.0.0.tgz#059476767d5f5f87f735fc7922d133fd1a118c8c" @@ -2950,31 +2177,6 @@ regexparam@^1.3.0: resolved "https://registry.yarnpkg.com/regexparam/-/regexparam-1.3.0.tgz#2fe42c93e32a40eff6235d635e0ffa344b92965f" integrity sha512-6IQpFBv6e5vz1QAqI+V4k8P2e/3gRrqfCJ9FI+O1FLQTO+Uz6RXZEZOPmTJ6hlGj7gkERzY5BRCv09whKP96/g== -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" - -repeat-element@^1.1.2: - version "1.1.4" - resolved "https://registry.yarnpkg.com/repeat-element/-/repeat-element-1.1.4.tgz#be681520847ab58c7568ac75fbfad28ed42d39e9" - integrity sha512-LFiNfRcSu7KK3evMyYOuCzv3L10TW7yC1G2/+StMjK8Y6Vqd2MG7r/Qjw4ghtuCOjFvlnms/iMmLqpvW/ES/WQ== - -repeat-string@^1.6.1: - version "1.6.1" - resolved "https://registry.yarnpkg.com/repeat-string/-/repeat-string-1.6.1.tgz#8dcae470e1c88abc2d600fff4a776286da75e637" - integrity sha1-jcrkcOHIirwtYA//Sndihtp15jc= - require-relative@^0.8.7: version "0.8.7" resolved "https://registry.yarnpkg.com/require-relative/-/require-relative-0.8.7.tgz#7999539fc9e047a37928fa196f8e1563dabd36de" @@ -2985,11 +2187,6 @@ resolve-from@^5.0.0: resolved "https://registry.yarnpkg.com/resolve-from/-/resolve-from-5.0.0.tgz#c35225843df8f776df21c57557bc087e9dfdfc69" integrity sha512-qYg9KP24dD5qka9J47d0aVky0N+b4fTU89LN9iDnjB5waksiC49rvMB0PrUJQGoTmH50XPiqOvAjDfaijGxYZw== -resolve-url@^0.2.1: - version "0.2.1" - resolved "https://registry.yarnpkg.com/resolve-url/-/resolve-url-0.2.1.tgz#2c637fe77c893afd2a663fe21aa9080068e2052a" - integrity sha1-LGN/53yJOv0qZj/iGqkIAGjiBSo= - resolve@^1.17.0, resolve@^1.19.0: version "1.20.0" resolved "https://registry.yarnpkg.com/resolve/-/resolve-1.20.0.tgz#629a013fb3f70755d6f0b7935cc1c2c5378b1975" @@ -2998,11 +2195,6 @@ resolve@^1.17.0, resolve@^1.19.0: is-core-module "^2.2.0" path-parse "^1.0.6" -ret@~0.1.10: - version "0.1.15" - resolved "https://registry.yarnpkg.com/ret/-/ret-0.1.15.tgz#b8a4825d5bdb1fc3f6f53c2bc33f81388681c7bc" - integrity sha512-TTlYpa+OL+vMMNG24xSlQGEJ3B/RzEfUlLct7b5G/ytav+wPrplCpVMFuwzXbkecJrb6IYo1iFb0S9v37754mg== - ripemd160@^2.0.0, ripemd160@^2.0.1: version "2.0.2" resolved "https://registry.yarnpkg.com/ripemd160/-/ripemd160-2.0.2.tgz#a1c1a6f624751577ba5d07914cbc92850585890c" @@ -3121,13 +2313,6 @@ safe-identifier@^0.4.2: resolved "https://registry.yarnpkg.com/safe-identifier/-/safe-identifier-0.4.2.tgz#cf6bfca31c2897c588092d1750d30ef501d59fcb" integrity sha512-6pNbSMW6OhAi9j+N8V+U715yBQsaWJ7eyEUaOrawX+isg5ZxhUlV1NipNtgaKHmFGiABwt+ZF04Ii+3Xjkg+8w== -safe-regex@^1.1.0: - version "1.1.0" - resolved "https://registry.yarnpkg.com/safe-regex/-/safe-regex-1.1.0.tgz#40a3669f3b077d1e943d44629e157dd48023bf2e" - integrity sha1-QKNmnzsHfR6UPURinhV91IAjvy4= - dependencies: - ret "~0.1.10" - "safer-buffer@>= 2.1.2 < 3", safer-buffer@^2.1.0: version "2.1.2" resolved "https://registry.yarnpkg.com/safer-buffer/-/safer-buffer-2.1.2.tgz#44fa161b0187b9549dd84bb91802f9bd8385cd6a" @@ -3140,11 +2325,6 @@ saxes@^5.0.1: dependencies: xmlchars "^2.2.0" -self-closing-tags@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/self-closing-tags/-/self-closing-tags-1.0.1.tgz#6c5fa497994bb826b484216916371accee490a5d" - integrity sha512-7t6hNbYMxM+VHXTgJmxwgZgLGktuXtVVD5AivWzNTdJBM4DBjnDKDzkf2SrNjihaArpeJYNjxkELBu1evI4lQA== - semver@~2.3.1: version "2.3.2" resolved "https://registry.yarnpkg.com/semver/-/semver-2.3.2.tgz#b9848f25d6cf36333073ec9ef8856d42f1233e52" @@ -3157,16 +2337,6 @@ serialize-javascript@^4.0.0: dependencies: randombytes "^2.1.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" - integrity sha512-JxHc1weCN68wRY0fhCoXpyK55m/XPHafOmK4UWD7m2CI14GMcFypt4w/0+NV5f/ZMby2F6S2wwA7fgynh9gWSw== - dependencies: - extend-shallow "^2.0.1" - is-extendable "^0.1.1" - is-plain-object "^2.0.3" - split-string "^3.0.1" - sha.js@^2.4.0, sha.js@^2.4.8: version "2.4.11" resolved "https://registry.yarnpkg.com/sha.js/-/sha.js-2.4.11.tgz#37a5cf0b81ecbc6943de109ba2960d1b26584ae7" @@ -3187,52 +2357,11 @@ slash@^3.0.0: resolved "https://registry.yarnpkg.com/slash/-/slash-3.0.0.tgz#6539be870c165adbd5240220dbe361f1bc4d4634" integrity sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q== -snapdragon-node@^2.0.1: - version "2.1.1" - resolved "https://registry.yarnpkg.com/snapdragon-node/-/snapdragon-node-2.1.1.tgz#6c175f86ff14bdb0724563e8f3c1b021a286853b" - integrity sha512-O27l4xaMYt/RSQ5TR3vpWCAB5Kb/czIcqUFOM/C4fYcLnbZUc1PkjTAMjof2pBWaSTwOUd6qUHcFGVGj7aIwnw== - dependencies: - define-property "^1.0.0" - isobject "^3.0.0" - snapdragon-util "^3.0.1" - -snapdragon-util@^3.0.1: - version "3.0.1" - resolved "https://registry.yarnpkg.com/snapdragon-util/-/snapdragon-util-3.0.1.tgz#f956479486f2acd79700693f6f7b805e45ab56e2" - integrity sha512-mbKkMdQKsjX4BAL4bRYTj21edOf8cN7XHdYUJEe+Zn99hVEYcMvKPct1IqNe7+AZPirn8BCDOQBHQZknqmKlZQ== - dependencies: - kind-of "^3.2.0" - -snapdragon@^0.8.1: - version "0.8.2" - resolved "https://registry.yarnpkg.com/snapdragon/-/snapdragon-0.8.2.tgz#64922e7c565b0e14204ba1aa7d6964278d25182d" - integrity sha512-FtyOnWN/wCHTVXOMwvSv26d+ko5vWlIDD6zoUJ7LW8vh+ZBC8QdljveRP+crNrtBwioEUWy/4dMtbBjA4ioNlg== - dependencies: - base "^0.11.1" - debug "^2.2.0" - define-property "^0.2.5" - extend-shallow "^2.0.1" - map-cache "^0.2.2" - source-map "^0.5.6" - source-map-resolve "^0.5.0" - use "^3.1.0" - source-map-js@^0.6.2: version "0.6.2" resolved "https://registry.yarnpkg.com/source-map-js/-/source-map-js-0.6.2.tgz#0bb5de631b41cfbda6cfba8bd05a80efdfd2385e" integrity sha512-/3GptzWzu0+0MBQFrDKzw/DvvMTUORvgY6k6jd/VS6iCR4RDTKWH6v6WPwQoUO8667uQEf9Oe38DxAYWY5F/Ug== -source-map-resolve@^0.5.0: - version "0.5.3" - resolved "https://registry.yarnpkg.com/source-map-resolve/-/source-map-resolve-0.5.3.tgz#190866bece7553e1f8f267a2ee82c606b5509a1a" - integrity sha512-Htz+RnsXWk5+P2slx5Jh3Q66vhQj1Cllm0zvnaY98+NFx+Dv2CF/f5O/t8x+KaNdrdIAsruNzoh/KpialbqAnw== - dependencies: - atob "^2.1.2" - decode-uri-component "^0.2.0" - resolve-url "^0.2.1" - source-map-url "^0.4.0" - urix "^0.1.0" - source-map-support@~0.5.20: version "0.5.20" resolved "https://registry.yarnpkg.com/source-map-support/-/source-map-support-0.5.20.tgz#12166089f8f5e5e8c56926b377633392dd2cb6c9" @@ -3241,16 +2370,6 @@ source-map-support@~0.5.20: buffer-from "^1.0.0" source-map "^0.6.0" -source-map-url@^0.4.0: - version "0.4.1" - resolved "https://registry.yarnpkg.com/source-map-url/-/source-map-url-0.4.1.tgz#0af66605a745a5a2f91cf1bbf8a7afbc283dec56" - integrity sha512-cPiFOTLUKvJFIg4SKVScy4ilPPW6rFgMgfuZJPNoDuMs3nC1HbMUycBoJw77xFIp6z1UJQJOfx6C9GMH80DiTw== - -source-map@^0.5.6: - version "0.5.7" - resolved "https://registry.yarnpkg.com/source-map/-/source-map-0.5.7.tgz#8a039d2d1021d22d1ea14c80d8ea468ba2ef3fcc" - integrity sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w= - source-map@^0.6.0, source-map@^0.6.1, source-map@~0.6.1: version "0.6.1" resolved "https://registry.yarnpkg.com/source-map/-/source-map-0.6.1.tgz#74722af32e9614e9c287a8d0bbde48b5e2f1a263" @@ -3266,31 +2385,11 @@ sourcemap-codec@^1.4.4: resolved "https://registry.yarnpkg.com/sourcemap-codec/-/sourcemap-codec-1.4.8.tgz#ea804bd94857402e6992d05a38ef1ae35a9ab4c4" integrity sha512-9NykojV5Uih4lgo5So5dtw+f0JgJX30KCNI8gwhz2J9A15wD0Ml6tjHKwf6fTSa6fAdVBdZeNOs9eJ71qCk8vA== -split-string@^3.0.1, split-string@^3.0.2: - version "3.1.0" - resolved "https://registry.yarnpkg.com/split-string/-/split-string-3.1.0.tgz#7cb09dda3a86585705c64b39a6466038682e8fe2" - integrity sha512-NzNVhJDYpwceVVii8/Hu6DKfD2G+NrQHlS/V/qgv763EYudVwEcMQNxd2lh+0VrUByXN/oJkl5grOhYWvQUYiw== - dependencies: - extend-shallow "^3.0.0" - -sprintf-js@~1.0.2: - version "1.0.3" - resolved "https://registry.yarnpkg.com/sprintf-js/-/sprintf-js-1.0.3.tgz#04e6926f662895354f3dd015203633b857297e2c" - integrity sha1-BOaSb2YolTVPPdAVIDYzuFcpfiw= - stable@^0.1.8: version "0.1.8" resolved "https://registry.yarnpkg.com/stable/-/stable-0.1.8.tgz#836eb3c8382fe2936feaf544631017ce7d47a3cf" integrity sha512-ji9qxRnOVfcuLDySj9qzhGSEFVobyt1kIOSkj1qZzYLzq7Tos/oUUWvotUPQLlrsidqsK6tBH89Bc9kL5zHA6w== -static-extend@^0.1.1: - version "0.1.2" - resolved "https://registry.yarnpkg.com/static-extend/-/static-extend-0.1.2.tgz#60809c39cbff55337226fd5e0b520f341f1fb5c6" - integrity sha1-YICcOcv/VTNyJv1eC1IPNB8ftcY= - dependencies: - define-property "^0.2.5" - object-copy "^0.1.0" - string-hash@^1.1.1: version "1.1.3" resolved "https://registry.yarnpkg.com/string-hash/-/string-hash-1.1.3.tgz#e8aafc0ac1855b4666929ed7dd1275df5d6c811b" @@ -3313,11 +2412,6 @@ string_decoder@~0.10.x: resolved "https://registry.yarnpkg.com/string_decoder/-/string_decoder-0.10.31.tgz#62e203bc41766c6c28c9fc84301dab1c5310fa94" integrity sha1-YuIDvEF2bGwoyfyEMB2rHFMQ+pQ= -striptags@^3.1.1: - version "3.2.0" - resolved "https://registry.yarnpkg.com/striptags/-/striptags-3.2.0.tgz#cc74a137db2de8b0b9a370006334161f7dd67052" - integrity sha512-g45ZOGzHDMe2bdYMdIvdAfCQkCTDMGBazSw1ypMowwGIee7ZQ5dU0rBJ8Jqgl+jAKIv4dbeE1jscZq9wid1Tkw== - style-inject@^0.3.0: version "0.3.0" resolved "https://registry.yarnpkg.com/style-inject/-/style-inject-0.3.0.tgz#d21c477affec91811cc82355832a700d22bf8dd3" @@ -3458,49 +2552,11 @@ terser@^5.0.0: source-map "~0.7.2" source-map-support "~0.5.20" -through2@^2.0.0: - version "2.0.5" - resolved "https://registry.yarnpkg.com/through2/-/through2-2.0.5.tgz#01c1e39eb31d07cb7d03a96a70823260b23132cd" - integrity sha512-/mrRod8xqpA+IHSLyGCQ2s8SPHiCDEeQJSep1jqLYeEUClOFG2Qsh+4FU6G9VeqpZnGW/Su8LQGc4YKni5rYSQ== - dependencies: - readable-stream "~2.3.6" - xtend "~4.0.1" - timsort@^0.3.0: version "0.3.0" resolved "https://registry.yarnpkg.com/timsort/-/timsort-0.3.0.tgz#405411a8e7e6339fe64db9a234de11dc31e02bd4" integrity sha1-QFQRqOfmM5/mTbmiNN4R3DHgK9Q= -to-gfm-code-block@^0.1.1: - version "0.1.1" - resolved "https://registry.yarnpkg.com/to-gfm-code-block/-/to-gfm-code-block-0.1.1.tgz#25d045a5fae553189e9637b590900da732d8aa82" - integrity sha1-JdBFpfrlUxielje1kJANpzLYqoI= - -to-object-path@^0.3.0: - version "0.3.0" - resolved "https://registry.yarnpkg.com/to-object-path/-/to-object-path-0.3.0.tgz#297588b7b0e7e0ac08e04e672f85c1f4999e17af" - integrity sha1-KXWIt7Dn4KwI4E5nL4XB9JmeF68= - dependencies: - kind-of "^3.0.2" - -to-regex-range@^2.1.0: - version "2.1.1" - resolved "https://registry.yarnpkg.com/to-regex-range/-/to-regex-range-2.1.1.tgz#7c80c17b9dfebe599e27367e0d4dd5590141db38" - integrity sha1-fIDBe53+vlmeJzZ+DU3VWQFB2zg= - dependencies: - is-number "^3.0.0" - repeat-string "^1.6.1" - -to-regex@^3.0.1, to-regex@^3.0.2: - version "3.0.2" - resolved "https://registry.yarnpkg.com/to-regex/-/to-regex-3.0.2.tgz#13cfdd9b336552f30b51f33a8ae1b42a7a7599ce" - integrity sha512-FWtleNAtZ/Ki2qtqej2CXTOayOH9bHDQF+Q48VpWyDXjbYxA4Yz8iDB31zXOBUlOHHKidDbqGVrTUvQMPmBGBw== - dependencies: - define-property "^2.0.2" - extend-shallow "^3.0.2" - regex-not "^1.0.2" - safe-regex "^1.1.0" - tough-cookie@^4.0.0: version "4.0.0" resolved "https://registry.yarnpkg.com/tough-cookie/-/tough-cookie-4.0.0.tgz#d822234eeca882f991f0f908824ad2622ddbece4" @@ -3534,51 +2590,11 @@ 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.14.3" - resolved "https://registry.yarnpkg.com/uglify-js/-/uglify-js-3.14.3.tgz#c0f25dfea1e8e5323eccf59610be08b6043c15cf" - integrity sha512-mic3aOdiq01DuSVx0TseaEzMIVqebMZ0Z3vaeDhFEh9bsc24hV1TFvN74reA2vs08D0ZWfNjAcJ3UbVLaBss+g== - -union-value@^1.0.0: - version "1.0.1" - resolved "https://registry.yarnpkg.com/union-value/-/union-value-1.0.1.tgz#0b6fe7b835aecda61c6ea4d4f02c14221e109847" - integrity sha512-tJfXmxMeWYnczCVs7XAEvIV7ieppALdyepWMkHkwciRpZraG/xwT+s2JN8+pr1+8jCRf80FFzvr+MpQeeoF4Xg== - dependencies: - arr-union "^3.1.0" - get-value "^2.0.6" - is-extendable "^0.1.1" - set-value "^2.0.1" - universalify@^0.1.0, universalify@^0.1.2: version "0.1.2" resolved "https://registry.yarnpkg.com/universalify/-/universalify-0.1.2.tgz#b646f69be3942dabcecc9d6639c80dc105efaa66" integrity sha512-rBJeI5CXAlmy1pV+617WB9J63U6XcazHHF2f2dbJix4XzpUF0RS3Zbj0FGIOCAva5P/d/GBOYaACQ1w+0azUkg== -unset-value@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/unset-value/-/unset-value-1.0.0.tgz#8376873f7d2335179ffb1e6fc3a8ed0dfc8ab559" - integrity sha1-g3aHP30jNRef+x5vw6jtDfyKtVk= - dependencies: - has-value "^0.3.1" - isobject "^3.0.0" - -urix@^0.1.0: - version "0.1.0" - resolved "https://registry.yarnpkg.com/urix/-/urix-0.1.0.tgz#da937f7a62e21fec1fd18d49b35c2935067a6c72" - integrity sha1-2pN/emLiH+wf0Y1Js1wpNQZ6bHI= - -use@^3.1.0: - version "3.1.1" - resolved "https://registry.yarnpkg.com/use/-/use-3.1.1.tgz#d50c8cac79a19fbc20f2911f56eb973f4e10070f" - integrity sha512-cwESVXlO3url9YWlFW/TA9cshCEhtu7IKJ/p5soJ/gGpj7vbvFrAY/eIioQ6Dw23KjZhYgiIo8HOs1nQ2vr/oQ== - util-deprecate@^1.0.1, util-deprecate@^1.0.2, util-deprecate@~1.0.1: version "1.0.2" resolved "https://registry.yarnpkg.com/util-deprecate/-/util-deprecate-1.0.2.tgz#450d4dc9fa70de732762fbd2d4a28981419a0ccf" @@ -3589,11 +2605,6 @@ vlq@^0.2.2: resolved "https://registry.yarnpkg.com/vlq/-/vlq-0.2.3.tgz#8f3e4328cf63b1540c0d67e1b2778386f8975b26" integrity sha512-DRibZL6DsNhIgYQ+wNdWDL2SL3bKPlVrRiBqV5yuMm++op8W4kGFtaQfCs4KEJn0wBZcHVHJ3eoywX8983k1ow== -vm2@^3.9.4: - version "3.9.5" - resolved "https://registry.yarnpkg.com/vm2/-/vm2-3.9.5.tgz#5288044860b4bbace443101fcd3bddb2a0aa2496" - integrity sha512-LuCAHZN75H9tdrAiLFf030oW7nJV5xwNMuk1ymOZwopmuK3d2H4L1Kv4+GFHgarKiLfXXLFU+7LDABHnwOkWng== - w3c-hr-time@^1.0.2: version "1.0.2" resolved "https://registry.yarnpkg.com/w3c-hr-time/-/w3c-hr-time-1.0.2.tgz#0a89cdf5cc15822df9c360543676963e0cc308cd" @@ -3644,11 +2655,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= - wrappy@1: version "1.0.2" resolved "https://registry.yarnpkg.com/wrappy/-/wrappy-1.0.2.tgz#b5243d8f3ec1aa35f1364605bc0d1036e30ab69f" @@ -3694,17 +2700,7 @@ xtend@~3.0.0: resolved "https://registry.yarnpkg.com/xtend/-/xtend-3.0.0.tgz#5cce7407baf642cba7becda568111c493f59665a" integrity sha1-XM50B7r2Qsunvs2laBEcST9ZZlo= -xtend@~4.0.1: - version "4.0.2" - resolved "https://registry.yarnpkg.com/xtend/-/xtend-4.0.2.tgz#bb72779f5fa465186b1f438f674fa347fdb5db54" - integrity sha512-LKYU1iAXJXUgAXn9URjiu+MWhyUXHsvfp7mcuYm9dSUKK0/CjtrUwFAxD82/mCWbtLsGjFIad0wIsod4zrTAEQ== - yaml@^1.10.2: version "1.10.2" resolved "https://registry.yarnpkg.com/yaml/-/yaml-1.10.2.tgz#2301c5ffbf12b467de8da2333a459e29e7920e4b" integrity sha512-r3vXyErRCYJ7wg28yvBY5VSoAF8ZvlcW9/BwUzEtUsjvX/DKs24dIkuwjtuprwJJHsbyUbLApepYTR1BN4uHrg== - -year@^0.2.1: - version "0.2.1" - resolved "https://registry.yarnpkg.com/year/-/year-0.2.1.tgz#4083ae520a318b23ec86037f3000cb892bdf9bb0" - integrity sha1-QIOuUgoxiyPshgN/MADLiSvfm7A= diff --git a/packages/server/yarn.lock b/packages/server/yarn.lock index 32eabd7c4c..62dbcfe61a 100644 --- a/packages/server/yarn.lock +++ b/packages/server/yarn.lock @@ -951,30 +951,6 @@ resolved "https://registry.yarnpkg.com/@bcoe/v8-coverage/-/v8-coverage-0.2.3.tgz#75a2e8b51cb758a7553d6804a5932d7aace75c39" integrity sha512-0hYQ8SB4Db5zvZB4axdMHGwEaQjkZzFjQiN9LVYvIFB2nSUHW9tYpxWriPrWDASIxiaXax83REcLxuSdnGPZtw== -"@budibase/auth@^0.9.190-alpha.0": - version "0.9.190-alpha.1" - resolved "https://registry.yarnpkg.com/@budibase/auth/-/auth-0.9.190-alpha.1.tgz#b00c1db33a800dcb6c2ba321ee8a06e353c623e0" - integrity sha512-GXWyb69ueIGkEzwS2wm+JhJi9w5vFe82fUdXRkV3QeTwFwyKuYnwCiulIvVDfi1yBhyGF1CpbsZRS1zkHD1rZA== - dependencies: - "@techpass/passport-openidconnect" "^0.3.0" - aws-sdk "^2.901.0" - bcryptjs "^2.4.3" - cls-hooked "^4.2.2" - ioredis "^4.27.1" - jsonwebtoken "^8.5.1" - koa-passport "^4.1.4" - lodash "^4.17.21" - lodash.isarguments "^3.1.0" - node-fetch "^2.6.1" - passport-google-auth "^1.0.2" - passport-google-oauth "^2.0.0" - passport-jwt "^4.0.0" - passport-local "^1.0.0" - sanitize-s3-objectkey "^0.0.1" - tar-fs "^2.1.1" - uuid "^8.3.2" - zlib "^1.0.5" - "@budibase/bbui@^0.9.139": version "0.9.187" resolved "https://registry.yarnpkg.com/@budibase/bbui/-/bbui-0.9.187.tgz#84f0a37301cfa41f50eaa335243ac08923d9e34f" @@ -1024,95 +1000,6 @@ svelte-flatpickr "^3.2.3" svelte-portal "^1.0.0" -"@budibase/bbui@^0.9.190-alpha.1": - version "0.9.190-alpha.1" - resolved "https://registry.yarnpkg.com/@budibase/bbui/-/bbui-0.9.190-alpha.1.tgz#b7056840a63231d507cd4bfe915647c7727d8fc5" - integrity sha512-Vt6PwV0gmHcCPslZk8aScHsky3bh82XyRGZnbbbeABkhRdh6Bj/gqBpkDjBPevsOYWXc+xI/Hrq9pJrj+lHxpQ== - dependencies: - "@adobe/spectrum-css-workflow-icons" "^1.2.1" - "@spectrum-css/actionbutton" "^1.0.1" - "@spectrum-css/actiongroup" "^1.0.1" - "@spectrum-css/avatar" "^3.0.2" - "@spectrum-css/button" "^3.0.1" - "@spectrum-css/buttongroup" "^3.0.2" - "@spectrum-css/checkbox" "^3.0.2" - "@spectrum-css/dialog" "^3.0.1" - "@spectrum-css/divider" "^1.0.3" - "@spectrum-css/dropzone" "^3.0.2" - "@spectrum-css/fieldgroup" "^3.0.2" - "@spectrum-css/fieldlabel" "^3.0.1" - "@spectrum-css/icon" "^3.0.1" - "@spectrum-css/illustratedmessage" "^3.0.2" - "@spectrum-css/inlinealert" "^2.0.1" - "@spectrum-css/inputgroup" "^3.0.2" - "@spectrum-css/label" "^2.0.10" - "@spectrum-css/link" "^3.1.1" - "@spectrum-css/menu" "^3.0.1" - "@spectrum-css/modal" "^3.0.1" - "@spectrum-css/pagination" "^3.0.3" - "@spectrum-css/picker" "^1.0.1" - "@spectrum-css/popover" "^3.0.1" - "@spectrum-css/progressbar" "^1.0.2" - "@spectrum-css/progresscircle" "^1.0.2" - "@spectrum-css/radio" "^3.0.2" - "@spectrum-css/search" "^3.0.2" - "@spectrum-css/sidenav" "^3.0.2" - "@spectrum-css/statuslight" "^3.0.2" - "@spectrum-css/stepper" "^3.0.3" - "@spectrum-css/switch" "^1.0.2" - "@spectrum-css/table" "^3.0.1" - "@spectrum-css/tabs" "^3.0.1" - "@spectrum-css/tags" "^3.0.2" - "@spectrum-css/textfield" "^3.0.1" - "@spectrum-css/toast" "^3.0.1" - "@spectrum-css/tooltip" "^3.0.3" - "@spectrum-css/treeview" "^3.0.2" - "@spectrum-css/typography" "^3.0.1" - "@spectrum-css/underlay" "^2.0.9" - "@spectrum-css/vars" "^3.0.1" - dayjs "^1.10.4" - svelte-flatpickr "^3.2.3" - svelte-portal "^1.0.0" - -"@budibase/client@^0.9.190-alpha.0": - version "0.9.190-alpha.1" - resolved "https://registry.yarnpkg.com/@budibase/client/-/client-0.9.190-alpha.1.tgz#e0a4eaead10b6fc9027e2e72c305404a7d787e75" - integrity sha512-llrwbsog/4iomSjuhx+vj0wfeIIzQEOEq07kalwb2vqyPFRU6PN4vTZNBr7Qt63L3z59pJ/vUb8zs9SGdkNp7g== - dependencies: - "@budibase/bbui" "^0.9.190-alpha.1" - "@budibase/standard-components" "^0.9.139" - "@budibase/string-templates" "^0.9.190-alpha.1" - regexparam "^1.3.0" - shortid "^2.2.15" - svelte-spa-router "^3.0.5" - -"@budibase/handlebars-helpers@^0.11.7": - version "0.11.7" - resolved "https://registry.yarnpkg.com/@budibase/handlebars-helpers/-/handlebars-helpers-0.11.7.tgz#8e5f9843d7dd10503e9f608555a96ccf4d836c46" - integrity sha512-PvGHAv22cWSFExs1kc0WglwsmCEUEOqWvSp6JCFZwtc3qAAr5yMfLK8WGVQ63ALvyzWZiyxF+yrlzeeaohCMJw== - dependencies: - array-sort "^1.0.0" - define-property "^2.0.2" - extend-shallow "^3.0.2" - for-in "^1.0.2" - get-object "^0.2.0" - get-value "^3.0.1" - handlebars "^4.7.7" - handlebars-utils "^1.0.6" - has-value "^2.0.2" - 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.1" - kind-of "^6.0.3" - micromatch "^3.1.5" - relative "^3.0.2" - striptags "^3.1.1" - to-gfm-code-block "^0.1.1" - year "^0.2.1" - "@budibase/standard-components@^0.9.139": version "0.9.139" resolved "https://registry.yarnpkg.com/@budibase/standard-components/-/standard-components-0.9.139.tgz#cf8e2b759ae863e469e50272b3ca87f2827e66e3" @@ -1131,18 +1018,6 @@ svelte-apexcharts "^1.0.2" svelte-flatpickr "^3.1.0" -"@budibase/string-templates@^0.9.190-alpha.0", "@budibase/string-templates@^0.9.190-alpha.1": - version "0.9.190-alpha.1" - resolved "https://registry.yarnpkg.com/@budibase/string-templates/-/string-templates-0.9.190-alpha.1.tgz#243f674f448225317b565933630c20b76dd16794" - integrity sha512-hXe4Hh2oFwWhqm4b/bFM82r6rr1ng1vb99ZdUkCPVWbBLUJKU+Hjnnt9bfsuupx+Ngw+TFT1N6GMZMsti5ySoQ== - dependencies: - "@budibase/handlebars-helpers" "^0.11.7" - dayjs "^1.10.4" - handlebars "^4.7.6" - handlebars-utils "^1.0.6" - lodash "^4.17.20" - vm2 "^3.9.4" - "@bull-board/api@3.7.0", "@bull-board/api@^3.7.0": version "3.7.0" resolved "https://registry.yarnpkg.com/@bull-board/api/-/api-3.7.0.tgz#231f687187c0cb34e0b97f463917b6aaeb4ef6af" @@ -2043,11 +1918,6 @@ resolved "https://registry.yarnpkg.com/@spectrum-css/illustratedmessage/-/illustratedmessage-3.0.8.tgz#69ef0c935bcc5027f233a78de5aeb0064bf033cb" integrity sha512-HvC4dywDi11GdrXQDCvKQ0vFlrXLTyJuc9UKf7meQLCGoJbGYDBwe+tHXNK1c6gPMD9BoL6pPMP1K/vRzR4EBQ== -"@spectrum-css/inlinealert@^2.0.1": - version "2.0.5" - resolved "https://registry.yarnpkg.com/@spectrum-css/inlinealert/-/inlinealert-2.0.5.tgz#76b50495c0ad0cd675d7df2f73fb0e9cd5cff4e9" - integrity sha512-Z37CDhoFX0cePjoyi5igRCi4/rIU7ETDpV8cwHjbTYj4IXpHmOCllxftncE8SJ3PZrQW2gB9mmXvfg+TBy3g2Q== - "@spectrum-css/inputgroup@^3.0.2": version "3.0.8" resolved "https://registry.yarnpkg.com/@spectrum-css/inputgroup/-/inputgroup-3.0.8.tgz#fc23afc8a73c24d17249c9d2337e8b42085b298b" @@ -2197,17 +2067,6 @@ dependencies: defer-to-connect "^1.0.1" -"@techpass/passport-openidconnect@^0.3.0": - version "0.3.2" - resolved "https://registry.yarnpkg.com/@techpass/passport-openidconnect/-/passport-openidconnect-0.3.2.tgz#f8fd5d97256286665dbf26dac92431f977ab1e63" - integrity sha512-fnCtEiexXSHA029B//hJcCJlLJrT3lhpNCyA0rnz58Qttz0BLGCVv6yMT8HmOnGThH6vcDOVwdgKM3kbCQtEhw== - dependencies: - base64url "^3.0.1" - oauth "^0.9.15" - passport-strategy "^1.0.0" - request "^2.88.0" - webfinger "^0.4.2" - "@tootallnate/once@1": version "1.1.2" resolved "https://registry.yarnpkg.com/@tootallnate/once/-/once-1.1.2.tgz#ccb91445360179a04e7fe6aff78c00ffc1eeaf82" @@ -3067,7 +2926,7 @@ arg@^4.1.0: resolved "https://registry.yarnpkg.com/arg/-/arg-4.1.3.tgz#269fc7ad5b8e42cb63c896d5666017261c144089" integrity sha512-58S9QDqG0Xx27YwPSt9fJxivjYl432YCwfDMfZ+71RAqUrZef7LrKQZ3LHLOwCS4FLNBplP533Zx895SeOCHvA== -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== @@ -3114,15 +2973,6 @@ array-equal@^1.0.0: resolved "https://registry.yarnpkg.com/array-equal/-/array-equal-1.0.0.tgz#8c2a5ef2472fd9ea742b04c77a75093ba2757c93" integrity sha1-jCpe8kcv2ep0KwTHenUJO6J1fJM= -array-sort@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/array-sort/-/array-sort-1.0.0.tgz#e4c05356453f56f53512a7d1d6123f2c54c0a88a" - integrity sha512-ihLeJkonmdiAsD7vpgN3CRcx2J2S0TiYW+IS/5zHBI7mKUq3ySvBdzzBfD236ubDBQFiiyG3SWCPc+msQ9KoYg== - dependencies: - default-compare "^1.0.0" - get-value "^2.0.6" - kind-of "^5.0.2" - array-union@^2.1.0: version "2.1.0" resolved "https://registry.yarnpkg.com/array-union/-/array-union-2.1.0.tgz#b798420adbeb1de828d84acd8a2e23d3efe85e8d" @@ -3165,13 +3015,6 @@ astral-regex@^1.0.0: resolved "https://registry.yarnpkg.com/astral-regex/-/astral-regex-1.0.0.tgz#6c8c3fb827dd43ee3918f27b82782ab7658a6fd9" integrity sha512-+Ryf6g3BKoRc7jfp7ad8tM4TtMiaWvbF/1/sQcZPkkS7ag3D5nMBCe2UfOTONtAkaG0tO0ij3C5Lwmf1EiyjHg== -async-hook-jl@^1.7.6: - version "1.7.6" - resolved "https://registry.yarnpkg.com/async-hook-jl/-/async-hook-jl-1.7.6.tgz#4fd25c2f864dbaf279c610d73bf97b1b28595e68" - integrity sha512-gFaHkFfSxTjvoxDMYqDuGHlcRyUuamF8s+ZTtJdDzqjws4mCt7v0vuV79/E2Wr2/riMQgtG4/yUtXWs1gZ7JMg== - dependencies: - stack-chain "^1.3.7" - async-limiter@~1.0.0: version "1.0.1" resolved "https://registry.yarnpkg.com/async-limiter/-/async-limiter-1.0.1.tgz#dd379e94f0db8310b08291f9d64c3209766617fd" @@ -3194,13 +3037,6 @@ async@^3.1.0: resolved "https://registry.yarnpkg.com/async/-/async-3.2.2.tgz#2eb7671034bb2194d45d30e31e24ec7e7f9670cd" integrity sha512-H0E+qZaDEfx/FY4t7iLRv1W2fFI6+pyCeTw1uN20AQPiwqwM6ojPxHxdLv4z8hi2DtnW9BOckSspLucW7pIE5g== -async@~2.1.4: - version "2.1.5" - resolved "https://registry.yarnpkg.com/async/-/async-2.1.5.tgz#e587c68580994ac67fc56ff86d3ac56bdbe810bc" - integrity sha1-5YfGhYCZSsZ/xW/4bTrFa9voELw= - dependencies: - lodash "^4.14.0" - asynckit@^0.4.0: version "0.4.0" resolved "https://registry.yarnpkg.com/asynckit/-/asynckit-0.4.0.tgz#c79ed97f7f34cb8f2ba1bc9790bcc366474b4b79" @@ -3216,13 +3052,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" - aws-sdk@^2.767.0: version "2.1030.0" resolved "https://registry.yarnpkg.com/aws-sdk/-/aws-sdk-2.1030.0.tgz#24a856af3d2b8b37c14a8f59974993661c66fd82" @@ -3238,21 +3067,6 @@ aws-sdk@^2.767.0: uuid "3.3.2" xml2js "0.4.19" -aws-sdk@^2.901.0: - version "2.1036.0" - resolved "https://registry.yarnpkg.com/aws-sdk/-/aws-sdk-2.1036.0.tgz#47f0d0a38b5bfbd4a7a382a6756a6aa7af627aad" - integrity sha512-K0f4uXL32ZdoPmWiuSQEAC5ae5v7gNmhjzoEB7VonE5E8l2umWsoU0Ahm8WPr14LgsvtkeyBuqBjphbxLz6hIw== - dependencies: - buffer "4.9.2" - events "1.1.1" - ieee754 "1.1.13" - jmespath "0.15.0" - querystring "0.2.0" - sax "1.2.1" - url "0.10.3" - uuid "3.3.2" - xml2js "0.4.19" - aws-sign2@~0.7.0: version "0.7.0" resolved "https://registry.yarnpkg.com/aws-sign2/-/aws-sign2-0.7.0.tgz#b46e890934a9591f2d2f6f86d7e6a9f1b3fe76a8" @@ -3435,11 +3249,6 @@ base64-js@^1.0.2, base64-js@^1.3.1: resolved "https://registry.yarnpkg.com/base64-js/-/base64-js-1.5.1.tgz#1b1b440160a5bf7ad40b650f095963481903930a" integrity sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA== -base64url@3.x.x, base64url@^3.0.1: - version "3.0.1" - resolved "https://registry.yarnpkg.com/base64url/-/base64url-3.0.1.tgz#6399d572e2bc3f90a9a8b22d5dbb0a32d33f788d" - integrity sha512-ir1UPr3dkwexU7FdV8qBBbNDRUhMmIekYMFZfi+C/sLNnRESKPl23nB9b2pltqfOQNnGzsDdId90AEtG5tCx4A== - base@^0.11.1: version "0.11.2" resolved "https://registry.yarnpkg.com/base/-/base-0.11.2.tgz#7bde5ced145b6d551a90db87f83c558b4eb48a8f" @@ -3460,7 +3269,7 @@ bcrypt-pbkdf@^1.0.0: dependencies: tweetnacl "^0.14.3" -bcryptjs@2.4.3, bcryptjs@^2.4.3: +bcryptjs@2.4.3: version "2.4.3" resolved "https://registry.yarnpkg.com/bcryptjs/-/bcryptjs-2.4.3.tgz#9ab5627b93e60621ff7cdac5da9733027df1d0cb" integrity sha1-mrVie5PmBiH/fNrF2pczAn3x0Ms= @@ -3505,15 +3314,6 @@ bl@^3.0.0: dependencies: readable-stream "^3.0.1" -bl@^4.0.3: - version "4.1.0" - resolved "https://registry.yarnpkg.com/bl/-/bl-4.1.0.tgz#451535264182bec2fbbc83a62ab98cf11d9f7b3a" - integrity sha512-1W07cM9gS6DcLperZfFSj+bWLtaPGSOHWhPiGzXmvVJbRLdG82sH/Kn8EtW1VqWVA54AKf2h5k5BbnIbwF3h6w== - dependencies: - buffer "^5.5.0" - inherits "^2.0.4" - readable-stream "^3.4.0" - bluebird@^3.5.1, bluebird@^3.7.2: version "3.7.2" resolved "https://registry.yarnpkg.com/bluebird/-/bluebird-3.7.2.tgz#9f229c15be272454ffa973ace0dbee79a1b0c36f" @@ -3856,11 +3656,6 @@ chokidar@^3.5.2: optionalDependencies: fsevents "~2.3.2" -chownr@^1.1.1: - version "1.1.4" - resolved "https://registry.yarnpkg.com/chownr/-/chownr-1.1.4.tgz#6fc9d7b42d32a583596337666e7d08084da2cc6b" - integrity sha512-jJ0bqzaylmJtVnNgzTeSOs8DPavpbYgEr/b0YL8/2GO3xJEhInFmhKMUnEJQjZumK7KXGFhUy89PrsJWlakBVg== - chrome-trace-event@^1.0.2: version "1.0.3" resolved "https://registry.yarnpkg.com/chrome-trace-event/-/chrome-trace-event-1.0.3.tgz#1015eced4741e15d06664a957dbbf50d041e26ac" @@ -3947,15 +3742,6 @@ clone-response@1.0.2, clone-response@^1.0.2: dependencies: mimic-response "^1.0.0" -cls-hooked@^4.2.2: - version "4.2.2" - resolved "https://registry.yarnpkg.com/cls-hooked/-/cls-hooked-4.2.2.tgz#ad2e9a4092680cdaffeb2d3551da0e225eae1908" - integrity sha512-J4Xj5f5wq/4jAvcdgoGsL3G103BtWpZrMo8NEinRltN+xpTZdI+M38pyQqhuFU/P792xkMFvnKSf+Lm81U1bxw== - dependencies: - async-hook-jl "^1.7.6" - emitter-listener "^1.0.1" - semver "^5.4.1" - cluster-key-slot@^1.1.0: version "1.1.0" resolved "https://registry.yarnpkg.com/cluster-key-slot/-/cluster-key-slot-1.1.0.tgz#30474b2a981fb12172695833052bc0d01336d10d" @@ -4106,13 +3892,6 @@ concat-map@0.0.1: resolved "https://registry.yarnpkg.com/concat-map/-/concat-map-0.0.1.tgz#d8a96bd77fd68df7793a73036a3ba0d5405d477b" integrity sha1-2Klr13/Wjfd5OnMDajug1UBdR3s= -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" - condense-newlines@^0.2.1: version "0.2.1" resolved "https://registry.yarnpkg.com/condense-newlines/-/condense-newlines-0.2.1.tgz#3de985553139475d32502c83b02f60684d24c55f" @@ -4346,13 +4125,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" @@ -4496,13 +4268,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" @@ -4772,13 +4537,6 @@ electron-to-chromium@^1.3.896: resolved "https://registry.yarnpkg.com/electron-to-chromium/-/electron-to-chromium-1.3.900.tgz#5be2c5818a2a012c511b4b43e87b6ab7a296d4f5" integrity sha512-SuXbQD8D4EjsaBaJJxySHbC+zq8JrFfxtb4GIr4E9n1BcROyMcRrJCYQNpJ9N+Wjf5mFp7Wp0OHykd14JNEzzQ== -emitter-listener@^1.0.1: - version "1.1.2" - resolved "https://registry.yarnpkg.com/emitter-listener/-/emitter-listener-1.1.2.tgz#56b140e8f6992375b3d7cb2cab1cc7432d9632e8" - integrity sha512-Bt1sBAGFHY9DKY+4/2cV6izcKJUf5T7/gkdmkxzX/qv9CcGH8xSwVRW5mtX03SWJtRTWSOpzCuWN9rBFYZepZQ== - dependencies: - shimmer "^1.2.0" - emittery@^0.8.1: version "0.8.1" resolved "https://registry.yarnpkg.com/emittery/-/emittery-0.8.1.tgz#bb23cc86d03b30aa75a7f734819dee2e1ba70860" @@ -4819,7 +4577,7 @@ encoding-down@^6.3.0: level-codec "^9.0.0" level-errors "^2.0.0" -end-of-stream@^1.0.0, end-of-stream@^1.1.0, end-of-stream@^1.4.1: +end-of-stream@^1.0.0, end-of-stream@^1.1.0: version "1.4.4" resolved "https://registry.yarnpkg.com/end-of-stream/-/end-of-stream-1.4.4.tgz#5ae64a5f45057baf3626ec14da0ca5e4b2431eb0" integrity sha512-+uw1inIHVPQoaVuHzRyXd21icM+cnt4CzD5rW+NC1wjOUSTOs+Te7FOv7AhN7vS9x/oIyhLP5PR1H+phQAHu5Q== @@ -4841,11 +4599,6 @@ enhanced-resolve@^5.8.3: graceful-fs "^4.2.4" tapable "^2.2.0" -ent@^2.2.0: - version "2.2.0" - resolved "https://registry.yarnpkg.com/ent/-/ent-2.2.0.tgz#e964219325a21d05f44466a2f686ed6ce5f5dd1d" - integrity sha1-6WQhkyWiHQX0RGai9obtbOX13R0= - entities@~2.1.0: version "2.1.0" resolved "https://registry.yarnpkg.com/entities/-/entities-2.1.0.tgz#992d3129cf7df6870b96c57858c249a120f8b8b5" @@ -5766,11 +5519,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" @@ -5843,14 +5591,6 @@ get-intrinsic@^1.0.2, get-intrinsic@^1.1.0, get-intrinsic@^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-package-type@^0.1.0: version "0.1.0" resolved "https://registry.yarnpkg.com/get-package-type/-/get-package-type-0.1.0.tgz#8de2d803cff44df3bc6c456e6668b36c3926e11a" @@ -5913,13 +5653,6 @@ get-value@^2.0.3, get-value@^2.0.6: resolved "https://registry.yarnpkg.com/get-value/-/get-value-2.0.6.tgz#dc15ca1c672387ca76bd37ac0a395ba2042a2c28" integrity sha1-3BXKHGcjh8p2vTesCjlbogQqLCg= -get-value@^3.0.0, get-value@^3.0.1: - version "3.0.1" - resolved "https://registry.yarnpkg.com/get-value/-/get-value-3.0.1.tgz#5efd2a157f1d6a516d7524e124ac52d0a39ef5a8" - integrity sha512-mKZj9JLQrwMBtj5wxi6MH8Z5eSKaERpAwjg43dPtlGI1ZVEgH/qC7T8/6R2OBSUA+zzHBZgICsVJaEIV2tKTDA== - dependencies: - isobject "^3.0.1" - getopts@2.2.5: version "2.2.5" resolved "https://registry.yarnpkg.com/getopts/-/getopts-2.2.5.tgz#67a0fe471cacb9c687d817cab6450b96dde8313b" @@ -6014,32 +5747,6 @@ globby@^11.0.3: merge2 "^1.3.0" slash "^3.0.0" -google-auth-library@~0.10.0: - version "0.10.0" - resolved "https://registry.yarnpkg.com/google-auth-library/-/google-auth-library-0.10.0.tgz#6e15babee85fd1dd14d8d128a295b6838d52136e" - integrity sha1-bhW6vuhf0d0U2NEoopW2g41SE24= - dependencies: - gtoken "^1.2.1" - jws "^3.1.4" - lodash.noop "^3.0.1" - request "^2.74.0" - -google-p12-pem@^0.1.0: - version "0.1.2" - resolved "https://registry.yarnpkg.com/google-p12-pem/-/google-p12-pem-0.1.2.tgz#33c46ab021aa734fa0332b3960a9a3ffcb2f3177" - integrity sha1-M8RqsCGqc0+gMys5YKmj/8svMXc= - dependencies: - node-forge "^0.7.1" - -googleapis@^16.0.0: - version "16.1.0" - resolved "https://registry.yarnpkg.com/googleapis/-/googleapis-16.1.0.tgz#0f19f2d70572d918881a0f626e3b1a2fa8629576" - integrity sha1-Dxny1wVy2RiIGg9ibjsaL6hilXY= - dependencies: - async "~2.1.4" - google-auth-library "~0.10.0" - string-template "~1.0.0" - got@^8.3.1: version "8.3.2" resolved "https://registry.yarnpkg.com/got/-/got-8.3.2.tgz#1d23f64390e97f776cac52e5b936e5f514d2e937" @@ -6085,34 +5792,7 @@ graceful-fs@^4.1.10, graceful-fs@^4.1.11, graceful-fs@^4.1.15, graceful-fs@^4.1. resolved "https://registry.yarnpkg.com/graceful-fs/-/graceful-fs-4.2.8.tgz#e412b8d33f5e006593cbd3cee6df9f2cebbe802a" integrity sha512-qkIilPUYcNhJpd33n0GBXTB1MMPp14TxEsEs0pTrsSVucApsYzW5V+Q8Qxhik6KU3evy+qkAAowTByymK0avdg== -gtoken@^1.2.1: - version "1.2.3" - resolved "https://registry.yarnpkg.com/gtoken/-/gtoken-1.2.3.tgz#5509571b8afd4322e124cf66cf68115284c476d8" - integrity sha512-wQAJflfoqSgMWrSBk9Fg86q+sd6s7y6uJhIvvIPz++RElGlMtEqsdAR2oWwZ/WTEtp7P9xFbJRrT976oRgzJ/w== - dependencies: - google-p12-pem "^0.1.0" - jws "^3.0.0" - mime "^1.4.1" - request "^2.72.0" - -gulp-header@^1.7.1: - version "1.8.12" - resolved "https://registry.yarnpkg.com/gulp-header/-/gulp-header-1.8.12.tgz#ad306be0066599127281c4f8786660e705080a84" - integrity sha512-lh9HLdb53sC7XIZOYzTXM4lFuXElv3EVkSDhsd7DoJBj7hm+Ni7D3qYbb+Rr8DuM8nRanBvkVO9d7askreXGnQ== - dependencies: - concat-with-sourcemaps "*" - lodash.template "^4.4.0" - through2 "^2.0.0" - -handlebars-utils@^1.0.2, handlebars-utils@^1.0.4, handlebars-utils@^1.0.6: - version "1.0.6" - resolved "https://registry.yarnpkg.com/handlebars-utils/-/handlebars-utils-1.0.6.tgz#cb9db43362479054782d86ffe10f47abc76357f9" - integrity sha512-d5mmoQXdeEqSKMtQQZ9WkiUcO1E3tPbWxluCK9hVgIDPzQa9WsKo3Lbe/sGflTe7TomHEeZaOgwIkyIr1kfzkw== - dependencies: - kind-of "^6.0.0" - typeof-article "^0.1.1" - -handlebars@^4.7.6, handlebars@^4.7.7: +handlebars@^4.7.7: version "4.7.7" resolved "https://registry.yarnpkg.com/handlebars/-/handlebars-4.7.7.tgz#9ce33416aad02dbd6c8fafa8240d5d98004945a1" integrity sha512-aAcXm5OAfE/8IXkcZvCepKU3VzW1/39Fb5ZuqMtgI/hT8X2YgoMvBY5dLhq/cpOvw7Lk1nK/UF71aLG/ZnVYRA== @@ -6194,14 +5874,6 @@ has-value@^1.0.0: has-values "^1.0.0" isobject "^3.0.0" -has-value@^2.0.2: - version "2.0.2" - resolved "https://registry.yarnpkg.com/has-value/-/has-value-2.0.2.tgz#d0f12e8780ba8e90e66ad1a21c707fdb67c25658" - integrity sha512-ybKOlcRsK2MqrM3Hmz/lQxXHZ6ejzSPzpNabKB45jb5qDgJvKPa3SdapTsTLwEb9WltgWpOmNax7i+DzNOk4TA== - dependencies: - get-value "^3.0.0" - has-values "^2.0.1" - has-values@^0.1.4: version "0.1.4" resolved "https://registry.yarnpkg.com/has-values/-/has-values-0.1.4.tgz#6d61de95d91dfca9b9a02089ad384bff8f62b771" @@ -6215,13 +5887,6 @@ has-values@^1.0.0: is-number "^3.0.0" kind-of "^4.0.0" -has-values@^2.0.1: - version "2.0.1" - resolved "https://registry.yarnpkg.com/has-values/-/has-values-2.0.1.tgz#3876200ff86d8a8546a9264a952c17d5fc17579d" - integrity sha512-+QdH3jOmq9P8GfdjFg0eJudqx1FqU62NQJ4P16rOEHeRdl7ckgwn6uqQjzYE0ZoHVV/e5E2esuJ5Gl5+HUW19w== - dependencies: - kind-of "^6.0.2" - has-yarn@^2.1.0: version "2.1.0" resolved "https://registry.yarnpkg.com/has-yarn/-/has-yarn-2.1.0.tgz#137e11354a7b5bf11aa5cb649cf0c6f3ff2b2e77" @@ -6234,39 +5899,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.9" resolved "https://registry.yarnpkg.com/hosted-git-info/-/hosted-git-info-2.8.9.tgz#dffc0bf9a21c02209090f2aa69429e1414daf3f9" @@ -6296,14 +5928,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.5.0" resolved "https://registry.yarnpkg.com/http-assert/-/http-assert-1.5.0.tgz#c389ccd87ac16ed2dfa6246fd73b926aa00e6b8f" @@ -6567,23 +6191,6 @@ ioredis@^4.27.0: redis-parser "^3.0.0" standard-as-callback "^2.1.0" -ioredis@^4.27.1: - version "4.28.1" - resolved "https://registry.yarnpkg.com/ioredis/-/ioredis-4.28.1.tgz#c2a7038d6a187e020d7045e11d6a677e8b51f785" - integrity sha512-7gcrUJEcPHWy+eEyq6wIZpXtfHt8crhbc5+z0sqrnHUkwBblXinygfamj+/jx83Qo+2LW3q87Nj2VsuH6BF2BA== - dependencies: - cluster-key-slot "^1.1.0" - debug "^4.3.1" - denque "^1.1.0" - lodash.defaults "^4.2.0" - lodash.flatten "^4.4.0" - lodash.isarguments "^3.1.0" - p-map "^2.1.0" - redis-commands "1.7.0" - redis-errors "^1.2.0" - redis-parser "^3.0.0" - standard-as-callback "^2.1.0" - ip-regex@^2.1.0: version "2.1.0" resolved "https://registry.yarnpkg.com/ip-regex/-/ip-regex-2.1.0.tgz#fa78bf5d2e6913c911ce9f819ee5146bb6d844e9" @@ -6708,13 +6315,6 @@ is-docker@^2.0.0, is-docker@^2.1.1: resolved "https://registry.yarnpkg.com/is-docker/-/is-docker-2.2.1.tgz#33eeabe23cfe86f14bde4408a02c0cfb853acdaa" integrity sha512-F+i2BKsFrH66iaUFc0woD8sLy8getkwTwtOBjvs56Cx4CgJDeKQeqfz8wAYiSb8JOprWhHH5p77PbmYCvvUuXQ== -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" @@ -6804,13 +6404,6 @@ is-number-object@^1.0.4: dependencies: has-tostringtag "^1.0.0" -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" @@ -6833,13 +6426,6 @@ is-object@^1.0.1: resolved "https://registry.yarnpkg.com/is-object/-/is-object-1.0.2.tgz#a56552e1c665c9e950b4a025461da87e72f86fcf" integrity sha512-2rRIahhZr2UWb45fIOuvZGpFtz0TyOZLf32KxBbSoUCeZR495zCKlWUKKUByk3geS2eAs7ZAABt0Y/Rx0GiQGA== -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.2: version "3.0.3" resolved "https://registry.yarnpkg.com/is-path-inside/-/is-path-inside-3.0.3.tgz#d231362e53a07ff2b0e0ea7fed049161ffd16283" @@ -6885,13 +6471,6 @@ is-retry-allowed@^2.2.0: resolved "https://registry.yarnpkg.com/is-retry-allowed/-/is-retry-allowed-2.2.0.tgz#88f34cbd236e043e71b6932d09b0c65fb7b4d71d" integrity sha512-XVm7LOeLpTW4jV19QSH38vkswxoLud8sQ57YwJVTPWdiaI9I8keEhGFpBlslyVsgdQy4Opg8QOLb8YRgsyZiQg== -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-shared-array-buffer@^1.0.1: version "1.0.1" resolved "https://registry.yarnpkg.com/is-shared-array-buffer/-/is-shared-array-buffer-1.0.1.tgz#97b0c85fbdacb59c9c446fe653b82cf2b5b7cfe6" @@ -6984,11 +6563,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" @@ -8028,22 +7602,6 @@ jsonschema@1.4.0: resolved "https://registry.yarnpkg.com/jsonschema/-/jsonschema-1.4.0.tgz#1afa34c4bc22190d8e42271ec17ac8b3404f87b2" integrity sha512-/YgW6pRMr6M7C+4o8kS+B/2myEpHCrxO4PEWnqJNBFMjn7EWXqlQ4tGwL6xTHeRplwuZmcAncdvfOad1nT2yMw== -jsonwebtoken@^8.2.0, jsonwebtoken@^8.5.1: - version "8.5.1" - resolved "https://registry.yarnpkg.com/jsonwebtoken/-/jsonwebtoken-8.5.1.tgz#00e71e0b8df54c2121a1f26137df2280673bcc0d" - integrity sha512-XjwVfRS6jTMsqYs0EsuJ4LGxXV14zQybNd4L2r0UvbVnSF9Af8x7p5MzbJ90Ioz/9TI41/hTCvznF/loiSzn8w== - dependencies: - jws "^3.2.2" - lodash.includes "^4.3.0" - lodash.isboolean "^3.0.3" - lodash.isinteger "^4.0.4" - lodash.isnumber "^3.0.3" - lodash.isplainobject "^4.0.6" - lodash.isstring "^4.0.1" - lodash.once "^4.0.0" - ms "^2.1.1" - semver "^5.6.0" - jsprim@^1.2.2: version "1.4.0" resolved "https://registry.yarnpkg.com/jsprim/-/jsprim-1.4.0.tgz#a3b87e40298d8c380552d8cc7628a0bb95a22918" @@ -8083,7 +7641,7 @@ jwa@^1.4.1: ecdsa-sig-formatter "1.0.11" safe-buffer "^5.0.1" -jws@3.x.x, jws@^3.0.0, jws@^3.1.4, jws@^3.2.2: +jws@3.x.x: version "3.2.2" resolved "https://registry.yarnpkg.com/jws/-/jws-3.2.2.tgz#001099f3639468c9414000e99995fa52fb478304" integrity sha512-YHlZCB6lMTllWDtSPHz/ZXTsi8S00usEV6v1tjq8tOUZzw7DpSDWVXjXDre6ed1w/pd495ODpHZYSdkRTsa0HA== @@ -8110,7 +7668,7 @@ keyv@3.0.0, 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= @@ -8124,12 +7682,12 @@ 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== -kind-of@^6.0.0, kind-of@^6.0.2, kind-of@^6.0.3: +kind-of@^6.0.0, kind-of@^6.0.2: version "6.0.3" resolved "https://registry.yarnpkg.com/kind-of/-/kind-of-6.0.3.tgz#07c05034a6c349fa06e24fa35aa76db4580ce4dd" integrity sha512-dcS1ul+9tmeD95T+x28/ehLgd9mENa3LsvDTtzm3vyBEO7RPptvAD+t44WVXaUjTBRcrpFeFlC8WCruUR456hw== @@ -8231,13 +7789,6 @@ koa-mount@^4.0.0: debug "^4.0.1" koa-compose "^4.1.0" -koa-passport@^4.1.4: - version "4.1.4" - resolved "https://registry.yarnpkg.com/koa-passport/-/koa-passport-4.1.4.tgz#5f1665c1c2a37ace79af9f970b770885ca30ccfa" - integrity sha512-dJBCkl4X+zdYxbI2V2OtoGy0PUenpvp2ZLLWObc8UJhsId0iQpTFT8RVcuA0709AL2txGwRHnSPoT1bYNGa6Kg== - dependencies: - passport "^0.4.0" - koa-pino-logger@3.0.0: version "3.0.0" resolved "https://registry.yarnpkg.com/koa-pino-logger/-/koa-pino-logger-3.0.0.tgz#27600b4f3639e8767dfc6b66493109c5457f53ba" @@ -8580,11 +8131,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" @@ -8600,46 +8146,16 @@ lodash.flatten@^4.4.0: resolved "https://registry.yarnpkg.com/lodash.flatten/-/lodash.flatten-4.4.0.tgz#f31c22225a9632d2bbf8e4addbef240aa765a61f" integrity sha1-8xwiIlqWMtK7+OSt2+8kCqdlph8= -lodash.includes@^4.3.0: - version "4.3.0" - resolved "https://registry.yarnpkg.com/lodash.includes/-/lodash.includes-4.3.0.tgz#60bb98a87cb923c68ca1e51325483314849f553f" - integrity sha1-YLuYqHy5I8aMoeUTJUgzFISfVT8= - lodash.isarguments@^3.1.0: version "3.1.0" resolved "https://registry.yarnpkg.com/lodash.isarguments/-/lodash.isarguments-3.1.0.tgz#2f573d85c6a24289ff00663b491c1d338ff3458a" integrity sha1-L1c9hcaiQon/AGY7SRwdM4/zRYo= -lodash.isboolean@^3.0.3: - version "3.0.3" - resolved "https://registry.yarnpkg.com/lodash.isboolean/-/lodash.isboolean-3.0.3.tgz#6c2e171db2a257cd96802fd43b01b20d5f5870f6" - integrity sha1-bC4XHbKiV82WgC/UOwGyDV9YcPY= - lodash.isequal@^4.5.0: version "4.5.0" resolved "https://registry.yarnpkg.com/lodash.isequal/-/lodash.isequal-4.5.0.tgz#415c4478f2bcc30120c22ce10ed3226f7d3e18e0" integrity sha1-QVxEePK8wwEgwizhDtMib30+GOA= -lodash.isinteger@^4.0.4: - version "4.0.4" - resolved "https://registry.yarnpkg.com/lodash.isinteger/-/lodash.isinteger-4.0.4.tgz#619c0af3d03f8b04c31f5882840b77b11cd68343" - integrity sha1-YZwK89A/iwTDH1iChAt3sRzWg0M= - -lodash.isnumber@^3.0.3: - version "3.0.3" - resolved "https://registry.yarnpkg.com/lodash.isnumber/-/lodash.isnumber-3.0.3.tgz#3ce76810c5928d03352301ac287317f11c0b1ffc" - integrity sha1-POdoEMWSjQM1IwGsKHMX8RwLH/w= - -lodash.isplainobject@^4.0.6: - version "4.0.6" - resolved "https://registry.yarnpkg.com/lodash.isplainobject/-/lodash.isplainobject-4.0.6.tgz#7c526a52d89b45c45cc690b88163be0497f550cb" - integrity sha1-fFJqUtibRcRcxpC4gWO+BJf1UMs= - -lodash.isstring@^4.0.1: - version "4.0.1" - resolved "https://registry.yarnpkg.com/lodash.isstring/-/lodash.isstring-4.0.1.tgz#d527dfb5456eca7cc9bb95d5daeaf88ba54a5451" - integrity sha1-1SfftUVuynzJu5XV2ur4i6VKVFE= - lodash.keys@^4.2.0: version "4.2.0" resolved "https://registry.yarnpkg.com/lodash.keys/-/lodash.keys-4.2.0.tgz#a08602ac12e4fb83f91fc1fb7a360a4d9ba35205" @@ -8655,21 +8171,11 @@ lodash.merge@^4.6.2: resolved "https://registry.yarnpkg.com/lodash.merge/-/lodash.merge-4.6.2.tgz#558aa53b43b661e1925a0afdfa36a9a1085fe57a" integrity sha512-0KpjqXRVvrYyCsX1swR/XTK0va6VQkQM6MNo7PqW77ByjAhoARA8EfrP1N4+KlKj8YS0ZUCtRT/YUuhyYDujIQ== -lodash.noop@^3.0.1: - version "3.0.1" - resolved "https://registry.yarnpkg.com/lodash.noop/-/lodash.noop-3.0.1.tgz#38188f4d650a3a474258439b96ec45b32617133c" - integrity sha1-OBiPTWUKOkdCWEObluxFsyYXEzw= - lodash.omit@^4.5.0: version "4.5.0" resolved "https://registry.yarnpkg.com/lodash.omit/-/lodash.omit-4.5.0.tgz#6eb19ae5a1ee1dd9df0b969e66ce0b7fa30b5e60" integrity sha1-brGa5aHuHdnfC5aeZs4Lf6MLXmA= -lodash.once@^4.0.0: - version "4.1.1" - resolved "https://registry.yarnpkg.com/lodash.once/-/lodash.once-4.1.1.tgz#0dd3971213c7c56df880977d504c88fb471a97ac" - integrity sha1-DdOXEhPHxW34gJd9UEyI+0cal6w= - lodash.pick@^4.0.0: version "4.4.0" resolved "https://registry.yarnpkg.com/lodash.pick/-/lodash.pick-4.4.0.tgz#52f05610fff9ded422611441ed1fc123a03001b3" @@ -8680,21 +8186,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" @@ -8705,7 +8196,7 @@ 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.21, lodash@^4.14.0, lodash@^4.17.11, lodash@^4.17.14, lodash@^4.17.19, lodash@^4.17.20, lodash@^4.17.21, lodash@^4.17.3, lodash@^4.7.0: +lodash@4.17.21, lodash@^4.17.11, lodash@^4.17.14, lodash@^4.17.19, lodash@^4.17.21, lodash@^4.17.3, lodash@^4.7.0: version "4.17.21" resolved "https://registry.yarnpkg.com/lodash/-/lodash-4.17.21.tgz#679591c564c3bffaae8454cf0b3df370c3d6911c" integrity sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg== @@ -8902,7 +8393,7 @@ methods@^1.0.1, methods@^1.1.1, methods@^1.1.2: resolved "https://registry.yarnpkg.com/methods/-/methods-1.1.2.tgz#5529a4d67654134edcc5266656835b0f851afcee" integrity sha1-VSmk1nZUE07cxSZmVoNbD4Ua/O4= -micromatch@^3.1.10, micromatch@^3.1.4, micromatch@^3.1.5: +micromatch@^3.1.10, micromatch@^3.1.4: version "3.1.10" resolved "https://registry.yarnpkg.com/micromatch/-/micromatch-3.1.10.tgz#70859bc95c9840952f359a068a3fc49f9ecfac23" integrity sha512-MWikgl9n9M3w+bpsY3He8L+w9eF9338xRl8IAO5viDizwSzziFEyUzo2xrrloB64ADbTf8uA8vRqqttDTOmccg== @@ -9003,11 +8494,6 @@ mixin-deep@^1.2.0: for-in "^1.0.2" is-extendable "^1.0.1" -mkdirp-classic@^0.5.2: - version "0.5.3" - resolved "https://registry.yarnpkg.com/mkdirp-classic/-/mkdirp-classic-0.5.3.tgz#fa10c9115cc6d8865be221ba47ee9bed78601113" - integrity sha512-gKLcREMhtuZRwRAfqP3RFW+TK4JqApVBtOIftVgjuABpAtpxhPGaDcfvbhNvD0B8iD1oUr/txX35NjcaY6Ns/A== - mkdirp@^0.5.0, mkdirp@^0.5.1: version "0.5.5" resolved "https://registry.yarnpkg.com/mkdirp/-/mkdirp-0.5.5.tgz#d91cefd62d1436ca0f41620e251288d420099def" @@ -9027,7 +8513,7 @@ moment-timezone@^0.5.31: dependencies: moment ">= 2.9.0" -"moment@>= 2.9.0", moment@^2.18.1: +"moment@>= 2.9.0": version "2.29.1" resolved "https://registry.yarnpkg.com/moment/-/moment-2.29.1.tgz#b2be769fa31940be9eeea6469c075e35006fa3d3" integrity sha512-kHmoybcPV8Sqy59DwNDY3Jefr64lK/by/da0ViFcuA4DH0vQg5Q6Ze5VimxkfQNSC+Mls/Kx53s7TjP1RhFEDQ== @@ -9127,11 +8613,6 @@ nan@^2.12.1: resolved "https://registry.yarnpkg.com/nan/-/nan-2.15.0.tgz#3f34a473ff18e15c1b5626b62903b5ad6e665fee" integrity sha512-8ZtvEnA2c5aYCZYd1cvgdnU6cqwixRoYg70xPLWUws5ORTa/lnw+u4amixRS/Ac5U5mQVgp9pnlSUnbNWFaWZQ== -nanoid@^2.1.0: - version "2.1.11" - resolved "https://registry.yarnpkg.com/nanoid/-/nanoid-2.1.11.tgz#ec24b8a758d591561531b4176a01e3ab4f0f0280" - integrity sha512-s/snB+WGm6uwi0WjsZdaVcuf3KJXlfGl2LcxgwkEwJF0D/BWzVWAZW/XY4bFaiR7s0Jk3FPvlnepg1H1b1UwlA== - nanomatch@^1.2.9: version "1.2.13" resolved "https://registry.yarnpkg.com/nanomatch/-/nanomatch-1.2.13.tgz#b87a8aa4fc0de8fe6be88895b38983ff265bd119" @@ -9206,11 +8687,6 @@ node-fetch@^2.6.1: dependencies: whatwg-url "^5.0.0" -node-forge@^0.7.1: - version "0.7.6" - resolved "https://registry.yarnpkg.com/node-forge/-/node-forge-0.7.6.tgz#fdf3b418aee1f94f0ef642cd63486c77ca9724ac" - integrity sha512-sol30LUpz1jQFBjOKwbjxijiE3b6pjd74YwfD0fJOKPjF+fONKb2Yg8rYgS6+bK6VDl+/wfr4IYpC7jDzLUIfw== - node-gyp-build@~4.1.0: version "4.1.1" resolved "https://registry.yarnpkg.com/node-gyp-build/-/node-gyp-build-4.1.1.tgz#d7270b5d86717068d114cc57fff352f96d745feb" @@ -9329,11 +8805,6 @@ oauth-sign@~0.9.0: resolved "https://registry.yarnpkg.com/oauth-sign/-/oauth-sign-0.9.0.tgz#47a7b016baa68b5fa0ecf3dee08a85c679ac6455" integrity sha512-fexhUFFPTGV8ybAtSIGbV6gOkSv8UtRbDBnAyLQw4QPKkgNlsH2ByPGtMUqdWkos6YCRmAqViwgZrJc/mRDzZQ== -oauth@0.9.x, oauth@^0.9.15: - version "0.9.15" - resolved "https://registry.yarnpkg.com/oauth/-/oauth-0.9.15.tgz#bd1fefaf686c96b75475aed5196412ff60cfb9c1" - integrity sha1-vR/vr2hslrdUda7VGWQS/2DPucE= - object-assign@^2.0.0: version "2.1.1" resolved "https://registry.yarnpkg.com/object-assign/-/object-assign-2.1.1.tgz#43c36e5d569ff8e4816c4efa8be02d26967c18aa" @@ -9639,84 +9110,6 @@ pascalcase@^0.1.1: resolved "https://registry.yarnpkg.com/pascalcase/-/pascalcase-0.1.1.tgz#b363e55e8006ca6fe21784d2db22bd15d7917f14" integrity sha1-s2PlXoAGym/iF4TS2yK9FdeRfxQ= -passport-google-auth@^1.0.2: - version "1.0.2" - resolved "https://registry.yarnpkg.com/passport-google-auth/-/passport-google-auth-1.0.2.tgz#8b300b5aa442ef433de1d832ed3112877d0b2938" - integrity sha1-izALWqRC70M94dgy7TESh30LKTg= - dependencies: - googleapis "^16.0.0" - passport-strategy "1.x" - -passport-google-oauth1@1.x.x: - version "1.0.0" - resolved "https://registry.yarnpkg.com/passport-google-oauth1/-/passport-google-oauth1-1.0.0.tgz#af74a803df51ec646f66a44d82282be6f108e0cc" - integrity sha1-r3SoA99R7GRvZqRNgigr5vEI4Mw= - dependencies: - passport-oauth1 "1.x.x" - -passport-google-oauth20@2.x.x: - version "2.0.0" - resolved "https://registry.yarnpkg.com/passport-google-oauth20/-/passport-google-oauth20-2.0.0.tgz#0d241b2d21ebd3dc7f2b60669ec4d587e3a674ef" - integrity sha512-KSk6IJ15RoxuGq7D1UKK/8qKhNfzbLeLrG3gkLZ7p4A6DBCcv7xpyQwuXtWdpyR0+E0mwkpjY1VfPOhxQrKzdQ== - dependencies: - passport-oauth2 "1.x.x" - -passport-google-oauth@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/passport-google-oauth/-/passport-google-oauth-2.0.0.tgz#f6eb4bc96dd6c16ec0ecfdf4e05ec48ca54d4dae" - integrity sha512-JKxZpBx6wBQXX1/a1s7VmdBgwOugohH+IxCy84aPTZNq/iIPX6u7Mqov1zY7MKRz3niFPol0KJz8zPLBoHKtYA== - dependencies: - passport-google-oauth1 "1.x.x" - passport-google-oauth20 "2.x.x" - -passport-jwt@^4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/passport-jwt/-/passport-jwt-4.0.0.tgz#7f0be7ba942e28b9f5d22c2ebbb8ce96ef7cf065" - integrity sha512-BwC0n2GP/1hMVjR4QpnvqA61TxenUMlmfNjYNgK0ZAs0HK4SOQkHcSv4L328blNTLtHq7DbmvyNJiH+bn6C5Mg== - dependencies: - jsonwebtoken "^8.2.0" - passport-strategy "^1.0.0" - -passport-local@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/passport-local/-/passport-local-1.0.0.tgz#1fe63268c92e75606626437e3b906662c15ba6ee" - integrity sha1-H+YyaMkudWBmJkN+O5BmYsFbpu4= - dependencies: - passport-strategy "1.x.x" - -passport-oauth1@1.x.x: - version "1.2.0" - resolved "https://registry.yarnpkg.com/passport-oauth1/-/passport-oauth1-1.2.0.tgz#5229d431781bf5b265bec86ce9a9cce58a756cf9" - integrity sha512-Sv2YWodC6jN12M/OXwmR4BIXeeIHjjbwYTQw4kS6tHK4zYzSEpxBgSJJnknBjICA5cj0ju3FSnG1XmHgIhYnLg== - dependencies: - oauth "0.9.x" - passport-strategy "1.x.x" - utils-merge "1.x.x" - -passport-oauth2@1.x.x: - version "1.6.1" - resolved "https://registry.yarnpkg.com/passport-oauth2/-/passport-oauth2-1.6.1.tgz#c5aee8f849ce8bd436c7f81d904a3cd1666f181b" - integrity sha512-ZbV43Hq9d/SBSYQ22GOiglFsjsD1YY/qdiptA+8ej+9C1dL1TVB+mBE5kDH/D4AJo50+2i8f4bx0vg4/yDDZCQ== - dependencies: - base64url "3.x.x" - oauth "0.9.x" - passport-strategy "1.x.x" - uid2 "0.0.x" - utils-merge "1.x.x" - -passport-strategy@1.x, passport-strategy@1.x.x, passport-strategy@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/passport-strategy/-/passport-strategy-1.0.0.tgz#b5539aa8fc225a3d1ad179476ddf236b440f52e4" - integrity sha1-tVOaqPwiWj0a0XlHbd8ja0QPUuQ= - -passport@^0.4.0: - version "0.4.1" - resolved "https://registry.yarnpkg.com/passport/-/passport-0.4.1.tgz#941446a21cb92fc688d97a0861c38ce9f738f270" - integrity sha512-IxXgZZs8d7uFSt3eqNjM9NQ3g3uQCW5avD8mRNoXV99Yig50vjuaez6dQK2qC0kVWPRTujxY0dWgGfT09adjYg== - dependencies: - passport-strategy "1.x.x" - pause "0.0.1" - path-exists@^3.0.0: version "3.0.0" resolved "https://registry.yarnpkg.com/path-exists/-/path-exists-3.0.0.tgz#ce0ebeaa5f78cb18925ea7d810d7b59b010fd515" @@ -9771,11 +9164,6 @@ path-type@^4.0.0: resolved "https://registry.yarnpkg.com/path-type/-/path-type-4.0.0.tgz#84ed01c0a7ba380afe09d90a8c180dcd9d03043b" integrity sha512-gDKb8aZMDeD/tZWs9P6+q0J9Mwkdl6xMV8TjnGP3qJVJ06bdMgkbBlLU8IdfOsIsFz2BW1rNVT3XuNEl8zPAvw== -pause@0.0.1: - version "0.0.1" - resolved "https://registry.yarnpkg.com/pause/-/pause-0.0.1.tgz#1d408b3fdb76923b9543d96fb4c9dfd535d9cb5d" - integrity sha1-HUCLP9t2kjuVQ9lvtMnf1TXZy10= - pend@~1.2.0: version "1.2.0" resolved "https://registry.yarnpkg.com/pend/-/pend-1.2.0.tgz#7a57eb550a6783f9115331fcf4663d5c8e007a50" @@ -10489,7 +9877,7 @@ readable-stream@1.1.14, readable-stream@^1.0.27-1: isarray "0.0.1" string_decoder "~0.10.x" -"readable-stream@2 || 3", readable-stream@^3.0.0, readable-stream@^3.0.1, readable-stream@^3.1.1, readable-stream@^3.4.0, readable-stream@^3.6.0: +"readable-stream@2 || 3", readable-stream@^3.0.0, readable-stream@^3.0.1, readable-stream@^3.4.0, readable-stream@^3.6.0: version "3.6.0" resolved "https://registry.yarnpkg.com/readable-stream/-/readable-stream-3.6.0.tgz#337bbda3adc0706bd3e024426a286d4b4b2c9198" integrity sha512-BViHy7LKeTz4oNnkcLJ+lVSL6vpiFeX6/d3oSH8zCW7UxP2onchk+vTGB143xuFjHS3deTgkKoXXymXqymiIdA== @@ -10630,16 +10018,6 @@ regex-not@^1.0.0, regex-not@^1.0.2: extend-shallow "^3.0.2" safe-regex "^1.1.0" -regexparam@2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/regexparam/-/regexparam-2.0.0.tgz#059476767d5f5f87f735fc7922d133fd1a118c8c" - integrity sha512-gJKwd2MVPWHAIFLsaYDZfyKzHNS4o7E/v8YmNf44vmeV2e4YfVoDToTOKTvE7ab68cRJ++kLuEXJBaEeJVt5ow== - -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" @@ -10683,21 +10061,6 @@ regjsparser@^0.7.0: dependencies: jsesc "~0.5.0" -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" @@ -10734,7 +10097,7 @@ request-promise-native@^1.0.5: stealthy-require "^1.1.1" tough-cookie "^2.3.3" -request@^2.72.0, request@^2.74.0, request@^2.87.0, request@^2.88.0: +request@^2.87.0: version "2.88.2" resolved "https://registry.yarnpkg.com/request/-/request-2.88.2.tgz#d73c918731cb5a87da047e207234146f664d12b3" integrity sha512-MsvtOrfG9ZcrOwAW+Qi+F6HbD0CWXEh9ou77uOb7FM2WPhwT7smM833PzanhJLsgXjN89Ir6V2PczXNnMpwKhw== @@ -10946,11 +10309,6 @@ sane@^4.0.3: minimist "^1.1.1" walker "~1.0.5" -sanitize-s3-objectkey@^0.0.1: - version "0.0.1" - resolved "https://registry.yarnpkg.com/sanitize-s3-objectkey/-/sanitize-s3-objectkey-0.0.1.tgz#efa9887cd45275b40234fb4bb12fc5754fe64e7e" - integrity sha512-ZTk7aqLxy4sD40GWcYWoLfbe05XLmkKvh6vGKe13ADlei24xlezcvjgKy1qRArlaIbIMYaqK7PCalvZtulZlaQ== - saslprep@^1.0.0: version "1.0.3" resolved "https://registry.yarnpkg.com/saslprep/-/saslprep-1.0.3.tgz#4c02f946b56cf54297e347ba1093e7acac4cf226" @@ -10963,7 +10321,7 @@ sax@1.2.1: resolved "https://registry.yarnpkg.com/sax/-/sax-1.2.1.tgz#7b8e656190b228e81a66aea748480d828cd2d37a" integrity sha1-e45lYZCyKOgaZq6nSEgNgozS03o= -sax@>=0.1.1, sax@>=0.6.0, sax@^1.2.4: +sax@>=0.6.0, sax@^1.2.4: version "1.2.4" resolved "https://registry.yarnpkg.com/sax/-/sax-1.2.4.tgz#2816234e2378bddc4e5354fab5caa895df7100d9" integrity sha512-NqVDv9TpANUjFm0N8uM5GxL36UgKi9/atZw+x7YFnQ8ckwFGKrl4xX4yWtrey3UJm5nP1kUbnYgLopqWNSRhWw== @@ -10996,11 +10354,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-diff@^3.1.1: version "3.1.1" resolved "https://registry.yarnpkg.com/semver-diff/-/semver-diff-3.1.1.tgz#05f77ce59f325e00e2706afd67bb506ddb1ca32b" @@ -11008,7 +10361,7 @@ semver-diff@^3.1.1: dependencies: semver "^6.3.0" -"semver@2 || 3 || 4 || 5", semver@^5.1.0, semver@^5.4.1, semver@^5.5.0, semver@^5.6.0, semver@^5.7.1: +"semver@2 || 3 || 4 || 5", semver@^5.1.0, semver@^5.5.0, semver@^5.6.0, semver@^5.7.1: version "5.7.1" resolved "https://registry.yarnpkg.com/semver/-/semver-5.7.1.tgz#a954f931aeba508d307bbf069eff0c01c96116f7" integrity sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ== @@ -11119,18 +10472,6 @@ shell-path@^2.1.0: dependencies: shell-env "^0.3.0" -shimmer@^1.2.0: - version "1.2.1" - resolved "https://registry.yarnpkg.com/shimmer/-/shimmer-1.2.1.tgz#610859f7de327b587efebf501fb43117f9aff337" - integrity sha512-sQTKC1Re/rM6XyFM6fIAGHRPVGvyXfgzIDvzoq608vM+jeyVD0Tu1E6Np0Kc2zAIFWIj963V2800iF/9LPieQw== - -shortid@^2.2.15: - version "2.2.16" - resolved "https://registry.yarnpkg.com/shortid/-/shortid-2.2.16.tgz#b742b8f0cb96406fd391c76bfc18a67a57fe5608" - integrity sha512-Ugt+GIZqvGXCIItnsL+lvFJOiN7RYqlGy7QE41O3YC1xbNSeDGIRO7xg2JJXIAj1cAGnOeC1r7/T9pgrtQbv4g== - dependencies: - nanoid "^2.1.0" - side-channel@^1.0.4: version "1.0.4" resolved "https://registry.yarnpkg.com/side-channel/-/side-channel-1.0.4.tgz#efce5c8fdc104ee751b25c58d4290011fa5ea2cf" @@ -11400,11 +10741,6 @@ sshpk@^1.7.0: safer-buffer "^2.0.2" tweetnacl "~0.14.0" -stack-chain@^1.3.7: - version "1.3.7" - resolved "https://registry.yarnpkg.com/stack-chain/-/stack-chain-1.3.7.tgz#d192c9ff4ea6a22c94c4dd459171e3f00cea1285" - integrity sha1-0ZLJ/06moiyUxN1FkXHj8AzqEoU= - stack-trace@0.0.x: version "0.0.10" resolved "https://registry.yarnpkg.com/stack-trace/-/stack-trace-0.0.10.tgz#547c70b347e8d32b4e108ea1a2a159e5fdde19c0" @@ -11452,11 +10788,6 @@ stealthy-require@^1.1.1: resolved "https://registry.yarnpkg.com/stealthy-require/-/stealthy-require-1.1.1.tgz#35b09875b4ff49f26a777e509b3090a3226bf24b" integrity sha1-NbCYdbT/SfJqd35QmzCQoyJr8ks= -step@0.0.x: - version "0.0.6" - resolved "https://registry.yarnpkg.com/step/-/step-0.0.6.tgz#143e7849a5d7d3f4a088fe29af94915216eeede2" - integrity sha1-FD54SaXX0/SgiP4pr5SRUhbu7eI= - strict-uri-encode@^1.0.0: version "1.1.0" resolved "https://registry.yarnpkg.com/strict-uri-encode/-/strict-uri-encode-1.1.0.tgz#279b225df1d582b1f54e65addd4352e18faa0713" @@ -11470,11 +10801,6 @@ string-length@^4.0.1: char-regex "^1.0.2" strip-ansi "^6.0.0" -string-template@~1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/string-template/-/string-template-1.0.0.tgz#9e9f2233dc00f218718ec379a28a5673ecca8b96" - integrity sha1-np8iM9wA8hhxjsN5oopWc+zKi5Y= - string-width@^3.0.0, string-width@^3.1.0: version "3.1.0" resolved "https://registry.yarnpkg.com/string-width/-/string-width-3.1.0.tgz#22767be21b62af1081574306f69ac51b62203961" @@ -11600,11 +10926,6 @@ strip-outer@^1.0.0: dependencies: escape-string-regexp "^1.0.2" -striptags@^3.1.1: - version "3.2.0" - resolved "https://registry.yarnpkg.com/striptags/-/striptags-3.2.0.tgz#cc74a137db2de8b0b9a370006334161f7dd67052" - integrity sha512-g45ZOGzHDMe2bdYMdIvdAfCQkCTDMGBazSw1ypMowwGIee7ZQ5dU0rBJ8Jqgl+jAKIv4dbeE1jscZq9wid1Tkw== - style-loader@^3.3.1: version "3.3.1" resolved "https://registry.yarnpkg.com/style-loader/-/style-loader-3.3.1.tgz#057dfa6b3d4d7c7064462830f9113ed417d38575" @@ -11699,13 +11020,6 @@ svelte-portal@^1.0.0: resolved "https://registry.yarnpkg.com/svelte-portal/-/svelte-portal-1.0.0.tgz#36a47c5578b1a4d9b4dc60fa32a904640ec4cdd3" integrity sha512-nHf+DS/jZ6jjnZSleBMSaZua9JlG5rZv9lOGKgJuaZStfevtjIlUJrkLc3vbV8QdBvPPVmvcjTlazAzfKu0v3Q== -svelte-spa-router@^3.0.5: - version "3.2.0" - resolved "https://registry.yarnpkg.com/svelte-spa-router/-/svelte-spa-router-3.2.0.tgz#fae3311d292451236cb57131262406cf312b15ee" - integrity sha512-igemo5Vs82TGBBw+DjWt6qKameXYzNs6aDXcTxou5XbEvOjiRcAM6MLkdVRCatn6u8r42dE99bt/br7T4qe/AQ== - dependencies: - regexparam "2.0.0" - svelte@^3.38.2: version "3.44.1" resolved "https://registry.yarnpkg.com/svelte/-/svelte-3.44.1.tgz#5cc772a8340f4519a4ecd1ac1a842325466b1a63" @@ -11786,16 +11100,6 @@ tapable@^2.1.1, tapable@^2.2.0: resolved "https://registry.yarnpkg.com/tapable/-/tapable-2.2.1.tgz#1967a73ef4060a82f12ab96af86d52fdb76eeca0" integrity sha512-GNzQvQTOIP6RyTfE2Qxb8ZVlNmw0n88vp1szwWRimP02mnTsx3Wtn5qRdqY9w2XduFNUgvOwhNnQsjwCp+kqaQ== -tar-fs@^2.1.1: - version "2.1.1" - resolved "https://registry.yarnpkg.com/tar-fs/-/tar-fs-2.1.1.tgz#489a15ab85f1f0befabb370b7de4f9eb5cbe8784" - integrity sha512-V0r2Y9scmbDRLCNex/+hYzvp/zyYjvFbHPNgVTKfQvVrb6guiE/fxP+XblDNR011utopbkex2nM4dHNV6GDsng== - dependencies: - chownr "^1.1.1" - mkdirp-classic "^0.5.2" - pump "^3.0.0" - tar-stream "^2.1.4" - tar-stream@^1.5.2: version "1.6.2" resolved "https://registry.yarnpkg.com/tar-stream/-/tar-stream-1.6.2.tgz#8ea55dab37972253d9a9af90fdcd559ae435c555" @@ -11809,17 +11113,6 @@ tar-stream@^1.5.2: to-buffer "^1.1.1" xtend "^4.0.0" -tar-stream@^2.1.4: - version "2.2.0" - resolved "https://registry.yarnpkg.com/tar-stream/-/tar-stream-2.2.0.tgz#acad84c284136b060dc3faa64474aa9aebd77287" - integrity sha512-ujeqbceABgwMZxEJnk2HDY2DlnUZ+9oEcb1KzTVfYHio0UE6dG71n60d8D2I4qNvleWrrXpmjpt7vZeF1LnMZQ== - dependencies: - bl "^4.0.3" - end-of-stream "^1.4.1" - fs-constants "^1.0.0" - inherits "^2.0.3" - readable-stream "^3.1.1" - tarn@^1.1.5: version "1.1.5" resolved "https://registry.yarnpkg.com/tarn/-/tarn-1.1.5.tgz#7be88622e951738b9fa3fb77477309242cdddc2d" @@ -12011,11 +11304,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" @@ -12252,13 +11540,6 @@ typedarray-to-buffer@^3.1.5: dependencies: is-typedarray "^1.0.0" -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" - typescript@^4.3.5: version "4.3.5" resolved "https://registry.yarnpkg.com/typescript/-/typescript-4.3.5.tgz#4d1c37cc16e893973c45a06886b7113234f119f4" @@ -12274,11 +11555,6 @@ uglify-js@^3.1.4: resolved "https://registry.yarnpkg.com/uglify-js/-/uglify-js-3.14.3.tgz#c0f25dfea1e8e5323eccf59610be08b6043c15cf" integrity sha512-mic3aOdiq01DuSVx0TseaEzMIVqebMZ0Z3vaeDhFEh9bsc24hV1TFvN74reA2vs08D0ZWfNjAcJ3UbVLaBss+g== -uid2@0.0.x: - version "0.0.4" - resolved "https://registry.yarnpkg.com/uid2/-/uid2-0.0.4.tgz#033f3b1d5d32505f5ce5f888b9f3b667123c0a44" - integrity sha512-IevTus0SbGwQzYh3+fRsAMTVVPOoIVufzacXcHPmdlle1jUpq7BRL+mw3dgeLanvGZdwwbWhRV6XrcFNdBmjWA== - unbox-primitive@^1.0.1: version "1.0.1" resolved "https://registry.yarnpkg.com/unbox-primitive/-/unbox-primitive-1.0.1.tgz#085e215625ec3162574dc8859abee78a59b14471" @@ -12482,11 +11758,6 @@ util.promisify@^1.0.0, util.promisify@^1.0.1: has-symbols "^1.0.1" object.getownpropertydescriptors "^2.1.1" -utils-merge@1.x.x: - version "1.0.1" - resolved "https://registry.yarnpkg.com/utils-merge/-/utils-merge-1.0.1.tgz#9f95710f50a267947b2ccc124741c1028427e713" - integrity sha1-n5VxD1CiZ5R7LMwSR0HBAoQn5xM= - uuid@3.3.2, uuid@^3.1.0, uuid@^3.3.2: version "3.3.2" resolved "https://registry.yarnpkg.com/uuid/-/uuid-3.3.2.tgz#1b4af4955eb3077c501c23872fc6513811587131" @@ -12546,7 +11817,7 @@ verror@1.3.6: dependencies: extsprintf "1.0.2" -vm2@^3.9.3, vm2@^3.9.4: +vm2@^3.9.3: version "3.9.5" resolved "https://registry.yarnpkg.com/vm2/-/vm2-3.9.5.tgz#5288044860b4bbace443101fcd3bddb2a0aa2496" integrity sha512-LuCAHZN75H9tdrAiLFf030oW7nJV5xwNMuk1ymOZwopmuK3d2H4L1Kv4+GFHgarKiLfXXLFU+7LDABHnwOkWng== @@ -12585,14 +11856,6 @@ watchpack@^2.2.0: glob-to-regexp "^0.4.1" graceful-fs "^4.1.2" -webfinger@^0.4.2: - version "0.4.2" - resolved "https://registry.yarnpkg.com/webfinger/-/webfinger-0.4.2.tgz#3477a6d97799461896039fcffc650b73468ee76d" - integrity sha1-NHem2XeZRhiWA5/P/GULc0aO520= - dependencies: - step "0.0.x" - xml2js "0.1.x" - webidl-conversions@^3.0.0: version "3.0.1" resolved "https://registry.yarnpkg.com/webidl-conversions/-/webidl-conversions-3.0.1.tgz#24534275e2a7bc6be7bc86611cc16ae0a5654871" @@ -12909,13 +12172,6 @@ xml-parse-from-string@^1.0.0: resolved "https://registry.yarnpkg.com/xml-parse-from-string/-/xml-parse-from-string-1.0.1.tgz#a9029e929d3dbcded169f3c6e28238d95a5d5a28" integrity sha1-qQKekp09vN7RafPG4oI42VpdWig= -xml2js@0.1.x: - version "0.1.14" - resolved "https://registry.yarnpkg.com/xml2js/-/xml2js-0.1.14.tgz#5274e67f5a64c5f92974cd85139e0332adc6b90c" - integrity sha1-UnTmf1pkxfkpdM2FE54DMq3GuQw= - dependencies: - sax ">=0.1.1" - xml2js@0.4.19: version "0.4.19" resolved "https://registry.yarnpkg.com/xml2js/-/xml2js-0.4.19.tgz#686c20f213209e94abf0d1bcf1efaa291c7827a7" @@ -13049,11 +12305,6 @@ 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" @@ -13064,7 +12315,7 @@ yn@3.1.1: resolved "https://registry.yarnpkg.com/yn/-/yn-3.1.1.tgz#1e87401a09d767c1d5eab26a6e4c185182d2eb50" integrity sha512-Ux4ygGWsu2c7isFWe8Yu1YluJmqVhxqK2cLXNQA5AcC3QfbGNpM7fu0Y8b/z16pXLnFxZYvWhd3fhBY9DLmC6Q== -zlib@1.0.5, zlib@^1.0.5: +zlib@1.0.5: version "1.0.5" resolved "https://registry.yarnpkg.com/zlib/-/zlib-1.0.5.tgz#6e7c972fc371c645a6afb03ab14769def114fcc0" integrity sha1-bnyXL8NxxkWmr7A6sUdp3vEU/MA= diff --git a/packages/worker/yarn.lock b/packages/worker/yarn.lock index ef92ed7bc4..56cfb74173 100644 --- a/packages/worker/yarn.lock +++ b/packages/worker/yarn.lock @@ -295,69 +295,6 @@ resolved "https://registry.yarnpkg.com/@bcoe/v8-coverage/-/v8-coverage-0.2.3.tgz#75a2e8b51cb758a7553d6804a5932d7aace75c39" integrity sha512-0hYQ8SB4Db5zvZB4axdMHGwEaQjkZzFjQiN9LVYvIFB2nSUHW9tYpxWriPrWDASIxiaXax83REcLxuSdnGPZtw== -"@budibase/auth@^0.9.185-alpha.12": - version "0.9.188" - resolved "https://registry.yarnpkg.com/@budibase/auth/-/auth-0.9.188.tgz#82df2fc6e6e3100679a19ced8bab6fe6625f8744" - integrity sha512-U/7MfxbSrsQGGFyTdAicPDafxGeR8zsuh0I17ZujcIiZUoi1eWbLz4/ODITlTj9zxiXojMf+/u68YAF1ABdxDw== - dependencies: - "@techpass/passport-openidconnect" "^0.3.0" - aws-sdk "^2.901.0" - bcryptjs "^2.4.3" - cls-hooked "^4.2.2" - ioredis "^4.27.1" - jsonwebtoken "^8.5.1" - koa-passport "^4.1.4" - lodash "^4.17.21" - lodash.isarguments "^3.1.0" - node-fetch "^2.6.1" - passport-google-auth "^1.0.2" - passport-google-oauth "^2.0.0" - passport-jwt "^4.0.0" - passport-local "^1.0.0" - sanitize-s3-objectkey "^0.0.1" - tar-fs "^2.1.1" - uuid "^8.3.2" - zlib "^1.0.5" - -"@budibase/handlebars-helpers@^0.11.7": - version "0.11.7" - resolved "https://registry.yarnpkg.com/@budibase/handlebars-helpers/-/handlebars-helpers-0.11.7.tgz#8e5f9843d7dd10503e9f608555a96ccf4d836c46" - integrity sha512-PvGHAv22cWSFExs1kc0WglwsmCEUEOqWvSp6JCFZwtc3qAAr5yMfLK8WGVQ63ALvyzWZiyxF+yrlzeeaohCMJw== - dependencies: - array-sort "^1.0.0" - define-property "^2.0.2" - extend-shallow "^3.0.2" - for-in "^1.0.2" - get-object "^0.2.0" - get-value "^3.0.1" - handlebars "^4.7.7" - handlebars-utils "^1.0.6" - has-value "^2.0.2" - 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.1" - kind-of "^6.0.3" - micromatch "^3.1.5" - relative "^3.0.2" - striptags "^3.1.1" - to-gfm-code-block "^0.1.1" - year "^0.2.1" - -"@budibase/string-templates@^0.9.185-alpha.12": - version "0.9.188" - resolved "https://registry.yarnpkg.com/@budibase/string-templates/-/string-templates-0.9.188.tgz#f37836ed23dbd2217cb157030ada7cd59f6a2165" - integrity sha512-O/bL0I5OJO9W2OizIe9vBHowCLwwASPBrsGiAIB8L0x6AivYMq8j1mvNRwLXZjpHTjv86bU/LyG/3CP837oDsg== - dependencies: - "@budibase/handlebars-helpers" "^0.11.7" - dayjs "^1.10.4" - handlebars "^4.7.6" - handlebars-utils "^1.0.6" - lodash "^4.17.20" - vm2 "^3.9.4" - "@cnakazawa/watch@^1.0.3": version "1.0.4" resolved "https://registry.yarnpkg.com/@cnakazawa/watch/-/watch-1.0.4.tgz#f864ae85004d0fcab6f50be9141c4da368d1656a" @@ -990,7 +927,7 @@ anymatch@^3.0.3, anymatch@~3.1.2: normalize-path "^3.0.0" picomatch "^2.0.4" -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== @@ -1027,15 +964,6 @@ arr-union@^3.1.0: resolved "https://registry.yarnpkg.com/arr-union/-/arr-union-3.1.0.tgz#e39b09aea9def866a8f206e288af63919bae39c4" integrity sha1-45sJrqne+Gao8gbiiK9jkZuuOcQ= -array-sort@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/array-sort/-/array-sort-1.0.0.tgz#e4c05356453f56f53512a7d1d6123f2c54c0a88a" - integrity sha512-ihLeJkonmdiAsD7vpgN3CRcx2J2S0TiYW+IS/5zHBI7mKUq3ySvBdzzBfD236ubDBQFiiyG3SWCPc+msQ9KoYg== - 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" @@ -1063,20 +991,6 @@ ast-types@0.9.6: resolved "https://registry.yarnpkg.com/ast-types/-/ast-types-0.9.6.tgz#102c9e9e9005d3e7e3829bf0c4fa24ee862ee9b9" integrity sha1-ECyenpAF0+fjgpvwxPok7oYu6bk= -async-hook-jl@^1.7.6: - version "1.7.6" - resolved "https://registry.yarnpkg.com/async-hook-jl/-/async-hook-jl-1.7.6.tgz#4fd25c2f864dbaf279c610d73bf97b1b28595e68" - integrity sha512-gFaHkFfSxTjvoxDMYqDuGHlcRyUuamF8s+ZTtJdDzqjws4mCt7v0vuV79/E2Wr2/riMQgtG4/yUtXWs1gZ7JMg== - dependencies: - stack-chain "^1.3.7" - -async@~2.1.4: - version "2.1.5" - resolved "https://registry.yarnpkg.com/async/-/async-2.1.5.tgz#e587c68580994ac67fc56ff86d3ac56bdbe810bc" - integrity sha1-5YfGhYCZSsZ/xW/4bTrFa9voELw= - dependencies: - lodash "^4.14.0" - asynckit@^0.4.0: version "0.4.0" resolved "https://registry.yarnpkg.com/asynckit/-/asynckit-0.4.0.tgz#c79ed97f7f34cb8f2ba1bc9790bcc366474b4b79" @@ -1092,13 +1006,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" - aws-sdk@^2.811.0: version "2.1030.0" resolved "https://registry.yarnpkg.com/aws-sdk/-/aws-sdk-2.1030.0.tgz#24a856af3d2b8b37c14a8f59974993661c66fd82" @@ -1114,21 +1021,6 @@ aws-sdk@^2.811.0: uuid "3.3.2" xml2js "0.4.19" -aws-sdk@^2.901.0: - version "2.1031.0" - resolved "https://registry.yarnpkg.com/aws-sdk/-/aws-sdk-2.1031.0.tgz#1556a46907f13d25afd6c5e7af01f9185be3d272" - integrity sha512-XXrQG7l9WMYSg4fZNZctrgPjpTb6HPk1DaM2vXfhMHaNl8TyHjyeMkvU+CC0ctlPqgoCMLrGWI4Zxnq8yrsnXA== - dependencies: - buffer "4.9.2" - events "1.1.1" - ieee754 "1.1.13" - jmespath "0.15.0" - querystring "0.2.0" - sax "1.2.1" - url "0.10.3" - uuid "3.3.2" - xml2js "0.4.19" - aws-sign2@~0.7.0: version "0.7.0" resolved "https://registry.yarnpkg.com/aws-sign2/-/aws-sign2-0.7.0.tgz#b46e890934a9591f2d2f6f86d7e6a9f1b3fe76a8" @@ -1250,15 +1142,6 @@ binary-extensions@^2.0.0: resolved "https://registry.yarnpkg.com/binary-extensions/-/binary-extensions-2.2.0.tgz#75f502eeaf9ffde42fc98829645be4ea76bd9e2d" integrity sha512-jDctJ/IVQbZoJykoeHbhXpOlNBqGNcwXJKJog42E5HDPUwQTSdjCHdihjj0DlnheQ7blbT6dHOafNAiS8ooQKA== -bl@^4.0.3: - version "4.1.0" - resolved "https://registry.yarnpkg.com/bl/-/bl-4.1.0.tgz#451535264182bec2fbbc83a62ab98cf11d9f7b3a" - integrity sha512-1W07cM9gS6DcLperZfFSj+bWLtaPGSOHWhPiGzXmvVJbRLdG82sH/Kn8EtW1VqWVA54AKf2h5k5BbnIbwF3h6w== - dependencies: - buffer "^5.5.0" - inherits "^2.0.4" - readable-stream "^3.4.0" - boxen@^5.0.0: version "5.1.2" resolved "https://registry.yarnpkg.com/boxen/-/boxen-5.1.2.tgz#788cb686fc83c1f486dfa8a40c68fc2b831d2b50" @@ -1495,11 +1378,6 @@ chokidar@^3.5.2: optionalDependencies: fsevents "~2.3.2" -chownr@^1.1.1: - version "1.1.4" - resolved "https://registry.yarnpkg.com/chownr/-/chownr-1.1.4.tgz#6fc9d7b42d32a583596337666e7d08084da2cc6b" - integrity sha512-jJ0bqzaylmJtVnNgzTeSOs8DPavpbYgEr/b0YL8/2GO3xJEhInFmhKMUnEJQjZumK7KXGFhUy89PrsJWlakBVg== - ci-info@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/ci-info/-/ci-info-2.0.0.tgz#67a9e964be31a51e15e5010d58e6f12834002f46" @@ -1546,20 +1424,6 @@ clone-response@^1.0.2: dependencies: mimic-response "^1.0.0" -cls-hooked@^4.2.2: - version "4.2.2" - resolved "https://registry.yarnpkg.com/cls-hooked/-/cls-hooked-4.2.2.tgz#ad2e9a4092680cdaffeb2d3551da0e225eae1908" - integrity sha512-J4Xj5f5wq/4jAvcdgoGsL3G103BtWpZrMo8NEinRltN+xpTZdI+M38pyQqhuFU/P792xkMFvnKSf+Lm81U1bxw== - dependencies: - async-hook-jl "^1.7.6" - emitter-listener "^1.0.1" - semver "^5.4.1" - -cluster-key-slot@^1.1.0: - version "1.1.0" - resolved "https://registry.yarnpkg.com/cluster-key-slot/-/cluster-key-slot-1.1.0.tgz#30474b2a981fb12172695833052bc0d01336d10d" - integrity sha512-2Nii8p3RwAPiFwsnZvukotvow2rIHM+yQ6ZcBXGHdniadkYGZYiGmkHJIbZPIV9nfv7m/U1IPMVVcAhoWFeklw== - co-body@^5.1.1: version "5.2.0" resolved "https://registry.yarnpkg.com/co-body/-/co-body-5.2.0.tgz#5a0a658c46029131e0e3a306f67647302f71c124" @@ -1656,13 +1520,6 @@ concat-map@0.0.1: resolved "https://registry.yarnpkg.com/concat-map/-/concat-map-0.0.1.tgz#d8a96bd77fd68df7793a73036a3ba0d5405d477b" integrity sha1-2Klr13/Wjfd5OnMDajug1UBdR3s= -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" - configstore@^5.0.1: version "5.0.1" resolved "https://registry.yarnpkg.com/configstore/-/configstore-5.0.1.tgz#d365021b5df4b98cdd187d6a3b0e3f6a7cc5ed96" @@ -1787,24 +1644,12 @@ data-urls@^2.0.0: whatwg-mimetype "^2.3.0" whatwg-url "^8.0.0" -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@^4.5.1: version "4.6.3" resolved "https://registry.yarnpkg.com/dateformat/-/dateformat-4.6.3.tgz#556fa6497e5217fedb78821424f8a1c22fa3f4b5" integrity sha512-2P0p0pFGzHS5EMnhdxQi7aJN+iMheud0UhG4dlE1DLAlvL8JHjJJTX/CSm4JXwV0Ka5nGk3zC5mcb5bUQUxxMA== -dayjs@^1.10.4: - version "1.10.7" - resolved "https://registry.yarnpkg.com/dayjs/-/dayjs-1.10.7.tgz#2cf5f91add28116748440866a0a1d26f3a6ce468" - integrity sha512-P6twpd70BcPK34K26uJ1KT3wlhpuOAPoMwJzpsIWUxHZ7wpmbdZL/hQqBDfz7hGurYSa5PhzdhDHtt319hL3ig== - -debug@4, debug@^4.1.0, debug@^4.1.1, debug@^4.3.1, debug@^4.3.2: +debug@4, debug@^4.1.0, debug@^4.1.1, debug@^4.3.2: version "4.3.2" resolved "https://registry.yarnpkg.com/debug/-/debug-4.3.2.tgz#f0a49c18ac8779e31d4a0c6029dfb76873c7428b" integrity sha512-mOp8wKcvj7XxC78zLgw/ZA+6TSgkoE2C/ienthhRD298T7UNwAg9diBpLRxC0mOezLl4B0xV7M0cCO6P/O0Xhw== @@ -1825,13 +1670,6 @@ debug@^3.1.0, debug@^3.2.7: dependencies: ms "^2.1.1" -debug@~3.1.0: - version "3.1.0" - resolved "https://registry.yarnpkg.com/debug/-/debug-3.1.0.tgz#5bb5a0672628b64149566ba16819e61518c67261" - integrity sha512-OX8XqP7/1a9cqkxYw2yXss15f26NKWBpDXQd0/uK/KPqdQhxbPa994hnzjcE2VqQpDslf55723cKPUOGSmMY3g== - dependencies: - ms "2.0.0" - decamelize@^1.2.0: version "1.2.0" resolved "https://registry.yarnpkg.com/decamelize/-/decamelize-1.2.0.tgz#f6534d15148269b20352e7bee26f501f9a191290" @@ -1881,13 +1719,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" - defer-to-connect@^1.0.1: version "1.1.3" resolved "https://registry.yarnpkg.com/defer-to-connect/-/defer-to-connect-1.1.3.tgz#331ae050c08dcf789f8c83a7b81f0ed94f4ac591" @@ -1943,11 +1774,6 @@ delegates@^1.0.0: resolved "https://registry.yarnpkg.com/delegates/-/delegates-1.0.0.tgz#84c6e159b81904fdca59a0ef44cd870d31250f9a" integrity sha1-hMbhWbgZBP3KWaDvRM2HDTElD5o= -denque@^1.1.0: - version "1.5.1" - resolved "https://registry.yarnpkg.com/denque/-/denque-1.5.1.tgz#07f670e29c9a78f8faecb2566a1e2c11929c5cbf" - integrity sha512-XwE+iZ4D6ZUB7mfYRMb5wByE8L74HCn30FBN7sWnXksWc1LO1bPDl67pBR9o/kC4z/xSNAwkMYcGgqDV3BE3Hw== - depd@^2.0.0, depd@~2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/depd/-/depd-2.0.0.tgz#b696163cc757560d09cf22cc8fad1571b79e76df" @@ -2035,13 +1861,6 @@ electron-to-chromium@^1.3.896: resolved "https://registry.yarnpkg.com/electron-to-chromium/-/electron-to-chromium-1.3.900.tgz#5be2c5818a2a012c511b4b43e87b6ab7a296d4f5" integrity sha512-SuXbQD8D4EjsaBaJJxySHbC+zq8JrFfxtb4GIr4E9n1BcROyMcRrJCYQNpJ9N+Wjf5mFp7Wp0OHykd14JNEzzQ== -emitter-listener@^1.0.1: - version "1.1.2" - resolved "https://registry.yarnpkg.com/emitter-listener/-/emitter-listener-1.1.2.tgz#56b140e8f6992375b3d7cb2cab1cc7432d9632e8" - integrity sha512-Bt1sBAGFHY9DKY+4/2cV6izcKJUf5T7/gkdmkxzX/qv9CcGH8xSwVRW5mtX03SWJtRTWSOpzCuWN9rBFYZepZQ== - dependencies: - shimmer "^1.2.0" - emittery@^0.7.1: version "0.7.2" resolved "https://registry.yarnpkg.com/emittery/-/emittery-0.7.2.tgz#25595908e13af0f5674ab419396e2fb394cdfa82" @@ -2067,7 +1886,7 @@ encoding-down@^6.3.0: level-codec "^9.0.0" level-errors "^2.0.0" -end-of-stream@^1.1.0, end-of-stream@^1.4.1: +end-of-stream@^1.1.0: version "1.4.4" resolved "https://registry.yarnpkg.com/end-of-stream/-/end-of-stream-1.4.4.tgz#5ae64a5f45057baf3626ec14da0ca5e4b2431eb0" integrity sha512-+uw1inIHVPQoaVuHzRyXd21icM+cnt4CzD5rW+NC1wjOUSTOs+Te7FOv7AhN7vS9x/oIyhLP5PR1H+phQAHu5Q== @@ -2081,11 +1900,6 @@ end-stream@~0.1.0: dependencies: write-stream "~0.4.3" -ent@^2.2.0: - version "2.2.0" - resolved "https://registry.yarnpkg.com/ent/-/ent-2.2.0.tgz#e964219325a21d05f44466a2f686ed6ce5f5dd1d" - integrity sha1-6WQhkyWiHQX0RGai9obtbOX13R0= - errno@~0.1.1: version "0.1.8" resolved "https://registry.yarnpkg.com/errno/-/errno-0.1.8.tgz#8bb3e9c7d463be4976ff888f76b4809ebc2e811f" @@ -2414,16 +2228,6 @@ fresh@~0.5.2: resolved "https://registry.yarnpkg.com/fresh/-/fresh-0.5.2.tgz#3d8cadd90d976569fa835ab1f8e4b23a105605a7" integrity sha1-PYyt2Q2XZWn6g1qx+OSyOhBWBac= -fs-constants@^1.0.0: - version "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.realpath@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/fs.realpath/-/fs.realpath-1.0.0.tgz#1504ad2523158caa40db4a2787cb01411994ea4f" @@ -2463,14 +2267,6 @@ get-intrinsic@^1.0.2: has "^1.0.3" has-symbols "^1.0.1" -get-object@^0.2.0: - version "0.2.0" - resolved "https://registry.yarnpkg.com/get-object/-/get-object-0.2.0.tgz#d92ff7d5190c64530cda0543dac63a3d47fe8c0c" - integrity sha1-2S/31RkMZFMM2gVD2sY6PUf+jAw= - dependencies: - is-number "^2.0.2" - isobject "^0.2.0" - get-package-type@^0.1.0: version "0.1.0" resolved "https://registry.yarnpkg.com/get-package-type/-/get-package-type-0.1.0.tgz#8de2d803cff44df3bc6c456e6668b36c3926e11a" @@ -2495,13 +2291,6 @@ get-value@^2.0.3, get-value@^2.0.6: resolved "https://registry.yarnpkg.com/get-value/-/get-value-2.0.6.tgz#dc15ca1c672387ca76bd37ac0a395ba2042a2c28" integrity sha1-3BXKHGcjh8p2vTesCjlbogQqLCg= -get-value@^3.0.0, get-value@^3.0.1: - version "3.0.1" - resolved "https://registry.yarnpkg.com/get-value/-/get-value-3.0.1.tgz#5efd2a157f1d6a516d7524e124ac52d0a39ef5a8" - integrity sha512-mKZj9JLQrwMBtj5wxi6MH8Z5eSKaERpAwjg43dPtlGI1ZVEgH/qC7T8/6R2OBSUA+zzHBZgICsVJaEIV2tKTDA== - dependencies: - isobject "^3.0.1" - getpass@^0.1.1: version "0.1.7" resolved "https://registry.yarnpkg.com/getpass/-/getpass-0.1.7.tgz#5eff8e3e684d569ae4cb2b1282604e8ba62149fa" @@ -2551,32 +2340,6 @@ globals@^11.1.0: resolved "https://registry.yarnpkg.com/globals/-/globals-11.12.0.tgz#ab8795338868a0babd8525758018c2a7eb95c42e" integrity sha512-WOBp/EEGUiIsJSp7wcv/y6MO+lV9UoncWqxuFfm8eBwzWNgyfBd6Gz+IeKQ9jCmyhoH99g15M3T+QaVHFjizVA== -google-auth-library@~0.10.0: - version "0.10.0" - resolved "https://registry.yarnpkg.com/google-auth-library/-/google-auth-library-0.10.0.tgz#6e15babee85fd1dd14d8d128a295b6838d52136e" - integrity sha1-bhW6vuhf0d0U2NEoopW2g41SE24= - dependencies: - gtoken "^1.2.1" - jws "^3.1.4" - lodash.noop "^3.0.1" - request "^2.74.0" - -google-p12-pem@^0.1.0: - version "0.1.2" - resolved "https://registry.yarnpkg.com/google-p12-pem/-/google-p12-pem-0.1.2.tgz#33c46ab021aa734fa0332b3960a9a3ffcb2f3177" - integrity sha1-M8RqsCGqc0+gMys5YKmj/8svMXc= - dependencies: - node-forge "^0.7.1" - -googleapis@^16.0.0: - version "16.1.0" - resolved "https://registry.yarnpkg.com/googleapis/-/googleapis-16.1.0.tgz#0f19f2d70572d918881a0f626e3b1a2fa8629576" - integrity sha1-Dxny1wVy2RiIGg9ibjsaL6hilXY= - dependencies: - async "~2.1.4" - google-auth-library "~0.10.0" - string-template "~1.0.0" - got@^11.8.1: version "11.8.2" resolved "https://registry.yarnpkg.com/got/-/got-11.8.2.tgz#7abb3959ea28c31f3576f1576c1effce23f33599" @@ -2621,45 +2384,6 @@ growly@^1.3.0: resolved "https://registry.yarnpkg.com/growly/-/growly-1.3.0.tgz#f10748cbe76af964b7c96c93c6bcc28af120c081" integrity sha1-8QdIy+dq+WS3yWyTxrzCivEgwIE= -gtoken@^1.2.1: - version "1.2.3" - resolved "https://registry.yarnpkg.com/gtoken/-/gtoken-1.2.3.tgz#5509571b8afd4322e124cf66cf68115284c476d8" - integrity sha512-wQAJflfoqSgMWrSBk9Fg86q+sd6s7y6uJhIvvIPz++RElGlMtEqsdAR2oWwZ/WTEtp7P9xFbJRrT976oRgzJ/w== - dependencies: - google-p12-pem "^0.1.0" - jws "^3.0.0" - mime "^1.4.1" - request "^2.72.0" - -gulp-header@^1.7.1: - version "1.8.12" - resolved "https://registry.yarnpkg.com/gulp-header/-/gulp-header-1.8.12.tgz#ad306be0066599127281c4f8786660e705080a84" - integrity sha512-lh9HLdb53sC7XIZOYzTXM4lFuXElv3EVkSDhsd7DoJBj7hm+Ni7D3qYbb+Rr8DuM8nRanBvkVO9d7askreXGnQ== - dependencies: - concat-with-sourcemaps "*" - lodash.template "^4.4.0" - through2 "^2.0.0" - -handlebars-utils@^1.0.2, handlebars-utils@^1.0.4, handlebars-utils@^1.0.6: - version "1.0.6" - resolved "https://registry.yarnpkg.com/handlebars-utils/-/handlebars-utils-1.0.6.tgz#cb9db43362479054782d86ffe10f47abc76357f9" - integrity sha512-d5mmoQXdeEqSKMtQQZ9WkiUcO1E3tPbWxluCK9hVgIDPzQa9WsKo3Lbe/sGflTe7TomHEeZaOgwIkyIr1kfzkw== - dependencies: - kind-of "^6.0.0" - typeof-article "^0.1.1" - -handlebars@^4.7.6, handlebars@^4.7.7: - version "4.7.7" - resolved "https://registry.yarnpkg.com/handlebars/-/handlebars-4.7.7.tgz#9ce33416aad02dbd6c8fafa8240d5d98004945a1" - integrity sha512-aAcXm5OAfE/8IXkcZvCepKU3VzW1/39Fb5ZuqMtgI/hT8X2YgoMvBY5dLhq/cpOvw7Lk1nK/UF71aLG/ZnVYRA== - dependencies: - minimist "^1.2.5" - neo-async "^2.6.0" - source-map "^0.6.1" - wordwrap "^1.0.0" - optionalDependencies: - uglify-js "^3.1.4" - har-schema@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/har-schema/-/har-schema-2.0.0.tgz#a94c2224ebcac04782a0d9035521f24735b7ec92" @@ -2713,14 +2437,6 @@ has-value@^1.0.0: has-values "^1.0.0" isobject "^3.0.0" -has-value@^2.0.2: - version "2.0.2" - resolved "https://registry.yarnpkg.com/has-value/-/has-value-2.0.2.tgz#d0f12e8780ba8e90e66ad1a21c707fdb67c25658" - integrity sha512-ybKOlcRsK2MqrM3Hmz/lQxXHZ6ejzSPzpNabKB45jb5qDgJvKPa3SdapTsTLwEb9WltgWpOmNax7i+DzNOk4TA== - dependencies: - get-value "^3.0.0" - has-values "^2.0.1" - has-values@^0.1.4: version "0.1.4" resolved "https://registry.yarnpkg.com/has-values/-/has-values-0.1.4.tgz#6d61de95d91dfca9b9a02089ad384bff8f62b771" @@ -2734,13 +2450,6 @@ has-values@^1.0.0: is-number "^3.0.0" kind-of "^4.0.0" -has-values@^2.0.1: - version "2.0.1" - resolved "https://registry.yarnpkg.com/has-values/-/has-values-2.0.1.tgz#3876200ff86d8a8546a9264a952c17d5fc17579d" - integrity sha512-+QdH3jOmq9P8GfdjFg0eJudqx1FqU62NQJ4P16rOEHeRdl7ckgwn6uqQjzYE0ZoHVV/e5E2esuJ5Gl5+HUW19w== - dependencies: - kind-of "^6.0.2" - has-yarn@^2.1.0: version "2.1.0" resolved "https://registry.yarnpkg.com/has-yarn/-/has-yarn-2.1.0.tgz#137e11354a7b5bf11aa5cb649cf0c6f3ff2b2e77" @@ -2753,39 +2462,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.9" resolved "https://registry.yarnpkg.com/hosted-git-info/-/hosted-git-info-2.8.9.tgz#dffc0bf9a21c02209090f2aa69429e1414daf3f9" @@ -2803,14 +2479,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.5.0" resolved "https://registry.yarnpkg.com/http-assert/-/http-assert-1.5.0.tgz#c389ccd87ac16ed2dfa6246fd73b926aa00e6b8f" @@ -2942,7 +2610,7 @@ inflight@^1.0.4: once "^1.3.0" wrappy "1" -inherits@2, inherits@2.0.4, inherits@^2.0.3, inherits@^2.0.4, inherits@~2.0.1, inherits@~2.0.3: +inherits@2, inherits@2.0.4, inherits@^2.0.3, inherits@^2.0.4, inherits@~2.0.1: version "2.0.4" resolved "https://registry.yarnpkg.com/inherits/-/inherits-2.0.4.tgz#0fa2c64f932917c3433a0ded55363aae37416b7c" integrity sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ== @@ -2962,23 +2630,6 @@ ini@~1.3.0: resolved "https://registry.yarnpkg.com/ini/-/ini-1.3.8.tgz#a29da425b48806f34767a4efce397269af28432c" integrity sha512-JV/yugV2uzW5iMRSiZAyDtQd+nxtUnjeLt0acNdw98kKLrvuRVyB80tsREOE7yvGVgalhZ6RNXCmEHkUKBKxew== -ioredis@^4.27.1: - version "4.28.0" - resolved "https://registry.yarnpkg.com/ioredis/-/ioredis-4.28.0.tgz#5a2be3f37ff2075e2332f280eaeb02ab4d9ff0d3" - integrity sha512-I+zkeeWp3XFgPT2CtJKxvaF5FjGBGt4yGYljRjQecdQKteThuAsKqffeF1lgHVlYnuNeozRbPOCDNZ7tDWPeig== - dependencies: - cluster-key-slot "^1.1.0" - debug "^4.3.1" - denque "^1.1.0" - lodash.defaults "^4.2.0" - lodash.flatten "^4.4.0" - lodash.isarguments "^3.1.0" - p-map "^2.1.0" - redis-commands "1.7.0" - redis-errors "^1.2.0" - redis-parser "^3.0.0" - standard-as-callback "^2.1.0" - is-accessor-descriptor@^0.1.6: version "0.1.6" resolved "https://registry.yarnpkg.com/is-accessor-descriptor/-/is-accessor-descriptor-0.1.6.tgz#a9e12cb3ae8d876727eeef3843f8a0897b5c98d6" @@ -3066,13 +2717,6 @@ is-docker@^2.0.0: resolved "https://registry.yarnpkg.com/is-docker/-/is-docker-2.2.1.tgz#33eeabe23cfe86f14bde4408a02c0cfb853acdaa" integrity sha512-F+i2BKsFrH66iaUFc0woD8sLy8getkwTwtOBjvs56Cx4CgJDeKQeqfz8wAYiSb8JOprWhHH5p77PbmYCvvUuXQ== -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" @@ -3127,13 +2771,6 @@ is-npm@^5.0.0: resolved "https://registry.yarnpkg.com/is-npm/-/is-npm-5.0.0.tgz#43e8d65cc56e1b67f8d47262cf667099193f45a8" integrity sha512-WW/rQLOazUq+ST/bCAVBp/2oMERWLsR7OrKyt052dNDk4DHcDE0/7QSXITlmi+VBcV13DfIbysG3tZJm5RfdBA== -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" @@ -3151,13 +2788,6 @@ is-obj@^2.0.0: resolved "https://registry.yarnpkg.com/is-obj/-/is-obj-2.0.0.tgz#473fb05d973705e3fd9620545018ca8e22ef4982" integrity sha512-drqDG3cbczxxEJRoOXcOjtdp1J/lyp1mNn0xaznRs8+muBhgQcrnbspox5X5fOw0HnMnbfDzvnEMEtqDEJEo8w== -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.2: version "3.0.3" resolved "https://registry.yarnpkg.com/is-path-inside/-/is-path-inside-3.0.3.tgz#d231362e53a07ff2b0e0ea7fed049161ffd16283" @@ -3175,13 +2805,6 @@ is-potential-custom-element-name@^1.0.1: resolved "https://registry.yarnpkg.com/is-potential-custom-element-name/-/is-potential-custom-element-name-1.0.1.tgz#171ed6f19e3ac554394edf78caa05784a45bebb5" integrity sha512-bCYeRA2rVibKZd+s2625gGnGF/t7DSqDs4dP7CrLA1m7jKWz6pps0LpYLJN8Q64HtmPKJ1hrN3nzPNKFEKOUiQ== -is-self-closing@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/is-self-closing/-/is-self-closing-1.0.1.tgz#5f406b527c7b12610176320338af0fa3896416e4" - integrity sha512-E+60FomW7Blv5GXTlYee2KDrnG6srxF7Xt1SjrhWUGUEsTFIqY/nq2y3DaftCsgUMdh89V07IVfhY9KIJhLezg== - dependencies: - self-closing-tags "^1.0.1" - is-stream@^1.1.0: version "1.1.0" resolved "https://registry.yarnpkg.com/is-stream/-/is-stream-1.1.0.tgz#12d4a3dd4e68e0b79ceb8dbc84173ae80d91ca44" @@ -3228,7 +2851,7 @@ isarray@0.0.1: resolved "https://registry.yarnpkg.com/isarray/-/isarray-0.0.1.tgz#8a18acfca9a8f4177e09abfc6038939b05d1eedf" integrity sha1-ihis/Kmo9Bd+Cav8YDiTmwXR7t8= -isarray@1.0.0, isarray@^1.0.0, isarray@~1.0.0: +isarray@1.0.0, isarray@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/isarray/-/isarray-1.0.0.tgz#bb935d48582cba168c06834957a54a3e07124f11" integrity sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE= @@ -3238,11 +2861,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" @@ -3799,7 +3417,7 @@ json5@^2.1.2: dependencies: minimist "^1.2.5" -jsonwebtoken@^8.2.0, jsonwebtoken@^8.5.1: +jsonwebtoken@^8.2.0: version "8.5.1" resolved "https://registry.yarnpkg.com/jsonwebtoken/-/jsonwebtoken-8.5.1.tgz#00e71e0b8df54c2121a1f26137df2280673bcc0d" integrity sha512-XjwVfRS6jTMsqYs0EsuJ4LGxXV14zQybNd4L2r0UvbVnSF9Af8x7p5MzbJ90Ioz/9TI41/hTCvznF/loiSzn8w== @@ -3845,7 +3463,7 @@ jwa@^1.4.1: ecdsa-sig-formatter "1.0.11" safe-buffer "^5.0.1" -jws@^3.0.0, jws@^3.1.4, jws@^3.2.2: +jws@^3.2.2: version "3.2.2" resolved "https://registry.yarnpkg.com/jws/-/jws-3.2.2.tgz#001099f3639468c9414000e99995fa52fb478304" integrity sha512-YHlZCB6lMTllWDtSPHz/ZXTsi8S00usEV6v1tjq8tOUZzw7DpSDWVXjXDre6ed1w/pd495ODpHZYSdkRTsa0HA== @@ -3874,7 +3492,7 @@ keyv@^4.0.0: dependencies: json-buffer "3.0.1" -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= @@ -3888,12 +3506,12 @@ 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== -kind-of@^6.0.0, kind-of@^6.0.2, kind-of@^6.0.3: +kind-of@^6.0.0, kind-of@^6.0.2: version "6.0.3" resolved "https://registry.yarnpkg.com/kind-of/-/kind-of-6.0.3.tgz#07c05034a6c349fa06e24fa35aa76db4580ce4dd" integrity sha512-dcS1ul+9tmeD95T+x28/ehLgd9mENa3LsvDTtzm3vyBEO7RPptvAD+t44WVXaUjTBRcrpFeFlC8WCruUR456hw== @@ -4144,31 +3762,11 @@ 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.defaults@^4.2.0: - version "4.2.0" - resolved "https://registry.yarnpkg.com/lodash.defaults/-/lodash.defaults-4.2.0.tgz#d09178716ffea4dde9e5fb7b37f6f0802274580c" - integrity sha1-0JF4cW/+pN3p5ft7N/bwgCJ0WAw= - -lodash.flatten@^4.4.0: - version "4.4.0" - resolved "https://registry.yarnpkg.com/lodash.flatten/-/lodash.flatten-4.4.0.tgz#f31c22225a9632d2bbf8e4addbef240aa765a61f" - integrity sha1-8xwiIlqWMtK7+OSt2+8kCqdlph8= - lodash.includes@^4.3.0: version "4.3.0" resolved "https://registry.yarnpkg.com/lodash.includes/-/lodash.includes-4.3.0.tgz#60bb98a87cb923c68ca1e51325483314849f553f" integrity sha1-YLuYqHy5I8aMoeUTJUgzFISfVT8= -lodash.isarguments@^3.1.0: - version "3.1.0" - resolved "https://registry.yarnpkg.com/lodash.isarguments/-/lodash.isarguments-3.1.0.tgz#2f573d85c6a24289ff00663b491c1d338ff3458a" - integrity sha1-L1c9hcaiQon/AGY7SRwdM4/zRYo= - lodash.isboolean@^3.0.3: version "3.0.3" resolved "https://registry.yarnpkg.com/lodash.isboolean/-/lodash.isboolean-3.0.3.tgz#6c2e171db2a257cd96802fd43b01b20d5f5870f6" @@ -4194,32 +3792,12 @@ lodash.isstring@^4.0.1: resolved "https://registry.yarnpkg.com/lodash.isstring/-/lodash.isstring-4.0.1.tgz#d527dfb5456eca7cc9bb95d5daeaf88ba54a5451" integrity sha1-1SfftUVuynzJu5XV2ur4i6VKVFE= -lodash.noop@^3.0.1: - version "3.0.1" - resolved "https://registry.yarnpkg.com/lodash.noop/-/lodash.noop-3.0.1.tgz#38188f4d650a3a474258439b96ec45b32617133c" - integrity sha1-OBiPTWUKOkdCWEObluxFsyYXEzw= - lodash.once@^4.0.0: version "4.1.1" resolved "https://registry.yarnpkg.com/lodash.once/-/lodash.once-4.1.1.tgz#0dd3971213c7c56df880977d504c88fb471a97ac" integrity sha1-DdOXEhPHxW34gJd9UEyI+0cal6w= -lodash.template@^4.4.0: - version "4.5.0" - resolved "https://registry.yarnpkg.com/lodash.template/-/lodash.template-4.5.0.tgz#f976195cf3f347d0d5f52483569fe8031ccce8ab" - integrity sha512-84vYFxIkmidUiFxidA/KjjH9pAycqW+h980j7Fuz5qxRtO9pgB7MDFTdys1N7A5mcucRiDyEq4fusljItR1T/A== - dependencies: - lodash._reinterpolate "^3.0.0" - lodash.templatesettings "^4.0.0" - -lodash.templatesettings@^4.0.0: - version "4.2.0" - resolved "https://registry.yarnpkg.com/lodash.templatesettings/-/lodash.templatesettings-4.2.0.tgz#e481310f049d3cf6d47e912ad09313b154f0fb33" - integrity sha512-stgLz+i3Aa9mZgnjr/O+v9ruKZsPsndy7qPZOchbqk2cnTU1ZaldKK+v7m54WoKIyxiuMZTKT2H81F8BeAc3ZQ== - dependencies: - lodash._reinterpolate "^3.0.0" - -lodash@^4.14.0, lodash@^4.17.20, lodash@^4.17.21, lodash@^4.7.0: +lodash@^4.7.0: version "4.17.21" resolved "https://registry.yarnpkg.com/lodash/-/lodash-4.17.21.tgz#679591c564c3bffaae8454cf0b3df370c3d6911c" integrity sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg== @@ -4304,7 +3882,7 @@ methods@^1.1.2: resolved "https://registry.yarnpkg.com/methods/-/methods-1.1.2.tgz#5529a4d67654134edcc5266656835b0f851afcee" integrity sha1-VSmk1nZUE07cxSZmVoNbD4Ua/O4= -micromatch@^3.1.4, micromatch@^3.1.5: +micromatch@^3.1.4: version "3.1.10" resolved "https://registry.yarnpkg.com/micromatch/-/micromatch-3.1.10.tgz#70859bc95c9840952f359a068a3fc49f9ecfac23" integrity sha512-MWikgl9n9M3w+bpsY3He8L+w9eF9338xRl8IAO5viDizwSzziFEyUzo2xrrloB64ADbTf8uA8vRqqttDTOmccg== @@ -4355,11 +3933,6 @@ mime-types@^2.1.18, mime-types@~2.1.19, mime-types@~2.1.24: dependencies: mime-db "1.51.0" -mime@^1.4.1: - version "1.6.0" - resolved "https://registry.yarnpkg.com/mime/-/mime-1.6.0.tgz#32cd9e5c64553bd58d19a568af452acff04981b1" - integrity sha512-x0Vn8spI+wuJ1O6S7gnbaQg8Pxh4NNHb7KSINmEWKiPE4RKOplvijn+NkmYmmRgP68mc70j2EbeTFRsrswaQeg== - mime@^2.4.6: version "2.6.0" resolved "https://registry.yarnpkg.com/mime/-/mime-2.6.0.tgz#a2a682a95cd4d0cb1d6257e28f83da7e35800367" @@ -4400,11 +3973,6 @@ mixin-deep@^1.2.0: for-in "^1.0.2" is-extendable "^1.0.1" -mkdirp-classic@^0.5.2: - version "0.5.3" - resolved "https://registry.yarnpkg.com/mkdirp-classic/-/mkdirp-classic-0.5.3.tgz#fa10c9115cc6d8865be221ba47ee9bed78601113" - integrity sha512-gKLcREMhtuZRwRAfqP3RFW+TK4JqApVBtOIftVgjuABpAtpxhPGaDcfvbhNvD0B8iD1oUr/txX35NjcaY6Ns/A== - mkdirp@^0.5.0: version "0.5.5" resolved "https://registry.yarnpkg.com/mkdirp/-/mkdirp-0.5.5.tgz#d91cefd62d1436ca0f41620e251288d420099def" @@ -4412,11 +3980,6 @@ mkdirp@^0.5.0: 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== - mri@1.1.4: version "1.1.4" resolved "https://registry.yarnpkg.com/mri/-/mri-1.1.4.tgz#7cb1dd1b9b40905f1fac053abe25b6720f44744a" @@ -4464,11 +4027,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== - nice-try@^1.0.4: version "1.0.5" resolved "https://registry.yarnpkg.com/nice-try/-/nice-try-1.0.5.tgz#a3378a7696ce7d223e88fc9b764bd7ef1089e366" @@ -4486,11 +4044,6 @@ node-fetch@^2.6.1: dependencies: whatwg-url "^5.0.0" -node-forge@^0.7.1: - version "0.7.6" - resolved "https://registry.yarnpkg.com/node-forge/-/node-forge-0.7.6.tgz#fdf3b418aee1f94f0ef642cd63486c77ca9724ac" - integrity sha512-sol30LUpz1jQFBjOKwbjxijiE3b6pjd74YwfD0fJOKPjF+fONKb2Yg8rYgS6+bK6VDl+/wfr4IYpC7jDzLUIfw== - node-gyp-build@~4.1.0: version "4.1.1" resolved "https://registry.yarnpkg.com/node-gyp-build/-/node-gyp-build-4.1.1.tgz#d7270b5d86717068d114cc57fff352f96d745feb" @@ -4717,11 +4270,6 @@ p-locate@^4.1.0: dependencies: p-limit "^2.2.0" -p-map@^2.1.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/p-map/-/p-map-2.1.0.tgz#310928feef9c9ecc65b68b17693018a665cea175" - integrity sha512-y3b8Kpd8OAN444hxfBbFfj1FY/RjtTd8tzYwhUqNYXx0fXx2iX4maP4Qr6qhIKbQXI02wTLAda4fYUbDagTUFw== - p-try@^2.0.0: version "2.2.0" resolved "https://registry.yarnpkg.com/p-try/-/p-try-2.2.0.tgz#cb2868540e313d61de58fafbe35ce9004d5540e6" @@ -4762,14 +4310,6 @@ pascalcase@^0.1.1: resolved "https://registry.yarnpkg.com/pascalcase/-/pascalcase-0.1.1.tgz#b363e55e8006ca6fe21784d2db22bd15d7917f14" integrity sha1-s2PlXoAGym/iF4TS2yK9FdeRfxQ= -passport-google-auth@^1.0.2: - version "1.0.2" - resolved "https://registry.yarnpkg.com/passport-google-auth/-/passport-google-auth-1.0.2.tgz#8b300b5aa442ef433de1d832ed3112877d0b2938" - integrity sha1-izALWqRC70M94dgy7TESh30LKTg= - dependencies: - googleapis "^16.0.0" - passport-strategy "1.x" - passport-google-oauth1@1.x.x: version "1.0.0" resolved "https://registry.yarnpkg.com/passport-google-oauth1/-/passport-google-oauth1-1.0.0.tgz#af74a803df51ec646f66a44d82282be6f108e0cc" @@ -4827,7 +4367,7 @@ passport-oauth2@1.x.x: uid2 "0.0.x" utils-merge "1.x.x" -passport-strategy@1.x, passport-strategy@1.x.x, passport-strategy@^1.0.0: +passport-strategy@1.x.x, passport-strategy@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/passport-strategy/-/passport-strategy-1.0.0.tgz#b5539aa8fc225a3d1ad179476ddf236b440f52e4" integrity sha1-tVOaqPwiWj0a0XlHbd8ja0QPUuQ= @@ -5124,11 +4664,6 @@ private@^0.1.6, private@~0.1.5: resolved "https://registry.yarnpkg.com/private/-/private-0.1.8.tgz#2381edb3689f7a53d653190060fcf822d2f368ff" integrity sha512-VvivMrbvd2nKkiG38qjULzlc+4Vx4wm/whI9pQD35YrARNnhxeiRktSOhSukRLFNlzg6Br/cJPet5J/u19r/mg== -process-nextick-args@~2.0.0: - version "2.0.1" - resolved "https://registry.yarnpkg.com/process-nextick-args/-/process-nextick-args-2.0.1.tgz#7820d9b16120cc55ca9ae7792680ae7dba6d7fe2" - integrity sha512-3ouUOpQhtgrbOa17J7+uxOTpITYWaGP7/AhoR3+A+/1e9skrzelGi/dXzEYyvbxubEF6Wn2ypscTKiKJFFn1ag== - prompts@^2.0.1: version "2.4.2" resolved "https://registry.yarnpkg.com/prompts/-/prompts-2.4.2.tgz#7b57e73b3a48029ad10ebd44f74b01722a4cb069" @@ -5268,7 +4803,7 @@ readable-stream@1.1.14: isarray "0.0.1" string_decoder "~0.10.x" -"readable-stream@2 || 3", readable-stream@^3.0.0, readable-stream@^3.1.1, readable-stream@^3.4.0, readable-stream@^3.6.0: +"readable-stream@2 || 3", readable-stream@^3.0.0, readable-stream@^3.4.0, readable-stream@^3.6.0: version "3.6.0" resolved "https://registry.yarnpkg.com/readable-stream/-/readable-stream-3.6.0.tgz#337bbda3adc0706bd3e024426a286d4b4b2c9198" integrity sha512-BViHy7LKeTz4oNnkcLJ+lVSL6vpiFeX6/d3oSH8zCW7UxP2onchk+vTGB143xuFjHS3deTgkKoXXymXqymiIdA== @@ -5282,19 +4817,6 @@ readable-stream@~0.0.2: resolved "https://registry.yarnpkg.com/readable-stream/-/readable-stream-0.0.4.tgz#f32d76e3fb863344a548d79923007173665b3b8d" integrity sha1-8y124/uGM0SlSNeZIwBxc2ZbO40= -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== - dependencies: - core-util-is "~1.0.0" - inherits "~2.0.3" - isarray "~1.0.0" - process-nextick-args "~2.0.0" - safe-buffer "~5.1.1" - string_decoder "~1.1.1" - util-deprecate "~1.0.1" - readdirp@~3.6.0: version "3.6.0" resolved "https://registry.yarnpkg.com/readdirp/-/readdirp-3.6.0.tgz#74a370bd857116e245b29cc97340cd431a02a6c7" @@ -5312,23 +4834,6 @@ recast@^0.11.17: private "~0.1.5" source-map "~0.5.0" -redis-commands@1.7.0: - version "1.7.0" - resolved "https://registry.yarnpkg.com/redis-commands/-/redis-commands-1.7.0.tgz#15a6fea2d58281e27b1cd1acfb4b293e278c3a89" - integrity sha512-nJWqw3bTFy21hX/CPKHth6sfhZbdiHP6bTawSgQBlKOVRG7EZkfHbbHwQJnrE4vsQf0CMNE+3gJ4Fmm16vdVlQ== - -redis-errors@^1.0.0, redis-errors@^1.2.0: - version "1.2.0" - resolved "https://registry.yarnpkg.com/redis-errors/-/redis-errors-1.2.0.tgz#eb62d2adb15e4eaf4610c04afe1529384250abad" - integrity sha1-62LSrbFeTq9GEMBK/hUpOEJQq60= - -redis-parser@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/redis-parser/-/redis-parser-3.0.0.tgz#b66d828cdcafe6b4b8a428a7def4c6bcac31c8b4" - integrity sha1-tm2CjNyv5rS4pCin3vTGvKwxyLQ= - dependencies: - redis-errors "^1.0.0" - regex-not@^1.0.0, regex-not@^1.0.2: version "1.0.2" resolved "https://registry.yarnpkg.com/regex-not/-/regex-not-1.0.2.tgz#1f4ece27e00b0b65e0247a6810e6a85d83a5752c" @@ -5351,21 +4856,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" @@ -5381,7 +4871,7 @@ repeat-string@^1.6.1: resolved "https://registry.yarnpkg.com/repeat-string/-/repeat-string-1.6.1.tgz#8dcae470e1c88abc2d600fff4a776286da75e637" integrity sha1-jcrkcOHIirwtYA//Sndihtp15jc= -request@^2.72.0, request@^2.74.0, request@^2.88.0: +request@^2.88.0: version "2.88.2" resolved "https://registry.yarnpkg.com/request/-/request-2.88.2.tgz#d73c918731cb5a87da047e207234146f664d12b3" integrity sha512-MsvtOrfG9ZcrOwAW+Qi+F6HbD0CWXEh9ou77uOb7FM2WPhwT7smM833PzanhJLsgXjN89Ir6V2PczXNnMpwKhw== @@ -5491,7 +4981,7 @@ rsvp@^4.8.4: resolved "https://registry.yarnpkg.com/rsvp/-/rsvp-4.8.5.tgz#c8f155311d167f68f21e168df71ec5b083113734" integrity sha512-nfMOlASu9OnRJo1mbEk2cz0D56a1MBNrJ7orjRZQG10XDyuvwksKbuXNp6qa+kbn839HwjwhBzhFmdsaEAfauA== -safe-buffer@5.1.2, safe-buffer@~5.1.0, safe-buffer@~5.1.1: +safe-buffer@5.1.2, safe-buffer@~5.1.1: version "5.1.2" resolved "https://registry.yarnpkg.com/safe-buffer/-/safe-buffer-5.1.2.tgz#991ec69d296e0313747d59bdfd2b745c35f8828d" integrity sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g== @@ -5533,11 +5023,6 @@ sane@^4.0.3: minimist "^1.1.1" walker "~1.0.5" -sanitize-s3-objectkey@^0.0.1: - version "0.0.1" - resolved "https://registry.yarnpkg.com/sanitize-s3-objectkey/-/sanitize-s3-objectkey-0.0.1.tgz#efa9887cd45275b40234fb4bb12fc5754fe64e7e" - integrity sha512-ZTk7aqLxy4sD40GWcYWoLfbe05XLmkKvh6vGKe13ADlei24xlezcvjgKy1qRArlaIbIMYaqK7PCalvZtulZlaQ== - sax@1.2.1, sax@>=0.6.0: version "1.2.1" resolved "https://registry.yarnpkg.com/sax/-/sax-1.2.1.tgz#7b8e656190b228e81a66aea748480d828cd2d37a" @@ -5555,11 +5040,6 @@ saxes@^5.0.1: dependencies: xmlchars "^2.2.0" -self-closing-tags@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/self-closing-tags/-/self-closing-tags-1.0.1.tgz#6c5fa497994bb826b484216916371accee490a5d" - integrity sha512-7t6hNbYMxM+VHXTgJmxwgZgLGktuXtVVD5AivWzNTdJBM4DBjnDKDzkf2SrNjihaArpeJYNjxkELBu1evI4lQA== - semver-diff@^3.1.1: version "3.1.1" resolved "https://registry.yarnpkg.com/semver-diff/-/semver-diff-3.1.1.tgz#05f77ce59f325e00e2706afd67bb506ddb1ca32b" @@ -5567,7 +5047,7 @@ semver-diff@^3.1.1: dependencies: semver "^6.3.0" -"semver@2 || 3 || 4 || 5", semver@^5.4.1, semver@^5.5.0, semver@^5.6.0, semver@^5.7.1: +"semver@2 || 3 || 4 || 5", semver@^5.5.0, semver@^5.6.0, semver@^5.7.1: version "5.7.1" resolved "https://registry.yarnpkg.com/semver/-/semver-5.7.1.tgz#a954f931aeba508d307bbf069eff0c01c96116f7" integrity sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ== @@ -5643,11 +5123,6 @@ shellwords@^0.1.1: resolved "https://registry.yarnpkg.com/shellwords/-/shellwords-0.1.1.tgz#d6b9181c1a48d397324c84871efbcfc73fc0654b" integrity sha512-vFwSUfQvqybiICwZY5+DAWIPLKsWO31Q91JSKl3UYv+K5c2QRPzn0qzec6QPu1Qc9eHYItiP3NdJqNVqetYAww== -shimmer@^1.2.0: - version "1.2.1" - resolved "https://registry.yarnpkg.com/shimmer/-/shimmer-1.2.1.tgz#610859f7de327b587efebf501fb43117f9aff337" - integrity sha512-sQTKC1Re/rM6XyFM6fIAGHRPVGvyXfgzIDvzoq608vM+jeyVD0Tu1E6Np0Kc2zAIFWIj963V2800iF/9LPieQw== - side-channel@^1.0.4: version "1.0.4" resolved "https://registry.yarnpkg.com/side-channel/-/side-channel-1.0.4.tgz#efce5c8fdc104ee751b25c58d4290011fa5ea2cf" @@ -5821,11 +5296,6 @@ sshpk@^1.7.0: safer-buffer "^2.0.2" tweetnacl "~0.14.0" -stack-chain@^1.3.7: - version "1.3.7" - resolved "https://registry.yarnpkg.com/stack-chain/-/stack-chain-1.3.7.tgz#d192c9ff4ea6a22c94c4dd459171e3f00cea1285" - integrity sha1-0ZLJ/06moiyUxN1FkXHj8AzqEoU= - stack-utils@^2.0.2: version "2.0.5" resolved "https://registry.yarnpkg.com/stack-utils/-/stack-utils-2.0.5.tgz#d25265fca995154659dbbfba3b49254778d2fdd5" @@ -5833,11 +5303,6 @@ stack-utils@^2.0.2: dependencies: escape-string-regexp "^2.0.0" -standard-as-callback@^2.1.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/standard-as-callback/-/standard-as-callback-2.1.0.tgz#8953fc05359868a77b5b9739a665c5977bb7df45" - integrity sha512-qoRRSyROncaz1z0mvYqIE4lCd9p2R90i6GxW3uZv5ucSu8tU7B5HXUP1gG8pVZsYNVaXjk8ClXHPttLyxAL48A== - static-extend@^0.1.1: version "0.1.2" resolved "https://registry.yarnpkg.com/static-extend/-/static-extend-0.1.2.tgz#60809c39cbff55337226fd5e0b520f341f1fb5c6" @@ -5869,11 +5334,6 @@ string-length@^4.0.1: char-regex "^1.0.2" strip-ansi "^6.0.0" -string-template@~1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/string-template/-/string-template-1.0.0.tgz#9e9f2233dc00f218718ec379a28a5673ecca8b96" - integrity sha1-np8iM9wA8hhxjsN5oopWc+zKi5Y= - string-width@^4.0.0, string-width@^4.1.0, string-width@^4.2.0, string-width@^4.2.2: version "4.2.3" resolved "https://registry.yarnpkg.com/string-width/-/string-width-4.2.3.tgz#269c7117d27b05ad2e536830a8ec895ef9c6d010" @@ -5895,13 +5355,6 @@ string_decoder@~0.10.x: resolved "https://registry.yarnpkg.com/string_decoder/-/string_decoder-0.10.31.tgz#62e203bc41766c6c28c9fc84301dab1c5310fa94" integrity sha1-YuIDvEF2bGwoyfyEMB2rHFMQ+pQ= -string_decoder@~1.1.1: - version "1.1.1" - resolved "https://registry.yarnpkg.com/string_decoder/-/string_decoder-1.1.1.tgz#9cf1611ba62685d7030ae9e4ba34149c3af03fc8" - integrity sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg== - dependencies: - safe-buffer "~5.1.0" - strip-ansi@^6.0.0, strip-ansi@^6.0.1: version "6.0.1" resolved "https://registry.yarnpkg.com/strip-ansi/-/strip-ansi-6.0.1.tgz#9e26c63d30f53443e9489495b2105d37b67a85d9" @@ -5934,11 +5387,6 @@ strip-json-comments@~2.0.1: resolved "https://registry.yarnpkg.com/strip-json-comments/-/strip-json-comments-2.0.1.tgz#3c531942e908c2697c0ec344858c286c7ca0a60a" integrity sha1-PFMZQukIwml8DsNEhYwobHygpgo= -striptags@^3.1.1: - version "3.2.0" - resolved "https://registry.yarnpkg.com/striptags/-/striptags-3.2.0.tgz#cc74a137db2de8b0b9a370006334161f7dd67052" - integrity sha512-g45ZOGzHDMe2bdYMdIvdAfCQkCTDMGBazSw1ypMowwGIee7ZQ5dU0rBJ8Jqgl+jAKIv4dbeE1jscZq9wid1Tkw== - sublevel-pouchdb@7.2.2: version "7.2.2" resolved "https://registry.yarnpkg.com/sublevel-pouchdb/-/sublevel-pouchdb-7.2.2.tgz#49e46cd37883bf7ff5006d7c5b9bcc7bcc1f422f" @@ -6001,27 +5449,6 @@ symbol-tree@^3.2.4: resolved "https://registry.yarnpkg.com/symbol-tree/-/symbol-tree-3.2.4.tgz#430637d248ba77e078883951fb9aa0eed7c63fa2" integrity sha512-9QNk5KwDF+Bvz+PyObkmSYjI5ksVUYtjW7AU22r2NKcfLJcXp96hkDWU3+XndOsUb+AQ9QhfzfCT2O+CNWT5Tw== -tar-fs@^2.1.1: - version "2.1.1" - resolved "https://registry.yarnpkg.com/tar-fs/-/tar-fs-2.1.1.tgz#489a15ab85f1f0befabb370b7de4f9eb5cbe8784" - integrity sha512-V0r2Y9scmbDRLCNex/+hYzvp/zyYjvFbHPNgVTKfQvVrb6guiE/fxP+XblDNR011utopbkex2nM4dHNV6GDsng== - dependencies: - chownr "^1.1.1" - mkdirp-classic "^0.5.2" - pump "^3.0.0" - tar-stream "^2.1.4" - -tar-stream@^2.1.4: - version "2.2.0" - resolved "https://registry.yarnpkg.com/tar-stream/-/tar-stream-2.2.0.tgz#acad84c284136b060dc3faa64474aa9aebd77287" - integrity sha512-ujeqbceABgwMZxEJnk2HDY2DlnUZ+9oEcb1KzTVfYHio0UE6dG71n60d8D2I4qNvleWrrXpmjpt7vZeF1LnMZQ== - dependencies: - bl "^4.0.3" - end-of-stream "^1.4.1" - fs-constants "^1.0.0" - inherits "^2.0.3" - readable-stream "^3.1.1" - terminal-link@^2.0.0: version "2.1.1" resolved "https://registry.yarnpkg.com/terminal-link/-/terminal-link-2.1.1.tgz#14a64a27ab3c0df933ea546fba55f2d078edc994" @@ -6052,14 +5479,6 @@ through2@3.0.2: inherits "^2.0.4" readable-stream "2 || 3" -through2@^2.0.0: - version "2.0.5" - resolved "https://registry.yarnpkg.com/through2/-/through2-2.0.5.tgz#01c1e39eb31d07cb7d03a96a70823260b23132cd" - integrity sha512-/mrRod8xqpA+IHSLyGCQ2s8SPHiCDEeQJSep1jqLYeEUClOFG2Qsh+4FU6G9VeqpZnGW/Su8LQGc4YKni5rYSQ== - dependencies: - readable-stream "~2.3.6" - xtend "~4.0.1" - through@~2.3.4: version "2.3.8" resolved "https://registry.yarnpkg.com/through/-/through-2.3.8.tgz#0dd4c9ffaabc357960b1b724115d7e0e86a2e1f5" @@ -6080,11 +5499,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-object-path@^0.3.0: version "0.3.0" resolved "https://registry.yarnpkg.com/to-object-path/-/to-object-path-0.3.0.tgz#297588b7b0e7e0ac08e04e672f85c1f4999e17af" @@ -6232,18 +5646,6 @@ typedarray-to-buffer@^3.1.5: dependencies: is-typedarray "^1.0.0" -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.14.3" - resolved "https://registry.yarnpkg.com/uglify-js/-/uglify-js-3.14.3.tgz#c0f25dfea1e8e5323eccf59610be08b6043c15cf" - integrity sha512-mic3aOdiq01DuSVx0TseaEzMIVqebMZ0Z3vaeDhFEh9bsc24hV1TFvN74reA2vs08D0ZWfNjAcJ3UbVLaBss+g== - uid2@0.0.x: version "0.0.4" resolved "https://registry.yarnpkg.com/uid2/-/uid2-0.0.4.tgz#033f3b1d5d32505f5ce5f888b9f3b667123c0a44" @@ -6351,7 +5753,7 @@ use@^3.1.0: resolved "https://registry.yarnpkg.com/use/-/use-3.1.1.tgz#d50c8cac79a19fbc20f2911f56eb973f4e10070f" integrity sha512-cwESVXlO3url9YWlFW/TA9cshCEhtu7IKJ/p5soJ/gGpj7vbvFrAY/eIioQ6Dw23KjZhYgiIo8HOs1nQ2vr/oQ== -util-deprecate@^1.0.1, util-deprecate@~1.0.1: +util-deprecate@^1.0.1: version "1.0.2" resolved "https://registry.yarnpkg.com/util-deprecate/-/util-deprecate-1.0.2.tgz#450d4dc9fa70de732762fbd2d4a28981419a0ccf" integrity sha1-RQ1Nyfpw3nMnYvvS1KKJgUGaDM8= @@ -6376,7 +5778,7 @@ uuid@^3.3.2: resolved "https://registry.yarnpkg.com/uuid/-/uuid-3.4.0.tgz#b23e4358afa8a202fe7a100af1f5f883f02007ee" integrity sha512-HjSDRw6gZE5JMggctHBcjVak08+KEVhSIiDzFnT9S9aegmp85S/bReBVTb4QTFaRNptJ9kuYaNhnbNEOkbKb/A== -uuid@^8.3.0, uuid@^8.3.2: +uuid@^8.3.0: version "8.3.2" resolved "https://registry.yarnpkg.com/uuid/-/uuid-8.3.2.tgz#80d5b5ced271bb9af6c445f21a1a04c606cefbe2" integrity sha512-+NYs2QeMWy+GWFOEm9xnn6HCDp0l7QBD7ml8zLUmJ+93Q5NF0NocErnwkTkXVFNiX3/fpC6afS8Dhb/gz7R7eg== @@ -6410,11 +5812,6 @@ verror@1.3.6: dependencies: extsprintf "1.0.2" -vm2@^3.9.4: - version "3.9.5" - resolved "https://registry.yarnpkg.com/vm2/-/vm2-3.9.5.tgz#5288044860b4bbace443101fcd3bddb2a0aa2496" - integrity sha512-LuCAHZN75H9tdrAiLFf030oW7nJV5xwNMuk1ymOZwopmuK3d2H4L1Kv4+GFHgarKiLfXXLFU+7LDABHnwOkWng== - vuvuzela@1.0.3: version "1.0.3" resolved "https://registry.yarnpkg.com/vuvuzela/-/vuvuzela-1.0.3.tgz#3be145e58271c73ca55279dd851f12a682114b0b" @@ -6524,11 +5921,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= - wrap-ansi@^6.2.0: version "6.2.0" resolved "https://registry.yarnpkg.com/wrap-ansi/-/wrap-ansi-6.2.0.tgz#e9393ba07102e6c91a3b221478f0257cd2856e53" @@ -6609,7 +6001,7 @@ xmlchars@^2.2.0: resolved "https://registry.yarnpkg.com/xmlchars/-/xmlchars-2.2.0.tgz#060fe1bcb7f9c76fe2a17db86a9bc3ab894210cb" integrity sha512-JZnDKK8B0RCDw84FNdDAIpZK+JuJw+s7Lz8nksI7SIuU3UXJJslUthsi+uWBUYOwPFwW7W7PRLRfUKpxjtjFCw== -xtend@^4.0.2, xtend@~4.0.0, xtend@~4.0.1: +xtend@^4.0.2, xtend@~4.0.0: version "4.0.2" resolved "https://registry.yarnpkg.com/xtend/-/xtend-4.0.2.tgz#bb72779f5fa465186b1f438f674fa347fdb5db54" integrity sha512-LKYU1iAXJXUgAXn9URjiu+MWhyUXHsvfp7mcuYm9dSUKK0/CjtrUwFAxD82/mCWbtLsGjFIad0wIsod4zrTAEQ== @@ -6649,17 +6041,7 @@ yargs@^15.4.1: y18n "^4.0.0" yargs-parser "^18.1.2" -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" integrity sha512-faQrqNMzcPCHGVC2aaOINk13K+aaBDUPjGWl0teOXywElLjyVAB6Oe2jj62jHYtwsU49jXhScYbvPENK+6zAvQ== - -zlib@^1.0.5: - version "1.0.5" - resolved "https://registry.yarnpkg.com/zlib/-/zlib-1.0.5.tgz#6e7c972fc371c645a6afb03ab14769def114fcc0" - integrity sha1-bnyXL8NxxkWmr7A6sUdp3vEU/MA= From c77b29d0477aafcca468e79b910cadb51d9cf262 Mon Sep 17 00:00:00 2001 From: Budibase Release Bot <> Date: Mon, 13 Dec 2021 16:00:58 +0000 Subject: [PATCH 110/175] v1.0.18 --- lerna.json | 2 +- packages/auth/package.json | 2 +- packages/bbui/package.json | 2 +- packages/builder/package.json | 8 ++++---- packages/cli/package.json | 2 +- packages/client/package.json | 6 +++--- packages/server/package.json | 8 ++++---- packages/string-templates/package.json | 2 +- packages/worker/package.json | 6 +++--- 9 files changed, 19 insertions(+), 19 deletions(-) diff --git a/lerna.json b/lerna.json index 531ba511c5..e960551837 100644 --- a/lerna.json +++ b/lerna.json @@ -1,5 +1,5 @@ { - "version": "1.0.17", + "version": "1.0.18", "npmClient": "yarn", "packages": [ "packages/*" diff --git a/packages/auth/package.json b/packages/auth/package.json index 38bd196796..0509c07edb 100644 --- a/packages/auth/package.json +++ b/packages/auth/package.json @@ -1,6 +1,6 @@ { "name": "@budibase/auth", - "version": "1.0.17", + "version": "1.0.18", "description": "Authentication middlewares for budibase builder and apps", "main": "src/index.js", "author": "Budibase", diff --git a/packages/bbui/package.json b/packages/bbui/package.json index f74ae8228a..c922b48795 100644 --- a/packages/bbui/package.json +++ b/packages/bbui/package.json @@ -1,7 +1,7 @@ { "name": "@budibase/bbui", "description": "A UI solution used in the different Budibase projects.", - "version": "1.0.17", + "version": "1.0.18", "license": "MPL-2.0", "svelte": "src/index.js", "module": "dist/bbui.es.js", diff --git a/packages/builder/package.json b/packages/builder/package.json index e7dae2971b..9305b8626d 100644 --- a/packages/builder/package.json +++ b/packages/builder/package.json @@ -1,6 +1,6 @@ { "name": "@budibase/builder", - "version": "1.0.17", + "version": "1.0.18", "license": "GPL-3.0", "private": true, "scripts": { @@ -65,10 +65,10 @@ } }, "dependencies": { - "@budibase/bbui": "^1.0.17", - "@budibase/client": "^1.0.17", + "@budibase/bbui": "^1.0.18", + "@budibase/client": "^1.0.18", "@budibase/colorpicker": "1.1.2", - "@budibase/string-templates": "^1.0.17", + "@budibase/string-templates": "^1.0.18", "@sentry/browser": "5.19.1", "@spectrum-css/page": "^3.0.1", "@spectrum-css/vars": "^3.0.1", diff --git a/packages/cli/package.json b/packages/cli/package.json index cb48fc2669..767f691ad1 100644 --- a/packages/cli/package.json +++ b/packages/cli/package.json @@ -1,6 +1,6 @@ { "name": "@budibase/cli", - "version": "1.0.17", + "version": "1.0.18", "description": "Budibase CLI, for developers, self hosting and migrations.", "main": "src/index.js", "bin": { diff --git a/packages/client/package.json b/packages/client/package.json index 84eaeb6b65..1793a755bc 100644 --- a/packages/client/package.json +++ b/packages/client/package.json @@ -1,6 +1,6 @@ { "name": "@budibase/client", - "version": "1.0.17", + "version": "1.0.18", "license": "MPL-2.0", "module": "dist/budibase-client.js", "main": "dist/budibase-client.js", @@ -19,9 +19,9 @@ "dev:builder": "rollup -cw" }, "dependencies": { - "@budibase/bbui": "^1.0.17", + "@budibase/bbui": "^1.0.18", "@budibase/standard-components": "^0.9.139", - "@budibase/string-templates": "^1.0.17", + "@budibase/string-templates": "^1.0.18", "regexparam": "^1.3.0", "shortid": "^2.2.15", "svelte-spa-router": "^3.0.5" diff --git a/packages/server/package.json b/packages/server/package.json index 063f852354..9f668610f5 100644 --- a/packages/server/package.json +++ b/packages/server/package.json @@ -1,7 +1,7 @@ { "name": "@budibase/server", "email": "hi@budibase.com", - "version": "1.0.17", + "version": "1.0.18", "description": "Budibase Web Server", "main": "src/index.ts", "repository": { @@ -69,9 +69,9 @@ "author": "Budibase", "license": "GPL-3.0", "dependencies": { - "@budibase/auth": "^1.0.17", - "@budibase/client": "^1.0.17", - "@budibase/string-templates": "^1.0.17", + "@budibase/auth": "^1.0.18", + "@budibase/client": "^1.0.18", + "@budibase/string-templates": "^1.0.18", "@bull-board/api": "^3.7.0", "@bull-board/koa": "^3.7.0", "@elastic/elasticsearch": "7.10.0", diff --git a/packages/string-templates/package.json b/packages/string-templates/package.json index ba89cdce5b..163b17442c 100644 --- a/packages/string-templates/package.json +++ b/packages/string-templates/package.json @@ -1,6 +1,6 @@ { "name": "@budibase/string-templates", - "version": "1.0.17", + "version": "1.0.18", "description": "Handlebars wrapper for Budibase templating.", "main": "src/index.cjs", "module": "dist/bundle.mjs", diff --git a/packages/worker/package.json b/packages/worker/package.json index cb5ae2991e..01baa17836 100644 --- a/packages/worker/package.json +++ b/packages/worker/package.json @@ -1,7 +1,7 @@ { "name": "@budibase/worker", "email": "hi@budibase.com", - "version": "1.0.17", + "version": "1.0.18", "description": "Budibase background service", "main": "src/index.js", "repository": { @@ -29,8 +29,8 @@ "author": "Budibase", "license": "GPL-3.0", "dependencies": { - "@budibase/auth": "^1.0.17", - "@budibase/string-templates": "^1.0.17", + "@budibase/auth": "^1.0.18", + "@budibase/string-templates": "^1.0.18", "@koa/router": "^8.0.0", "@sentry/node": "^6.0.0", "@techpass/passport-openidconnect": "^0.3.0", From e741834e83e6a62085c2d23e371c19e0d137f6c0 Mon Sep 17 00:00:00 2001 From: Martin McKeaveney Date: Mon, 13 Dec 2021 17:30:12 +0100 Subject: [PATCH 111/175] adding separate helm release job --- .github/workflows/release-charts.yml | 36 ++++++++++++++++++++++++++ .github/workflows/release-selfhost.yml | 22 ++-------------- 2 files changed, 38 insertions(+), 20 deletions(-) create mode 100644 .github/workflows/release-charts.yml diff --git a/.github/workflows/release-charts.yml b/.github/workflows/release-charts.yml new file mode 100644 index 0000000000..8dce3ee3c0 --- /dev/null +++ b/.github/workflows/release-charts.yml @@ -0,0 +1,36 @@ +name: Budibase Release Helm Charts + +on: + workflow_dispatch: + +jobs: + release: + runs-on: ubuntu-latest + + steps: + - uses: actions/checkout@v2 + with: + fetch-depth: 0 + + - name: 'Get Previous tag' + id: previoustag + uses: "WyriHaximus/github-action-get-previous-tag@v1" + + - name: Install Helm + uses: azure/setup-helm@v1 + with: + version: v3.4.0 + + - run: yarn release:helm + env: + BUDIBASE_RELEASE_VERSION: ${{ steps.previoustag.outputs.tag }} + + - name: Configure Git + run: | + git config user.name "Budibase Helm Bot" + git config user.email "<>" + + - name: Run chart-releaser + uses: helm/chart-releaser-action@v1.2.1 + env: + CR_TOKEN: "${{ secrets.GITHUB_TOKEN }}" \ No newline at end of file diff --git a/.github/workflows/release-selfhost.yml b/.github/workflows/release-selfhost.yml index 09c2babec1..4fc8a98350 100644 --- a/.github/workflows/release-selfhost.yml +++ b/.github/workflows/release-selfhost.yml @@ -1,4 +1,4 @@ -name: Budibase Release Selfhost +name: Budibase Release Docker Selfhost on: workflow_dispatch: @@ -42,22 +42,4 @@ jobs: DOCKER_USER: ${{ secrets.DOCKER_USERNAME }} DOCKER_PASSWORD: ${{ secrets.DOCKER_API_KEY }} BUDIBASE_RELEASE_VERSION: ${{ steps.previoustag.outputs.tag }} - - - uses: azure/setup-helm@v1 - id: install - - - run: yarn release:helm - env: - BUDIBASE_RELEASE_VERSION: ${{ steps.previoustag.outputs.tag }} - - - name: Configure Git and Helm - run: | - git config user.name "Budibase Helm Bot" - git config user.email "<>" - helm repo add budibase https://budibase.github.io/budibase - helm repo update - - - name: Run chart-releaser - uses: helm/chart-releaser-action@v1.2.0 - env: - CR_TOKEN: "${{ secrets.GITHUB_TOKEN }}" \ No newline at end of file + \ No newline at end of file From cfa941b11f2711d3675d6632ebbfb767b433651e Mon Sep 17 00:00:00 2001 From: Budibase Release Bot <> Date: Mon, 13 Dec 2021 16:43:28 +0000 Subject: [PATCH 112/175] v1.0.19 --- lerna.json | 2 +- packages/auth/package.json | 2 +- packages/bbui/package.json | 2 +- packages/builder/package.json | 8 ++++---- packages/cli/package.json | 2 +- packages/client/package.json | 6 +++--- packages/server/package.json | 8 ++++---- packages/string-templates/package.json | 2 +- packages/worker/package.json | 6 +++--- 9 files changed, 19 insertions(+), 19 deletions(-) diff --git a/lerna.json b/lerna.json index e960551837..1df94576b9 100644 --- a/lerna.json +++ b/lerna.json @@ -1,5 +1,5 @@ { - "version": "1.0.18", + "version": "1.0.19", "npmClient": "yarn", "packages": [ "packages/*" diff --git a/packages/auth/package.json b/packages/auth/package.json index 0509c07edb..8e3a96eb59 100644 --- a/packages/auth/package.json +++ b/packages/auth/package.json @@ -1,6 +1,6 @@ { "name": "@budibase/auth", - "version": "1.0.18", + "version": "1.0.19", "description": "Authentication middlewares for budibase builder and apps", "main": "src/index.js", "author": "Budibase", diff --git a/packages/bbui/package.json b/packages/bbui/package.json index c922b48795..1edbcf2ef7 100644 --- a/packages/bbui/package.json +++ b/packages/bbui/package.json @@ -1,7 +1,7 @@ { "name": "@budibase/bbui", "description": "A UI solution used in the different Budibase projects.", - "version": "1.0.18", + "version": "1.0.19", "license": "MPL-2.0", "svelte": "src/index.js", "module": "dist/bbui.es.js", diff --git a/packages/builder/package.json b/packages/builder/package.json index 9305b8626d..fc0281eeeb 100644 --- a/packages/builder/package.json +++ b/packages/builder/package.json @@ -1,6 +1,6 @@ { "name": "@budibase/builder", - "version": "1.0.18", + "version": "1.0.19", "license": "GPL-3.0", "private": true, "scripts": { @@ -65,10 +65,10 @@ } }, "dependencies": { - "@budibase/bbui": "^1.0.18", - "@budibase/client": "^1.0.18", + "@budibase/bbui": "^1.0.19", + "@budibase/client": "^1.0.19", "@budibase/colorpicker": "1.1.2", - "@budibase/string-templates": "^1.0.18", + "@budibase/string-templates": "^1.0.19", "@sentry/browser": "5.19.1", "@spectrum-css/page": "^3.0.1", "@spectrum-css/vars": "^3.0.1", diff --git a/packages/cli/package.json b/packages/cli/package.json index 767f691ad1..edb13e2600 100644 --- a/packages/cli/package.json +++ b/packages/cli/package.json @@ -1,6 +1,6 @@ { "name": "@budibase/cli", - "version": "1.0.18", + "version": "1.0.19", "description": "Budibase CLI, for developers, self hosting and migrations.", "main": "src/index.js", "bin": { diff --git a/packages/client/package.json b/packages/client/package.json index 1793a755bc..bc3b0008cb 100644 --- a/packages/client/package.json +++ b/packages/client/package.json @@ -1,6 +1,6 @@ { "name": "@budibase/client", - "version": "1.0.18", + "version": "1.0.19", "license": "MPL-2.0", "module": "dist/budibase-client.js", "main": "dist/budibase-client.js", @@ -19,9 +19,9 @@ "dev:builder": "rollup -cw" }, "dependencies": { - "@budibase/bbui": "^1.0.18", + "@budibase/bbui": "^1.0.19", "@budibase/standard-components": "^0.9.139", - "@budibase/string-templates": "^1.0.18", + "@budibase/string-templates": "^1.0.19", "regexparam": "^1.3.0", "shortid": "^2.2.15", "svelte-spa-router": "^3.0.5" diff --git a/packages/server/package.json b/packages/server/package.json index 9f668610f5..56c59ca7e6 100644 --- a/packages/server/package.json +++ b/packages/server/package.json @@ -1,7 +1,7 @@ { "name": "@budibase/server", "email": "hi@budibase.com", - "version": "1.0.18", + "version": "1.0.19", "description": "Budibase Web Server", "main": "src/index.ts", "repository": { @@ -69,9 +69,9 @@ "author": "Budibase", "license": "GPL-3.0", "dependencies": { - "@budibase/auth": "^1.0.18", - "@budibase/client": "^1.0.18", - "@budibase/string-templates": "^1.0.18", + "@budibase/auth": "^1.0.19", + "@budibase/client": "^1.0.19", + "@budibase/string-templates": "^1.0.19", "@bull-board/api": "^3.7.0", "@bull-board/koa": "^3.7.0", "@elastic/elasticsearch": "7.10.0", diff --git a/packages/string-templates/package.json b/packages/string-templates/package.json index 163b17442c..cfddfa62c1 100644 --- a/packages/string-templates/package.json +++ b/packages/string-templates/package.json @@ -1,6 +1,6 @@ { "name": "@budibase/string-templates", - "version": "1.0.18", + "version": "1.0.19", "description": "Handlebars wrapper for Budibase templating.", "main": "src/index.cjs", "module": "dist/bundle.mjs", diff --git a/packages/worker/package.json b/packages/worker/package.json index 01baa17836..a5655f9d0e 100644 --- a/packages/worker/package.json +++ b/packages/worker/package.json @@ -1,7 +1,7 @@ { "name": "@budibase/worker", "email": "hi@budibase.com", - "version": "1.0.18", + "version": "1.0.19", "description": "Budibase background service", "main": "src/index.js", "repository": { @@ -29,8 +29,8 @@ "author": "Budibase", "license": "GPL-3.0", "dependencies": { - "@budibase/auth": "^1.0.18", - "@budibase/string-templates": "^1.0.18", + "@budibase/auth": "^1.0.19", + "@budibase/string-templates": "^1.0.19", "@koa/router": "^8.0.0", "@sentry/node": "^6.0.0", "@techpass/passport-openidconnect": "^0.3.0", From 72e414aa71ac468a6b1f52de3bb5ffe6d5b65d87 Mon Sep 17 00:00:00 2001 From: Martin McKeaveney Date: Mon, 13 Dec 2021 18:36:49 +0100 Subject: [PATCH 113/175] don't run helm version script --- .github/workflows/release-charts.yml | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/.github/workflows/release-charts.yml b/.github/workflows/release-charts.yml index 8dce3ee3c0..933edd36b9 100644 --- a/.github/workflows/release-charts.yml +++ b/.github/workflows/release-charts.yml @@ -21,9 +21,9 @@ jobs: with: version: v3.4.0 - - run: yarn release:helm - env: - BUDIBASE_RELEASE_VERSION: ${{ steps.previoustag.outputs.tag }} + # - run: yarn release:helm + # env: + # BUDIBASE_RELEASE_VERSION: ${{ steps.previoustag.outputs.tag }} - name: Configure Git run: | From c8bcf17d219719cc61ebc2b45e59e52864e530ec Mon Sep 17 00:00:00 2001 From: Budibase Release Bot <> Date: Mon, 13 Dec 2021 17:46:32 +0000 Subject: [PATCH 114/175] v1.0.20 --- lerna.json | 2 +- packages/auth/package.json | 2 +- packages/bbui/package.json | 2 +- packages/builder/package.json | 8 ++++---- packages/cli/package.json | 2 +- packages/client/package.json | 6 +++--- packages/server/package.json | 8 ++++---- packages/string-templates/package.json | 2 +- packages/worker/package.json | 6 +++--- 9 files changed, 19 insertions(+), 19 deletions(-) diff --git a/lerna.json b/lerna.json index 1df94576b9..bf55a962e2 100644 --- a/lerna.json +++ b/lerna.json @@ -1,5 +1,5 @@ { - "version": "1.0.19", + "version": "1.0.20", "npmClient": "yarn", "packages": [ "packages/*" diff --git a/packages/auth/package.json b/packages/auth/package.json index 8e3a96eb59..e52f9a709e 100644 --- a/packages/auth/package.json +++ b/packages/auth/package.json @@ -1,6 +1,6 @@ { "name": "@budibase/auth", - "version": "1.0.19", + "version": "1.0.20", "description": "Authentication middlewares for budibase builder and apps", "main": "src/index.js", "author": "Budibase", diff --git a/packages/bbui/package.json b/packages/bbui/package.json index 1edbcf2ef7..fe263f00a9 100644 --- a/packages/bbui/package.json +++ b/packages/bbui/package.json @@ -1,7 +1,7 @@ { "name": "@budibase/bbui", "description": "A UI solution used in the different Budibase projects.", - "version": "1.0.19", + "version": "1.0.20", "license": "MPL-2.0", "svelte": "src/index.js", "module": "dist/bbui.es.js", diff --git a/packages/builder/package.json b/packages/builder/package.json index fc0281eeeb..1c453b6929 100644 --- a/packages/builder/package.json +++ b/packages/builder/package.json @@ -1,6 +1,6 @@ { "name": "@budibase/builder", - "version": "1.0.19", + "version": "1.0.20", "license": "GPL-3.0", "private": true, "scripts": { @@ -65,10 +65,10 @@ } }, "dependencies": { - "@budibase/bbui": "^1.0.19", - "@budibase/client": "^1.0.19", + "@budibase/bbui": "^1.0.20", + "@budibase/client": "^1.0.20", "@budibase/colorpicker": "1.1.2", - "@budibase/string-templates": "^1.0.19", + "@budibase/string-templates": "^1.0.20", "@sentry/browser": "5.19.1", "@spectrum-css/page": "^3.0.1", "@spectrum-css/vars": "^3.0.1", diff --git a/packages/cli/package.json b/packages/cli/package.json index edb13e2600..e7a29fcb11 100644 --- a/packages/cli/package.json +++ b/packages/cli/package.json @@ -1,6 +1,6 @@ { "name": "@budibase/cli", - "version": "1.0.19", + "version": "1.0.20", "description": "Budibase CLI, for developers, self hosting and migrations.", "main": "src/index.js", "bin": { diff --git a/packages/client/package.json b/packages/client/package.json index bc3b0008cb..6d4652189c 100644 --- a/packages/client/package.json +++ b/packages/client/package.json @@ -1,6 +1,6 @@ { "name": "@budibase/client", - "version": "1.0.19", + "version": "1.0.20", "license": "MPL-2.0", "module": "dist/budibase-client.js", "main": "dist/budibase-client.js", @@ -19,9 +19,9 @@ "dev:builder": "rollup -cw" }, "dependencies": { - "@budibase/bbui": "^1.0.19", + "@budibase/bbui": "^1.0.20", "@budibase/standard-components": "^0.9.139", - "@budibase/string-templates": "^1.0.19", + "@budibase/string-templates": "^1.0.20", "regexparam": "^1.3.0", "shortid": "^2.2.15", "svelte-spa-router": "^3.0.5" diff --git a/packages/server/package.json b/packages/server/package.json index 56c59ca7e6..f2f2f3945e 100644 --- a/packages/server/package.json +++ b/packages/server/package.json @@ -1,7 +1,7 @@ { "name": "@budibase/server", "email": "hi@budibase.com", - "version": "1.0.19", + "version": "1.0.20", "description": "Budibase Web Server", "main": "src/index.ts", "repository": { @@ -69,9 +69,9 @@ "author": "Budibase", "license": "GPL-3.0", "dependencies": { - "@budibase/auth": "^1.0.19", - "@budibase/client": "^1.0.19", - "@budibase/string-templates": "^1.0.19", + "@budibase/auth": "^1.0.20", + "@budibase/client": "^1.0.20", + "@budibase/string-templates": "^1.0.20", "@bull-board/api": "^3.7.0", "@bull-board/koa": "^3.7.0", "@elastic/elasticsearch": "7.10.0", diff --git a/packages/string-templates/package.json b/packages/string-templates/package.json index cfddfa62c1..46c93d136c 100644 --- a/packages/string-templates/package.json +++ b/packages/string-templates/package.json @@ -1,6 +1,6 @@ { "name": "@budibase/string-templates", - "version": "1.0.19", + "version": "1.0.20", "description": "Handlebars wrapper for Budibase templating.", "main": "src/index.cjs", "module": "dist/bundle.mjs", diff --git a/packages/worker/package.json b/packages/worker/package.json index a5655f9d0e..96e43c54c2 100644 --- a/packages/worker/package.json +++ b/packages/worker/package.json @@ -1,7 +1,7 @@ { "name": "@budibase/worker", "email": "hi@budibase.com", - "version": "1.0.19", + "version": "1.0.20", "description": "Budibase background service", "main": "src/index.js", "repository": { @@ -29,8 +29,8 @@ "author": "Budibase", "license": "GPL-3.0", "dependencies": { - "@budibase/auth": "^1.0.19", - "@budibase/string-templates": "^1.0.19", + "@budibase/auth": "^1.0.20", + "@budibase/string-templates": "^1.0.20", "@koa/router": "^8.0.0", "@sentry/node": "^6.0.0", "@techpass/passport-openidconnect": "^0.3.0", From e214e2cc26f1d6489f0c5aea2e2e6c6094d3bf53 Mon Sep 17 00:00:00 2001 From: Martin McKeaveney Date: Mon, 13 Dec 2021 19:01:11 +0100 Subject: [PATCH 115/175] Update Chart.yaml --- charts/budibase/Chart.yaml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/charts/budibase/Chart.yaml b/charts/budibase/Chart.yaml index 602ffbf420..cec5af2914 100644 --- a/charts/budibase/Chart.yaml +++ b/charts/budibase/Chart.yaml @@ -11,8 +11,8 @@ sources: - https://github.com/Budibase/budibase - https://budibase.com type: application -version: 0.2.6 -appVersion: 1.0.10 +version: 1.0.0 +appVersion: 1.0.20 dependencies: - name: couchdb version: 3.3.4 From ecd319894049ae66aac34ff13f14e6ca15dc40b7 Mon Sep 17 00:00:00 2001 From: Budibase Release Bot <> Date: Mon, 13 Dec 2021 18:08:22 +0000 Subject: [PATCH 116/175] v1.0.21 --- lerna.json | 2 +- packages/auth/package.json | 2 +- packages/bbui/package.json | 2 +- packages/builder/package.json | 8 ++++---- packages/cli/package.json | 2 +- packages/client/package.json | 6 +++--- packages/server/package.json | 8 ++++---- packages/string-templates/package.json | 2 +- packages/worker/package.json | 6 +++--- 9 files changed, 19 insertions(+), 19 deletions(-) diff --git a/lerna.json b/lerna.json index bf55a962e2..b1e3393b1d 100644 --- a/lerna.json +++ b/lerna.json @@ -1,5 +1,5 @@ { - "version": "1.0.20", + "version": "1.0.21", "npmClient": "yarn", "packages": [ "packages/*" diff --git a/packages/auth/package.json b/packages/auth/package.json index e52f9a709e..e490488009 100644 --- a/packages/auth/package.json +++ b/packages/auth/package.json @@ -1,6 +1,6 @@ { "name": "@budibase/auth", - "version": "1.0.20", + "version": "1.0.21", "description": "Authentication middlewares for budibase builder and apps", "main": "src/index.js", "author": "Budibase", diff --git a/packages/bbui/package.json b/packages/bbui/package.json index fe263f00a9..fcabff4d52 100644 --- a/packages/bbui/package.json +++ b/packages/bbui/package.json @@ -1,7 +1,7 @@ { "name": "@budibase/bbui", "description": "A UI solution used in the different Budibase projects.", - "version": "1.0.20", + "version": "1.0.21", "license": "MPL-2.0", "svelte": "src/index.js", "module": "dist/bbui.es.js", diff --git a/packages/builder/package.json b/packages/builder/package.json index 1c453b6929..c1668f69c9 100644 --- a/packages/builder/package.json +++ b/packages/builder/package.json @@ -1,6 +1,6 @@ { "name": "@budibase/builder", - "version": "1.0.20", + "version": "1.0.21", "license": "GPL-3.0", "private": true, "scripts": { @@ -65,10 +65,10 @@ } }, "dependencies": { - "@budibase/bbui": "^1.0.20", - "@budibase/client": "^1.0.20", + "@budibase/bbui": "^1.0.21", + "@budibase/client": "^1.0.21", "@budibase/colorpicker": "1.1.2", - "@budibase/string-templates": "^1.0.20", + "@budibase/string-templates": "^1.0.21", "@sentry/browser": "5.19.1", "@spectrum-css/page": "^3.0.1", "@spectrum-css/vars": "^3.0.1", diff --git a/packages/cli/package.json b/packages/cli/package.json index e7a29fcb11..6bce451bab 100644 --- a/packages/cli/package.json +++ b/packages/cli/package.json @@ -1,6 +1,6 @@ { "name": "@budibase/cli", - "version": "1.0.20", + "version": "1.0.21", "description": "Budibase CLI, for developers, self hosting and migrations.", "main": "src/index.js", "bin": { diff --git a/packages/client/package.json b/packages/client/package.json index 6d4652189c..1407c6b511 100644 --- a/packages/client/package.json +++ b/packages/client/package.json @@ -1,6 +1,6 @@ { "name": "@budibase/client", - "version": "1.0.20", + "version": "1.0.21", "license": "MPL-2.0", "module": "dist/budibase-client.js", "main": "dist/budibase-client.js", @@ -19,9 +19,9 @@ "dev:builder": "rollup -cw" }, "dependencies": { - "@budibase/bbui": "^1.0.20", + "@budibase/bbui": "^1.0.21", "@budibase/standard-components": "^0.9.139", - "@budibase/string-templates": "^1.0.20", + "@budibase/string-templates": "^1.0.21", "regexparam": "^1.3.0", "shortid": "^2.2.15", "svelte-spa-router": "^3.0.5" diff --git a/packages/server/package.json b/packages/server/package.json index f2f2f3945e..c9162033c0 100644 --- a/packages/server/package.json +++ b/packages/server/package.json @@ -1,7 +1,7 @@ { "name": "@budibase/server", "email": "hi@budibase.com", - "version": "1.0.20", + "version": "1.0.21", "description": "Budibase Web Server", "main": "src/index.ts", "repository": { @@ -69,9 +69,9 @@ "author": "Budibase", "license": "GPL-3.0", "dependencies": { - "@budibase/auth": "^1.0.20", - "@budibase/client": "^1.0.20", - "@budibase/string-templates": "^1.0.20", + "@budibase/auth": "^1.0.21", + "@budibase/client": "^1.0.21", + "@budibase/string-templates": "^1.0.21", "@bull-board/api": "^3.7.0", "@bull-board/koa": "^3.7.0", "@elastic/elasticsearch": "7.10.0", diff --git a/packages/string-templates/package.json b/packages/string-templates/package.json index 46c93d136c..17dfe4e79b 100644 --- a/packages/string-templates/package.json +++ b/packages/string-templates/package.json @@ -1,6 +1,6 @@ { "name": "@budibase/string-templates", - "version": "1.0.20", + "version": "1.0.21", "description": "Handlebars wrapper for Budibase templating.", "main": "src/index.cjs", "module": "dist/bundle.mjs", diff --git a/packages/worker/package.json b/packages/worker/package.json index 96e43c54c2..bce44c0ef1 100644 --- a/packages/worker/package.json +++ b/packages/worker/package.json @@ -1,7 +1,7 @@ { "name": "@budibase/worker", "email": "hi@budibase.com", - "version": "1.0.20", + "version": "1.0.21", "description": "Budibase background service", "main": "src/index.js", "repository": { @@ -29,8 +29,8 @@ "author": "Budibase", "license": "GPL-3.0", "dependencies": { - "@budibase/auth": "^1.0.20", - "@budibase/string-templates": "^1.0.20", + "@budibase/auth": "^1.0.21", + "@budibase/string-templates": "^1.0.21", "@koa/router": "^8.0.0", "@sentry/node": "^6.0.0", "@techpass/passport-openidconnect": "^0.3.0", From de7b9efea9ef932d45897d3be060fb3ea902d364 Mon Sep 17 00:00:00 2001 From: Martin McKeaveney Date: Mon, 13 Dec 2021 19:25:53 +0100 Subject: [PATCH 117/175] re-add helm release and configure --- .github/workflows/release-charts.yml | 12 +++++++++--- 1 file changed, 9 insertions(+), 3 deletions(-) diff --git a/.github/workflows/release-charts.yml b/.github/workflows/release-charts.yml index 933edd36b9..500eb42908 100644 --- a/.github/workflows/release-charts.yml +++ b/.github/workflows/release-charts.yml @@ -12,6 +12,12 @@ jobs: with: fetch-depth: 0 + - uses: actions/setup-node@v1 + with: + node-version: 14.x + - run: yarn + - run: yarn bootstrap + - name: 'Get Previous tag' id: previoustag uses: "WyriHaximus/github-action-get-previous-tag@v1" @@ -21,9 +27,9 @@ jobs: with: version: v3.4.0 - # - run: yarn release:helm - # env: - # BUDIBASE_RELEASE_VERSION: ${{ steps.previoustag.outputs.tag }} + - run: yarn release:helm + env: + BUDIBASE_RELEASE_VERSION: ${{ steps.previoustag.outputs.tag }} - name: Configure Git run: | From 1ab1e7517d72161c99fa939bf2c90597aa3a719c Mon Sep 17 00:00:00 2001 From: Budibase Release Bot <> Date: Mon, 13 Dec 2021 18:46:25 +0000 Subject: [PATCH 118/175] v1.0.22 --- lerna.json | 2 +- packages/auth/package.json | 2 +- packages/bbui/package.json | 2 +- packages/builder/package.json | 8 ++++---- packages/cli/package.json | 2 +- packages/client/package.json | 6 +++--- packages/server/package.json | 8 ++++---- packages/string-templates/package.json | 2 +- packages/worker/package.json | 6 +++--- 9 files changed, 19 insertions(+), 19 deletions(-) diff --git a/lerna.json b/lerna.json index b1e3393b1d..09d7a43df9 100644 --- a/lerna.json +++ b/lerna.json @@ -1,5 +1,5 @@ { - "version": "1.0.21", + "version": "1.0.22", "npmClient": "yarn", "packages": [ "packages/*" diff --git a/packages/auth/package.json b/packages/auth/package.json index e490488009..74897f1b2b 100644 --- a/packages/auth/package.json +++ b/packages/auth/package.json @@ -1,6 +1,6 @@ { "name": "@budibase/auth", - "version": "1.0.21", + "version": "1.0.22", "description": "Authentication middlewares for budibase builder and apps", "main": "src/index.js", "author": "Budibase", diff --git a/packages/bbui/package.json b/packages/bbui/package.json index fcabff4d52..d86371c554 100644 --- a/packages/bbui/package.json +++ b/packages/bbui/package.json @@ -1,7 +1,7 @@ { "name": "@budibase/bbui", "description": "A UI solution used in the different Budibase projects.", - "version": "1.0.21", + "version": "1.0.22", "license": "MPL-2.0", "svelte": "src/index.js", "module": "dist/bbui.es.js", diff --git a/packages/builder/package.json b/packages/builder/package.json index c1668f69c9..85e43edaaf 100644 --- a/packages/builder/package.json +++ b/packages/builder/package.json @@ -1,6 +1,6 @@ { "name": "@budibase/builder", - "version": "1.0.21", + "version": "1.0.22", "license": "GPL-3.0", "private": true, "scripts": { @@ -65,10 +65,10 @@ } }, "dependencies": { - "@budibase/bbui": "^1.0.21", - "@budibase/client": "^1.0.21", + "@budibase/bbui": "^1.0.22", + "@budibase/client": "^1.0.22", "@budibase/colorpicker": "1.1.2", - "@budibase/string-templates": "^1.0.21", + "@budibase/string-templates": "^1.0.22", "@sentry/browser": "5.19.1", "@spectrum-css/page": "^3.0.1", "@spectrum-css/vars": "^3.0.1", diff --git a/packages/cli/package.json b/packages/cli/package.json index 6bce451bab..de319745a1 100644 --- a/packages/cli/package.json +++ b/packages/cli/package.json @@ -1,6 +1,6 @@ { "name": "@budibase/cli", - "version": "1.0.21", + "version": "1.0.22", "description": "Budibase CLI, for developers, self hosting and migrations.", "main": "src/index.js", "bin": { diff --git a/packages/client/package.json b/packages/client/package.json index 1407c6b511..2f40808ae0 100644 --- a/packages/client/package.json +++ b/packages/client/package.json @@ -1,6 +1,6 @@ { "name": "@budibase/client", - "version": "1.0.21", + "version": "1.0.22", "license": "MPL-2.0", "module": "dist/budibase-client.js", "main": "dist/budibase-client.js", @@ -19,9 +19,9 @@ "dev:builder": "rollup -cw" }, "dependencies": { - "@budibase/bbui": "^1.0.21", + "@budibase/bbui": "^1.0.22", "@budibase/standard-components": "^0.9.139", - "@budibase/string-templates": "^1.0.21", + "@budibase/string-templates": "^1.0.22", "regexparam": "^1.3.0", "shortid": "^2.2.15", "svelte-spa-router": "^3.0.5" diff --git a/packages/server/package.json b/packages/server/package.json index c9162033c0..579535f0eb 100644 --- a/packages/server/package.json +++ b/packages/server/package.json @@ -1,7 +1,7 @@ { "name": "@budibase/server", "email": "hi@budibase.com", - "version": "1.0.21", + "version": "1.0.22", "description": "Budibase Web Server", "main": "src/index.ts", "repository": { @@ -69,9 +69,9 @@ "author": "Budibase", "license": "GPL-3.0", "dependencies": { - "@budibase/auth": "^1.0.21", - "@budibase/client": "^1.0.21", - "@budibase/string-templates": "^1.0.21", + "@budibase/auth": "^1.0.22", + "@budibase/client": "^1.0.22", + "@budibase/string-templates": "^1.0.22", "@bull-board/api": "^3.7.0", "@bull-board/koa": "^3.7.0", "@elastic/elasticsearch": "7.10.0", diff --git a/packages/string-templates/package.json b/packages/string-templates/package.json index 17dfe4e79b..005d6304fe 100644 --- a/packages/string-templates/package.json +++ b/packages/string-templates/package.json @@ -1,6 +1,6 @@ { "name": "@budibase/string-templates", - "version": "1.0.21", + "version": "1.0.22", "description": "Handlebars wrapper for Budibase templating.", "main": "src/index.cjs", "module": "dist/bundle.mjs", diff --git a/packages/worker/package.json b/packages/worker/package.json index bce44c0ef1..f1e09ebf60 100644 --- a/packages/worker/package.json +++ b/packages/worker/package.json @@ -1,7 +1,7 @@ { "name": "@budibase/worker", "email": "hi@budibase.com", - "version": "1.0.21", + "version": "1.0.22", "description": "Budibase background service", "main": "src/index.js", "repository": { @@ -29,8 +29,8 @@ "author": "Budibase", "license": "GPL-3.0", "dependencies": { - "@budibase/auth": "^1.0.21", - "@budibase/string-templates": "^1.0.21", + "@budibase/auth": "^1.0.22", + "@budibase/string-templates": "^1.0.22", "@koa/router": "^8.0.0", "@sentry/node": "^6.0.0", "@techpass/passport-openidconnect": "^0.3.0", From 98cd12db5fc6d96826dc1a3b4480c66ae146d058 Mon Sep 17 00:00:00 2001 From: Andrew Kingston Date: Tue, 14 Dec 2021 14:04:10 +0000 Subject: [PATCH 119/175] Proxy state updates back from peek modals --- .../overlay/PeekScreenDisplay.svelte | 22 ++++++++++++++++--- packages/client/src/utils/buttonActions.js | 9 ++++++++ 2 files changed, 28 insertions(+), 3 deletions(-) diff --git a/packages/client/src/components/overlay/PeekScreenDisplay.svelte b/packages/client/src/components/overlay/PeekScreenDisplay.svelte index 51ff4412dc..7d3531d236 100644 --- a/packages/client/src/components/overlay/PeekScreenDisplay.svelte +++ b/packages/client/src/components/overlay/PeekScreenDisplay.svelte @@ -4,6 +4,7 @@ dataSourceStore, notificationStore, routeStore, + stateStore, } from "stores" import { Modal, ModalContent, ActionButton } from "@budibase/bbui" import { onDestroy } from "svelte" @@ -12,12 +13,13 @@ NOTIFICATION: "notification", CLOSE_SCREEN_MODAL: "close-screen-modal", INVALIDATE_DATASOURCE: "invalidate-datasource", + UPDATE_STATE: "update-state", } let iframe let listenersAttached = false - const invalidateDataSource = event => { + const proxyInvalidation = event => { const { dataSourceId } = event.detail dataSourceStore.actions.invalidateDataSource(dataSourceId) } @@ -27,14 +29,28 @@ notificationStore.actions.send(message, type, icon) } + const proxyStateUpdate = event => { + const { type, key, value, persist } = event.detail + if (type === "set") { + stateStore.actions.setValue(key, value, persist) + } else if (type === "delete") { + stateStore.actions.deleteValue(key) + } + } + function receiveMessage(message) { const handlers = { [MessageTypes.NOTIFICATION]: () => { proxyNotification(message.data) }, - [MessageTypes.CLOSE_SCREEN_MODAL]: peekStore.actions.hidePeek, + [MessageTypes.CLOSE_SCREEN_MODAL]: () => { + peekStore.actions.hidePeek() + }, [MessageTypes.INVALIDATE_DATASOURCE]: () => { - invalidateDataSource(message.data) + proxyInvalidation(message.data) + }, + [MessageTypes.UPDATE_STATE]: () => { + proxyStateUpdate(message.data) }, } diff --git a/packages/client/src/utils/buttonActions.js b/packages/client/src/utils/buttonActions.js index 5ee571ae5d..9c6ae73c1f 100644 --- a/packages/client/src/utils/buttonActions.js +++ b/packages/client/src/utils/buttonActions.js @@ -116,6 +116,15 @@ const updateStateHandler = action => { } else if (type === "delete") { stateStore.actions.deleteValue(key) } + + // Emit this as an event so that parent windows which are iframing us in + // can also update their state + if (get(routeStore).queryParams?.peek) { + window.parent.postMessage({ + type: "update-state", + detail: { type, key, value, persist }, + }) + } } const handlerMap = { From d58b1ae7f024202b8a428a0c5d1b2bf1f9cdc787 Mon Sep 17 00:00:00 2001 From: Andrew Kingston Date: Tue, 14 Dec 2021 14:04:37 +0000 Subject: [PATCH 120/175] Fix datasource invalidation proxying from peek modals not working --- packages/client/src/stores/dataSource.js | 11 +++++++---- 1 file changed, 7 insertions(+), 4 deletions(-) diff --git a/packages/client/src/stores/dataSource.js b/packages/client/src/stores/dataSource.js index ee615b8bfb..efec755b99 100644 --- a/packages/client/src/stores/dataSource.js +++ b/packages/client/src/stores/dataSource.js @@ -1,6 +1,7 @@ import { writable, get } from "svelte/store" import { fetchTableDefinition } from "../api" import { FieldTypes } from "../constants" +import { routeStore } from "./routes" export const createDataSourceStore = () => { const store = writable([]) @@ -60,10 +61,12 @@ export const createDataSourceStore = () => { // Emit this as a window event, so parent screens which are iframing us in // can also invalidate the same datasource - window.parent.postMessage({ - type: "close-screen-modal", - detail: { dataSourceId }, - }) + if (get(routeStore).queryParams?.peek) { + window.parent.postMessage({ + type: "invalidate-datasource", + detail: { dataSourceId }, + }) + } let invalidations = [dataSourceId] From 26d89f75d599794dd9be28ba440deabde40b2146 Mon Sep 17 00:00:00 2001 From: Andrew Kingston Date: Wed, 15 Dec 2021 08:55:22 +0000 Subject: [PATCH 121/175] Pass current state to peek modals when opening them via query param --- packages/client/src/components/Router.svelte | 28 +++++++++++++++----- packages/client/src/stores/peek.js | 8 ++++-- packages/client/src/stores/state.js | 5 +++- 3 files changed, 32 insertions(+), 9 deletions(-) diff --git a/packages/client/src/components/Router.svelte b/packages/client/src/components/Router.svelte index 95f52236a4..49cbc3f821 100644 --- a/packages/client/src/components/Router.svelte +++ b/packages/client/src/components/Router.svelte @@ -1,8 +1,9 @@ {#key config.id} diff --git a/packages/client/src/stores/peek.js b/packages/client/src/stores/peek.js index df41f5daff..83974b09f3 100644 --- a/packages/client/src/stores/peek.js +++ b/packages/client/src/stores/peek.js @@ -1,4 +1,5 @@ -import { writable } from "svelte/store" +import { writable, get } from "svelte/store" +import { stateStore } from "./state.js" const initialState = { showPeek: false, @@ -14,7 +15,10 @@ const createPeekStore = () => { let href = url let external = !url.startsWith("/") if (!external) { - href = `${window.location.href.split("#")[0]}#${url}?peek=true` + const state = get(stateStore) + const serialised = encodeURIComponent(btoa(JSON.stringify(state))) + const query = `peek=true&state=${serialised}` + href = `${window.location.href.split("#")[0]}#${url}?${query}` } store.set({ showPeek: true, diff --git a/packages/client/src/stores/state.js b/packages/client/src/stores/state.js index ce977c4333..4ad31c3854 100644 --- a/packages/client/src/stores/state.js +++ b/packages/client/src/stores/state.js @@ -34,6 +34,9 @@ const createStateStore = () => { }) } + // Initialises the temporary state store with a certain value + const initialise = tempStore.set + // Derive the combination of both persisted and non persisted stores const store = derived( [tempStore, persistentStore], @@ -47,7 +50,7 @@ const createStateStore = () => { return { subscribe: store.subscribe, - actions: { setValue, deleteValue }, + actions: { setValue, deleteValue, initialise }, } } From 1c23dc3a3c739eba3b9fed4f61ba376b09f92a78 Mon Sep 17 00:00:00 2001 From: Andrew Kingston Date: Wed, 15 Dec 2021 09:00:14 +0000 Subject: [PATCH 122/175] Fix using wrong local storage key when persisting state in client apps --- packages/client/src/stores/state.js | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/packages/client/src/stores/state.js b/packages/client/src/stores/state.js index 4ad31c3854..0297b4c532 100644 --- a/packages/client/src/stores/state.js +++ b/packages/client/src/stores/state.js @@ -1,9 +1,9 @@ import { writable, get, derived } from "svelte/store" import { localStorageStore } from "builder/src/builderStore/store/localStorage" -import { appStore } from "./app" const createStateStore = () => { - const localStorageKey = `${get(appStore).appId}.state` + const appId = window["##BUDIBASE_APP_ID##"] || "app" + const localStorageKey = `${appId}.state` const persistentStore = localStorageStore(localStorageKey, {}) // Initialise the temp store to mirror the persistent store From d1127f32202441b6f2245cadc1950506cdebe58f Mon Sep 17 00:00:00 2001 From: mike12345567 Date: Wed, 15 Dec 2021 11:25:52 +0000 Subject: [PATCH 123/175] Fixing an issue with automations throwing a Pouch error due to the auth library database not being setup. --- packages/server/src/threads/automation.js | 3 +-- packages/server/src/threads/query.js | 4 +--- packages/server/src/threads/utils.js | 9 +++++++++ 3 files changed, 11 insertions(+), 5 deletions(-) create mode 100644 packages/server/src/threads/utils.js diff --git a/packages/server/src/threads/automation.js b/packages/server/src/threads/automation.js index 11ee28dbe8..fc9e2a21fc 100644 --- a/packages/server/src/threads/automation.js +++ b/packages/server/src/threads/automation.js @@ -1,6 +1,5 @@ -// when thread starts, make sure it is recorded +require("./utils").threadSetup() const env = require("../environment") -env.setInThread() const actions = require("../automations/actions") const automationUtils = require("../automations/automationUtils") const AutomationEmitter = require("../events/AutomationEmitter") diff --git a/packages/server/src/threads/query.js b/packages/server/src/threads/query.js index 6b0d021e94..6921a6543d 100644 --- a/packages/server/src/threads/query.js +++ b/packages/server/src/threads/query.js @@ -1,6 +1,4 @@ -// when thread starts, make sure it is recorded -const env = require("../environment") -env.setInThread() +require("./utils").threadSetup() const ScriptRunner = require("../utilities/scriptRunner") const { integrations } = require("../integrations") diff --git a/packages/server/src/threads/utils.js b/packages/server/src/threads/utils.js new file mode 100644 index 0000000000..13e9daf711 --- /dev/null +++ b/packages/server/src/threads/utils.js @@ -0,0 +1,9 @@ +const env = require("../environment") +const CouchDB = require("../db") +const { init } = require("@budibase/auth") + +exports.threadSetup = () => { + // when thread starts, make sure it is recorded + env.setInThread() + init(CouchDB) +} From e9acb690a87e36522e6a2d1b9aaf81f61ba5924a Mon Sep 17 00:00:00 2001 From: mike12345567 Date: Wed, 15 Dec 2021 12:26:29 +0000 Subject: [PATCH 124/175] Don't run change if not threading. --- packages/server/src/threads/utils.js | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/packages/server/src/threads/utils.js b/packages/server/src/threads/utils.js index 13e9daf711..48b40d7002 100644 --- a/packages/server/src/threads/utils.js +++ b/packages/server/src/threads/utils.js @@ -3,6 +3,10 @@ const CouchDB = require("../db") const { init } = require("@budibase/auth") exports.threadSetup = () => { + // don't run this if not threading + if (env.isTest() || env.DISABLE_THREADING) { + return + } // when thread starts, make sure it is recorded env.setInThread() init(CouchDB) From 1cc2b98de5759abc1a1b08f00b6a84d7333d87b3 Mon Sep 17 00:00:00 2001 From: Martin McKeaveney Date: Wed, 15 Dec 2021 18:43:12 +0100 Subject: [PATCH 125/175] split CI pipelines to improve speed and automate deployment to production through manual action --- .github/workflows/deploy-cloud.yaml | 41 ++++++++++++++++ .github/workflows/release-charts.yml | 42 ---------------- .github/workflows/release-selfhost.yml | 65 ++++++++++++++----------- .github/workflows/release.yml | 23 ++++++++- budibase-1.0.0.tgz | Bin 0 -> 42683 bytes scripts/latest_budibase_version.sh | 0 6 files changed, 100 insertions(+), 71 deletions(-) create mode 100644 .github/workflows/deploy-cloud.yaml delete mode 100644 .github/workflows/release-charts.yml create mode 100644 budibase-1.0.0.tgz create mode 100644 scripts/latest_budibase_version.sh diff --git a/.github/workflows/deploy-cloud.yaml b/.github/workflows/deploy-cloud.yaml new file mode 100644 index 0000000000..778029bf03 --- /dev/null +++ b/.github/workflows/deploy-cloud.yaml @@ -0,0 +1,41 @@ +name: Budibase Cloud Deploy + +on: + workflow_dispatch: + inputs: + version: + description: Budibase release version. For example - 1.0.0 + required: false + +jobs: + release: + runs-on: ubuntu-latest + + steps: + - uses: actions/checkout@v2 + + - name: Pull values.yaml from budibase-infra + run: | + curl -H "Authorization: token ${{ secrets.GITHUB_TOKEN }}" \ [c3a7a9d12] + -H 'Accept: application/vnd.github.v3.raw' \ + -o values.production.yaml \ + -L https://api.github.com/repos/budibase/budibase-infra/contents/kubernetes/values.yaml + + - name: Get the latest budibase release version if not specifically set + if: ${{ !github.event.inputs.version }} + id: version + run: | + sudo apt-get install -y jq + release_version=$(cat lerna.json | jq -r '.version') + echo "::set-output name=release_version::$release_version" + + - uses: peymanmortazavi/eks-helm-deploy@v1 + with: + aws-access-key-id: ${{ secrets.AWS_ACCESS_KEY_ID }} + aws-secret-access-key: ${{ secrets.AWS_SECRET_ACCESS_KEY }} + aws-region: eu-west-1 + cluster-name: budibase-eks-production + config-files: values.production.yaml + namespace: budibase + values: appVersion=v${{ github.event.inputs.version || github.steps.version.outputs.release_version }} + name: budibase-prod \ No newline at end of file diff --git a/.github/workflows/release-charts.yml b/.github/workflows/release-charts.yml deleted file mode 100644 index 500eb42908..0000000000 --- a/.github/workflows/release-charts.yml +++ /dev/null @@ -1,42 +0,0 @@ -name: Budibase Release Helm Charts - -on: - workflow_dispatch: - -jobs: - release: - runs-on: ubuntu-latest - - steps: - - uses: actions/checkout@v2 - with: - fetch-depth: 0 - - - uses: actions/setup-node@v1 - with: - node-version: 14.x - - run: yarn - - run: yarn bootstrap - - - name: 'Get Previous tag' - id: previoustag - uses: "WyriHaximus/github-action-get-previous-tag@v1" - - - name: Install Helm - uses: azure/setup-helm@v1 - with: - version: v3.4.0 - - - run: yarn release:helm - env: - BUDIBASE_RELEASE_VERSION: ${{ steps.previoustag.outputs.tag }} - - - name: Configure Git - run: | - git config user.name "Budibase Helm Bot" - git config user.email "<>" - - - name: Run chart-releaser - uses: helm/chart-releaser-action@v1.2.1 - env: - CR_TOKEN: "${{ secrets.GITHUB_TOKEN }}" \ No newline at end of file diff --git a/.github/workflows/release-selfhost.yml b/.github/workflows/release-selfhost.yml index 4fc8a98350..16f38ec6f1 100644 --- a/.github/workflows/release-selfhost.yml +++ b/.github/workflows/release-selfhost.yml @@ -3,43 +3,52 @@ name: Budibase Release Docker Selfhost on: workflow_dispatch: -env: - POSTHOG_TOKEN: ${{ secrets.POSTHOG_TOKEN }} - INTERCOM_TOKEN: ${{ secrets.INTERCOM_TOKEN }} - POSTHOG_URL: ${{ secrets.POSTHOG_URL }} - jobs: release: runs-on: ubuntu-latest steps: - uses: actions/checkout@v2 - with: - fetch-depth: 0 - - uses: actions/setup-node@v1 - with: - node-version: 14.x - - run: yarn - - run: yarn bootstrap - - name: Configure AWS Credentials - uses: aws-actions/configure-aws-credentials@v1 - with: - aws-access-key-id: ${{ secrets.AWS_ACCESS_KEY_ID }} - aws-secret-access-key: ${{ secrets.AWS_SECRET_ACCESS_KEY }} - aws-region: eu-west-1 - - - name: 'Get Previous tag' - id: previoustag - uses: "WyriHaximus/github-action-get-previous-tag@v1" - - - name: Build/release Docker images (Self Host) + - name: Tag and release Docker images (Self Host) run: | docker login -u $DOCKER_USER -p $DOCKER_PASSWORD - yarn build - yarn build:docker:selfhost + + # Get latest release version + sudo apt-get install -y jq + release_version=v$(cat lerna.json | jq -r '.version') + echo "::set-output name=release_version::$release_version" + + # Pull apps and worker images + docker pull budibase/apps:$release_version + docker pull budibase/worker:$release_version + + # Tag apps and worker images + docker tag budibase/apps:$release_version $SELF_HOST_TAG + docker tag budibase/worker:$release_version $SELF_HOST_TAG + + # Push images + docker push --all-tags budibase/apps + docker push --all-tags budibase/worker env: DOCKER_USER: ${{ secrets.DOCKER_USERNAME }} DOCKER_PASSWORD: ${{ secrets.DOCKER_API_KEY }} - BUDIBASE_RELEASE_VERSION: ${{ steps.previoustag.outputs.tag }} - \ No newline at end of file + SELF_HOST_TAG: latest + + # - name: Build and release helm chart + # run: | + # git config user.name "Budibase Helm Bot" + # git config user.email "<>" + # helm package charts/budibase + # git checkout gh-pages + # mv budibase-${{ github.steps.version.outputs.release_version }}.tgz docs + # git commit -m "Helm Release: ${{ github.steps.version.outputs.release_version }}" + # git push + # env: + # GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} + + # - name: Perform github release + # run: | + # echo release + # env: + # GITHUB_TOKEN: "${{ secrets.GITHUB_TOKEN }}" \ No newline at end of file diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml index d4142f7ac9..43d5eb7b13 100644 --- a/.github/workflows/release.yml +++ b/.github/workflows/release.yml @@ -57,4 +57,25 @@ jobs: DOCKER_PASSWORD: ${{ secrets.DOCKER_API_KEY }} BUDIBASE_RELEASE_VERSION: ${{ steps.previoustag.outputs.tag }} - # Release to pre-prod environment \ No newline at end of file + # - name: Pull values.yaml from budibase-infra + # run: | + # curl -H "Authorization: token ${{ secrets.GITHUB_TOKEN }}" \ [c3a7a9d12] + # -H 'Accept: application/vnd.github.v3.raw' \ + # -o values.production.yaml \ + # -L https://api.github.com/repos/budibase/budibase-infra/contents/kubernetes/values.preprod.yaml + + # - name: Deploy to Preprod Environment + # uses: deliverybot/helm@v1 + # with: + # release: budibase-preprod + # namespace: budibase + # chart: charts/budibase + # token: ${{ github.token }} + # values: | + # appVersion: ${{ steps.previoustag.outputs.tag }} + # value-files: >- + # [ + # "values.preprod.yaml" + # ] + # env: + # KUBECONFIG_FILE: '${{ secrets.PREPROD_KUBECONFIG }}' diff --git a/budibase-1.0.0.tgz b/budibase-1.0.0.tgz new file mode 100644 index 0000000000000000000000000000000000000000..72d39b9a73229da1c2b869c637935527be6111e0 GIT binary patch literal 42683 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 D1Vk5` literal 0 HcmV?d00001 diff --git a/scripts/latest_budibase_version.sh b/scripts/latest_budibase_version.sh new file mode 100644 index 0000000000..e69de29bb2 From 1f864f11fb7d3bf5ce91434aceb8462cea4c604e Mon Sep 17 00:00:00 2001 From: Martin McKeaveney Date: Wed, 15 Dec 2021 18:43:56 +0100 Subject: [PATCH 126/175] remove created files --- budibase-1.0.0.tgz | Bin 42683 -> 0 bytes scripts/latest_budibase_version.sh | 0 2 files changed, 0 insertions(+), 0 deletions(-) delete mode 100644 budibase-1.0.0.tgz delete mode 100644 scripts/latest_budibase_version.sh diff --git a/budibase-1.0.0.tgz b/budibase-1.0.0.tgz deleted file mode 100644 index 72d39b9a73229da1c2b869c637935527be6111e0..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 42683 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 D1Vk5` diff --git a/scripts/latest_budibase_version.sh b/scripts/latest_budibase_version.sh deleted file mode 100644 index e69de29bb2..0000000000 From 18dbfa911d10f3e91ae6030dbb33f9b816538f50 Mon Sep 17 00:00:00 2001 From: Martin McKeaveney Date: Wed, 15 Dec 2021 19:40:59 +0100 Subject: [PATCH 127/175] using tag correctly in selfhost pipeline --- .github/workflows/release-selfhost.yml | 10 ++++++---- 1 file changed, 6 insertions(+), 4 deletions(-) diff --git a/.github/workflows/release-selfhost.yml b/.github/workflows/release-selfhost.yml index 16f38ec6f1..5e2e59634a 100644 --- a/.github/workflows/release-selfhost.yml +++ b/.github/workflows/release-selfhost.yml @@ -18,14 +18,15 @@ jobs: sudo apt-get install -y jq release_version=v$(cat lerna.json | jq -r '.version') echo "::set-output name=release_version::$release_version" + release_tag=v$release_version # Pull apps and worker images - docker pull budibase/apps:$release_version - docker pull budibase/worker:$release_version + docker pull budibase/apps:$release_tag + docker pull budibase/worker:$release_tag # Tag apps and worker images - docker tag budibase/apps:$release_version $SELF_HOST_TAG - docker tag budibase/worker:$release_version $SELF_HOST_TAG + docker tag budibase/apps:$release_tag $SELF_HOST_TAG + docker tag budibase/worker:$release_tag $SELF_HOST_TAG # Push images docker push --all-tags budibase/apps @@ -42,6 +43,7 @@ jobs: # helm package charts/budibase # git checkout gh-pages # mv budibase-${{ github.steps.version.outputs.release_version }}.tgz docs + # git add . # git commit -m "Helm Release: ${{ github.steps.version.outputs.release_version }}" # git push # env: From 4a4b8396e97151660be9b05cd5098a315a7689aa Mon Sep 17 00:00:00 2001 From: Martin McKeaveney Date: Wed, 15 Dec 2021 19:41:55 +0100 Subject: [PATCH 128/175] git add all --- .github/workflows/release-selfhost.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/release-selfhost.yml b/.github/workflows/release-selfhost.yml index 5e2e59634a..3f274e31f7 100644 --- a/.github/workflows/release-selfhost.yml +++ b/.github/workflows/release-selfhost.yml @@ -43,7 +43,7 @@ jobs: # helm package charts/budibase # git checkout gh-pages # mv budibase-${{ github.steps.version.outputs.release_version }}.tgz docs - # git add . + # git add -A # git commit -m "Helm Release: ${{ github.steps.version.outputs.release_version }}" # git push # env: From a987047aa6da66ae79bcc93a7a9e39e923c60842 Mon Sep 17 00:00:00 2001 From: Martin McKeaveney Date: Wed, 15 Dec 2021 19:46:28 +0100 Subject: [PATCH 129/175] setup and update helm --- .github/workflows/release-selfhost.yml | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/.github/workflows/release-selfhost.yml b/.github/workflows/release-selfhost.yml index 3f274e31f7..c34e1dac22 100644 --- a/.github/workflows/release-selfhost.yml +++ b/.github/workflows/release-selfhost.yml @@ -35,6 +35,10 @@ jobs: DOCKER_USER: ${{ secrets.DOCKER_USERNAME }} DOCKER_PASSWORD: ${{ secrets.DOCKER_API_KEY }} SELF_HOST_TAG: latest + + - name: Setup Helm + uses: azure/setup-helm@v1 + id: helm-install # - name: Build and release helm chart # run: | From d6a0a50c63fa55a9b00949a04f56622cef80dd11 Mon Sep 17 00:00:00 2001 From: Martin McKeaveney Date: Wed, 15 Dec 2021 19:49:14 +0100 Subject: [PATCH 130/175] name values file correctly --- .github/workflows/release.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml index 43d5eb7b13..8768a01c78 100644 --- a/.github/workflows/release.yml +++ b/.github/workflows/release.yml @@ -61,7 +61,7 @@ jobs: # run: | # curl -H "Authorization: token ${{ secrets.GITHUB_TOKEN }}" \ [c3a7a9d12] # -H 'Accept: application/vnd.github.v3.raw' \ - # -o values.production.yaml \ + # -o values.preprod.yaml \ # -L https://api.github.com/repos/budibase/budibase-infra/contents/kubernetes/values.preprod.yaml # - name: Deploy to Preprod Environment From 5b1da51acb1a4e1e8e7d6a5219f4d360886869e1 Mon Sep 17 00:00:00 2001 From: Budibase Release Bot <> Date: Thu, 16 Dec 2021 10:18:24 +0000 Subject: [PATCH 131/175] v1.0.23 --- lerna.json | 2 +- packages/auth/package.json | 2 +- packages/bbui/package.json | 2 +- packages/builder/package.json | 8 ++++---- packages/cli/package.json | 2 +- packages/client/package.json | 6 +++--- packages/server/package.json | 8 ++++---- packages/string-templates/package.json | 2 +- packages/worker/package.json | 6 +++--- 9 files changed, 19 insertions(+), 19 deletions(-) diff --git a/lerna.json b/lerna.json index 09d7a43df9..2d5e3c1efd 100644 --- a/lerna.json +++ b/lerna.json @@ -1,5 +1,5 @@ { - "version": "1.0.22", + "version": "1.0.23", "npmClient": "yarn", "packages": [ "packages/*" diff --git a/packages/auth/package.json b/packages/auth/package.json index 74897f1b2b..7d360ce9fb 100644 --- a/packages/auth/package.json +++ b/packages/auth/package.json @@ -1,6 +1,6 @@ { "name": "@budibase/auth", - "version": "1.0.22", + "version": "1.0.23", "description": "Authentication middlewares for budibase builder and apps", "main": "src/index.js", "author": "Budibase", diff --git a/packages/bbui/package.json b/packages/bbui/package.json index d86371c554..c017bd8de5 100644 --- a/packages/bbui/package.json +++ b/packages/bbui/package.json @@ -1,7 +1,7 @@ { "name": "@budibase/bbui", "description": "A UI solution used in the different Budibase projects.", - "version": "1.0.22", + "version": "1.0.23", "license": "MPL-2.0", "svelte": "src/index.js", "module": "dist/bbui.es.js", diff --git a/packages/builder/package.json b/packages/builder/package.json index 85e43edaaf..b8b329a85a 100644 --- a/packages/builder/package.json +++ b/packages/builder/package.json @@ -1,6 +1,6 @@ { "name": "@budibase/builder", - "version": "1.0.22", + "version": "1.0.23", "license": "GPL-3.0", "private": true, "scripts": { @@ -65,10 +65,10 @@ } }, "dependencies": { - "@budibase/bbui": "^1.0.22", - "@budibase/client": "^1.0.22", + "@budibase/bbui": "^1.0.23", + "@budibase/client": "^1.0.23", "@budibase/colorpicker": "1.1.2", - "@budibase/string-templates": "^1.0.22", + "@budibase/string-templates": "^1.0.23", "@sentry/browser": "5.19.1", "@spectrum-css/page": "^3.0.1", "@spectrum-css/vars": "^3.0.1", diff --git a/packages/cli/package.json b/packages/cli/package.json index de319745a1..a4d619ac2c 100644 --- a/packages/cli/package.json +++ b/packages/cli/package.json @@ -1,6 +1,6 @@ { "name": "@budibase/cli", - "version": "1.0.22", + "version": "1.0.23", "description": "Budibase CLI, for developers, self hosting and migrations.", "main": "src/index.js", "bin": { diff --git a/packages/client/package.json b/packages/client/package.json index 2f40808ae0..9b78f34089 100644 --- a/packages/client/package.json +++ b/packages/client/package.json @@ -1,6 +1,6 @@ { "name": "@budibase/client", - "version": "1.0.22", + "version": "1.0.23", "license": "MPL-2.0", "module": "dist/budibase-client.js", "main": "dist/budibase-client.js", @@ -19,9 +19,9 @@ "dev:builder": "rollup -cw" }, "dependencies": { - "@budibase/bbui": "^1.0.22", + "@budibase/bbui": "^1.0.23", "@budibase/standard-components": "^0.9.139", - "@budibase/string-templates": "^1.0.22", + "@budibase/string-templates": "^1.0.23", "regexparam": "^1.3.0", "shortid": "^2.2.15", "svelte-spa-router": "^3.0.5" diff --git a/packages/server/package.json b/packages/server/package.json index 579535f0eb..3e53763be7 100644 --- a/packages/server/package.json +++ b/packages/server/package.json @@ -1,7 +1,7 @@ { "name": "@budibase/server", "email": "hi@budibase.com", - "version": "1.0.22", + "version": "1.0.23", "description": "Budibase Web Server", "main": "src/index.ts", "repository": { @@ -69,9 +69,9 @@ "author": "Budibase", "license": "GPL-3.0", "dependencies": { - "@budibase/auth": "^1.0.22", - "@budibase/client": "^1.0.22", - "@budibase/string-templates": "^1.0.22", + "@budibase/auth": "^1.0.23", + "@budibase/client": "^1.0.23", + "@budibase/string-templates": "^1.0.23", "@bull-board/api": "^3.7.0", "@bull-board/koa": "^3.7.0", "@elastic/elasticsearch": "7.10.0", diff --git a/packages/string-templates/package.json b/packages/string-templates/package.json index 005d6304fe..7816c22830 100644 --- a/packages/string-templates/package.json +++ b/packages/string-templates/package.json @@ -1,6 +1,6 @@ { "name": "@budibase/string-templates", - "version": "1.0.22", + "version": "1.0.23", "description": "Handlebars wrapper for Budibase templating.", "main": "src/index.cjs", "module": "dist/bundle.mjs", diff --git a/packages/worker/package.json b/packages/worker/package.json index f1e09ebf60..86b4841af5 100644 --- a/packages/worker/package.json +++ b/packages/worker/package.json @@ -1,7 +1,7 @@ { "name": "@budibase/worker", "email": "hi@budibase.com", - "version": "1.0.22", + "version": "1.0.23", "description": "Budibase background service", "main": "src/index.js", "repository": { @@ -29,8 +29,8 @@ "author": "Budibase", "license": "GPL-3.0", "dependencies": { - "@budibase/auth": "^1.0.22", - "@budibase/string-templates": "^1.0.22", + "@budibase/auth": "^1.0.23", + "@budibase/string-templates": "^1.0.23", "@koa/router": "^8.0.0", "@sentry/node": "^6.0.0", "@techpass/passport-openidconnect": "^0.3.0", From dd8f33c5488579673408ee2c75ceebfce0cb9146 Mon Sep 17 00:00:00 2001 From: Martin McKeaveney Date: Thu, 16 Dec 2021 11:55:32 +0100 Subject: [PATCH 132/175] remove leading v in job --- .github/workflows/release-selfhost.yml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/.github/workflows/release-selfhost.yml b/.github/workflows/release-selfhost.yml index c34e1dac22..933fee947c 100644 --- a/.github/workflows/release-selfhost.yml +++ b/.github/workflows/release-selfhost.yml @@ -1,4 +1,4 @@ -name: Budibase Release Docker Selfhost +name: Budibase Release Selfhost on: workflow_dispatch: @@ -16,7 +16,7 @@ jobs: # Get latest release version sudo apt-get install -y jq - release_version=v$(cat lerna.json | jq -r '.version') + release_version=$(cat lerna.json | jq -r '.version') echo "::set-output name=release_version::$release_version" release_tag=v$release_version From e7ab6f72f7982ff1031eba37b8cd19b85fe0a77d Mon Sep 17 00:00:00 2001 From: Budibase Release Bot <> Date: Thu, 16 Dec 2021 11:04:27 +0000 Subject: [PATCH 133/175] v1.0.24 --- lerna.json | 2 +- packages/auth/package.json | 2 +- packages/bbui/package.json | 2 +- packages/builder/package.json | 8 ++++---- packages/cli/package.json | 2 +- packages/client/package.json | 6 +++--- packages/server/package.json | 8 ++++---- packages/string-templates/package.json | 2 +- packages/worker/package.json | 6 +++--- 9 files changed, 19 insertions(+), 19 deletions(-) diff --git a/lerna.json b/lerna.json index 2d5e3c1efd..7c6b6f801a 100644 --- a/lerna.json +++ b/lerna.json @@ -1,5 +1,5 @@ { - "version": "1.0.23", + "version": "1.0.24", "npmClient": "yarn", "packages": [ "packages/*" diff --git a/packages/auth/package.json b/packages/auth/package.json index 7d360ce9fb..25a5a63691 100644 --- a/packages/auth/package.json +++ b/packages/auth/package.json @@ -1,6 +1,6 @@ { "name": "@budibase/auth", - "version": "1.0.23", + "version": "1.0.24", "description": "Authentication middlewares for budibase builder and apps", "main": "src/index.js", "author": "Budibase", diff --git a/packages/bbui/package.json b/packages/bbui/package.json index c017bd8de5..cd2d027388 100644 --- a/packages/bbui/package.json +++ b/packages/bbui/package.json @@ -1,7 +1,7 @@ { "name": "@budibase/bbui", "description": "A UI solution used in the different Budibase projects.", - "version": "1.0.23", + "version": "1.0.24", "license": "MPL-2.0", "svelte": "src/index.js", "module": "dist/bbui.es.js", diff --git a/packages/builder/package.json b/packages/builder/package.json index b8b329a85a..77fdaa9f5c 100644 --- a/packages/builder/package.json +++ b/packages/builder/package.json @@ -1,6 +1,6 @@ { "name": "@budibase/builder", - "version": "1.0.23", + "version": "1.0.24", "license": "GPL-3.0", "private": true, "scripts": { @@ -65,10 +65,10 @@ } }, "dependencies": { - "@budibase/bbui": "^1.0.23", - "@budibase/client": "^1.0.23", + "@budibase/bbui": "^1.0.24", + "@budibase/client": "^1.0.24", "@budibase/colorpicker": "1.1.2", - "@budibase/string-templates": "^1.0.23", + "@budibase/string-templates": "^1.0.24", "@sentry/browser": "5.19.1", "@spectrum-css/page": "^3.0.1", "@spectrum-css/vars": "^3.0.1", diff --git a/packages/cli/package.json b/packages/cli/package.json index a4d619ac2c..68551d8cd9 100644 --- a/packages/cli/package.json +++ b/packages/cli/package.json @@ -1,6 +1,6 @@ { "name": "@budibase/cli", - "version": "1.0.23", + "version": "1.0.24", "description": "Budibase CLI, for developers, self hosting and migrations.", "main": "src/index.js", "bin": { diff --git a/packages/client/package.json b/packages/client/package.json index 9b78f34089..74781039ec 100644 --- a/packages/client/package.json +++ b/packages/client/package.json @@ -1,6 +1,6 @@ { "name": "@budibase/client", - "version": "1.0.23", + "version": "1.0.24", "license": "MPL-2.0", "module": "dist/budibase-client.js", "main": "dist/budibase-client.js", @@ -19,9 +19,9 @@ "dev:builder": "rollup -cw" }, "dependencies": { - "@budibase/bbui": "^1.0.23", + "@budibase/bbui": "^1.0.24", "@budibase/standard-components": "^0.9.139", - "@budibase/string-templates": "^1.0.23", + "@budibase/string-templates": "^1.0.24", "regexparam": "^1.3.0", "shortid": "^2.2.15", "svelte-spa-router": "^3.0.5" diff --git a/packages/server/package.json b/packages/server/package.json index 3e53763be7..0cbd44daa9 100644 --- a/packages/server/package.json +++ b/packages/server/package.json @@ -1,7 +1,7 @@ { "name": "@budibase/server", "email": "hi@budibase.com", - "version": "1.0.23", + "version": "1.0.24", "description": "Budibase Web Server", "main": "src/index.ts", "repository": { @@ -69,9 +69,9 @@ "author": "Budibase", "license": "GPL-3.0", "dependencies": { - "@budibase/auth": "^1.0.23", - "@budibase/client": "^1.0.23", - "@budibase/string-templates": "^1.0.23", + "@budibase/auth": "^1.0.24", + "@budibase/client": "^1.0.24", + "@budibase/string-templates": "^1.0.24", "@bull-board/api": "^3.7.0", "@bull-board/koa": "^3.7.0", "@elastic/elasticsearch": "7.10.0", diff --git a/packages/string-templates/package.json b/packages/string-templates/package.json index 7816c22830..99d2f5729e 100644 --- a/packages/string-templates/package.json +++ b/packages/string-templates/package.json @@ -1,6 +1,6 @@ { "name": "@budibase/string-templates", - "version": "1.0.23", + "version": "1.0.24", "description": "Handlebars wrapper for Budibase templating.", "main": "src/index.cjs", "module": "dist/bundle.mjs", diff --git a/packages/worker/package.json b/packages/worker/package.json index 86b4841af5..41b40012ad 100644 --- a/packages/worker/package.json +++ b/packages/worker/package.json @@ -1,7 +1,7 @@ { "name": "@budibase/worker", "email": "hi@budibase.com", - "version": "1.0.23", + "version": "1.0.24", "description": "Budibase background service", "main": "src/index.js", "repository": { @@ -29,8 +29,8 @@ "author": "Budibase", "license": "GPL-3.0", "dependencies": { - "@budibase/auth": "^1.0.23", - "@budibase/string-templates": "^1.0.23", + "@budibase/auth": "^1.0.24", + "@budibase/string-templates": "^1.0.24", "@koa/router": "^8.0.0", "@sentry/node": "^6.0.0", "@techpass/passport-openidconnect": "^0.3.0", From 1a964f2122695ce46298d97ca98039a3dc0c0833 Mon Sep 17 00:00:00 2001 From: Martin McKeaveney Date: Thu, 16 Dec 2021 12:35:50 +0100 Subject: [PATCH 134/175] turn off release pipeline, update selfhost jobs --- .github/workflows/deploy-cloud.yaml | 3 ++- .github/workflows/release-selfhost.yml | 9 ++++----- .github/workflows/release.yml | 2 +- 3 files changed, 7 insertions(+), 7 deletions(-) diff --git a/.github/workflows/deploy-cloud.yaml b/.github/workflows/deploy-cloud.yaml index 778029bf03..b7c4c8ae1c 100644 --- a/.github/workflows/deploy-cloud.yaml +++ b/.github/workflows/deploy-cloud.yaml @@ -29,7 +29,8 @@ jobs: release_version=$(cat lerna.json | jq -r '.version') echo "::set-output name=release_version::$release_version" - - uses: peymanmortazavi/eks-helm-deploy@v1 + - name: Deploy to EKS + uses: peymanmortazavi/eks-helm-deploy@v1 with: aws-access-key-id: ${{ secrets.AWS_ACCESS_KEY_ID }} aws-secret-access-key: ${{ secrets.AWS_SECRET_ACCESS_KEY }} diff --git a/.github/workflows/release-selfhost.yml b/.github/workflows/release-selfhost.yml index 933fee947c..e377407b1f 100644 --- a/.github/workflows/release-selfhost.yml +++ b/.github/workflows/release-selfhost.yml @@ -25,16 +25,15 @@ jobs: docker pull budibase/worker:$release_tag # Tag apps and worker images - docker tag budibase/apps:$release_tag $SELF_HOST_TAG - docker tag budibase/worker:$release_tag $SELF_HOST_TAG + docker tag budibase/apps:$release_tag latest + docker tag budibase/worker:$release_tag latest # Push images - docker push --all-tags budibase/apps - docker push --all-tags budibase/worker + docker push budibase/apps:latest + docker push budibase/worker:latest env: DOCKER_USER: ${{ secrets.DOCKER_USERNAME }} DOCKER_PASSWORD: ${{ secrets.DOCKER_API_KEY }} - SELF_HOST_TAG: latest - name: Setup Helm uses: azure/setup-helm@v1 diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml index 8768a01c78..46687ce0bc 100644 --- a/.github/workflows/release.yml +++ b/.github/workflows/release.yml @@ -3,7 +3,7 @@ name: Budibase Release on: push: branches: - - master + - test env: POSTHOG_TOKEN: ${{ secrets.POSTHOG_TOKEN }} From 5c43042bf520605adfd85ca4d9979b89d43b3b95 Mon Sep 17 00:00:00 2001 From: Martin McKeaveney Date: Thu, 16 Dec 2021 12:44:11 +0100 Subject: [PATCH 135/175] tag docker images, change eks deploy action --- .github/workflows/deploy-cloud.yaml | 5 +++-- .github/workflows/release-selfhost.yml | 4 ++-- 2 files changed, 5 insertions(+), 4 deletions(-) diff --git a/.github/workflows/deploy-cloud.yaml b/.github/workflows/deploy-cloud.yaml index b7c4c8ae1c..a2cad316fd 100644 --- a/.github/workflows/deploy-cloud.yaml +++ b/.github/workflows/deploy-cloud.yaml @@ -30,13 +30,14 @@ jobs: echo "::set-output name=release_version::$release_version" - name: Deploy to EKS - uses: peymanmortazavi/eks-helm-deploy@v1 + uses: craftech-io/eks-helm-deploy-action@v1 with: - aws-access-key-id: ${{ secrets.AWS_ACCESS_KEY_ID }} + aws-access-key-id: ${{ secrets.AWS_ACCESS__KEY_ID }} aws-secret-access-key: ${{ secrets.AWS_SECRET_ACCESS_KEY }} aws-region: eu-west-1 cluster-name: budibase-eks-production config-files: values.production.yaml + chart-path: charts/budibase namespace: budibase values: appVersion=v${{ github.event.inputs.version || github.steps.version.outputs.release_version }} name: budibase-prod \ No newline at end of file diff --git a/.github/workflows/release-selfhost.yml b/.github/workflows/release-selfhost.yml index e377407b1f..1d1ee381be 100644 --- a/.github/workflows/release-selfhost.yml +++ b/.github/workflows/release-selfhost.yml @@ -29,8 +29,8 @@ jobs: docker tag budibase/worker:$release_tag latest # Push images - docker push budibase/apps:latest - docker push budibase/worker:latest + docker push --all-tags budibase/apps + docker push --all-tags budibase/apps env: DOCKER_USER: ${{ secrets.DOCKER_USERNAME }} DOCKER_PASSWORD: ${{ secrets.DOCKER_API_KEY }} From d5ee373450ae38f9a63fdad88dcc51209d9c30e0 Mon Sep 17 00:00:00 2001 From: Martin McKeaveney Date: Thu, 16 Dec 2021 13:01:43 +0100 Subject: [PATCH 136/175] fix github curl to pull infra values.yaml --- .github/workflows/release-selfhost.yml | 9 +++++---- 1 file changed, 5 insertions(+), 4 deletions(-) diff --git a/.github/workflows/release-selfhost.yml b/.github/workflows/release-selfhost.yml index 1d1ee381be..2a31eccf2e 100644 --- a/.github/workflows/release-selfhost.yml +++ b/.github/workflows/release-selfhost.yml @@ -25,15 +25,16 @@ jobs: docker pull budibase/worker:$release_tag # Tag apps and worker images - docker tag budibase/apps:$release_tag latest - docker tag budibase/worker:$release_tag latest + docker tag budibase/apps:$release_tag budibase/apps:$SELFHOST_TAG + docker tag budibase/worker:$release_tag budibase/worker:$SELFHOST_TAG # Push images - docker push --all-tags budibase/apps - docker push --all-tags budibase/apps + docker push budibase/apps:$SELFHOST_TAG + docker push budibase/worker:$SELFHOST_TAG env: DOCKER_USER: ${{ secrets.DOCKER_USERNAME }} DOCKER_PASSWORD: ${{ secrets.DOCKER_API_KEY }} + SELFHOST_TAG: latest - name: Setup Helm uses: azure/setup-helm@v1 From 6d22067f877a704fc98d41281bc2f9429eea367c Mon Sep 17 00:00:00 2001 From: Martin McKeaveney Date: Thu, 16 Dec 2021 13:09:21 +0100 Subject: [PATCH 137/175] removing git commit sha from curl --- .github/workflows/deploy-cloud.yaml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/deploy-cloud.yaml b/.github/workflows/deploy-cloud.yaml index a2cad316fd..af6971c61c 100644 --- a/.github/workflows/deploy-cloud.yaml +++ b/.github/workflows/deploy-cloud.yaml @@ -16,7 +16,7 @@ jobs: - name: Pull values.yaml from budibase-infra run: | - curl -H "Authorization: token ${{ secrets.GITHUB_TOKEN }}" \ [c3a7a9d12] + curl -H "Authorization: token ${{ secrets.GITHUB_TOKEN }}" \ -H 'Accept: application/vnd.github.v3.raw' \ -o values.production.yaml \ -L https://api.github.com/repos/budibase/budibase-infra/contents/kubernetes/values.yaml From 414a1b74d4d023a19da1559a47c8e5376d57f726 Mon Sep 17 00:00:00 2001 From: Martin McKeaveney Date: Thu, 16 Dec 2021 13:12:54 +0100 Subject: [PATCH 138/175] adding AWS creds configuration step --- .github/workflows/deploy-cloud.yaml | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/.github/workflows/deploy-cloud.yaml b/.github/workflows/deploy-cloud.yaml index af6971c61c..1f99a2919e 100644 --- a/.github/workflows/deploy-cloud.yaml +++ b/.github/workflows/deploy-cloud.yaml @@ -25,9 +25,15 @@ jobs: if: ${{ !github.event.inputs.version }} id: version run: | - sudo apt-get install -y jq release_version=$(cat lerna.json | jq -r '.version') echo "::set-output name=release_version::$release_version" + + - name: Configure AWS Credentials + uses: aws-actions/configure-aws-credentials@v1 + with: + aws-access-key-id: ${{ secrets.AWS_ACCESS_KEY_ID }} + aws-secret-access-key: ${{ secrets.AWS_SECRET_ACCESS_KEY }} + aws-region: eu-west-1 - name: Deploy to EKS uses: craftech-io/eks-helm-deploy-action@v1 From 3a0dac4292f7af1a325bf3738dd3c1764c7a04ea Mon Sep 17 00:00:00 2001 From: Martin McKeaveney Date: Thu, 16 Dec 2021 13:38:21 +0100 Subject: [PATCH 139/175] correct version for cloud deploy, added helm chart automation to selfhost job --- .github/workflows/deploy-cloud.yaml | 13 ++++++---- .github/workflows/release-selfhost.yml | 34 +++++++++++++------------- 2 files changed, 25 insertions(+), 22 deletions(-) diff --git a/.github/workflows/deploy-cloud.yaml b/.github/workflows/deploy-cloud.yaml index 1f99a2919e..0951a9d9e1 100644 --- a/.github/workflows/deploy-cloud.yaml +++ b/.github/workflows/deploy-cloud.yaml @@ -21,12 +21,15 @@ jobs: -o values.production.yaml \ -L https://api.github.com/repos/budibase/budibase-infra/contents/kubernetes/values.yaml - - name: Get the latest budibase release version if not specifically set - if: ${{ !github.event.inputs.version }} + - name: Get the latest budibase release version id: version run: | - release_version=$(cat lerna.json | jq -r '.version') - echo "::set-output name=release_version::$release_version" + if [ ${{ github.event.inputs.version }} == '' ]; then + release_version=$(cat lerna.json | jq -r '.version') + else + release_version=${{ github.event.inputs.version }} + fi + echo "::set-output name=release_version::$release_version" - name: Configure AWS Credentials uses: aws-actions/configure-aws-credentials@v1 @@ -45,5 +48,5 @@ jobs: config-files: values.production.yaml chart-path: charts/budibase namespace: budibase - values: appVersion=v${{ github.event.inputs.version || github.steps.version.outputs.release_version }} + values: appVersion=v${{ github.steps.version.outputs.release_version }} name: budibase-prod \ No newline at end of file diff --git a/.github/workflows/release-selfhost.yml b/.github/workflows/release-selfhost.yml index 2a31eccf2e..89edf9fb3b 100644 --- a/.github/workflows/release-selfhost.yml +++ b/.github/workflows/release-selfhost.yml @@ -40,21 +40,21 @@ jobs: uses: azure/setup-helm@v1 id: helm-install - # - name: Build and release helm chart - # run: | - # git config user.name "Budibase Helm Bot" - # git config user.email "<>" - # helm package charts/budibase - # git checkout gh-pages - # mv budibase-${{ github.steps.version.outputs.release_version }}.tgz docs - # git add -A - # git commit -m "Helm Release: ${{ github.steps.version.outputs.release_version }}" - # git push - # env: - # GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} + - name: Build and release helm chart + run: | + git config user.name "Budibase Helm Bot" + git config user.email "<>" + helm package charts/budibase + git checkout gh-pages + mv budibase-${{ github.steps.version.outputs.release_version }}.tgz docs + git add -A + git commit -m "Helm Release: ${{ github.steps.version.outputs.release_version }}" + git push + env: + GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} - # - name: Perform github release - # run: | - # echo release - # env: - # GITHUB_TOKEN: "${{ secrets.GITHUB_TOKEN }}" \ No newline at end of file + - name: Perform Github Release + uses: softprops/action-gh-release@v1 + name: v${{ github.steps.version.outputs.release_version }} + with: + generate_release_notes: true \ No newline at end of file From 3a7bf6455e6d686d3ee1bf79029fed43b42947cc Mon Sep 17 00:00:00 2001 From: Martin McKeaveney Date: Thu, 16 Dec 2021 13:40:17 +0100 Subject: [PATCH 140/175] workflow file --- .github/workflows/release-selfhost.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/release-selfhost.yml b/.github/workflows/release-selfhost.yml index 89edf9fb3b..2533e4c1aa 100644 --- a/.github/workflows/release-selfhost.yml +++ b/.github/workflows/release-selfhost.yml @@ -55,6 +55,6 @@ jobs: - name: Perform Github Release uses: softprops/action-gh-release@v1 - name: v${{ github.steps.version.outputs.release_version }} with: + name: v${{ github.steps.version.outputs.release_version }} generate_release_notes: true \ No newline at end of file From b04923d6d3618f45bec30e5394aa8583e735f0ec Mon Sep 17 00:00:00 2001 From: Martin McKeaveney Date: Thu, 16 Dec 2021 14:17:36 +0100 Subject: [PATCH 141/175] index helm repo --- .github/workflows/release-selfhost.yml | 1 + 1 file changed, 1 insertion(+) diff --git a/.github/workflows/release-selfhost.yml b/.github/workflows/release-selfhost.yml index 2533e4c1aa..b2ca69c27f 100644 --- a/.github/workflows/release-selfhost.yml +++ b/.github/workflows/release-selfhost.yml @@ -47,6 +47,7 @@ jobs: helm package charts/budibase git checkout gh-pages mv budibase-${{ github.steps.version.outputs.release_version }}.tgz docs + helm repo index docs git add -A git commit -m "Helm Release: ${{ github.steps.version.outputs.release_version }}" git push From e2e91a7bd50ed75dae8e88cbd436a9bcb6a7019a Mon Sep 17 00:00:00 2001 From: Martin McKeaveney Date: Thu, 16 Dec 2021 14:31:40 +0100 Subject: [PATCH 142/175] inputting correct release version --- .github/workflows/deploy-cloud.yaml | 2 +- .github/workflows/release-selfhost.yml | 7 +++++-- 2 files changed, 6 insertions(+), 3 deletions(-) diff --git a/.github/workflows/deploy-cloud.yaml b/.github/workflows/deploy-cloud.yaml index 0951a9d9e1..7516409652 100644 --- a/.github/workflows/deploy-cloud.yaml +++ b/.github/workflows/deploy-cloud.yaml @@ -24,7 +24,7 @@ jobs: - name: Get the latest budibase release version id: version run: | - if [ ${{ github.event.inputs.version }} == '' ]; then + if [ -z "${{ github.event.inputs.version }}" ]; then release_version=$(cat lerna.json | jq -r '.version') else release_version=${{ github.event.inputs.version }} diff --git a/.github/workflows/release-selfhost.yml b/.github/workflows/release-selfhost.yml index b2ca69c27f..ff54d8081b 100644 --- a/.github/workflows/release-selfhost.yml +++ b/.github/workflows/release-selfhost.yml @@ -39,13 +39,16 @@ jobs: - name: Setup Helm uses: azure/setup-helm@v1 id: helm-install + run: helm package charts/budibase + - uses: actions/checkout@v2 + with: + ref: gh-pages + - name: Build and release helm chart run: | git config user.name "Budibase Helm Bot" git config user.email "<>" - helm package charts/budibase - git checkout gh-pages mv budibase-${{ github.steps.version.outputs.release_version }}.tgz docs helm repo index docs git add -A From 8056c1acbb05192d0b85227a86f6f0ba8c77b884 Mon Sep 17 00:00:00 2001 From: Martin McKeaveney Date: Thu, 16 Dec 2021 15:13:20 +0100 Subject: [PATCH 143/175] adding run command to package chart --- .github/workflows/release-selfhost.yml | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/.github/workflows/release-selfhost.yml b/.github/workflows/release-selfhost.yml index ff54d8081b..7fbdadadf4 100644 --- a/.github/workflows/release-selfhost.yml +++ b/.github/workflows/release-selfhost.yml @@ -39,11 +39,13 @@ jobs: - name: Setup Helm uses: azure/setup-helm@v1 id: helm-install - run: helm package charts/budibase + - run: helm package charts/budibase + - uses: actions/checkout@v2 with: ref: gh-pages + - name: Build and release helm chart run: | From 40e9790e5e224e1f0d13aac4b9e97ef920a2879d Mon Sep 17 00:00:00 2001 From: Martin McKeaveney Date: Thu, 16 Dec 2021 15:33:14 +0100 Subject: [PATCH 144/175] set appVersion at correct level --- .github/workflows/deploy-cloud.yaml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/deploy-cloud.yaml b/.github/workflows/deploy-cloud.yaml index 7516409652..5e722989ed 100644 --- a/.github/workflows/deploy-cloud.yaml +++ b/.github/workflows/deploy-cloud.yaml @@ -48,5 +48,5 @@ jobs: config-files: values.production.yaml chart-path: charts/budibase namespace: budibase - values: appVersion=v${{ github.steps.version.outputs.release_version }} + values: globals.appVersion=v${{ github.event.inputs.version }} name: budibase-prod \ No newline at end of file From 7ddfb517408f4a6681dcb1ce7ade8743c596229a Mon Sep 17 00:00:00 2001 From: Martin McKeaveney Date: Thu, 16 Dec 2021 15:36:34 +0100 Subject: [PATCH 145/175] use github env rather than workflow outputs --- .github/workflows/deploy-cloud.yaml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/.github/workflows/deploy-cloud.yaml b/.github/workflows/deploy-cloud.yaml index 5e722989ed..8e162441d2 100644 --- a/.github/workflows/deploy-cloud.yaml +++ b/.github/workflows/deploy-cloud.yaml @@ -29,7 +29,7 @@ jobs: else release_version=${{ github.event.inputs.version }} fi - echo "::set-output name=release_version::$release_version" + echo "RELEASE_VERSION=$release_version" >> $GITHUB_ENV - name: Configure AWS Credentials uses: aws-actions/configure-aws-credentials@v1 @@ -48,5 +48,5 @@ jobs: config-files: values.production.yaml chart-path: charts/budibase namespace: budibase - values: globals.appVersion=v${{ github.event.inputs.version }} + values: globals.appVersion=v${{ env.RELEASE_VERSION }} name: budibase-prod \ No newline at end of file From 32d18087b6882fb2e4818634cbebde0f2bb4e22f Mon Sep 17 00:00:00 2001 From: Martin McKeaveney Date: Thu, 16 Dec 2021 16:04:08 +0100 Subject: [PATCH 146/175] word count to verify production yaml --- .github/workflows/deploy-cloud.yaml | 1 + .github/workflows/release-selfhost.yml | 35 +++++++++++++------------- .github/workflows/release.yml | 4 +-- 3 files changed, 20 insertions(+), 20 deletions(-) diff --git a/.github/workflows/deploy-cloud.yaml b/.github/workflows/deploy-cloud.yaml index 8e162441d2..5444ae8e89 100644 --- a/.github/workflows/deploy-cloud.yaml +++ b/.github/workflows/deploy-cloud.yaml @@ -20,6 +20,7 @@ jobs: -H 'Accept: application/vnd.github.v3.raw' \ -o values.production.yaml \ -L https://api.github.com/repos/budibase/budibase-infra/contents/kubernetes/values.yaml + wc -l values.production.yaml - name: Get the latest budibase release version id: version diff --git a/.github/workflows/release-selfhost.yml b/.github/workflows/release-selfhost.yml index 7fbdadadf4..a7072b6891 100644 --- a/.github/workflows/release-selfhost.yml +++ b/.github/workflows/release-selfhost.yml @@ -17,7 +17,7 @@ jobs: # Get latest release version sudo apt-get install -y jq release_version=$(cat lerna.json | jq -r '.version') - echo "::set-output name=release_version::$release_version" + echo "RELEASE_VERSION=$release_version" >> $GITHUB_ENV release_tag=v$release_version # Pull apps and worker images @@ -40,27 +40,26 @@ jobs: uses: azure/setup-helm@v1 id: helm-install - - run: helm package charts/budibase + # - run: helm package charts/budibase - - uses: actions/checkout@v2 - with: - ref: gh-pages - + # - uses: actions/checkout@v2 + # with: + # ref: gh-pages - - name: Build and release helm chart - run: | - git config user.name "Budibase Helm Bot" - git config user.email "<>" - mv budibase-${{ github.steps.version.outputs.release_version }}.tgz docs - helm repo index docs - git add -A - git commit -m "Helm Release: ${{ github.steps.version.outputs.release_version }}" - git push - env: - GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} + # - name: Build and release helm chart + # run: | + # git config user.name "Budibase Helm Bot" + # git config user.email "<>" + # mv budibase-${{ env.RELEASE_VERSION }}.tgz docs + # helm repo index docs + # git add -A + # git commit -m "Helm Release: ${{ env.RELEASE_VERSION }}" + # git push + # env: + # GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} - name: Perform Github Release uses: softprops/action-gh-release@v1 with: - name: v${{ github.steps.version.outputs.release_version }} + name: v${{ env.RELEASE_VERSION }} generate_release_notes: true \ No newline at end of file diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml index 46687ce0bc..3464e93da9 100644 --- a/.github/workflows/release.yml +++ b/.github/workflows/release.yml @@ -72,10 +72,10 @@ jobs: # chart: charts/budibase # token: ${{ github.token }} # values: | - # appVersion: ${{ steps.previoustag.outputs.tag }} + # globals.appVersion: ${{ steps.previoustag.outputs.tag }} # value-files: >- # [ - # "values.preprod.yaml" + # "charts/budibase/values.yaml" # ] # env: # KUBECONFIG_FILE: '${{ secrets.PREPROD_KUBECONFIG }}' From 9f5bc94b17228a5fe64578b8e7d8291a8c1ced39 Mon Sep 17 00:00:00 2001 From: Martin McKeaveney Date: Thu, 16 Dec 2021 17:14:28 +0100 Subject: [PATCH 147/175] use cross repo permissions token --- .github/workflows/deploy-cloud.yaml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/deploy-cloud.yaml b/.github/workflows/deploy-cloud.yaml index 5444ae8e89..ee86bb07ca 100644 --- a/.github/workflows/deploy-cloud.yaml +++ b/.github/workflows/deploy-cloud.yaml @@ -16,7 +16,7 @@ jobs: - name: Pull values.yaml from budibase-infra run: | - curl -H "Authorization: token ${{ secrets.GITHUB_TOKEN }}" \ + curl -H "Authorization: token ${{ secrets.GH_PERSONAL_TOKEN }}" \ -H 'Accept: application/vnd.github.v3.raw' \ -o values.production.yaml \ -L https://api.github.com/repos/budibase/budibase-infra/contents/kubernetes/values.yaml From 375364784b1ab1f55fd3be2463f18b5c9f23d487 Mon Sep 17 00:00:00 2001 From: Martin McKeaveney Date: Thu, 16 Dec 2021 18:42:42 +0100 Subject: [PATCH 148/175] removing timeouts from app exports in cloud --- hosting/kubernetes/envoy/envoy.yaml | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/hosting/kubernetes/envoy/envoy.yaml b/hosting/kubernetes/envoy/envoy.yaml index 25a774dc7e..bab1f25c02 100644 --- a/hosting/kubernetes/envoy/envoy.yaml +++ b/hosting/kubernetes/envoy/envoy.yaml @@ -50,6 +50,14 @@ static_resources: route: cluster: app-service + - match: + safe_regex: + google_re2: {} + regex: "/api/.*/export" + route: + timeout: 0s + cluster: app-service + - match: { path: "/api/deploy" } route: timeout: 60s From e9d44c7b479587ae45aab24f13b50f4f765d13c0 Mon Sep 17 00:00:00 2001 From: Martin McKeaveney Date: Thu, 16 Dec 2021 19:24:07 +0100 Subject: [PATCH 149/175] turning on prod deploy again, adding github release to selfhost job --- .github/workflows/release-selfhost.yml | 16 ++++++++++------ .github/workflows/release.yml | 4 ++-- 2 files changed, 12 insertions(+), 8 deletions(-) diff --git a/.github/workflows/release-selfhost.yml b/.github/workflows/release-selfhost.yml index a7072b6891..9a6b75959a 100644 --- a/.github/workflows/release-selfhost.yml +++ b/.github/workflows/release-selfhost.yml @@ -9,6 +9,8 @@ jobs: steps: - uses: actions/checkout@v2 + with: + fetch_depth: 0 - name: Tag and release Docker images (Self Host) run: | @@ -39,12 +41,6 @@ jobs: - name: Setup Helm uses: azure/setup-helm@v1 id: helm-install - - # - run: helm package charts/budibase - - # - uses: actions/checkout@v2 - # with: - # ref: gh-pages # - name: Build and release helm chart # run: | @@ -52,12 +48,20 @@ jobs: # git config user.email "<>" # mv budibase-${{ env.RELEASE_VERSION }}.tgz docs # helm repo index docs + # git checkout gh-pages # git add -A # git commit -m "Helm Release: ${{ env.RELEASE_VERSION }}" # git push # env: # GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} + # - name: Deploy + # uses: peaceiris/actions-gh-pages@v3 + # with: + # github_token: ${{ secrets.GITHUB_TOKEN }} + # publish_dir: ./public + # full_commit_message: "Helm Release: ${{ env.RELEASE_VERSION }}" + - name: Perform Github Release uses: softprops/action-gh-release@v1 with: diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml index 3464e93da9..f6068fe8cd 100644 --- a/.github/workflows/release.yml +++ b/.github/workflows/release.yml @@ -3,7 +3,7 @@ name: Budibase Release on: push: branches: - - test + - master env: POSTHOG_TOKEN: ${{ secrets.POSTHOG_TOKEN }} @@ -59,7 +59,7 @@ jobs: # - name: Pull values.yaml from budibase-infra # run: | - # curl -H "Authorization: token ${{ secrets.GITHUB_TOKEN }}" \ [c3a7a9d12] + # curl -H "Authorization: token ${{ secrets.GH_PERSONAL_TOKEN }}" \ [c3a7a9d12] # -H 'Accept: application/vnd.github.v3.raw' \ # -o values.preprod.yaml \ # -L https://api.github.com/repos/budibase/budibase-infra/contents/kubernetes/values.preprod.yaml From ef4410229e26cce4e831e78500bac942dbe08605 Mon Sep 17 00:00:00 2001 From: Budibase Release Bot <> Date: Thu, 16 Dec 2021 18:32:05 +0000 Subject: [PATCH 150/175] v1.0.25 --- lerna.json | 2 +- packages/auth/package.json | 2 +- packages/bbui/package.json | 2 +- packages/builder/package.json | 8 ++++---- packages/cli/package.json | 2 +- packages/client/package.json | 6 +++--- packages/server/package.json | 8 ++++---- packages/string-templates/package.json | 2 +- packages/worker/package.json | 6 +++--- 9 files changed, 19 insertions(+), 19 deletions(-) diff --git a/lerna.json b/lerna.json index 7c6b6f801a..a20a306a2e 100644 --- a/lerna.json +++ b/lerna.json @@ -1,5 +1,5 @@ { - "version": "1.0.24", + "version": "1.0.25", "npmClient": "yarn", "packages": [ "packages/*" diff --git a/packages/auth/package.json b/packages/auth/package.json index 25a5a63691..137abf4426 100644 --- a/packages/auth/package.json +++ b/packages/auth/package.json @@ -1,6 +1,6 @@ { "name": "@budibase/auth", - "version": "1.0.24", + "version": "1.0.25", "description": "Authentication middlewares for budibase builder and apps", "main": "src/index.js", "author": "Budibase", diff --git a/packages/bbui/package.json b/packages/bbui/package.json index cd2d027388..9414c6afd4 100644 --- a/packages/bbui/package.json +++ b/packages/bbui/package.json @@ -1,7 +1,7 @@ { "name": "@budibase/bbui", "description": "A UI solution used in the different Budibase projects.", - "version": "1.0.24", + "version": "1.0.25", "license": "MPL-2.0", "svelte": "src/index.js", "module": "dist/bbui.es.js", diff --git a/packages/builder/package.json b/packages/builder/package.json index 77fdaa9f5c..99227ed494 100644 --- a/packages/builder/package.json +++ b/packages/builder/package.json @@ -1,6 +1,6 @@ { "name": "@budibase/builder", - "version": "1.0.24", + "version": "1.0.25", "license": "GPL-3.0", "private": true, "scripts": { @@ -65,10 +65,10 @@ } }, "dependencies": { - "@budibase/bbui": "^1.0.24", - "@budibase/client": "^1.0.24", + "@budibase/bbui": "^1.0.25", + "@budibase/client": "^1.0.25", "@budibase/colorpicker": "1.1.2", - "@budibase/string-templates": "^1.0.24", + "@budibase/string-templates": "^1.0.25", "@sentry/browser": "5.19.1", "@spectrum-css/page": "^3.0.1", "@spectrum-css/vars": "^3.0.1", diff --git a/packages/cli/package.json b/packages/cli/package.json index 68551d8cd9..cd8aefff20 100644 --- a/packages/cli/package.json +++ b/packages/cli/package.json @@ -1,6 +1,6 @@ { "name": "@budibase/cli", - "version": "1.0.24", + "version": "1.0.25", "description": "Budibase CLI, for developers, self hosting and migrations.", "main": "src/index.js", "bin": { diff --git a/packages/client/package.json b/packages/client/package.json index 74781039ec..4a0a0e125b 100644 --- a/packages/client/package.json +++ b/packages/client/package.json @@ -1,6 +1,6 @@ { "name": "@budibase/client", - "version": "1.0.24", + "version": "1.0.25", "license": "MPL-2.0", "module": "dist/budibase-client.js", "main": "dist/budibase-client.js", @@ -19,9 +19,9 @@ "dev:builder": "rollup -cw" }, "dependencies": { - "@budibase/bbui": "^1.0.24", + "@budibase/bbui": "^1.0.25", "@budibase/standard-components": "^0.9.139", - "@budibase/string-templates": "^1.0.24", + "@budibase/string-templates": "^1.0.25", "regexparam": "^1.3.0", "shortid": "^2.2.15", "svelte-spa-router": "^3.0.5" diff --git a/packages/server/package.json b/packages/server/package.json index 0cbd44daa9..ae4dd8f3ff 100644 --- a/packages/server/package.json +++ b/packages/server/package.json @@ -1,7 +1,7 @@ { "name": "@budibase/server", "email": "hi@budibase.com", - "version": "1.0.24", + "version": "1.0.25", "description": "Budibase Web Server", "main": "src/index.ts", "repository": { @@ -69,9 +69,9 @@ "author": "Budibase", "license": "GPL-3.0", "dependencies": { - "@budibase/auth": "^1.0.24", - "@budibase/client": "^1.0.24", - "@budibase/string-templates": "^1.0.24", + "@budibase/auth": "^1.0.25", + "@budibase/client": "^1.0.25", + "@budibase/string-templates": "^1.0.25", "@bull-board/api": "^3.7.0", "@bull-board/koa": "^3.7.0", "@elastic/elasticsearch": "7.10.0", diff --git a/packages/string-templates/package.json b/packages/string-templates/package.json index 99d2f5729e..da00e5f001 100644 --- a/packages/string-templates/package.json +++ b/packages/string-templates/package.json @@ -1,6 +1,6 @@ { "name": "@budibase/string-templates", - "version": "1.0.24", + "version": "1.0.25", "description": "Handlebars wrapper for Budibase templating.", "main": "src/index.cjs", "module": "dist/bundle.mjs", diff --git a/packages/worker/package.json b/packages/worker/package.json index 41b40012ad..f1978e4f0a 100644 --- a/packages/worker/package.json +++ b/packages/worker/package.json @@ -1,7 +1,7 @@ { "name": "@budibase/worker", "email": "hi@budibase.com", - "version": "1.0.24", + "version": "1.0.25", "description": "Budibase background service", "main": "src/index.js", "repository": { @@ -29,8 +29,8 @@ "author": "Budibase", "license": "GPL-3.0", "dependencies": { - "@budibase/auth": "^1.0.24", - "@budibase/string-templates": "^1.0.24", + "@budibase/auth": "^1.0.25", + "@budibase/string-templates": "^1.0.25", "@koa/router": "^8.0.0", "@sentry/node": "^6.0.0", "@techpass/passport-openidconnect": "^0.3.0", From 39116bc631577bd0b43b8b048d3b3c61fe6c8712 Mon Sep 17 00:00:00 2001 From: Martin McKeaveney Date: Fri, 17 Dec 2021 14:58:03 +0100 Subject: [PATCH 151/175] testing selfhost job --- .github/workflows/deploy-cloud.yaml | 10 +++++++- .github/workflows/release-selfhost.yml | 2 +- .github/workflows/release.yml | 32 +++++++++++++------------- package.json | 2 +- 4 files changed, 27 insertions(+), 19 deletions(-) diff --git a/.github/workflows/deploy-cloud.yaml b/.github/workflows/deploy-cloud.yaml index ee86bb07ca..74693e3848 100644 --- a/.github/workflows/deploy-cloud.yaml +++ b/.github/workflows/deploy-cloud.yaml @@ -50,4 +50,12 @@ jobs: chart-path: charts/budibase namespace: budibase values: globals.appVersion=v${{ env.RELEASE_VERSION }} - name: budibase-prod \ No newline at end of file + name: budibase-prod + + - name: Discord Webhook Action + uses: tsickert/discord-webhook@v4.0.0 + with: + webhook-url: ${{ secrets.PROD_DEPLOY_WEBHOOK_URL }} + content: "Production Deployment Complete: ${{ env.RELEASE_VERSION }} deployed to budibase cloud." + embed-title: ${{ env.RELEASE_VERSION }} + diff --git a/.github/workflows/release-selfhost.yml b/.github/workflows/release-selfhost.yml index 9a6b75959a..3e2e5ca6b7 100644 --- a/.github/workflows/release-selfhost.yml +++ b/.github/workflows/release-selfhost.yml @@ -17,7 +17,6 @@ jobs: docker login -u $DOCKER_USER -p $DOCKER_PASSWORD # Get latest release version - sudo apt-get install -y jq release_version=$(cat lerna.json | jq -r '.version') echo "RELEASE_VERSION=$release_version" >> $GITHUB_ENV release_tag=v$release_version @@ -66,4 +65,5 @@ jobs: uses: softprops/action-gh-release@v1 with: name: v${{ env.RELEASE_VERSION }} + tag_name: v${{ env.RELEASE_VERSION }} generate_release_notes: true \ No newline at end of file diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml index f6068fe8cd..1cd35e810b 100644 --- a/.github/workflows/release.yml +++ b/.github/workflows/release.yml @@ -3,7 +3,7 @@ name: Budibase Release on: push: branches: - - master + - test env: POSTHOG_TOKEN: ${{ secrets.POSTHOG_TOKEN }} @@ -64,18 +64,18 @@ jobs: # -o values.preprod.yaml \ # -L https://api.github.com/repos/budibase/budibase-infra/contents/kubernetes/values.preprod.yaml - # - name: Deploy to Preprod Environment - # uses: deliverybot/helm@v1 - # with: - # release: budibase-preprod - # namespace: budibase - # chart: charts/budibase - # token: ${{ github.token }} - # values: | - # globals.appVersion: ${{ steps.previoustag.outputs.tag }} - # value-files: >- - # [ - # "charts/budibase/values.yaml" - # ] - # env: - # KUBECONFIG_FILE: '${{ secrets.PREPROD_KUBECONFIG }}' + - name: Deploy to Preprod Environment + uses: deliverybot/helm@v1 + with: + release: budibase-preprod + namespace: budibase + chart: charts/budibase + token: ${{ github.token }} + values: | + globals.appVersion: ${{ steps.previoustag.outputs.tag }} + value-files: >- + [ + "charts/budibase/values.yaml" + ] + env: + KUBECONFIG_FILE: '${{ secrets.PREPROD_KUBECONFIG }}' diff --git a/package.json b/package.json index 63de8251d4..93bf843622 100644 --- a/package.json +++ b/package.json @@ -23,7 +23,7 @@ "build": "lerna run build", "publishdev": "lerna run publishdev", "publishnpm": "yarn build && lerna publish --force-publish", - "release": "yarn build && lerna publish patch --yes --force-publish", + "release": "lerna publish patch --yes --force-publish", "release:develop": "yarn build && lerna publish prerelease --yes --force-publish --dist-tag develop", "restore": "yarn run clean && yarn run bootstrap && yarn run build", "nuke": "yarn run nuke:packages && yarn run nuke:docker", From 44ea0dc0e376b26718305caaa151d73e49bbd06d Mon Sep 17 00:00:00 2001 From: Martin McKeaveney Date: Fri, 17 Dec 2021 15:02:25 +0100 Subject: [PATCH 152/175] yaml definition for release job --- .github/workflows/release.yml | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml index 1cd35e810b..512432a3d7 100644 --- a/.github/workflows/release.yml +++ b/.github/workflows/release.yml @@ -72,7 +72,8 @@ jobs: chart: charts/budibase token: ${{ github.token }} values: | - globals.appVersion: ${{ steps.previoustag.outputs.tag }} + globals: + appVersion: ${{ steps.previoustag.outputs.tag }} value-files: >- [ "charts/budibase/values.yaml" From e086859c7a2f386f8d0c2135effc85b99b60ffde Mon Sep 17 00:00:00 2001 From: Martin McKeaveney Date: Fri, 17 Dec 2021 15:27:46 +0100 Subject: [PATCH 153/175] adding preprod deploy --- .github/workflows/deploy-cloud.yaml | 2 +- .github/workflows/release.yml | 9 ++++++++- package.json | 2 +- 3 files changed, 10 insertions(+), 3 deletions(-) diff --git a/.github/workflows/deploy-cloud.yaml b/.github/workflows/deploy-cloud.yaml index 74693e3848..26422a2e7b 100644 --- a/.github/workflows/deploy-cloud.yaml +++ b/.github/workflows/deploy-cloud.yaml @@ -56,6 +56,6 @@ jobs: uses: tsickert/discord-webhook@v4.0.0 with: webhook-url: ${{ secrets.PROD_DEPLOY_WEBHOOK_URL }} - content: "Production Deployment Complete: ${{ env.RELEASE_VERSION }} deployed to budibase cloud." + content: "Production Deployment Complete: ${{ env.RELEASE_VERSION }} deployed to Budibase Cloud." embed-title: ${{ env.RELEASE_VERSION }} diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml index 512432a3d7..56c66603d4 100644 --- a/.github/workflows/release.yml +++ b/.github/workflows/release.yml @@ -3,7 +3,7 @@ name: Budibase Release on: push: branches: - - test + - master env: POSTHOG_TOKEN: ${{ secrets.POSTHOG_TOKEN }} @@ -80,3 +80,10 @@ jobs: ] env: KUBECONFIG_FILE: '${{ secrets.PREPROD_KUBECONFIG }}' + + - name: Discord Webhook Action + uses: tsickert/discord-webhook@v4.0.0 + with: + webhook-url: ${{ secrets.PROD_DEPLOY_WEBHOOK_URL }} + content: "Preprod Deployment Complete: ${{ env.RELEASE_VERSION }} deployed to Budibase Pre-prod." + embed-title: ${{ env.RELEASE_VERSION }} diff --git a/package.json b/package.json index 93bf843622..929576a691 100644 --- a/package.json +++ b/package.json @@ -24,7 +24,7 @@ "publishdev": "lerna run publishdev", "publishnpm": "yarn build && lerna publish --force-publish", "release": "lerna publish patch --yes --force-publish", - "release:develop": "yarn build && lerna publish prerelease --yes --force-publish --dist-tag develop", + "release:develop": "lerna publish prerelease --yes --force-publish --dist-tag develop", "restore": "yarn run clean && yarn run bootstrap && yarn run build", "nuke": "yarn run nuke:packages && yarn run nuke:docker", "nuke:packages": "yarn run restore", From 2b5d1a105a1e004fd2eadba455a608e58a6f6317 Mon Sep 17 00:00:00 2001 From: Martin McKeaveney Date: Fri, 17 Dec 2021 15:46:06 +0100 Subject: [PATCH 154/175] use standard values.yaml --- .github/workflows/release.yml | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml index 56c66603d4..12d3271237 100644 --- a/.github/workflows/release.yml +++ b/.github/workflows/release.yml @@ -74,10 +74,10 @@ jobs: values: | globals: appVersion: ${{ steps.previoustag.outputs.tag }} - value-files: >- - [ - "charts/budibase/values.yaml" - ] + # value-files: >- + # [ + # "charts/budibase/values.yaml" + # ] env: KUBECONFIG_FILE: '${{ secrets.PREPROD_KUBECONFIG }}' From 50ae72b1f08efb505b94778e085834bf58be2392 Mon Sep 17 00:00:00 2001 From: Budibase Release Bot <> Date: Fri, 17 Dec 2021 14:52:40 +0000 Subject: [PATCH 155/175] v1.0.26 --- lerna.json | 2 +- packages/auth/package.json | 2 +- packages/bbui/package.json | 2 +- packages/builder/package.json | 8 ++++---- packages/cli/package.json | 2 +- packages/client/package.json | 6 +++--- packages/server/package.json | 8 ++++---- packages/string-templates/package.json | 2 +- packages/worker/package.json | 6 +++--- 9 files changed, 19 insertions(+), 19 deletions(-) diff --git a/lerna.json b/lerna.json index a20a306a2e..fff668e69f 100644 --- a/lerna.json +++ b/lerna.json @@ -1,5 +1,5 @@ { - "version": "1.0.25", + "version": "1.0.26", "npmClient": "yarn", "packages": [ "packages/*" diff --git a/packages/auth/package.json b/packages/auth/package.json index 137abf4426..5a6c17e847 100644 --- a/packages/auth/package.json +++ b/packages/auth/package.json @@ -1,6 +1,6 @@ { "name": "@budibase/auth", - "version": "1.0.25", + "version": "1.0.26", "description": "Authentication middlewares for budibase builder and apps", "main": "src/index.js", "author": "Budibase", diff --git a/packages/bbui/package.json b/packages/bbui/package.json index 9414c6afd4..2e7aea7113 100644 --- a/packages/bbui/package.json +++ b/packages/bbui/package.json @@ -1,7 +1,7 @@ { "name": "@budibase/bbui", "description": "A UI solution used in the different Budibase projects.", - "version": "1.0.25", + "version": "1.0.26", "license": "MPL-2.0", "svelte": "src/index.js", "module": "dist/bbui.es.js", diff --git a/packages/builder/package.json b/packages/builder/package.json index 99227ed494..4e06812dfd 100644 --- a/packages/builder/package.json +++ b/packages/builder/package.json @@ -1,6 +1,6 @@ { "name": "@budibase/builder", - "version": "1.0.25", + "version": "1.0.26", "license": "GPL-3.0", "private": true, "scripts": { @@ -65,10 +65,10 @@ } }, "dependencies": { - "@budibase/bbui": "^1.0.25", - "@budibase/client": "^1.0.25", + "@budibase/bbui": "^1.0.26", + "@budibase/client": "^1.0.26", "@budibase/colorpicker": "1.1.2", - "@budibase/string-templates": "^1.0.25", + "@budibase/string-templates": "^1.0.26", "@sentry/browser": "5.19.1", "@spectrum-css/page": "^3.0.1", "@spectrum-css/vars": "^3.0.1", diff --git a/packages/cli/package.json b/packages/cli/package.json index cd8aefff20..e82b9c0672 100644 --- a/packages/cli/package.json +++ b/packages/cli/package.json @@ -1,6 +1,6 @@ { "name": "@budibase/cli", - "version": "1.0.25", + "version": "1.0.26", "description": "Budibase CLI, for developers, self hosting and migrations.", "main": "src/index.js", "bin": { diff --git a/packages/client/package.json b/packages/client/package.json index 4a0a0e125b..db44f8ea73 100644 --- a/packages/client/package.json +++ b/packages/client/package.json @@ -1,6 +1,6 @@ { "name": "@budibase/client", - "version": "1.0.25", + "version": "1.0.26", "license": "MPL-2.0", "module": "dist/budibase-client.js", "main": "dist/budibase-client.js", @@ -19,9 +19,9 @@ "dev:builder": "rollup -cw" }, "dependencies": { - "@budibase/bbui": "^1.0.25", + "@budibase/bbui": "^1.0.26", "@budibase/standard-components": "^0.9.139", - "@budibase/string-templates": "^1.0.25", + "@budibase/string-templates": "^1.0.26", "regexparam": "^1.3.0", "shortid": "^2.2.15", "svelte-spa-router": "^3.0.5" diff --git a/packages/server/package.json b/packages/server/package.json index ae4dd8f3ff..d2b76cb3bd 100644 --- a/packages/server/package.json +++ b/packages/server/package.json @@ -1,7 +1,7 @@ { "name": "@budibase/server", "email": "hi@budibase.com", - "version": "1.0.25", + "version": "1.0.26", "description": "Budibase Web Server", "main": "src/index.ts", "repository": { @@ -69,9 +69,9 @@ "author": "Budibase", "license": "GPL-3.0", "dependencies": { - "@budibase/auth": "^1.0.25", - "@budibase/client": "^1.0.25", - "@budibase/string-templates": "^1.0.25", + "@budibase/auth": "^1.0.26", + "@budibase/client": "^1.0.26", + "@budibase/string-templates": "^1.0.26", "@bull-board/api": "^3.7.0", "@bull-board/koa": "^3.7.0", "@elastic/elasticsearch": "7.10.0", diff --git a/packages/string-templates/package.json b/packages/string-templates/package.json index da00e5f001..d81e207e48 100644 --- a/packages/string-templates/package.json +++ b/packages/string-templates/package.json @@ -1,6 +1,6 @@ { "name": "@budibase/string-templates", - "version": "1.0.25", + "version": "1.0.26", "description": "Handlebars wrapper for Budibase templating.", "main": "src/index.cjs", "module": "dist/bundle.mjs", diff --git a/packages/worker/package.json b/packages/worker/package.json index f1978e4f0a..12a3c959ab 100644 --- a/packages/worker/package.json +++ b/packages/worker/package.json @@ -1,7 +1,7 @@ { "name": "@budibase/worker", "email": "hi@budibase.com", - "version": "1.0.25", + "version": "1.0.26", "description": "Budibase background service", "main": "src/index.js", "repository": { @@ -29,8 +29,8 @@ "author": "Budibase", "license": "GPL-3.0", "dependencies": { - "@budibase/auth": "^1.0.25", - "@budibase/string-templates": "^1.0.25", + "@budibase/auth": "^1.0.26", + "@budibase/string-templates": "^1.0.26", "@koa/router": "^8.0.0", "@sentry/node": "^6.0.0", "@techpass/passport-openidconnect": "^0.3.0", From 89ce9c8e88d2dfb80f89671cc22c387e419c84d0 Mon Sep 17 00:00:00 2001 From: Martin McKeaveney Date: Mon, 20 Dec 2021 08:52:16 +0000 Subject: [PATCH 156/175] preprod job for testing in isolation --- .github/workflows/deploy-preprod.yml | 59 ++++++++++++++++++++++++++++ .github/workflows/release.yml | 46 +++++++++++----------- 2 files changed, 82 insertions(+), 23 deletions(-) create mode 100644 .github/workflows/deploy-preprod.yml diff --git a/.github/workflows/deploy-preprod.yml b/.github/workflows/deploy-preprod.yml new file mode 100644 index 0000000000..ce789e71ec --- /dev/null +++ b/.github/workflows/deploy-preprod.yml @@ -0,0 +1,59 @@ +name: Budibase Release Preprod + +on: + workflow_dispatch: + +env: + POSTHOG_TOKEN: ${{ secrets.POSTHOG_TOKEN }} + INTERCOM_TOKEN: ${{ secrets.INTERCOM_TOKEN }} + POSTHOG_URL: ${{ secrets.POSTHOG_URL }} + SENTRY_DSN: ${{ secrets.SENTRY_DSN }} + +jobs: + release: + runs-on: ubuntu-latest + + steps: + - uses: actions/checkout@v2 + + - name: Configure AWS Credentials + uses: aws-actions/configure-aws-credentials@v1 + with: + aws-access-key-id: ${{ secrets.AWS_ACCESS_KEY_ID }} + aws-secret-access-key: ${{ secrets.AWS_SECRET_ACCESS_KEY }} + aws-region: eu-west-1 + + - name: 'Get Previous tag' + id: previoustag + uses: "WyriHaximus/github-action-get-previous-tag@v1" + + # - name: Pull values.yaml from budibase-infra + # run: | + # curl -H "Authorization: token ${{ secrets.GH_PERSONAL_TOKEN }}" \ [c3a7a9d12] + # -H 'Accept: application/vnd.github.v3.raw' \ + # -o values.preprod.yaml \ + # -L https://api.github.com/repos/budibase/budibase-infra/contents/kubernetes/values.preprod.yaml + + - name: Deploy to Preprod Environment + uses: deliverybot/helm@v1 + with: + release: budibase-preprod + namespace: budibase + chart: charts/budibase + token: ${{ github.token }} + values: | + globals: + appVersion: ${{ steps.previoustag.outputs.tag }} + # value-files: >- + # [ + # "charts/budibase/values.yaml" + # ] + env: + KUBECONFIG_FILE: '${{ secrets.PREPROD_KUBECONFIG }}' + + - name: Discord Webhook Action + uses: tsickert/discord-webhook@v4.0.0 + with: + webhook-url: ${{ secrets.PROD_DEPLOY_WEBHOOK_URL }} + content: "Preprod Deployment Complete: ${{ env.RELEASE_VERSION }} deployed to Budibase Pre-prod." + embed-title: ${{ env.RELEASE_VERSION }} diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml index 12d3271237..859d89f18b 100644 --- a/.github/workflows/release.yml +++ b/.github/workflows/release.yml @@ -3,7 +3,7 @@ name: Budibase Release on: push: branches: - - master + - test env: POSTHOG_TOKEN: ${{ secrets.POSTHOG_TOKEN }} @@ -64,26 +64,26 @@ jobs: # -o values.preprod.yaml \ # -L https://api.github.com/repos/budibase/budibase-infra/contents/kubernetes/values.preprod.yaml - - name: Deploy to Preprod Environment - uses: deliverybot/helm@v1 - with: - release: budibase-preprod - namespace: budibase - chart: charts/budibase - token: ${{ github.token }} - values: | - globals: - appVersion: ${{ steps.previoustag.outputs.tag }} - # value-files: >- - # [ - # "charts/budibase/values.yaml" - # ] - env: - KUBECONFIG_FILE: '${{ secrets.PREPROD_KUBECONFIG }}' + # - name: Deploy to Preprod Environment + # uses: deliverybot/helm@v1 + # with: + # release: budibase-preprod + # namespace: budibase + # chart: charts/budibase + # token: ${{ github.token }} + # values: | + # globals: + # appVersion: ${{ steps.previoustag.outputs.tag }} + # # value-files: >- + # # [ + # # "charts/budibase/values.yaml" + # # ] + # env: + # KUBECONFIG_FILE: '${{ secrets.PREPROD_KUBECONFIG }}' - - name: Discord Webhook Action - uses: tsickert/discord-webhook@v4.0.0 - with: - webhook-url: ${{ secrets.PROD_DEPLOY_WEBHOOK_URL }} - content: "Preprod Deployment Complete: ${{ env.RELEASE_VERSION }} deployed to Budibase Pre-prod." - embed-title: ${{ env.RELEASE_VERSION }} + # - name: Discord Webhook Action + # uses: tsickert/discord-webhook@v4.0.0 + # with: + # webhook-url: ${{ secrets.PROD_DEPLOY_WEBHOOK_URL }} + # content: "Preprod Deployment Complete: ${{ env.RELEASE_VERSION }} deployed to Budibase Pre-prod." + # embed-title: ${{ env.RELEASE_VERSION }} From 5eb2724e7f0db3205210a60f3f38f32da6a56bf7 Mon Sep 17 00:00:00 2001 From: Martin McKeaveney Date: Mon, 20 Dec 2021 09:33:54 +0000 Subject: [PATCH 157/175] using lerna version in preprod job --- .github/workflows/deploy-preprod.yml | 10 ++++++---- 1 file changed, 6 insertions(+), 4 deletions(-) diff --git a/.github/workflows/deploy-preprod.yml b/.github/workflows/deploy-preprod.yml index ce789e71ec..6f6356d74d 100644 --- a/.github/workflows/deploy-preprod.yml +++ b/.github/workflows/deploy-preprod.yml @@ -23,9 +23,11 @@ jobs: aws-secret-access-key: ${{ secrets.AWS_SECRET_ACCESS_KEY }} aws-region: eu-west-1 - - name: 'Get Previous tag' - id: previoustag - uses: "WyriHaximus/github-action-get-previous-tag@v1" + - name: Get the latest budibase release version + id: version + run: | + release_version=$(cat lerna.json | jq -r '.version') + echo "RELEASE_VERSION=$release_version" >> $GITHUB_ENV # - name: Pull values.yaml from budibase-infra # run: | @@ -43,7 +45,7 @@ jobs: token: ${{ github.token }} values: | globals: - appVersion: ${{ steps.previoustag.outputs.tag }} + appVersion: v${{ env.RELEASE_VERSION }} # value-files: >- # [ # "charts/budibase/values.yaml" From 42ea6287331eedc6eb96c18d475d76b5ffb4f60a Mon Sep 17 00:00:00 2001 From: Martin McKeaveney Date: Tue, 21 Dec 2021 12:06:31 +0000 Subject: [PATCH 158/175] preprod helm setup --- .github/workflows/budibase_ci.yml | 2 ++ .github/workflows/deploy-preprod.yml | 4 ++++ 2 files changed, 6 insertions(+) diff --git a/.github/workflows/budibase_ci.yml b/.github/workflows/budibase_ci.yml index 5c4a111e23..7e95115415 100644 --- a/.github/workflows/budibase_ci.yml +++ b/.github/workflows/budibase_ci.yml @@ -41,4 +41,6 @@ jobs: files: ./packages/server/coverage/clover.xml name: codecov-umbrella verbose: true + + # TODO: parallelise this - run: yarn test:e2e:ci diff --git a/.github/workflows/deploy-preprod.yml b/.github/workflows/deploy-preprod.yml index 6f6356d74d..6dcfdbb521 100644 --- a/.github/workflows/deploy-preprod.yml +++ b/.github/workflows/deploy-preprod.yml @@ -36,6 +36,10 @@ jobs: # -o values.preprod.yaml \ # -L https://api.github.com/repos/budibase/budibase-infra/contents/kubernetes/values.preprod.yaml + - name: Setup Helm + uses: azure/setup-helm@v1 + id: helm-install + - name: Deploy to Preprod Environment uses: deliverybot/helm@v1 with: From abf952a743901e1cc5a752b0a9c6c19829b7151a Mon Sep 17 00:00:00 2001 From: Martin McKeaveney Date: Tue, 21 Dec 2021 13:36:47 +0000 Subject: [PATCH 159/175] avoid using tiller in helm --- .github/workflows/deploy-preprod.yml | 5 +---- 1 file changed, 1 insertion(+), 4 deletions(-) diff --git a/.github/workflows/deploy-preprod.yml b/.github/workflows/deploy-preprod.yml index 6dcfdbb521..6e2be5768e 100644 --- a/.github/workflows/deploy-preprod.yml +++ b/.github/workflows/deploy-preprod.yml @@ -36,10 +36,6 @@ jobs: # -o values.preprod.yaml \ # -L https://api.github.com/repos/budibase/budibase-infra/contents/kubernetes/values.preprod.yaml - - name: Setup Helm - uses: azure/setup-helm@v1 - id: helm-install - - name: Deploy to Preprod Environment uses: deliverybot/helm@v1 with: @@ -47,6 +43,7 @@ jobs: namespace: budibase chart: charts/budibase token: ${{ github.token }} + helm: helm3 values: | globals: appVersion: v${{ env.RELEASE_VERSION }} From 6d808d126d69988156d44d4684e968365f02193d Mon Sep 17 00:00:00 2001 From: Martin McKeaveney Date: Tue, 21 Dec 2021 13:54:24 +0000 Subject: [PATCH 160/175] don't spin up nginx controller --- .github/workflows/deploy-preprod.yml | 2 ++ 1 file changed, 2 insertions(+) diff --git a/.github/workflows/deploy-preprod.yml b/.github/workflows/deploy-preprod.yml index 6e2be5768e..e566c00b3c 100644 --- a/.github/workflows/deploy-preprod.yml +++ b/.github/workflows/deploy-preprod.yml @@ -47,6 +47,8 @@ jobs: values: | globals: appVersion: v${{ env.RELEASE_VERSION }} + ingress: + nginx: false # value-files: >- # [ # "charts/budibase/values.yaml" From 1488d466b385c66a7fcd07fec0e59e2c5175978b Mon Sep 17 00:00:00 2001 From: Martin McKeaveney Date: Tue, 21 Dec 2021 14:13:19 +0000 Subject: [PATCH 161/175] remove traefik --- .github/workflows/deploy-preprod.yml | 3 ++- .github/workflows/release.yml | 8 ++++++-- charts/budibase/values.yaml | 4 ++-- 3 files changed, 10 insertions(+), 5 deletions(-) diff --git a/.github/workflows/deploy-preprod.yml b/.github/workflows/deploy-preprod.yml index e566c00b3c..d77122d24a 100644 --- a/.github/workflows/deploy-preprod.yml +++ b/.github/workflows/deploy-preprod.yml @@ -48,7 +48,8 @@ jobs: globals: appVersion: v${{ env.RELEASE_VERSION }} ingress: - nginx: false + enabled: true + nginx: true # value-files: >- # [ # "charts/budibase/values.yaml" diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml index 859d89f18b..02664f3dee 100644 --- a/.github/workflows/release.yml +++ b/.github/workflows/release.yml @@ -71,9 +71,12 @@ jobs: # namespace: budibase # chart: charts/budibase # token: ${{ github.token }} + # helm: helm3 # values: | # globals: # appVersion: ${{ steps.previoustag.outputs.tag }} + # ingress: + # nginx: true # # value-files: >- # # [ # # "charts/budibase/values.yaml" @@ -85,5 +88,6 @@ jobs: # uses: tsickert/discord-webhook@v4.0.0 # with: # webhook-url: ${{ secrets.PROD_DEPLOY_WEBHOOK_URL }} - # content: "Preprod Deployment Complete: ${{ env.RELEASE_VERSION }} deployed to Budibase Pre-prod." - # embed-title: ${{ env.RELEASE_VERSION }} + # content: "Preprod Deployment Complete: ${{ steps.previoustag.outputs.tag }} deployed to Budibase Pre-prod." + # embed-title: ${{ steps.previoustag.outputs.tag }} + diff --git a/charts/budibase/values.yaml b/charts/budibase/values.yaml index b634f1581f..4666d01c70 100644 --- a/charts/budibase/values.yaml +++ b/charts/budibase/values.yaml @@ -40,7 +40,7 @@ service: port: 10000 ingress: - enabled: false + enabled: true aws: false nginx: true certificateArn: "" @@ -302,4 +302,4 @@ couchdb: initialDelaySeconds: 0 periodSeconds: 10 successThreshold: 1 - timeoutSeconds: 1 \ No newline at end of file + timeoutSeconds: 1 From 7abf272d6d2467bf70fdd246320fc17b710051a8 Mon Sep 17 00:00:00 2001 From: Martin McKeaveney Date: Tue, 21 Dec 2021 15:05:43 +0000 Subject: [PATCH 162/175] self host chart deploy --- .github/workflows/deploy-preprod.yml | 20 +++++++-------- .github/workflows/release-selfhost.yml | 25 +++++++++--------- .github/workflows/release.yml | 35 -------------------------- 3 files changed, 23 insertions(+), 57 deletions(-) diff --git a/.github/workflows/deploy-preprod.yml b/.github/workflows/deploy-preprod.yml index d77122d24a..0105b49765 100644 --- a/.github/workflows/deploy-preprod.yml +++ b/.github/workflows/deploy-preprod.yml @@ -29,12 +29,12 @@ jobs: release_version=$(cat lerna.json | jq -r '.version') echo "RELEASE_VERSION=$release_version" >> $GITHUB_ENV - # - name: Pull values.yaml from budibase-infra - # run: | - # curl -H "Authorization: token ${{ secrets.GH_PERSONAL_TOKEN }}" \ [c3a7a9d12] - # -H 'Accept: application/vnd.github.v3.raw' \ - # -o values.preprod.yaml \ - # -L https://api.github.com/repos/budibase/budibase-infra/contents/kubernetes/values.preprod.yaml + - name: Pull values.yaml from budibase-infra + run: | + curl -H "Authorization: token ${{ secrets.GH_PERSONAL_TOKEN }}" \ + -H 'Accept: application/vnd.github.v3.raw' \ + -o values.preprod.yaml \ + -L https://api.github.com/repos/budibase/budibase-infra/contents/kubernetes/budibase-preprod/values.yaml - name: Deploy to Preprod Environment uses: deliverybot/helm@v1 @@ -50,10 +50,10 @@ jobs: ingress: enabled: true nginx: true - # value-files: >- - # [ - # "charts/budibase/values.yaml" - # ] + value-files: >- + [ + "values.preprod.yaml" + ] env: KUBECONFIG_FILE: '${{ secrets.PREPROD_KUBECONFIG }}' diff --git a/.github/workflows/release-selfhost.yml b/.github/workflows/release-selfhost.yml index 3e2e5ca6b7..4d038c84c4 100644 --- a/.github/workflows/release-selfhost.yml +++ b/.github/workflows/release-selfhost.yml @@ -41,18 +41,19 @@ jobs: uses: azure/setup-helm@v1 id: helm-install - # - name: Build and release helm chart - # run: | - # git config user.name "Budibase Helm Bot" - # git config user.email "<>" - # mv budibase-${{ env.RELEASE_VERSION }}.tgz docs - # helm repo index docs - # git checkout gh-pages - # git add -A - # git commit -m "Helm Release: ${{ env.RELEASE_VERSION }}" - # git push - # env: - # GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} + - name: Build and release helm chart + run: | + git config user.name "Budibase Helm Bot" + git config user.email "<>" + git pull + mv budibase-${{ env.RELEASE_VERSION }}.tgz docs + helm repo index docs + git checkout gh-pages + git add -A + git commit -m "Helm Release: ${{ env.RELEASE_VERSION }}" + git push + env: + GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} # - name: Deploy # uses: peaceiris/actions-gh-pages@v3 diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml index 02664f3dee..9e8dc3a0b4 100644 --- a/.github/workflows/release.yml +++ b/.github/workflows/release.yml @@ -56,38 +56,3 @@ jobs: DOCKER_USER: ${{ secrets.DOCKER_USERNAME }} DOCKER_PASSWORD: ${{ secrets.DOCKER_API_KEY }} BUDIBASE_RELEASE_VERSION: ${{ steps.previoustag.outputs.tag }} - - # - name: Pull values.yaml from budibase-infra - # run: | - # curl -H "Authorization: token ${{ secrets.GH_PERSONAL_TOKEN }}" \ [c3a7a9d12] - # -H 'Accept: application/vnd.github.v3.raw' \ - # -o values.preprod.yaml \ - # -L https://api.github.com/repos/budibase/budibase-infra/contents/kubernetes/values.preprod.yaml - - # - name: Deploy to Preprod Environment - # uses: deliverybot/helm@v1 - # with: - # release: budibase-preprod - # namespace: budibase - # chart: charts/budibase - # token: ${{ github.token }} - # helm: helm3 - # values: | - # globals: - # appVersion: ${{ steps.previoustag.outputs.tag }} - # ingress: - # nginx: true - # # value-files: >- - # # [ - # # "charts/budibase/values.yaml" - # # ] - # env: - # KUBECONFIG_FILE: '${{ secrets.PREPROD_KUBECONFIG }}' - - # - name: Discord Webhook Action - # uses: tsickert/discord-webhook@v4.0.0 - # with: - # webhook-url: ${{ secrets.PROD_DEPLOY_WEBHOOK_URL }} - # content: "Preprod Deployment Complete: ${{ steps.previoustag.outputs.tag }} deployed to Budibase Pre-prod." - # embed-title: ${{ steps.previoustag.outputs.tag }} - From 237bd8ab48391ddd86f10b8e32a2f304c2da3601 Mon Sep 17 00:00:00 2001 From: Martin McKeaveney Date: Tue, 21 Dec 2021 15:12:28 +0000 Subject: [PATCH 163/175] helm release --- .github/workflows/release-selfhost.yml | 3 ++- charts/budibase/Chart.yaml | 4 ++-- 2 files changed, 4 insertions(+), 3 deletions(-) diff --git a/.github/workflows/release-selfhost.yml b/.github/workflows/release-selfhost.yml index 4d038c84c4..90f578cf56 100644 --- a/.github/workflows/release-selfhost.yml +++ b/.github/workflows/release-selfhost.yml @@ -9,7 +9,7 @@ jobs: steps: - uses: actions/checkout@v2 - with: + with: fetch_depth: 0 - name: Tag and release Docker images (Self Host) @@ -46,6 +46,7 @@ jobs: git config user.name "Budibase Helm Bot" git config user.email "<>" git pull + helm package charts/budibase mv budibase-${{ env.RELEASE_VERSION }}.tgz docs helm repo index docs git checkout gh-pages diff --git a/charts/budibase/Chart.yaml b/charts/budibase/Chart.yaml index cec5af2914..cc7119f57d 100644 --- a/charts/budibase/Chart.yaml +++ b/charts/budibase/Chart.yaml @@ -11,8 +11,8 @@ sources: - https://github.com/Budibase/budibase - https://budibase.com type: application -version: 1.0.0 -appVersion: 1.0.20 +version: 0.2.5 +appVersion: 1.0.25 dependencies: - name: couchdb version: 3.3.4 From 63e863456731e536c7a536e0774ed379110327fe Mon Sep 17 00:00:00 2001 From: Martin McKeaveney Date: Tue, 21 Dec 2021 15:26:49 +0000 Subject: [PATCH 164/175] move tar to docs folder --- .github/workflows/release-selfhost.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/release-selfhost.yml b/.github/workflows/release-selfhost.yml index 90f578cf56..38154e7411 100644 --- a/.github/workflows/release-selfhost.yml +++ b/.github/workflows/release-selfhost.yml @@ -47,7 +47,7 @@ jobs: git config user.email "<>" git pull helm package charts/budibase - mv budibase-${{ env.RELEASE_VERSION }}.tgz docs + mv *.tgz docs helm repo index docs git checkout gh-pages git add -A From a77d6cbc42124bd2db5bb0c782cc0ab189c4f389 Mon Sep 17 00:00:00 2001 From: Martin McKeaveney Date: Tue, 21 Dec 2021 15:39:40 +0000 Subject: [PATCH 165/175] package then commit --- .github/workflows/release-selfhost.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/release-selfhost.yml b/.github/workflows/release-selfhost.yml index 38154e7411..2eb2439faa 100644 --- a/.github/workflows/release-selfhost.yml +++ b/.github/workflows/release-selfhost.yml @@ -47,9 +47,9 @@ jobs: git config user.email "<>" git pull helm package charts/budibase + git checkout gh-pages mv *.tgz docs helm repo index docs - git checkout gh-pages git add -A git commit -m "Helm Release: ${{ env.RELEASE_VERSION }}" git push From 9aeb2eee1a2bb249af7cb4873818b8d36740b261 Mon Sep 17 00:00:00 2001 From: Martin McKeaveney Date: Tue, 21 Dec 2021 16:21:44 +0000 Subject: [PATCH 166/175] preprod linecount --- .github/README.md | 25 +++++++++++++++++++++++++ .github/workflows/deploy-preprod.yml | 1 + .github/workflows/release-selfhost.yml | 7 ------- 3 files changed, 26 insertions(+), 7 deletions(-) create mode 100644 .github/README.md diff --git a/.github/README.md b/.github/README.md new file mode 100644 index 0000000000..6894666e43 --- /dev/null +++ b/.github/README.md @@ -0,0 +1,25 @@ +# Budibase CI Pipelines + +Welcome to the budibase CI pipelines directory. This document details what each of the CI pipelines are for, and come common combinations. + +## All CI Pipelines + +### Standard CI Build Job (budibase_ci.yml) + +### Release Selfhost Job (release-selfhost.yml) + +### Release Develop Job (release-develop.yml) + +### Contributor License Agreement (cla.yml) + +### Cloud Deploy (deploy-cloud.yml) + +### Release Job (release.yml) + +## Common Workflows + +### Deploy Changes to Production (Hotfix, Release) + +### Rollback A Bad Deployment + +### \ No newline at end of file diff --git a/.github/workflows/deploy-preprod.yml b/.github/workflows/deploy-preprod.yml index 0105b49765..a92b2a80bd 100644 --- a/.github/workflows/deploy-preprod.yml +++ b/.github/workflows/deploy-preprod.yml @@ -35,6 +35,7 @@ jobs: -H 'Accept: application/vnd.github.v3.raw' \ -o values.preprod.yaml \ -L https://api.github.com/repos/budibase/budibase-infra/contents/kubernetes/budibase-preprod/values.yaml + wc -l values.production.yaml - name: Deploy to Preprod Environment uses: deliverybot/helm@v1 diff --git a/.github/workflows/release-selfhost.yml b/.github/workflows/release-selfhost.yml index 2eb2439faa..5223fc6864 100644 --- a/.github/workflows/release-selfhost.yml +++ b/.github/workflows/release-selfhost.yml @@ -56,13 +56,6 @@ jobs: env: GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} - # - name: Deploy - # uses: peaceiris/actions-gh-pages@v3 - # with: - # github_token: ${{ secrets.GITHUB_TOKEN }} - # publish_dir: ./public - # full_commit_message: "Helm Release: ${{ env.RELEASE_VERSION }}" - - name: Perform Github Release uses: softprops/action-gh-release@v1 with: From 6aeb9d8d074afb9aa49fc01f7d533b368b578661 Mon Sep 17 00:00:00 2001 From: Martin McKeaveney Date: Tue, 21 Dec 2021 16:25:51 +0000 Subject: [PATCH 167/175] wc on preprod values --- .github/workflows/deploy-preprod.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/deploy-preprod.yml b/.github/workflows/deploy-preprod.yml index a92b2a80bd..5b3282313c 100644 --- a/.github/workflows/deploy-preprod.yml +++ b/.github/workflows/deploy-preprod.yml @@ -35,7 +35,7 @@ jobs: -H 'Accept: application/vnd.github.v3.raw' \ -o values.preprod.yaml \ -L https://api.github.com/repos/budibase/budibase-infra/contents/kubernetes/budibase-preprod/values.yaml - wc -l values.production.yaml + wc -l values.preprod.yaml - name: Deploy to Preprod Environment uses: deliverybot/helm@v1 From f71432a7d2d7c52c62073ef761f0fbffd8fd709b Mon Sep 17 00:00:00 2001 From: Martin McKeaveney Date: Tue, 21 Dec 2021 17:44:04 +0000 Subject: [PATCH 168/175] turning back on master, adding docs for CI pipelines --- .github/README.md | 82 ++++++++++++++++++++++++++++++++--- .github/workflows/release.yml | 2 +- 2 files changed, 76 insertions(+), 8 deletions(-) diff --git a/.github/README.md b/.github/README.md index 6894666e43..d2fcd16bb0 100644 --- a/.github/README.md +++ b/.github/README.md @@ -1,25 +1,93 @@ + # Budibase CI Pipelines Welcome to the budibase CI pipelines directory. This document details what each of the CI pipelines are for, and come common combinations. ## All CI Pipelines -### Standard CI Build Job (budibase_ci.yml) +### Note +- When running workflow dispatch jobs, ensure you always run them off the `master` branch. It defaults to `develop`, so double check before running any jobs. -### Release Selfhost Job (release-selfhost.yml) +### Standard CI Build Job (budibase_ci.yml) +Triggers: +- PR or push to develop +- PR or push to master + +The standard CI Build job is what runs when you raise a PR to develop or master. +- Installs all dependencies, +- builds the project +- run the unit tests +- Generate test coverage metrics with codecov +- Run the cypress tests ### Release Develop Job (release-develop.yml) +Triggers: +- Push to develop -### Contributor License Agreement (cla.yml) +The job responsible for building, tagging and pushing docker images out to the test and staging environments. +- Installs all dependencies +- builds the project +- run the unit tests +- publish the budibase JS packages under a prerelease tag to NPM +- build, tag and push docker images under the `develop` tag to docker hub -### Cloud Deploy (deploy-cloud.yml) +These images will then be pulled by the test and staging environments, updating the latest automatically. Discord notifications are sent to the #infra channel when this occurs. ### Release Job (release.yml) +Triggers: +- Push to master + +This job is responsible for building and pushing the latest code to NPM and docker hub, so that it can be deployed. +- Installs all dependencies +- builds the project +- run the unit tests +- publish the budibase JS packages under a release tag to NPM (always incremented by patch versions) +- build, tag and push docker images under the `v.x.x.x` (the tag of the NPM release) tag to docker hub + +### Release Selfhost Job (release-selfhost.yml) +Triggers: +- Manual Workflow Dispatch Trigger + +This job is responsible for delivering the latest version of budibase to those that are self-hosting. + +This job relies on the release job to have run first, so the latest image is pushed to dockerhub. This job then will pull the latest version from `lerna.json` and try to find an image in dockerhub corresponding to that version. For example, if the version in `lerna.json` is `1.0.0`: +- Pull the images for all budibase services tagged `v1.0.0` from dockerhub +- Tag these images as `latest` +- Push them back to dockerhub. This now means anyone who pulls `latest` (self hosters using docker-compose) will get the latest version. +- Build and release the budibase helm chart for kubernetes users +- Perform a github release with the latest version. You can see previous releases here (https://github.com/Budibase/budibase/releases) + + +### Cloud Deploy (deploy-cloud.yml) +Triggers: +- Manual Workflow Dispatch Trigger + +This job is responsible for deploying to our production, cloud kubernetes environment. You must run the release job first, to ensure that the latest images have been built and pushed to docker hub. You can also manually enter a version number for this job, so you can perform rollbacks or upgrade to a specific version. After kicking off this job, the following will occur: + +- Checks out the master branch +- Pulls the latest `values.yaml` from budibase infra, a private repo containing budibases infrastructure configuration +- Gets the latest budibase version from `lerna.json`, if it hasn't been specified in the workflow when you kicked it off +- Configures AWS Credentials +- Deploys the helm chart in the budibase repo to our production EKS cluster, injecting the `values.yaml` we pulled from budibase-infra +- Fires off a discord webhook in the #infra channel to show that the deployment completely successfully. ## Common Workflows -### Deploy Changes to Production (Hotfix, Release) +### Deploy Changes to Production (Release) +- Merge `develop` into `master` +- Wait for budibase CI job and release job to run +- Run cloud deploy job +- Run release selfhost job -### Rollback A Bad Deployment +### Deploy Changes to Production (Hotfix) +- Branch off `master` +- Perform your hotfix +- Merge back into `master` +- Wait for budibase CI job and release job to run +- Run cloud deploy job +- Run release selfhost job -### \ No newline at end of file +### Rollback A Bad Cloud Deployment +- Kick off cloud deploy job +- Ensure you are running off master +- Enter the version number of the last known good version of budibase. For example `1.0.0` \ No newline at end of file diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml index 9e8dc3a0b4..71432c2403 100644 --- a/.github/workflows/release.yml +++ b/.github/workflows/release.yml @@ -3,7 +3,7 @@ name: Budibase Release on: push: branches: - - test + - master env: POSTHOG_TOKEN: ${{ secrets.POSTHOG_TOKEN }} From c5b066472bb933ff7f146046a389a3e6423c0c68 Mon Sep 17 00:00:00 2001 From: Budibase Release Bot <> Date: Tue, 21 Dec 2021 17:51:01 +0000 Subject: [PATCH 169/175] v1.0.27 --- lerna.json | 2 +- packages/auth/package.json | 2 +- packages/bbui/package.json | 2 +- packages/builder/package.json | 8 ++++---- packages/cli/package.json | 2 +- packages/client/package.json | 6 +++--- packages/server/package.json | 8 ++++---- packages/string-templates/package.json | 2 +- packages/worker/package.json | 6 +++--- 9 files changed, 19 insertions(+), 19 deletions(-) diff --git a/lerna.json b/lerna.json index fff668e69f..cd50c85439 100644 --- a/lerna.json +++ b/lerna.json @@ -1,5 +1,5 @@ { - "version": "1.0.26", + "version": "1.0.27", "npmClient": "yarn", "packages": [ "packages/*" diff --git a/packages/auth/package.json b/packages/auth/package.json index 5a6c17e847..d5b9b55406 100644 --- a/packages/auth/package.json +++ b/packages/auth/package.json @@ -1,6 +1,6 @@ { "name": "@budibase/auth", - "version": "1.0.26", + "version": "1.0.27", "description": "Authentication middlewares for budibase builder and apps", "main": "src/index.js", "author": "Budibase", diff --git a/packages/bbui/package.json b/packages/bbui/package.json index 2e7aea7113..468b1f8708 100644 --- a/packages/bbui/package.json +++ b/packages/bbui/package.json @@ -1,7 +1,7 @@ { "name": "@budibase/bbui", "description": "A UI solution used in the different Budibase projects.", - "version": "1.0.26", + "version": "1.0.27", "license": "MPL-2.0", "svelte": "src/index.js", "module": "dist/bbui.es.js", diff --git a/packages/builder/package.json b/packages/builder/package.json index 4e06812dfd..9de624c922 100644 --- a/packages/builder/package.json +++ b/packages/builder/package.json @@ -1,6 +1,6 @@ { "name": "@budibase/builder", - "version": "1.0.26", + "version": "1.0.27", "license": "GPL-3.0", "private": true, "scripts": { @@ -65,10 +65,10 @@ } }, "dependencies": { - "@budibase/bbui": "^1.0.26", - "@budibase/client": "^1.0.26", + "@budibase/bbui": "^1.0.27", + "@budibase/client": "^1.0.27", "@budibase/colorpicker": "1.1.2", - "@budibase/string-templates": "^1.0.26", + "@budibase/string-templates": "^1.0.27", "@sentry/browser": "5.19.1", "@spectrum-css/page": "^3.0.1", "@spectrum-css/vars": "^3.0.1", diff --git a/packages/cli/package.json b/packages/cli/package.json index e82b9c0672..a3b198439b 100644 --- a/packages/cli/package.json +++ b/packages/cli/package.json @@ -1,6 +1,6 @@ { "name": "@budibase/cli", - "version": "1.0.26", + "version": "1.0.27", "description": "Budibase CLI, for developers, self hosting and migrations.", "main": "src/index.js", "bin": { diff --git a/packages/client/package.json b/packages/client/package.json index db44f8ea73..a7633b979e 100644 --- a/packages/client/package.json +++ b/packages/client/package.json @@ -1,6 +1,6 @@ { "name": "@budibase/client", - "version": "1.0.26", + "version": "1.0.27", "license": "MPL-2.0", "module": "dist/budibase-client.js", "main": "dist/budibase-client.js", @@ -19,9 +19,9 @@ "dev:builder": "rollup -cw" }, "dependencies": { - "@budibase/bbui": "^1.0.26", + "@budibase/bbui": "^1.0.27", "@budibase/standard-components": "^0.9.139", - "@budibase/string-templates": "^1.0.26", + "@budibase/string-templates": "^1.0.27", "regexparam": "^1.3.0", "shortid": "^2.2.15", "svelte-spa-router": "^3.0.5" diff --git a/packages/server/package.json b/packages/server/package.json index d2b76cb3bd..06b487eb3d 100644 --- a/packages/server/package.json +++ b/packages/server/package.json @@ -1,7 +1,7 @@ { "name": "@budibase/server", "email": "hi@budibase.com", - "version": "1.0.26", + "version": "1.0.27", "description": "Budibase Web Server", "main": "src/index.ts", "repository": { @@ -69,9 +69,9 @@ "author": "Budibase", "license": "GPL-3.0", "dependencies": { - "@budibase/auth": "^1.0.26", - "@budibase/client": "^1.0.26", - "@budibase/string-templates": "^1.0.26", + "@budibase/auth": "^1.0.27", + "@budibase/client": "^1.0.27", + "@budibase/string-templates": "^1.0.27", "@bull-board/api": "^3.7.0", "@bull-board/koa": "^3.7.0", "@elastic/elasticsearch": "7.10.0", diff --git a/packages/string-templates/package.json b/packages/string-templates/package.json index d81e207e48..0e05a7b604 100644 --- a/packages/string-templates/package.json +++ b/packages/string-templates/package.json @@ -1,6 +1,6 @@ { "name": "@budibase/string-templates", - "version": "1.0.26", + "version": "1.0.27", "description": "Handlebars wrapper for Budibase templating.", "main": "src/index.cjs", "module": "dist/bundle.mjs", diff --git a/packages/worker/package.json b/packages/worker/package.json index 12a3c959ab..65237249a2 100644 --- a/packages/worker/package.json +++ b/packages/worker/package.json @@ -1,7 +1,7 @@ { "name": "@budibase/worker", "email": "hi@budibase.com", - "version": "1.0.26", + "version": "1.0.27", "description": "Budibase background service", "main": "src/index.js", "repository": { @@ -29,8 +29,8 @@ "author": "Budibase", "license": "GPL-3.0", "dependencies": { - "@budibase/auth": "^1.0.26", - "@budibase/string-templates": "^1.0.26", + "@budibase/auth": "^1.0.27", + "@budibase/string-templates": "^1.0.27", "@koa/router": "^8.0.0", "@sentry/node": "^6.0.0", "@techpass/passport-openidconnect": "^0.3.0", From 3411247f500c032e409b28be00dc30f768e2290f Mon Sep 17 00:00:00 2001 From: Martin McKeaveney Date: Thu, 30 Dec 2021 10:00:52 +0000 Subject: [PATCH 170/175] Update CONTRIBUTING.md --- .github/CONTRIBUTING.md | 2 ++ 1 file changed, 2 insertions(+) diff --git a/.github/CONTRIBUTING.md b/.github/CONTRIBUTING.md index 7abfe537e9..adfbc29008 100644 --- a/.github/CONTRIBUTING.md +++ b/.github/CONTRIBUTING.md @@ -79,6 +79,8 @@ Component libraries are collections of components as well as the definition of t ### Getting Started For Contributors #### 1. Prerequisites +NodeJS Version `14.x.x` + *yarn -* `npm install -g yarn` *jest* - `npm install -g jest` From 94e7252464e0adae74d2730a9bfdeb59ef0a4c27 Mon Sep 17 00:00:00 2001 From: Budibase Release Bot <> Date: Thu, 30 Dec 2021 10:06:29 +0000 Subject: [PATCH 171/175] v1.0.28 --- lerna.json | 2 +- packages/auth/package.json | 2 +- packages/bbui/package.json | 2 +- packages/builder/package.json | 8 ++++---- packages/cli/package.json | 2 +- packages/client/package.json | 6 +++--- packages/server/package.json | 8 ++++---- packages/string-templates/package.json | 2 +- packages/worker/package.json | 6 +++--- 9 files changed, 19 insertions(+), 19 deletions(-) diff --git a/lerna.json b/lerna.json index cd50c85439..a86ad1ed2d 100644 --- a/lerna.json +++ b/lerna.json @@ -1,5 +1,5 @@ { - "version": "1.0.27", + "version": "1.0.28", "npmClient": "yarn", "packages": [ "packages/*" diff --git a/packages/auth/package.json b/packages/auth/package.json index d5b9b55406..eb45f0692c 100644 --- a/packages/auth/package.json +++ b/packages/auth/package.json @@ -1,6 +1,6 @@ { "name": "@budibase/auth", - "version": "1.0.27", + "version": "1.0.28", "description": "Authentication middlewares for budibase builder and apps", "main": "src/index.js", "author": "Budibase", diff --git a/packages/bbui/package.json b/packages/bbui/package.json index 468b1f8708..5b9f5873bc 100644 --- a/packages/bbui/package.json +++ b/packages/bbui/package.json @@ -1,7 +1,7 @@ { "name": "@budibase/bbui", "description": "A UI solution used in the different Budibase projects.", - "version": "1.0.27", + "version": "1.0.28", "license": "MPL-2.0", "svelte": "src/index.js", "module": "dist/bbui.es.js", diff --git a/packages/builder/package.json b/packages/builder/package.json index 9de624c922..6ea66854f1 100644 --- a/packages/builder/package.json +++ b/packages/builder/package.json @@ -1,6 +1,6 @@ { "name": "@budibase/builder", - "version": "1.0.27", + "version": "1.0.28", "license": "GPL-3.0", "private": true, "scripts": { @@ -65,10 +65,10 @@ } }, "dependencies": { - "@budibase/bbui": "^1.0.27", - "@budibase/client": "^1.0.27", + "@budibase/bbui": "^1.0.28", + "@budibase/client": "^1.0.28", "@budibase/colorpicker": "1.1.2", - "@budibase/string-templates": "^1.0.27", + "@budibase/string-templates": "^1.0.28", "@sentry/browser": "5.19.1", "@spectrum-css/page": "^3.0.1", "@spectrum-css/vars": "^3.0.1", diff --git a/packages/cli/package.json b/packages/cli/package.json index a3b198439b..7408717760 100644 --- a/packages/cli/package.json +++ b/packages/cli/package.json @@ -1,6 +1,6 @@ { "name": "@budibase/cli", - "version": "1.0.27", + "version": "1.0.28", "description": "Budibase CLI, for developers, self hosting and migrations.", "main": "src/index.js", "bin": { diff --git a/packages/client/package.json b/packages/client/package.json index a7633b979e..1d2db47645 100644 --- a/packages/client/package.json +++ b/packages/client/package.json @@ -1,6 +1,6 @@ { "name": "@budibase/client", - "version": "1.0.27", + "version": "1.0.28", "license": "MPL-2.0", "module": "dist/budibase-client.js", "main": "dist/budibase-client.js", @@ -19,9 +19,9 @@ "dev:builder": "rollup -cw" }, "dependencies": { - "@budibase/bbui": "^1.0.27", + "@budibase/bbui": "^1.0.28", "@budibase/standard-components": "^0.9.139", - "@budibase/string-templates": "^1.0.27", + "@budibase/string-templates": "^1.0.28", "regexparam": "^1.3.0", "shortid": "^2.2.15", "svelte-spa-router": "^3.0.5" diff --git a/packages/server/package.json b/packages/server/package.json index 06b487eb3d..1f392f298a 100644 --- a/packages/server/package.json +++ b/packages/server/package.json @@ -1,7 +1,7 @@ { "name": "@budibase/server", "email": "hi@budibase.com", - "version": "1.0.27", + "version": "1.0.28", "description": "Budibase Web Server", "main": "src/index.ts", "repository": { @@ -69,9 +69,9 @@ "author": "Budibase", "license": "GPL-3.0", "dependencies": { - "@budibase/auth": "^1.0.27", - "@budibase/client": "^1.0.27", - "@budibase/string-templates": "^1.0.27", + "@budibase/auth": "^1.0.28", + "@budibase/client": "^1.0.28", + "@budibase/string-templates": "^1.0.28", "@bull-board/api": "^3.7.0", "@bull-board/koa": "^3.7.0", "@elastic/elasticsearch": "7.10.0", diff --git a/packages/string-templates/package.json b/packages/string-templates/package.json index 0e05a7b604..4818666d2d 100644 --- a/packages/string-templates/package.json +++ b/packages/string-templates/package.json @@ -1,6 +1,6 @@ { "name": "@budibase/string-templates", - "version": "1.0.27", + "version": "1.0.28", "description": "Handlebars wrapper for Budibase templating.", "main": "src/index.cjs", "module": "dist/bundle.mjs", diff --git a/packages/worker/package.json b/packages/worker/package.json index 65237249a2..79f1d7b9ae 100644 --- a/packages/worker/package.json +++ b/packages/worker/package.json @@ -1,7 +1,7 @@ { "name": "@budibase/worker", "email": "hi@budibase.com", - "version": "1.0.27", + "version": "1.0.28", "description": "Budibase background service", "main": "src/index.js", "repository": { @@ -29,8 +29,8 @@ "author": "Budibase", "license": "GPL-3.0", "dependencies": { - "@budibase/auth": "^1.0.27", - "@budibase/string-templates": "^1.0.27", + "@budibase/auth": "^1.0.28", + "@budibase/string-templates": "^1.0.28", "@koa/router": "^8.0.0", "@sentry/node": "^6.0.0", "@techpass/passport-openidconnect": "^0.3.0", From a5ea356d4a5ad20133d5b6f5fd7202e4432d1777 Mon Sep 17 00:00:00 2001 From: Martin McKeaveney Date: Thu, 30 Dec 2021 18:00:29 +0000 Subject: [PATCH 172/175] upgrading nginx ingress controller helm chart --- charts/budibase/Chart.yaml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/charts/budibase/Chart.yaml b/charts/budibase/Chart.yaml index cc7119f57d..e909f2803d 100644 --- a/charts/budibase/Chart.yaml +++ b/charts/budibase/Chart.yaml @@ -19,6 +19,6 @@ dependencies: repository: https://apache.github.io/couchdb-helm condition: services.couchdb.enabled - name: ingress-nginx - version: 3.35.0 + version: 4.0.13 repository: https://github.com/kubernetes/ingress-nginx condition: ingress.nginx From 2848e48f52fe6fdf4f4c264a4dc69932db90d520 Mon Sep 17 00:00:00 2001 From: Budibase Release Bot <> Date: Thu, 30 Dec 2021 18:07:14 +0000 Subject: [PATCH 173/175] v1.0.29 --- lerna.json | 2 +- packages/auth/package.json | 2 +- packages/bbui/package.json | 2 +- packages/builder/package.json | 8 ++++---- packages/cli/package.json | 2 +- packages/client/package.json | 6 +++--- packages/server/package.json | 8 ++++---- packages/string-templates/package.json | 2 +- packages/worker/package.json | 6 +++--- 9 files changed, 19 insertions(+), 19 deletions(-) diff --git a/lerna.json b/lerna.json index a86ad1ed2d..ea42386809 100644 --- a/lerna.json +++ b/lerna.json @@ -1,5 +1,5 @@ { - "version": "1.0.28", + "version": "1.0.29", "npmClient": "yarn", "packages": [ "packages/*" diff --git a/packages/auth/package.json b/packages/auth/package.json index eb45f0692c..7590977cb6 100644 --- a/packages/auth/package.json +++ b/packages/auth/package.json @@ -1,6 +1,6 @@ { "name": "@budibase/auth", - "version": "1.0.28", + "version": "1.0.29", "description": "Authentication middlewares for budibase builder and apps", "main": "src/index.js", "author": "Budibase", diff --git a/packages/bbui/package.json b/packages/bbui/package.json index 5b9f5873bc..5c43cc8cb4 100644 --- a/packages/bbui/package.json +++ b/packages/bbui/package.json @@ -1,7 +1,7 @@ { "name": "@budibase/bbui", "description": "A UI solution used in the different Budibase projects.", - "version": "1.0.28", + "version": "1.0.29", "license": "MPL-2.0", "svelte": "src/index.js", "module": "dist/bbui.es.js", diff --git a/packages/builder/package.json b/packages/builder/package.json index 6ea66854f1..43aae7e32b 100644 --- a/packages/builder/package.json +++ b/packages/builder/package.json @@ -1,6 +1,6 @@ { "name": "@budibase/builder", - "version": "1.0.28", + "version": "1.0.29", "license": "GPL-3.0", "private": true, "scripts": { @@ -65,10 +65,10 @@ } }, "dependencies": { - "@budibase/bbui": "^1.0.28", - "@budibase/client": "^1.0.28", + "@budibase/bbui": "^1.0.29", + "@budibase/client": "^1.0.29", "@budibase/colorpicker": "1.1.2", - "@budibase/string-templates": "^1.0.28", + "@budibase/string-templates": "^1.0.29", "@sentry/browser": "5.19.1", "@spectrum-css/page": "^3.0.1", "@spectrum-css/vars": "^3.0.1", diff --git a/packages/cli/package.json b/packages/cli/package.json index 7408717760..7b08d4b601 100644 --- a/packages/cli/package.json +++ b/packages/cli/package.json @@ -1,6 +1,6 @@ { "name": "@budibase/cli", - "version": "1.0.28", + "version": "1.0.29", "description": "Budibase CLI, for developers, self hosting and migrations.", "main": "src/index.js", "bin": { diff --git a/packages/client/package.json b/packages/client/package.json index 1d2db47645..fd607cc35b 100644 --- a/packages/client/package.json +++ b/packages/client/package.json @@ -1,6 +1,6 @@ { "name": "@budibase/client", - "version": "1.0.28", + "version": "1.0.29", "license": "MPL-2.0", "module": "dist/budibase-client.js", "main": "dist/budibase-client.js", @@ -19,9 +19,9 @@ "dev:builder": "rollup -cw" }, "dependencies": { - "@budibase/bbui": "^1.0.28", + "@budibase/bbui": "^1.0.29", "@budibase/standard-components": "^0.9.139", - "@budibase/string-templates": "^1.0.28", + "@budibase/string-templates": "^1.0.29", "regexparam": "^1.3.0", "shortid": "^2.2.15", "svelte-spa-router": "^3.0.5" diff --git a/packages/server/package.json b/packages/server/package.json index 1f392f298a..9c18496e17 100644 --- a/packages/server/package.json +++ b/packages/server/package.json @@ -1,7 +1,7 @@ { "name": "@budibase/server", "email": "hi@budibase.com", - "version": "1.0.28", + "version": "1.0.29", "description": "Budibase Web Server", "main": "src/index.ts", "repository": { @@ -69,9 +69,9 @@ "author": "Budibase", "license": "GPL-3.0", "dependencies": { - "@budibase/auth": "^1.0.28", - "@budibase/client": "^1.0.28", - "@budibase/string-templates": "^1.0.28", + "@budibase/auth": "^1.0.29", + "@budibase/client": "^1.0.29", + "@budibase/string-templates": "^1.0.29", "@bull-board/api": "^3.7.0", "@bull-board/koa": "^3.7.0", "@elastic/elasticsearch": "7.10.0", diff --git a/packages/string-templates/package.json b/packages/string-templates/package.json index 4818666d2d..899e165565 100644 --- a/packages/string-templates/package.json +++ b/packages/string-templates/package.json @@ -1,6 +1,6 @@ { "name": "@budibase/string-templates", - "version": "1.0.28", + "version": "1.0.29", "description": "Handlebars wrapper for Budibase templating.", "main": "src/index.cjs", "module": "dist/bundle.mjs", diff --git a/packages/worker/package.json b/packages/worker/package.json index 79f1d7b9ae..759426fbb0 100644 --- a/packages/worker/package.json +++ b/packages/worker/package.json @@ -1,7 +1,7 @@ { "name": "@budibase/worker", "email": "hi@budibase.com", - "version": "1.0.28", + "version": "1.0.29", "description": "Budibase background service", "main": "src/index.js", "repository": { @@ -29,8 +29,8 @@ "author": "Budibase", "license": "GPL-3.0", "dependencies": { - "@budibase/auth": "^1.0.28", - "@budibase/string-templates": "^1.0.28", + "@budibase/auth": "^1.0.29", + "@budibase/string-templates": "^1.0.29", "@koa/router": "^8.0.0", "@sentry/node": "^6.0.0", "@techpass/passport-openidconnect": "^0.3.0", From f723e5f681fcd363968f7d30b9f6642af4d3e35e Mon Sep 17 00:00:00 2001 From: Martin McKeaveney Date: Thu, 30 Dec 2021 18:57:23 +0000 Subject: [PATCH 174/175] locking chart deps, upgrading NGINX chart to point to new helm repo --- charts/budibase/Chart.lock | 9 +++++++++ charts/budibase/Chart.yaml | 2 +- charts/budibase/charts/ingress-nginx-3.35.0.tgz | Bin 25050 -> 0 bytes charts/budibase/charts/ingress-nginx-4.0.13.tgz | Bin 0 -> 27766 bytes 4 files changed, 10 insertions(+), 1 deletion(-) create mode 100644 charts/budibase/Chart.lock delete mode 100644 charts/budibase/charts/ingress-nginx-3.35.0.tgz create mode 100644 charts/budibase/charts/ingress-nginx-4.0.13.tgz diff --git a/charts/budibase/Chart.lock b/charts/budibase/Chart.lock new file mode 100644 index 0000000000..75b9de07b5 --- /dev/null +++ b/charts/budibase/Chart.lock @@ -0,0 +1,9 @@ +dependencies: +- name: couchdb + repository: https://apache.github.io/couchdb-helm + version: 3.3.4 +- name: ingress-nginx + repository: https://kubernetes.github.io/ingress-nginx + version: 4.0.13 +digest: sha256:20892705c2d8e64c98257d181063a514ac55013e2b43399a6e54868a97f97845 +generated: "2021-12-30T18:55:30.878411Z" diff --git a/charts/budibase/Chart.yaml b/charts/budibase/Chart.yaml index e909f2803d..8c9d44f201 100644 --- a/charts/budibase/Chart.yaml +++ b/charts/budibase/Chart.yaml @@ -20,5 +20,5 @@ dependencies: condition: services.couchdb.enabled - name: ingress-nginx version: 4.0.13 - repository: https://github.com/kubernetes/ingress-nginx + repository: https://kubernetes.github.io/ingress-nginx condition: ingress.nginx diff --git a/charts/budibase/charts/ingress-nginx-3.35.0.tgz b/charts/budibase/charts/ingress-nginx-3.35.0.tgz deleted file mode 100644 index ee5214c49785e6a639ea9fb34d27b37d915c04c8..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 25050 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
YxVZ#WWb-4%f~e&bVB!O)nr^(lHINBx~p5cj~O! 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 B#CHGy diff --git a/charts/budibase/charts/ingress-nginx-4.0.13.tgz b/charts/budibase/charts/ingress-nginx-4.0.13.tgz new file mode 100644 index 0000000000000000000000000000000000000000..1e34215c5f8a8f4b22a49cce13ac086d6b80a25b GIT binary patch literal 27766 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 K0YMK1@&5p2<=4Le literal 0 HcmV?d00001 From 2a3eb5eed9af1a6a662c9ec4b29c01cb5a5ea49f Mon Sep 17 00:00:00 2001 From: Budibase Release Bot <> Date: Thu, 30 Dec 2021 19:05:38 +0000 Subject: [PATCH 175/175] v1.0.30 --- lerna.json | 2 +- packages/auth/package.json | 2 +- packages/bbui/package.json | 2 +- packages/builder/package.json | 8 ++++---- packages/cli/package.json | 2 +- packages/client/package.json | 6 +++--- packages/server/package.json | 8 ++++---- packages/string-templates/package.json | 2 +- packages/worker/package.json | 6 +++--- 9 files changed, 19 insertions(+), 19 deletions(-) diff --git a/lerna.json b/lerna.json index ea42386809..c937239de0 100644 --- a/lerna.json +++ b/lerna.json @@ -1,5 +1,5 @@ { - "version": "1.0.29", + "version": "1.0.30", "npmClient": "yarn", "packages": [ "packages/*" diff --git a/packages/auth/package.json b/packages/auth/package.json index 7590977cb6..688a839555 100644 --- a/packages/auth/package.json +++ b/packages/auth/package.json @@ -1,6 +1,6 @@ { "name": "@budibase/auth", - "version": "1.0.29", + "version": "1.0.30", "description": "Authentication middlewares for budibase builder and apps", "main": "src/index.js", "author": "Budibase", diff --git a/packages/bbui/package.json b/packages/bbui/package.json index 5c43cc8cb4..cad4db6aac 100644 --- a/packages/bbui/package.json +++ b/packages/bbui/package.json @@ -1,7 +1,7 @@ { "name": "@budibase/bbui", "description": "A UI solution used in the different Budibase projects.", - "version": "1.0.29", + "version": "1.0.30", "license": "MPL-2.0", "svelte": "src/index.js", "module": "dist/bbui.es.js", diff --git a/packages/builder/package.json b/packages/builder/package.json index 43aae7e32b..6938c724f0 100644 --- a/packages/builder/package.json +++ b/packages/builder/package.json @@ -1,6 +1,6 @@ { "name": "@budibase/builder", - "version": "1.0.29", + "version": "1.0.30", "license": "GPL-3.0", "private": true, "scripts": { @@ -65,10 +65,10 @@ } }, "dependencies": { - "@budibase/bbui": "^1.0.29", - "@budibase/client": "^1.0.29", + "@budibase/bbui": "^1.0.30", + "@budibase/client": "^1.0.30", "@budibase/colorpicker": "1.1.2", - "@budibase/string-templates": "^1.0.29", + "@budibase/string-templates": "^1.0.30", "@sentry/browser": "5.19.1", "@spectrum-css/page": "^3.0.1", "@spectrum-css/vars": "^3.0.1", diff --git a/packages/cli/package.json b/packages/cli/package.json index 7b08d4b601..5d9b82f511 100644 --- a/packages/cli/package.json +++ b/packages/cli/package.json @@ -1,6 +1,6 @@ { "name": "@budibase/cli", - "version": "1.0.29", + "version": "1.0.30", "description": "Budibase CLI, for developers, self hosting and migrations.", "main": "src/index.js", "bin": { diff --git a/packages/client/package.json b/packages/client/package.json index fd607cc35b..20b15c79bc 100644 --- a/packages/client/package.json +++ b/packages/client/package.json @@ -1,6 +1,6 @@ { "name": "@budibase/client", - "version": "1.0.29", + "version": "1.0.30", "license": "MPL-2.0", "module": "dist/budibase-client.js", "main": "dist/budibase-client.js", @@ -19,9 +19,9 @@ "dev:builder": "rollup -cw" }, "dependencies": { - "@budibase/bbui": "^1.0.29", + "@budibase/bbui": "^1.0.30", "@budibase/standard-components": "^0.9.139", - "@budibase/string-templates": "^1.0.29", + "@budibase/string-templates": "^1.0.30", "regexparam": "^1.3.0", "shortid": "^2.2.15", "svelte-spa-router": "^3.0.5" diff --git a/packages/server/package.json b/packages/server/package.json index 9c18496e17..b5cd4aef87 100644 --- a/packages/server/package.json +++ b/packages/server/package.json @@ -1,7 +1,7 @@ { "name": "@budibase/server", "email": "hi@budibase.com", - "version": "1.0.29", + "version": "1.0.30", "description": "Budibase Web Server", "main": "src/index.ts", "repository": { @@ -69,9 +69,9 @@ "author": "Budibase", "license": "GPL-3.0", "dependencies": { - "@budibase/auth": "^1.0.29", - "@budibase/client": "^1.0.29", - "@budibase/string-templates": "^1.0.29", + "@budibase/auth": "^1.0.30", + "@budibase/client": "^1.0.30", + "@budibase/string-templates": "^1.0.30", "@bull-board/api": "^3.7.0", "@bull-board/koa": "^3.7.0", "@elastic/elasticsearch": "7.10.0", diff --git a/packages/string-templates/package.json b/packages/string-templates/package.json index 899e165565..a021f5c52c 100644 --- a/packages/string-templates/package.json +++ b/packages/string-templates/package.json @@ -1,6 +1,6 @@ { "name": "@budibase/string-templates", - "version": "1.0.29", + "version": "1.0.30", "description": "Handlebars wrapper for Budibase templating.", "main": "src/index.cjs", "module": "dist/bundle.mjs", diff --git a/packages/worker/package.json b/packages/worker/package.json index 759426fbb0..40b74509b2 100644 --- a/packages/worker/package.json +++ b/packages/worker/package.json @@ -1,7 +1,7 @@ { "name": "@budibase/worker", "email": "hi@budibase.com", - "version": "1.0.29", + "version": "1.0.30", "description": "Budibase background service", "main": "src/index.js", "repository": { @@ -29,8 +29,8 @@ "author": "Budibase", "license": "GPL-3.0", "dependencies": { - "@budibase/auth": "^1.0.29", - "@budibase/string-templates": "^1.0.29", + "@budibase/auth": "^1.0.30", + "@budibase/string-templates": "^1.0.30", "@koa/router": "^8.0.0", "@sentry/node": "^6.0.0", "@techpass/passport-openidconnect": "^0.3.0",