From 8f8190689634027cbf1501fcc00f7b18149fe1b0 Mon Sep 17 00:00:00 2001 From: mike12345567 Date: Wed, 9 Feb 2022 18:30:00 +0000 Subject: [PATCH 01/64] Changing update user info to view user info. --- .../{UpdateUserInfoModal.svelte => UserInfoModal.svelte} | 0 packages/builder/src/pages/builder/apps/index.svelte | 6 +++--- packages/builder/src/pages/builder/portal/_layout.svelte | 6 +++--- 3 files changed, 6 insertions(+), 6 deletions(-) rename packages/builder/src/components/settings/{UpdateUserInfoModal.svelte => UserInfoModal.svelte} (100%) diff --git a/packages/builder/src/components/settings/UpdateUserInfoModal.svelte b/packages/builder/src/components/settings/UserInfoModal.svelte similarity index 100% rename from packages/builder/src/components/settings/UpdateUserInfoModal.svelte rename to packages/builder/src/components/settings/UserInfoModal.svelte diff --git a/packages/builder/src/pages/builder/apps/index.svelte b/packages/builder/src/pages/builder/apps/index.svelte index 39cc780ac7..7e5b145ffa 100644 --- a/packages/builder/src/pages/builder/apps/index.svelte +++ b/packages/builder/src/pages/builder/apps/index.svelte @@ -17,7 +17,7 @@ import { goto } from "@roxi/routify" import { AppStatus } from "constants" import { gradient } from "actions" - import UpdateUserInfoModal from "components/settings/UpdateUserInfoModal.svelte" + import UserInfoModal from "components/settings/UserInfoModal.svelte" import ChangePasswordModal from "components/settings/ChangePasswordModal.svelte" import { processStringSync } from "@budibase/string-templates" import Logo from "assets/bb-emblem.svg" @@ -79,7 +79,7 @@ userInfoModal.show()}> - Update user information + View user information - + diff --git a/packages/builder/src/pages/builder/portal/_layout.svelte b/packages/builder/src/pages/builder/portal/_layout.svelte index f4679647ff..6788207d87 100644 --- a/packages/builder/src/pages/builder/portal/_layout.svelte +++ b/packages/builder/src/pages/builder/portal/_layout.svelte @@ -16,7 +16,7 @@ import { organisation, auth } from "stores/portal" import { admin as adminStore } from "stores/portal" import { onMount } from "svelte" - import UpdateUserInfoModal from "components/settings/UpdateUserInfoModal.svelte" + import UserInfoModal from "components/settings/UserInfoModal.svelte" import ChangePasswordModal from "components/settings/ChangePasswordModal.svelte" import Logo from "assets/bb-emblem.svg" @@ -160,7 +160,7 @@ userInfoModal.show()}> - Update user information + View user information - + From 28206143248ab0dfc0909b8f978335b4461b2714 Mon Sep 17 00:00:00 2001 From: Michael Drury Date: Wed, 9 Feb 2022 19:39:02 +0000 Subject: [PATCH 02/64] Revert "Changing update user info to view user info." This reverts commit 8f8190689634027cbf1501fcc00f7b18149fe1b0. --- .../{UserInfoModal.svelte => UpdateUserInfoModal.svelte} | 0 packages/builder/src/pages/builder/apps/index.svelte | 6 +++--- packages/builder/src/pages/builder/portal/_layout.svelte | 6 +++--- 3 files changed, 6 insertions(+), 6 deletions(-) rename packages/builder/src/components/settings/{UserInfoModal.svelte => UpdateUserInfoModal.svelte} (100%) diff --git a/packages/builder/src/components/settings/UserInfoModal.svelte b/packages/builder/src/components/settings/UpdateUserInfoModal.svelte similarity index 100% rename from packages/builder/src/components/settings/UserInfoModal.svelte rename to packages/builder/src/components/settings/UpdateUserInfoModal.svelte diff --git a/packages/builder/src/pages/builder/apps/index.svelte b/packages/builder/src/pages/builder/apps/index.svelte index 7e5b145ffa..39cc780ac7 100644 --- a/packages/builder/src/pages/builder/apps/index.svelte +++ b/packages/builder/src/pages/builder/apps/index.svelte @@ -17,7 +17,7 @@ import { goto } from "@roxi/routify" import { AppStatus } from "constants" import { gradient } from "actions" - import UserInfoModal from "components/settings/UserInfoModal.svelte" + import UpdateUserInfoModal from "components/settings/UpdateUserInfoModal.svelte" import ChangePasswordModal from "components/settings/ChangePasswordModal.svelte" import { processStringSync } from "@budibase/string-templates" import Logo from "assets/bb-emblem.svg" @@ -79,7 +79,7 @@ userInfoModal.show()}> - View user information + Update user information - + diff --git a/packages/builder/src/pages/builder/portal/_layout.svelte b/packages/builder/src/pages/builder/portal/_layout.svelte index 6788207d87..f4679647ff 100644 --- a/packages/builder/src/pages/builder/portal/_layout.svelte +++ b/packages/builder/src/pages/builder/portal/_layout.svelte @@ -16,7 +16,7 @@ import { organisation, auth } from "stores/portal" import { admin as adminStore } from "stores/portal" import { onMount } from "svelte" - import UserInfoModal from "components/settings/UserInfoModal.svelte" + import UpdateUserInfoModal from "components/settings/UpdateUserInfoModal.svelte" import ChangePasswordModal from "components/settings/ChangePasswordModal.svelte" import Logo from "assets/bb-emblem.svg" @@ -160,7 +160,7 @@ userInfoModal.show()}> - View user information + Update user information - + From 911f2780ef6e8966ef4a7efd483a9955b7ac9058 Mon Sep 17 00:00:00 2001 From: Michael Drury Date: Wed, 9 Feb 2022 20:30:52 +0000 Subject: [PATCH 03/64] Start of API key modal. --- .../settings/UpdateAPIKeyModal.svelte | 36 +++++++++++++++++++ .../src/pages/builder/apps/index.svelte | 11 ++++++ packages/builder/src/stores/portal/auth.js | 11 ++++++ packages/frontend-core/src/api/user.js | 21 +++++++++++ 4 files changed, 79 insertions(+) create mode 100644 packages/builder/src/components/settings/UpdateAPIKeyModal.svelte diff --git a/packages/builder/src/components/settings/UpdateAPIKeyModal.svelte b/packages/builder/src/components/settings/UpdateAPIKeyModal.svelte new file mode 100644 index 0000000000..a63367cf4a --- /dev/null +++ b/packages/builder/src/components/settings/UpdateAPIKeyModal.svelte @@ -0,0 +1,36 @@ + + +{#if loaded} + + + You can find information about your developer account here, such as the + API key used to access the Budibase API. + + + +{/if} diff --git a/packages/builder/src/pages/builder/apps/index.svelte b/packages/builder/src/pages/builder/apps/index.svelte index 39cc780ac7..309e760ad1 100644 --- a/packages/builder/src/pages/builder/apps/index.svelte +++ b/packages/builder/src/pages/builder/apps/index.svelte @@ -19,12 +19,14 @@ import { gradient } from "actions" import UpdateUserInfoModal from "components/settings/UpdateUserInfoModal.svelte" import ChangePasswordModal from "components/settings/ChangePasswordModal.svelte" + import UpdateAPIKeyModal from "components/settings/UpdateAPIKeyModal.svelte" import { processStringSync } from "@budibase/string-templates" import Logo from "assets/bb-emblem.svg" let loaded = false let userInfoModal let changePasswordModal + let apiKeyModal onMount(async () => { try { @@ -81,6 +83,12 @@ userInfoModal.show()}> Update user information + apiKeyModal.show()} + > + View developer information + changePasswordModal.show()} @@ -155,6 +163,9 @@ + + + {/if} diff --git a/packages/builder/src/components/settings/UpdateAPIKeyModal.svelte b/packages/builder/src/components/settings/UpdateAPIKeyModal.svelte index a63367cf4a..cb996df4f1 100644 --- a/packages/builder/src/components/settings/UpdateAPIKeyModal.svelte +++ b/packages/builder/src/components/settings/UpdateAPIKeyModal.svelte @@ -4,7 +4,6 @@ import { onMount } from "svelte" let apiKey = null - let loaded = false async function generateAPIKey() { try { @@ -16,21 +15,20 @@ } onMount(async () => { - apiKey = auth.fetchAPIKey() + apiKey = await auth.fetchAPIKey() }) -{#if loaded} - - - You can find information about your developer account here, such as the - API key used to access the Budibase API. - - - -{/if} + + + You can find information about your developer account here, such as the API + key used to access the Budibase API. + + + diff --git a/packages/builder/src/pages/builder/apps/index.svelte b/packages/builder/src/pages/builder/apps/index.svelte index 309e760ad1..39cc780ac7 100644 --- a/packages/builder/src/pages/builder/apps/index.svelte +++ b/packages/builder/src/pages/builder/apps/index.svelte @@ -19,14 +19,12 @@ import { gradient } from "actions" import UpdateUserInfoModal from "components/settings/UpdateUserInfoModal.svelte" import ChangePasswordModal from "components/settings/ChangePasswordModal.svelte" - import UpdateAPIKeyModal from "components/settings/UpdateAPIKeyModal.svelte" import { processStringSync } from "@budibase/string-templates" import Logo from "assets/bb-emblem.svg" let loaded = false let userInfoModal let changePasswordModal - let apiKeyModal onMount(async () => { try { @@ -83,12 +81,6 @@ userInfoModal.show()}> Update user information - apiKeyModal.show()} - > - View developer information - changePasswordModal.show()} @@ -163,9 +155,6 @@ - - - {/if} + diff --git a/packages/builder/src/components/common/inputs/CopyInput.svelte b/packages/builder/src/components/common/inputs/CopyInput.svelte new file mode 100644 index 0000000000..68974fb63a --- /dev/null +++ b/packages/builder/src/components/common/inputs/CopyInput.svelte @@ -0,0 +1,58 @@ + + +
+ +
copyToClipboard(value || copyValue)}> + +
+
+ + diff --git a/packages/builder/src/components/settings/UpdateAPIKeyModal.svelte b/packages/builder/src/components/settings/UpdateAPIKeyModal.svelte index 3a682078c8..c82be19fed 100644 --- a/packages/builder/src/components/settings/UpdateAPIKeyModal.svelte +++ b/packages/builder/src/components/settings/UpdateAPIKeyModal.svelte @@ -1,7 +1,8 @@ diff --git a/packages/builder/src/pages/builder/portal/_layout.svelte b/packages/builder/src/pages/builder/portal/_layout.svelte index 876f34c0bb..7aa4671f7c 100644 --- a/packages/builder/src/pages/builder/portal/_layout.svelte +++ b/packages/builder/src/pages/builder/portal/_layout.svelte @@ -166,7 +166,7 @@
{#if $auth.isBuilder} apiKeyModal.show()}> - View developer information + View API key {/if} { - const info = await API.generateAPIKey() - return info?.apiKey ? info.apiKey : null + return API.generateAPIKey() }, fetchAPIKey: async () => { const info = await API.fetchDeveloperInfo() - return info?.apiKey ? info.apiKey : null + return info?.apiKey }, } diff --git a/packages/frontend-core/src/api/self.js b/packages/frontend-core/src/api/self.js index f4d2c1c313..cdd5eaba53 100644 --- a/packages/frontend-core/src/api/self.js +++ b/packages/frontend-core/src/api/self.js @@ -5,9 +5,10 @@ export const buildSelfEndpoints = API => ({ * @return {Promise} returns the API response, including an API key. */ generateAPIKey: async () => { - return await API.post({ + const response = await API.post({ url: "/api/global/self/api_key", }) + return response?.apiKey }, /** @@ -15,8 +16,39 @@ export const buildSelfEndpoints = API => ({ * @return {Promise} An object containing the user developer information. */ fetchDeveloperInfo: async () => { - return await API.get({ + return API.get({ url: "/api/global/self/api_key", }) }, + + /** + * Fetches the currently logged-in user object. + * Used in client apps. + */ + fetchSelf: async () => { + return await API.get({ + url: "/api/self", + }) + }, + + /** + * Fetches the currently logged-in user object. + * Used in the builder. + */ + fetchBuilderSelf: async () => { + return await API.get({ + url: "/api/global/self", + }) + }, + + /** + * Updates the current logged-in user. + * @param user the new user object to save + */ + updateSelf: async user => { + return await API.post({ + url: "/api/global/self", + body: user, + }) + }, }) diff --git a/packages/frontend-core/src/api/user.js b/packages/frontend-core/src/api/user.js index 7c715e9b63..9eade435da 100644 --- a/packages/frontend-core/src/api/user.js +++ b/packages/frontend-core/src/api/user.js @@ -1,24 +1,4 @@ export const buildUserEndpoints = API => ({ - /** - * Fetches the currently logged-in user object. - * Used in client apps. - */ - fetchSelf: async () => { - return await API.get({ - url: "/api/self", - }) - }, - - /** - * Fetches the currently logged-in user object. - * Used in the builder. - */ - fetchBuilderSelf: async () => { - return await API.get({ - url: "/api/global/self", - }) - }, - /** * Gets a list of users in the current tenant. */ @@ -61,17 +41,6 @@ export const buildUserEndpoints = API => ({ }) }, - /** - * Updates the current logged-in user. - * @param user the new user object to save - */ - updateSelf: async user => { - return await API.post({ - url: "/api/global/self", - body: user, - }) - }, - /** * Creates or updates a user in the current tenant. * @param user the new user to create From 84ef694712a74b1f4fc1c047cef9588d2b8a1403 Mon Sep 17 00:00:00 2001 From: mike12345567 Date: Mon, 28 Feb 2022 18:53:03 +0000 Subject: [PATCH 52/64] Fixing test case. --- packages/server/src/tests/utilities/TestConfiguration.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/packages/server/src/tests/utilities/TestConfiguration.js b/packages/server/src/tests/utilities/TestConfiguration.js index a3544154f3..1d280fdd4b 100644 --- a/packages/server/src/tests/utilities/TestConfiguration.js +++ b/packages/server/src/tests/utilities/TestConfiguration.js @@ -247,7 +247,7 @@ class TestConfiguration { async getTable(tableId = null) { tableId = tableId || this.table._id - return this._req(null, { id: tableId }, controllers.table.find) + return this._req(null, { tableId }, controllers.table.find) } async createLinkedTable(relationshipType = null, links = ["link"]) { From c958e93aedb7d9bc3977eb447ef76eef05a0f097 Mon Sep 17 00:00:00 2001 From: mike12345567 Date: Mon, 28 Feb 2022 19:27:37 +0000 Subject: [PATCH 53/64] Fixing another issue raised by test cases. --- packages/server/src/automations/steps/queryRows.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/packages/server/src/automations/steps/queryRows.js b/packages/server/src/automations/steps/queryRows.js index 6584cda8d3..5bc19d0022 100644 --- a/packages/server/src/automations/steps/queryRows.js +++ b/packages/server/src/automations/steps/queryRows.js @@ -74,7 +74,7 @@ exports.definition = { async function getTable(appId, tableId) { const ctx = buildCtx(appId, null, { params: { - id: tableId, + tableId, }, }) await tableController.find(ctx) From a5246d59980d14f6f2225034014201f8bdc48935 Mon Sep 17 00:00:00 2001 From: Michael Drury Date: Mon, 28 Feb 2022 20:03:02 +0000 Subject: [PATCH 54/64] Fixing an issue with webhook controller. --- packages/server/src/api/controllers/webhook.js | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/packages/server/src/api/controllers/webhook.js b/packages/server/src/api/controllers/webhook.js index 9958560e43..67427e5710 100644 --- a/packages/server/src/api/controllers/webhook.js +++ b/packages/server/src/api/controllers/webhook.js @@ -1,6 +1,7 @@ const { generateWebhookID, getWebhookParams } = require("../../db/utils") const toJsonSchema = require("to-json-schema") const validate = require("jsonschema").validate +const { WebhookType } = require("../../constants") const triggers = require("../../automations/triggers") const { getProdAppID } = require("@budibase/backend-core/db") const { getAppDB, updateAppId } = require("@budibase/backend-core/context") @@ -58,7 +59,7 @@ exports.buildSchema = async ctx => { const webhook = await db.get(ctx.params.id) webhook.bodySchema = toJsonSchema(ctx.request.body) // update the automation outputs - if (webhook.action.type === exports.WebhookType.AUTOMATION) { + if (webhook.action.type === WebhookType.AUTOMATION) { let automation = await db.get(webhook.action.target) const autoOutputs = automation.definition.trigger.schema.outputs let properties = webhook.bodySchema.properties @@ -88,7 +89,7 @@ exports.trigger = async ctx => { validate(ctx.request.body, webhook.bodySchema) } const target = await db.get(webhook.action.target) - if (webhook.action.type === exports.WebhookType.AUTOMATION) { + if (webhook.action.type === WebhookType.AUTOMATION) { // trigger with both the pure request and then expand it // incase the user has produced a schema to bind to await triggers.externalTrigger(target, { From 8680faa3da9f0ff5f1539fad3864c667cfd01fc6 Mon Sep 17 00:00:00 2001 From: mike12345567 Date: Tue, 1 Mar 2022 14:37:35 +0000 Subject: [PATCH 55/64] Updating summaries, adding descriptions, wrapping responses with generic wrapper 'data'. --- packages/server/specs/openapi.json | 171 +++++++----------- packages/server/specs/openapi.yaml | 159 +++++++--------- .../server/specs/resources/application.js | 6 +- packages/server/specs/resources/query.js | 4 +- packages/server/specs/resources/row.js | 8 +- packages/server/specs/resources/table.js | 6 +- packages/server/specs/resources/user.js | 6 +- .../api/controllers/public/applications.ts | 9 +- .../src/api/controllers/public/queries.ts | 8 +- .../server/src/api/controllers/public/rows.ts | 12 +- .../src/api/controllers/public/tables.ts | 16 +- .../src/api/controllers/public/users.ts | 39 ++-- .../src/api/controllers/public/utils.ts | 8 + .../src/api/routes/public/applications.ts | 15 +- .../server/src/api/routes/public/queries.ts | 11 +- packages/server/src/api/routes/public/rows.ts | 17 +- .../server/src/api/routes/public/tables.ts | 20 +- .../api/routes/public/tests/compare.spec.js | 2 +- .../server/src/api/routes/public/users.ts | 15 +- packages/server/src/middleware/mapper.ts | 0 20 files changed, 239 insertions(+), 293 deletions(-) create mode 100644 packages/server/src/middleware/mapper.ts diff --git a/packages/server/specs/openapi.json b/packages/server/specs/openapi.json index 22469b1783..5c4bdf2785 100644 --- a/packages/server/specs/openapi.json +++ b/packages/server/specs/openapi.json @@ -75,7 +75,7 @@ "examples": { "application": { "value": { - "application": { + "data": { "_id": "app_metadata", "appId": "app_dev_957b12f943d348faa61db7e18e088d0f", "version": "1.0.58-alpha.0", @@ -84,38 +84,13 @@ "tenantId": "default", "updatedAt": "2022-02-22T13:00:54.035Z", "createdAt": "2022-02-11T18:02:26.961Z", - "status": "development", - "lockedBy": { - "_id": "us_693a73206518477283a8d5ae31103252", - "email": "test@test.com", - "roles": { - "app_957b12f943d348faa61db7e18e088d0f": "BASIC" - }, - "builder": { - "global": false - }, - "admin": { - "global": true - }, - "tenantId": "default", - "status": "active", - "budibaseAccess": true, - "csrfToken": "9c70291d-7137-48f9-9166-99ab5473a3d4", - "userId": "us_693a73206518477283a8d5ae31103252", - "roleId": "ADMIN", - "role": { - "_id": "ADMIN", - "name": "Admin", - "permissionId": "admin", - "inherits": "POWER" - } - } + "status": "development" } } }, "applications": { "value": { - "applications": [ + "data": [ { "_id": "app_metadata", "appId": "app_dev_957b12f943d348faa61db7e18e088d0f", @@ -125,32 +100,7 @@ "tenantId": "default", "updatedAt": "2022-02-22T13:00:54.035Z", "createdAt": "2022-02-11T18:02:26.961Z", - "status": "development", - "lockedBy": { - "_id": "us_693a73206518477283a8d5ae31103252", - "email": "test@test.com", - "roles": { - "app_957b12f943d348faa61db7e18e088d0f": "BASIC" - }, - "builder": { - "global": false - }, - "admin": { - "global": true - }, - "tenantId": "default", - "status": "active", - "budibaseAccess": true, - "csrfToken": "9c70291d-7137-48f9-9166-99ab5473a3d4", - "userId": "us_693a73206518477283a8d5ae31103252", - "roleId": "ADMIN", - "role": { - "_id": "ADMIN", - "name": "Admin", - "permissionId": "admin", - "inherits": "POWER" - } - } + "status": "development" } ] } @@ -169,7 +119,7 @@ }, "row": { "value": { - "row": { + "data": { "_id": "ro_ta_5b1649e42a5b41dea4ef7742a36a7a70_e6dc7e38cf1343b2b56760265201cda4", "type": "row", "tableId": "ta_5b1649e42a5b41dea4ef7742a36a7a70", @@ -186,7 +136,7 @@ }, "enrichedRow": { "value": { - "row": { + "data": { "_id": "ro_ta_5b1649e42a5b41dea4ef7742a36a7a70_e6dc7e38cf1343b2b56760265201cda4", "name": "eg", "tableId": "ta_5b1649e42a5b41dea4ef7742a36a7a70", @@ -209,7 +159,7 @@ }, "rows": { "value": { - "rows": [ + "data": [ { "_id": "ro_ta_5b1649e42a5b41dea4ef7742a36a7a70_e6dc7e38cf1343b2b56760265201cda4", "type": "row", @@ -230,7 +180,7 @@ }, "table": { "value": { - "table": { + "data": { "_id": "ta_5b1649e42a5b41dea4ef7742a36a7a70", "name": "People", "schema": { @@ -255,7 +205,7 @@ }, "tables": { "value": { - "tables": [ + "data": [ { "_id": "ta_5b1649e42a5b41dea4ef7742a36a7a70", "name": "People", @@ -282,7 +232,7 @@ }, "query": { "value": { - "query": { + "data": { "_id": "query_datasource_plus_4d8be0c506b9465daf4bf84d890fdab6_454854487c574d45bc4029b1e153219e", "datasourceId": "datasource_plus_4d8be0c506b9465daf4bf84d890fdab6", "parameters": [], @@ -320,7 +270,7 @@ }, "queries": { "value": { - "queries": [ + "data": [ { "_id": "query_datasource_plus_4d8be0c506b9465daf4bf84d890fdab6_454854487c574d45bc4029b1e153219e", "datasourceId": "datasource_plus_4d8be0c506b9465daf4bf84d890fdab6", @@ -396,7 +346,7 @@ }, "user": { "value": { - "user": { + "data": { "_id": "us_693a73206518477283a8d5ae31103252", "email": "test@test.com", "roles": { @@ -425,7 +375,7 @@ }, "users": { "value": { - "users": [ + "data": [ { "_id": "us_693a73206518477283a8d5ae31103252", "email": "test@test.com", @@ -484,7 +434,7 @@ "applicationOutput": { "type": "object", "properties": { - "application": { + "data": { "type": "object", "properties": { "name": { @@ -540,7 +490,7 @@ } }, "required": [ - "application" + "data" ] }, "row": { @@ -579,7 +529,7 @@ "rowOutput": { "type": "object", "properties": { - "row": { + "data": { "description": "The row to be created/updated, based on the table schema.", "type": "object", "properties": { @@ -614,7 +564,7 @@ } }, "required": [ - "row" + "data" ] }, "table": { @@ -819,7 +769,7 @@ "tableOutput": { "type": "object", "properties": { - "table": { + "data": { "description": "The table to be created/updated.", "type": "object", "required": [ @@ -1020,7 +970,7 @@ } }, "required": [ - "table" + "data" ] }, "query": { @@ -1113,7 +1063,7 @@ "userOutput": { "type": "object", "properties": { - "user": { + "data": { "type": "object", "properties": { "email": { @@ -1179,7 +1129,7 @@ } }, "required": [ - "user" + "data" ] }, "nameSearch": { @@ -1204,7 +1154,7 @@ "paths": { "/applications": { "post": { - "summary": "Create a new application.", + "summary": "Create an application", "tags": [ "applications" ], @@ -1244,7 +1194,7 @@ }, "/applications/{appId}": { "put": { - "summary": "Update an existing application by its ID.", + "summary": "Update an application", "tags": [ "applications" ], @@ -1282,7 +1232,7 @@ } }, "delete": { - "summary": "Delete an existing application by its ID.", + "summary": "Delete an application", "tags": [ "applications" ], @@ -1310,7 +1260,7 @@ } }, "get": { - "summary": "Retrieve a single application by its ID.", + "summary": "Retrieve an application", "tags": [ "applications" ], @@ -1340,7 +1290,8 @@ }, "/applications/search": { "post": { - "summary": "Search for an application based on its app name.", + "summary": "Search for applications", + "description": "Based on application properties (currently only name) search for applications.", "tags": [ "applications" ], @@ -1367,10 +1318,10 @@ "schema": { "type": "object", "required": [ - "applications" + "data" ], "properties": { - "applications": { + "data": { "type": "array", "items": { "$ref": "#/components/schemas/application" @@ -1391,10 +1342,8 @@ }, "/queries/{queryId}": { "post": { - "summary": "Execute a query and retrieve its response.", - "tags": [ - "queries" - ], + "summary": "Execute a query", + "description": "Queries which have been created within a Budibase app can be executed using this, - queries", "parameters": [ { "$ref": "#/components/parameters/queryId" @@ -1455,7 +1404,8 @@ }, "/queries/search": { "post": { - "summary": "Search for a query based on its name.", + "summary": "Search for queries", + "description": "Based on query properties (currently only name) search for queries.", "tags": [ "queries" ], @@ -1482,10 +1432,10 @@ "schema": { "type": "object", "required": [ - "queries" + "data" ], "properties": { - "queries": { + "data": { "type": "array", "items": { "$ref": "#/components/schemas/query" @@ -1506,7 +1456,8 @@ }, "/tables/{tableId}/rows": { "post": { - "summary": "Creates a new row within a specified table.", + "summary": "Create a row", + "description": "Creates a row within the specified table.", "tags": [ "rows" ], @@ -1554,7 +1505,8 @@ }, "/tables/{tableId}/rows/{rowId}": { "put": { - "summary": "Update a single row within a specified table.", + "summary": "Update a row", + "description": "Updates a row within the specified table.", "tags": [ "rows" ], @@ -1603,7 +1555,8 @@ } }, "delete": { - "summary": "Delete a single row from the specified table.", + "summary": "Delete a row", + "description": "Deletes a row within the specified table.", "tags": [ "rows" ], @@ -1637,7 +1590,7 @@ } }, "get": { - "summary": "Get a single row from the specified table.", + "summary": "Retrieve a row", "description": "This gets a single row, it will be enriched with the full related rows, rather than the squashed \"primaryDisplay\" format returned by the search endpoint.", "tags": [ "rows" @@ -1674,7 +1627,7 @@ }, "/tables/{tableId}/rows/search": { "post": { - "summary": "Used to search for rows within a table.", + "summary": "Search for rows", "tags": [ "rows" ], @@ -1808,10 +1761,10 @@ "schema": { "type": "object", "required": [ - "rows" + "data" ], "properties": { - "rows": { + "data": { "description": "An array of rows, these will each contain an _id field which can be used to update or delete them.", "type": "array", "items": { @@ -1848,7 +1801,8 @@ }, "/tables": { "post": { - "summary": "Create a new table.", + "summary": "Create a table", + "description": "Create a table, this could be internal or external.", "tags": [ "tables" ], @@ -1892,7 +1846,8 @@ }, "/tables/{tableId}": { "put": { - "summary": "Update the specified table.", + "summary": "Update a table", + "description": "Update a table, this could be internal or external.", "tags": [ "tables" ], @@ -1937,7 +1892,8 @@ } }, "delete": { - "summary": "Delete a single table and all of its data.", + "summary": "Delete a table", + "description": "Delete a table, this could be internal or external.", "tags": [ "tables" ], @@ -1968,7 +1924,8 @@ } }, "get": { - "summary": "Gets a single table by its ID.", + "summary": "Retrieve a table", + "description": "Lookup a table, this could be internal or external.", "tags": [ "tables" ], @@ -2001,7 +1958,8 @@ }, "/tables/search": { "post": { - "summary": "Search internal and external tables based on their name.", + "summary": "Search for tables", + "description": "Based on table properties (currently only name) search for tables. This could be an internal or an external table.", "tags": [ "tables" ], @@ -2028,10 +1986,10 @@ "schema": { "type": "object", "required": [ - "tables" + "data" ], "properties": { - "tables": { + "data": { "type": "array", "items": { "$ref": "#/components/schemas/table" @@ -2052,7 +2010,7 @@ }, "/users": { "post": { - "summary": "Create a new user in the Budibase portal.", + "summary": "Create a user", "tags": [ "users" ], @@ -2087,7 +2045,7 @@ }, "/users/{userId}": { "put": { - "summary": "Update an existing user by their ID.", + "summary": "Update a user", "tags": [ "users" ], @@ -2125,7 +2083,7 @@ } }, "delete": { - "summary": "Delete an existing user by their ID.", + "summary": "Delete a user", "tags": [ "users" ], @@ -2153,7 +2111,7 @@ } }, "get": { - "summary": "Retrieve a single user by their ID.", + "summary": "Retrieve a user", "tags": [ "users" ], @@ -2183,7 +2141,8 @@ }, "/users/search": { "post": { - "summary": "Search for a user based on their email/username.", + "summary": "Search for users", + "description": "Based on user properties (currently only name) search for users.", "tags": [ "users" ], @@ -2205,10 +2164,10 @@ "schema": { "type": "object", "required": [ - "users" + "data" ], "properties": { - "users": { + "data": { "type": "array", "items": { "$ref": "#/components/schemas/user" diff --git a/packages/server/specs/openapi.yaml b/packages/server/specs/openapi.yaml index 6bfd150db0..1ccd6393ee 100644 --- a/packages/server/specs/openapi.yaml +++ b/packages/server/specs/openapi.yaml @@ -55,7 +55,7 @@ components: examples: application: value: - application: + data: _id: app_metadata appId: app_dev_957b12f943d348faa61db7e18e088d0f version: 1.0.58-alpha.0 @@ -65,29 +65,9 @@ components: updatedAt: 2022-02-22T13:00:54.035Z createdAt: 2022-02-11T18:02:26.961Z status: development - lockedBy: - _id: us_693a73206518477283a8d5ae31103252 - email: test@test.com - roles: - app_957b12f943d348faa61db7e18e088d0f: BASIC - builder: - global: false - admin: - global: true - tenantId: default - status: active - budibaseAccess: true - csrfToken: 9c70291d-7137-48f9-9166-99ab5473a3d4 - userId: us_693a73206518477283a8d5ae31103252 - roleId: ADMIN - role: - _id: ADMIN - name: Admin - permissionId: admin - inherits: POWER applications: value: - applications: + data: - _id: app_metadata appId: app_dev_957b12f943d348faa61db7e18e088d0f version: 1.0.58-alpha.0 @@ -97,26 +77,6 @@ components: updatedAt: 2022-02-22T13:00:54.035Z createdAt: 2022-02-11T18:02:26.961Z status: development - lockedBy: - _id: us_693a73206518477283a8d5ae31103252 - email: test@test.com - roles: - app_957b12f943d348faa61db7e18e088d0f: BASIC - builder: - global: false - admin: - global: true - tenantId: default - status: active - budibaseAccess: true - csrfToken: 9c70291d-7137-48f9-9166-99ab5473a3d4 - userId: us_693a73206518477283a8d5ae31103252 - roleId: ADMIN - role: - _id: ADMIN - name: Admin - permissionId: admin - inherits: POWER inputRow: value: _id: ro_ta_5b1649e42a5b41dea4ef7742a36a7a70_e6dc7e38cf1343b2b56760265201cda4 @@ -128,7 +88,7 @@ components: - ro_ta_... row: value: - row: + data: _id: ro_ta_5b1649e42a5b41dea4ef7742a36a7a70_e6dc7e38cf1343b2b56760265201cda4 type: row tableId: ta_5b1649e42a5b41dea4ef7742a36a7a70 @@ -139,7 +99,7 @@ components: _id: ro_ta_... enrichedRow: value: - row: + data: _id: ro_ta_5b1649e42a5b41dea4ef7742a36a7a70_e6dc7e38cf1343b2b56760265201cda4 name: eg tableId: ta_5b1649e42a5b41dea4ef7742a36a7a70 @@ -153,7 +113,7 @@ components: primaryDisplay: eg rows: value: - rows: + data: - _id: ro_ta_5b1649e42a5b41dea4ef7742a36a7a70_e6dc7e38cf1343b2b56760265201cda4 type: row tableId: ta_5b1649e42a5b41dea4ef7742a36a7a70 @@ -166,7 +126,7 @@ components: bookmark: 10 table: value: - table: + data: _id: ta_5b1649e42a5b41dea4ef7742a36a7a70 name: People schema: @@ -184,7 +144,7 @@ components: relationshipType: many-to-many tables: value: - tables: + data: - _id: ta_5b1649e42a5b41dea4ef7742a36a7a70 name: People schema: @@ -202,7 +162,7 @@ components: relationshipType: many-to-many query: value: - query: + data: _id: query_datasource_plus_4d8be0c506b9465daf4bf84d890fdab6_454854487c574d45bc4029b1e153219e datasourceId: datasource_plus_4d8be0c506b9465daf4bf84d890fdab6 parameters: [] @@ -230,7 +190,7 @@ components: readable: true queries: value: - queries: + data: - _id: query_datasource_plus_4d8be0c506b9465daf4bf84d890fdab6_454854487c574d45bc4029b1e153219e datasourceId: datasource_plus_4d8be0c506b9465daf4bf84d890fdab6 parameters: [] @@ -280,7 +240,7 @@ components: city: Dublin user: value: - user: + data: _id: us_693a73206518477283a8d5ae31103252 email: test@test.com roles: @@ -302,7 +262,7 @@ components: inherits: POWER users: value: - users: + data: - _id: us_693a73206518477283a8d5ae31103252 email: test@test.com roles: @@ -345,7 +305,7 @@ components: applicationOutput: type: object properties: - application: + data: type: object properties: name: @@ -391,7 +351,7 @@ components: - version - appId required: - - application + - data row: description: The row to be created/updated, based on the table schema. type: object @@ -412,7 +372,7 @@ components: rowOutput: type: object properties: - row: + data: description: The row to be created/updated, based on the table schema. type: object properties: @@ -430,7 +390,7 @@ components: - type: array - type: boolean required: - - row + - data table: description: The table to be created/updated. type: object @@ -592,7 +552,7 @@ components: tableOutput: type: object properties: - table: + data: description: The table to be created/updated. type: object required: @@ -751,7 +711,7 @@ components: type: boolean description: Defines whether the column is automatically generated. required: - - table + - data query: description: The query body must contain the required parameters for the query, this depends on query type, setup and bindings. @@ -818,7 +778,7 @@ components: userOutput: type: object properties: - user: + data: type: object properties: email: @@ -871,7 +831,7 @@ components: - email - roles required: - - user + - data nameSearch: type: object properties: @@ -886,7 +846,7 @@ security: paths: /applications: post: - summary: Create a new application. + summary: Create an application tags: - applications parameters: @@ -909,7 +869,7 @@ paths: $ref: "#/components/examples/application" "/applications/{appId}": put: - summary: Update an existing application by its ID. + summary: Update an application tags: - applications parameters: @@ -931,7 +891,7 @@ paths: application: $ref: "#/components/examples/application" delete: - summary: Delete an existing application by its ID. + summary: Delete an application tags: - applications parameters: @@ -947,7 +907,7 @@ paths: application: $ref: "#/components/examples/application" get: - summary: Retrieve a single application by its ID. + summary: Retrieve an application tags: - applications parameters: @@ -964,7 +924,9 @@ paths: $ref: "#/components/examples/application" /applications/search: post: - summary: Search for an application based on its app name. + summary: Search for applications + description: Based on application properties (currently only name) search for + applications. tags: - applications parameters: @@ -984,9 +946,9 @@ paths: schema: type: object required: - - applications + - data properties: - applications: + data: type: array items: $ref: "#/components/schemas/application" @@ -995,9 +957,9 @@ paths: $ref: "#/components/examples/applications" "/queries/{queryId}": post: - summary: Execute a query and retrieve its response. - tags: - - queries + summary: Execute a query + description: Queries which have been created within a Budibase app can be + executed using this, - queries parameters: - $ref: "#/components/parameters/queryId" - $ref: "#/components/parameters/appId" @@ -1036,7 +998,8 @@ paths: $ref: "#/components/examples/sqlResponse" /queries/search: post: - summary: Search for a query based on its name. + summary: Search for queries + description: Based on query properties (currently only name) search for queries. tags: - queries parameters: @@ -1055,9 +1018,9 @@ paths: schema: type: object required: - - queries + - data properties: - queries: + data: type: array items: $ref: "#/components/schemas/query" @@ -1066,7 +1029,8 @@ paths: $ref: "#/components/examples/queries" "/tables/{tableId}/rows": post: - summary: Creates a new row within a specified table. + summary: Create a row + description: Creates a row within the specified table. tags: - rows parameters: @@ -1095,7 +1059,8 @@ paths: $ref: "#/components/examples/row" "/tables/{tableId}/rows/{rowId}": put: - summary: Update a single row within a specified table. + summary: Update a row + description: Updates a row within the specified table. tags: - rows parameters: @@ -1123,7 +1088,8 @@ paths: row: $ref: "#/components/examples/row" delete: - summary: Delete a single row from the specified table. + summary: Delete a row + description: Deletes a row within the specified table. tags: - rows parameters: @@ -1142,7 +1108,7 @@ paths: row: $ref: "#/components/examples/row" get: - summary: Get a single row from the specified table. + summary: Retrieve a row description: This gets a single row, it will be enriched with the full related rows, rather than the squashed "primaryDisplay" format returned by the search endpoint. @@ -1164,7 +1130,7 @@ paths: $ref: "#/components/examples/enrichedRow" "/tables/{tableId}/rows/search": post: - summary: Used to search for rows within a table. + summary: Search for rows tags: - rows parameters: @@ -1269,9 +1235,9 @@ paths: schema: type: object required: - - rows + - data properties: - rows: + data: description: An array of rows, these will each contain an _id field which can be used to update or delete them. type: array @@ -1291,7 +1257,8 @@ paths: $ref: "#/components/examples/rows" /tables: post: - summary: Create a new table. + summary: Create a table + description: Create a table, this could be internal or external. tags: - tables parameters: @@ -1317,7 +1284,8 @@ paths: $ref: "#/components/examples/table" "/tables/{tableId}": put: - summary: Update the specified table. + summary: Update a table + description: Update a table, this could be internal or external. tags: - tables parameters: @@ -1342,7 +1310,8 @@ paths: table: $ref: "#/components/examples/table" delete: - summary: Delete a single table and all of its data. + summary: Delete a table + description: Delete a table, this could be internal or external. tags: - tables parameters: @@ -1359,7 +1328,8 @@ paths: table: $ref: "#/components/examples/table" get: - summary: Gets a single table by its ID. + summary: Retrieve a table + description: Lookup a table, this could be internal or external. tags: - tables parameters: @@ -1377,7 +1347,9 @@ paths: $ref: "#/components/examples/table" /tables/search: post: - summary: Search internal and external tables based on their name. + summary: Search for tables + description: Based on table properties (currently only name) search for tables. + This could be an internal or an external table. tags: - tables parameters: @@ -1396,9 +1368,9 @@ paths: schema: type: object required: - - tables + - data properties: - tables: + data: type: array items: $ref: "#/components/schemas/table" @@ -1407,7 +1379,7 @@ paths: $ref: "#/components/examples/tables" /users: post: - summary: Create a new user in the Budibase portal. + summary: Create a user tags: - users requestBody: @@ -1428,7 +1400,7 @@ paths: $ref: "#/components/examples/user" "/users/{userId}": put: - summary: Update an existing user by their ID. + summary: Update a user tags: - users parameters: @@ -1450,7 +1422,7 @@ paths: user: $ref: "#/components/examples/user" delete: - summary: Delete an existing user by their ID. + summary: Delete a user tags: - users parameters: @@ -1466,7 +1438,7 @@ paths: user: $ref: "#/components/examples/user" get: - summary: Retrieve a single user by their ID. + summary: Retrieve a user tags: - users parameters: @@ -1483,7 +1455,8 @@ paths: $ref: "#/components/examples/user" /users/search: post: - summary: Search for a user based on their email/username. + summary: Search for users + description: Based on user properties (currently only name) search for users. tags: - users requestBody: @@ -1500,9 +1473,9 @@ paths: schema: type: object required: - - users + - data properties: - users: + data: type: array items: $ref: "#/components/schemas/user" diff --git a/packages/server/specs/resources/application.js b/packages/server/specs/resources/application.js index 4063d7ce0b..b6c8fde5a5 100644 --- a/packages/server/specs/resources/application.js +++ b/packages/server/specs/resources/application.js @@ -84,18 +84,18 @@ module.exports = new Resource() .setExamples({ application: { value: { - application: application, + data: application, }, }, applications: { value: { - applications: [application], + data: [application], }, }, }) .setSchemas({ application: applicationSchema, applicationOutput: object({ - application: applicationSchemaOutput, + data: applicationSchemaOutput, }), }) diff --git a/packages/server/specs/resources/query.js b/packages/server/specs/resources/query.js index 056c7e785f..8b14cf5e8b 100644 --- a/packages/server/specs/resources/query.js +++ b/packages/server/specs/resources/query.js @@ -92,12 +92,12 @@ module.exports = new Resource() .setExamples({ query: { value: { - query: query, + data: query, }, }, queries: { value: { - queries: [query], + data: [query], }, }, restResponse, diff --git a/packages/server/specs/resources/row.js b/packages/server/specs/resources/row.js index f8c3986858..14a94e20f0 100644 --- a/packages/server/specs/resources/row.js +++ b/packages/server/specs/resources/row.js @@ -75,17 +75,17 @@ module.exports = new Resource() }, row: { value: { - row: row, + data: row, }, }, enrichedRow: { value: { - row: enrichedRow, + data: enrichedRow, }, }, rows: { value: { - rows: [row], + data: [row], hasNextPage: true, bookmark: 10, }, @@ -94,6 +94,6 @@ module.exports = new Resource() .setSchemas({ row: rowSchema, rowOutput: object({ - row: rowSchema, + data: rowSchema, }), }) diff --git a/packages/server/specs/resources/table.js b/packages/server/specs/resources/table.js index 6f41d6a9e6..71195a851f 100644 --- a/packages/server/specs/resources/table.js +++ b/packages/server/specs/resources/table.js @@ -162,18 +162,18 @@ module.exports = new Resource() .setExamples({ table: { value: { - table: table, + data: table, }, }, tables: { value: { - tables: [table], + data: [table], }, }, }) .setSchemas({ table: tableSchema, tableOutput: object({ - table: tableSchema, + data: tableSchema, }), }) diff --git a/packages/server/specs/resources/user.js b/packages/server/specs/resources/user.js index 15900bf99d..578d53fdf5 100644 --- a/packages/server/specs/resources/user.js +++ b/packages/server/specs/resources/user.js @@ -97,18 +97,18 @@ module.exports = new Resource() .setExamples({ user: { value: { - user: user, + data: user, }, }, users: { value: { - users: [user], + data: [user], }, }, }) .setSchemas({ user: userSchema, userOutput: object({ - user: userSchema, + data: userSchema, }), }) diff --git a/packages/server/src/api/controllers/public/applications.ts b/packages/server/src/api/controllers/public/applications.ts index 844d5967ff..fd107444fd 100644 --- a/packages/server/src/api/controllers/public/applications.ts +++ b/packages/server/src/api/controllers/public/applications.ts @@ -1,6 +1,6 @@ const { getAllApps } = require("@budibase/backend-core/db") const { updateAppId } = require("@budibase/backend-core/context") -import { search as stringSearch } from "./utils" +import { search as stringSearch, wrapResponse } from "./utils" import { default as controller } from "../application" import { Application } from "../../../definitions/common" @@ -19,14 +19,15 @@ async function setResponseApp(ctx: any) { ctx.params = { appId: ctx.body.appId } } await controller.fetchAppPackage(ctx) + // for now remove everything else + wrapResponse(ctx, (input: any) => input.application) } export async function search(ctx: any) { const { name } = ctx.request.body const apps = await getAllApps({ all: true }) - ctx.body = { - applications: stringSearch(apps, name), - } + ctx.body = stringSearch(apps, name) + wrapResponse(ctx) } export async function create(ctx: any) { diff --git a/packages/server/src/api/controllers/public/queries.ts b/packages/server/src/api/controllers/public/queries.ts index 6cefa6c7d0..bc12fe49c9 100644 --- a/packages/server/src/api/controllers/public/queries.ts +++ b/packages/server/src/api/controllers/public/queries.ts @@ -1,16 +1,16 @@ -import { search as stringSearch } from "./utils" +import { search as stringSearch, wrapResponse } from "./utils" import { default as queryController } from "../query" export async function search(ctx: any) { await queryController.fetch(ctx) const { name } = ctx.request.body - ctx.body = { - queries: stringSearch(ctx.body, name), - } + ctx.body = stringSearch(ctx.body, name) + wrapResponse(ctx) } export async function execute(ctx: any) { await queryController.executeV2(ctx) + wrapResponse(ctx) } export default { diff --git a/packages/server/src/api/controllers/public/rows.ts b/packages/server/src/api/controllers/public/rows.ts index 755f0c815c..d5c1f75533 100644 --- a/packages/server/src/api/controllers/public/rows.ts +++ b/packages/server/src/api/controllers/public/rows.ts @@ -1,5 +1,5 @@ import { default as rowController } from "../row" -import { addRev } from "./utils" +import { addRev, wrapResponse } from "./utils" import { Row } from "../../../definitions/common" // makes sure that the user doesn't need to pass in the type, tableId or _id params for @@ -36,23 +36,25 @@ export async function search(ctx: any) { query, } await rowController.search(ctx) + ctx.body.data = ctx.body.rows + delete ctx.body.rows } export async function create(ctx: any) { ctx.request.body = fixRow(ctx.request.body, ctx.params) await rowController.save(ctx) - ctx.body = { row: ctx.body } + wrapResponse(ctx) } export async function read(ctx: any) { await rowController.fetchEnrichedRow(ctx) - ctx.body = { row: ctx.body } + wrapResponse(ctx) } export async function update(ctx: any) { ctx.request.body = await addRev(fixRow(ctx.request.body, ctx.params.tableId)) await rowController.save(ctx) - ctx.body = { row: ctx.body } + wrapResponse(ctx) } export async function destroy(ctx: any) { @@ -63,7 +65,7 @@ export async function destroy(ctx: any) { await rowController.destroy(ctx) // destroy controller doesn't currently return the row as the body, need to adjust this // in the public API to be correct - ctx.body = { row: ctx.row } + wrapResponse(ctx) } export default { diff --git a/packages/server/src/api/controllers/public/tables.ts b/packages/server/src/api/controllers/public/tables.ts index 7d09e9820d..561e62e7d9 100644 --- a/packages/server/src/api/controllers/public/tables.ts +++ b/packages/server/src/api/controllers/public/tables.ts @@ -1,4 +1,4 @@ -import { search as stringSearch, addRev } from "./utils" +import { search as stringSearch, addRev, wrapResponse } from "./utils" import { default as controller } from "../table" import { Table } from "../../../definitions/common" @@ -15,19 +15,18 @@ function fixTable(table: Table, params: any) { export async function search(ctx: any) { const { name } = ctx.request.body await controller.fetch(ctx) - ctx.body = { - tables: stringSearch(ctx.body, name), - } + ctx.body = stringSearch(ctx.body, name) + wrapResponse(ctx) } export async function create(ctx: any) { await controller.save(ctx) - ctx.body = { table: ctx.body } + wrapResponse(ctx) } export async function read(ctx: any) { await controller.find(ctx) - ctx.body = { table: ctx.body } + wrapResponse(ctx) } export async function update(ctx: any) { @@ -36,12 +35,13 @@ export async function update(ctx: any) { ctx.params.tableId ) await controller.save(ctx) - ctx.body = { table: ctx.body } + wrapResponse(ctx) } export async function destroy(ctx: any) { await controller.destroy(ctx) - ctx.body = { table: ctx.table } + ctx.body = ctx.table + wrapResponse(ctx) } export default { diff --git a/packages/server/src/api/controllers/public/users.ts b/packages/server/src/api/controllers/public/users.ts index 112369d84c..361636dfdc 100644 --- a/packages/server/src/api/controllers/public/users.ts +++ b/packages/server/src/api/controllers/public/users.ts @@ -1,10 +1,11 @@ import { allGlobalUsers, + deleteGlobalUser, readGlobalUser, saveGlobalUser, - deleteGlobalUser, } from "../../../utilities/workerRequests" -import { search as stringSearch } from "./utils" +import { search as stringSearch, wrapResponse } from "./utils" + const { getProdAppID } = require("@budibase/backend-core/db") function fixUser(ctx: any) { @@ -37,29 +38,21 @@ function getUser(ctx: any, userId?: string) { } export async function search(ctx: any) { - try { - const { name } = ctx.request.body - const users = await allGlobalUsers(ctx) - ctx.body = { - users: stringSearch(users, name, "email"), - } - } catch (err) { - console.log(err) - } + const { name } = ctx.request.body + const users = await allGlobalUsers(ctx) + ctx.body = stringSearch(users, name, "email") + wrapResponse(ctx) } export async function create(ctx: any) { const response = await saveGlobalUser(fixUser(ctx)) - ctx.body = { - user: await getUser(ctx, response._id), - } + ctx.body = await getUser(ctx, response._id) + wrapResponse(ctx) } export async function read(ctx: any) { - const response = await readGlobalUser(ctx) - ctx.body = { - user: response, - } + ctx.body = await readGlobalUser(ctx) + wrapResponse(ctx) } export async function update(ctx: any) { @@ -69,17 +62,15 @@ export async function update(ctx: any) { _rev: user._rev, } const response = await saveGlobalUser(fixUser(ctx)) - ctx.body = { - user: await getUser(ctx, response._id), - } + ctx.body = await getUser(ctx, response._id) + wrapResponse(ctx) } export async function destroy(ctx: any) { const user = await getUser(ctx) await deleteGlobalUser(ctx) - ctx.body = { - user, - } + ctx.body = user + wrapResponse(ctx) } export default { diff --git a/packages/server/src/api/controllers/public/utils.ts b/packages/server/src/api/controllers/public/utils.ts index 7bdd865aa4..d9fae43caf 100644 --- a/packages/server/src/api/controllers/public/utils.ts +++ b/packages/server/src/api/controllers/public/utils.ts @@ -36,3 +36,11 @@ export function search(docs: any[], value: any, key = "name") { } return filtered } + +export function wrapResponse(ctx: any, map?: (input: any) => object) { + let data = ctx.body + if (map) { + data = map(data) + } + ctx.body = { data } +} diff --git a/packages/server/src/api/routes/public/applications.ts b/packages/server/src/api/routes/public/applications.ts index 09272c57b3..34225ced1a 100644 --- a/packages/server/src/api/routes/public/applications.ts +++ b/packages/server/src/api/routes/public/applications.ts @@ -9,7 +9,7 @@ const read = [], * @openapi * /applications: * post: - * summary: Create a new application. + * summary: Create an application * tags: * - applications * parameters: @@ -41,7 +41,7 @@ write.push( * @openapi * /applications/{appId}: * put: - * summary: Update an existing application by its ID. + * summary: Update an application * tags: * - applications * parameters: @@ -73,7 +73,7 @@ write.push( * @openapi * /applications/{appId}: * delete: - * summary: Delete an existing application by its ID. + * summary: Delete an application * tags: * - applications * parameters: @@ -95,7 +95,7 @@ write.push(new Endpoint("delete", "/applications/:appId", controller.destroy)) * @openapi * /applications/{appId}: * get: - * summary: Retrieve a single application by its ID. + * summary: Retrieve an application * tags: * - applications * parameters: @@ -117,7 +117,8 @@ read.push(new Endpoint("get", "/applications/:appId", controller.read)) * @openapi * /applications/search: * post: - * summary: Search for an application based on its app name. + * summary: Search for applications + * description: Based on application properties (currently only name) search for applications. * tags: * - applications * parameters: @@ -136,9 +137,9 @@ read.push(new Endpoint("get", "/applications/:appId", controller.read)) * schema: * type: object * required: - * - applications + * - data * properties: - * applications: + * data: * type: array * items: * $ref: '#/components/schemas/application' diff --git a/packages/server/src/api/routes/public/queries.ts b/packages/server/src/api/routes/public/queries.ts index 9c11aa7b62..30618df9bb 100644 --- a/packages/server/src/api/routes/public/queries.ts +++ b/packages/server/src/api/routes/public/queries.ts @@ -9,8 +9,8 @@ const read = [], * @openapi * /queries/{queryId}: * post: - * summary: Execute a query and retrieve its response. - * tags: + * summary: Execute a query + * description: Queries which have been created within a Budibase app can be executed using this, * - queries * parameters: * - $ref: '#/components/parameters/queryId' @@ -56,7 +56,8 @@ write.push(new Endpoint("post", "/queries/:queryId", controller.execute)) * @openapi * /queries/search: * post: - * summary: Search for a query based on its name. + * summary: Search for queries + * description: Based on query properties (currently only name) search for queries. * tags: * - queries * parameters: @@ -75,9 +76,9 @@ write.push(new Endpoint("post", "/queries/:queryId", controller.execute)) * schema: * type: object * required: - * - queries + * - data * properties: - * queries: + * data: * type: array * items: * $ref: '#/components/schemas/query' diff --git a/packages/server/src/api/routes/public/rows.ts b/packages/server/src/api/routes/public/rows.ts index 6dc36e4620..202a84ec92 100644 --- a/packages/server/src/api/routes/public/rows.ts +++ b/packages/server/src/api/routes/public/rows.ts @@ -9,7 +9,8 @@ const read = [], * @openapi * /tables/{tableId}/rows: * post: - * summary: Creates a new row within a specified table. + * summary: Create a row + * description: Creates a row within the specified table. * tags: * - rows * parameters: @@ -42,7 +43,8 @@ write.push(new Endpoint("post", "/tables/:tableId/rows", controller.create)) * @openapi * /tables/{tableId}/rows/{rowId}: * put: - * summary: Update a single row within a specified table. + * summary: Update a row + * description: Updates a row within the specified table. * tags: * - rows * parameters: @@ -77,7 +79,8 @@ write.push( * @openapi * /tables/{tableId}/rows/{rowId}: * delete: - * summary: Delete a single row from the specified table. + * summary: Delete a row + * description: Deletes a row within the specified table. * tags: * - rows * parameters: @@ -103,7 +106,7 @@ write.push( * @openapi * /tables/{tableId}/rows/{rowId}: * get: - * summary: Get a single row from the specified table. + * summary: Retrieve a row * description: This gets a single row, it will be enriched with the full related rows, rather than * the squashed "primaryDisplay" format returned by the search endpoint. * tags: @@ -129,7 +132,7 @@ read.push(new Endpoint("get", "/tables/:tableId/rows/:rowId", controller.read)) * @openapi * /tables/{tableId}/rows/search: * post: - * summary: Used to search for rows within a table. + * summary: Search for rows * tags: * - rows * parameters: @@ -225,9 +228,9 @@ read.push(new Endpoint("get", "/tables/:tableId/rows/:rowId", controller.read)) * schema: * type: object * required: - * - rows + * - data * properties: - * rows: + * data: * description: An array of rows, these will each contain an _id field which can be used * to update or delete them. * type: array diff --git a/packages/server/src/api/routes/public/tables.ts b/packages/server/src/api/routes/public/tables.ts index 1997c4d123..67ded72e4c 100644 --- a/packages/server/src/api/routes/public/tables.ts +++ b/packages/server/src/api/routes/public/tables.ts @@ -9,7 +9,8 @@ const read = [], * @openapi * /tables: * post: - * summary: Create a new table. + * summary: Create a table + * description: Create a table, this could be internal or external. * tags: * - tables * parameters: @@ -44,7 +45,8 @@ write.push( * @openapi * /tables/{tableId}: * put: - * summary: Update the specified table. + * summary: Update a table + * description: Update a table, this could be internal or external. * tags: * - tables * parameters: @@ -79,7 +81,8 @@ write.push( * @openapi * /tables/{tableId}: * delete: - * summary: Delete a single table and all of its data. + * summary: Delete a table + * description: Delete a table, this could be internal or external. * tags: * - tables * parameters: @@ -102,7 +105,8 @@ write.push(new Endpoint("delete", "/tables/:tableId", controller.destroy)) * @openapi * /tables/{tableId}: * get: - * summary: Gets a single table by its ID. + * summary: Retrieve a table + * description: Lookup a table, this could be internal or external. * tags: * - tables * parameters: @@ -125,7 +129,9 @@ read.push(new Endpoint("get", "/tables/:tableId", controller.read)) * @openapi * /tables/search: * post: - * summary: Search internal and external tables based on their name. + * summary: Search for tables + * description: Based on table properties (currently only name) search for tables. This could be + * an internal or an external table. * tags: * - tables * parameters: @@ -144,9 +150,9 @@ read.push(new Endpoint("get", "/tables/:tableId", controller.read)) * schema: * type: object * required: - * - tables + * - data * properties: - * tables: + * data: * type: array * items: * $ref: '#/components/schemas/table' diff --git a/packages/server/src/api/routes/public/tests/compare.spec.js b/packages/server/src/api/routes/public/tests/compare.spec.js index e0f5d7ccce..c42898fe40 100644 --- a/packages/server/src/api/routes/public/tests/compare.spec.js +++ b/packages/server/src/api/routes/public/tests/compare.spec.js @@ -125,7 +125,7 @@ describe("check the rows endpoints", () => { name: "test row", }) expect(res).toSatisfyApiSpec() - row = res.body.row + row = res.body.data }) it("should allow updating a row", async () => { diff --git a/packages/server/src/api/routes/public/users.ts b/packages/server/src/api/routes/public/users.ts index b603cb7a13..a299c1f53f 100644 --- a/packages/server/src/api/routes/public/users.ts +++ b/packages/server/src/api/routes/public/users.ts @@ -9,7 +9,7 @@ const read = [], * @openapi * /users: * post: - * summary: Create a new user in the Budibase portal. + * summary: Create a user * tags: * - users * requestBody: @@ -35,7 +35,7 @@ write.push(new Endpoint("post", "/users", controller.create)) * @openapi * /users/{userId}: * put: - * summary: Update an existing user by their ID. + * summary: Update a user * tags: * - users * parameters: @@ -63,7 +63,7 @@ write.push(new Endpoint("put", "/users/:userId", controller.update)) * @openapi * /users/{userId}: * delete: - * summary: Delete an existing user by their ID. + * summary: Delete a user * tags: * - users * parameters: @@ -85,7 +85,7 @@ write.push(new Endpoint("delete", "/users/:userId", controller.destroy)) * @openapi * /users/{userId}: * get: - * summary: Retrieve a single user by their ID. + * summary: Retrieve a user * tags: * - users * parameters: @@ -107,7 +107,8 @@ read.push(new Endpoint("get", "/users/:userId", controller.read)) * @openapi * /users/search: * post: - * summary: Search for a user based on their email/username. + * summary: Search for users + * description: Based on user properties (currently only name) search for users. * tags: * - users * requestBody: @@ -124,9 +125,9 @@ read.push(new Endpoint("get", "/users/:userId", controller.read)) * schema: * type: object * required: - * - users + * - data * properties: - * users: + * data: * type: array * items: * $ref: '#/components/schemas/user' diff --git a/packages/server/src/middleware/mapper.ts b/packages/server/src/middleware/mapper.ts new file mode 100644 index 0000000000..e69de29bb2 From f056bdd353311d82a8a46682377076602c758b6b Mon Sep 17 00:00:00 2001 From: mike12345567 Date: Tue, 1 Mar 2022 18:35:08 +0000 Subject: [PATCH 56/64] Adding new generation technique, converting openAPI spec to typescript definitions, which are then applied in mapping output middlewares to make sure that the structures of the response are fully respected. --- packages/server/package.json | 3 +- packages/server/specs/openapi.json | 263 +++-- packages/server/specs/openapi.yaml | 189 ++-- .../server/specs/resources/application.js | 14 +- packages/server/specs/resources/query.js | 93 +- packages/server/specs/resources/row.js | 49 +- packages/server/specs/resources/table.js | 16 +- packages/server/specs/resources/user.js | 14 +- .../api/controllers/public/applications.ts | 20 +- .../public/mapping/applications.ts | 32 + .../api/controllers/public/mapping/index.ts | 13 + .../api/controllers/public/mapping/queries.ts | 37 + .../api/controllers/public/mapping/rows.ts | 31 + .../api/controllers/public/mapping/tables.ts | 26 + .../api/controllers/public/mapping/users.ts | 32 + .../src/api/controllers/public/queries.ts | 11 +- .../server/src/api/controllers/public/rows.ts | 24 +- .../src/api/controllers/public/tables.ts | 25 +- .../controllers/public/types/components.ts | 17 + .../api/controllers/public/types/openapi.ts | 966 +++++++++++++++++ .../src/api/controllers/public/users.ts | 22 +- .../src/api/controllers/public/utils.ts | 8 - packages/server/src/api/routes/index.js | 2 +- .../server/src/api/routes/public/index.ts | 19 +- .../api/routes/public/middleware/mapper.ts | 81 ++ .../server/src/api/routes/public/queries.ts | 30 +- packages/server/src/api/routes/public/rows.ts | 19 +- .../src/api/routes/public/utils/Endpoint.ts | 23 +- packages/server/src/middleware/mapper.ts | 0 packages/server/yarn.lock | 967 +++++++++++++++++- 30 files changed, 2754 insertions(+), 292 deletions(-) create mode 100644 packages/server/src/api/controllers/public/mapping/applications.ts create mode 100644 packages/server/src/api/controllers/public/mapping/index.ts create mode 100644 packages/server/src/api/controllers/public/mapping/queries.ts create mode 100644 packages/server/src/api/controllers/public/mapping/rows.ts create mode 100644 packages/server/src/api/controllers/public/mapping/tables.ts create mode 100644 packages/server/src/api/controllers/public/mapping/users.ts create mode 100644 packages/server/src/api/controllers/public/types/components.ts create mode 100644 packages/server/src/api/controllers/public/types/openapi.ts create mode 100644 packages/server/src/api/routes/public/middleware/mapper.ts delete mode 100644 packages/server/src/middleware/mapper.ts diff --git a/packages/server/package.json b/packages/server/package.json index bb054c1797..d68d60c86d 100644 --- a/packages/server/package.json +++ b/packages/server/package.json @@ -25,7 +25,7 @@ "generate:proxy:preprod": "node scripts/proxy/generateProxyConfig preprod", "generate:proxy:prod": "node scripts/proxy/generateProxyConfig prod", "format": "prettier --config ../../.prettierrc.json 'src/**/*.ts' --write", - "specs": "node specs/generate.js", + "specs": "node specs/generate.js && openapi-typescript specs/openapi.yaml --output src/api/controllers/public/types/openapi.ts", "lint": "eslint --fix src/", "lint:fix": "yarn run format && yarn run lint", "initialise": "node scripts/initialise.js", @@ -161,6 +161,7 @@ "jest-openapi": "^0.14.2", "nodemon": "^2.0.4", "openapi-types": "^9.3.1", + "openapi-typescript": "^5.2.0", "path-to-regexp": "^6.2.0", "prettier": "^2.3.1", "rimraf": "^3.0.2", diff --git a/packages/server/specs/openapi.json b/packages/server/specs/openapi.json index 5c4bdf2785..51b411cd6e 100644 --- a/packages/server/specs/openapi.json +++ b/packages/server/specs/openapi.json @@ -445,6 +445,10 @@ "description": "The URL by which the app is accessed, this must be URL encoded.", "type": "string" }, + "_id": { + "description": "The ID of the app.", + "type": "string" + }, "status": { "description": "The status of the app, stating it if is the development or published version.", "type": "string", @@ -472,20 +476,16 @@ "lockedBy": { "description": "The user this app is currently being built by.", "type": "object" - }, - "appId": { - "description": "The ID of the app.", - "type": "string" } }, "required": [ + "_id", "name", "url", "status", "createdAt", "updatedAt", - "version", - "appId" + "version" ] } }, @@ -496,16 +496,6 @@ "row": { "description": "The row to be created/updated, based on the table schema.", "type": "object", - "properties": { - "_id": { - "description": "The ID of the row.", - "type": "string" - }, - "tableId": { - "description": "The ID of the table this row comes from.", - "type": "string" - } - }, "additionalProperties": { "oneOf": [ { @@ -526,22 +516,42 @@ ] } }, + "searchOutput": { + "type": "object", + "required": [ + "data" + ], + "properties": { + "data": { + "description": "An array of rows, these will each contain an _id field which can be used to update or delete them.", + "type": "array", + "items": { + "type": "object" + } + }, + "bookmark": { + "description": "If pagination in use, this should be provided.", + "oneOf": [ + { + "type": "string" + }, + { + "type": "integer" + } + ] + }, + "hasNextPage": { + "description": "If pagination in use, this will determine if there is another page to fetch.", + "type": "boolean" + } + } + }, "rowOutput": { "type": "object", "properties": { "data": { "description": "The row to be created/updated, based on the table schema.", "type": "object", - "properties": { - "_id": { - "description": "The ID of the row.", - "type": "string" - }, - "tableId": { - "description": "The ID of the table this row comes from.", - "type": "string" - } - }, "additionalProperties": { "oneOf": [ { @@ -560,7 +570,21 @@ "type": "boolean" } ] - } + }, + "properties": { + "_id": { + "description": "The ID of the row.", + "type": "string" + }, + "tableId": { + "description": "The ID of the table this row comes from.", + "type": "string" + } + }, + "required": [ + "tableId", + "_id" + ] } }, "required": [ @@ -576,7 +600,7 @@ ], "properties": { "name": { - "description": "The name of the table", + "description": "The name of the table.", "type": "string" }, "primaryDisplay": { @@ -774,11 +798,12 @@ "type": "object", "required": [ "name", - "schema" + "schema", + "_id" ], "properties": { "name": { - "description": "The name of the table", + "description": "The name of the table.", "type": "string" }, "primaryDisplay": { @@ -965,6 +990,10 @@ } ] } + }, + "_id": { + "description": "The ID of the table.", + "type": "string" } } } @@ -973,7 +1002,7 @@ "data" ] }, - "query": { + "executeQuery": { "description": "The query body must contain the required parameters for the query, this depends on query type, setup and bindings.", "type": "object", "additionalProperties": { @@ -996,6 +1025,97 @@ ] } }, + "executeQueryOutput": { + "type": "object", + "properties": { + "data": { + "description": "The data response from the query.", + "type": "array", + "items": { + "type": "object" + } + }, + "extra": { + "description": "Extra information that is not part of the main data, e.g. headers.", + "type": "object", + "properties": { + "headers": { + "description": "If carrying out a REST request, this will contain the response headers.", + "type": "object" + }, + "raw": { + "description": "The raw query response, as a string.", + "type": "string" + } + } + }, + "info": { + "description": "Extra info from the query in a key-value map, like response times.", + "type": "object" + }, + "pagination": { + "description": "If pagination is supported, this will contain the bookmark/anchor information for it.", + "type": "object" + } + }, + "required": [ + "data" + ] + }, + "query": { + "type": "object", + "properties": { + "_id": { + "description": "The ID of the query.", + "type": "string" + }, + "datasourceId": { + "description": "The ID of the data source the query belongs to.", + "type": "string" + }, + "parameters": { + "description": "The bindings which are required to perform this query.", + "type": "array", + "items": { + "type": "string" + } + }, + "fields": { + "description": "The fields that are used to perform this query, e.g. the sql statement", + "type": "object" + }, + "queryVerb": { + "description": "The verb that describes this query.", + "enum": [ + "create", + "read", + "update", + "delete" + ] + }, + "name": { + "description": "The name of the query.", + "type": "string" + }, + "schema": { + "description": "The schema of the data returned when the query is executed.", + "type": "object" + }, + "transformer": { + "description": "The JavaScript transformer function, applied after the query responds with data.", + "type": "string" + }, + "readable": { + "description": "Whether the query has readable data.", + "type": "boolean" + } + }, + "required": [ + "name", + "schema", + "_id" + ] + }, "user": { "type": "object", "properties": { @@ -1120,11 +1240,16 @@ "type": "string", "description": "A map of app ID (production app ID, minus the _dev component) to a role ID, e.g. ADMIN." } + }, + "_id": { + "description": "The ID of the user.", + "type": "string" } }, "required": [ "email", - "roles" + "roles", + "_id" ] } }, @@ -1343,7 +1468,10 @@ "/queries/{queryId}": { "post": { "summary": "Execute a query", - "description": "Queries which have been created within a Budibase app can be executed using this, - queries", + "description": "Queries which have been created within a Budibase app can be executed using this,", + "tags": [ + "queries" + ], "parameters": [ { "$ref": "#/components/parameters/queryId" @@ -1352,41 +1480,23 @@ "$ref": "#/components/parameters/appId" } ], + "requestBody": { + "required": true, + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/executeQuery" + } + } + } + }, "responses": { "200": { "description": "Returns the result of the query execution.", "content": { "application/json": { "schema": { - "type": "object", - "properties": { - "data": { - "type": "array", - "description": "The data retrieved from the query.", - "items": { - "type": "object", - "description": "The structure of the returned data will be an object, if it is just a string then this will be an object containing \"value\"." - } - }, - "pagination": { - "type": "object", - "description": "For supported query types this returns pagination information.", - "properties": { - "cursor": { - "type": "string", - "description": "The pagination cursor location." - } - } - }, - "raw": { - "type": "string", - "description": "The raw query response." - }, - "headers": { - "type": "object", - "description": "For REST queries the headers in the response will be returned here." - } - } + "$ref": "#/components/schemas/executeQueryOutput" }, "examples": { "REST": { @@ -1759,34 +1869,7 @@ "content": { "application/json": { "schema": { - "type": "object", - "required": [ - "data" - ], - "properties": { - "data": { - "description": "An array of rows, these will each contain an _id field which can be used to update or delete them.", - "type": "array", - "items": { - "type": "object" - } - }, - "bookmark": { - "oneOf": [ - { - "type": "string" - }, - { - "type": "integer" - } - ], - "description": "If pagination in use, this should be provided." - }, - "hasNextPage": { - "description": "If pagination in use, this will determine if there is another page to fetch.", - "type": "boolean" - } - } + "$ref": "#/components/schemas/searchOutput" }, "examples": { "search": { diff --git a/packages/server/specs/openapi.yaml b/packages/server/specs/openapi.yaml index 1ccd6393ee..2d39624aa1 100644 --- a/packages/server/specs/openapi.yaml +++ b/packages/server/specs/openapi.yaml @@ -314,6 +314,9 @@ components: url: description: The URL by which the app is accessed, this must be URL encoded. type: string + _id: + description: The ID of the app. + type: string status: description: The status of the app, stating it if is the development or published version. @@ -339,29 +342,19 @@ components: lockedBy: description: The user this app is currently being built by. type: object - appId: - description: The ID of the app. - type: string required: + - _id - name - url - status - createdAt - updatedAt - version - - appId required: - data row: description: The row to be created/updated, based on the table schema. type: object - properties: - _id: - description: The ID of the row. - type: string - tableId: - description: The ID of the table this row comes from. - type: string additionalProperties: oneOf: - type: string @@ -369,19 +362,32 @@ components: - type: integer - type: array - type: boolean + searchOutput: + type: object + required: + - data + properties: + data: + description: An array of rows, these will each contain an _id field which can be + used to update or delete them. + type: array + items: + type: object + bookmark: + description: If pagination in use, this should be provided. + oneOf: + - type: string + - type: integer + hasNextPage: + description: If pagination in use, this will determine if there is another page + to fetch. + type: boolean rowOutput: type: object properties: data: description: The row to be created/updated, based on the table schema. type: object - properties: - _id: - description: The ID of the row. - type: string - tableId: - description: The ID of the table this row comes from. - type: string additionalProperties: oneOf: - type: string @@ -389,6 +395,16 @@ components: - type: integer - type: array - type: boolean + properties: + _id: + description: The ID of the row. + type: string + tableId: + description: The ID of the table this row comes from. + type: string + required: + - tableId + - _id required: - data table: @@ -399,7 +415,7 @@ components: - schema properties: name: - description: The name of the table + description: The name of the table. type: string primaryDisplay: type: string @@ -558,9 +574,10 @@ components: required: - name - schema + - _id properties: name: - description: The name of the table + description: The name of the table. type: string primaryDisplay: type: string @@ -710,9 +727,12 @@ components: autocolumn: type: boolean description: Defines whether the column is automatically generated. + _id: + description: The ID of the table. + type: string required: - data - query: + executeQuery: description: The query body must contain the required parameters for the query, this depends on query type, setup and bindings. type: object @@ -723,6 +743,76 @@ components: - type: integer - type: array - type: boolean + executeQueryOutput: + type: object + properties: + data: + description: The data response from the query. + type: array + items: + type: object + extra: + description: Extra information that is not part of the main data, e.g. headers. + type: object + properties: + headers: + description: If carrying out a REST request, this will contain the response + headers. + type: object + raw: + description: The raw query response, as a string. + type: string + info: + description: Extra info from the query in a key-value map, like response times. + type: object + pagination: + description: If pagination is supported, this will contain the bookmark/anchor + information for it. + type: object + required: + - data + query: + type: object + properties: + _id: + description: The ID of the query. + type: string + datasourceId: + description: The ID of the data source the query belongs to. + type: string + parameters: + description: The bindings which are required to perform this query. + type: array + items: + type: string + fields: + description: The fields that are used to perform this query, e.g. the sql + statement + type: object + queryVerb: + description: The verb that describes this query. + enum: + - create + - read + - update + - delete + name: + description: The name of the query. + type: string + schema: + description: The schema of the data returned when the query is executed. + type: object + transformer: + description: The JavaScript transformer function, applied after the query + responds with data. + type: string + readable: + description: Whether the query has readable data. + type: boolean + required: + - name + - schema + - _id user: type: object properties: @@ -827,9 +917,13 @@ components: type: string description: A map of app ID (production app ID, minus the _dev component) to a role ID, e.g. ADMIN. + _id: + description: The ID of the user. + type: string required: - email - roles + - _id required: - data nameSearch: @@ -959,38 +1053,25 @@ paths: post: summary: Execute a query description: Queries which have been created within a Budibase app can be - executed using this, - queries + executed using this, + tags: + - queries parameters: - $ref: "#/components/parameters/queryId" - $ref: "#/components/parameters/appId" + requestBody: + required: true + content: + application/json: + schema: + $ref: "#/components/schemas/executeQuery" responses: "200": description: Returns the result of the query execution. content: application/json: schema: - type: object - properties: - data: - type: array - description: The data retrieved from the query. - items: - type: object - description: The structure of the returned data will be an object, if it is just - a string then this will be an object containing "value". - pagination: - type: object - description: For supported query types this returns pagination information. - properties: - cursor: - type: string - description: The pagination cursor location. - raw: - type: string - description: The raw query response. - headers: - type: object - description: For REST queries the headers in the response will be returned here. + $ref: "#/components/schemas/executeQueryOutput" examples: REST: $ref: "#/components/examples/restResponse" @@ -1233,25 +1314,7 @@ paths: content: application/json: schema: - type: object - required: - - data - properties: - data: - description: An array of rows, these will each contain an _id field which can be - used to update or delete them. - type: array - items: - type: object - bookmark: - oneOf: - - type: string - - type: integer - description: If pagination in use, this should be provided. - hasNextPage: - description: If pagination in use, this will determine if there is another page - to fetch. - type: boolean + $ref: "#/components/schemas/searchOutput" examples: search: $ref: "#/components/examples/rows" diff --git a/packages/server/specs/resources/application.js b/packages/server/specs/resources/application.js index b6c8fde5a5..e7688cab28 100644 --- a/packages/server/specs/resources/application.js +++ b/packages/server/specs/resources/application.js @@ -29,9 +29,13 @@ const base = { const applicationSchema = object(base, { required: ["name", "url"] }) -const applicationSchemaOutput = object( +const applicationOutputSchema = object( { ...base, + _id: { + description: "The ID of the app.", + type: "string", + }, status: { description: "The status of the app, stating it if is the development or published version.", @@ -62,20 +66,16 @@ const applicationSchemaOutput = object( description: "The user this app is currently being built by.", type: "object", }, - appId: { - description: "The ID of the app.", - type: "string", - }, }, { required: [ + "_id", "name", "url", "status", "createdAt", "updatedAt", "version", - "appId", ], } ) @@ -96,6 +96,6 @@ module.exports = new Resource() .setSchemas({ application: applicationSchema, applicationOutput: object({ - data: applicationSchemaOutput, + data: applicationOutputSchema, }), }) diff --git a/packages/server/specs/resources/query.js b/packages/server/specs/resources/query.js index 8b14cf5e8b..fa1f59b094 100644 --- a/packages/server/specs/resources/query.js +++ b/packages/server/specs/resources/query.js @@ -1,4 +1,6 @@ const Resource = require("./utils/Resource") +const { object } = require("./utils") +const { BaseQueryVerbs } = require("../../src/constants") const query = { _id: "query_datasource_plus_4d8be0c506b9465daf4bf84d890fdab6_454854487c574d45bc4029b1e153219e", @@ -73,7 +75,55 @@ const sqlResponse = { }, } -const querySchema = { +const querySchema = object( + { + _id: { + description: "The ID of the query.", + type: "string", + }, + datasourceId: { + description: "The ID of the data source the query belongs to.", + type: "string", + }, + parameters: { + description: "The bindings which are required to perform this query.", + type: "array", + items: { + type: "string", + }, + }, + fields: { + description: + "The fields that are used to perform this query, e.g. the sql statement", + type: "object", + }, + queryVerb: { + description: "The verb that describes this query.", + enum: Object.values(BaseQueryVerbs), + }, + name: { + description: "The name of the query.", + type: "string", + }, + schema: { + description: + "The schema of the data returned when the query is executed.", + type: "object", + }, + transformer: { + description: + "The JavaScript transformer function, applied after the query responds with data.", + type: "string", + }, + readable: { + description: "Whether the query has readable data.", + type: "boolean", + }, + }, + { required: ["name", "schema", "_id"] } +) + +const executeQuerySchema = { description: "The query body must contain the required parameters for the query, this depends on query type, setup and bindings.", type: "object", @@ -88,6 +138,45 @@ const querySchema = { }, } +const executeQueryOutputSchema = object( + { + data: { + description: "The data response from the query.", + type: "array", + items: { + type: "object", + }, + }, + extra: { + description: + "Extra information that is not part of the main data, e.g. headers.", + type: "object", + properties: { + headers: { + description: + "If carrying out a REST request, this will contain the response headers.", + type: "object", + }, + raw: { + description: "The raw query response, as a string.", + type: "string", + }, + }, + }, + info: { + description: + "Extra info from the query in a key-value map, like response times.", + type: "object", + }, + pagination: { + description: + "If pagination is supported, this will contain the bookmark/anchor information for it.", + type: "object", + }, + }, + { required: ["data"] } +) + module.exports = new Resource() .setExamples({ query: { @@ -104,5 +193,7 @@ module.exports = new Resource() sqlResponse, }) .setSchemas({ + executeQuery: executeQuerySchema, + executeQueryOutput: executeQueryOutputSchema, query: querySchema, }) diff --git a/packages/server/specs/resources/row.js b/packages/server/specs/resources/row.js index 14a94e20f0..2bd540af0e 100644 --- a/packages/server/specs/resources/row.js +++ b/packages/server/specs/resources/row.js @@ -47,7 +47,21 @@ const enrichedRow = { const rowSchema = { description: "The row to be created/updated, based on the table schema.", type: "object", + additionalProperties: { + oneOf: [ + { type: "string" }, + { type: "object" }, + { type: "integer" }, + { type: "array" }, + { type: "boolean" }, + ], + }, +} + +const rowOutputSchema = { + ...rowSchema, properties: { + ...rowSchema.properties, _id: { description: "The ID of the row.", type: "string", @@ -57,14 +71,30 @@ const rowSchema = { type: "string", }, }, - additionalProperties: { - oneOf: [ - { type: "string" }, - { type: "object" }, - { type: "integer" }, - { type: "array" }, - { type: "boolean" }, - ], + required: ["tableId", "_id"], +} + +const searchOutputSchema = { + type: "object", + required: ["data"], + properties: { + data: { + description: + "An array of rows, these will each contain an _id field which can be used to update or delete them.", + type: "array", + items: { + type: "object", + }, + }, + bookmark: { + description: "If pagination in use, this should be provided.", + oneOf: [{ type: "string" }, { type: "integer" }], + }, + hasNextPage: { + description: + "If pagination in use, this will determine if there is another page to fetch.", + type: "boolean", + }, }, } @@ -93,7 +123,8 @@ module.exports = new Resource() }) .setSchemas({ row: rowSchema, + searchOutput: searchOutputSchema, rowOutput: object({ - data: rowSchema, + data: rowOutputSchema, }), }) diff --git a/packages/server/specs/resources/table.js b/packages/server/specs/resources/table.js index 71195a851f..03d07530ee 100644 --- a/packages/server/specs/resources/table.js +++ b/packages/server/specs/resources/table.js @@ -66,7 +66,7 @@ const tableSchema = { required: ["name", "schema"], properties: { name: { - description: "The name of the table", + description: "The name of the table.", type: "string", }, primaryDisplay: { @@ -158,6 +158,18 @@ const tableSchema = { }, } +const tableOutputSchema = { + ...tableSchema, + properties: { + ...tableSchema.properties, + _id: { + description: "The ID of the table.", + type: "string", + }, + }, + required: [...tableSchema.required, "_id"], +} + module.exports = new Resource() .setExamples({ table: { @@ -174,6 +186,6 @@ module.exports = new Resource() .setSchemas({ table: tableSchema, tableOutput: object({ - data: tableSchema, + data: tableOutputSchema, }), }) diff --git a/packages/server/specs/resources/user.js b/packages/server/specs/resources/user.js index 578d53fdf5..d1b539c44c 100644 --- a/packages/server/specs/resources/user.js +++ b/packages/server/specs/resources/user.js @@ -93,6 +93,18 @@ const userSchema = object( { required: ["email", "roles"] } ) +const userOutputSchema = { + ...userSchema, + properties: { + ...userSchema.properties, + _id: { + description: "The ID of the user.", + type: "string", + }, + }, + required: [...userSchema.required, "_id"], +} + module.exports = new Resource() .setExamples({ user: { @@ -109,6 +121,6 @@ module.exports = new Resource() .setSchemas({ user: userSchema, userOutput: object({ - data: userSchema, + data: userOutputSchema, }), }) diff --git a/packages/server/src/api/controllers/public/applications.ts b/packages/server/src/api/controllers/public/applications.ts index fd107444fd..c756a6df7c 100644 --- a/packages/server/src/api/controllers/public/applications.ts +++ b/packages/server/src/api/controllers/public/applications.ts @@ -1,6 +1,6 @@ const { getAllApps } = require("@budibase/backend-core/db") const { updateAppId } = require("@budibase/backend-core/context") -import { search as stringSearch, wrapResponse } from "./utils" +import { search as stringSearch } from "./utils" import { default as controller } from "../application" import { Application } from "../../../definitions/common" @@ -19,18 +19,16 @@ async function setResponseApp(ctx: any) { ctx.params = { appId: ctx.body.appId } } await controller.fetchAppPackage(ctx) - // for now remove everything else - wrapResponse(ctx, (input: any) => input.application) } -export async function search(ctx: any) { +export async function search(ctx: any, next: any) { const { name } = ctx.request.body const apps = await getAllApps({ all: true }) ctx.body = stringSearch(apps, name) - wrapResponse(ctx) + await next() } -export async function create(ctx: any) { +export async function create(ctx: any, next: any) { if (!ctx.request.body || !ctx.request.body.useTemplate) { ctx.request.body = { useTemplate: false, @@ -39,21 +37,24 @@ export async function create(ctx: any) { } await controller.create(ctx) await setResponseApp(ctx) + await next() } -export async function read(ctx: any) { +export async function read(ctx: any, next: any) { updateAppId(ctx.params.appId) await setResponseApp(ctx) + await next() } -export async function update(ctx: any) { +export async function update(ctx: any, next: any) { ctx.request.body = fixAppID(ctx.request.body, ctx.params) updateAppId(ctx.params.appId) await controller.update(ctx) await setResponseApp(ctx) + await next() } -export async function destroy(ctx: any) { +export async function destroy(ctx: any, next: any) { updateAppId(ctx.params.appId) // get the app before deleting it await setResponseApp(ctx) @@ -61,6 +62,7 @@ export async function destroy(ctx: any) { await controller.delete(ctx) // overwrite the body again ctx.body = body + await next() } export default { diff --git a/packages/server/src/api/controllers/public/mapping/applications.ts b/packages/server/src/api/controllers/public/mapping/applications.ts new file mode 100644 index 0000000000..b7da0c31b9 --- /dev/null +++ b/packages/server/src/api/controllers/public/mapping/applications.ts @@ -0,0 +1,32 @@ +import { Application, ApplicationOutput } from "../types/components" + +function application(body: any): Application { + let app = body?.application ? body.application : body + return { + _id: app.appId, + name: app.name, + url: app.url, + status: app.status, + createdAt: app.createdAt, + updatedAt: app.updatedAt, + version: app.version, + tenantId: app.tenantId, + lockedBy: app.lockedBy, + } +} + +function mapApplication(ctx: any): ApplicationOutput { + return { + data: application(ctx.body), + } +} + +function mapApplications(ctx: any): { data: Application[] } { + const apps = ctx.body.map((body: any) => application(body)) + return { data: apps } +} + +export default { + mapApplication, + mapApplications, +} diff --git a/packages/server/src/api/controllers/public/mapping/index.ts b/packages/server/src/api/controllers/public/mapping/index.ts new file mode 100644 index 0000000000..0cdcfbbe4b --- /dev/null +++ b/packages/server/src/api/controllers/public/mapping/index.ts @@ -0,0 +1,13 @@ +import tables from "./tables" +import applications from "./applications" +import users from "./users" +import rows from "./rows" +import queries from "./queries" + +export default { + ...tables, + ...applications, + ...users, + ...rows, + ...queries, +} diff --git a/packages/server/src/api/controllers/public/mapping/queries.ts b/packages/server/src/api/controllers/public/mapping/queries.ts new file mode 100644 index 0000000000..024623058b --- /dev/null +++ b/packages/server/src/api/controllers/public/mapping/queries.ts @@ -0,0 +1,37 @@ +import { Query, ExecuteQueryOutput } from "../types/components" + +function query(body: any): Query { + return { + _id: body._id, + datasourceId: body.datasourceId, + parameters: body.parameters, + fields: body.fields, + queryVerb: body.queryVerb, + name: body.name, + schema: body.schema, + transformer: body.transformer, + readable: body.readable, + } +} + +function mapQueries(ctx: any): { data: Query[] } { + const queries = ctx.body.map((body: any) => query(body)) + return { + data: queries, + } +} + +function mapQueryExecution(ctx: any): ExecuteQueryOutput { + // very little we can map here, structure mostly unknown + return { + data: ctx.body.data, + pagination: ctx.body.pagination, + extra: ctx.body.extra, + info: ctx.body.info, + } +} + +export default { + mapQueries, + mapQueryExecution, +} diff --git a/packages/server/src/api/controllers/public/mapping/rows.ts b/packages/server/src/api/controllers/public/mapping/rows.ts new file mode 100644 index 0000000000..7dc739999b --- /dev/null +++ b/packages/server/src/api/controllers/public/mapping/rows.ts @@ -0,0 +1,31 @@ +import { Row, RowSearch, RowOutput } from "../types/components" + +function row(body: any): Row { + delete body._rev + // have to input everything, since structure unknown + return { + ...body, + _id: body._id, + tableId: body.tableId, + } +} + +function mapRowSearch(ctx: any): RowSearch { + const rows = ctx.body.rows.map((body: any) => row(body)) + return { + data: rows, + hasNextPage: ctx.body.hasNextPage, + bookmark: ctx.body.bookmark, + } +} + +function mapRow(ctx: any): RowOutput { + return { + data: row(ctx.body), + } +} + +export default { + mapRowSearch, + mapRow, +} diff --git a/packages/server/src/api/controllers/public/mapping/tables.ts b/packages/server/src/api/controllers/public/mapping/tables.ts new file mode 100644 index 0000000000..d4c329e767 --- /dev/null +++ b/packages/server/src/api/controllers/public/mapping/tables.ts @@ -0,0 +1,26 @@ +import { Table, TableOutput } from "../types/components" + +function table(body: any): Table { + return { + _id: body._id, + name: body.name, + schema: body.schema, + primaryDisplay: body.primaryDisplay, + } +} + +function mapTable(ctx: any): TableOutput { + return { + data: table(ctx.body), + } +} + +function mapTables(ctx: any): { data: Table[] } { + const tables = ctx.body.map((body: any) => table(body)) + return { data: tables } +} + +export default { + mapTable, + mapTables, +} diff --git a/packages/server/src/api/controllers/public/mapping/users.ts b/packages/server/src/api/controllers/public/mapping/users.ts new file mode 100644 index 0000000000..82ec7a78ef --- /dev/null +++ b/packages/server/src/api/controllers/public/mapping/users.ts @@ -0,0 +1,32 @@ +import { User, UserOutput } from "../types/components" + +function user(body: any): User { + return { + _id: body._id, + email: body.email, + password: body.password, + status: body.status, + firstName: body.firstName, + lastName: body.lastName, + forceResetPassword: body.forceResetPassword, + builder: body.builder, + admin: body.admin, + roles: body.roles, + } +} + +function mapUser(ctx: any): UserOutput { + return { + data: user(ctx.body), + } +} + +function mapUsers(ctx: any): { data: User[] } { + const users = ctx.body.map((body: any) => user(body)) + return { data: users } +} + +export default { + mapUser, + mapUsers, +} diff --git a/packages/server/src/api/controllers/public/queries.ts b/packages/server/src/api/controllers/public/queries.ts index bc12fe49c9..efef60594b 100644 --- a/packages/server/src/api/controllers/public/queries.ts +++ b/packages/server/src/api/controllers/public/queries.ts @@ -1,16 +1,17 @@ -import { search as stringSearch, wrapResponse } from "./utils" +import { search as stringSearch } from "./utils" import { default as queryController } from "../query" -export async function search(ctx: any) { +export async function search(ctx: any, next: any) { await queryController.fetch(ctx) const { name } = ctx.request.body ctx.body = stringSearch(ctx.body, name) - wrapResponse(ctx) + await next() } -export async function execute(ctx: any) { +export async function execute(ctx: any, next: any) { + // don't wrap this, already returns "data" await queryController.executeV2(ctx) - wrapResponse(ctx) + await next() } export default { diff --git a/packages/server/src/api/controllers/public/rows.ts b/packages/server/src/api/controllers/public/rows.ts index d5c1f75533..e73bcf9b49 100644 --- a/packages/server/src/api/controllers/public/rows.ts +++ b/packages/server/src/api/controllers/public/rows.ts @@ -1,5 +1,5 @@ import { default as rowController } from "../row" -import { addRev, wrapResponse } from "./utils" +import { addRev } from "./utils" import { Row } from "../../../definitions/common" // makes sure that the user doesn't need to pass in the type, tableId or _id params for @@ -20,7 +20,7 @@ function fixRow(row: Row, params: any) { return row } -export async function search(ctx: any) { +export async function search(ctx: any, next: any) { let { sort, paginate, bookmark, limit, query } = ctx.request.body // update the body to the correct format of the internal search if (!sort) { @@ -36,28 +36,27 @@ export async function search(ctx: any) { query, } await rowController.search(ctx) - ctx.body.data = ctx.body.rows - delete ctx.body.rows + await next() } -export async function create(ctx: any) { +export async function create(ctx: any, next: any) { ctx.request.body = fixRow(ctx.request.body, ctx.params) await rowController.save(ctx) - wrapResponse(ctx) + await next() } -export async function read(ctx: any) { +export async function read(ctx: any, next: any) { await rowController.fetchEnrichedRow(ctx) - wrapResponse(ctx) + await next() } -export async function update(ctx: any) { +export async function update(ctx: any, next: any) { ctx.request.body = await addRev(fixRow(ctx.request.body, ctx.params.tableId)) await rowController.save(ctx) - wrapResponse(ctx) + await next() } -export async function destroy(ctx: any) { +export async function destroy(ctx: any, next: any) { // set the body as expected, with the _id and _rev fields ctx.request.body = await addRev( fixRow({ _id: ctx.params.rowId }, ctx.params.tableId) @@ -65,7 +64,8 @@ export async function destroy(ctx: any) { await rowController.destroy(ctx) // destroy controller doesn't currently return the row as the body, need to adjust this // in the public API to be correct - wrapResponse(ctx) + ctx.body = ctx.row + await next() } export default { diff --git a/packages/server/src/api/controllers/public/tables.ts b/packages/server/src/api/controllers/public/tables.ts index 561e62e7d9..3ee94bddb3 100644 --- a/packages/server/src/api/controllers/public/tables.ts +++ b/packages/server/src/api/controllers/public/tables.ts @@ -1,4 +1,4 @@ -import { search as stringSearch, addRev, wrapResponse } from "./utils" +import { search as stringSearch, addRev } from "./utils" import { default as controller } from "../table" import { Table } from "../../../definitions/common" @@ -9,39 +9,42 @@ function fixTable(table: Table, params: any) { if (params.tableId) { table._id = params.tableId } + if (!table.type) { + table.type = "table" + } return table } -export async function search(ctx: any) { +export async function search(ctx: any, next: any) { const { name } = ctx.request.body await controller.fetch(ctx) ctx.body = stringSearch(ctx.body, name) - wrapResponse(ctx) + await next() } -export async function create(ctx: any) { +export async function create(ctx: any, next: any) { await controller.save(ctx) - wrapResponse(ctx) + await next() } -export async function read(ctx: any) { +export async function read(ctx: any, next: any) { await controller.find(ctx) - wrapResponse(ctx) + await next() } -export async function update(ctx: any) { +export async function update(ctx: any, next: any) { ctx.request.body = await addRev( fixTable(ctx.request.body, ctx.params), ctx.params.tableId ) await controller.save(ctx) - wrapResponse(ctx) + await next() } -export async function destroy(ctx: any) { +export async function destroy(ctx: any, next: any) { await controller.destroy(ctx) ctx.body = ctx.table - wrapResponse(ctx) + await next() } export default { diff --git a/packages/server/src/api/controllers/public/types/components.ts b/packages/server/src/api/controllers/public/types/components.ts new file mode 100644 index 0000000000..a6608aae71 --- /dev/null +++ b/packages/server/src/api/controllers/public/types/components.ts @@ -0,0 +1,17 @@ +import { components } from "./openapi" + +export type Query = components["schemas"]["query"] +export type ExecuteQueryOutput = components["schemas"]["executeQueryOutput"] + +export type Application = components["schemas"]["applicationOutput"]["data"] +export type ApplicationOutput = components["schemas"]["applicationOutput"] + +export type Table = components["schemas"]["tableOutput"]["data"] +export type TableOutput = components["schemas"]["tableOutput"] + +export type Row = components["schemas"]["rowOutput"]["data"] +export type RowOutput = components["schemas"]["rowOutput"] +export type RowSearch = components["schemas"]["searchOutput"] + +export type User = components["schemas"]["userOutput"]["data"] +export type UserOutput = components["schemas"]["userOutput"] diff --git a/packages/server/src/api/controllers/public/types/openapi.ts b/packages/server/src/api/controllers/public/types/openapi.ts new file mode 100644 index 0000000000..89537d828e --- /dev/null +++ b/packages/server/src/api/controllers/public/types/openapi.ts @@ -0,0 +1,966 @@ +/** + * This file was auto-generated by openapi-typescript. + * Do not make direct changes to the file. + */ + +export interface paths { + "/applications": { + post: { + parameters: { + header: { + /** The ID of the app which this request is targeting. */ + "x-budibase-app-id": components["parameters"]["appId"] + } + } + responses: { + /** Returns the created application. */ + 200: { + content: { + "application/json": components["schemas"]["applicationOutput"] + } + } + } + requestBody: { + content: { + "application/json": components["schemas"]["application"] + } + } + } + } + "/applications/{appId}": { + get: { + parameters: { + path: { + /** The ID of the app which this request is targeting. */ + appId: components["parameters"]["appIdUrl"] + } + } + responses: { + /** Returns the retrieved application. */ + 200: { + content: { + "application/json": components["schemas"]["applicationOutput"] + } + } + } + } + put: { + parameters: { + path: { + /** The ID of the app which this request is targeting. */ + appId: components["parameters"]["appIdUrl"] + } + } + responses: { + /** Returns the updated application. */ + 200: { + content: { + "application/json": components["schemas"]["applicationOutput"] + } + } + } + requestBody: { + content: { + "application/json": components["schemas"]["application"] + } + } + } + delete: { + parameters: { + path: { + /** The ID of the app which this request is targeting. */ + appId: components["parameters"]["appIdUrl"] + } + } + responses: { + /** Returns the deleted application. */ + 200: { + content: { + "application/json": components["schemas"]["applicationOutput"] + } + } + } + } + } + "/applications/search": { + /** Based on application properties (currently only name) search for applications. */ + post: { + parameters: { + header: { + /** The ID of the app which this request is targeting. */ + "x-budibase-app-id": components["parameters"]["appId"] + } + } + responses: { + /** Returns the applications that were found based on the search parameters. */ + 200: { + content: { + "application/json": { + data: components["schemas"]["application"][] + } + } + } + } + requestBody: { + content: { + "application/json": components["schemas"]["nameSearch"] + } + } + } + } + "/queries/{queryId}": { + /** Queries which have been created within a Budibase app can be executed using this, */ + post: { + parameters: { + path: { + /** The ID of the query which this request is targeting. */ + queryId: components["parameters"]["queryId"] + } + header: { + /** The ID of the app which this request is targeting. */ + "x-budibase-app-id": components["parameters"]["appId"] + } + } + responses: { + /** Returns the result of the query execution. */ + 200: { + content: { + "application/json": components["schemas"]["executeQueryOutput"] + } + } + } + requestBody: { + content: { + "application/json": components["schemas"]["executeQuery"] + } + } + } + } + "/queries/search": { + /** Based on query properties (currently only name) search for queries. */ + post: { + parameters: { + header: { + /** The ID of the app which this request is targeting. */ + "x-budibase-app-id": components["parameters"]["appId"] + } + } + responses: { + /** Returns the queries found based on the search parameters. */ + 200: { + content: { + "application/json": { + data: components["schemas"]["query"][] + } + } + } + } + requestBody: { + content: { + "application/json": components["schemas"]["nameSearch"] + } + } + } + } + "/tables/{tableId}/rows": { + /** Creates a row within the specified table. */ + post: { + parameters: { + path: { + /** The ID of the table which this request is targeting. */ + tableId: components["parameters"]["tableId"] + } + header: { + /** The ID of the app which this request is targeting. */ + "x-budibase-app-id": components["parameters"]["appId"] + } + } + responses: { + /** Returns the created row, including the ID which has been generated for it. This can be found in the Budibase portal, viewed under the developer information. */ + 200: { + content: { + "application/json": components["schemas"]["rowOutput"] + } + } + } + requestBody: { + content: { + "application/json": components["schemas"]["row"] + } + } + } + } + "/tables/{tableId}/rows/{rowId}": { + /** This gets a single row, it will be enriched with the full related rows, rather than the squashed "primaryDisplay" format returned by the search endpoint. */ + get: { + parameters: { + path: { + /** The ID of the table which this request is targeting. */ + tableId: components["parameters"]["tableId"] + /** The ID of the row which this request is targeting. */ + rowId: components["parameters"]["rowId"] + } + header: { + /** The ID of the app which this request is targeting. */ + "x-budibase-app-id": components["parameters"]["appId"] + } + } + responses: { + /** Returns the retrieved row. */ + 200: { + content: { + "application/json": components["schemas"]["rowOutput"] + } + } + } + } + /** Updates a row within the specified table. */ + put: { + parameters: { + path: { + /** The ID of the table which this request is targeting. */ + tableId: components["parameters"]["tableId"] + /** The ID of the row which this request is targeting. */ + rowId: components["parameters"]["rowId"] + } + header: { + /** The ID of the app which this request is targeting. */ + "x-budibase-app-id": components["parameters"]["appId"] + } + } + responses: { + /** Returns the created row, including the ID which has been generated for it. */ + 200: { + content: { + "application/json": components["schemas"]["rowOutput"] + } + } + } + requestBody: { + content: { + "application/json": components["schemas"]["row"] + } + } + } + /** Deletes a row within the specified table. */ + delete: { + parameters: { + path: { + /** The ID of the table which this request is targeting. */ + tableId: components["parameters"]["tableId"] + /** The ID of the row which this request is targeting. */ + rowId: components["parameters"]["rowId"] + } + header: { + /** The ID of the app which this request is targeting. */ + "x-budibase-app-id": components["parameters"]["appId"] + } + } + responses: { + /** Returns the deleted row, including the ID which has been generated for it. */ + 200: { + content: { + "application/json": components["schemas"]["rowOutput"] + } + } + } + } + } + "/tables/{tableId}/rows/search": { + post: { + parameters: { + path: { + /** The ID of the table which this request is targeting. */ + tableId: components["parameters"]["tableId"] + } + header: { + /** The ID of the app which this request is targeting. */ + "x-budibase-app-id": components["parameters"]["appId"] + } + } + responses: { + /** The response will contain an array of rows that match the search parameters. */ + 200: { + content: { + "application/json": components["schemas"]["searchOutput"] + } + } + } + requestBody: { + content: { + "application/json": { + query: { + /** + * @description A map of field name to the string to search for, this will look for rows that have a value starting with the string value. + * @example [object Object] + */ + string?: { [key: string]: string } + /** @description A fuzzy search, only supported by internal tables. */ + fuzzy?: { [key: string]: unknown } + /** + * @description Searches within a range, the format of this must be columnName -> [low, high]. + * @example [object Object] + */ + range?: { [key: string]: unknown } + /** @description Searches for rows that have a column value that is exactly the value set. */ + equal?: { [key: string]: unknown } + /** @description Searches for any row which does not contain the specified column value. */ + notEqual?: { [key: string]: unknown } + /** + * @description Searches for rows which do not contain the specified column. The object should simply contain keys of the column names, these can map to any value. + * @example [object Object] + */ + empty?: { [key: string]: unknown } + /** @description Searches for rows which have the specified column. */ + notEmpty?: { [key: string]: unknown } + /** @description Searches for rows which have a column value that is any of the specified values. The format of this must be columnName -> [value1, value2]. */ + oneOf?: { [key: string]: unknown } + } + /** @description Enables pagination, by default this is disabled. */ + paginate?: boolean + /** @description If retrieving another page, the bookmark from the previous request must be supplied. */ + bookmark?: string | number + /** @description The maximum number of rows to return, useful when paginating, for internal tables this will be limited to 1000, for SQL tables it will be 5000. */ + limit?: number + /** @description A set of parameters describing the sort behaviour of the search. */ + sort?: { + /** + * @description The order of the sort, by default this is ascending. + * @enum {string} + */ + order?: "ascending" | "descending" + /** @description The name of the column by which the rows will be sorted. */ + column?: string + /** + * @description Defines whether the column should be treated as a string or as numbers when sorting. + * @enum {string} + */ + type?: "string" | "number" + } + } + } + } + } + } + "/tables": { + /** Create a table, this could be internal or external. */ + post: { + parameters: { + header: { + /** The ID of the app which this request is targeting. */ + "x-budibase-app-id": components["parameters"]["appId"] + } + } + responses: { + /** Returns the created table, including the ID which has been generated for it. This can be internal or external data sources. */ + 200: { + content: { + "application/json": components["schemas"]["tableOutput"] + } + } + } + requestBody: { + content: { + "application/json": components["schemas"]["table"] + } + } + } + } + "/tables/{tableId}": { + /** Lookup a table, this could be internal or external. */ + get: { + parameters: { + path: { + /** The ID of the table which this request is targeting. */ + tableId: components["parameters"]["tableId"] + } + header: { + /** The ID of the app which this request is targeting. */ + "x-budibase-app-id": components["parameters"]["appId"] + } + } + responses: { + /** Returns the retrieved table. */ + 200: { + content: { + "application/json": components["schemas"]["tableOutput"] + } + } + } + } + /** Update a table, this could be internal or external. */ + put: { + parameters: { + path: { + /** The ID of the table which this request is targeting. */ + tableId: components["parameters"]["tableId"] + } + header: { + /** The ID of the app which this request is targeting. */ + "x-budibase-app-id": components["parameters"]["appId"] + } + } + responses: { + /** Returns the updated table. */ + 200: { + content: { + "application/json": components["schemas"]["tableOutput"] + } + } + } + requestBody: { + content: { + "application/json": components["schemas"]["table"] + } + } + } + /** Delete a table, this could be internal or external. */ + delete: { + parameters: { + path: { + /** The ID of the table which this request is targeting. */ + tableId: components["parameters"]["tableId"] + } + header: { + /** The ID of the app which this request is targeting. */ + "x-budibase-app-id": components["parameters"]["appId"] + } + } + responses: { + /** Returns the deleted table. */ + 200: { + content: { + "application/json": components["schemas"]["tableOutput"] + } + } + } + } + } + "/tables/search": { + /** Based on table properties (currently only name) search for tables. This could be an internal or an external table. */ + post: { + parameters: { + header: { + /** The ID of the app which this request is targeting. */ + "x-budibase-app-id": components["parameters"]["appId"] + } + } + responses: { + /** Returns the found tables, based on the search parameters. */ + 200: { + content: { + "application/json": { + data: components["schemas"]["table"][] + } + } + } + } + requestBody: { + content: { + "application/json": components["schemas"]["nameSearch"] + } + } + } + } + "/users": { + post: { + responses: { + /** Returns the created user. */ + 200: { + content: { + "application/json": components["schemas"]["userOutput"] + } + } + } + requestBody: { + content: { + "application/json": components["schemas"]["user"] + } + } + } + } + "/users/{userId}": { + get: { + parameters: { + path: { + /** The ID of the user which this request is targeting. */ + userId: components["parameters"]["userId"] + } + } + responses: { + /** Returns the retrieved user. */ + 200: { + content: { + "application/json": components["schemas"]["userOutput"] + } + } + } + } + put: { + parameters: { + path: { + /** The ID of the user which this request is targeting. */ + userId: components["parameters"]["userId"] + } + } + responses: { + /** Returns the updated user. */ + 200: { + content: { + "application/json": components["schemas"]["userOutput"] + } + } + } + requestBody: { + content: { + "application/json": components["schemas"]["user"] + } + } + } + delete: { + parameters: { + path: { + /** The ID of the user which this request is targeting. */ + userId: components["parameters"]["userId"] + } + } + responses: { + /** Returns the deleted user. */ + 200: { + content: { + "application/json": components["schemas"]["userOutput"] + } + } + } + } + } + "/users/search": { + /** Based on user properties (currently only name) search for users. */ + post: { + responses: { + /** Returns the found users based on search parameters. */ + 200: { + content: { + "application/json": { + data: components["schemas"]["user"][] + } + } + } + } + requestBody: { + content: { + "application/json": components["schemas"]["nameSearch"] + } + } + } + } +} + +export interface components { + schemas: { + application: { + /** @description The name of the app. */ + name: string + /** @description The URL by which the app is accessed, this must be URL encoded. */ + url: string + } + applicationOutput: { + data: { + /** @description The name of the app. */ + name: string + /** @description The URL by which the app is accessed, this must be URL encoded. */ + url: string + /** @description The ID of the app. */ + _id: string + /** + * @description The status of the app, stating it if is the development or published version. + * @enum {string} + */ + status: "development" | "published" + /** @description States when the app was created, will be constant. Stored in ISO format. */ + createdAt: string + /** @description States the last time the app was updated - stored in ISO format. */ + updatedAt: string + /** @description States the version of the Budibase client this app is currently based on. */ + version: string + /** @description In a multi-tenant environment this will state the tenant this app is within. */ + tenantId?: string + /** @description The user this app is currently being built by. */ + lockedBy?: { [key: string]: unknown } + } + } + /** @description The row to be created/updated, based on the table schema. */ + row: { + [key: string]: + | string + | { [key: string]: unknown } + | number + | unknown[] + | boolean + } + searchOutput: { + /** @description An array of rows, these will each contain an _id field which can be used to update or delete them. */ + data: { [key: string]: unknown }[] + /** @description If pagination in use, this should be provided. */ + bookmark?: string | number + /** @description If pagination in use, this will determine if there is another page to fetch. */ + hasNextPage?: boolean + } + rowOutput: { + /** @description The row to be created/updated, based on the table schema. */ + data: { + /** @description The ID of the row. */ + _id: string + /** @description The ID of the table this row comes from. */ + tableId: string + } & { + [key: string]: + | string + | { [key: string]: unknown } + | number + | unknown[] + | boolean + } + } + /** @description The table to be created/updated. */ + table: { + /** @description The name of the table. */ + name: string + /** @description The name of the column which should be used in relationship tags when relating to this table. */ + primaryDisplay?: string + schema: { + [key: string]: + | { + /** + * @description A relationship column. + * @enum {string} + */ + type?: "link" + /** @description A constraint can be applied to the column which will be validated against when a row is saved. */ + constraints?: { + /** @enum {string} */ + type?: "string" | "number" | "object" | "boolean" + /** @description Defines whether the column is required or not. */ + presence?: boolean + } + /** @description The name of the column. */ + name?: string + /** @description Defines whether the column is automatically generated. */ + autocolumn?: boolean + /** @description The name of the column which a relationship column is related to in another table. */ + fieldName?: string + /** @description The ID of the table which a relationship column is related to. */ + tableId?: string + /** + * @description Defines the type of relationship that this column will be used for. + * @enum {string} + */ + relationshipType?: "one-to-many" | "many-to-one" | "many-to-many" + /** @description When using a SQL table that contains many to many relationships this defines the table the relationships are linked through. */ + through?: string + /** @description When using a SQL table that contains a one to many relationship this defines the foreign key. */ + foreignKey?: string + /** @description When using a SQL table that utilises a through table, this defines the primary key in the through table for this table. */ + throughFrom?: string + /** @description When using a SQL table that utilises a through table, this defines the primary key in the through table for the related table. */ + throughTo?: string + } + | { + /** + * @description A formula column. + * @enum {string} + */ + type?: "formula" + /** @description A constraint can be applied to the column which will be validated against when a row is saved. */ + constraints?: { + /** @enum {string} */ + type?: "string" | "number" | "object" | "boolean" + /** @description Defines whether the column is required or not. */ + presence?: boolean + } + /** @description The name of the column. */ + name?: string + /** @description Defines whether the column is automatically generated. */ + autocolumn?: boolean + /** @description Defines a Handlebars or JavaScript formula to use, note that Javascript formulas are expected to be provided in the base64 format. */ + formula?: string + /** + * @description Defines whether this is a static or dynamic formula. + * @enum {string} + */ + formulaType?: "static" | "dynamic" + } + | { + /** + * @description Defines the type of the column, most explain themselves, a link column is a relationship. + * @enum {string} + */ + type?: + | "string" + | "longform" + | "options" + | "number" + | "boolean" + | "array" + | "datetime" + | "attachment" + | "link" + | "formula" + | "auto" + | "json" + | "internal" + /** @description A constraint can be applied to the column which will be validated against when a row is saved. */ + constraints?: { + /** @enum {string} */ + type?: "string" | "number" | "object" | "boolean" + /** @description Defines whether the column is required or not. */ + presence?: boolean + } + /** @description The name of the column. */ + name?: string + /** @description Defines whether the column is automatically generated. */ + autocolumn?: boolean + } + } + } + tableOutput: { + /** @description The table to be created/updated. */ + data: { + /** @description The name of the table. */ + name: string + /** @description The name of the column which should be used in relationship tags when relating to this table. */ + primaryDisplay?: string + schema: { + [key: string]: + | { + /** + * @description A relationship column. + * @enum {string} + */ + type?: "link" + /** @description A constraint can be applied to the column which will be validated against when a row is saved. */ + constraints?: { + /** @enum {string} */ + type?: "string" | "number" | "object" | "boolean" + /** @description Defines whether the column is required or not. */ + presence?: boolean + } + /** @description The name of the column. */ + name?: string + /** @description Defines whether the column is automatically generated. */ + autocolumn?: boolean + /** @description The name of the column which a relationship column is related to in another table. */ + fieldName?: string + /** @description The ID of the table which a relationship column is related to. */ + tableId?: string + /** + * @description Defines the type of relationship that this column will be used for. + * @enum {string} + */ + relationshipType?: + | "one-to-many" + | "many-to-one" + | "many-to-many" + /** @description When using a SQL table that contains many to many relationships this defines the table the relationships are linked through. */ + through?: string + /** @description When using a SQL table that contains a one to many relationship this defines the foreign key. */ + foreignKey?: string + /** @description When using a SQL table that utilises a through table, this defines the primary key in the through table for this table. */ + throughFrom?: string + /** @description When using a SQL table that utilises a through table, this defines the primary key in the through table for the related table. */ + throughTo?: string + } + | { + /** + * @description A formula column. + * @enum {string} + */ + type?: "formula" + /** @description A constraint can be applied to the column which will be validated against when a row is saved. */ + constraints?: { + /** @enum {string} */ + type?: "string" | "number" | "object" | "boolean" + /** @description Defines whether the column is required or not. */ + presence?: boolean + } + /** @description The name of the column. */ + name?: string + /** @description Defines whether the column is automatically generated. */ + autocolumn?: boolean + /** @description Defines a Handlebars or JavaScript formula to use, note that Javascript formulas are expected to be provided in the base64 format. */ + formula?: string + /** + * @description Defines whether this is a static or dynamic formula. + * @enum {string} + */ + formulaType?: "static" | "dynamic" + } + | { + /** + * @description Defines the type of the column, most explain themselves, a link column is a relationship. + * @enum {string} + */ + type?: + | "string" + | "longform" + | "options" + | "number" + | "boolean" + | "array" + | "datetime" + | "attachment" + | "link" + | "formula" + | "auto" + | "json" + | "internal" + /** @description A constraint can be applied to the column which will be validated against when a row is saved. */ + constraints?: { + /** @enum {string} */ + type?: "string" | "number" | "object" | "boolean" + /** @description Defines whether the column is required or not. */ + presence?: boolean + } + /** @description The name of the column. */ + name?: string + /** @description Defines whether the column is automatically generated. */ + autocolumn?: boolean + } + } + /** @description The ID of the table. */ + _id: string + } + } + /** @description The query body must contain the required parameters for the query, this depends on query type, setup and bindings. */ + executeQuery: { + [key: string]: + | string + | { [key: string]: unknown } + | number + | unknown[] + | boolean + } + executeQueryOutput: { + /** @description The data response from the query. */ + data: { [key: string]: unknown }[] + /** @description Extra information that is not part of the main data, e.g. headers. */ + extra?: { + /** @description If carrying out a REST request, this will contain the response headers. */ + headers?: { [key: string]: unknown } + /** @description The raw query response, as a string. */ + raw?: string + } + /** @description Extra info from the query in a key-value map, like response times. */ + info?: { [key: string]: unknown } + /** @description If pagination is supported, this will contain the bookmark/anchor information for it. */ + pagination?: { [key: string]: unknown } + } + query: { + /** @description The ID of the query. */ + _id: string + /** @description The ID of the data source the query belongs to. */ + datasourceId?: string + /** @description The bindings which are required to perform this query. */ + parameters?: string[] + /** @description The fields that are used to perform this query, e.g. the sql statement */ + fields?: { [key: string]: unknown } + /** + * @description The verb that describes this query. + * @enum {undefined} + */ + queryVerb?: "create" | "read" | "update" | "delete" + /** @description The name of the query. */ + name: string + /** @description The schema of the data returned when the query is executed. */ + schema: { [key: string]: unknown } + /** @description The JavaScript transformer function, applied after the query responds with data. */ + transformer?: string + /** @description Whether the query has readable data. */ + readable?: boolean + } + user: { + /** @description The email address of the user, this must be unique. */ + email: string + /** @description The password of the user if using password based login - this will never be returned. This can be left out of subsequent requests (updates) and will be enriched back into the user structure. */ + password?: string + /** + * @description The status of the user, if they are active. + * @enum {string} + */ + status?: "active" + /** @description The first name of the user */ + firstName?: string + /** @description The last name of the user */ + lastName?: string + /** @description If set to true forces the user to reset their password on first login. */ + forceResetPassword?: boolean + /** @description Describes if the user is a builder user or not. */ + builder?: { + /** @description If set to true the user will be able to build any app in the system. */ + global?: boolean + } + /** @description Describes if the user is an admin user or not. */ + admin?: { + /** @description If set to true the user will be able to administrate the system. */ + global?: boolean + } + /** @description Contains the roles of the user per app (assuming they are not a builder user). */ + roles: { [key: string]: string } + } + userOutput: { + data: { + /** @description The email address of the user, this must be unique. */ + email: string + /** @description The password of the user if using password based login - this will never be returned. This can be left out of subsequent requests (updates) and will be enriched back into the user structure. */ + password?: string + /** + * @description The status of the user, if they are active. + * @enum {string} + */ + status?: "active" + /** @description The first name of the user */ + firstName?: string + /** @description The last name of the user */ + lastName?: string + /** @description If set to true forces the user to reset their password on first login. */ + forceResetPassword?: boolean + /** @description Describes if the user is a builder user or not. */ + builder?: { + /** @description If set to true the user will be able to build any app in the system. */ + global?: boolean + } + /** @description Describes if the user is an admin user or not. */ + admin?: { + /** @description If set to true the user will be able to administrate the system. */ + global?: boolean + } + /** @description Contains the roles of the user per app (assuming they are not a builder user). */ + roles: { [key: string]: string } + /** @description The ID of the user. */ + _id: string + } + } + nameSearch: { + /** @description The name to be used when searching - this will be used in a case insensitive starts with match. */ + name: string + } + } + parameters: { + /** @description The ID of the table which this request is targeting. */ + tableId: string + /** @description The ID of the row which this request is targeting. */ + rowId: string + /** @description The ID of the app which this request is targeting. */ + appId: string + /** @description The ID of the app which this request is targeting. */ + appIdUrl: string + /** @description The ID of the query which this request is targeting. */ + queryId: string + /** @description The ID of the user which this request is targeting. */ + userId: string + } +} + +export interface operations {} + +export interface external {} diff --git a/packages/server/src/api/controllers/public/users.ts b/packages/server/src/api/controllers/public/users.ts index 361636dfdc..f199dcb761 100644 --- a/packages/server/src/api/controllers/public/users.ts +++ b/packages/server/src/api/controllers/public/users.ts @@ -4,7 +4,7 @@ import { readGlobalUser, saveGlobalUser, } from "../../../utilities/workerRequests" -import { search as stringSearch, wrapResponse } from "./utils" +import { search as stringSearch } from "./utils" const { getProdAppID } = require("@budibase/backend-core/db") @@ -37,25 +37,25 @@ function getUser(ctx: any, userId?: string) { return readGlobalUser(ctx) } -export async function search(ctx: any) { +export async function search(ctx: any, next: any) { const { name } = ctx.request.body const users = await allGlobalUsers(ctx) ctx.body = stringSearch(users, name, "email") - wrapResponse(ctx) + await next() } -export async function create(ctx: any) { +export async function create(ctx: any, next: any) { const response = await saveGlobalUser(fixUser(ctx)) ctx.body = await getUser(ctx, response._id) - wrapResponse(ctx) + await next() } -export async function read(ctx: any) { +export async function read(ctx: any, next: any) { ctx.body = await readGlobalUser(ctx) - wrapResponse(ctx) + await next() } -export async function update(ctx: any) { +export async function update(ctx: any, next: any) { const user = await readGlobalUser(ctx) ctx.request.body = { ...ctx.request.body, @@ -63,14 +63,14 @@ export async function update(ctx: any) { } const response = await saveGlobalUser(fixUser(ctx)) ctx.body = await getUser(ctx, response._id) - wrapResponse(ctx) + await next() } -export async function destroy(ctx: any) { +export async function destroy(ctx: any, next: any) { const user = await getUser(ctx) await deleteGlobalUser(ctx) ctx.body = user - wrapResponse(ctx) + await next() } export default { diff --git a/packages/server/src/api/controllers/public/utils.ts b/packages/server/src/api/controllers/public/utils.ts index d9fae43caf..7bdd865aa4 100644 --- a/packages/server/src/api/controllers/public/utils.ts +++ b/packages/server/src/api/controllers/public/utils.ts @@ -36,11 +36,3 @@ export function search(docs: any[], value: any, key = "name") { } return filtered } - -export function wrapResponse(ctx: any, map?: (input: any) => object) { - let data = ctx.body - if (map) { - data = map(data) - } - ctx.body = { data } -} diff --git a/packages/server/src/api/routes/index.js b/packages/server/src/api/routes/index.js index ddda62e2f5..89186cdafd 100644 --- a/packages/server/src/api/routes/index.js +++ b/packages/server/src/api/routes/index.js @@ -58,5 +58,5 @@ exports.mainRoutes = [ migrationRoutes, ] -exports.staticRoutes = staticRoutes exports.publicRoutes = publicRoutes +exports.staticRoutes = staticRoutes diff --git a/packages/server/src/api/routes/public/index.ts b/packages/server/src/api/routes/public/index.ts index 719e6ee29d..7e48e1a6a7 100644 --- a/packages/server/src/api/routes/public/index.ts +++ b/packages/server/src/api/routes/public/index.ts @@ -7,6 +7,7 @@ import usage from "../../../middleware/usageQuota" import authorized from "../../../middleware/authorized" import { paramResource, paramSubResource } from "../../../middleware/resourceId" import { CtxFn } from "./utils/Endpoint" +import mapperMiddleware from "./middleware/mapper" const Router = require("@koa/router") const { PermissionLevels, @@ -19,7 +20,11 @@ const publicRouter = new Router({ prefix: PREFIX, }) -function addMiddleware(endpoints: any, middleware: CtxFn) { +function addMiddleware( + endpoints: any, + middleware: CtxFn, + opts: { output: boolean } = { output: false } +) { if (!endpoints) { return } @@ -27,7 +32,11 @@ function addMiddleware(endpoints: any, middleware: CtxFn) { endpoints = [endpoints] } for (let endpoint of endpoints) { - endpoint.addMiddleware(middleware) + if (opts?.output) { + endpoint.addOutputMiddleware(middleware) + } else { + endpoint.addMiddleware(middleware) + } } } @@ -48,11 +57,17 @@ function applyRoutes( const paramMiddleware = subResource ? paramSubResource(resource, subResource) : paramResource(resource) + // add the parameter capture middleware addMiddleware(endpoints.read, paramMiddleware) addMiddleware(endpoints.write, paramMiddleware) + // add the authorization middleware, using the correct perm type addMiddleware(endpoints.read, authorized(permType, PermissionLevels.READ)) addMiddleware(endpoints.write, authorized(permType, PermissionLevels.WRITE)) + // add the usage quota middleware addMiddleware(endpoints.write, usage) + // add the output mapper middleware + addMiddleware(endpoints.read, mapperMiddleware, { output: true }) + addMiddleware(endpoints.write, mapperMiddleware, { output: true }) addToRouter(endpoints.read) addToRouter(endpoints.write) } diff --git a/packages/server/src/api/routes/public/middleware/mapper.ts b/packages/server/src/api/routes/public/middleware/mapper.ts new file mode 100644 index 0000000000..fefcca1142 --- /dev/null +++ b/packages/server/src/api/routes/public/middleware/mapper.ts @@ -0,0 +1,81 @@ +import mapping from "../../../controllers/public/mapping" + +enum Resources { + APPLICATION = "applications", + TABLES = "tables", + ROWS = "rows", + USERS = "users", + QUERIES = "queries", + SEARCH = "search", +} + +function isSearch(ctx: any) { + return ctx.url.endsWith(Resources.SEARCH) +} + +function processApplications(ctx: any) { + if (isSearch(ctx)) { + return mapping.mapApplications(ctx) + } else { + return mapping.mapApplication(ctx) + } +} + +function processTables(ctx: any) { + if (isSearch(ctx)) { + return mapping.mapTables(ctx) + } else { + return mapping.mapTable(ctx) + } +} + +function processRows(ctx: any) { + if (isSearch(ctx)) { + return mapping.mapRowSearch(ctx) + } else { + return mapping.mapRow(ctx) + } +} + +function processUsers(ctx: any) { + if (isSearch(ctx)) { + return mapping.mapUsers(ctx) + } else { + return mapping.mapUser(ctx) + } +} + +function processQueries(ctx: any) { + if (isSearch(ctx)) { + return mapping.mapQueries(ctx) + } else { + return mapping.mapQueryExecution(ctx) + } +} + +export default async (ctx: any, next: any) => { + let urlParts = ctx.url.split("/") + urlParts = urlParts.slice(4, urlParts.length) + let body = {} + switch (urlParts[0]) { + case Resources.APPLICATION: + body = processApplications(ctx) + break + case Resources.TABLES: + if (urlParts[2] === Resources.ROWS) { + body = processRows(ctx) + } else { + body = processTables(ctx) + } + break + case Resources.USERS: + body = processUsers(ctx) + break + case Resources.QUERIES: + body = processQueries(ctx) + break + } + // update the body based on what has occurred in the mapper + ctx.body = body + await next() +} diff --git a/packages/server/src/api/routes/public/queries.ts b/packages/server/src/api/routes/public/queries.ts index 30618df9bb..0a480f7a43 100644 --- a/packages/server/src/api/routes/public/queries.ts +++ b/packages/server/src/api/routes/public/queries.ts @@ -11,38 +11,24 @@ const read = [], * post: * summary: Execute a query * description: Queries which have been created within a Budibase app can be executed using this, + * tags: * - queries * parameters: * - $ref: '#/components/parameters/queryId' * - $ref: '#/components/parameters/appId' + * requestBody: + * required: true + * content: + * application/json: + * schema: + * $ref: '#/components/schemas/executeQuery' * responses: * 200: * description: Returns the result of the query execution. * content: * application/json: * schema: - * type: object - * properties: - * data: - * type: array - * description: The data retrieved from the query. - * items: - * type: object - * description: The structure of the returned data will be an object, - * if it is just a string then this will be an object containing "value". - * pagination: - * type: object - * description: For supported query types this returns pagination information. - * properties: - * cursor: - * type: string - * description: The pagination cursor location. - * raw: - * type: string - * description: The raw query response. - * headers: - * type: object - * description: For REST queries the headers in the response will be returned here. + * $ref: '#/components/schemas/executeQueryOutput' * examples: * REST: * $ref: '#/components/examples/restResponse' diff --git a/packages/server/src/api/routes/public/rows.ts b/packages/server/src/api/routes/public/rows.ts index 202a84ec92..8428773dff 100644 --- a/packages/server/src/api/routes/public/rows.ts +++ b/packages/server/src/api/routes/public/rows.ts @@ -226,24 +226,7 @@ read.push(new Endpoint("get", "/tables/:tableId/rows/:rowId", controller.read)) * content: * application/json: * schema: - * type: object - * required: - * - data - * properties: - * data: - * description: An array of rows, these will each contain an _id field which can be used - * to update or delete them. - * type: array - * items: - * type: object - * bookmark: - * oneOf: - * - type: string - * - type: integer - * description: If pagination in use, this should be provided. - * hasNextPage: - * description: If pagination in use, this will determine if there is another page to fetch. - * type: boolean + * $ref: '#/components/schemas/searchOutput' * examples: * search: * $ref: '#/components/examples/rows' diff --git a/packages/server/src/api/routes/public/utils/Endpoint.ts b/packages/server/src/api/routes/public/utils/Endpoint.ts index 89b63fb77b..5bfdfe98db 100644 --- a/packages/server/src/api/routes/public/utils/Endpoint.ts +++ b/packages/server/src/api/routes/public/utils/Endpoint.ts @@ -1,18 +1,20 @@ import Router from "koa-router" -export type CtxFn = (ctx: any) => void +export type CtxFn = (ctx: any, next?: any) => void | Promise class Endpoint { method: string url: string controller: CtxFn middlewares: CtxFn[] + outputMiddlewares: CtxFn[] constructor(method: string, url: string, controller: CtxFn) { this.method = method this.url = url this.controller = controller this.middlewares = [] + this.outputMiddlewares = [] } addMiddleware(middleware: CtxFn) { @@ -20,12 +22,27 @@ class Endpoint { return this } + addOutputMiddleware(middleware: CtxFn) { + this.outputMiddlewares.push(middleware) + return this + } + apply(router: Router) { const method = this.method, url = this.url const middlewares = this.middlewares, - controller = this.controller - const params = [url, ...middlewares, controller] + controller = this.controller, + outputMiddlewares = this.outputMiddlewares + // need a function to do nothing to stop the execution at the end + // middlewares are circular so if they always keep calling next, it'll just keep looping + const complete = () => {} + const params = [ + url, + ...middlewares, + controller, + ...outputMiddlewares, + complete, + ] // @ts-ignore router[method](...params) } diff --git a/packages/server/src/middleware/mapper.ts b/packages/server/src/middleware/mapper.ts deleted file mode 100644 index e69de29bb2..0000000000 diff --git a/packages/server/yarn.lock b/packages/server/yarn.lock index e6f8440e04..618bd10d6d 100644 --- a/packages/server/yarn.lock +++ b/packages/server/yarn.lock @@ -39,6 +39,18 @@ call-me-maybe "^1.0.1" z-schema "^4.2.3" +"@apidevtools/swagger-parser@10.0.3", "@apidevtools/swagger-parser@^10.0.3": + version "10.0.3" + resolved "https://registry.yarnpkg.com/@apidevtools/swagger-parser/-/swagger-parser-10.0.3.tgz#32057ae99487872c4dd96b314a1ab4b95d89eaf5" + integrity sha512-sNiLY51vZOmSPFZA5TF35KZ2HbgYklQnTSDnkghamzLb3EkNtcQnrBQEj5AOCxHpTtXpqMCRM1CrmV2rG6nw4g== + dependencies: + "@apidevtools/json-schema-ref-parser" "^9.0.6" + "@apidevtools/openapi-schemas" "^2.0.4" + "@apidevtools/swagger-methods" "^3.0.2" + "@jsdevtools/ono" "^7.1.3" + call-me-maybe "^1.0.1" + z-schema "^5.0.1" + "@azure/abort-controller@^1.0.0": version "1.0.4" resolved "https://registry.yarnpkg.com/@azure/abort-controller/-/abort-controller-1.0.4.tgz#fd3c4d46c8ed67aace42498c8e2270960250eafd" @@ -983,6 +995,30 @@ resolved "https://registry.yarnpkg.com/@bcoe/v8-coverage/-/v8-coverage-0.2.3.tgz#75a2e8b51cb758a7553d6804a5932d7aace75c39" integrity sha512-0hYQ8SB4Db5zvZB4axdMHGwEaQjkZzFjQiN9LVYvIFB2nSUHW9tYpxWriPrWDASIxiaXax83REcLxuSdnGPZtw== +"@budibase/backend-core@^1.0.76-alpha.5": + version "1.0.78" + resolved "https://registry.yarnpkg.com/@budibase/backend-core/-/backend-core-1.0.78.tgz#0ff9cb57961f67456916a3c58a07d3c04c90acd3" + integrity sha512-/dXAKIrP6GfzM2jc2bH9aeOdVS5aVgQZoU8fwzhTZCd5t9dlsh1jY0WjHfDX4pBYhapVCbzIwseL/OmseZ+0NA== + 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" @@ -1032,6 +1068,104 @@ svelte-flatpickr "^3.2.3" svelte-portal "^1.0.0" +"@budibase/bbui@^1.0.78": + version "1.0.78" + resolved "https://registry.yarnpkg.com/@budibase/bbui/-/bbui-1.0.78.tgz#b63c66e8083aac2b10fe03f66230378188564ac6" + integrity sha512-+iKe8NmjsJufnYuSaCKbS1TmrtCU/HWt1V3vj5QmWcVZ4Vr2xpVUPuAuSugy4goFoVO2VODofiDwvdStCZnvPw== + 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" + easymde "^2.16.1" + svelte-flatpickr "^3.2.3" + svelte-portal "^1.0.0" + +"@budibase/client@^1.0.76-alpha.5": + version "1.0.78" + resolved "https://registry.yarnpkg.com/@budibase/client/-/client-1.0.78.tgz#c85d3c31a080c054c9c4965de70e9a6595fc3fb1" + integrity sha512-JRqTvcCt0v5XA+pWQehfC/+/r7leX6nJGcIs3skrRXLQV3NwoVF4IdNA7MMsANw0tZ4GzV956VV+bf9QfIE+Vg== + dependencies: + "@budibase/bbui" "^1.0.78" + "@budibase/frontend-core" "^1.0.78" + "@budibase/string-templates" "^1.0.78" + regexparam "^1.3.0" + rollup-plugin-polyfill-node "^0.8.0" + shortid "^2.2.15" + svelte-spa-router "^3.0.5" + +"@budibase/frontend-core@^1.0.78": + version "1.0.78" + resolved "https://registry.yarnpkg.com/@budibase/frontend-core/-/frontend-core-1.0.78.tgz#9a9d20f1263580b271845a4dc6541a8bc59db45d" + integrity sha512-bBaChKm9qU53nW/FIeztAoe3e3k3m6OP0EU6hP4AwDPKTCuV26554G6k7+M/IIZ4QtWPXCTp1Z+t45kycBzmPQ== + dependencies: + "@budibase/bbui" "^1.0.78" + lodash "^4.17.21" + svelte "^3.46.2" + +"@budibase/handlebars-helpers@^0.11.7": + version "0.11.8" + resolved "https://registry.yarnpkg.com/@budibase/handlebars-helpers/-/handlebars-helpers-0.11.8.tgz#6953d29673a8c5c407e096c0a84890465c7ce841" + integrity sha512-ggWJUt0GqsHFAEup5tlWlcrmYML57nKhpNGGLzVsqXVYN8eVmf3xluYmmMe7fDYhQH0leSprrdEXmsdFQF3HAQ== + 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-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" @@ -1050,6 +1184,18 @@ svelte-apexcharts "^1.0.2" svelte-flatpickr "^3.1.0" +"@budibase/string-templates@^1.0.76-alpha.5", "@budibase/string-templates@^1.0.78": + version "1.0.78" + resolved "https://registry.yarnpkg.com/@budibase/string-templates/-/string-templates-1.0.78.tgz#ef1b92f58d3723ea93ce0be1b02bb785ccf9a38c" + integrity sha512-v47I/AgOhsMIMl823d1rNURJbhe0GHo/w3KNTOZZzHv98QaRZuTOYjs+e9Vg6kbAy3iRCk2rK4MdXUxAe3jWKw== + 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" @@ -1786,6 +1932,24 @@ "@nodelib/fs.scandir" "2.1.5" fastq "^1.6.0" +"@rollup/plugin-inject@^4.0.0": + version "4.0.4" + resolved "https://registry.yarnpkg.com/@rollup/plugin-inject/-/plugin-inject-4.0.4.tgz#fbeee66e9a700782c4f65c8b0edbafe58678fbc2" + integrity sha512-4pbcU4J/nS+zuHk+c+OL3WtmEQhqxlZ9uqfjQMQDOHOPld7PsCd8k5LWs8h5wjwJN7MgnAn768F2sDxEP4eNFQ== + dependencies: + "@rollup/pluginutils" "^3.1.0" + estree-walker "^2.0.1" + magic-string "^0.25.7" + +"@rollup/pluginutils@^3.1.0": + version "3.1.0" + resolved "https://registry.yarnpkg.com/@rollup/pluginutils/-/pluginutils-3.1.0.tgz#706b4524ee6dc8b103b3c995533e5ad680c02b9b" + integrity sha512-GksZ6pr6TpIjHm8h9lSQ8pi8BE9VeubNT0OMJ3B5uZJ8pz73NPiqOtCog/x2/QzM1ENChPKxMDhiQuRHsqc+lg== + dependencies: + "@types/estree" "0.0.39" + estree-walker "^1.0.1" + picomatch "^2.2.2" + "@sendgrid/client@^7.1.1": version "7.6.0" resolved "https://registry.yarnpkg.com/@sendgrid/client/-/client-7.6.0.tgz#f90cb8759c96e1d90224f29ad98f8fdc2be287f3" @@ -1973,6 +2137,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.6" + resolved "https://registry.yarnpkg.com/@spectrum-css/inlinealert/-/inlinealert-2.0.6.tgz#4c5e923a1f56a96cc1adb30ef1f06ae04f2c6376" + integrity sha512-OpvvoWP02wWyCnF4IgG8SOPkXymovkC9cGtgMS1FdDubnG3tJZB/JeKTsRR9C9Vt3WBaOmISRdSKlZ4lC9CFzA== + "@spectrum-css/inputgroup@^3.0.2": version "3.0.8" resolved "https://registry.yarnpkg.com/@spectrum-css/inputgroup/-/inputgroup-3.0.8.tgz#fc23afc8a73c24d17249c9d2337e8b42085b298b" @@ -2122,6 +2291,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" @@ -2212,6 +2392,13 @@ resolved "https://registry.yarnpkg.com/@types/caseless/-/caseless-0.12.2.tgz#f65d3d6389e01eeb458bd54dc8f52b95a9463bc8" integrity sha512-6ckxMjBBD8URvjB6J3NcnuAn5Pkl7t3TizAg+xdlzzQGSPSmBcXf8KoIH0ua/i+tio+ZRUHEXp0HEmvaR4kt0w== +"@types/codemirror@^5.60.4": + version "5.60.5" + resolved "https://registry.yarnpkg.com/@types/codemirror/-/codemirror-5.60.5.tgz#5b989a3b4bbe657458cf372c92b6bfda6061a2b7" + integrity sha512-TiECZmm8St5YxjFUp64LK0c8WU5bxMDt9YaAek1UqUb9swrSCoJhh92fWu1p3mTEqlHjhB5sY7OFBhWroJXZVg== + dependencies: + "@types/tern" "*" + "@types/connect@*": version "3.4.35" resolved "https://registry.yarnpkg.com/@types/connect/-/connect-3.4.35.tgz#5fcf6ae445e4021d1fc2219a4873cc73a3bb2ad1" @@ -2260,6 +2447,11 @@ resolved "https://registry.yarnpkg.com/@types/estree/-/estree-0.0.50.tgz#1e0caa9364d3fccd2931c3ed96fdbeaa5d4cca83" integrity sha512-C6N5s2ZFtuZRj54k2/zyRhNDjJwwcViAM3Nbm8zjBpbqAdZ00mr0CFxvSKeO8Y/e03WVFLpQMdHYVfUd6SB+Hw== +"@types/estree@0.0.39": + version "0.0.39" + resolved "https://registry.yarnpkg.com/@types/estree/-/estree-0.0.39.tgz#e177e699ee1b8c22d23174caaa7422644389509f" + integrity sha512-EYNwp3bU+98cpU4lAWYYL7Zz+2gryWH1qbdDTidVd6hkiR6weksdbMadyXKXNPEkQFhXM+hVO9ZygomHXp+AIw== + "@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" @@ -2388,6 +2580,11 @@ "@types/koa-compose" "*" "@types/node" "*" +"@types/marked@^4.0.1": + version "4.0.2" + resolved "https://registry.yarnpkg.com/@types/marked/-/marked-4.0.2.tgz#cb2dbf10da2f41cf20bd91fb5f89b67540c282f7" + integrity sha512-auNrZ/c0w6wsM9DccwVxWHssrMDezHUAXNesdp2RQrCVCyrQbOiSq7yqdJKrUQQpw9VTm7CGYJH2A/YG7jjrjQ== + "@types/mime@^1": version "1.3.2" resolved "https://registry.yarnpkg.com/@types/mime/-/mime-1.3.2.tgz#93e25bf9ee75fe0fd80b594bc4feb0e862111b5a" @@ -2480,6 +2677,13 @@ "@types/cookiejar" "*" "@types/node" "*" +"@types/tern@*": + version "0.23.4" + resolved "https://registry.yarnpkg.com/@types/tern/-/tern-0.23.4.tgz#03926eb13dbeaf3ae0d390caf706b2643a0127fb" + integrity sha512-JAUw1iXGO1qaWwEOzxTKJZ/5JxVeON9kvGZ/osgZaJImBnyjyn0cjovPsf6FNLmyGY8Vw9DoXZCMlfMkMwHRWg== + dependencies: + "@types/estree" "*" + "@types/tough-cookie@*": version "4.0.1" resolved "https://registry.yarnpkg.com/@types/tough-cookie/-/tough-cookie-4.0.1.tgz#8f80dd965ad81f3e1bc26d6f5c727e132721ff40" @@ -3041,7 +3245,7 @@ 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== @@ -3088,6 +3292,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" @@ -3140,6 +3353,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" @@ -3162,6 +3382,13 @@ 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" @@ -3182,6 +3409,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" @@ -3197,6 +3431,21 @@ aws-sdk@^2.767.0: uuid "3.3.2" xml2js "0.4.19" +aws-sdk@^2.901.0: + version "2.1083.0" + resolved "https://registry.yarnpkg.com/aws-sdk/-/aws-sdk-2.1083.0.tgz#afdc3d99d035b84b1dc75437f7670af0078ed2ab" + integrity sha512-o9pOC3LrkJRKLwSumdFrNWzGAVRNPGt4EFS48/917BaFafvnOAzOG/DM8cl5yguz3wT7eylj92I4pP2TE3qZIQ== + dependencies: + buffer "4.9.2" + events "1.1.1" + ieee754 "1.1.13" + jmespath "0.16.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" @@ -3379,6 +3628,11 @@ base64-js@^1.0.2, base64-js@^1.3.0, 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" @@ -3399,7 +3653,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= @@ -3449,6 +3703,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" @@ -3796,6 +4059,11 @@ 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" @@ -3882,6 +4150,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" @@ -3902,6 +4179,18 @@ co@^4.6.0: resolved "https://registry.yarnpkg.com/co/-/co-4.6.0.tgz#6ea6bdf3d853ae54ccb8e47bfa0bf3f9031fb184" integrity sha1-bqa989hTrlTMuOR7+gvz+QMfsYQ= +codemirror-spell-checker@1.1.2: + version "1.1.2" + resolved "https://registry.yarnpkg.com/codemirror-spell-checker/-/codemirror-spell-checker-1.1.2.tgz#1c660f9089483ccb5113b9ba9ca19c3f4993371e" + integrity sha1-HGYPkIlIPMtRE7m6nKGcP0mTNx4= + dependencies: + typo-js "*" + +codemirror@^5.63.1: + version "5.65.2" + resolved "https://registry.yarnpkg.com/codemirror/-/codemirror-5.65.2.tgz#5799a70cb3d706e10f60e267245e3a75205d3dd9" + integrity sha512-SZM4Zq7XEC8Fhroqe3LxbEEX1zUPWH1wMr5zxiBuiUF64iYOUH/JI88v4tBag8MiBS8B8gRv8O1pPXGYXQ4ErA== + collect-v8-coverage@^1.0.0: version "1.0.1" resolved "https://registry.yarnpkg.com/collect-v8-coverage/-/collect-v8-coverage-1.0.1.tgz#cc2c8e94fc18bbdffe64d6534570c8a673b27f59" @@ -4047,6 +4336,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" @@ -4436,6 +4732,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" @@ -4663,6 +4966,17 @@ duplexer3@^0.1.4: resolved "https://registry.yarnpkg.com/duplexer3/-/duplexer3-0.1.4.tgz#ee01dd1cac0ed3cbc7fdbea37dc0a8f1ce002ce2" integrity sha1-7gHdHKwO08vH/b6jfcCo8c4ALOI= +easymde@^2.16.1: + version "2.16.1" + resolved "https://registry.yarnpkg.com/easymde/-/easymde-2.16.1.tgz#f4c2380312615cb33826f1a1fecfaa4022ff551a" + integrity sha512-FihYgjRsKfhGNk89SHSqxKLC4aJ1kfybPWW6iAmtb5GnXu+tnFPSzSaGBmk1RRlCuhFSjhF0SnIMGVPjEzkr6g== + dependencies: + "@types/codemirror" "^5.60.4" + "@types/marked" "^4.0.1" + codemirror "^5.63.1" + codemirror-spell-checker "1.1.2" + marked "^4.0.10" + ecc-jsbn@~0.1.1: version "0.1.2" resolved "https://registry.yarnpkg.com/ecc-jsbn/-/ecc-jsbn-0.1.2.tgz#3a83a904e54353287874c564b7549386849a98c9" @@ -4705,6 +5019,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" @@ -4745,7 +5066,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== @@ -4767,6 +5088,11 @@ 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" @@ -5175,6 +5501,16 @@ estraverse@^5.1.0, estraverse@^5.2.0: resolved "https://registry.yarnpkg.com/estraverse/-/estraverse-5.3.0.tgz#2eea5290702f26ab8fe5370370ff86c965d21123" integrity sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA== +estree-walker@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/estree-walker/-/estree-walker-1.0.1.tgz#31bc5d612c96b704106b477e6dd5d8aa138cb700" + integrity sha512-1fMXF3YP4pZZVozF8j/ZLfvnR8NSIljt56UhbZ5PeeDmmGHpgpdwQt7ITlGvYaQukCvuBRMLEiKiYC+oeIg4cg== + +estree-walker@^2.0.1: + version "2.0.2" + resolved "https://registry.yarnpkg.com/estree-walker/-/estree-walker-2.0.2.tgz#52f010178c2a4c117a7757cfe942adb7d2da4cac" + integrity sha512-Rfkk/Mp/DL7JVje3u18FxFujQlTNR2q6QfMSMB7AvCBx91NGj/ba3kCfza0f6dVDbw7YlRf/nDrn7pQrCCyQ/w== + esutils@^2.0.2: version "2.0.3" resolved "https://registry.yarnpkg.com/esutils/-/esutils-2.0.3.tgz#74d2eb4de0b8da1293711910d50775b9b710ef64" @@ -5706,6 +6042,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" @@ -5807,6 +6148,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" @@ -5869,6 +6218,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" @@ -5963,6 +6319,11 @@ globals@^12.1.0: dependencies: type-fest "^0.8.1" +globalyzer@0.1.0: + version "0.1.0" + resolved "https://registry.yarnpkg.com/globalyzer/-/globalyzer-0.1.0.tgz#cb76da79555669a1519d5a8edf093afaa0bf1465" + integrity sha512-40oNTM9UfG6aBmuKxk/giHn5nQ8RVz/SS4Ir6zgzOv9/qC3kKZ9v4etGTcJbEl/NyVQH7FGU7d+X1egr57Md2Q== + globby@^11.0.3: version "11.0.4" resolved "https://registry.yarnpkg.com/globby/-/globby-11.0.4.tgz#2cbaff77c2f2a62e71e9b2813a67b97a3a3001a5" @@ -5975,6 +6336,11 @@ globby@^11.0.3: merge2 "^1.3.0" slash "^3.0.0" +globrex@^0.1.2: + version "0.1.2" + resolved "https://registry.yarnpkg.com/globrex/-/globrex-0.1.2.tgz#dd5d9ec826232730cd6793a5e33a9302985e6098" + integrity sha512-uHJgbwAMwNFf5mLst7IWLNg14x1CkeqglJb/K3doi4dw6q2IvAAmM/Y81kevy83wP+Sst+nutFTYOGg3d1lsxg== + google-auth-library@^6.1.3: version "6.1.6" resolved "https://registry.yarnpkg.com/google-auth-library/-/google-auth-library-6.1.6.tgz#deacdcdb883d9ed6bac78bb5d79a078877fdf572" @@ -6005,6 +6371,23 @@ google-auth-library@^7.11.0: jws "^4.0.0" lru-cache "^6.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" + google-p12-pem@^3.0.3: version "3.1.2" resolved "https://registry.yarnpkg.com/google-p12-pem/-/google-p12-pem-3.1.2.tgz#c3d61c2da8e10843ff830fdb0d2059046238c1d4" @@ -6021,6 +6404,15 @@ google-spreadsheet@^3.2.0: google-auth-library "^6.1.3" lodash "^4.17.21" +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" @@ -6066,6 +6458,16 @@ 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" + gtoken@^5.0.4: version "5.3.1" resolved "https://registry.yarnpkg.com/gtoken/-/gtoken-5.3.1.tgz#c1c2598a826f2b5df7c6bb53d7be6cf6d50c3c78" @@ -6075,7 +6477,24 @@ gtoken@^5.0.4: google-p12-pem "^3.0.3" jws "^4.0.0" -handlebars@^4.7.7: +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.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== @@ -6157,6 +6576,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" @@ -6170,6 +6597,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" @@ -6182,6 +6616,16 @@ has@^1.0.3: dependencies: function-bind "^1.1.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" + 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" @@ -6211,6 +6655,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" @@ -6474,6 +6926,23 @@ ioredis@^4.27.0: redis-parser "^3.0.0" standard-as-callback "^2.1.0" +ioredis@^4.27.1: + version "4.28.5" + resolved "https://registry.yarnpkg.com/ioredis/-/ioredis-4.28.5.tgz#5c149e6a8d76a7f8fa8a504ffc85b7d5b6797f9f" + integrity sha512-3GYo0GJtLqgNXj4YhrisLaNNvWSNwSS2wS4OELGfGxH8I69+XfNdnmV1AyN+ZqMh0i7eX+SWjrwFKDBDgfBC1A== + 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" @@ -6598,6 +7067,13 @@ 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" @@ -6687,6 +7163,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" @@ -6709,6 +7192,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" @@ -6754,6 +7244,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" @@ -6846,6 +7343,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" @@ -7701,6 +8203,11 @@ jmespath@0.15.0, jmespath@^0.15.0: resolved "https://registry.yarnpkg.com/jmespath/-/jmespath-0.15.0.tgz#a3f222a9aae9f966f5d27c796510e28091764217" integrity sha1-o/Iiqarp+Wb10nx5ZRDigJF2Qhc= +jmespath@0.16.0: + version "0.16.0" + resolved "https://registry.yarnpkg.com/jmespath/-/jmespath-0.16.0.tgz#b15b0a85dfd4d930d43e69ed605943c802785076" + integrity sha512-9FzQjJ7MATs1tSpnco1K6ayiYE3figslrXA72G2HQ/n76RzvYlofyi5QM+iX4YRs/pu3yzxlVQSST23+dMDknw== + joi@17.2.1: version "17.2.1" resolved "https://registry.yarnpkg.com/joi/-/joi-17.2.1.tgz#e5140fdf07e8fecf9bc977c2832d1bdb1e3f2a0a" @@ -7927,6 +8434,22 @@ 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" @@ -7975,7 +8498,7 @@ jwa@^2.0.0: 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== @@ -8010,7 +8533,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= @@ -8024,12 +8547,12 @@ 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== @@ -8131,6 +8654,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" @@ -8473,6 +9003,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" @@ -8493,16 +9028,46 @@ lodash.get@^4.4.2: resolved "https://registry.yarnpkg.com/lodash.get/-/lodash.get-4.4.2.tgz#2d177f652fa31e939b4438d5341499dfa3825e99" integrity sha1-LRd/ZS+jHpObRDjVNBSZ36OCXpk= +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" @@ -8523,11 +9088,21 @@ lodash.mergewith@^4.6.2: resolved "https://registry.yarnpkg.com/lodash.mergewith/-/lodash.mergewith-4.6.2.tgz#617121f89ac55f59047c7aec1ccd6654c6590f55" integrity sha512-GK3g5RPZWTRSeLSpgP8Xhra+pnjBC56q9FZYe1d5RN3TJ35dbkGy3YqBSMbyCrlbi+CM9Z3Jk5yTL7RCsqboyQ== +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" @@ -8538,6 +9113,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" @@ -8548,7 +9138,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.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== @@ -8616,6 +9206,13 @@ ltgt@2.2.1, ltgt@^2.1.2, ltgt@~2.2.0: resolved "https://registry.yarnpkg.com/ltgt/-/ltgt-2.2.1.tgz#f35ca91c493f7b73da0e07495304f17b31f87ee5" integrity sha1-81ypHEk/e3PaDgdJUwTxezH4fuU= +magic-string@^0.25.7: + version "0.25.7" + resolved "https://registry.yarnpkg.com/magic-string/-/magic-string-0.25.7.tgz#3f497d6fd34c669c6798dcb821f2ef31f5445051" + integrity sha512-4CrMT5DOHTDk4HYDlzmwu4FVCcIYI8gauveasrdCu2IKIFOJ3f0v/8MDGJCDL9oD2ppz/Av1b0Nj345H9M+XIA== + dependencies: + sourcemap-codec "^1.4.4" + make-dir@^1.0.0: version "1.3.0" resolved "https://registry.yarnpkg.com/make-dir/-/make-dir-1.3.0.tgz#79c1033b80515bd6d24ec9933e860ca75ee27f0c" @@ -8680,6 +9277,11 @@ markdown-it@^12.2.0: mdurl "^1.0.1" uc.micro "^1.0.5" +marked@^4.0.10: + version "4.0.12" + resolved "https://registry.yarnpkg.com/marked/-/marked-4.0.12.tgz#2262a4e6fd1afd2f13557726238b69a48b982f7d" + integrity sha512-hgibXWrEDNBWgGiK18j/4lkS6ihTe9sxtV4Q1OQppb/0zzyPSzoFANBa5MfsG/zgsWklmNnhm0XACZOH/0HBiQ== + md5@^2.3.0: version "2.3.0" resolved "https://registry.yarnpkg.com/md5/-/md5-2.3.0.tgz#c3da9a6aae3a30b46b7b0c349b87b110dc3bda4f" @@ -8745,7 +9347,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== @@ -8809,6 +9411,11 @@ mime@^1.3.4, mime@^1.4.1: resolved "https://registry.yarnpkg.com/mime/-/mime-1.6.0.tgz#32cd9e5c64553bd58d19a568af452acff04981b1" integrity sha512-x0Vn8spI+wuJ1O6S7gnbaQg8Pxh4NNHb7KSINmEWKiPE4RKOplvijn+NkmYmmRgP68mc70j2EbeTFRsrswaQeg== +mime@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/mime/-/mime-3.0.0.tgz#b374550dca3a0c18443b0c950a6a58f1931cf7a7" + integrity sha512-jSCU7/VB1loIWBZe14aEYHU/+1UMEHoaO7qxCOVJOw9GgH72VAWppxNcjU+x9a2k3GSIBXNKxXQFqRvvZ7vr3A== + mimic-fn@^2.0.0, mimic-fn@^2.1.0: version "2.1.0" resolved "https://registry.yarnpkg.com/mimic-fn/-/mimic-fn-2.1.0.tgz#7ed2c2ccccaf84d3ffcb7a69b57711fc2083401b" @@ -8846,6 +9453,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" @@ -8965,6 +9577,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" @@ -9044,6 +9661,11 @@ node-forge@^0.10.0: resolved "https://registry.yarnpkg.com/node-forge/-/node-forge-0.10.0.tgz#32dea2afb3e9926f02ee5ce8794902691a676bf3" integrity sha512-PPmu8eEeG9saEUvI97fm4OYxXVB6bFvyNTyiUOBichBpFG8A1Ljw3bY62+5oOjDEMHRnd0Y7HQ+x7uzxOzC6JA== +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" @@ -9171,6 +9793,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" @@ -9303,6 +9930,18 @@ openapi-types@^9.3.1: resolved "https://registry.yarnpkg.com/openapi-types/-/openapi-types-9.3.1.tgz#617ae6db3efd3e3f68e849f65ced58801d01d3cf" integrity sha512-/Yvsd2D7miYB4HLJ3hOOS0+vnowQpaT75FsHzr/y5M9P4q9bwa7RcbW2YdH6KZBn8ceLbKGnHxMZ1CHliGHUFw== +openapi-typescript@^5.2.0: + version "5.2.0" + resolved "https://registry.yarnpkg.com/openapi-typescript/-/openapi-typescript-5.2.0.tgz#c0712d7a17e4502ac083162c42f946c0e966a505" + integrity sha512-EGoPTmxrpiN40R6An5Wqol2l74sRb773pv/KXWYCQaMCXNtMGN7Jv+y/jY4B1Bd4hsIW2j9GFmQXxqfGmOXaxA== + dependencies: + js-yaml "^4.1.0" + mime "^3.0.0" + prettier "^2.5.1" + tiny-glob "^0.2.9" + undici "^4.14.1" + yargs-parser "^21.0.0" + openapi-validator@^0.14.2: version "0.14.2" resolved "https://registry.yarnpkg.com/openapi-validator/-/openapi-validator-0.14.2.tgz#f5d4484cea1d19bc4629a9092964bf56f1e95e94" @@ -9515,6 +10154,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" @@ -9577,6 +10294,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" @@ -9653,6 +10375,11 @@ picomatch@^2.0.4, picomatch@^2.2.1, picomatch@^2.2.3: resolved "https://registry.yarnpkg.com/picomatch/-/picomatch-2.3.0.tgz#f1f061de8f6a4bf022892e2d128234fb98302972" integrity sha512-lY1Q/PiJGC2zOv/z391WOTD+Z02bCgsFfvxoXXf6h7kv9o+WmsmzYqrAwY63sNgOxE4xEdq0WyUnXfKeBrSvYw== +picomatch@^2.2.2: + version "2.3.1" + resolved "https://registry.yarnpkg.com/picomatch/-/picomatch-2.3.1.tgz#3ba3833733646d9d3e4995946c1365a67fb07a42" + integrity sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA== + pify@^2.3.0: version "2.3.0" resolved "https://registry.yarnpkg.com/pify/-/pify-2.3.0.tgz#ed141a6ac043a849ea588498e7dca8b15330e90c" @@ -10041,6 +10768,11 @@ prettier@^2.3.1: resolved "https://registry.yarnpkg.com/prettier/-/prettier-2.4.1.tgz#671e11c89c14a4cfc876ce564106c4a6726c9f5c" integrity sha512-9fbDAXSBcc6Bs1mZrDYb3XKzDLm4EXXL9sC1LqKP5rZkT6KRr/rf9amVUcODVXgguK/isJz0d0hP72WeaKWsvA== +prettier@^2.5.1: + version "2.5.1" + resolved "https://registry.yarnpkg.com/prettier/-/prettier-2.5.1.tgz#fff75fa9d519c54cf0fce328c1017d94546bc56a" + integrity sha512-vBZcPRUR5MZJwoyi3ZoyQlc1rXeEck8KgeC9AwwOn+exuxLxq5toTRDTSaVrXHxelDMHy9zlicw8u66yxoSUFg== + pretty-format@^24.9.0: version "24.9.0" resolved "https://registry.yarnpkg.com/pretty-format/-/pretty-format-24.9.0.tgz#12fac31b37019a4eea3c11aa9a959eb7628aa7c9" @@ -10300,7 +11032,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== @@ -10441,6 +11173,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" @@ -10484,6 +11226,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: + 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" @@ -10520,7 +11277,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== @@ -10666,6 +11423,13 @@ rimraf@^3.0.0, rimraf@^3.0.2: dependencies: glob "^7.1.3" +rollup-plugin-polyfill-node@^0.8.0: + version "0.8.0" + resolved "https://registry.yarnpkg.com/rollup-plugin-polyfill-node/-/rollup-plugin-polyfill-node-0.8.0.tgz#859c070822f5e38d221e5b4238cb34aa894c2b19" + integrity sha512-C4UeKedOmOBkB3FgR+z/v9kzRwV1Q/H8xWs1u1+CNe4XOV6hINfOrcO+TredKxYvopCmr+WKUSNsFUnD1RLHgQ== + dependencies: + "@rollup/plugin-inject" "^4.0.0" + rsvp@^4.8.4: version "4.8.5" resolved "https://registry.yarnpkg.com/rsvp/-/rsvp-4.8.5.tgz#c8f155311d167f68f21e168df71ec5b083113734" @@ -10737,6 +11501,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" @@ -10749,7 +11518,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== @@ -10787,6 +11556,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" @@ -10794,7 +11568,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== @@ -10905,6 +11679,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" @@ -11080,6 +11866,11 @@ source-map@^0.7.3, source-map@~0.7.2: resolved "https://registry.yarnpkg.com/source-map/-/source-map-0.7.3.tgz#5302f8169031735226544092e64981f751750383" integrity sha512-CkCj6giN3S+n9qrYiBTX5gystlENnRW5jZeNLHpe6aue+SrHcG5VYwujhW9s4dY31mEGsxBDrHR6oI69fTXsaQ== +sourcemap-codec@^1.4.4: + version "1.4.8" + resolved "https://registry.yarnpkg.com/sourcemap-codec/-/sourcemap-codec-1.4.8.tgz#ea804bd94857402e6992d05a38ef1ae35a9ab4c4" + integrity sha512-9NykojV5Uih4lgo5So5dtw+f0JgJX30KCNI8gwhz2J9A15wD0Ml6tjHKwf6fTSa6fAdVBdZeNOs9eJ71qCk8vA== + spark-md5@3.0.0: version "3.0.0" resolved "https://registry.yarnpkg.com/spark-md5/-/spark-md5-3.0.0.tgz#3722227c54e2faf24b1dc6d933cc144e6f71bfef" @@ -11179,6 +11970,11 @@ 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" @@ -11226,6 +12022,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" @@ -11244,6 +12045,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" @@ -11377,6 +12183,11 @@ 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" @@ -11471,11 +12282,23 @@ 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" integrity sha512-4DrCEJoBvdR689efHNSxIQn2pnFwB7E7j2yLEJtHE/P8hxwZWIphCtJ8are7bjl/iVMlcEf5uh5pJ68IwR09vQ== +svelte@^3.46.2: + version "3.46.4" + resolved "https://registry.yarnpkg.com/svelte/-/svelte-3.46.4.tgz#0c46bc4a3e20a2617a1b7dc43a722f9d6c084a38" + integrity sha512-qKJzw6DpA33CIa+C/rGp4AUdSfii0DOTCzj/2YpSKKayw5WGSS624Et9L1nU1k2OVRS9vaENQXp2CVZNU+xvIg== + svg.draggable.js@^2.2.2: version "2.2.2" resolved "https://registry.yarnpkg.com/svg.draggable.js/-/svg.draggable.js-2.2.2.tgz#c514a2f1405efb6f0263e7958f5b68fce50603ba" @@ -11550,6 +12373,13 @@ swagger-parser@10.0.2: dependencies: "@apidevtools/swagger-parser" "10.0.2" +swagger-parser@^10.0.3: + version "10.0.3" + resolved "https://registry.yarnpkg.com/swagger-parser/-/swagger-parser-10.0.3.tgz#04cb01c18c3ac192b41161c77f81e79309135d03" + integrity sha512-nF7oMeL4KypldrQhac8RyHerJeGPD1p2xDh900GPvc+Nk7nWP6jX2FcC7WmkinMoAmoO774+AFXcWsW8gMWEIg== + dependencies: + "@apidevtools/swagger-parser" "10.0.3" + symbol-tree@^3.2.2, symbol-tree@^3.2.4: version "3.2.4" resolved "https://registry.yarnpkg.com/symbol-tree/-/symbol-tree-3.2.4.tgz#430637d248ba77e078883951fb9aa0eed7c63fa2" @@ -11570,6 +12400,16 @@ 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" @@ -11583,6 +12423,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" @@ -11742,6 +12593,14 @@ timm@^1.6.1: resolved "https://registry.yarnpkg.com/timm/-/timm-1.7.1.tgz#96bab60c7d45b5a10a8a4d0f0117c6b7e5aff76f" integrity sha512-IjZc9KIotudix8bMaBW6QvMuq64BrJWFs1+4V0lXwWGQZwH+LnX87doAYhem4caOEusRP9/g6jVDQmZ8XOk1nw== +tiny-glob@^0.2.9: + version "0.2.9" + resolved "https://registry.yarnpkg.com/tiny-glob/-/tiny-glob-0.2.9.tgz#2212d441ac17928033b110f8b3640683129d31e2" + integrity sha512-g/55ssRPUjShh+xkfx9UPDXqhckHEsHr4Vd9zX55oSdGZc/MD0m3sferOkwWtp98bv+kcVfEHtRJgBVJzelrzg== + dependencies: + globalyzer "0.1.0" + globrex "^0.1.2" + tiny-queue@^0.2.0: version "0.2.1" resolved "https://registry.yarnpkg.com/tiny-queue/-/tiny-queue-0.2.1.tgz#25a67f2c6e253b2ca941977b5ef7442ef97a6046" @@ -11774,6 +12633,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" @@ -12010,6 +12874,13 @@ 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" + typeof@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/typeof/-/typeof-1.0.0.tgz#9c84403f2323ae5399167275497638ea1d2f2440" @@ -12020,6 +12891,11 @@ typescript@^4.3.5: resolved "https://registry.yarnpkg.com/typescript/-/typescript-4.3.5.tgz#4d1c37cc16e893973c45a06886b7113234f119f4" integrity sha512-DqQgihaQ9cUrskJo9kIyW/+g0Vxsk8cDtZ52a3NGh0YNTfpUSArXSohyUGnvbPazEPLu398C0UxmKSOrPumUzA== +typo-js@*: + version "1.2.1" + resolved "https://registry.yarnpkg.com/typo-js/-/typo-js-1.2.1.tgz#334a0d8c3f6c56f2f1e15fdf6c31677793cbbe9b" + integrity sha512-bTGLjbD3WqZDR3CgEFkyi9Q/SS2oM29ipXrWfDb4M74ea69QwKAECVceYpaBu0GfdnASMg9Qfl67ttB23nePHg== + 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" @@ -12030,6 +12906,11 @@ 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" @@ -12058,6 +12939,11 @@ undefsafe@^2.0.5: resolved "https://registry.yarnpkg.com/underscore/-/underscore-1.13.1.tgz#0c1c6bd2df54b6b69f2314066d65b6cde6fcf9d1" integrity sha512-hzSoAVtJF+3ZtiFX0VgfFPHEDRm7Y/QPjGyNo4TVdnDTdft3tr8hEkD25a1jC+TjTuE7tkHGKkhwCgs9dgBB2g== +undici@^4.14.1: + version "4.14.1" + resolved "https://registry.yarnpkg.com/undici/-/undici-4.14.1.tgz#7633b143a8a10d6d63335e00511d071e8d52a1d9" + integrity sha512-WJ+g+XqiZcATcBaUeluCajqy4pEDcQfK1vy+Fo+bC4/mqXI9IIQD/XWHLS70fkGUT6P52Drm7IFslO651OdLPQ== + 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" @@ -12233,6 +13119,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" @@ -12280,7 +13171,7 @@ validate.js@0.13.1: resolved "https://registry.yarnpkg.com/validate.js/-/validate.js-0.13.1.tgz#b58bfac04a0f600a340f62e5227e70d95971e92a" integrity sha512-PnFM3xiZ+kYmLyTiMgTYmU7ZHkjBZz2/+F0DaALc/uUtVzdCt1wAosvYJ5hFQi/hz8O4zb52FQhHZRC+uVkJ+g== -validator@^13.6.0: +validator@^13.6.0, validator@^13.7.0: version "13.7.0" resolved "https://registry.yarnpkg.com/validator/-/validator-13.7.0.tgz#4f9658ba13ba8f3d82ee881d3516489ea85c0857" integrity sha512-nYXQLCBkpJ8X6ltALua9dRrZDHVYxjJ1wgskNt1lH9fzGjs3tgojGSCBjmEPwkWS1y29+DrizMTW19Pr9uB2nw== @@ -12305,6 +13196,14 @@ vm2@^3.9.3: acorn "^8.7.0" acorn-walk "^8.2.0" +vm2@^3.9.4: + version "3.9.9" + resolved "https://registry.yarnpkg.com/vm2/-/vm2-3.9.9.tgz#c0507bc5fbb99388fad837d228badaaeb499ddc5" + integrity sha512-xwTm7NLh/uOjARRBs8/95H0e8fT3Ukw5D/JJWhxMbhKzNh1Nu981jQKvkep9iKYNxzlVrdzD0mlBGkDKZWprlw== + dependencies: + acorn "^8.7.0" + acorn-walk "^8.2.0" + vuvuzela@1.0.3: version "1.0.3" resolved "https://registry.yarnpkg.com/vuvuzela/-/vuvuzela-1.0.3.tgz#3be145e58271c73ca55279dd851f12a682114b0b" @@ -12339,6 +13238,14 @@ 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" @@ -12655,6 +13562,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" @@ -12747,6 +13661,11 @@ yargs-parser@^13.1.0, yargs-parser@^13.1.2: camelcase "^5.0.0" decamelize "^1.2.0" +yargs-parser@^21.0.0: + version "21.0.1" + resolved "https://registry.yarnpkg.com/yargs-parser/-/yargs-parser-21.0.1.tgz#0267f286c877a4f0f728fceb6f8a3e4cb95c6e35" + integrity sha512-9BK1jFpLzJROCI5TzwZL/TU4gqjK5xiHV/RfWLOahrjAko/e4DJkRDZQXfvqAsiZzzYhgAzbgz6lg48jcm4GLg== + yargs@13.2.4: version "13.2.4" resolved "https://registry.yarnpkg.com/yargs/-/yargs-13.2.4.tgz#0b562b794016eb9651b98bd37acf364aa5d6dc83" @@ -12801,6 +13720,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" @@ -12822,7 +13746,18 @@ z-schema@^4.2.3: optionalDependencies: commander "^2.7.1" -zlib@1.0.5: +z-schema@^5.0.1: + version "5.0.2" + resolved "https://registry.yarnpkg.com/z-schema/-/z-schema-5.0.2.tgz#f410394b2c9fcb9edaf6a7511491c0bb4e89a504" + integrity sha512-40TH47ukMHq5HrzkeVE40Ad7eIDKaRV2b+Qpi2prLc9X9eFJFzV7tMe5aH12e6avaSS/u5l653EQOv+J9PirPw== + dependencies: + lodash.get "^4.4.2" + lodash.isequal "^4.5.0" + validator "^13.7.0" + optionalDependencies: + commander "^2.7.1" + +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 aa2d43b23201b1394021d9e07c4b746717310bac Mon Sep 17 00:00:00 2001 From: mike12345567 Date: Tue, 1 Mar 2022 18:42:52 +0000 Subject: [PATCH 57/64] Adding a top level script for generating specs, symlinking the openapi yaml and json to top level as well. --- package.json | 1 + packages/server/specs/openapi.json | 4 ---- packages/server/specs/openapi.yaml | 3 --- packages/server/specs/resources/query.js | 5 ----- .../server/src/api/controllers/public/mapping/queries.ts | 6 ++++-- packages/server/src/api/controllers/public/types/openapi.ts | 2 -- specs/openapi.json | 1 + specs/openapi.yaml | 1 + 8 files changed, 7 insertions(+), 16 deletions(-) create mode 120000 specs/openapi.json create mode 120000 specs/openapi.yaml diff --git a/package.json b/package.json index 22f5963bd2..626daf8b51 100644 --- a/package.json +++ b/package.json @@ -44,6 +44,7 @@ "lint:fix": "yarn run lint:fix:ts && yarn run lint:fix:prettier && yarn run lint:fix:eslint", "test:e2e": "lerna run cy:test --stream", "test:e2e:ci": "lerna run cy:ci --stream", + "build:specs": "lerna run specs", "build:docker": "lerna run build:docker && npm run build:docker:proxy:compose && cd hosting/scripts/linux/ && ./release-to-docker-hub.sh $BUDIBASE_RELEASE_VERSION && cd -", "build:docker:proxy": "docker build hosting/proxy -t proxy-service", "build:docker:proxy:compose": "lerna run generate:proxy:compose && npm run build:docker:proxy", diff --git a/packages/server/specs/openapi.json b/packages/server/specs/openapi.json index 51b411cd6e..9ee081eb09 100644 --- a/packages/server/specs/openapi.json +++ b/packages/server/specs/openapi.json @@ -1049,10 +1049,6 @@ } } }, - "info": { - "description": "Extra info from the query in a key-value map, like response times.", - "type": "object" - }, "pagination": { "description": "If pagination is supported, this will contain the bookmark/anchor information for it.", "type": "object" diff --git a/packages/server/specs/openapi.yaml b/packages/server/specs/openapi.yaml index 2d39624aa1..c9b7a38e0d 100644 --- a/packages/server/specs/openapi.yaml +++ b/packages/server/specs/openapi.yaml @@ -762,9 +762,6 @@ components: raw: description: The raw query response, as a string. type: string - info: - description: Extra info from the query in a key-value map, like response times. - type: object pagination: description: If pagination is supported, this will contain the bookmark/anchor information for it. diff --git a/packages/server/specs/resources/query.js b/packages/server/specs/resources/query.js index fa1f59b094..8a0b888024 100644 --- a/packages/server/specs/resources/query.js +++ b/packages/server/specs/resources/query.js @@ -163,11 +163,6 @@ const executeQueryOutputSchema = object( }, }, }, - info: { - description: - "Extra info from the query in a key-value map, like response times.", - type: "object", - }, pagination: { description: "If pagination is supported, this will contain the bookmark/anchor information for it.", diff --git a/packages/server/src/api/controllers/public/mapping/queries.ts b/packages/server/src/api/controllers/public/mapping/queries.ts index 024623058b..748e0e3370 100644 --- a/packages/server/src/api/controllers/public/mapping/queries.ts +++ b/packages/server/src/api/controllers/public/mapping/queries.ts @@ -26,8 +26,10 @@ function mapQueryExecution(ctx: any): ExecuteQueryOutput { return { data: ctx.body.data, pagination: ctx.body.pagination, - extra: ctx.body.extra, - info: ctx.body.info, + extra: { + raw: ctx.body.raw, + headers: ctx.body.headers, + }, } } diff --git a/packages/server/src/api/controllers/public/types/openapi.ts b/packages/server/src/api/controllers/public/types/openapi.ts index 89537d828e..e3c70f18a2 100644 --- a/packages/server/src/api/controllers/public/types/openapi.ts +++ b/packages/server/src/api/controllers/public/types/openapi.ts @@ -850,8 +850,6 @@ export interface components { /** @description The raw query response, as a string. */ raw?: string } - /** @description Extra info from the query in a key-value map, like response times. */ - info?: { [key: string]: unknown } /** @description If pagination is supported, this will contain the bookmark/anchor information for it. */ pagination?: { [key: string]: unknown } } diff --git a/specs/openapi.json b/specs/openapi.json new file mode 120000 index 0000000000..6e1531e3f4 --- /dev/null +++ b/specs/openapi.json @@ -0,0 +1 @@ +../packages/server/specs/openapi.json \ No newline at end of file diff --git a/specs/openapi.yaml b/specs/openapi.yaml new file mode 120000 index 0000000000..67db6af71f --- /dev/null +++ b/specs/openapi.yaml @@ -0,0 +1 @@ +../packages/server/specs/openapi.yaml \ No newline at end of file From 60acca5d95d9499ff715447ec4ff8866a08f2861 Mon Sep 17 00:00:00 2001 From: mike12345567 Date: Tue, 1 Mar 2022 19:00:28 +0000 Subject: [PATCH 58/64] Changing how types are generated from the open api spec a bit. --- packages/server/package.json | 2 +- .../public/mapping/applications.ts | 2 +- .../api/controllers/public/mapping/queries.ts | 2 +- .../api/controllers/public/mapping/rows.ts | 2 +- .../api/controllers/public/mapping/tables.ts | 2 +- .../{types/components.ts => mapping/types.ts} | 2 +- .../api/controllers/public/mapping/users.ts | 2 +- .../api/routes/public/middleware/mapper.ts | 14 +- .../public/types => definitions}/openapi.ts | 824 +++++++++--------- 9 files changed, 426 insertions(+), 426 deletions(-) rename packages/server/src/api/controllers/public/{types/components.ts => mapping/types.ts} (92%) rename packages/server/src/{api/controllers/public/types => definitions}/openapi.ts (77%) diff --git a/packages/server/package.json b/packages/server/package.json index 399334bcce..b44d0a51b6 100644 --- a/packages/server/package.json +++ b/packages/server/package.json @@ -25,7 +25,7 @@ "generate:proxy:preprod": "node scripts/proxy/generateProxyConfig preprod", "generate:proxy:prod": "node scripts/proxy/generateProxyConfig prod", "format": "prettier --config ../../.prettierrc.json 'src/**/*.ts' --write", - "specs": "node specs/generate.js && openapi-typescript specs/openapi.yaml --output src/api/controllers/public/types/openapi.ts", + "specs": "node specs/generate.js && openapi-typescript specs/openapi.yaml --output src/definitions/openapi.ts", "lint": "eslint --fix src/", "lint:fix": "yarn run format && yarn run lint", "initialise": "node scripts/initialise.js", diff --git a/packages/server/src/api/controllers/public/mapping/applications.ts b/packages/server/src/api/controllers/public/mapping/applications.ts index b7da0c31b9..a78c51bfb1 100644 --- a/packages/server/src/api/controllers/public/mapping/applications.ts +++ b/packages/server/src/api/controllers/public/mapping/applications.ts @@ -1,4 +1,4 @@ -import { Application, ApplicationOutput } from "../types/components" +import { Application, ApplicationOutput } from "./types" function application(body: any): Application { let app = body?.application ? body.application : body diff --git a/packages/server/src/api/controllers/public/mapping/queries.ts b/packages/server/src/api/controllers/public/mapping/queries.ts index 748e0e3370..a9f220442d 100644 --- a/packages/server/src/api/controllers/public/mapping/queries.ts +++ b/packages/server/src/api/controllers/public/mapping/queries.ts @@ -1,4 +1,4 @@ -import { Query, ExecuteQueryOutput } from "../types/components" +import { Query, ExecuteQueryOutput } from "./types" function query(body: any): Query { return { diff --git a/packages/server/src/api/controllers/public/mapping/rows.ts b/packages/server/src/api/controllers/public/mapping/rows.ts index 7dc739999b..623a210b3d 100644 --- a/packages/server/src/api/controllers/public/mapping/rows.ts +++ b/packages/server/src/api/controllers/public/mapping/rows.ts @@ -1,4 +1,4 @@ -import { Row, RowSearch, RowOutput } from "../types/components" +import { Row, RowSearch, RowOutput } from "./types" function row(body: any): Row { delete body._rev diff --git a/packages/server/src/api/controllers/public/mapping/tables.ts b/packages/server/src/api/controllers/public/mapping/tables.ts index d4c329e767..7c582becc7 100644 --- a/packages/server/src/api/controllers/public/mapping/tables.ts +++ b/packages/server/src/api/controllers/public/mapping/tables.ts @@ -1,4 +1,4 @@ -import { Table, TableOutput } from "../types/components" +import { Table, TableOutput } from "./types" function table(body: any): Table { return { diff --git a/packages/server/src/api/controllers/public/types/components.ts b/packages/server/src/api/controllers/public/mapping/types.ts similarity index 92% rename from packages/server/src/api/controllers/public/types/components.ts rename to packages/server/src/api/controllers/public/mapping/types.ts index a6608aae71..b2559ce9ba 100644 --- a/packages/server/src/api/controllers/public/types/components.ts +++ b/packages/server/src/api/controllers/public/mapping/types.ts @@ -1,4 +1,4 @@ -import { components } from "./openapi" +import { components } from "../../../../definitions/openapi" export type Query = components["schemas"]["query"] export type ExecuteQueryOutput = components["schemas"]["executeQueryOutput"] diff --git a/packages/server/src/api/controllers/public/mapping/users.ts b/packages/server/src/api/controllers/public/mapping/users.ts index 82ec7a78ef..847378c7c3 100644 --- a/packages/server/src/api/controllers/public/mapping/users.ts +++ b/packages/server/src/api/controllers/public/mapping/users.ts @@ -1,4 +1,4 @@ -import { User, UserOutput } from "../types/components" +import { User, UserOutput } from "./types" function user(body: any): User { return { diff --git a/packages/server/src/api/routes/public/middleware/mapper.ts b/packages/server/src/api/routes/public/middleware/mapper.ts index fefcca1142..aae7b1d1cf 100644 --- a/packages/server/src/api/routes/public/middleware/mapper.ts +++ b/packages/server/src/api/routes/public/middleware/mapper.ts @@ -9,12 +9,12 @@ enum Resources { SEARCH = "search", } -function isSearch(ctx: any) { - return ctx.url.endsWith(Resources.SEARCH) +function isArrayResponse(ctx: any) { + return ctx.url.endsWith(Resources.SEARCH) || Array.isArray(ctx.body) } function processApplications(ctx: any) { - if (isSearch(ctx)) { + if (isArrayResponse(ctx)) { return mapping.mapApplications(ctx) } else { return mapping.mapApplication(ctx) @@ -22,7 +22,7 @@ function processApplications(ctx: any) { } function processTables(ctx: any) { - if (isSearch(ctx)) { + if (isArrayResponse(ctx)) { return mapping.mapTables(ctx) } else { return mapping.mapTable(ctx) @@ -30,7 +30,7 @@ function processTables(ctx: any) { } function processRows(ctx: any) { - if (isSearch(ctx)) { + if (isArrayResponse(ctx)) { return mapping.mapRowSearch(ctx) } else { return mapping.mapRow(ctx) @@ -38,7 +38,7 @@ function processRows(ctx: any) { } function processUsers(ctx: any) { - if (isSearch(ctx)) { + if (isArrayResponse(ctx)) { return mapping.mapUsers(ctx) } else { return mapping.mapUser(ctx) @@ -46,7 +46,7 @@ function processUsers(ctx: any) { } function processQueries(ctx: any) { - if (isSearch(ctx)) { + if (isArrayResponse(ctx)) { return mapping.mapQueries(ctx) } else { return mapping.mapQueryExecution(ctx) diff --git a/packages/server/src/api/controllers/public/types/openapi.ts b/packages/server/src/definitions/openapi.ts similarity index 77% rename from packages/server/src/api/controllers/public/types/openapi.ts rename to packages/server/src/definitions/openapi.ts index e3c70f18a2..af2c2e2bb8 100644 --- a/packages/server/src/api/controllers/public/types/openapi.ts +++ b/packages/server/src/definitions/openapi.ts @@ -9,283 +9,283 @@ export interface paths { parameters: { header: { /** The ID of the app which this request is targeting. */ - "x-budibase-app-id": components["parameters"]["appId"] - } - } + "x-budibase-app-id": components["parameters"]["appId"]; + }; + }; responses: { /** Returns the created application. */ 200: { content: { - "application/json": components["schemas"]["applicationOutput"] - } - } - } + "application/json": components["schemas"]["applicationOutput"]; + }; + }; + }; requestBody: { content: { - "application/json": components["schemas"]["application"] - } - } - } - } + "application/json": components["schemas"]["application"]; + }; + }; + }; + }; "/applications/{appId}": { get: { parameters: { path: { /** The ID of the app which this request is targeting. */ - appId: components["parameters"]["appIdUrl"] - } - } + appId: components["parameters"]["appIdUrl"]; + }; + }; responses: { /** Returns the retrieved application. */ 200: { content: { - "application/json": components["schemas"]["applicationOutput"] - } - } - } - } + "application/json": components["schemas"]["applicationOutput"]; + }; + }; + }; + }; put: { parameters: { path: { /** The ID of the app which this request is targeting. */ - appId: components["parameters"]["appIdUrl"] - } - } + appId: components["parameters"]["appIdUrl"]; + }; + }; responses: { /** Returns the updated application. */ 200: { content: { - "application/json": components["schemas"]["applicationOutput"] - } - } - } + "application/json": components["schemas"]["applicationOutput"]; + }; + }; + }; requestBody: { content: { - "application/json": components["schemas"]["application"] - } - } - } + "application/json": components["schemas"]["application"]; + }; + }; + }; delete: { parameters: { path: { /** The ID of the app which this request is targeting. */ - appId: components["parameters"]["appIdUrl"] - } - } + appId: components["parameters"]["appIdUrl"]; + }; + }; responses: { /** Returns the deleted application. */ 200: { content: { - "application/json": components["schemas"]["applicationOutput"] - } - } - } - } - } + "application/json": components["schemas"]["applicationOutput"]; + }; + }; + }; + }; + }; "/applications/search": { /** Based on application properties (currently only name) search for applications. */ post: { parameters: { header: { /** The ID of the app which this request is targeting. */ - "x-budibase-app-id": components["parameters"]["appId"] - } - } + "x-budibase-app-id": components["parameters"]["appId"]; + }; + }; responses: { /** Returns the applications that were found based on the search parameters. */ 200: { content: { "application/json": { - data: components["schemas"]["application"][] - } - } - } - } + data: components["schemas"]["application"][]; + }; + }; + }; + }; requestBody: { content: { - "application/json": components["schemas"]["nameSearch"] - } - } - } - } + "application/json": components["schemas"]["nameSearch"]; + }; + }; + }; + }; "/queries/{queryId}": { /** Queries which have been created within a Budibase app can be executed using this, */ post: { parameters: { path: { /** The ID of the query which this request is targeting. */ - queryId: components["parameters"]["queryId"] - } + queryId: components["parameters"]["queryId"]; + }; header: { /** The ID of the app which this request is targeting. */ - "x-budibase-app-id": components["parameters"]["appId"] - } - } + "x-budibase-app-id": components["parameters"]["appId"]; + }; + }; responses: { /** Returns the result of the query execution. */ 200: { content: { - "application/json": components["schemas"]["executeQueryOutput"] - } - } - } + "application/json": components["schemas"]["executeQueryOutput"]; + }; + }; + }; requestBody: { content: { - "application/json": components["schemas"]["executeQuery"] - } - } - } - } + "application/json": components["schemas"]["executeQuery"]; + }; + }; + }; + }; "/queries/search": { /** Based on query properties (currently only name) search for queries. */ post: { parameters: { header: { /** The ID of the app which this request is targeting. */ - "x-budibase-app-id": components["parameters"]["appId"] - } - } + "x-budibase-app-id": components["parameters"]["appId"]; + }; + }; responses: { /** Returns the queries found based on the search parameters. */ 200: { content: { "application/json": { - data: components["schemas"]["query"][] - } - } - } - } + data: components["schemas"]["query"][]; + }; + }; + }; + }; requestBody: { content: { - "application/json": components["schemas"]["nameSearch"] - } - } - } - } + "application/json": components["schemas"]["nameSearch"]; + }; + }; + }; + }; "/tables/{tableId}/rows": { /** Creates a row within the specified table. */ post: { parameters: { path: { /** The ID of the table which this request is targeting. */ - tableId: components["parameters"]["tableId"] - } + tableId: components["parameters"]["tableId"]; + }; header: { /** The ID of the app which this request is targeting. */ - "x-budibase-app-id": components["parameters"]["appId"] - } - } + "x-budibase-app-id": components["parameters"]["appId"]; + }; + }; responses: { /** Returns the created row, including the ID which has been generated for it. This can be found in the Budibase portal, viewed under the developer information. */ 200: { content: { - "application/json": components["schemas"]["rowOutput"] - } - } - } + "application/json": components["schemas"]["rowOutput"]; + }; + }; + }; requestBody: { content: { - "application/json": components["schemas"]["row"] - } - } - } - } + "application/json": components["schemas"]["row"]; + }; + }; + }; + }; "/tables/{tableId}/rows/{rowId}": { /** This gets a single row, it will be enriched with the full related rows, rather than the squashed "primaryDisplay" format returned by the search endpoint. */ get: { parameters: { path: { /** The ID of the table which this request is targeting. */ - tableId: components["parameters"]["tableId"] + tableId: components["parameters"]["tableId"]; /** The ID of the row which this request is targeting. */ - rowId: components["parameters"]["rowId"] - } + rowId: components["parameters"]["rowId"]; + }; header: { /** The ID of the app which this request is targeting. */ - "x-budibase-app-id": components["parameters"]["appId"] - } - } + "x-budibase-app-id": components["parameters"]["appId"]; + }; + }; responses: { /** Returns the retrieved row. */ 200: { content: { - "application/json": components["schemas"]["rowOutput"] - } - } - } - } + "application/json": components["schemas"]["rowOutput"]; + }; + }; + }; + }; /** Updates a row within the specified table. */ put: { parameters: { path: { /** The ID of the table which this request is targeting. */ - tableId: components["parameters"]["tableId"] + tableId: components["parameters"]["tableId"]; /** The ID of the row which this request is targeting. */ - rowId: components["parameters"]["rowId"] - } + rowId: components["parameters"]["rowId"]; + }; header: { /** The ID of the app which this request is targeting. */ - "x-budibase-app-id": components["parameters"]["appId"] - } - } + "x-budibase-app-id": components["parameters"]["appId"]; + }; + }; responses: { /** Returns the created row, including the ID which has been generated for it. */ 200: { content: { - "application/json": components["schemas"]["rowOutput"] - } - } - } + "application/json": components["schemas"]["rowOutput"]; + }; + }; + }; requestBody: { content: { - "application/json": components["schemas"]["row"] - } - } - } + "application/json": components["schemas"]["row"]; + }; + }; + }; /** Deletes a row within the specified table. */ delete: { parameters: { path: { /** The ID of the table which this request is targeting. */ - tableId: components["parameters"]["tableId"] + tableId: components["parameters"]["tableId"]; /** The ID of the row which this request is targeting. */ - rowId: components["parameters"]["rowId"] - } + rowId: components["parameters"]["rowId"]; + }; header: { /** The ID of the app which this request is targeting. */ - "x-budibase-app-id": components["parameters"]["appId"] - } - } + "x-budibase-app-id": components["parameters"]["appId"]; + }; + }; responses: { /** Returns the deleted row, including the ID which has been generated for it. */ 200: { content: { - "application/json": components["schemas"]["rowOutput"] - } - } - } - } - } + "application/json": components["schemas"]["rowOutput"]; + }; + }; + }; + }; + }; "/tables/{tableId}/rows/search": { post: { parameters: { path: { /** The ID of the table which this request is targeting. */ - tableId: components["parameters"]["tableId"] - } + tableId: components["parameters"]["tableId"]; + }; header: { /** The ID of the app which this request is targeting. */ - "x-budibase-app-id": components["parameters"]["appId"] - } - } + "x-budibase-app-id": components["parameters"]["appId"]; + }; + }; responses: { /** The response will contain an array of rows that match the search parameters. */ 200: { content: { - "application/json": components["schemas"]["searchOutput"] - } - } - } + "application/json": components["schemas"]["searchOutput"]; + }; + }; + }; requestBody: { content: { "application/json": { @@ -294,246 +294,246 @@ export interface paths { * @description A map of field name to the string to search for, this will look for rows that have a value starting with the string value. * @example [object Object] */ - string?: { [key: string]: string } + string?: { [key: string]: string }; /** @description A fuzzy search, only supported by internal tables. */ - fuzzy?: { [key: string]: unknown } + fuzzy?: { [key: string]: unknown }; /** * @description Searches within a range, the format of this must be columnName -> [low, high]. * @example [object Object] */ - range?: { [key: string]: unknown } + range?: { [key: string]: unknown }; /** @description Searches for rows that have a column value that is exactly the value set. */ - equal?: { [key: string]: unknown } + equal?: { [key: string]: unknown }; /** @description Searches for any row which does not contain the specified column value. */ - notEqual?: { [key: string]: unknown } + notEqual?: { [key: string]: unknown }; /** * @description Searches for rows which do not contain the specified column. The object should simply contain keys of the column names, these can map to any value. * @example [object Object] */ - empty?: { [key: string]: unknown } + empty?: { [key: string]: unknown }; /** @description Searches for rows which have the specified column. */ - notEmpty?: { [key: string]: unknown } + notEmpty?: { [key: string]: unknown }; /** @description Searches for rows which have a column value that is any of the specified values. The format of this must be columnName -> [value1, value2]. */ - oneOf?: { [key: string]: unknown } - } + oneOf?: { [key: string]: unknown }; + }; /** @description Enables pagination, by default this is disabled. */ - paginate?: boolean + paginate?: boolean; /** @description If retrieving another page, the bookmark from the previous request must be supplied. */ - bookmark?: string | number + bookmark?: string | number; /** @description The maximum number of rows to return, useful when paginating, for internal tables this will be limited to 1000, for SQL tables it will be 5000. */ - limit?: number + limit?: number; /** @description A set of parameters describing the sort behaviour of the search. */ sort?: { /** * @description The order of the sort, by default this is ascending. * @enum {string} */ - order?: "ascending" | "descending" + order?: "ascending" | "descending"; /** @description The name of the column by which the rows will be sorted. */ - column?: string + column?: string; /** * @description Defines whether the column should be treated as a string or as numbers when sorting. * @enum {string} */ - type?: "string" | "number" - } - } - } - } - } - } + type?: "string" | "number"; + }; + }; + }; + }; + }; + }; "/tables": { /** Create a table, this could be internal or external. */ post: { parameters: { header: { /** The ID of the app which this request is targeting. */ - "x-budibase-app-id": components["parameters"]["appId"] - } - } + "x-budibase-app-id": components["parameters"]["appId"]; + }; + }; responses: { /** Returns the created table, including the ID which has been generated for it. This can be internal or external data sources. */ 200: { content: { - "application/json": components["schemas"]["tableOutput"] - } - } - } + "application/json": components["schemas"]["tableOutput"]; + }; + }; + }; requestBody: { content: { - "application/json": components["schemas"]["table"] - } - } - } - } + "application/json": components["schemas"]["table"]; + }; + }; + }; + }; "/tables/{tableId}": { /** Lookup a table, this could be internal or external. */ get: { parameters: { path: { /** The ID of the table which this request is targeting. */ - tableId: components["parameters"]["tableId"] - } + tableId: components["parameters"]["tableId"]; + }; header: { /** The ID of the app which this request is targeting. */ - "x-budibase-app-id": components["parameters"]["appId"] - } - } + "x-budibase-app-id": components["parameters"]["appId"]; + }; + }; responses: { /** Returns the retrieved table. */ 200: { content: { - "application/json": components["schemas"]["tableOutput"] - } - } - } - } + "application/json": components["schemas"]["tableOutput"]; + }; + }; + }; + }; /** Update a table, this could be internal or external. */ put: { parameters: { path: { /** The ID of the table which this request is targeting. */ - tableId: components["parameters"]["tableId"] - } + tableId: components["parameters"]["tableId"]; + }; header: { /** The ID of the app which this request is targeting. */ - "x-budibase-app-id": components["parameters"]["appId"] - } - } + "x-budibase-app-id": components["parameters"]["appId"]; + }; + }; responses: { /** Returns the updated table. */ 200: { content: { - "application/json": components["schemas"]["tableOutput"] - } - } - } + "application/json": components["schemas"]["tableOutput"]; + }; + }; + }; requestBody: { content: { - "application/json": components["schemas"]["table"] - } - } - } + "application/json": components["schemas"]["table"]; + }; + }; + }; /** Delete a table, this could be internal or external. */ delete: { parameters: { path: { /** The ID of the table which this request is targeting. */ - tableId: components["parameters"]["tableId"] - } + tableId: components["parameters"]["tableId"]; + }; header: { /** The ID of the app which this request is targeting. */ - "x-budibase-app-id": components["parameters"]["appId"] - } - } + "x-budibase-app-id": components["parameters"]["appId"]; + }; + }; responses: { /** Returns the deleted table. */ 200: { content: { - "application/json": components["schemas"]["tableOutput"] - } - } - } - } - } + "application/json": components["schemas"]["tableOutput"]; + }; + }; + }; + }; + }; "/tables/search": { /** Based on table properties (currently only name) search for tables. This could be an internal or an external table. */ post: { parameters: { header: { /** The ID of the app which this request is targeting. */ - "x-budibase-app-id": components["parameters"]["appId"] - } - } + "x-budibase-app-id": components["parameters"]["appId"]; + }; + }; responses: { /** Returns the found tables, based on the search parameters. */ 200: { content: { "application/json": { - data: components["schemas"]["table"][] - } - } - } - } + data: components["schemas"]["table"][]; + }; + }; + }; + }; requestBody: { content: { - "application/json": components["schemas"]["nameSearch"] - } - } - } - } + "application/json": components["schemas"]["nameSearch"]; + }; + }; + }; + }; "/users": { post: { responses: { /** Returns the created user. */ 200: { content: { - "application/json": components["schemas"]["userOutput"] - } - } - } + "application/json": components["schemas"]["userOutput"]; + }; + }; + }; requestBody: { content: { - "application/json": components["schemas"]["user"] - } - } - } - } + "application/json": components["schemas"]["user"]; + }; + }; + }; + }; "/users/{userId}": { get: { parameters: { path: { /** The ID of the user which this request is targeting. */ - userId: components["parameters"]["userId"] - } - } + userId: components["parameters"]["userId"]; + }; + }; responses: { /** Returns the retrieved user. */ 200: { content: { - "application/json": components["schemas"]["userOutput"] - } - } - } - } + "application/json": components["schemas"]["userOutput"]; + }; + }; + }; + }; put: { parameters: { path: { /** The ID of the user which this request is targeting. */ - userId: components["parameters"]["userId"] - } - } + userId: components["parameters"]["userId"]; + }; + }; responses: { /** Returns the updated user. */ 200: { content: { - "application/json": components["schemas"]["userOutput"] - } - } - } + "application/json": components["schemas"]["userOutput"]; + }; + }; + }; requestBody: { content: { - "application/json": components["schemas"]["user"] - } - } - } + "application/json": components["schemas"]["user"]; + }; + }; + }; delete: { parameters: { path: { /** The ID of the user which this request is targeting. */ - userId: components["parameters"]["userId"] - } - } + userId: components["parameters"]["userId"]; + }; + }; responses: { /** Returns the deleted user. */ 200: { content: { - "application/json": components["schemas"]["userOutput"] - } - } - } - } - } + "application/json": components["schemas"]["userOutput"]; + }; + }; + }; + }; + }; "/users/search": { /** Based on user properties (currently only name) search for users. */ post: { @@ -542,53 +542,53 @@ export interface paths { 200: { content: { "application/json": { - data: components["schemas"]["user"][] - } - } - } - } + data: components["schemas"]["user"][]; + }; + }; + }; + }; requestBody: { content: { - "application/json": components["schemas"]["nameSearch"] - } - } - } - } + "application/json": components["schemas"]["nameSearch"]; + }; + }; + }; + }; } export interface components { schemas: { application: { /** @description The name of the app. */ - name: string + name: string; /** @description The URL by which the app is accessed, this must be URL encoded. */ - url: string - } + url: string; + }; applicationOutput: { data: { /** @description The name of the app. */ - name: string + name: string; /** @description The URL by which the app is accessed, this must be URL encoded. */ - url: string + url: string; /** @description The ID of the app. */ - _id: string + _id: string; /** * @description The status of the app, stating it if is the development or published version. * @enum {string} */ - status: "development" | "published" + status: "development" | "published"; /** @description States when the app was created, will be constant. Stored in ISO format. */ - createdAt: string + createdAt: string; /** @description States the last time the app was updated - stored in ISO format. */ - updatedAt: string + updatedAt: string; /** @description States the version of the Budibase client this app is currently based on. */ - version: string + version: string; /** @description In a multi-tenant environment this will state the tenant this app is within. */ - tenantId?: string + tenantId?: string; /** @description The user this app is currently being built by. */ - lockedBy?: { [key: string]: unknown } - } - } + lockedBy?: { [key: string]: unknown }; + }; + }; /** @description The row to be created/updated, based on the table schema. */ row: { [key: string]: @@ -596,38 +596,38 @@ export interface components { | { [key: string]: unknown } | number | unknown[] - | boolean - } + | boolean; + }; searchOutput: { /** @description An array of rows, these will each contain an _id field which can be used to update or delete them. */ - data: { [key: string]: unknown }[] + data: { [key: string]: unknown }[]; /** @description If pagination in use, this should be provided. */ - bookmark?: string | number + bookmark?: string | number; /** @description If pagination in use, this will determine if there is another page to fetch. */ - hasNextPage?: boolean - } + hasNextPage?: boolean; + }; rowOutput: { /** @description The row to be created/updated, based on the table schema. */ data: { /** @description The ID of the row. */ - _id: string + _id: string; /** @description The ID of the table this row comes from. */ - tableId: string + tableId: string; } & { [key: string]: | string | { [key: string]: unknown } | number | unknown[] - | boolean - } - } + | boolean; + }; + }; /** @description The table to be created/updated. */ table: { /** @description The name of the table. */ - name: string + name: string; /** @description The name of the column which should be used in relationship tags when relating to this table. */ - primaryDisplay?: string + primaryDisplay?: string; schema: { [key: string]: | { @@ -635,60 +635,60 @@ export interface components { * @description A relationship column. * @enum {string} */ - type?: "link" + type?: "link"; /** @description A constraint can be applied to the column which will be validated against when a row is saved. */ constraints?: { /** @enum {string} */ - type?: "string" | "number" | "object" | "boolean" + type?: "string" | "number" | "object" | "boolean"; /** @description Defines whether the column is required or not. */ - presence?: boolean - } + presence?: boolean; + }; /** @description The name of the column. */ - name?: string + name?: string; /** @description Defines whether the column is automatically generated. */ - autocolumn?: boolean + autocolumn?: boolean; /** @description The name of the column which a relationship column is related to in another table. */ - fieldName?: string + fieldName?: string; /** @description The ID of the table which a relationship column is related to. */ - tableId?: string + tableId?: string; /** * @description Defines the type of relationship that this column will be used for. * @enum {string} */ - relationshipType?: "one-to-many" | "many-to-one" | "many-to-many" + relationshipType?: "one-to-many" | "many-to-one" | "many-to-many"; /** @description When using a SQL table that contains many to many relationships this defines the table the relationships are linked through. */ - through?: string + through?: string; /** @description When using a SQL table that contains a one to many relationship this defines the foreign key. */ - foreignKey?: string + foreignKey?: string; /** @description When using a SQL table that utilises a through table, this defines the primary key in the through table for this table. */ - throughFrom?: string + throughFrom?: string; /** @description When using a SQL table that utilises a through table, this defines the primary key in the through table for the related table. */ - throughTo?: string + throughTo?: string; } | { /** * @description A formula column. * @enum {string} */ - type?: "formula" + type?: "formula"; /** @description A constraint can be applied to the column which will be validated against when a row is saved. */ constraints?: { /** @enum {string} */ - type?: "string" | "number" | "object" | "boolean" + type?: "string" | "number" | "object" | "boolean"; /** @description Defines whether the column is required or not. */ - presence?: boolean - } + presence?: boolean; + }; /** @description The name of the column. */ - name?: string + name?: string; /** @description Defines whether the column is automatically generated. */ - autocolumn?: boolean + autocolumn?: boolean; /** @description Defines a Handlebars or JavaScript formula to use, note that Javascript formulas are expected to be provided in the base64 format. */ - formula?: string + formula?: string; /** * @description Defines whether this is a static or dynamic formula. * @enum {string} */ - formulaType?: "static" | "dynamic" + formulaType?: "static" | "dynamic"; } | { /** @@ -708,28 +708,28 @@ export interface components { | "formula" | "auto" | "json" - | "internal" + | "internal"; /** @description A constraint can be applied to the column which will be validated against when a row is saved. */ constraints?: { /** @enum {string} */ - type?: "string" | "number" | "object" | "boolean" + type?: "string" | "number" | "object" | "boolean"; /** @description Defines whether the column is required or not. */ - presence?: boolean - } + presence?: boolean; + }; /** @description The name of the column. */ - name?: string + name?: string; /** @description Defines whether the column is automatically generated. */ - autocolumn?: boolean - } - } - } + autocolumn?: boolean; + }; + }; + }; tableOutput: { /** @description The table to be created/updated. */ data: { /** @description The name of the table. */ - name: string + name: string; /** @description The name of the column which should be used in relationship tags when relating to this table. */ - primaryDisplay?: string + primaryDisplay?: string; schema: { [key: string]: | { @@ -737,22 +737,22 @@ export interface components { * @description A relationship column. * @enum {string} */ - type?: "link" + type?: "link"; /** @description A constraint can be applied to the column which will be validated against when a row is saved. */ constraints?: { /** @enum {string} */ - type?: "string" | "number" | "object" | "boolean" + type?: "string" | "number" | "object" | "boolean"; /** @description Defines whether the column is required or not. */ - presence?: boolean - } + presence?: boolean; + }; /** @description The name of the column. */ - name?: string + name?: string; /** @description Defines whether the column is automatically generated. */ - autocolumn?: boolean + autocolumn?: boolean; /** @description The name of the column which a relationship column is related to in another table. */ - fieldName?: string + fieldName?: string; /** @description The ID of the table which a relationship column is related to. */ - tableId?: string + tableId?: string; /** * @description Defines the type of relationship that this column will be used for. * @enum {string} @@ -760,40 +760,40 @@ export interface components { relationshipType?: | "one-to-many" | "many-to-one" - | "many-to-many" + | "many-to-many"; /** @description When using a SQL table that contains many to many relationships this defines the table the relationships are linked through. */ - through?: string + through?: string; /** @description When using a SQL table that contains a one to many relationship this defines the foreign key. */ - foreignKey?: string + foreignKey?: string; /** @description When using a SQL table that utilises a through table, this defines the primary key in the through table for this table. */ - throughFrom?: string + throughFrom?: string; /** @description When using a SQL table that utilises a through table, this defines the primary key in the through table for the related table. */ - throughTo?: string + throughTo?: string; } | { /** * @description A formula column. * @enum {string} */ - type?: "formula" + type?: "formula"; /** @description A constraint can be applied to the column which will be validated against when a row is saved. */ constraints?: { /** @enum {string} */ - type?: "string" | "number" | "object" | "boolean" + type?: "string" | "number" | "object" | "boolean"; /** @description Defines whether the column is required or not. */ - presence?: boolean - } + presence?: boolean; + }; /** @description The name of the column. */ - name?: string + name?: string; /** @description Defines whether the column is automatically generated. */ - autocolumn?: boolean + autocolumn?: boolean; /** @description Defines a Handlebars or JavaScript formula to use, note that Javascript formulas are expected to be provided in the base64 format. */ - formula?: string + formula?: string; /** * @description Defines whether this is a static or dynamic formula. * @enum {string} */ - formulaType?: "static" | "dynamic" + formulaType?: "static" | "dynamic"; } | { /** @@ -813,24 +813,24 @@ export interface components { | "formula" | "auto" | "json" - | "internal" + | "internal"; /** @description A constraint can be applied to the column which will be validated against when a row is saved. */ constraints?: { /** @enum {string} */ - type?: "string" | "number" | "object" | "boolean" + type?: "string" | "number" | "object" | "boolean"; /** @description Defines whether the column is required or not. */ - presence?: boolean - } + presence?: boolean; + }; /** @description The name of the column. */ - name?: string + name?: string; /** @description Defines whether the column is automatically generated. */ - autocolumn?: boolean - } - } + autocolumn?: boolean; + }; + }; /** @description The ID of the table. */ - _id: string - } - } + _id: string; + }; + }; /** @description The query body must contain the required parameters for the query, this depends on query type, setup and bindings. */ executeQuery: { [key: string]: @@ -838,125 +838,125 @@ export interface components { | { [key: string]: unknown } | number | unknown[] - | boolean - } + | boolean; + }; executeQueryOutput: { /** @description The data response from the query. */ - data: { [key: string]: unknown }[] + data: { [key: string]: unknown }[]; /** @description Extra information that is not part of the main data, e.g. headers. */ extra?: { /** @description If carrying out a REST request, this will contain the response headers. */ - headers?: { [key: string]: unknown } + headers?: { [key: string]: unknown }; /** @description The raw query response, as a string. */ - raw?: string - } + raw?: string; + }; /** @description If pagination is supported, this will contain the bookmark/anchor information for it. */ - pagination?: { [key: string]: unknown } - } + pagination?: { [key: string]: unknown }; + }; query: { /** @description The ID of the query. */ - _id: string + _id: string; /** @description The ID of the data source the query belongs to. */ - datasourceId?: string + datasourceId?: string; /** @description The bindings which are required to perform this query. */ - parameters?: string[] + parameters?: string[]; /** @description The fields that are used to perform this query, e.g. the sql statement */ - fields?: { [key: string]: unknown } + fields?: { [key: string]: unknown }; /** * @description The verb that describes this query. * @enum {undefined} */ - queryVerb?: "create" | "read" | "update" | "delete" + queryVerb?: "create" | "read" | "update" | "delete"; /** @description The name of the query. */ - name: string + name: string; /** @description The schema of the data returned when the query is executed. */ - schema: { [key: string]: unknown } + schema: { [key: string]: unknown }; /** @description The JavaScript transformer function, applied after the query responds with data. */ - transformer?: string + transformer?: string; /** @description Whether the query has readable data. */ - readable?: boolean - } + readable?: boolean; + }; user: { /** @description The email address of the user, this must be unique. */ - email: string + email: string; /** @description The password of the user if using password based login - this will never be returned. This can be left out of subsequent requests (updates) and will be enriched back into the user structure. */ - password?: string + password?: string; /** * @description The status of the user, if they are active. * @enum {string} */ - status?: "active" + status?: "active"; /** @description The first name of the user */ - firstName?: string + firstName?: string; /** @description The last name of the user */ - lastName?: string + lastName?: string; /** @description If set to true forces the user to reset their password on first login. */ - forceResetPassword?: boolean + forceResetPassword?: boolean; /** @description Describes if the user is a builder user or not. */ builder?: { /** @description If set to true the user will be able to build any app in the system. */ - global?: boolean - } + global?: boolean; + }; /** @description Describes if the user is an admin user or not. */ admin?: { /** @description If set to true the user will be able to administrate the system. */ - global?: boolean - } + global?: boolean; + }; /** @description Contains the roles of the user per app (assuming they are not a builder user). */ - roles: { [key: string]: string } - } + roles: { [key: string]: string }; + }; userOutput: { data: { /** @description The email address of the user, this must be unique. */ - email: string + email: string; /** @description The password of the user if using password based login - this will never be returned. This can be left out of subsequent requests (updates) and will be enriched back into the user structure. */ - password?: string + password?: string; /** * @description The status of the user, if they are active. * @enum {string} */ - status?: "active" + status?: "active"; /** @description The first name of the user */ - firstName?: string + firstName?: string; /** @description The last name of the user */ - lastName?: string + lastName?: string; /** @description If set to true forces the user to reset their password on first login. */ - forceResetPassword?: boolean + forceResetPassword?: boolean; /** @description Describes if the user is a builder user or not. */ builder?: { /** @description If set to true the user will be able to build any app in the system. */ - global?: boolean - } + global?: boolean; + }; /** @description Describes if the user is an admin user or not. */ admin?: { /** @description If set to true the user will be able to administrate the system. */ - global?: boolean - } + global?: boolean; + }; /** @description Contains the roles of the user per app (assuming they are not a builder user). */ - roles: { [key: string]: string } + roles: { [key: string]: string }; /** @description The ID of the user. */ - _id: string - } - } + _id: string; + }; + }; nameSearch: { /** @description The name to be used when searching - this will be used in a case insensitive starts with match. */ - name: string - } - } + name: string; + }; + }; parameters: { /** @description The ID of the table which this request is targeting. */ - tableId: string + tableId: string; /** @description The ID of the row which this request is targeting. */ - rowId: string + rowId: string; /** @description The ID of the app which this request is targeting. */ - appId: string + appId: string; /** @description The ID of the app which this request is targeting. */ - appIdUrl: string + appIdUrl: string; /** @description The ID of the query which this request is targeting. */ - queryId: string + queryId: string; /** @description The ID of the user which this request is targeting. */ - userId: string - } + userId: string; + }; } export interface operations {} From a78b70799e0f5c7d602902549923fd843ada34a7 Mon Sep 17 00:00:00 2001 From: mike12345567 Date: Tue, 1 Mar 2022 22:37:42 +0000 Subject: [PATCH 59/64] Review comments and linting. --- packages/server/specs/openapi.json | 54 +- packages/server/specs/openapi.yaml | 21 +- packages/server/specs/resources/query.js | 9 +- packages/server/specs/resources/row.js | 9 +- .../public/mapping/applications.ts | 4 +- .../api/controllers/public/mapping/queries.ts | 4 +- .../api/controllers/public/mapping/rows.ts | 4 +- .../api/controllers/public/mapping/tables.ts | 4 +- .../api/controllers/public/mapping/types.ts | 6 +- .../api/controllers/public/mapping/users.ts | 4 +- packages/server/src/definitions/openapi.ts | 839 +++++++++--------- 11 files changed, 430 insertions(+), 528 deletions(-) diff --git a/packages/server/specs/openapi.json b/packages/server/specs/openapi.json index 9ee081eb09..3e68d3edca 100644 --- a/packages/server/specs/openapi.json +++ b/packages/server/specs/openapi.json @@ -497,23 +497,7 @@ "description": "The row to be created/updated, based on the table schema.", "type": "object", "additionalProperties": { - "oneOf": [ - { - "type": "string" - }, - { - "type": "object" - }, - { - "type": "integer" - }, - { - "type": "array" - }, - { - "type": "boolean" - } - ] + "description": "Key value properties of any type, depending on the table schema." } }, "searchOutput": { @@ -553,23 +537,7 @@ "description": "The row to be created/updated, based on the table schema.", "type": "object", "additionalProperties": { - "oneOf": [ - { - "type": "string" - }, - { - "type": "object" - }, - { - "type": "integer" - }, - { - "type": "array" - }, - { - "type": "boolean" - } - ] + "description": "Key value properties of any type, depending on the table schema." }, "properties": { "_id": { @@ -1006,23 +974,7 @@ "description": "The query body must contain the required parameters for the query, this depends on query type, setup and bindings.", "type": "object", "additionalProperties": { - "oneOf": [ - { - "type": "string" - }, - { - "type": "object" - }, - { - "type": "integer" - }, - { - "type": "array" - }, - { - "type": "boolean" - } - ] + "description": "Key value properties of any type, depending on the query output schema." } }, "executeQueryOutput": { diff --git a/packages/server/specs/openapi.yaml b/packages/server/specs/openapi.yaml index c9b7a38e0d..298eb73636 100644 --- a/packages/server/specs/openapi.yaml +++ b/packages/server/specs/openapi.yaml @@ -356,12 +356,7 @@ components: description: The row to be created/updated, based on the table schema. type: object additionalProperties: - oneOf: - - type: string - - type: object - - type: integer - - type: array - - type: boolean + description: Key value properties of any type, depending on the table schema. searchOutput: type: object required: @@ -389,12 +384,7 @@ components: description: The row to be created/updated, based on the table schema. type: object additionalProperties: - oneOf: - - type: string - - type: object - - type: integer - - type: array - - type: boolean + description: Key value properties of any type, depending on the table schema. properties: _id: description: The ID of the row. @@ -737,12 +727,7 @@ components: this depends on query type, setup and bindings. type: object additionalProperties: - oneOf: - - type: string - - type: object - - type: integer - - type: array - - type: boolean + description: Key value properties of any type, depending on the query output schema. executeQueryOutput: type: object properties: diff --git a/packages/server/specs/resources/query.js b/packages/server/specs/resources/query.js index 8a0b888024..46498ddd27 100644 --- a/packages/server/specs/resources/query.js +++ b/packages/server/specs/resources/query.js @@ -128,13 +128,8 @@ const executeQuerySchema = { "The query body must contain the required parameters for the query, this depends on query type, setup and bindings.", type: "object", additionalProperties: { - oneOf: [ - { type: "string" }, - { type: "object" }, - { type: "integer" }, - { type: "array" }, - { type: "boolean" }, - ], + description: + "Key value properties of any type, depending on the query output schema.", }, } diff --git a/packages/server/specs/resources/row.js b/packages/server/specs/resources/row.js index 2bd540af0e..4e6359a029 100644 --- a/packages/server/specs/resources/row.js +++ b/packages/server/specs/resources/row.js @@ -48,13 +48,8 @@ const rowSchema = { description: "The row to be created/updated, based on the table schema.", type: "object", additionalProperties: { - oneOf: [ - { type: "string" }, - { type: "object" }, - { type: "integer" }, - { type: "array" }, - { type: "boolean" }, - ], + description: + "Key value properties of any type, depending on the table schema.", }, } diff --git a/packages/server/src/api/controllers/public/mapping/applications.ts b/packages/server/src/api/controllers/public/mapping/applications.ts index a78c51bfb1..0b729fc610 100644 --- a/packages/server/src/api/controllers/public/mapping/applications.ts +++ b/packages/server/src/api/controllers/public/mapping/applications.ts @@ -1,4 +1,4 @@ -import { Application, ApplicationOutput } from "./types" +import { Application } from "./types" function application(body: any): Application { let app = body?.application ? body.application : body @@ -15,7 +15,7 @@ function application(body: any): Application { } } -function mapApplication(ctx: any): ApplicationOutput { +function mapApplication(ctx: any): { data: Application } { return { data: application(ctx.body), } diff --git a/packages/server/src/api/controllers/public/mapping/queries.ts b/packages/server/src/api/controllers/public/mapping/queries.ts index a9f220442d..481b5f18c4 100644 --- a/packages/server/src/api/controllers/public/mapping/queries.ts +++ b/packages/server/src/api/controllers/public/mapping/queries.ts @@ -1,4 +1,4 @@ -import { Query, ExecuteQueryOutput } from "./types" +import { Query, ExecuteQuery } from "./types" function query(body: any): Query { return { @@ -21,7 +21,7 @@ function mapQueries(ctx: any): { data: Query[] } { } } -function mapQueryExecution(ctx: any): ExecuteQueryOutput { +function mapQueryExecution(ctx: any): ExecuteQuery { // very little we can map here, structure mostly unknown return { data: ctx.body.data, diff --git a/packages/server/src/api/controllers/public/mapping/rows.ts b/packages/server/src/api/controllers/public/mapping/rows.ts index 623a210b3d..c1cba43718 100644 --- a/packages/server/src/api/controllers/public/mapping/rows.ts +++ b/packages/server/src/api/controllers/public/mapping/rows.ts @@ -1,4 +1,4 @@ -import { Row, RowSearch, RowOutput } from "./types" +import { Row, RowSearch } from "./types" function row(body: any): Row { delete body._rev @@ -19,7 +19,7 @@ function mapRowSearch(ctx: any): RowSearch { } } -function mapRow(ctx: any): RowOutput { +function mapRow(ctx: any): { data: Row } { return { data: row(ctx.body), } diff --git a/packages/server/src/api/controllers/public/mapping/tables.ts b/packages/server/src/api/controllers/public/mapping/tables.ts index 7c582becc7..72ed9f1a9a 100644 --- a/packages/server/src/api/controllers/public/mapping/tables.ts +++ b/packages/server/src/api/controllers/public/mapping/tables.ts @@ -1,4 +1,4 @@ -import { Table, TableOutput } from "./types" +import { Table } from "./types" function table(body: any): Table { return { @@ -9,7 +9,7 @@ function table(body: any): Table { } } -function mapTable(ctx: any): TableOutput { +function mapTable(ctx: any): { data: Table } { return { data: table(ctx.body), } diff --git a/packages/server/src/api/controllers/public/mapping/types.ts b/packages/server/src/api/controllers/public/mapping/types.ts index b2559ce9ba..a82a525f9c 100644 --- a/packages/server/src/api/controllers/public/mapping/types.ts +++ b/packages/server/src/api/controllers/public/mapping/types.ts @@ -1,17 +1,13 @@ import { components } from "../../../../definitions/openapi" export type Query = components["schemas"]["query"] -export type ExecuteQueryOutput = components["schemas"]["executeQueryOutput"] +export type ExecuteQuery = components["schemas"]["executeQueryOutput"] export type Application = components["schemas"]["applicationOutput"]["data"] -export type ApplicationOutput = components["schemas"]["applicationOutput"] export type Table = components["schemas"]["tableOutput"]["data"] -export type TableOutput = components["schemas"]["tableOutput"] export type Row = components["schemas"]["rowOutput"]["data"] -export type RowOutput = components["schemas"]["rowOutput"] export type RowSearch = components["schemas"]["searchOutput"] export type User = components["schemas"]["userOutput"]["data"] -export type UserOutput = components["schemas"]["userOutput"] diff --git a/packages/server/src/api/controllers/public/mapping/users.ts b/packages/server/src/api/controllers/public/mapping/users.ts index 847378c7c3..db08b16552 100644 --- a/packages/server/src/api/controllers/public/mapping/users.ts +++ b/packages/server/src/api/controllers/public/mapping/users.ts @@ -1,4 +1,4 @@ -import { User, UserOutput } from "./types" +import { User } from "./types" function user(body: any): User { return { @@ -15,7 +15,7 @@ function user(body: any): User { } } -function mapUser(ctx: any): UserOutput { +function mapUser(ctx: any): { data: User } { return { data: user(ctx.body), } diff --git a/packages/server/src/definitions/openapi.ts b/packages/server/src/definitions/openapi.ts index af2c2e2bb8..71a9298040 100644 --- a/packages/server/src/definitions/openapi.ts +++ b/packages/server/src/definitions/openapi.ts @@ -9,283 +9,283 @@ export interface paths { parameters: { header: { /** The ID of the app which this request is targeting. */ - "x-budibase-app-id": components["parameters"]["appId"]; - }; - }; + "x-budibase-app-id": components["parameters"]["appId"] + } + } responses: { /** Returns the created application. */ 200: { content: { - "application/json": components["schemas"]["applicationOutput"]; - }; - }; - }; + "application/json": components["schemas"]["applicationOutput"] + } + } + } requestBody: { content: { - "application/json": components["schemas"]["application"]; - }; - }; - }; - }; + "application/json": components["schemas"]["application"] + } + } + } + } "/applications/{appId}": { get: { parameters: { path: { /** The ID of the app which this request is targeting. */ - appId: components["parameters"]["appIdUrl"]; - }; - }; + appId: components["parameters"]["appIdUrl"] + } + } responses: { /** Returns the retrieved application. */ 200: { content: { - "application/json": components["schemas"]["applicationOutput"]; - }; - }; - }; - }; + "application/json": components["schemas"]["applicationOutput"] + } + } + } + } put: { parameters: { path: { /** The ID of the app which this request is targeting. */ - appId: components["parameters"]["appIdUrl"]; - }; - }; + appId: components["parameters"]["appIdUrl"] + } + } responses: { /** Returns the updated application. */ 200: { content: { - "application/json": components["schemas"]["applicationOutput"]; - }; - }; - }; + "application/json": components["schemas"]["applicationOutput"] + } + } + } requestBody: { content: { - "application/json": components["schemas"]["application"]; - }; - }; - }; + "application/json": components["schemas"]["application"] + } + } + } delete: { parameters: { path: { /** The ID of the app which this request is targeting. */ - appId: components["parameters"]["appIdUrl"]; - }; - }; + appId: components["parameters"]["appIdUrl"] + } + } responses: { /** Returns the deleted application. */ 200: { content: { - "application/json": components["schemas"]["applicationOutput"]; - }; - }; - }; - }; - }; + "application/json": components["schemas"]["applicationOutput"] + } + } + } + } + } "/applications/search": { /** Based on application properties (currently only name) search for applications. */ post: { parameters: { header: { /** The ID of the app which this request is targeting. */ - "x-budibase-app-id": components["parameters"]["appId"]; - }; - }; + "x-budibase-app-id": components["parameters"]["appId"] + } + } responses: { /** Returns the applications that were found based on the search parameters. */ 200: { content: { "application/json": { - data: components["schemas"]["application"][]; - }; - }; - }; - }; + data: components["schemas"]["application"][] + } + } + } + } requestBody: { content: { - "application/json": components["schemas"]["nameSearch"]; - }; - }; - }; - }; + "application/json": components["schemas"]["nameSearch"] + } + } + } + } "/queries/{queryId}": { /** Queries which have been created within a Budibase app can be executed using this, */ post: { parameters: { path: { /** The ID of the query which this request is targeting. */ - queryId: components["parameters"]["queryId"]; - }; + queryId: components["parameters"]["queryId"] + } header: { /** The ID of the app which this request is targeting. */ - "x-budibase-app-id": components["parameters"]["appId"]; - }; - }; + "x-budibase-app-id": components["parameters"]["appId"] + } + } responses: { /** Returns the result of the query execution. */ 200: { content: { - "application/json": components["schemas"]["executeQueryOutput"]; - }; - }; - }; + "application/json": components["schemas"]["executeQueryOutput"] + } + } + } requestBody: { content: { - "application/json": components["schemas"]["executeQuery"]; - }; - }; - }; - }; + "application/json": components["schemas"]["executeQuery"] + } + } + } + } "/queries/search": { /** Based on query properties (currently only name) search for queries. */ post: { parameters: { header: { /** The ID of the app which this request is targeting. */ - "x-budibase-app-id": components["parameters"]["appId"]; - }; - }; + "x-budibase-app-id": components["parameters"]["appId"] + } + } responses: { /** Returns the queries found based on the search parameters. */ 200: { content: { "application/json": { - data: components["schemas"]["query"][]; - }; - }; - }; - }; + data: components["schemas"]["query"][] + } + } + } + } requestBody: { content: { - "application/json": components["schemas"]["nameSearch"]; - }; - }; - }; - }; + "application/json": components["schemas"]["nameSearch"] + } + } + } + } "/tables/{tableId}/rows": { /** Creates a row within the specified table. */ post: { parameters: { path: { /** The ID of the table which this request is targeting. */ - tableId: components["parameters"]["tableId"]; - }; + tableId: components["parameters"]["tableId"] + } header: { /** The ID of the app which this request is targeting. */ - "x-budibase-app-id": components["parameters"]["appId"]; - }; - }; + "x-budibase-app-id": components["parameters"]["appId"] + } + } responses: { /** Returns the created row, including the ID which has been generated for it. This can be found in the Budibase portal, viewed under the developer information. */ 200: { content: { - "application/json": components["schemas"]["rowOutput"]; - }; - }; - }; + "application/json": components["schemas"]["rowOutput"] + } + } + } requestBody: { content: { - "application/json": components["schemas"]["row"]; - }; - }; - }; - }; + "application/json": components["schemas"]["row"] + } + } + } + } "/tables/{tableId}/rows/{rowId}": { /** This gets a single row, it will be enriched with the full related rows, rather than the squashed "primaryDisplay" format returned by the search endpoint. */ get: { parameters: { path: { /** The ID of the table which this request is targeting. */ - tableId: components["parameters"]["tableId"]; + tableId: components["parameters"]["tableId"] /** The ID of the row which this request is targeting. */ - rowId: components["parameters"]["rowId"]; - }; + rowId: components["parameters"]["rowId"] + } header: { /** The ID of the app which this request is targeting. */ - "x-budibase-app-id": components["parameters"]["appId"]; - }; - }; + "x-budibase-app-id": components["parameters"]["appId"] + } + } responses: { /** Returns the retrieved row. */ 200: { content: { - "application/json": components["schemas"]["rowOutput"]; - }; - }; - }; - }; + "application/json": components["schemas"]["rowOutput"] + } + } + } + } /** Updates a row within the specified table. */ put: { parameters: { path: { /** The ID of the table which this request is targeting. */ - tableId: components["parameters"]["tableId"]; + tableId: components["parameters"]["tableId"] /** The ID of the row which this request is targeting. */ - rowId: components["parameters"]["rowId"]; - }; + rowId: components["parameters"]["rowId"] + } header: { /** The ID of the app which this request is targeting. */ - "x-budibase-app-id": components["parameters"]["appId"]; - }; - }; + "x-budibase-app-id": components["parameters"]["appId"] + } + } responses: { /** Returns the created row, including the ID which has been generated for it. */ 200: { content: { - "application/json": components["schemas"]["rowOutput"]; - }; - }; - }; + "application/json": components["schemas"]["rowOutput"] + } + } + } requestBody: { content: { - "application/json": components["schemas"]["row"]; - }; - }; - }; + "application/json": components["schemas"]["row"] + } + } + } /** Deletes a row within the specified table. */ delete: { parameters: { path: { /** The ID of the table which this request is targeting. */ - tableId: components["parameters"]["tableId"]; + tableId: components["parameters"]["tableId"] /** The ID of the row which this request is targeting. */ - rowId: components["parameters"]["rowId"]; - }; + rowId: components["parameters"]["rowId"] + } header: { /** The ID of the app which this request is targeting. */ - "x-budibase-app-id": components["parameters"]["appId"]; - }; - }; + "x-budibase-app-id": components["parameters"]["appId"] + } + } responses: { /** Returns the deleted row, including the ID which has been generated for it. */ 200: { content: { - "application/json": components["schemas"]["rowOutput"]; - }; - }; - }; - }; - }; + "application/json": components["schemas"]["rowOutput"] + } + } + } + } + } "/tables/{tableId}/rows/search": { post: { parameters: { path: { /** The ID of the table which this request is targeting. */ - tableId: components["parameters"]["tableId"]; - }; + tableId: components["parameters"]["tableId"] + } header: { /** The ID of the app which this request is targeting. */ - "x-budibase-app-id": components["parameters"]["appId"]; - }; - }; + "x-budibase-app-id": components["parameters"]["appId"] + } + } responses: { /** The response will contain an array of rows that match the search parameters. */ 200: { content: { - "application/json": components["schemas"]["searchOutput"]; - }; - }; - }; + "application/json": components["schemas"]["searchOutput"] + } + } + } requestBody: { content: { "application/json": { @@ -294,246 +294,246 @@ export interface paths { * @description A map of field name to the string to search for, this will look for rows that have a value starting with the string value. * @example [object Object] */ - string?: { [key: string]: string }; + string?: { [key: string]: string } /** @description A fuzzy search, only supported by internal tables. */ - fuzzy?: { [key: string]: unknown }; + fuzzy?: { [key: string]: unknown } /** * @description Searches within a range, the format of this must be columnName -> [low, high]. * @example [object Object] */ - range?: { [key: string]: unknown }; + range?: { [key: string]: unknown } /** @description Searches for rows that have a column value that is exactly the value set. */ - equal?: { [key: string]: unknown }; + equal?: { [key: string]: unknown } /** @description Searches for any row which does not contain the specified column value. */ - notEqual?: { [key: string]: unknown }; + notEqual?: { [key: string]: unknown } /** * @description Searches for rows which do not contain the specified column. The object should simply contain keys of the column names, these can map to any value. * @example [object Object] */ - empty?: { [key: string]: unknown }; + empty?: { [key: string]: unknown } /** @description Searches for rows which have the specified column. */ - notEmpty?: { [key: string]: unknown }; + notEmpty?: { [key: string]: unknown } /** @description Searches for rows which have a column value that is any of the specified values. The format of this must be columnName -> [value1, value2]. */ - oneOf?: { [key: string]: unknown }; - }; + oneOf?: { [key: string]: unknown } + } /** @description Enables pagination, by default this is disabled. */ - paginate?: boolean; + paginate?: boolean /** @description If retrieving another page, the bookmark from the previous request must be supplied. */ - bookmark?: string | number; + bookmark?: string | number /** @description The maximum number of rows to return, useful when paginating, for internal tables this will be limited to 1000, for SQL tables it will be 5000. */ - limit?: number; + limit?: number /** @description A set of parameters describing the sort behaviour of the search. */ sort?: { /** * @description The order of the sort, by default this is ascending. * @enum {string} */ - order?: "ascending" | "descending"; + order?: "ascending" | "descending" /** @description The name of the column by which the rows will be sorted. */ - column?: string; + column?: string /** * @description Defines whether the column should be treated as a string or as numbers when sorting. * @enum {string} */ - type?: "string" | "number"; - }; - }; - }; - }; - }; - }; + type?: "string" | "number" + } + } + } + } + } + } "/tables": { /** Create a table, this could be internal or external. */ post: { parameters: { header: { /** The ID of the app which this request is targeting. */ - "x-budibase-app-id": components["parameters"]["appId"]; - }; - }; + "x-budibase-app-id": components["parameters"]["appId"] + } + } responses: { /** Returns the created table, including the ID which has been generated for it. This can be internal or external data sources. */ 200: { content: { - "application/json": components["schemas"]["tableOutput"]; - }; - }; - }; + "application/json": components["schemas"]["tableOutput"] + } + } + } requestBody: { content: { - "application/json": components["schemas"]["table"]; - }; - }; - }; - }; + "application/json": components["schemas"]["table"] + } + } + } + } "/tables/{tableId}": { /** Lookup a table, this could be internal or external. */ get: { parameters: { path: { /** The ID of the table which this request is targeting. */ - tableId: components["parameters"]["tableId"]; - }; + tableId: components["parameters"]["tableId"] + } header: { /** The ID of the app which this request is targeting. */ - "x-budibase-app-id": components["parameters"]["appId"]; - }; - }; + "x-budibase-app-id": components["parameters"]["appId"] + } + } responses: { /** Returns the retrieved table. */ 200: { content: { - "application/json": components["schemas"]["tableOutput"]; - }; - }; - }; - }; + "application/json": components["schemas"]["tableOutput"] + } + } + } + } /** Update a table, this could be internal or external. */ put: { parameters: { path: { /** The ID of the table which this request is targeting. */ - tableId: components["parameters"]["tableId"]; - }; + tableId: components["parameters"]["tableId"] + } header: { /** The ID of the app which this request is targeting. */ - "x-budibase-app-id": components["parameters"]["appId"]; - }; - }; + "x-budibase-app-id": components["parameters"]["appId"] + } + } responses: { /** Returns the updated table. */ 200: { content: { - "application/json": components["schemas"]["tableOutput"]; - }; - }; - }; + "application/json": components["schemas"]["tableOutput"] + } + } + } requestBody: { content: { - "application/json": components["schemas"]["table"]; - }; - }; - }; + "application/json": components["schemas"]["table"] + } + } + } /** Delete a table, this could be internal or external. */ delete: { parameters: { path: { /** The ID of the table which this request is targeting. */ - tableId: components["parameters"]["tableId"]; - }; + tableId: components["parameters"]["tableId"] + } header: { /** The ID of the app which this request is targeting. */ - "x-budibase-app-id": components["parameters"]["appId"]; - }; - }; + "x-budibase-app-id": components["parameters"]["appId"] + } + } responses: { /** Returns the deleted table. */ 200: { content: { - "application/json": components["schemas"]["tableOutput"]; - }; - }; - }; - }; - }; + "application/json": components["schemas"]["tableOutput"] + } + } + } + } + } "/tables/search": { /** Based on table properties (currently only name) search for tables. This could be an internal or an external table. */ post: { parameters: { header: { /** The ID of the app which this request is targeting. */ - "x-budibase-app-id": components["parameters"]["appId"]; - }; - }; + "x-budibase-app-id": components["parameters"]["appId"] + } + } responses: { /** Returns the found tables, based on the search parameters. */ 200: { content: { "application/json": { - data: components["schemas"]["table"][]; - }; - }; - }; - }; + data: components["schemas"]["table"][] + } + } + } + } requestBody: { content: { - "application/json": components["schemas"]["nameSearch"]; - }; - }; - }; - }; + "application/json": components["schemas"]["nameSearch"] + } + } + } + } "/users": { post: { responses: { /** Returns the created user. */ 200: { content: { - "application/json": components["schemas"]["userOutput"]; - }; - }; - }; + "application/json": components["schemas"]["userOutput"] + } + } + } requestBody: { content: { - "application/json": components["schemas"]["user"]; - }; - }; - }; - }; + "application/json": components["schemas"]["user"] + } + } + } + } "/users/{userId}": { get: { parameters: { path: { /** The ID of the user which this request is targeting. */ - userId: components["parameters"]["userId"]; - }; - }; + userId: components["parameters"]["userId"] + } + } responses: { /** Returns the retrieved user. */ 200: { content: { - "application/json": components["schemas"]["userOutput"]; - }; - }; - }; - }; + "application/json": components["schemas"]["userOutput"] + } + } + } + } put: { parameters: { path: { /** The ID of the user which this request is targeting. */ - userId: components["parameters"]["userId"]; - }; - }; + userId: components["parameters"]["userId"] + } + } responses: { /** Returns the updated user. */ 200: { content: { - "application/json": components["schemas"]["userOutput"]; - }; - }; - }; + "application/json": components["schemas"]["userOutput"] + } + } + } requestBody: { content: { - "application/json": components["schemas"]["user"]; - }; - }; - }; + "application/json": components["schemas"]["user"] + } + } + } delete: { parameters: { path: { /** The ID of the user which this request is targeting. */ - userId: components["parameters"]["userId"]; - }; - }; + userId: components["parameters"]["userId"] + } + } responses: { /** Returns the deleted user. */ 200: { content: { - "application/json": components["schemas"]["userOutput"]; - }; - }; - }; - }; - }; + "application/json": components["schemas"]["userOutput"] + } + } + } + } + } "/users/search": { /** Based on user properties (currently only name) search for users. */ post: { @@ -542,92 +542,78 @@ export interface paths { 200: { content: { "application/json": { - data: components["schemas"]["user"][]; - }; - }; - }; - }; + data: components["schemas"]["user"][] + } + } + } + } requestBody: { content: { - "application/json": components["schemas"]["nameSearch"]; - }; - }; - }; - }; + "application/json": components["schemas"]["nameSearch"] + } + } + } + } } export interface components { schemas: { application: { /** @description The name of the app. */ - name: string; + name: string /** @description The URL by which the app is accessed, this must be URL encoded. */ - url: string; - }; + url: string + } applicationOutput: { data: { /** @description The name of the app. */ - name: string; + name: string /** @description The URL by which the app is accessed, this must be URL encoded. */ - url: string; + url: string /** @description The ID of the app. */ - _id: string; + _id: string /** * @description The status of the app, stating it if is the development or published version. * @enum {string} */ - status: "development" | "published"; + status: "development" | "published" /** @description States when the app was created, will be constant. Stored in ISO format. */ - createdAt: string; + createdAt: string /** @description States the last time the app was updated - stored in ISO format. */ - updatedAt: string; + updatedAt: string /** @description States the version of the Budibase client this app is currently based on. */ - version: string; + version: string /** @description In a multi-tenant environment this will state the tenant this app is within. */ - tenantId?: string; + tenantId?: string /** @description The user this app is currently being built by. */ - lockedBy?: { [key: string]: unknown }; - }; - }; + lockedBy?: { [key: string]: unknown } + } + } /** @description The row to be created/updated, based on the table schema. */ - row: { - [key: string]: - | string - | { [key: string]: unknown } - | number - | unknown[] - | boolean; - }; + row: { [key: string]: unknown } searchOutput: { /** @description An array of rows, these will each contain an _id field which can be used to update or delete them. */ - data: { [key: string]: unknown }[]; + data: { [key: string]: unknown }[] /** @description If pagination in use, this should be provided. */ - bookmark?: string | number; + bookmark?: string | number /** @description If pagination in use, this will determine if there is another page to fetch. */ - hasNextPage?: boolean; - }; + hasNextPage?: boolean + } rowOutput: { /** @description The row to be created/updated, based on the table schema. */ data: { /** @description The ID of the row. */ - _id: string; + _id: string /** @description The ID of the table this row comes from. */ - tableId: string; - } & { - [key: string]: - | string - | { [key: string]: unknown } - | number - | unknown[] - | boolean; - }; - }; + tableId: string + } & { [key: string]: unknown } + } /** @description The table to be created/updated. */ table: { /** @description The name of the table. */ - name: string; + name: string /** @description The name of the column which should be used in relationship tags when relating to this table. */ - primaryDisplay?: string; + primaryDisplay?: string schema: { [key: string]: | { @@ -635,60 +621,60 @@ export interface components { * @description A relationship column. * @enum {string} */ - type?: "link"; + type?: "link" /** @description A constraint can be applied to the column which will be validated against when a row is saved. */ constraints?: { /** @enum {string} */ - type?: "string" | "number" | "object" | "boolean"; + type?: "string" | "number" | "object" | "boolean" /** @description Defines whether the column is required or not. */ - presence?: boolean; - }; + presence?: boolean + } /** @description The name of the column. */ - name?: string; + name?: string /** @description Defines whether the column is automatically generated. */ - autocolumn?: boolean; + autocolumn?: boolean /** @description The name of the column which a relationship column is related to in another table. */ - fieldName?: string; + fieldName?: string /** @description The ID of the table which a relationship column is related to. */ - tableId?: string; + tableId?: string /** * @description Defines the type of relationship that this column will be used for. * @enum {string} */ - relationshipType?: "one-to-many" | "many-to-one" | "many-to-many"; + relationshipType?: "one-to-many" | "many-to-one" | "many-to-many" /** @description When using a SQL table that contains many to many relationships this defines the table the relationships are linked through. */ - through?: string; + through?: string /** @description When using a SQL table that contains a one to many relationship this defines the foreign key. */ - foreignKey?: string; + foreignKey?: string /** @description When using a SQL table that utilises a through table, this defines the primary key in the through table for this table. */ - throughFrom?: string; + throughFrom?: string /** @description When using a SQL table that utilises a through table, this defines the primary key in the through table for the related table. */ - throughTo?: string; + throughTo?: string } | { /** * @description A formula column. * @enum {string} */ - type?: "formula"; + type?: "formula" /** @description A constraint can be applied to the column which will be validated against when a row is saved. */ constraints?: { /** @enum {string} */ - type?: "string" | "number" | "object" | "boolean"; + type?: "string" | "number" | "object" | "boolean" /** @description Defines whether the column is required or not. */ - presence?: boolean; - }; + presence?: boolean + } /** @description The name of the column. */ - name?: string; + name?: string /** @description Defines whether the column is automatically generated. */ - autocolumn?: boolean; + autocolumn?: boolean /** @description Defines a Handlebars or JavaScript formula to use, note that Javascript formulas are expected to be provided in the base64 format. */ - formula?: string; + formula?: string /** * @description Defines whether this is a static or dynamic formula. * @enum {string} */ - formulaType?: "static" | "dynamic"; + formulaType?: "static" | "dynamic" } | { /** @@ -708,28 +694,28 @@ export interface components { | "formula" | "auto" | "json" - | "internal"; + | "internal" /** @description A constraint can be applied to the column which will be validated against when a row is saved. */ constraints?: { /** @enum {string} */ - type?: "string" | "number" | "object" | "boolean"; + type?: "string" | "number" | "object" | "boolean" /** @description Defines whether the column is required or not. */ - presence?: boolean; - }; + presence?: boolean + } /** @description The name of the column. */ - name?: string; + name?: string /** @description Defines whether the column is automatically generated. */ - autocolumn?: boolean; - }; - }; - }; + autocolumn?: boolean + } + } + } tableOutput: { /** @description The table to be created/updated. */ data: { /** @description The name of the table. */ - name: string; + name: string /** @description The name of the column which should be used in relationship tags when relating to this table. */ - primaryDisplay?: string; + primaryDisplay?: string schema: { [key: string]: | { @@ -737,22 +723,22 @@ export interface components { * @description A relationship column. * @enum {string} */ - type?: "link"; + type?: "link" /** @description A constraint can be applied to the column which will be validated against when a row is saved. */ constraints?: { /** @enum {string} */ - type?: "string" | "number" | "object" | "boolean"; + type?: "string" | "number" | "object" | "boolean" /** @description Defines whether the column is required or not. */ - presence?: boolean; - }; + presence?: boolean + } /** @description The name of the column. */ - name?: string; + name?: string /** @description Defines whether the column is automatically generated. */ - autocolumn?: boolean; + autocolumn?: boolean /** @description The name of the column which a relationship column is related to in another table. */ - fieldName?: string; + fieldName?: string /** @description The ID of the table which a relationship column is related to. */ - tableId?: string; + tableId?: string /** * @description Defines the type of relationship that this column will be used for. * @enum {string} @@ -760,40 +746,40 @@ export interface components { relationshipType?: | "one-to-many" | "many-to-one" - | "many-to-many"; + | "many-to-many" /** @description When using a SQL table that contains many to many relationships this defines the table the relationships are linked through. */ - through?: string; + through?: string /** @description When using a SQL table that contains a one to many relationship this defines the foreign key. */ - foreignKey?: string; + foreignKey?: string /** @description When using a SQL table that utilises a through table, this defines the primary key in the through table for this table. */ - throughFrom?: string; + throughFrom?: string /** @description When using a SQL table that utilises a through table, this defines the primary key in the through table for the related table. */ - throughTo?: string; + throughTo?: string } | { /** * @description A formula column. * @enum {string} */ - type?: "formula"; + type?: "formula" /** @description A constraint can be applied to the column which will be validated against when a row is saved. */ constraints?: { /** @enum {string} */ - type?: "string" | "number" | "object" | "boolean"; + type?: "string" | "number" | "object" | "boolean" /** @description Defines whether the column is required or not. */ - presence?: boolean; - }; + presence?: boolean + } /** @description The name of the column. */ - name?: string; + name?: string /** @description Defines whether the column is automatically generated. */ - autocolumn?: boolean; + autocolumn?: boolean /** @description Defines a Handlebars or JavaScript formula to use, note that Javascript formulas are expected to be provided in the base64 format. */ - formula?: string; + formula?: string /** * @description Defines whether this is a static or dynamic formula. * @enum {string} */ - formulaType?: "static" | "dynamic"; + formulaType?: "static" | "dynamic" } | { /** @@ -813,150 +799,143 @@ export interface components { | "formula" | "auto" | "json" - | "internal"; + | "internal" /** @description A constraint can be applied to the column which will be validated against when a row is saved. */ constraints?: { /** @enum {string} */ - type?: "string" | "number" | "object" | "boolean"; + type?: "string" | "number" | "object" | "boolean" /** @description Defines whether the column is required or not. */ - presence?: boolean; - }; + presence?: boolean + } /** @description The name of the column. */ - name?: string; + name?: string /** @description Defines whether the column is automatically generated. */ - autocolumn?: boolean; - }; - }; + autocolumn?: boolean + } + } /** @description The ID of the table. */ - _id: string; - }; - }; + _id: string + } + } /** @description The query body must contain the required parameters for the query, this depends on query type, setup and bindings. */ - executeQuery: { - [key: string]: - | string - | { [key: string]: unknown } - | number - | unknown[] - | boolean; - }; + executeQuery: { [key: string]: unknown } executeQueryOutput: { /** @description The data response from the query. */ - data: { [key: string]: unknown }[]; + data: { [key: string]: unknown }[] /** @description Extra information that is not part of the main data, e.g. headers. */ extra?: { /** @description If carrying out a REST request, this will contain the response headers. */ - headers?: { [key: string]: unknown }; + headers?: { [key: string]: unknown } /** @description The raw query response, as a string. */ - raw?: string; - }; + raw?: string + } /** @description If pagination is supported, this will contain the bookmark/anchor information for it. */ - pagination?: { [key: string]: unknown }; - }; + pagination?: { [key: string]: unknown } + } query: { /** @description The ID of the query. */ - _id: string; + _id: string /** @description The ID of the data source the query belongs to. */ - datasourceId?: string; + datasourceId?: string /** @description The bindings which are required to perform this query. */ - parameters?: string[]; + parameters?: string[] /** @description The fields that are used to perform this query, e.g. the sql statement */ - fields?: { [key: string]: unknown }; + fields?: { [key: string]: unknown } /** * @description The verb that describes this query. * @enum {undefined} */ - queryVerb?: "create" | "read" | "update" | "delete"; + queryVerb?: "create" | "read" | "update" | "delete" /** @description The name of the query. */ - name: string; + name: string /** @description The schema of the data returned when the query is executed. */ - schema: { [key: string]: unknown }; + schema: { [key: string]: unknown } /** @description The JavaScript transformer function, applied after the query responds with data. */ - transformer?: string; + transformer?: string /** @description Whether the query has readable data. */ - readable?: boolean; - }; + readable?: boolean + } user: { /** @description The email address of the user, this must be unique. */ - email: string; + email: string /** @description The password of the user if using password based login - this will never be returned. This can be left out of subsequent requests (updates) and will be enriched back into the user structure. */ - password?: string; + password?: string /** * @description The status of the user, if they are active. * @enum {string} */ - status?: "active"; + status?: "active" /** @description The first name of the user */ - firstName?: string; + firstName?: string /** @description The last name of the user */ - lastName?: string; + lastName?: string /** @description If set to true forces the user to reset their password on first login. */ - forceResetPassword?: boolean; + forceResetPassword?: boolean /** @description Describes if the user is a builder user or not. */ builder?: { /** @description If set to true the user will be able to build any app in the system. */ - global?: boolean; - }; + global?: boolean + } /** @description Describes if the user is an admin user or not. */ admin?: { /** @description If set to true the user will be able to administrate the system. */ - global?: boolean; - }; + global?: boolean + } /** @description Contains the roles of the user per app (assuming they are not a builder user). */ - roles: { [key: string]: string }; - }; + roles: { [key: string]: string } + } userOutput: { data: { /** @description The email address of the user, this must be unique. */ - email: string; + email: string /** @description The password of the user if using password based login - this will never be returned. This can be left out of subsequent requests (updates) and will be enriched back into the user structure. */ - password?: string; + password?: string /** * @description The status of the user, if they are active. * @enum {string} */ - status?: "active"; + status?: "active" /** @description The first name of the user */ - firstName?: string; + firstName?: string /** @description The last name of the user */ - lastName?: string; + lastName?: string /** @description If set to true forces the user to reset their password on first login. */ - forceResetPassword?: boolean; + forceResetPassword?: boolean /** @description Describes if the user is a builder user or not. */ builder?: { /** @description If set to true the user will be able to build any app in the system. */ - global?: boolean; - }; + global?: boolean + } /** @description Describes if the user is an admin user or not. */ admin?: { /** @description If set to true the user will be able to administrate the system. */ - global?: boolean; - }; + global?: boolean + } /** @description Contains the roles of the user per app (assuming they are not a builder user). */ - roles: { [key: string]: string }; + roles: { [key: string]: string } /** @description The ID of the user. */ - _id: string; - }; - }; + _id: string + } + } nameSearch: { /** @description The name to be used when searching - this will be used in a case insensitive starts with match. */ - name: string; - }; - }; + name: string + } + } parameters: { /** @description The ID of the table which this request is targeting. */ - tableId: string; + tableId: string /** @description The ID of the row which this request is targeting. */ - rowId: string; + rowId: string /** @description The ID of the app which this request is targeting. */ - appId: string; + appId: string /** @description The ID of the app which this request is targeting. */ - appIdUrl: string; + appIdUrl: string /** @description The ID of the query which this request is targeting. */ - queryId: string; + queryId: string /** @description The ID of the user which this request is targeting. */ - userId: string; - }; + userId: string + } } export interface operations {} From c53a020ea1de4dc5b9a37148d23a1fa86fcc860c Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Wed, 2 Mar 2022 09:56:25 +0000 Subject: [PATCH 60/64] Bump prismjs from 1.25.0 to 1.27.0 in /packages/server Bumps [prismjs](https://github.com/PrismJS/prism) from 1.25.0 to 1.27.0. - [Release notes](https://github.com/PrismJS/prism/releases) - [Changelog](https://github.com/PrismJS/prism/blob/master/CHANGELOG.md) - [Commits](https://github.com/PrismJS/prism/compare/v1.25.0...v1.27.0) --- updated-dependencies: - dependency-name: prismjs dependency-type: indirect ... Signed-off-by: dependabot[bot] --- packages/server/yarn.lock | 356 ++++++++++++++++++++++++-------------- 1 file changed, 224 insertions(+), 132 deletions(-) diff --git a/packages/server/yarn.lock b/packages/server/yarn.lock index 618bd10d6d..52e54da930 100644 --- a/packages/server/yarn.lock +++ b/packages/server/yarn.lock @@ -995,10 +995,10 @@ resolved "https://registry.yarnpkg.com/@bcoe/v8-coverage/-/v8-coverage-0.2.3.tgz#75a2e8b51cb758a7553d6804a5932d7aace75c39" integrity sha512-0hYQ8SB4Db5zvZB4axdMHGwEaQjkZzFjQiN9LVYvIFB2nSUHW9tYpxWriPrWDASIxiaXax83REcLxuSdnGPZtw== -"@budibase/backend-core@^1.0.76-alpha.5": - version "1.0.78" - resolved "https://registry.yarnpkg.com/@budibase/backend-core/-/backend-core-1.0.78.tgz#0ff9cb57961f67456916a3c58a07d3c04c90acd3" - integrity sha512-/dXAKIrP6GfzM2jc2bH9aeOdVS5aVgQZoU8fwzhTZCd5t9dlsh1jY0WjHfDX4pBYhapVCbzIwseL/OmseZ+0NA== +"@budibase/backend-core@^1.0.79-alpha.5": + version "1.0.79-alpha.5" + resolved "https://registry.yarnpkg.com/@budibase/backend-core/-/backend-core-1.0.79-alpha.5.tgz#dac73ccfcd2e6e63415cde6d76e4bf09043dc6b6" + integrity sha512-m7/z55fp+EYVYEAyuQ2K//AcrfgzLBcR4EVjP+rrmbIhGFbLV2ASl5IBg9bcAYp0z2m816skJrY2asx9raWhgw== dependencies: "@techpass/passport-openidconnect" "^0.3.0" aws-sdk "^2.901.0" @@ -1068,80 +1068,54 @@ svelte-flatpickr "^3.2.3" svelte-portal "^1.0.0" -"@budibase/bbui@^1.0.78": - version "1.0.78" - resolved "https://registry.yarnpkg.com/@budibase/bbui/-/bbui-1.0.78.tgz#b63c66e8083aac2b10fe03f66230378188564ac6" - integrity sha512-+iKe8NmjsJufnYuSaCKbS1TmrtCU/HWt1V3vj5QmWcVZ4Vr2xpVUPuAuSugy4goFoVO2VODofiDwvdStCZnvPw== +"@budibase/bbui@^1.0.79-alpha.5": + version "1.58.13" + resolved "https://registry.yarnpkg.com/@budibase/bbui/-/bbui-1.58.13.tgz#59df9c73def2d81c75dcbd2266c52c19db88dbd7" + integrity sha512-Zk6CKXdBfKsTVzA1Xs5++shdSSZLfphVpZuKVbjfzkgtuhyH7ruucexuSHEpFsxjW5rEKgKIBoRFzCK5vPvN0w== 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" - easymde "^2.16.1" - svelte-flatpickr "^3.2.3" + markdown-it "^12.0.2" + quill "^1.3.7" + sirv-cli "^0.4.6" + svelte-flatpickr "^2.4.0" svelte-portal "^1.0.0" + turndown "^7.0.0" -"@budibase/client@^1.0.76-alpha.5": - version "1.0.78" - resolved "https://registry.yarnpkg.com/@budibase/client/-/client-1.0.78.tgz#c85d3c31a080c054c9c4965de70e9a6595fc3fb1" - integrity sha512-JRqTvcCt0v5XA+pWQehfC/+/r7leX6nJGcIs3skrRXLQV3NwoVF4IdNA7MMsANw0tZ4GzV956VV+bf9QfIE+Vg== +"@budibase/client@^1.0.79-alpha.5": + version "1.0.79-alpha.5" + resolved "https://registry.yarnpkg.com/@budibase/client/-/client-1.0.79-alpha.5.tgz#d729858b10e6cd2a506fb63364a0e7ab3149780e" + integrity sha512-OrBErU97YL67GggsLmcD46AUElSgtyFjZdCXi++3s4zaZYZxT4Ix2iFMrnslcpF87bv8xyiSt3vsyCPGKCU5wQ== dependencies: - "@budibase/bbui" "^1.0.78" - "@budibase/frontend-core" "^1.0.78" - "@budibase/string-templates" "^1.0.78" + "@budibase/bbui" "^1.0.79-alpha.5" + "@budibase/frontend-core" "^1.0.79-alpha.5" + "@budibase/string-templates" "^1.0.79-alpha.5" + "@spectrum-css/button" "^3.0.3" + "@spectrum-css/card" "^3.0.3" + "@spectrum-css/divider" "^1.0.3" + "@spectrum-css/link" "^3.1.3" + "@spectrum-css/page" "^3.0.1" + "@spectrum-css/tag" "^3.1.4" + "@spectrum-css/typography" "^3.0.2" + "@spectrum-css/vars" "^3.0.1" + apexcharts "^3.22.1" + dayjs "^1.10.5" regexparam "^1.3.0" rollup-plugin-polyfill-node "^0.8.0" shortid "^2.2.15" + svelte "^3.38.2" + svelte-apexcharts "^1.0.2" + svelte-flatpickr "^3.1.0" svelte-spa-router "^3.0.5" -"@budibase/frontend-core@^1.0.78": - version "1.0.78" - resolved "https://registry.yarnpkg.com/@budibase/frontend-core/-/frontend-core-1.0.78.tgz#9a9d20f1263580b271845a4dc6541a8bc59db45d" - integrity sha512-bBaChKm9qU53nW/FIeztAoe3e3k3m6OP0EU6hP4AwDPKTCuV26554G6k7+M/IIZ4QtWPXCTp1Z+t45kycBzmPQ== +"@budibase/frontend-core@^1.0.79-alpha.5": + version "1.0.79-alpha.5" + resolved "https://registry.yarnpkg.com/@budibase/frontend-core/-/frontend-core-1.0.79-alpha.5.tgz#7da5faf83d6cc5a59d8e038c2e9333e27bff35d5" + integrity sha512-5xti0MdKRvNKwYUE5cp4rH8IwLPmuRz39ajck947ut2OWzXV9bt7SXzoKPSSzEGdCBA2DgzJpK3gQWYlqXiJiQ== dependencies: - "@budibase/bbui" "^1.0.78" + "@budibase/bbui" "^1.0.79-alpha.5" lodash "^4.17.21" svelte "^3.46.2" -"@budibase/handlebars-helpers@^0.11.7": +"@budibase/handlebars-helpers@^0.11.8": version "0.11.8" resolved "https://registry.yarnpkg.com/@budibase/handlebars-helpers/-/handlebars-helpers-0.11.8.tgz#6953d29673a8c5c407e096c0a84890465c7ce841" integrity sha512-ggWJUt0GqsHFAEup5tlWlcrmYML57nKhpNGGLzVsqXVYN8eVmf3xluYmmMe7fDYhQH0leSprrdEXmsdFQF3HAQ== @@ -1184,12 +1158,12 @@ svelte-apexcharts "^1.0.2" svelte-flatpickr "^3.1.0" -"@budibase/string-templates@^1.0.76-alpha.5", "@budibase/string-templates@^1.0.78": - version "1.0.78" - resolved "https://registry.yarnpkg.com/@budibase/string-templates/-/string-templates-1.0.78.tgz#ef1b92f58d3723ea93ce0be1b02bb785ccf9a38c" - integrity sha512-v47I/AgOhsMIMl823d1rNURJbhe0GHo/w3KNTOZZzHv98QaRZuTOYjs+e9Vg6kbAy3iRCk2rK4MdXUxAe3jWKw== +"@budibase/string-templates@^1.0.79-alpha.5": + version "1.0.79-alpha.5" + resolved "https://registry.yarnpkg.com/@budibase/string-templates/-/string-templates-1.0.79-alpha.5.tgz#063f5beca7d3b4a9757df77dcf1bd8a442d7522e" + integrity sha512-Rifn1h1Pn53KYCFX6GHmMq+fD4IEnfRXEWrf4RD7cy4TVCYqCIcI84tnzUwibkyuCbpDw4zh0RR0m4nemf7heg== dependencies: - "@budibase/handlebars-helpers" "^0.11.7" + "@budibase/handlebars-helpers" "^0.11.8" dayjs "^1.10.4" handlebars "^4.7.6" handlebars-utils "^1.0.6" @@ -1932,6 +1906,11 @@ "@nodelib/fs.scandir" "2.1.5" fastq "^1.6.0" +"@polka/url@^0.5.0": + version "0.5.0" + resolved "https://registry.yarnpkg.com/@polka/url/-/url-0.5.0.tgz#b21510597fd601e5d7c95008b76bf0d254ebfd31" + integrity sha512-oZLYFEAzUKyi3SKnXvj32ZCEGH6RDnao7COuCVhDydMS9NrCSVXhM79VaKyP5+Zc33m0QXEd2DN3UkU7OsHcfw== + "@rollup/plugin-inject@^4.0.0": version "4.0.4" resolved "https://registry.yarnpkg.com/@rollup/plugin-inject/-/plugin-inject-4.0.4.tgz#fbeee66e9a700782c4f65c8b0edbafe58678fbc2" @@ -2137,11 +2116,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.6" - resolved "https://registry.yarnpkg.com/@spectrum-css/inlinealert/-/inlinealert-2.0.6.tgz#4c5e923a1f56a96cc1adb30ef1f06ae04f2c6376" - integrity sha512-OpvvoWP02wWyCnF4IgG8SOPkXymovkC9cGtgMS1FdDubnG3tJZB/JeKTsRR9C9Vt3WBaOmISRdSKlZ4lC9CFzA== - "@spectrum-css/inputgroup@^3.0.2": version "3.0.8" resolved "https://registry.yarnpkg.com/@spectrum-css/inputgroup/-/inputgroup-3.0.8.tgz#fc23afc8a73c24d17249c9d2337e8b42085b298b" @@ -2239,6 +2213,11 @@ resolved "https://registry.yarnpkg.com/@spectrum-css/tabs/-/tabs-3.1.5.tgz#cc82e69c1fc721902345178231fb95d05938b983" integrity sha512-UtfW8bA1quYnJM6v/lp6AVYGnQFkiUix2FHAf/4VHVrk4mh7ydtLiXS0IR3Kx+t/S8FWdSdSQHDZ8tHbY1ZLZg== +"@spectrum-css/tag@^3.1.4": + version "3.3.3" + resolved "https://registry.yarnpkg.com/@spectrum-css/tag/-/tag-3.3.3.tgz#826bf03525d10f1ae034681095337973bd43f4af" + integrity sha512-sWcopo4Pgl5VMOF0TuP6on3KmnrcGcaYfBt1/LDAin8+pUoqv2NgLv5BkO7maaPsd9pCLU4K9Y8NPXbujDOefQ== + "@spectrum-css/tags@^3.0.2": version "3.0.3" resolved "https://registry.yarnpkg.com/@spectrum-css/tags/-/tags-3.0.3.tgz#fc76d2735cdc442de91b7eb3bee49a928c0767ac" @@ -2392,13 +2371,6 @@ resolved "https://registry.yarnpkg.com/@types/caseless/-/caseless-0.12.2.tgz#f65d3d6389e01eeb458bd54dc8f52b95a9463bc8" integrity sha512-6ckxMjBBD8URvjB6J3NcnuAn5Pkl7t3TizAg+xdlzzQGSPSmBcXf8KoIH0ua/i+tio+ZRUHEXp0HEmvaR4kt0w== -"@types/codemirror@^5.60.4": - version "5.60.5" - resolved "https://registry.yarnpkg.com/@types/codemirror/-/codemirror-5.60.5.tgz#5b989a3b4bbe657458cf372c92b6bfda6061a2b7" - integrity sha512-TiECZmm8St5YxjFUp64LK0c8WU5bxMDt9YaAek1UqUb9swrSCoJhh92fWu1p3mTEqlHjhB5sY7OFBhWroJXZVg== - dependencies: - "@types/tern" "*" - "@types/connect@*": version "3.4.35" resolved "https://registry.yarnpkg.com/@types/connect/-/connect-3.4.35.tgz#5fcf6ae445e4021d1fc2219a4873cc73a3bb2ad1" @@ -2580,11 +2552,6 @@ "@types/koa-compose" "*" "@types/node" "*" -"@types/marked@^4.0.1": - version "4.0.2" - resolved "https://registry.yarnpkg.com/@types/marked/-/marked-4.0.2.tgz#cb2dbf10da2f41cf20bd91fb5f89b67540c282f7" - integrity sha512-auNrZ/c0w6wsM9DccwVxWHssrMDezHUAXNesdp2RQrCVCyrQbOiSq7yqdJKrUQQpw9VTm7CGYJH2A/YG7jjrjQ== - "@types/mime@^1": version "1.3.2" resolved "https://registry.yarnpkg.com/@types/mime/-/mime-1.3.2.tgz#93e25bf9ee75fe0fd80b594bc4feb0e862111b5a" @@ -2677,13 +2644,6 @@ "@types/cookiejar" "*" "@types/node" "*" -"@types/tern@*": - version "0.23.4" - resolved "https://registry.yarnpkg.com/@types/tern/-/tern-0.23.4.tgz#03926eb13dbeaf3ae0d390caf706b2643a0127fb" - integrity sha512-JAUw1iXGO1qaWwEOzxTKJZ/5JxVeON9kvGZ/osgZaJImBnyjyn0cjovPsf6FNLmyGY8Vw9DoXZCMlfMkMwHRWg== - dependencies: - "@types/estree" "*" - "@types/tough-cookie@*": version "4.0.1" resolved "https://registry.yarnpkg.com/@types/tough-cookie/-/tough-cookie-4.0.1.tgz#8f80dd965ad81f3e1bc26d6f5c727e132721ff40" @@ -4150,6 +4110,11 @@ clone-response@1.0.2, clone-response@^1.0.2: dependencies: mimic-response "^1.0.0" +clone@^2.1.1: + version "2.1.2" + resolved "https://registry.yarnpkg.com/clone/-/clone-2.1.2.tgz#1b7f4b9f591f1e8f83670401600345a02887435f" + integrity sha1-G39Ln1kfHo+DZwQBYANFoCiHQ18= + cls-hooked@^4.2.2: version "4.2.2" resolved "https://registry.yarnpkg.com/cls-hooked/-/cls-hooked-4.2.2.tgz#ad2e9a4092680cdaffeb2d3551da0e225eae1908" @@ -4179,18 +4144,6 @@ co@^4.6.0: resolved "https://registry.yarnpkg.com/co/-/co-4.6.0.tgz#6ea6bdf3d853ae54ccb8e47bfa0bf3f9031fb184" integrity sha1-bqa989hTrlTMuOR7+gvz+QMfsYQ= -codemirror-spell-checker@1.1.2: - version "1.1.2" - resolved "https://registry.yarnpkg.com/codemirror-spell-checker/-/codemirror-spell-checker-1.1.2.tgz#1c660f9089483ccb5113b9ba9ca19c3f4993371e" - integrity sha1-HGYPkIlIPMtRE7m6nKGcP0mTNx4= - dependencies: - typo-js "*" - -codemirror@^5.63.1: - version "5.65.2" - resolved "https://registry.yarnpkg.com/codemirror/-/codemirror-5.65.2.tgz#5799a70cb3d706e10f60e267245e3a75205d3dd9" - integrity sha512-SZM4Zq7XEC8Fhroqe3LxbEEX1zUPWH1wMr5zxiBuiUF64iYOUH/JI88v4tBag8MiBS8B8gRv8O1pPXGYXQ4ErA== - collect-v8-coverage@^1.0.0: version "1.0.1" resolved "https://registry.yarnpkg.com/collect-v8-coverage/-/collect-v8-coverage-1.0.1.tgz#cc2c8e94fc18bbdffe64d6534570c8a673b27f59" @@ -4372,6 +4325,11 @@ configstore@^5.0.1: write-file-atomic "^3.0.0" xdg-basedir "^4.0.0" +console-clear@^1.1.0: + version "1.1.1" + resolved "https://registry.yarnpkg.com/console-clear/-/console-clear-1.1.1.tgz#995e20cbfbf14dd792b672cde387bd128d674bf7" + integrity sha512-pMD+MVR538ipqkG5JXeOEbKWS5um1H4LUUccUQG68qpeqBYbzYy79Gh55jkd2TtPdRfUaLWdv6LPP//5Zt0aPQ== + consolidate@^0.16.0: version "0.16.0" resolved "https://registry.yarnpkg.com/consolidate/-/consolidate-0.16.0.tgz#a11864768930f2f19431660a65906668f5fbdc16" @@ -4712,6 +4670,18 @@ dedent@^0.7.0: resolved "https://registry.yarnpkg.com/dedent/-/dedent-0.7.0.tgz#2495ddbaf6eb874abb0e1be9df22d2e5a544326c" integrity sha1-JJXduvbrh0q7Dhvp3yLS5aVEMmw= +deep-equal@^1.0.1: + version "1.1.1" + resolved "https://registry.yarnpkg.com/deep-equal/-/deep-equal-1.1.1.tgz#b5c98c942ceffaf7cb051e24e1434a25a2e6076a" + integrity sha512-yd9c5AdiqVcR+JjcwUQb9DkhJc8ngNr0MahEBGvDiJw8puWab2yZlh+nkasOnZP+EGTAP6rRp2JzJhJZzvNF8g== + dependencies: + is-arguments "^1.0.4" + is-date-object "^1.0.1" + is-regex "^1.0.4" + object-is "^1.0.1" + object-keys "^1.1.1" + regexp.prototype.flags "^1.2.0" + deep-equal@~1.0.1: version "1.0.1" resolved "https://registry.yarnpkg.com/deep-equal/-/deep-equal-1.0.1.tgz#f5d260292b660e084eff4cdbc9f08ad3247448b5" @@ -4922,6 +4892,11 @@ domexception@^2.0.1: dependencies: webidl-conversions "^5.0.0" +domino@^2.1.6: + version "2.1.6" + resolved "https://registry.yarnpkg.com/domino/-/domino-2.1.6.tgz#fe4ace4310526e5e7b9d12c7de01b7f485a57ffe" + integrity sha512-3VdM/SXBZX2omc9JF9nOPCtDaYQ67BGp5CoLpIQlO2KCAPETs8TcDHacF26jXadGbvUteZzRTeos2fhID5+ucQ== + dot-prop@^5.2.0: version "5.3.0" resolved "https://registry.yarnpkg.com/dot-prop/-/dot-prop-5.3.0.tgz#90ccce708cd9cd82cc4dc8c3ddd9abdd55b20e88" @@ -4966,17 +4941,6 @@ duplexer3@^0.1.4: resolved "https://registry.yarnpkg.com/duplexer3/-/duplexer3-0.1.4.tgz#ee01dd1cac0ed3cbc7fdbea37dc0a8f1ce002ce2" integrity sha1-7gHdHKwO08vH/b6jfcCo8c4ALOI= -easymde@^2.16.1: - version "2.16.1" - resolved "https://registry.yarnpkg.com/easymde/-/easymde-2.16.1.tgz#f4c2380312615cb33826f1a1fecfaa4022ff551a" - integrity sha512-FihYgjRsKfhGNk89SHSqxKLC4aJ1kfybPWW6iAmtb5GnXu+tnFPSzSaGBmk1RRlCuhFSjhF0SnIMGVPjEzkr6g== - dependencies: - "@types/codemirror" "^5.60.4" - "@types/marked" "^4.0.1" - codemirror "^5.63.1" - codemirror-spell-checker "1.1.2" - marked "^4.0.10" - ecc-jsbn@~0.1.1: version "0.1.2" resolved "https://registry.yarnpkg.com/ecc-jsbn/-/ecc-jsbn-0.1.2.tgz#3a83a904e54353287874c564b7549386849a98c9" @@ -5521,6 +5485,11 @@ event-target-shim@^5.0.0: resolved "https://registry.yarnpkg.com/event-target-shim/-/event-target-shim-5.0.1.tgz#5d4d3ebdf9583d63a5333ce2deb7480ab2b05789" integrity sha512-i/2XbnSz/uxRCU6+NdVJgKWDTM427+MqYbkQzD321DuCQJUqOuJKIA0IM2+W2xtYHdKOmZ4dR6fExsd4SXL+WQ== +eventemitter3@^2.0.3: + version "2.0.3" + resolved "https://registry.yarnpkg.com/eventemitter3/-/eventemitter3-2.0.3.tgz#b5e1079b59fb5e1ba2771c0a993be060a58c99ba" + integrity sha1-teEHm1n7XhuidxwKmTvgYKWMmbo= + events@1.1.1: version "1.1.1" resolved "https://registry.yarnpkg.com/events/-/events-1.1.1.tgz#9ebdb7635ad099c70dcc4c2a1f5004288e8bd924" @@ -5707,6 +5676,11 @@ fast-deep-equal@^3.1.1: resolved "https://registry.yarnpkg.com/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz#3a7d56b559d6cbc3eb512325244e619a65c6c525" integrity sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q== +fast-diff@1.1.2: + version "1.1.2" + resolved "https://registry.yarnpkg.com/fast-diff/-/fast-diff-1.1.2.tgz#4b62c42b8e03de3f848460b639079920695d0154" + integrity sha512-KaJUt+M9t1qaIteSvjc6P3RbMdXsNhK61GRftR6SNxqmhthcd9MGIi4T+o0jD8LUSpSnSKXE20nLtJ3fOHxQig== + fast-glob@^3.1.1: version "3.2.7" resolved "https://registry.yarnpkg.com/fast-glob/-/fast-glob-3.2.7.tgz#fd6cb7a2d7e9aa7a7846111e85a196d6b2f766a1" @@ -6168,6 +6142,11 @@ get-paths@0.0.7: dependencies: pify "^4.0.1" +get-port@^3.2.0: + version "3.2.0" + resolved "https://registry.yarnpkg.com/get-port/-/get-port-3.2.0.tgz#dd7ce7de187c06c8bf353796ac71e099f0980ebc" + integrity sha1-3Xzn3hh8Bsi/NTeWrHHgmfCYDrw= + get-port@^5.1.1: version "5.1.1" resolved "https://registry.yarnpkg.com/get-port/-/get-port-5.1.1.tgz#0469ed07563479de6efb986baf053dcd7d4e3193" @@ -6962,6 +6941,14 @@ is-accessor-descriptor@^1.0.0: dependencies: kind-of "^6.0.0" +is-arguments@^1.0.4: + version "1.1.1" + resolved "https://registry.yarnpkg.com/is-arguments/-/is-arguments-1.1.1.tgz#15b3f88fda01f2a97fec84ca761a560f123efa9b" + integrity sha512-8Q7EARjzEnKpt/PCD7e1cgUS0a6X8u5tdSiMqXhojOdoV9TsMsiO+9VLC5vAmO8N7/GmXn7yjR8qnA6bVAEzfA== + dependencies: + call-bind "^1.0.2" + has-tostringtag "^1.0.0" + is-arrayish@^0.2.1: version "0.2.1" resolved "https://registry.yarnpkg.com/is-arrayish/-/is-arrayish-0.2.1.tgz#77c99840527aa8ecb1a8ba697b80645a7a926a9d" @@ -7226,7 +7213,7 @@ is-property@^1.0.2: resolved "https://registry.yarnpkg.com/is-property/-/is-property-1.0.2.tgz#57fe1c4e48474edd65b09911f26b1cd4095dda84" integrity sha1-V/4cTkhHTt1lsJkR8msc1Ald2oQ= -is-regex@^1.1.4: +is-regex@^1.0.4, is-regex@^1.1.4: version "1.1.4" resolved "https://registry.yarnpkg.com/is-regex/-/is-regex-1.1.4.tgz#eef5663cd59fa4c0ae339505323df6854bb15958" integrity sha512-kvRdxDsxZjhzUX07ZnLydzS1TU/TJlTUHHY4YLL87e37oUA49DfkLqgy+VjFocowy29cKvcSiu+kIv728jTTVg== @@ -8564,7 +8551,7 @@ klaw-sync@^6.0.0: dependencies: graceful-fs "^4.1.11" -kleur@^3.0.3: +kleur@^3.0.0, kleur@^3.0.3: version "3.0.3" resolved "https://registry.yarnpkg.com/kleur/-/kleur-3.0.3.tgz#a79c9ecc86ee1ce3fa6206d1216c501f147fc07e" integrity sha512-eTIzlVOSUR+JxdDFepEYcBMtZ9Qqdef+rnzWdRZuMbOywu5tO2w2N7rqjoANZ5k9vywhL6Br1VRjUIgTQx4E8w== @@ -8988,6 +8975,11 @@ loader-utils@^2.0.0: emojis-list "^3.0.0" json5 "^2.1.2" +local-access@^1.0.1: + version "1.1.0" + resolved "https://registry.yarnpkg.com/local-access/-/local-access-1.1.0.tgz#e007c76ba2ca83d5877ba1a125fc8dfe23ba4798" + integrity sha512-XfegD5pyTAfb+GY6chk283Ox5z8WexG56OvM06RWLpAc/UHozO8X6xAxEkIitZOtsSMM1Yr3DkHgW5W+onLhCw== + locate-path@^3.0.0: version "3.0.0" resolved "https://registry.yarnpkg.com/locate-path/-/locate-path-3.0.0.tgz#dbec3b3ab759758071b58fe59fc41871af21400e" @@ -9266,6 +9258,17 @@ map-visit@^1.0.0: dependencies: object-visit "^1.0.0" +markdown-it@^12.0.2: + version "12.3.2" + resolved "https://registry.yarnpkg.com/markdown-it/-/markdown-it-12.3.2.tgz#bf92ac92283fe983fe4de8ff8abfb5ad72cd0c90" + integrity sha512-TchMembfxfNVpHkbtriWltGWc+m3xszaRD0CZup7GFFhzIgQqxIfn3eGj1yZpfuflzPvfkt611B2Q/Bsk1YnGg== + dependencies: + argparse "^2.0.1" + entities "~2.1.0" + linkify-it "^3.0.1" + mdurl "^1.0.1" + uc.micro "^1.0.5" + markdown-it@^12.2.0: version "12.2.0" resolved "https://registry.yarnpkg.com/markdown-it/-/markdown-it-12.2.0.tgz#091f720fd5db206f80de7a8d1f1a7035fd0d38db" @@ -9277,11 +9280,6 @@ markdown-it@^12.2.0: mdurl "^1.0.1" uc.micro "^1.0.5" -marked@^4.0.10: - version "4.0.12" - resolved "https://registry.yarnpkg.com/marked/-/marked-4.0.12.tgz#2262a4e6fd1afd2f13557726238b69a48b982f7d" - integrity sha512-hgibXWrEDNBWgGiK18j/4lkS6ihTe9sxtV4Q1OQppb/0zzyPSzoFANBa5MfsG/zgsWklmNnhm0XACZOH/0HBiQ== - md5@^2.3.0: version "2.3.0" resolved "https://registry.yarnpkg.com/md5/-/md5-2.3.0.tgz#c3da9a6aae3a30b46b7b0c349b87b110dc3bda4f" @@ -9411,6 +9409,11 @@ mime@^1.3.4, mime@^1.4.1: resolved "https://registry.yarnpkg.com/mime/-/mime-1.6.0.tgz#32cd9e5c64553bd58d19a568af452acff04981b1" integrity sha512-x0Vn8spI+wuJ1O6S7gnbaQg8Pxh4NNHb7KSINmEWKiPE4RKOplvijn+NkmYmmRgP68mc70j2EbeTFRsrswaQeg== +mime@^2.3.1: + version "2.6.0" + resolved "https://registry.yarnpkg.com/mime/-/mime-2.6.0.tgz#a2a682a95cd4d0cb1d6257e28f83da7e35800367" + integrity sha512-USPkMeET31rOMiarsBNIHZKLGgvKc/LrjofAnBlOttf5ajRvqiRA8QsenbcooctK6d6Ts6aqZXBA+XbkKthiQg== + mime@^3.0.0: version "3.0.0" resolved "https://registry.yarnpkg.com/mime/-/mime-3.0.0.tgz#b374550dca3a0c18443b0c950a6a58f1931cf7a7" @@ -9500,6 +9503,11 @@ mri@1.1.4: resolved "https://registry.yarnpkg.com/mri/-/mri-1.1.4.tgz#7cb1dd1b9b40905f1fac053abe25b6720f44744a" integrity sha512-6y7IjGPm8AzlvoUrwAaw1tLnUBudaS3752vcd8JtrpGGQn+rXIe63LFVHm/YMwtqAuh+LJPCFdlLYPWM1nYn6w== +mri@^1.1.0: + version "1.2.0" + resolved "https://registry.yarnpkg.com/mri/-/mri-1.2.0.tgz#6721480fec2a11a4889861115a48b6cbe7cc8f0b" + integrity sha512-tzzskb3bG8LvYGFF/mDTpq3jpI6Q9wc3LEmBaghu+DdCssd1FakN7Bc0hVNmEyGq1bq3RgfkCb3cmQLpNPOroA== + ms@2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/ms/-/ms-2.0.0.tgz#5608aeadfc00be6c2901df5f9861788de0d597c8" @@ -9822,6 +9830,14 @@ object-inspect@^1.11.0, object-inspect@^1.9.0: resolved "https://registry.yarnpkg.com/object-inspect/-/object-inspect-1.11.0.tgz#9dceb146cedd4148a0d9e51ab88d34cf509922b1" integrity sha512-jp7ikS6Sd3GxQfZJPyH3cjcbJF6GZPClgdV+EFygjFLQ5FmW/dRUnTd9PQ9k0JhoNDabWFbpF1yCdSWCC6gexg== +object-is@^1.0.1: + version "1.1.5" + resolved "https://registry.yarnpkg.com/object-is/-/object-is-1.1.5.tgz#b9deeaa5fc7f1846a0faecdceec138e5778f53ac" + integrity sha512-3cyDsyHgtmi7I7DfSSI2LDp6SK2lwvtbg0p0R1e0RvTqF5ceGx+K2dfSjm1bKDMVCFEDAQvy+o8c6a7VujOddw== + dependencies: + call-bind "^1.0.2" + define-properties "^1.1.3" + object-keys@^1.0.12, object-keys@^1.0.6, object-keys@^1.1.1: version "1.1.1" resolved "https://registry.yarnpkg.com/object-keys/-/object-keys-1.1.1.tgz#1c47f272df277f3b1daf061677d9c82e2322c60e" @@ -10096,6 +10112,11 @@ pako@^1.0.5: resolved "https://registry.yarnpkg.com/pako/-/pako-1.0.11.tgz#6c9599d340d54dfd3946380252a35705a6b992bf" integrity sha512-4hLB8Py4zZce5s4yd9XzopqwVv/yGNhV1Bl8NTmCq1763HeK2+EwVTv+leGeL13Dnh2wfbqowVPXCIO0z4taYw== +parchment@^1.1.4: + version "1.1.4" + resolved "https://registry.yarnpkg.com/parchment/-/parchment-1.1.4.tgz#aeded7ab938fe921d4c34bc339ce1168bc2ffde5" + integrity sha512-J5FBQt/pM2inLzg4hEWmzQx/8h8D0CiDxaG3vyp9rKrQRSDgBlhjdP5jQGgosEajXPSQouXGHOmVdgo7QmJuOg== + parent-module@^1.0.0: version "1.0.1" resolved "https://registry.yarnpkg.com/parent-module/-/parent-module-1.0.1.tgz#691d2709e78c79fae3a156622452d00762caaaa2" @@ -10813,9 +10834,9 @@ pretty@^2.0.0: 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== + version "1.27.0" + resolved "https://registry.yarnpkg.com/prismjs/-/prismjs-1.27.0.tgz#bb6ee3138a0b438a3653dd4d6ce0cc6510a45057" + integrity sha512-t13BGPUlFDR7wRB5kQDG4jjl7XeuH6jbJGt11JHPL96qwsEHNX2+68tFXqc1/k+/jALsbSWJKUOT/hcYAZ5LkA== private@^0.1.6, private@~0.1.5: version "0.1.8" @@ -10958,6 +10979,27 @@ 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== +quill-delta@^3.6.2: + version "3.6.3" + resolved "https://registry.yarnpkg.com/quill-delta/-/quill-delta-3.6.3.tgz#b19fd2b89412301c60e1ff213d8d860eac0f1032" + integrity sha512-wdIGBlcX13tCHOXGMVnnTVFtGRLoP0imqxM696fIPwIf5ODIYUHIvHbZcyvGlZFiFhK5XzDC2lpjbxRhnM05Tg== + dependencies: + deep-equal "^1.0.1" + extend "^3.0.2" + fast-diff "1.1.2" + +quill@^1.3.7: + version "1.3.7" + resolved "https://registry.yarnpkg.com/quill/-/quill-1.3.7.tgz#da5b2f3a2c470e932340cdbf3668c9f21f9286e8" + integrity sha512-hG/DVzh/TiknWtE6QmWAF/pxoZKYxfe3J/d/+ShUWkDvvkZQVTPeVmUJVu1uE6DDooC4fWTiCLh84ul89oNz5g== + dependencies: + clone "^2.1.1" + deep-equal "^1.0.1" + eventemitter3 "^2.0.3" + extend "^3.0.2" + parchment "^1.1.4" + quill-delta "^3.6.2" + randombytes@^2.1.0: version "2.1.0" resolved "https://registry.yarnpkg.com/randombytes/-/randombytes-2.1.0.tgz#df6f84372f0270dc65cdf6291349ab7a473d4f2a" @@ -11173,6 +11215,14 @@ regex-not@^1.0.0, regex-not@^1.0.2: extend-shallow "^3.0.2" safe-regex "^1.1.0" +regexp.prototype.flags@^1.2.0: + version "1.4.1" + resolved "https://registry.yarnpkg.com/regexp.prototype.flags/-/regexp.prototype.flags-1.4.1.tgz#b3f4c0059af9e47eca9f3f660e51d81307e72307" + integrity sha512-pMR7hBVUUGI7PMA37m2ofIdQCsomVnas+Jn5UPGAHQ+/LlwKm/aTLJHdasmHRzlfeZwHiAOaRSo2rbBDm3nNUQ== + dependencies: + call-bind "^1.0.2" + define-properties "^1.1.3" + regexparam@2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/regexparam/-/regexparam-2.0.0.tgz#059476767d5f5f87f735fc7922d133fd1a118c8c" @@ -11454,6 +11504,13 @@ rxjs@^6.6.0: dependencies: tslib "^1.9.0" +sade@^1.4.0: + version "1.8.1" + resolved "https://registry.yarnpkg.com/sade/-/sade-1.8.1.tgz#0a78e81d658d394887be57d2a409bf703a3b2701" + integrity sha512-xal3CZX1Xlo/k4ApwCFrHVACi9fBqJ7V+mwhBsuf/1IOKbBy098Fex+Wa/5QMubw09pSZ/u8EY8PWgevJsXp1A== + dependencies: + mri "^1.1.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" @@ -11717,6 +11774,27 @@ simple-swizzle@^0.2.2: dependencies: is-arrayish "^0.3.1" +sirv-cli@^0.4.6: + version "0.4.6" + resolved "https://registry.yarnpkg.com/sirv-cli/-/sirv-cli-0.4.6.tgz#c28ab20deb3b34637f5a60863dc350f055abca04" + integrity sha512-/Vj85/kBvPL+n9ibgX6FicLE8VjidC1BhlX67PYPBfbBAphzR6i0k0HtU5c2arejfU3uzq8l3SYPCwl1x7z6Ww== + dependencies: + console-clear "^1.1.0" + get-port "^3.2.0" + kleur "^3.0.0" + local-access "^1.0.1" + sade "^1.4.0" + sirv "^0.4.6" + tinydate "^1.0.0" + +sirv@^0.4.6: + version "0.4.6" + resolved "https://registry.yarnpkg.com/sirv/-/sirv-0.4.6.tgz#185e44eb93d24009dd183b7494285c5180b81f22" + integrity sha512-rYpOXlNbpHiY4nVXxuDf4mXPvKz1reZGap/LkWp9TvcZ84qD/nPBjjH/6GZsgIjVMbOslnY8YYULAyP8jMn1GQ== + dependencies: + "@polka/url" "^0.5.0" + mime "^2.3.1" + sisteransi@^1.0.5: version "1.0.5" resolved "https://registry.yarnpkg.com/sisteransi/-/sisteransi-1.0.5.tgz#134d681297756437cc05ca01370d3a7a571075ed" @@ -12270,6 +12348,13 @@ svelte-apexcharts@^1.0.2: dependencies: apexcharts "^3.19.2" +svelte-flatpickr@^2.4.0: + version "2.4.0" + resolved "https://registry.yarnpkg.com/svelte-flatpickr/-/svelte-flatpickr-2.4.0.tgz#190871fc3305956c8c8fd3601cd036b8ac71ef49" + integrity sha512-UUC5Te+b0qi4POg7VDwfGh0m5W3Hf64OwkfOTj6FEe/dYZN4cBzpQ82EuuQl0CTbbBAsMkcjJcixV1d2V6EHCQ== + dependencies: + flatpickr "^4.5.2" + svelte-flatpickr@^3.1.0, svelte-flatpickr@^3.2.3: version "3.2.4" resolved "https://registry.yarnpkg.com/svelte-flatpickr/-/svelte-flatpickr-3.2.4.tgz#1824e26a5dc151d14906cfc7dfd100aefd1b072d" @@ -12611,6 +12696,11 @@ tinycolor2@^1.4.1: resolved "https://registry.yarnpkg.com/tinycolor2/-/tinycolor2-1.4.2.tgz#3f6a4d1071ad07676d7fa472e1fac40a719d8803" integrity sha512-vJhccZPs965sV/L2sU4oRQVAos0pQXwsvTLkWYdqJ+a8Q5kPFzJTuOFwy7UniPli44NKQGAglksjvOcpo95aZA== +tinydate@^1.0.0: + version "1.3.0" + resolved "https://registry.yarnpkg.com/tinydate/-/tinydate-1.3.0.tgz#e6ca8e5a22b51bb4ea1c3a2a4fd1352dbd4c57fb" + integrity sha512-7cR8rLy2QhYHpsBDBVYnnWXm8uRTr38RoZakFSW7Bs7PzfMPNZthuMLkwqZv7MTu8lhQ91cOFYS5a7iFj2oR3w== + tmp@^0.0.33: version "0.0.33" resolved "https://registry.yarnpkg.com/tmp/-/tmp-0.0.33.tgz#6d34335889768d21b2bcda0aa277ced3b1bfadf9" @@ -12822,6 +12912,13 @@ tunnel@0.0.6: resolved "https://registry.yarnpkg.com/tunnel/-/tunnel-0.0.6.tgz#72f1314b34a5b192db012324df2cc587ca47f92c" integrity sha512-1h/Lnq9yajKY2PEbBadPXj3VxsDDu844OnaAo52UVmIzIvwwtBPIuNvkjuzBlTWpfJyUbG3ez0KSBibQkj4ojg== +turndown@^7.0.0: + version "7.1.1" + resolved "https://registry.yarnpkg.com/turndown/-/turndown-7.1.1.tgz#96992f2d9b40a1a03d3ea61ad31b5a5c751ef77f" + integrity sha512-BEkXaWH7Wh7e9bd2QumhfAXk5g34+6QUmmWx+0q6ThaVOLuLUqsnkq35HQ5SBHSaxjSfSM7US5o4lhJNH7B9MA== + dependencies: + domino "^2.1.6" + tweetnacl@^0.14.3, tweetnacl@~0.14.0: version "0.14.5" resolved "https://registry.yarnpkg.com/tweetnacl/-/tweetnacl-0.14.5.tgz#5ae68177f192d4456269d108afa93ff8743f4f64" @@ -12891,11 +12988,6 @@ typescript@^4.3.5: resolved "https://registry.yarnpkg.com/typescript/-/typescript-4.3.5.tgz#4d1c37cc16e893973c45a06886b7113234f119f4" integrity sha512-DqQgihaQ9cUrskJo9kIyW/+g0Vxsk8cDtZ52a3NGh0YNTfpUSArXSohyUGnvbPazEPLu398C0UxmKSOrPumUzA== -typo-js@*: - version "1.2.1" - resolved "https://registry.yarnpkg.com/typo-js/-/typo-js-1.2.1.tgz#334a0d8c3f6c56f2f1e15fdf6c31677793cbbe9b" - integrity sha512-bTGLjbD3WqZDR3CgEFkyi9Q/SS2oM29ipXrWfDb4M74ea69QwKAECVceYpaBu0GfdnASMg9Qfl67ttB23nePHg== - 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" From c10211968224fa44f1e528868d101b08c94a5bd0 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Wed, 2 Mar 2022 09:56:26 +0000 Subject: [PATCH 61/64] Bump urijs from 1.19.7 to 1.19.8 in /packages/server Bumps [urijs](https://github.com/medialize/URI.js) from 1.19.7 to 1.19.8. - [Release notes](https://github.com/medialize/URI.js/releases) - [Changelog](https://github.com/medialize/URI.js/blob/gh-pages/CHANGELOG.md) - [Commits](https://github.com/medialize/URI.js/compare/v1.19.7...v1.19.8) --- updated-dependencies: - dependency-name: urijs dependency-type: indirect ... Signed-off-by: dependabot[bot] --- packages/server/yarn.lock | 356 ++++++++++++++++++++++++-------------- 1 file changed, 224 insertions(+), 132 deletions(-) diff --git a/packages/server/yarn.lock b/packages/server/yarn.lock index 618bd10d6d..1d771383bf 100644 --- a/packages/server/yarn.lock +++ b/packages/server/yarn.lock @@ -995,10 +995,10 @@ resolved "https://registry.yarnpkg.com/@bcoe/v8-coverage/-/v8-coverage-0.2.3.tgz#75a2e8b51cb758a7553d6804a5932d7aace75c39" integrity sha512-0hYQ8SB4Db5zvZB4axdMHGwEaQjkZzFjQiN9LVYvIFB2nSUHW9tYpxWriPrWDASIxiaXax83REcLxuSdnGPZtw== -"@budibase/backend-core@^1.0.76-alpha.5": - version "1.0.78" - resolved "https://registry.yarnpkg.com/@budibase/backend-core/-/backend-core-1.0.78.tgz#0ff9cb57961f67456916a3c58a07d3c04c90acd3" - integrity sha512-/dXAKIrP6GfzM2jc2bH9aeOdVS5aVgQZoU8fwzhTZCd5t9dlsh1jY0WjHfDX4pBYhapVCbzIwseL/OmseZ+0NA== +"@budibase/backend-core@^1.0.79-alpha.5": + version "1.0.79-alpha.5" + resolved "https://registry.yarnpkg.com/@budibase/backend-core/-/backend-core-1.0.79-alpha.5.tgz#dac73ccfcd2e6e63415cde6d76e4bf09043dc6b6" + integrity sha512-m7/z55fp+EYVYEAyuQ2K//AcrfgzLBcR4EVjP+rrmbIhGFbLV2ASl5IBg9bcAYp0z2m816skJrY2asx9raWhgw== dependencies: "@techpass/passport-openidconnect" "^0.3.0" aws-sdk "^2.901.0" @@ -1068,80 +1068,54 @@ svelte-flatpickr "^3.2.3" svelte-portal "^1.0.0" -"@budibase/bbui@^1.0.78": - version "1.0.78" - resolved "https://registry.yarnpkg.com/@budibase/bbui/-/bbui-1.0.78.tgz#b63c66e8083aac2b10fe03f66230378188564ac6" - integrity sha512-+iKe8NmjsJufnYuSaCKbS1TmrtCU/HWt1V3vj5QmWcVZ4Vr2xpVUPuAuSugy4goFoVO2VODofiDwvdStCZnvPw== +"@budibase/bbui@^1.0.79-alpha.5": + version "1.58.13" + resolved "https://registry.yarnpkg.com/@budibase/bbui/-/bbui-1.58.13.tgz#59df9c73def2d81c75dcbd2266c52c19db88dbd7" + integrity sha512-Zk6CKXdBfKsTVzA1Xs5++shdSSZLfphVpZuKVbjfzkgtuhyH7ruucexuSHEpFsxjW5rEKgKIBoRFzCK5vPvN0w== 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" - easymde "^2.16.1" - svelte-flatpickr "^3.2.3" + markdown-it "^12.0.2" + quill "^1.3.7" + sirv-cli "^0.4.6" + svelte-flatpickr "^2.4.0" svelte-portal "^1.0.0" + turndown "^7.0.0" -"@budibase/client@^1.0.76-alpha.5": - version "1.0.78" - resolved "https://registry.yarnpkg.com/@budibase/client/-/client-1.0.78.tgz#c85d3c31a080c054c9c4965de70e9a6595fc3fb1" - integrity sha512-JRqTvcCt0v5XA+pWQehfC/+/r7leX6nJGcIs3skrRXLQV3NwoVF4IdNA7MMsANw0tZ4GzV956VV+bf9QfIE+Vg== +"@budibase/client@^1.0.79-alpha.5": + version "1.0.79-alpha.5" + resolved "https://registry.yarnpkg.com/@budibase/client/-/client-1.0.79-alpha.5.tgz#d729858b10e6cd2a506fb63364a0e7ab3149780e" + integrity sha512-OrBErU97YL67GggsLmcD46AUElSgtyFjZdCXi++3s4zaZYZxT4Ix2iFMrnslcpF87bv8xyiSt3vsyCPGKCU5wQ== dependencies: - "@budibase/bbui" "^1.0.78" - "@budibase/frontend-core" "^1.0.78" - "@budibase/string-templates" "^1.0.78" + "@budibase/bbui" "^1.0.79-alpha.5" + "@budibase/frontend-core" "^1.0.79-alpha.5" + "@budibase/string-templates" "^1.0.79-alpha.5" + "@spectrum-css/button" "^3.0.3" + "@spectrum-css/card" "^3.0.3" + "@spectrum-css/divider" "^1.0.3" + "@spectrum-css/link" "^3.1.3" + "@spectrum-css/page" "^3.0.1" + "@spectrum-css/tag" "^3.1.4" + "@spectrum-css/typography" "^3.0.2" + "@spectrum-css/vars" "^3.0.1" + apexcharts "^3.22.1" + dayjs "^1.10.5" regexparam "^1.3.0" rollup-plugin-polyfill-node "^0.8.0" shortid "^2.2.15" + svelte "^3.38.2" + svelte-apexcharts "^1.0.2" + svelte-flatpickr "^3.1.0" svelte-spa-router "^3.0.5" -"@budibase/frontend-core@^1.0.78": - version "1.0.78" - resolved "https://registry.yarnpkg.com/@budibase/frontend-core/-/frontend-core-1.0.78.tgz#9a9d20f1263580b271845a4dc6541a8bc59db45d" - integrity sha512-bBaChKm9qU53nW/FIeztAoe3e3k3m6OP0EU6hP4AwDPKTCuV26554G6k7+M/IIZ4QtWPXCTp1Z+t45kycBzmPQ== +"@budibase/frontend-core@^1.0.79-alpha.5": + version "1.0.79-alpha.5" + resolved "https://registry.yarnpkg.com/@budibase/frontend-core/-/frontend-core-1.0.79-alpha.5.tgz#7da5faf83d6cc5a59d8e038c2e9333e27bff35d5" + integrity sha512-5xti0MdKRvNKwYUE5cp4rH8IwLPmuRz39ajck947ut2OWzXV9bt7SXzoKPSSzEGdCBA2DgzJpK3gQWYlqXiJiQ== dependencies: - "@budibase/bbui" "^1.0.78" + "@budibase/bbui" "^1.0.79-alpha.5" lodash "^4.17.21" svelte "^3.46.2" -"@budibase/handlebars-helpers@^0.11.7": +"@budibase/handlebars-helpers@^0.11.8": version "0.11.8" resolved "https://registry.yarnpkg.com/@budibase/handlebars-helpers/-/handlebars-helpers-0.11.8.tgz#6953d29673a8c5c407e096c0a84890465c7ce841" integrity sha512-ggWJUt0GqsHFAEup5tlWlcrmYML57nKhpNGGLzVsqXVYN8eVmf3xluYmmMe7fDYhQH0leSprrdEXmsdFQF3HAQ== @@ -1184,12 +1158,12 @@ svelte-apexcharts "^1.0.2" svelte-flatpickr "^3.1.0" -"@budibase/string-templates@^1.0.76-alpha.5", "@budibase/string-templates@^1.0.78": - version "1.0.78" - resolved "https://registry.yarnpkg.com/@budibase/string-templates/-/string-templates-1.0.78.tgz#ef1b92f58d3723ea93ce0be1b02bb785ccf9a38c" - integrity sha512-v47I/AgOhsMIMl823d1rNURJbhe0GHo/w3KNTOZZzHv98QaRZuTOYjs+e9Vg6kbAy3iRCk2rK4MdXUxAe3jWKw== +"@budibase/string-templates@^1.0.79-alpha.5": + version "1.0.79-alpha.5" + resolved "https://registry.yarnpkg.com/@budibase/string-templates/-/string-templates-1.0.79-alpha.5.tgz#063f5beca7d3b4a9757df77dcf1bd8a442d7522e" + integrity sha512-Rifn1h1Pn53KYCFX6GHmMq+fD4IEnfRXEWrf4RD7cy4TVCYqCIcI84tnzUwibkyuCbpDw4zh0RR0m4nemf7heg== dependencies: - "@budibase/handlebars-helpers" "^0.11.7" + "@budibase/handlebars-helpers" "^0.11.8" dayjs "^1.10.4" handlebars "^4.7.6" handlebars-utils "^1.0.6" @@ -1932,6 +1906,11 @@ "@nodelib/fs.scandir" "2.1.5" fastq "^1.6.0" +"@polka/url@^0.5.0": + version "0.5.0" + resolved "https://registry.yarnpkg.com/@polka/url/-/url-0.5.0.tgz#b21510597fd601e5d7c95008b76bf0d254ebfd31" + integrity sha512-oZLYFEAzUKyi3SKnXvj32ZCEGH6RDnao7COuCVhDydMS9NrCSVXhM79VaKyP5+Zc33m0QXEd2DN3UkU7OsHcfw== + "@rollup/plugin-inject@^4.0.0": version "4.0.4" resolved "https://registry.yarnpkg.com/@rollup/plugin-inject/-/plugin-inject-4.0.4.tgz#fbeee66e9a700782c4f65c8b0edbafe58678fbc2" @@ -2137,11 +2116,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.6" - resolved "https://registry.yarnpkg.com/@spectrum-css/inlinealert/-/inlinealert-2.0.6.tgz#4c5e923a1f56a96cc1adb30ef1f06ae04f2c6376" - integrity sha512-OpvvoWP02wWyCnF4IgG8SOPkXymovkC9cGtgMS1FdDubnG3tJZB/JeKTsRR9C9Vt3WBaOmISRdSKlZ4lC9CFzA== - "@spectrum-css/inputgroup@^3.0.2": version "3.0.8" resolved "https://registry.yarnpkg.com/@spectrum-css/inputgroup/-/inputgroup-3.0.8.tgz#fc23afc8a73c24d17249c9d2337e8b42085b298b" @@ -2239,6 +2213,11 @@ resolved "https://registry.yarnpkg.com/@spectrum-css/tabs/-/tabs-3.1.5.tgz#cc82e69c1fc721902345178231fb95d05938b983" integrity sha512-UtfW8bA1quYnJM6v/lp6AVYGnQFkiUix2FHAf/4VHVrk4mh7ydtLiXS0IR3Kx+t/S8FWdSdSQHDZ8tHbY1ZLZg== +"@spectrum-css/tag@^3.1.4": + version "3.3.3" + resolved "https://registry.yarnpkg.com/@spectrum-css/tag/-/tag-3.3.3.tgz#826bf03525d10f1ae034681095337973bd43f4af" + integrity sha512-sWcopo4Pgl5VMOF0TuP6on3KmnrcGcaYfBt1/LDAin8+pUoqv2NgLv5BkO7maaPsd9pCLU4K9Y8NPXbujDOefQ== + "@spectrum-css/tags@^3.0.2": version "3.0.3" resolved "https://registry.yarnpkg.com/@spectrum-css/tags/-/tags-3.0.3.tgz#fc76d2735cdc442de91b7eb3bee49a928c0767ac" @@ -2392,13 +2371,6 @@ resolved "https://registry.yarnpkg.com/@types/caseless/-/caseless-0.12.2.tgz#f65d3d6389e01eeb458bd54dc8f52b95a9463bc8" integrity sha512-6ckxMjBBD8URvjB6J3NcnuAn5Pkl7t3TizAg+xdlzzQGSPSmBcXf8KoIH0ua/i+tio+ZRUHEXp0HEmvaR4kt0w== -"@types/codemirror@^5.60.4": - version "5.60.5" - resolved "https://registry.yarnpkg.com/@types/codemirror/-/codemirror-5.60.5.tgz#5b989a3b4bbe657458cf372c92b6bfda6061a2b7" - integrity sha512-TiECZmm8St5YxjFUp64LK0c8WU5bxMDt9YaAek1UqUb9swrSCoJhh92fWu1p3mTEqlHjhB5sY7OFBhWroJXZVg== - dependencies: - "@types/tern" "*" - "@types/connect@*": version "3.4.35" resolved "https://registry.yarnpkg.com/@types/connect/-/connect-3.4.35.tgz#5fcf6ae445e4021d1fc2219a4873cc73a3bb2ad1" @@ -2580,11 +2552,6 @@ "@types/koa-compose" "*" "@types/node" "*" -"@types/marked@^4.0.1": - version "4.0.2" - resolved "https://registry.yarnpkg.com/@types/marked/-/marked-4.0.2.tgz#cb2dbf10da2f41cf20bd91fb5f89b67540c282f7" - integrity sha512-auNrZ/c0w6wsM9DccwVxWHssrMDezHUAXNesdp2RQrCVCyrQbOiSq7yqdJKrUQQpw9VTm7CGYJH2A/YG7jjrjQ== - "@types/mime@^1": version "1.3.2" resolved "https://registry.yarnpkg.com/@types/mime/-/mime-1.3.2.tgz#93e25bf9ee75fe0fd80b594bc4feb0e862111b5a" @@ -2677,13 +2644,6 @@ "@types/cookiejar" "*" "@types/node" "*" -"@types/tern@*": - version "0.23.4" - resolved "https://registry.yarnpkg.com/@types/tern/-/tern-0.23.4.tgz#03926eb13dbeaf3ae0d390caf706b2643a0127fb" - integrity sha512-JAUw1iXGO1qaWwEOzxTKJZ/5JxVeON9kvGZ/osgZaJImBnyjyn0cjovPsf6FNLmyGY8Vw9DoXZCMlfMkMwHRWg== - dependencies: - "@types/estree" "*" - "@types/tough-cookie@*": version "4.0.1" resolved "https://registry.yarnpkg.com/@types/tough-cookie/-/tough-cookie-4.0.1.tgz#8f80dd965ad81f3e1bc26d6f5c727e132721ff40" @@ -4150,6 +4110,11 @@ clone-response@1.0.2, clone-response@^1.0.2: dependencies: mimic-response "^1.0.0" +clone@^2.1.1: + version "2.1.2" + resolved "https://registry.yarnpkg.com/clone/-/clone-2.1.2.tgz#1b7f4b9f591f1e8f83670401600345a02887435f" + integrity sha1-G39Ln1kfHo+DZwQBYANFoCiHQ18= + cls-hooked@^4.2.2: version "4.2.2" resolved "https://registry.yarnpkg.com/cls-hooked/-/cls-hooked-4.2.2.tgz#ad2e9a4092680cdaffeb2d3551da0e225eae1908" @@ -4179,18 +4144,6 @@ co@^4.6.0: resolved "https://registry.yarnpkg.com/co/-/co-4.6.0.tgz#6ea6bdf3d853ae54ccb8e47bfa0bf3f9031fb184" integrity sha1-bqa989hTrlTMuOR7+gvz+QMfsYQ= -codemirror-spell-checker@1.1.2: - version "1.1.2" - resolved "https://registry.yarnpkg.com/codemirror-spell-checker/-/codemirror-spell-checker-1.1.2.tgz#1c660f9089483ccb5113b9ba9ca19c3f4993371e" - integrity sha1-HGYPkIlIPMtRE7m6nKGcP0mTNx4= - dependencies: - typo-js "*" - -codemirror@^5.63.1: - version "5.65.2" - resolved "https://registry.yarnpkg.com/codemirror/-/codemirror-5.65.2.tgz#5799a70cb3d706e10f60e267245e3a75205d3dd9" - integrity sha512-SZM4Zq7XEC8Fhroqe3LxbEEX1zUPWH1wMr5zxiBuiUF64iYOUH/JI88v4tBag8MiBS8B8gRv8O1pPXGYXQ4ErA== - collect-v8-coverage@^1.0.0: version "1.0.1" resolved "https://registry.yarnpkg.com/collect-v8-coverage/-/collect-v8-coverage-1.0.1.tgz#cc2c8e94fc18bbdffe64d6534570c8a673b27f59" @@ -4372,6 +4325,11 @@ configstore@^5.0.1: write-file-atomic "^3.0.0" xdg-basedir "^4.0.0" +console-clear@^1.1.0: + version "1.1.1" + resolved "https://registry.yarnpkg.com/console-clear/-/console-clear-1.1.1.tgz#995e20cbfbf14dd792b672cde387bd128d674bf7" + integrity sha512-pMD+MVR538ipqkG5JXeOEbKWS5um1H4LUUccUQG68qpeqBYbzYy79Gh55jkd2TtPdRfUaLWdv6LPP//5Zt0aPQ== + consolidate@^0.16.0: version "0.16.0" resolved "https://registry.yarnpkg.com/consolidate/-/consolidate-0.16.0.tgz#a11864768930f2f19431660a65906668f5fbdc16" @@ -4712,6 +4670,18 @@ dedent@^0.7.0: resolved "https://registry.yarnpkg.com/dedent/-/dedent-0.7.0.tgz#2495ddbaf6eb874abb0e1be9df22d2e5a544326c" integrity sha1-JJXduvbrh0q7Dhvp3yLS5aVEMmw= +deep-equal@^1.0.1: + version "1.1.1" + resolved "https://registry.yarnpkg.com/deep-equal/-/deep-equal-1.1.1.tgz#b5c98c942ceffaf7cb051e24e1434a25a2e6076a" + integrity sha512-yd9c5AdiqVcR+JjcwUQb9DkhJc8ngNr0MahEBGvDiJw8puWab2yZlh+nkasOnZP+EGTAP6rRp2JzJhJZzvNF8g== + dependencies: + is-arguments "^1.0.4" + is-date-object "^1.0.1" + is-regex "^1.0.4" + object-is "^1.0.1" + object-keys "^1.1.1" + regexp.prototype.flags "^1.2.0" + deep-equal@~1.0.1: version "1.0.1" resolved "https://registry.yarnpkg.com/deep-equal/-/deep-equal-1.0.1.tgz#f5d260292b660e084eff4cdbc9f08ad3247448b5" @@ -4922,6 +4892,11 @@ domexception@^2.0.1: dependencies: webidl-conversions "^5.0.0" +domino@^2.1.6: + version "2.1.6" + resolved "https://registry.yarnpkg.com/domino/-/domino-2.1.6.tgz#fe4ace4310526e5e7b9d12c7de01b7f485a57ffe" + integrity sha512-3VdM/SXBZX2omc9JF9nOPCtDaYQ67BGp5CoLpIQlO2KCAPETs8TcDHacF26jXadGbvUteZzRTeos2fhID5+ucQ== + dot-prop@^5.2.0: version "5.3.0" resolved "https://registry.yarnpkg.com/dot-prop/-/dot-prop-5.3.0.tgz#90ccce708cd9cd82cc4dc8c3ddd9abdd55b20e88" @@ -4966,17 +4941,6 @@ duplexer3@^0.1.4: resolved "https://registry.yarnpkg.com/duplexer3/-/duplexer3-0.1.4.tgz#ee01dd1cac0ed3cbc7fdbea37dc0a8f1ce002ce2" integrity sha1-7gHdHKwO08vH/b6jfcCo8c4ALOI= -easymde@^2.16.1: - version "2.16.1" - resolved "https://registry.yarnpkg.com/easymde/-/easymde-2.16.1.tgz#f4c2380312615cb33826f1a1fecfaa4022ff551a" - integrity sha512-FihYgjRsKfhGNk89SHSqxKLC4aJ1kfybPWW6iAmtb5GnXu+tnFPSzSaGBmk1RRlCuhFSjhF0SnIMGVPjEzkr6g== - dependencies: - "@types/codemirror" "^5.60.4" - "@types/marked" "^4.0.1" - codemirror "^5.63.1" - codemirror-spell-checker "1.1.2" - marked "^4.0.10" - ecc-jsbn@~0.1.1: version "0.1.2" resolved "https://registry.yarnpkg.com/ecc-jsbn/-/ecc-jsbn-0.1.2.tgz#3a83a904e54353287874c564b7549386849a98c9" @@ -5521,6 +5485,11 @@ event-target-shim@^5.0.0: resolved "https://registry.yarnpkg.com/event-target-shim/-/event-target-shim-5.0.1.tgz#5d4d3ebdf9583d63a5333ce2deb7480ab2b05789" integrity sha512-i/2XbnSz/uxRCU6+NdVJgKWDTM427+MqYbkQzD321DuCQJUqOuJKIA0IM2+W2xtYHdKOmZ4dR6fExsd4SXL+WQ== +eventemitter3@^2.0.3: + version "2.0.3" + resolved "https://registry.yarnpkg.com/eventemitter3/-/eventemitter3-2.0.3.tgz#b5e1079b59fb5e1ba2771c0a993be060a58c99ba" + integrity sha1-teEHm1n7XhuidxwKmTvgYKWMmbo= + events@1.1.1: version "1.1.1" resolved "https://registry.yarnpkg.com/events/-/events-1.1.1.tgz#9ebdb7635ad099c70dcc4c2a1f5004288e8bd924" @@ -5707,6 +5676,11 @@ fast-deep-equal@^3.1.1: resolved "https://registry.yarnpkg.com/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz#3a7d56b559d6cbc3eb512325244e619a65c6c525" integrity sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q== +fast-diff@1.1.2: + version "1.1.2" + resolved "https://registry.yarnpkg.com/fast-diff/-/fast-diff-1.1.2.tgz#4b62c42b8e03de3f848460b639079920695d0154" + integrity sha512-KaJUt+M9t1qaIteSvjc6P3RbMdXsNhK61GRftR6SNxqmhthcd9MGIi4T+o0jD8LUSpSnSKXE20nLtJ3fOHxQig== + fast-glob@^3.1.1: version "3.2.7" resolved "https://registry.yarnpkg.com/fast-glob/-/fast-glob-3.2.7.tgz#fd6cb7a2d7e9aa7a7846111e85a196d6b2f766a1" @@ -6168,6 +6142,11 @@ get-paths@0.0.7: dependencies: pify "^4.0.1" +get-port@^3.2.0: + version "3.2.0" + resolved "https://registry.yarnpkg.com/get-port/-/get-port-3.2.0.tgz#dd7ce7de187c06c8bf353796ac71e099f0980ebc" + integrity sha1-3Xzn3hh8Bsi/NTeWrHHgmfCYDrw= + get-port@^5.1.1: version "5.1.1" resolved "https://registry.yarnpkg.com/get-port/-/get-port-5.1.1.tgz#0469ed07563479de6efb986baf053dcd7d4e3193" @@ -6962,6 +6941,14 @@ is-accessor-descriptor@^1.0.0: dependencies: kind-of "^6.0.0" +is-arguments@^1.0.4: + version "1.1.1" + resolved "https://registry.yarnpkg.com/is-arguments/-/is-arguments-1.1.1.tgz#15b3f88fda01f2a97fec84ca761a560f123efa9b" + integrity sha512-8Q7EARjzEnKpt/PCD7e1cgUS0a6X8u5tdSiMqXhojOdoV9TsMsiO+9VLC5vAmO8N7/GmXn7yjR8qnA6bVAEzfA== + dependencies: + call-bind "^1.0.2" + has-tostringtag "^1.0.0" + is-arrayish@^0.2.1: version "0.2.1" resolved "https://registry.yarnpkg.com/is-arrayish/-/is-arrayish-0.2.1.tgz#77c99840527aa8ecb1a8ba697b80645a7a926a9d" @@ -7226,7 +7213,7 @@ is-property@^1.0.2: resolved "https://registry.yarnpkg.com/is-property/-/is-property-1.0.2.tgz#57fe1c4e48474edd65b09911f26b1cd4095dda84" integrity sha1-V/4cTkhHTt1lsJkR8msc1Ald2oQ= -is-regex@^1.1.4: +is-regex@^1.0.4, is-regex@^1.1.4: version "1.1.4" resolved "https://registry.yarnpkg.com/is-regex/-/is-regex-1.1.4.tgz#eef5663cd59fa4c0ae339505323df6854bb15958" integrity sha512-kvRdxDsxZjhzUX07ZnLydzS1TU/TJlTUHHY4YLL87e37oUA49DfkLqgy+VjFocowy29cKvcSiu+kIv728jTTVg== @@ -8564,7 +8551,7 @@ klaw-sync@^6.0.0: dependencies: graceful-fs "^4.1.11" -kleur@^3.0.3: +kleur@^3.0.0, kleur@^3.0.3: version "3.0.3" resolved "https://registry.yarnpkg.com/kleur/-/kleur-3.0.3.tgz#a79c9ecc86ee1ce3fa6206d1216c501f147fc07e" integrity sha512-eTIzlVOSUR+JxdDFepEYcBMtZ9Qqdef+rnzWdRZuMbOywu5tO2w2N7rqjoANZ5k9vywhL6Br1VRjUIgTQx4E8w== @@ -8988,6 +8975,11 @@ loader-utils@^2.0.0: emojis-list "^3.0.0" json5 "^2.1.2" +local-access@^1.0.1: + version "1.1.0" + resolved "https://registry.yarnpkg.com/local-access/-/local-access-1.1.0.tgz#e007c76ba2ca83d5877ba1a125fc8dfe23ba4798" + integrity sha512-XfegD5pyTAfb+GY6chk283Ox5z8WexG56OvM06RWLpAc/UHozO8X6xAxEkIitZOtsSMM1Yr3DkHgW5W+onLhCw== + locate-path@^3.0.0: version "3.0.0" resolved "https://registry.yarnpkg.com/locate-path/-/locate-path-3.0.0.tgz#dbec3b3ab759758071b58fe59fc41871af21400e" @@ -9266,6 +9258,17 @@ map-visit@^1.0.0: dependencies: object-visit "^1.0.0" +markdown-it@^12.0.2: + version "12.3.2" + resolved "https://registry.yarnpkg.com/markdown-it/-/markdown-it-12.3.2.tgz#bf92ac92283fe983fe4de8ff8abfb5ad72cd0c90" + integrity sha512-TchMembfxfNVpHkbtriWltGWc+m3xszaRD0CZup7GFFhzIgQqxIfn3eGj1yZpfuflzPvfkt611B2Q/Bsk1YnGg== + dependencies: + argparse "^2.0.1" + entities "~2.1.0" + linkify-it "^3.0.1" + mdurl "^1.0.1" + uc.micro "^1.0.5" + markdown-it@^12.2.0: version "12.2.0" resolved "https://registry.yarnpkg.com/markdown-it/-/markdown-it-12.2.0.tgz#091f720fd5db206f80de7a8d1f1a7035fd0d38db" @@ -9277,11 +9280,6 @@ markdown-it@^12.2.0: mdurl "^1.0.1" uc.micro "^1.0.5" -marked@^4.0.10: - version "4.0.12" - resolved "https://registry.yarnpkg.com/marked/-/marked-4.0.12.tgz#2262a4e6fd1afd2f13557726238b69a48b982f7d" - integrity sha512-hgibXWrEDNBWgGiK18j/4lkS6ihTe9sxtV4Q1OQppb/0zzyPSzoFANBa5MfsG/zgsWklmNnhm0XACZOH/0HBiQ== - md5@^2.3.0: version "2.3.0" resolved "https://registry.yarnpkg.com/md5/-/md5-2.3.0.tgz#c3da9a6aae3a30b46b7b0c349b87b110dc3bda4f" @@ -9411,6 +9409,11 @@ mime@^1.3.4, mime@^1.4.1: resolved "https://registry.yarnpkg.com/mime/-/mime-1.6.0.tgz#32cd9e5c64553bd58d19a568af452acff04981b1" integrity sha512-x0Vn8spI+wuJ1O6S7gnbaQg8Pxh4NNHb7KSINmEWKiPE4RKOplvijn+NkmYmmRgP68mc70j2EbeTFRsrswaQeg== +mime@^2.3.1: + version "2.6.0" + resolved "https://registry.yarnpkg.com/mime/-/mime-2.6.0.tgz#a2a682a95cd4d0cb1d6257e28f83da7e35800367" + integrity sha512-USPkMeET31rOMiarsBNIHZKLGgvKc/LrjofAnBlOttf5ajRvqiRA8QsenbcooctK6d6Ts6aqZXBA+XbkKthiQg== + mime@^3.0.0: version "3.0.0" resolved "https://registry.yarnpkg.com/mime/-/mime-3.0.0.tgz#b374550dca3a0c18443b0c950a6a58f1931cf7a7" @@ -9500,6 +9503,11 @@ mri@1.1.4: resolved "https://registry.yarnpkg.com/mri/-/mri-1.1.4.tgz#7cb1dd1b9b40905f1fac053abe25b6720f44744a" integrity sha512-6y7IjGPm8AzlvoUrwAaw1tLnUBudaS3752vcd8JtrpGGQn+rXIe63LFVHm/YMwtqAuh+LJPCFdlLYPWM1nYn6w== +mri@^1.1.0: + version "1.2.0" + resolved "https://registry.yarnpkg.com/mri/-/mri-1.2.0.tgz#6721480fec2a11a4889861115a48b6cbe7cc8f0b" + integrity sha512-tzzskb3bG8LvYGFF/mDTpq3jpI6Q9wc3LEmBaghu+DdCssd1FakN7Bc0hVNmEyGq1bq3RgfkCb3cmQLpNPOroA== + ms@2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/ms/-/ms-2.0.0.tgz#5608aeadfc00be6c2901df5f9861788de0d597c8" @@ -9822,6 +9830,14 @@ object-inspect@^1.11.0, object-inspect@^1.9.0: resolved "https://registry.yarnpkg.com/object-inspect/-/object-inspect-1.11.0.tgz#9dceb146cedd4148a0d9e51ab88d34cf509922b1" integrity sha512-jp7ikS6Sd3GxQfZJPyH3cjcbJF6GZPClgdV+EFygjFLQ5FmW/dRUnTd9PQ9k0JhoNDabWFbpF1yCdSWCC6gexg== +object-is@^1.0.1: + version "1.1.5" + resolved "https://registry.yarnpkg.com/object-is/-/object-is-1.1.5.tgz#b9deeaa5fc7f1846a0faecdceec138e5778f53ac" + integrity sha512-3cyDsyHgtmi7I7DfSSI2LDp6SK2lwvtbg0p0R1e0RvTqF5ceGx+K2dfSjm1bKDMVCFEDAQvy+o8c6a7VujOddw== + dependencies: + call-bind "^1.0.2" + define-properties "^1.1.3" + object-keys@^1.0.12, object-keys@^1.0.6, object-keys@^1.1.1: version "1.1.1" resolved "https://registry.yarnpkg.com/object-keys/-/object-keys-1.1.1.tgz#1c47f272df277f3b1daf061677d9c82e2322c60e" @@ -10096,6 +10112,11 @@ pako@^1.0.5: resolved "https://registry.yarnpkg.com/pako/-/pako-1.0.11.tgz#6c9599d340d54dfd3946380252a35705a6b992bf" integrity sha512-4hLB8Py4zZce5s4yd9XzopqwVv/yGNhV1Bl8NTmCq1763HeK2+EwVTv+leGeL13Dnh2wfbqowVPXCIO0z4taYw== +parchment@^1.1.4: + version "1.1.4" + resolved "https://registry.yarnpkg.com/parchment/-/parchment-1.1.4.tgz#aeded7ab938fe921d4c34bc339ce1168bc2ffde5" + integrity sha512-J5FBQt/pM2inLzg4hEWmzQx/8h8D0CiDxaG3vyp9rKrQRSDgBlhjdP5jQGgosEajXPSQouXGHOmVdgo7QmJuOg== + parent-module@^1.0.0: version "1.0.1" resolved "https://registry.yarnpkg.com/parent-module/-/parent-module-1.0.1.tgz#691d2709e78c79fae3a156622452d00762caaaa2" @@ -10958,6 +10979,27 @@ 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== +quill-delta@^3.6.2: + version "3.6.3" + resolved "https://registry.yarnpkg.com/quill-delta/-/quill-delta-3.6.3.tgz#b19fd2b89412301c60e1ff213d8d860eac0f1032" + integrity sha512-wdIGBlcX13tCHOXGMVnnTVFtGRLoP0imqxM696fIPwIf5ODIYUHIvHbZcyvGlZFiFhK5XzDC2lpjbxRhnM05Tg== + dependencies: + deep-equal "^1.0.1" + extend "^3.0.2" + fast-diff "1.1.2" + +quill@^1.3.7: + version "1.3.7" + resolved "https://registry.yarnpkg.com/quill/-/quill-1.3.7.tgz#da5b2f3a2c470e932340cdbf3668c9f21f9286e8" + integrity sha512-hG/DVzh/TiknWtE6QmWAF/pxoZKYxfe3J/d/+ShUWkDvvkZQVTPeVmUJVu1uE6DDooC4fWTiCLh84ul89oNz5g== + dependencies: + clone "^2.1.1" + deep-equal "^1.0.1" + eventemitter3 "^2.0.3" + extend "^3.0.2" + parchment "^1.1.4" + quill-delta "^3.6.2" + randombytes@^2.1.0: version "2.1.0" resolved "https://registry.yarnpkg.com/randombytes/-/randombytes-2.1.0.tgz#df6f84372f0270dc65cdf6291349ab7a473d4f2a" @@ -11173,6 +11215,14 @@ regex-not@^1.0.0, regex-not@^1.0.2: extend-shallow "^3.0.2" safe-regex "^1.1.0" +regexp.prototype.flags@^1.2.0: + version "1.4.1" + resolved "https://registry.yarnpkg.com/regexp.prototype.flags/-/regexp.prototype.flags-1.4.1.tgz#b3f4c0059af9e47eca9f3f660e51d81307e72307" + integrity sha512-pMR7hBVUUGI7PMA37m2ofIdQCsomVnas+Jn5UPGAHQ+/LlwKm/aTLJHdasmHRzlfeZwHiAOaRSo2rbBDm3nNUQ== + dependencies: + call-bind "^1.0.2" + define-properties "^1.1.3" + regexparam@2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/regexparam/-/regexparam-2.0.0.tgz#059476767d5f5f87f735fc7922d133fd1a118c8c" @@ -11454,6 +11504,13 @@ rxjs@^6.6.0: dependencies: tslib "^1.9.0" +sade@^1.4.0: + version "1.8.1" + resolved "https://registry.yarnpkg.com/sade/-/sade-1.8.1.tgz#0a78e81d658d394887be57d2a409bf703a3b2701" + integrity sha512-xal3CZX1Xlo/k4ApwCFrHVACi9fBqJ7V+mwhBsuf/1IOKbBy098Fex+Wa/5QMubw09pSZ/u8EY8PWgevJsXp1A== + dependencies: + mri "^1.1.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" @@ -11717,6 +11774,27 @@ simple-swizzle@^0.2.2: dependencies: is-arrayish "^0.3.1" +sirv-cli@^0.4.6: + version "0.4.6" + resolved "https://registry.yarnpkg.com/sirv-cli/-/sirv-cli-0.4.6.tgz#c28ab20deb3b34637f5a60863dc350f055abca04" + integrity sha512-/Vj85/kBvPL+n9ibgX6FicLE8VjidC1BhlX67PYPBfbBAphzR6i0k0HtU5c2arejfU3uzq8l3SYPCwl1x7z6Ww== + dependencies: + console-clear "^1.1.0" + get-port "^3.2.0" + kleur "^3.0.0" + local-access "^1.0.1" + sade "^1.4.0" + sirv "^0.4.6" + tinydate "^1.0.0" + +sirv@^0.4.6: + version "0.4.6" + resolved "https://registry.yarnpkg.com/sirv/-/sirv-0.4.6.tgz#185e44eb93d24009dd183b7494285c5180b81f22" + integrity sha512-rYpOXlNbpHiY4nVXxuDf4mXPvKz1reZGap/LkWp9TvcZ84qD/nPBjjH/6GZsgIjVMbOslnY8YYULAyP8jMn1GQ== + dependencies: + "@polka/url" "^0.5.0" + mime "^2.3.1" + sisteransi@^1.0.5: version "1.0.5" resolved "https://registry.yarnpkg.com/sisteransi/-/sisteransi-1.0.5.tgz#134d681297756437cc05ca01370d3a7a571075ed" @@ -12270,6 +12348,13 @@ svelte-apexcharts@^1.0.2: dependencies: apexcharts "^3.19.2" +svelte-flatpickr@^2.4.0: + version "2.4.0" + resolved "https://registry.yarnpkg.com/svelte-flatpickr/-/svelte-flatpickr-2.4.0.tgz#190871fc3305956c8c8fd3601cd036b8ac71ef49" + integrity sha512-UUC5Te+b0qi4POg7VDwfGh0m5W3Hf64OwkfOTj6FEe/dYZN4cBzpQ82EuuQl0CTbbBAsMkcjJcixV1d2V6EHCQ== + dependencies: + flatpickr "^4.5.2" + svelte-flatpickr@^3.1.0, svelte-flatpickr@^3.2.3: version "3.2.4" resolved "https://registry.yarnpkg.com/svelte-flatpickr/-/svelte-flatpickr-3.2.4.tgz#1824e26a5dc151d14906cfc7dfd100aefd1b072d" @@ -12611,6 +12696,11 @@ tinycolor2@^1.4.1: resolved "https://registry.yarnpkg.com/tinycolor2/-/tinycolor2-1.4.2.tgz#3f6a4d1071ad07676d7fa472e1fac40a719d8803" integrity sha512-vJhccZPs965sV/L2sU4oRQVAos0pQXwsvTLkWYdqJ+a8Q5kPFzJTuOFwy7UniPli44NKQGAglksjvOcpo95aZA== +tinydate@^1.0.0: + version "1.3.0" + resolved "https://registry.yarnpkg.com/tinydate/-/tinydate-1.3.0.tgz#e6ca8e5a22b51bb4ea1c3a2a4fd1352dbd4c57fb" + integrity sha512-7cR8rLy2QhYHpsBDBVYnnWXm8uRTr38RoZakFSW7Bs7PzfMPNZthuMLkwqZv7MTu8lhQ91cOFYS5a7iFj2oR3w== + tmp@^0.0.33: version "0.0.33" resolved "https://registry.yarnpkg.com/tmp/-/tmp-0.0.33.tgz#6d34335889768d21b2bcda0aa277ced3b1bfadf9" @@ -12822,6 +12912,13 @@ tunnel@0.0.6: resolved "https://registry.yarnpkg.com/tunnel/-/tunnel-0.0.6.tgz#72f1314b34a5b192db012324df2cc587ca47f92c" integrity sha512-1h/Lnq9yajKY2PEbBadPXj3VxsDDu844OnaAo52UVmIzIvwwtBPIuNvkjuzBlTWpfJyUbG3ez0KSBibQkj4ojg== +turndown@^7.0.0: + version "7.1.1" + resolved "https://registry.yarnpkg.com/turndown/-/turndown-7.1.1.tgz#96992f2d9b40a1a03d3ea61ad31b5a5c751ef77f" + integrity sha512-BEkXaWH7Wh7e9bd2QumhfAXk5g34+6QUmmWx+0q6ThaVOLuLUqsnkq35HQ5SBHSaxjSfSM7US5o4lhJNH7B9MA== + dependencies: + domino "^2.1.6" + tweetnacl@^0.14.3, tweetnacl@~0.14.0: version "0.14.5" resolved "https://registry.yarnpkg.com/tweetnacl/-/tweetnacl-0.14.5.tgz#5ae68177f192d4456269d108afa93ff8743f4f64" @@ -12891,11 +12988,6 @@ typescript@^4.3.5: resolved "https://registry.yarnpkg.com/typescript/-/typescript-4.3.5.tgz#4d1c37cc16e893973c45a06886b7113234f119f4" integrity sha512-DqQgihaQ9cUrskJo9kIyW/+g0Vxsk8cDtZ52a3NGh0YNTfpUSArXSohyUGnvbPazEPLu398C0UxmKSOrPumUzA== -typo-js@*: - version "1.2.1" - resolved "https://registry.yarnpkg.com/typo-js/-/typo-js-1.2.1.tgz#334a0d8c3f6c56f2f1e15fdf6c31677793cbbe9b" - integrity sha512-bTGLjbD3WqZDR3CgEFkyi9Q/SS2oM29ipXrWfDb4M74ea69QwKAECVceYpaBu0GfdnASMg9Qfl67ttB23nePHg== - 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" @@ -13054,9 +13146,9 @@ uri-js@^4.2.2: punycode "^2.1.0" urijs@^1.19.0: - version "1.19.7" - resolved "https://registry.yarnpkg.com/urijs/-/urijs-1.19.7.tgz#4f594e59113928fea63c00ce688fb395b1168ab9" - integrity sha512-Id+IKjdU0Hx+7Zx717jwLPsPeUqz7rAtuVBRLLs+qn+J2nf9NGITWVCxcijgYxBqe83C7sqsQPs6H1pyz3x9gA== + version "1.19.8" + resolved "https://registry.yarnpkg.com/urijs/-/urijs-1.19.8.tgz#ee0407a18528934d3c383e691912f47043a58feb" + integrity sha512-iIXHrjomQ0ZCuDRy44wRbyTZVnfVNLVo3Ksz1yxNyE5wV1IDZW2S5Jszy45DTlw/UdsnRT7DyDhIz7Gy+vJumw== urix@^0.1.0: version "0.1.0" From 54bb65b2273b915bbf3f8e89912b0b496b2bc678 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Wed, 2 Mar 2022 09:56:27 +0000 Subject: [PATCH 62/64] Bump url-parse from 1.5.3 to 1.5.10 in /packages/server Bumps [url-parse](https://github.com/unshiftio/url-parse) from 1.5.3 to 1.5.10. - [Release notes](https://github.com/unshiftio/url-parse/releases) - [Commits](https://github.com/unshiftio/url-parse/compare/1.5.3...1.5.10) --- updated-dependencies: - dependency-name: url-parse dependency-type: indirect ... Signed-off-by: dependabot[bot] --- packages/server/yarn.lock | 356 ++++++++++++++++++++++++-------------- 1 file changed, 224 insertions(+), 132 deletions(-) diff --git a/packages/server/yarn.lock b/packages/server/yarn.lock index 618bd10d6d..9ea6872e70 100644 --- a/packages/server/yarn.lock +++ b/packages/server/yarn.lock @@ -995,10 +995,10 @@ resolved "https://registry.yarnpkg.com/@bcoe/v8-coverage/-/v8-coverage-0.2.3.tgz#75a2e8b51cb758a7553d6804a5932d7aace75c39" integrity sha512-0hYQ8SB4Db5zvZB4axdMHGwEaQjkZzFjQiN9LVYvIFB2nSUHW9tYpxWriPrWDASIxiaXax83REcLxuSdnGPZtw== -"@budibase/backend-core@^1.0.76-alpha.5": - version "1.0.78" - resolved "https://registry.yarnpkg.com/@budibase/backend-core/-/backend-core-1.0.78.tgz#0ff9cb57961f67456916a3c58a07d3c04c90acd3" - integrity sha512-/dXAKIrP6GfzM2jc2bH9aeOdVS5aVgQZoU8fwzhTZCd5t9dlsh1jY0WjHfDX4pBYhapVCbzIwseL/OmseZ+0NA== +"@budibase/backend-core@^1.0.79-alpha.5": + version "1.0.79-alpha.5" + resolved "https://registry.yarnpkg.com/@budibase/backend-core/-/backend-core-1.0.79-alpha.5.tgz#dac73ccfcd2e6e63415cde6d76e4bf09043dc6b6" + integrity sha512-m7/z55fp+EYVYEAyuQ2K//AcrfgzLBcR4EVjP+rrmbIhGFbLV2ASl5IBg9bcAYp0z2m816skJrY2asx9raWhgw== dependencies: "@techpass/passport-openidconnect" "^0.3.0" aws-sdk "^2.901.0" @@ -1068,80 +1068,54 @@ svelte-flatpickr "^3.2.3" svelte-portal "^1.0.0" -"@budibase/bbui@^1.0.78": - version "1.0.78" - resolved "https://registry.yarnpkg.com/@budibase/bbui/-/bbui-1.0.78.tgz#b63c66e8083aac2b10fe03f66230378188564ac6" - integrity sha512-+iKe8NmjsJufnYuSaCKbS1TmrtCU/HWt1V3vj5QmWcVZ4Vr2xpVUPuAuSugy4goFoVO2VODofiDwvdStCZnvPw== +"@budibase/bbui@^1.0.79-alpha.5": + version "1.58.13" + resolved "https://registry.yarnpkg.com/@budibase/bbui/-/bbui-1.58.13.tgz#59df9c73def2d81c75dcbd2266c52c19db88dbd7" + integrity sha512-Zk6CKXdBfKsTVzA1Xs5++shdSSZLfphVpZuKVbjfzkgtuhyH7ruucexuSHEpFsxjW5rEKgKIBoRFzCK5vPvN0w== 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" - easymde "^2.16.1" - svelte-flatpickr "^3.2.3" + markdown-it "^12.0.2" + quill "^1.3.7" + sirv-cli "^0.4.6" + svelte-flatpickr "^2.4.0" svelte-portal "^1.0.0" + turndown "^7.0.0" -"@budibase/client@^1.0.76-alpha.5": - version "1.0.78" - resolved "https://registry.yarnpkg.com/@budibase/client/-/client-1.0.78.tgz#c85d3c31a080c054c9c4965de70e9a6595fc3fb1" - integrity sha512-JRqTvcCt0v5XA+pWQehfC/+/r7leX6nJGcIs3skrRXLQV3NwoVF4IdNA7MMsANw0tZ4GzV956VV+bf9QfIE+Vg== +"@budibase/client@^1.0.79-alpha.5": + version "1.0.79-alpha.5" + resolved "https://registry.yarnpkg.com/@budibase/client/-/client-1.0.79-alpha.5.tgz#d729858b10e6cd2a506fb63364a0e7ab3149780e" + integrity sha512-OrBErU97YL67GggsLmcD46AUElSgtyFjZdCXi++3s4zaZYZxT4Ix2iFMrnslcpF87bv8xyiSt3vsyCPGKCU5wQ== dependencies: - "@budibase/bbui" "^1.0.78" - "@budibase/frontend-core" "^1.0.78" - "@budibase/string-templates" "^1.0.78" + "@budibase/bbui" "^1.0.79-alpha.5" + "@budibase/frontend-core" "^1.0.79-alpha.5" + "@budibase/string-templates" "^1.0.79-alpha.5" + "@spectrum-css/button" "^3.0.3" + "@spectrum-css/card" "^3.0.3" + "@spectrum-css/divider" "^1.0.3" + "@spectrum-css/link" "^3.1.3" + "@spectrum-css/page" "^3.0.1" + "@spectrum-css/tag" "^3.1.4" + "@spectrum-css/typography" "^3.0.2" + "@spectrum-css/vars" "^3.0.1" + apexcharts "^3.22.1" + dayjs "^1.10.5" regexparam "^1.3.0" rollup-plugin-polyfill-node "^0.8.0" shortid "^2.2.15" + svelte "^3.38.2" + svelte-apexcharts "^1.0.2" + svelte-flatpickr "^3.1.0" svelte-spa-router "^3.0.5" -"@budibase/frontend-core@^1.0.78": - version "1.0.78" - resolved "https://registry.yarnpkg.com/@budibase/frontend-core/-/frontend-core-1.0.78.tgz#9a9d20f1263580b271845a4dc6541a8bc59db45d" - integrity sha512-bBaChKm9qU53nW/FIeztAoe3e3k3m6OP0EU6hP4AwDPKTCuV26554G6k7+M/IIZ4QtWPXCTp1Z+t45kycBzmPQ== +"@budibase/frontend-core@^1.0.79-alpha.5": + version "1.0.79-alpha.5" + resolved "https://registry.yarnpkg.com/@budibase/frontend-core/-/frontend-core-1.0.79-alpha.5.tgz#7da5faf83d6cc5a59d8e038c2e9333e27bff35d5" + integrity sha512-5xti0MdKRvNKwYUE5cp4rH8IwLPmuRz39ajck947ut2OWzXV9bt7SXzoKPSSzEGdCBA2DgzJpK3gQWYlqXiJiQ== dependencies: - "@budibase/bbui" "^1.0.78" + "@budibase/bbui" "^1.0.79-alpha.5" lodash "^4.17.21" svelte "^3.46.2" -"@budibase/handlebars-helpers@^0.11.7": +"@budibase/handlebars-helpers@^0.11.8": version "0.11.8" resolved "https://registry.yarnpkg.com/@budibase/handlebars-helpers/-/handlebars-helpers-0.11.8.tgz#6953d29673a8c5c407e096c0a84890465c7ce841" integrity sha512-ggWJUt0GqsHFAEup5tlWlcrmYML57nKhpNGGLzVsqXVYN8eVmf3xluYmmMe7fDYhQH0leSprrdEXmsdFQF3HAQ== @@ -1184,12 +1158,12 @@ svelte-apexcharts "^1.0.2" svelte-flatpickr "^3.1.0" -"@budibase/string-templates@^1.0.76-alpha.5", "@budibase/string-templates@^1.0.78": - version "1.0.78" - resolved "https://registry.yarnpkg.com/@budibase/string-templates/-/string-templates-1.0.78.tgz#ef1b92f58d3723ea93ce0be1b02bb785ccf9a38c" - integrity sha512-v47I/AgOhsMIMl823d1rNURJbhe0GHo/w3KNTOZZzHv98QaRZuTOYjs+e9Vg6kbAy3iRCk2rK4MdXUxAe3jWKw== +"@budibase/string-templates@^1.0.79-alpha.5": + version "1.0.79-alpha.5" + resolved "https://registry.yarnpkg.com/@budibase/string-templates/-/string-templates-1.0.79-alpha.5.tgz#063f5beca7d3b4a9757df77dcf1bd8a442d7522e" + integrity sha512-Rifn1h1Pn53KYCFX6GHmMq+fD4IEnfRXEWrf4RD7cy4TVCYqCIcI84tnzUwibkyuCbpDw4zh0RR0m4nemf7heg== dependencies: - "@budibase/handlebars-helpers" "^0.11.7" + "@budibase/handlebars-helpers" "^0.11.8" dayjs "^1.10.4" handlebars "^4.7.6" handlebars-utils "^1.0.6" @@ -1932,6 +1906,11 @@ "@nodelib/fs.scandir" "2.1.5" fastq "^1.6.0" +"@polka/url@^0.5.0": + version "0.5.0" + resolved "https://registry.yarnpkg.com/@polka/url/-/url-0.5.0.tgz#b21510597fd601e5d7c95008b76bf0d254ebfd31" + integrity sha512-oZLYFEAzUKyi3SKnXvj32ZCEGH6RDnao7COuCVhDydMS9NrCSVXhM79VaKyP5+Zc33m0QXEd2DN3UkU7OsHcfw== + "@rollup/plugin-inject@^4.0.0": version "4.0.4" resolved "https://registry.yarnpkg.com/@rollup/plugin-inject/-/plugin-inject-4.0.4.tgz#fbeee66e9a700782c4f65c8b0edbafe58678fbc2" @@ -2137,11 +2116,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.6" - resolved "https://registry.yarnpkg.com/@spectrum-css/inlinealert/-/inlinealert-2.0.6.tgz#4c5e923a1f56a96cc1adb30ef1f06ae04f2c6376" - integrity sha512-OpvvoWP02wWyCnF4IgG8SOPkXymovkC9cGtgMS1FdDubnG3tJZB/JeKTsRR9C9Vt3WBaOmISRdSKlZ4lC9CFzA== - "@spectrum-css/inputgroup@^3.0.2": version "3.0.8" resolved "https://registry.yarnpkg.com/@spectrum-css/inputgroup/-/inputgroup-3.0.8.tgz#fc23afc8a73c24d17249c9d2337e8b42085b298b" @@ -2239,6 +2213,11 @@ resolved "https://registry.yarnpkg.com/@spectrum-css/tabs/-/tabs-3.1.5.tgz#cc82e69c1fc721902345178231fb95d05938b983" integrity sha512-UtfW8bA1quYnJM6v/lp6AVYGnQFkiUix2FHAf/4VHVrk4mh7ydtLiXS0IR3Kx+t/S8FWdSdSQHDZ8tHbY1ZLZg== +"@spectrum-css/tag@^3.1.4": + version "3.3.3" + resolved "https://registry.yarnpkg.com/@spectrum-css/tag/-/tag-3.3.3.tgz#826bf03525d10f1ae034681095337973bd43f4af" + integrity sha512-sWcopo4Pgl5VMOF0TuP6on3KmnrcGcaYfBt1/LDAin8+pUoqv2NgLv5BkO7maaPsd9pCLU4K9Y8NPXbujDOefQ== + "@spectrum-css/tags@^3.0.2": version "3.0.3" resolved "https://registry.yarnpkg.com/@spectrum-css/tags/-/tags-3.0.3.tgz#fc76d2735cdc442de91b7eb3bee49a928c0767ac" @@ -2392,13 +2371,6 @@ resolved "https://registry.yarnpkg.com/@types/caseless/-/caseless-0.12.2.tgz#f65d3d6389e01eeb458bd54dc8f52b95a9463bc8" integrity sha512-6ckxMjBBD8URvjB6J3NcnuAn5Pkl7t3TizAg+xdlzzQGSPSmBcXf8KoIH0ua/i+tio+ZRUHEXp0HEmvaR4kt0w== -"@types/codemirror@^5.60.4": - version "5.60.5" - resolved "https://registry.yarnpkg.com/@types/codemirror/-/codemirror-5.60.5.tgz#5b989a3b4bbe657458cf372c92b6bfda6061a2b7" - integrity sha512-TiECZmm8St5YxjFUp64LK0c8WU5bxMDt9YaAek1UqUb9swrSCoJhh92fWu1p3mTEqlHjhB5sY7OFBhWroJXZVg== - dependencies: - "@types/tern" "*" - "@types/connect@*": version "3.4.35" resolved "https://registry.yarnpkg.com/@types/connect/-/connect-3.4.35.tgz#5fcf6ae445e4021d1fc2219a4873cc73a3bb2ad1" @@ -2580,11 +2552,6 @@ "@types/koa-compose" "*" "@types/node" "*" -"@types/marked@^4.0.1": - version "4.0.2" - resolved "https://registry.yarnpkg.com/@types/marked/-/marked-4.0.2.tgz#cb2dbf10da2f41cf20bd91fb5f89b67540c282f7" - integrity sha512-auNrZ/c0w6wsM9DccwVxWHssrMDezHUAXNesdp2RQrCVCyrQbOiSq7yqdJKrUQQpw9VTm7CGYJH2A/YG7jjrjQ== - "@types/mime@^1": version "1.3.2" resolved "https://registry.yarnpkg.com/@types/mime/-/mime-1.3.2.tgz#93e25bf9ee75fe0fd80b594bc4feb0e862111b5a" @@ -2677,13 +2644,6 @@ "@types/cookiejar" "*" "@types/node" "*" -"@types/tern@*": - version "0.23.4" - resolved "https://registry.yarnpkg.com/@types/tern/-/tern-0.23.4.tgz#03926eb13dbeaf3ae0d390caf706b2643a0127fb" - integrity sha512-JAUw1iXGO1qaWwEOzxTKJZ/5JxVeON9kvGZ/osgZaJImBnyjyn0cjovPsf6FNLmyGY8Vw9DoXZCMlfMkMwHRWg== - dependencies: - "@types/estree" "*" - "@types/tough-cookie@*": version "4.0.1" resolved "https://registry.yarnpkg.com/@types/tough-cookie/-/tough-cookie-4.0.1.tgz#8f80dd965ad81f3e1bc26d6f5c727e132721ff40" @@ -4150,6 +4110,11 @@ clone-response@1.0.2, clone-response@^1.0.2: dependencies: mimic-response "^1.0.0" +clone@^2.1.1: + version "2.1.2" + resolved "https://registry.yarnpkg.com/clone/-/clone-2.1.2.tgz#1b7f4b9f591f1e8f83670401600345a02887435f" + integrity sha1-G39Ln1kfHo+DZwQBYANFoCiHQ18= + cls-hooked@^4.2.2: version "4.2.2" resolved "https://registry.yarnpkg.com/cls-hooked/-/cls-hooked-4.2.2.tgz#ad2e9a4092680cdaffeb2d3551da0e225eae1908" @@ -4179,18 +4144,6 @@ co@^4.6.0: resolved "https://registry.yarnpkg.com/co/-/co-4.6.0.tgz#6ea6bdf3d853ae54ccb8e47bfa0bf3f9031fb184" integrity sha1-bqa989hTrlTMuOR7+gvz+QMfsYQ= -codemirror-spell-checker@1.1.2: - version "1.1.2" - resolved "https://registry.yarnpkg.com/codemirror-spell-checker/-/codemirror-spell-checker-1.1.2.tgz#1c660f9089483ccb5113b9ba9ca19c3f4993371e" - integrity sha1-HGYPkIlIPMtRE7m6nKGcP0mTNx4= - dependencies: - typo-js "*" - -codemirror@^5.63.1: - version "5.65.2" - resolved "https://registry.yarnpkg.com/codemirror/-/codemirror-5.65.2.tgz#5799a70cb3d706e10f60e267245e3a75205d3dd9" - integrity sha512-SZM4Zq7XEC8Fhroqe3LxbEEX1zUPWH1wMr5zxiBuiUF64iYOUH/JI88v4tBag8MiBS8B8gRv8O1pPXGYXQ4ErA== - collect-v8-coverage@^1.0.0: version "1.0.1" resolved "https://registry.yarnpkg.com/collect-v8-coverage/-/collect-v8-coverage-1.0.1.tgz#cc2c8e94fc18bbdffe64d6534570c8a673b27f59" @@ -4372,6 +4325,11 @@ configstore@^5.0.1: write-file-atomic "^3.0.0" xdg-basedir "^4.0.0" +console-clear@^1.1.0: + version "1.1.1" + resolved "https://registry.yarnpkg.com/console-clear/-/console-clear-1.1.1.tgz#995e20cbfbf14dd792b672cde387bd128d674bf7" + integrity sha512-pMD+MVR538ipqkG5JXeOEbKWS5um1H4LUUccUQG68qpeqBYbzYy79Gh55jkd2TtPdRfUaLWdv6LPP//5Zt0aPQ== + consolidate@^0.16.0: version "0.16.0" resolved "https://registry.yarnpkg.com/consolidate/-/consolidate-0.16.0.tgz#a11864768930f2f19431660a65906668f5fbdc16" @@ -4712,6 +4670,18 @@ dedent@^0.7.0: resolved "https://registry.yarnpkg.com/dedent/-/dedent-0.7.0.tgz#2495ddbaf6eb874abb0e1be9df22d2e5a544326c" integrity sha1-JJXduvbrh0q7Dhvp3yLS5aVEMmw= +deep-equal@^1.0.1: + version "1.1.1" + resolved "https://registry.yarnpkg.com/deep-equal/-/deep-equal-1.1.1.tgz#b5c98c942ceffaf7cb051e24e1434a25a2e6076a" + integrity sha512-yd9c5AdiqVcR+JjcwUQb9DkhJc8ngNr0MahEBGvDiJw8puWab2yZlh+nkasOnZP+EGTAP6rRp2JzJhJZzvNF8g== + dependencies: + is-arguments "^1.0.4" + is-date-object "^1.0.1" + is-regex "^1.0.4" + object-is "^1.0.1" + object-keys "^1.1.1" + regexp.prototype.flags "^1.2.0" + deep-equal@~1.0.1: version "1.0.1" resolved "https://registry.yarnpkg.com/deep-equal/-/deep-equal-1.0.1.tgz#f5d260292b660e084eff4cdbc9f08ad3247448b5" @@ -4922,6 +4892,11 @@ domexception@^2.0.1: dependencies: webidl-conversions "^5.0.0" +domino@^2.1.6: + version "2.1.6" + resolved "https://registry.yarnpkg.com/domino/-/domino-2.1.6.tgz#fe4ace4310526e5e7b9d12c7de01b7f485a57ffe" + integrity sha512-3VdM/SXBZX2omc9JF9nOPCtDaYQ67BGp5CoLpIQlO2KCAPETs8TcDHacF26jXadGbvUteZzRTeos2fhID5+ucQ== + dot-prop@^5.2.0: version "5.3.0" resolved "https://registry.yarnpkg.com/dot-prop/-/dot-prop-5.3.0.tgz#90ccce708cd9cd82cc4dc8c3ddd9abdd55b20e88" @@ -4966,17 +4941,6 @@ duplexer3@^0.1.4: resolved "https://registry.yarnpkg.com/duplexer3/-/duplexer3-0.1.4.tgz#ee01dd1cac0ed3cbc7fdbea37dc0a8f1ce002ce2" integrity sha1-7gHdHKwO08vH/b6jfcCo8c4ALOI= -easymde@^2.16.1: - version "2.16.1" - resolved "https://registry.yarnpkg.com/easymde/-/easymde-2.16.1.tgz#f4c2380312615cb33826f1a1fecfaa4022ff551a" - integrity sha512-FihYgjRsKfhGNk89SHSqxKLC4aJ1kfybPWW6iAmtb5GnXu+tnFPSzSaGBmk1RRlCuhFSjhF0SnIMGVPjEzkr6g== - dependencies: - "@types/codemirror" "^5.60.4" - "@types/marked" "^4.0.1" - codemirror "^5.63.1" - codemirror-spell-checker "1.1.2" - marked "^4.0.10" - ecc-jsbn@~0.1.1: version "0.1.2" resolved "https://registry.yarnpkg.com/ecc-jsbn/-/ecc-jsbn-0.1.2.tgz#3a83a904e54353287874c564b7549386849a98c9" @@ -5521,6 +5485,11 @@ event-target-shim@^5.0.0: resolved "https://registry.yarnpkg.com/event-target-shim/-/event-target-shim-5.0.1.tgz#5d4d3ebdf9583d63a5333ce2deb7480ab2b05789" integrity sha512-i/2XbnSz/uxRCU6+NdVJgKWDTM427+MqYbkQzD321DuCQJUqOuJKIA0IM2+W2xtYHdKOmZ4dR6fExsd4SXL+WQ== +eventemitter3@^2.0.3: + version "2.0.3" + resolved "https://registry.yarnpkg.com/eventemitter3/-/eventemitter3-2.0.3.tgz#b5e1079b59fb5e1ba2771c0a993be060a58c99ba" + integrity sha1-teEHm1n7XhuidxwKmTvgYKWMmbo= + events@1.1.1: version "1.1.1" resolved "https://registry.yarnpkg.com/events/-/events-1.1.1.tgz#9ebdb7635ad099c70dcc4c2a1f5004288e8bd924" @@ -5707,6 +5676,11 @@ fast-deep-equal@^3.1.1: resolved "https://registry.yarnpkg.com/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz#3a7d56b559d6cbc3eb512325244e619a65c6c525" integrity sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q== +fast-diff@1.1.2: + version "1.1.2" + resolved "https://registry.yarnpkg.com/fast-diff/-/fast-diff-1.1.2.tgz#4b62c42b8e03de3f848460b639079920695d0154" + integrity sha512-KaJUt+M9t1qaIteSvjc6P3RbMdXsNhK61GRftR6SNxqmhthcd9MGIi4T+o0jD8LUSpSnSKXE20nLtJ3fOHxQig== + fast-glob@^3.1.1: version "3.2.7" resolved "https://registry.yarnpkg.com/fast-glob/-/fast-glob-3.2.7.tgz#fd6cb7a2d7e9aa7a7846111e85a196d6b2f766a1" @@ -6168,6 +6142,11 @@ get-paths@0.0.7: dependencies: pify "^4.0.1" +get-port@^3.2.0: + version "3.2.0" + resolved "https://registry.yarnpkg.com/get-port/-/get-port-3.2.0.tgz#dd7ce7de187c06c8bf353796ac71e099f0980ebc" + integrity sha1-3Xzn3hh8Bsi/NTeWrHHgmfCYDrw= + get-port@^5.1.1: version "5.1.1" resolved "https://registry.yarnpkg.com/get-port/-/get-port-5.1.1.tgz#0469ed07563479de6efb986baf053dcd7d4e3193" @@ -6962,6 +6941,14 @@ is-accessor-descriptor@^1.0.0: dependencies: kind-of "^6.0.0" +is-arguments@^1.0.4: + version "1.1.1" + resolved "https://registry.yarnpkg.com/is-arguments/-/is-arguments-1.1.1.tgz#15b3f88fda01f2a97fec84ca761a560f123efa9b" + integrity sha512-8Q7EARjzEnKpt/PCD7e1cgUS0a6X8u5tdSiMqXhojOdoV9TsMsiO+9VLC5vAmO8N7/GmXn7yjR8qnA6bVAEzfA== + dependencies: + call-bind "^1.0.2" + has-tostringtag "^1.0.0" + is-arrayish@^0.2.1: version "0.2.1" resolved "https://registry.yarnpkg.com/is-arrayish/-/is-arrayish-0.2.1.tgz#77c99840527aa8ecb1a8ba697b80645a7a926a9d" @@ -7226,7 +7213,7 @@ is-property@^1.0.2: resolved "https://registry.yarnpkg.com/is-property/-/is-property-1.0.2.tgz#57fe1c4e48474edd65b09911f26b1cd4095dda84" integrity sha1-V/4cTkhHTt1lsJkR8msc1Ald2oQ= -is-regex@^1.1.4: +is-regex@^1.0.4, is-regex@^1.1.4: version "1.1.4" resolved "https://registry.yarnpkg.com/is-regex/-/is-regex-1.1.4.tgz#eef5663cd59fa4c0ae339505323df6854bb15958" integrity sha512-kvRdxDsxZjhzUX07ZnLydzS1TU/TJlTUHHY4YLL87e37oUA49DfkLqgy+VjFocowy29cKvcSiu+kIv728jTTVg== @@ -8564,7 +8551,7 @@ klaw-sync@^6.0.0: dependencies: graceful-fs "^4.1.11" -kleur@^3.0.3: +kleur@^3.0.0, kleur@^3.0.3: version "3.0.3" resolved "https://registry.yarnpkg.com/kleur/-/kleur-3.0.3.tgz#a79c9ecc86ee1ce3fa6206d1216c501f147fc07e" integrity sha512-eTIzlVOSUR+JxdDFepEYcBMtZ9Qqdef+rnzWdRZuMbOywu5tO2w2N7rqjoANZ5k9vywhL6Br1VRjUIgTQx4E8w== @@ -8988,6 +8975,11 @@ loader-utils@^2.0.0: emojis-list "^3.0.0" json5 "^2.1.2" +local-access@^1.0.1: + version "1.1.0" + resolved "https://registry.yarnpkg.com/local-access/-/local-access-1.1.0.tgz#e007c76ba2ca83d5877ba1a125fc8dfe23ba4798" + integrity sha512-XfegD5pyTAfb+GY6chk283Ox5z8WexG56OvM06RWLpAc/UHozO8X6xAxEkIitZOtsSMM1Yr3DkHgW5W+onLhCw== + locate-path@^3.0.0: version "3.0.0" resolved "https://registry.yarnpkg.com/locate-path/-/locate-path-3.0.0.tgz#dbec3b3ab759758071b58fe59fc41871af21400e" @@ -9266,6 +9258,17 @@ map-visit@^1.0.0: dependencies: object-visit "^1.0.0" +markdown-it@^12.0.2: + version "12.3.2" + resolved "https://registry.yarnpkg.com/markdown-it/-/markdown-it-12.3.2.tgz#bf92ac92283fe983fe4de8ff8abfb5ad72cd0c90" + integrity sha512-TchMembfxfNVpHkbtriWltGWc+m3xszaRD0CZup7GFFhzIgQqxIfn3eGj1yZpfuflzPvfkt611B2Q/Bsk1YnGg== + dependencies: + argparse "^2.0.1" + entities "~2.1.0" + linkify-it "^3.0.1" + mdurl "^1.0.1" + uc.micro "^1.0.5" + markdown-it@^12.2.0: version "12.2.0" resolved "https://registry.yarnpkg.com/markdown-it/-/markdown-it-12.2.0.tgz#091f720fd5db206f80de7a8d1f1a7035fd0d38db" @@ -9277,11 +9280,6 @@ markdown-it@^12.2.0: mdurl "^1.0.1" uc.micro "^1.0.5" -marked@^4.0.10: - version "4.0.12" - resolved "https://registry.yarnpkg.com/marked/-/marked-4.0.12.tgz#2262a4e6fd1afd2f13557726238b69a48b982f7d" - integrity sha512-hgibXWrEDNBWgGiK18j/4lkS6ihTe9sxtV4Q1OQppb/0zzyPSzoFANBa5MfsG/zgsWklmNnhm0XACZOH/0HBiQ== - md5@^2.3.0: version "2.3.0" resolved "https://registry.yarnpkg.com/md5/-/md5-2.3.0.tgz#c3da9a6aae3a30b46b7b0c349b87b110dc3bda4f" @@ -9411,6 +9409,11 @@ mime@^1.3.4, mime@^1.4.1: resolved "https://registry.yarnpkg.com/mime/-/mime-1.6.0.tgz#32cd9e5c64553bd58d19a568af452acff04981b1" integrity sha512-x0Vn8spI+wuJ1O6S7gnbaQg8Pxh4NNHb7KSINmEWKiPE4RKOplvijn+NkmYmmRgP68mc70j2EbeTFRsrswaQeg== +mime@^2.3.1: + version "2.6.0" + resolved "https://registry.yarnpkg.com/mime/-/mime-2.6.0.tgz#a2a682a95cd4d0cb1d6257e28f83da7e35800367" + integrity sha512-USPkMeET31rOMiarsBNIHZKLGgvKc/LrjofAnBlOttf5ajRvqiRA8QsenbcooctK6d6Ts6aqZXBA+XbkKthiQg== + mime@^3.0.0: version "3.0.0" resolved "https://registry.yarnpkg.com/mime/-/mime-3.0.0.tgz#b374550dca3a0c18443b0c950a6a58f1931cf7a7" @@ -9500,6 +9503,11 @@ mri@1.1.4: resolved "https://registry.yarnpkg.com/mri/-/mri-1.1.4.tgz#7cb1dd1b9b40905f1fac053abe25b6720f44744a" integrity sha512-6y7IjGPm8AzlvoUrwAaw1tLnUBudaS3752vcd8JtrpGGQn+rXIe63LFVHm/YMwtqAuh+LJPCFdlLYPWM1nYn6w== +mri@^1.1.0: + version "1.2.0" + resolved "https://registry.yarnpkg.com/mri/-/mri-1.2.0.tgz#6721480fec2a11a4889861115a48b6cbe7cc8f0b" + integrity sha512-tzzskb3bG8LvYGFF/mDTpq3jpI6Q9wc3LEmBaghu+DdCssd1FakN7Bc0hVNmEyGq1bq3RgfkCb3cmQLpNPOroA== + ms@2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/ms/-/ms-2.0.0.tgz#5608aeadfc00be6c2901df5f9861788de0d597c8" @@ -9822,6 +9830,14 @@ object-inspect@^1.11.0, object-inspect@^1.9.0: resolved "https://registry.yarnpkg.com/object-inspect/-/object-inspect-1.11.0.tgz#9dceb146cedd4148a0d9e51ab88d34cf509922b1" integrity sha512-jp7ikS6Sd3GxQfZJPyH3cjcbJF6GZPClgdV+EFygjFLQ5FmW/dRUnTd9PQ9k0JhoNDabWFbpF1yCdSWCC6gexg== +object-is@^1.0.1: + version "1.1.5" + resolved "https://registry.yarnpkg.com/object-is/-/object-is-1.1.5.tgz#b9deeaa5fc7f1846a0faecdceec138e5778f53ac" + integrity sha512-3cyDsyHgtmi7I7DfSSI2LDp6SK2lwvtbg0p0R1e0RvTqF5ceGx+K2dfSjm1bKDMVCFEDAQvy+o8c6a7VujOddw== + dependencies: + call-bind "^1.0.2" + define-properties "^1.1.3" + object-keys@^1.0.12, object-keys@^1.0.6, object-keys@^1.1.1: version "1.1.1" resolved "https://registry.yarnpkg.com/object-keys/-/object-keys-1.1.1.tgz#1c47f272df277f3b1daf061677d9c82e2322c60e" @@ -10096,6 +10112,11 @@ pako@^1.0.5: resolved "https://registry.yarnpkg.com/pako/-/pako-1.0.11.tgz#6c9599d340d54dfd3946380252a35705a6b992bf" integrity sha512-4hLB8Py4zZce5s4yd9XzopqwVv/yGNhV1Bl8NTmCq1763HeK2+EwVTv+leGeL13Dnh2wfbqowVPXCIO0z4taYw== +parchment@^1.1.4: + version "1.1.4" + resolved "https://registry.yarnpkg.com/parchment/-/parchment-1.1.4.tgz#aeded7ab938fe921d4c34bc339ce1168bc2ffde5" + integrity sha512-J5FBQt/pM2inLzg4hEWmzQx/8h8D0CiDxaG3vyp9rKrQRSDgBlhjdP5jQGgosEajXPSQouXGHOmVdgo7QmJuOg== + parent-module@^1.0.0: version "1.0.1" resolved "https://registry.yarnpkg.com/parent-module/-/parent-module-1.0.1.tgz#691d2709e78c79fae3a156622452d00762caaaa2" @@ -10958,6 +10979,27 @@ 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== +quill-delta@^3.6.2: + version "3.6.3" + resolved "https://registry.yarnpkg.com/quill-delta/-/quill-delta-3.6.3.tgz#b19fd2b89412301c60e1ff213d8d860eac0f1032" + integrity sha512-wdIGBlcX13tCHOXGMVnnTVFtGRLoP0imqxM696fIPwIf5ODIYUHIvHbZcyvGlZFiFhK5XzDC2lpjbxRhnM05Tg== + dependencies: + deep-equal "^1.0.1" + extend "^3.0.2" + fast-diff "1.1.2" + +quill@^1.3.7: + version "1.3.7" + resolved "https://registry.yarnpkg.com/quill/-/quill-1.3.7.tgz#da5b2f3a2c470e932340cdbf3668c9f21f9286e8" + integrity sha512-hG/DVzh/TiknWtE6QmWAF/pxoZKYxfe3J/d/+ShUWkDvvkZQVTPeVmUJVu1uE6DDooC4fWTiCLh84ul89oNz5g== + dependencies: + clone "^2.1.1" + deep-equal "^1.0.1" + eventemitter3 "^2.0.3" + extend "^3.0.2" + parchment "^1.1.4" + quill-delta "^3.6.2" + randombytes@^2.1.0: version "2.1.0" resolved "https://registry.yarnpkg.com/randombytes/-/randombytes-2.1.0.tgz#df6f84372f0270dc65cdf6291349ab7a473d4f2a" @@ -11173,6 +11215,14 @@ regex-not@^1.0.0, regex-not@^1.0.2: extend-shallow "^3.0.2" safe-regex "^1.1.0" +regexp.prototype.flags@^1.2.0: + version "1.4.1" + resolved "https://registry.yarnpkg.com/regexp.prototype.flags/-/regexp.prototype.flags-1.4.1.tgz#b3f4c0059af9e47eca9f3f660e51d81307e72307" + integrity sha512-pMR7hBVUUGI7PMA37m2ofIdQCsomVnas+Jn5UPGAHQ+/LlwKm/aTLJHdasmHRzlfeZwHiAOaRSo2rbBDm3nNUQ== + dependencies: + call-bind "^1.0.2" + define-properties "^1.1.3" + regexparam@2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/regexparam/-/regexparam-2.0.0.tgz#059476767d5f5f87f735fc7922d133fd1a118c8c" @@ -11454,6 +11504,13 @@ rxjs@^6.6.0: dependencies: tslib "^1.9.0" +sade@^1.4.0: + version "1.8.1" + resolved "https://registry.yarnpkg.com/sade/-/sade-1.8.1.tgz#0a78e81d658d394887be57d2a409bf703a3b2701" + integrity sha512-xal3CZX1Xlo/k4ApwCFrHVACi9fBqJ7V+mwhBsuf/1IOKbBy098Fex+Wa/5QMubw09pSZ/u8EY8PWgevJsXp1A== + dependencies: + mri "^1.1.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" @@ -11717,6 +11774,27 @@ simple-swizzle@^0.2.2: dependencies: is-arrayish "^0.3.1" +sirv-cli@^0.4.6: + version "0.4.6" + resolved "https://registry.yarnpkg.com/sirv-cli/-/sirv-cli-0.4.6.tgz#c28ab20deb3b34637f5a60863dc350f055abca04" + integrity sha512-/Vj85/kBvPL+n9ibgX6FicLE8VjidC1BhlX67PYPBfbBAphzR6i0k0HtU5c2arejfU3uzq8l3SYPCwl1x7z6Ww== + dependencies: + console-clear "^1.1.0" + get-port "^3.2.0" + kleur "^3.0.0" + local-access "^1.0.1" + sade "^1.4.0" + sirv "^0.4.6" + tinydate "^1.0.0" + +sirv@^0.4.6: + version "0.4.6" + resolved "https://registry.yarnpkg.com/sirv/-/sirv-0.4.6.tgz#185e44eb93d24009dd183b7494285c5180b81f22" + integrity sha512-rYpOXlNbpHiY4nVXxuDf4mXPvKz1reZGap/LkWp9TvcZ84qD/nPBjjH/6GZsgIjVMbOslnY8YYULAyP8jMn1GQ== + dependencies: + "@polka/url" "^0.5.0" + mime "^2.3.1" + sisteransi@^1.0.5: version "1.0.5" resolved "https://registry.yarnpkg.com/sisteransi/-/sisteransi-1.0.5.tgz#134d681297756437cc05ca01370d3a7a571075ed" @@ -12270,6 +12348,13 @@ svelte-apexcharts@^1.0.2: dependencies: apexcharts "^3.19.2" +svelte-flatpickr@^2.4.0: + version "2.4.0" + resolved "https://registry.yarnpkg.com/svelte-flatpickr/-/svelte-flatpickr-2.4.0.tgz#190871fc3305956c8c8fd3601cd036b8ac71ef49" + integrity sha512-UUC5Te+b0qi4POg7VDwfGh0m5W3Hf64OwkfOTj6FEe/dYZN4cBzpQ82EuuQl0CTbbBAsMkcjJcixV1d2V6EHCQ== + dependencies: + flatpickr "^4.5.2" + svelte-flatpickr@^3.1.0, svelte-flatpickr@^3.2.3: version "3.2.4" resolved "https://registry.yarnpkg.com/svelte-flatpickr/-/svelte-flatpickr-3.2.4.tgz#1824e26a5dc151d14906cfc7dfd100aefd1b072d" @@ -12611,6 +12696,11 @@ tinycolor2@^1.4.1: resolved "https://registry.yarnpkg.com/tinycolor2/-/tinycolor2-1.4.2.tgz#3f6a4d1071ad07676d7fa472e1fac40a719d8803" integrity sha512-vJhccZPs965sV/L2sU4oRQVAos0pQXwsvTLkWYdqJ+a8Q5kPFzJTuOFwy7UniPli44NKQGAglksjvOcpo95aZA== +tinydate@^1.0.0: + version "1.3.0" + resolved "https://registry.yarnpkg.com/tinydate/-/tinydate-1.3.0.tgz#e6ca8e5a22b51bb4ea1c3a2a4fd1352dbd4c57fb" + integrity sha512-7cR8rLy2QhYHpsBDBVYnnWXm8uRTr38RoZakFSW7Bs7PzfMPNZthuMLkwqZv7MTu8lhQ91cOFYS5a7iFj2oR3w== + tmp@^0.0.33: version "0.0.33" resolved "https://registry.yarnpkg.com/tmp/-/tmp-0.0.33.tgz#6d34335889768d21b2bcda0aa277ced3b1bfadf9" @@ -12822,6 +12912,13 @@ tunnel@0.0.6: resolved "https://registry.yarnpkg.com/tunnel/-/tunnel-0.0.6.tgz#72f1314b34a5b192db012324df2cc587ca47f92c" integrity sha512-1h/Lnq9yajKY2PEbBadPXj3VxsDDu844OnaAo52UVmIzIvwwtBPIuNvkjuzBlTWpfJyUbG3ez0KSBibQkj4ojg== +turndown@^7.0.0: + version "7.1.1" + resolved "https://registry.yarnpkg.com/turndown/-/turndown-7.1.1.tgz#96992f2d9b40a1a03d3ea61ad31b5a5c751ef77f" + integrity sha512-BEkXaWH7Wh7e9bd2QumhfAXk5g34+6QUmmWx+0q6ThaVOLuLUqsnkq35HQ5SBHSaxjSfSM7US5o4lhJNH7B9MA== + dependencies: + domino "^2.1.6" + tweetnacl@^0.14.3, tweetnacl@~0.14.0: version "0.14.5" resolved "https://registry.yarnpkg.com/tweetnacl/-/tweetnacl-0.14.5.tgz#5ae68177f192d4456269d108afa93ff8743f4f64" @@ -12891,11 +12988,6 @@ typescript@^4.3.5: resolved "https://registry.yarnpkg.com/typescript/-/typescript-4.3.5.tgz#4d1c37cc16e893973c45a06886b7113234f119f4" integrity sha512-DqQgihaQ9cUrskJo9kIyW/+g0Vxsk8cDtZ52a3NGh0YNTfpUSArXSohyUGnvbPazEPLu398C0UxmKSOrPumUzA== -typo-js@*: - version "1.2.1" - resolved "https://registry.yarnpkg.com/typo-js/-/typo-js-1.2.1.tgz#334a0d8c3f6c56f2f1e15fdf6c31677793cbbe9b" - integrity sha512-bTGLjbD3WqZDR3CgEFkyi9Q/SS2oM29ipXrWfDb4M74ea69QwKAECVceYpaBu0GfdnASMg9Qfl67ttB23nePHg== - 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" @@ -13071,9 +13163,9 @@ url-parse-lax@^3.0.0: 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== + version "1.5.10" + resolved "https://registry.yarnpkg.com/url-parse/-/url-parse-1.5.10.tgz#9d3c2f736c1d75dd3bd2be507dcc111f1e2ea9c1" + integrity sha512-WypcfiRhfeUP9vvF0j6rw0J3hrWrw6iZv3+22h6iRMJ/8z1Tj6XfLP4DsUix5MhMPnXpiHDoKyoZ/bdCkwBCiQ== dependencies: querystringify "^2.1.1" requires-port "^1.0.0" From 8b80379e9216231096d1ea3e8f9b345a1f34af52 Mon Sep 17 00:00:00 2001 From: Budibase Staging Release Bot <> Date: Wed, 2 Mar 2022 10:01:25 +0000 Subject: [PATCH 63/64] v1.0.79-alpha.6 --- lerna.json | 2 +- packages/backend-core/package.json | 2 +- packages/bbui/package.json | 4 ++-- packages/builder/package.json | 10 +++++----- packages/cli/package.json | 2 +- packages/client/package.json | 8 ++++---- packages/frontend-core/package.json | 4 ++-- packages/server/package.json | 8 ++++---- packages/string-templates/package.json | 2 +- packages/worker/package.json | 6 +++--- 10 files changed, 24 insertions(+), 24 deletions(-) diff --git a/lerna.json b/lerna.json index dfd7c6494b..f85c1b2efd 100644 --- a/lerna.json +++ b/lerna.json @@ -1,5 +1,5 @@ { - "version": "1.0.79-alpha.5", + "version": "1.0.79-alpha.6", "npmClient": "yarn", "packages": [ "packages/*" diff --git a/packages/backend-core/package.json b/packages/backend-core/package.json index b317e37d21..8a89eccffb 100644 --- a/packages/backend-core/package.json +++ b/packages/backend-core/package.json @@ -1,6 +1,6 @@ { "name": "@budibase/backend-core", - "version": "1.0.79-alpha.5", + "version": "1.0.79-alpha.6", "description": "Budibase backend core libraries used in server and worker", "main": "src/index.js", "author": "Budibase", diff --git a/packages/bbui/package.json b/packages/bbui/package.json index ace578e6fc..ef162826f3 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.79-alpha.5", + "version": "1.0.79-alpha.6", "license": "MPL-2.0", "svelte": "src/index.js", "module": "dist/bbui.es.js", @@ -38,7 +38,7 @@ ], "dependencies": { "@adobe/spectrum-css-workflow-icons": "^1.2.1", - "@budibase/string-templates": "^1.0.79-alpha.5", + "@budibase/string-templates": "^1.0.79-alpha.6", "@spectrum-css/actionbutton": "^1.0.1", "@spectrum-css/actiongroup": "^1.0.1", "@spectrum-css/avatar": "^3.0.2", diff --git a/packages/builder/package.json b/packages/builder/package.json index 6c85b96cc7..8f4803aa0f 100644 --- a/packages/builder/package.json +++ b/packages/builder/package.json @@ -1,6 +1,6 @@ { "name": "@budibase/builder", - "version": "1.0.79-alpha.5", + "version": "1.0.79-alpha.6", "license": "GPL-3.0", "private": true, "scripts": { @@ -65,10 +65,10 @@ } }, "dependencies": { - "@budibase/bbui": "^1.0.79-alpha.5", - "@budibase/client": "^1.0.79-alpha.5", - "@budibase/frontend-core": "^1.0.79-alpha.5", - "@budibase/string-templates": "^1.0.79-alpha.5", + "@budibase/bbui": "^1.0.79-alpha.6", + "@budibase/client": "^1.0.79-alpha.6", + "@budibase/frontend-core": "^1.0.79-alpha.6", + "@budibase/string-templates": "^1.0.79-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 dd55c17d8c..c6a7b49880 100644 --- a/packages/cli/package.json +++ b/packages/cli/package.json @@ -1,6 +1,6 @@ { "name": "@budibase/cli", - "version": "1.0.79-alpha.5", + "version": "1.0.79-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 4704844a5e..191871dfa1 100644 --- a/packages/client/package.json +++ b/packages/client/package.json @@ -1,6 +1,6 @@ { "name": "@budibase/client", - "version": "1.0.79-alpha.5", + "version": "1.0.79-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": "^1.0.79-alpha.5", - "@budibase/frontend-core": "^1.0.79-alpha.5", - "@budibase/string-templates": "^1.0.79-alpha.5", + "@budibase/bbui": "^1.0.79-alpha.6", + "@budibase/frontend-core": "^1.0.79-alpha.6", + "@budibase/string-templates": "^1.0.79-alpha.6", "@spectrum-css/button": "^3.0.3", "@spectrum-css/card": "^3.0.3", "@spectrum-css/divider": "^1.0.3", diff --git a/packages/frontend-core/package.json b/packages/frontend-core/package.json index 68cbe17f63..c318f382fb 100644 --- a/packages/frontend-core/package.json +++ b/packages/frontend-core/package.json @@ -1,12 +1,12 @@ { "name": "@budibase/frontend-core", - "version": "1.0.79-alpha.5", + "version": "1.0.79-alpha.6", "description": "Budibase frontend core libraries used in builder and client", "author": "Budibase", "license": "MPL-2.0", "svelte": "src/index.js", "dependencies": { - "@budibase/bbui": "^1.0.79-alpha.5", + "@budibase/bbui": "^1.0.79-alpha.6", "lodash": "^4.17.21", "svelte": "^3.46.2" } diff --git a/packages/server/package.json b/packages/server/package.json index b44d0a51b6..e4261ce154 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.79-alpha.5", + "version": "1.0.79-alpha.6", "description": "Budibase Web Server", "main": "src/index.ts", "repository": { @@ -74,9 +74,9 @@ "license": "GPL-3.0", "dependencies": { "@apidevtools/swagger-parser": "^10.0.3", - "@budibase/backend-core": "^1.0.79-alpha.5", - "@budibase/client": "^1.0.79-alpha.5", - "@budibase/string-templates": "^1.0.79-alpha.5", + "@budibase/backend-core": "^1.0.79-alpha.6", + "@budibase/client": "^1.0.79-alpha.6", + "@budibase/string-templates": "^1.0.79-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 6aba3ecf2a..30b10fecf3 100644 --- a/packages/string-templates/package.json +++ b/packages/string-templates/package.json @@ -1,6 +1,6 @@ { "name": "@budibase/string-templates", - "version": "1.0.79-alpha.5", + "version": "1.0.79-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 fae5b288c9..20eedb0b22 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.79-alpha.5", + "version": "1.0.79-alpha.6", "description": "Budibase background service", "main": "src/index.ts", "repository": { @@ -34,8 +34,8 @@ "author": "Budibase", "license": "GPL-3.0", "dependencies": { - "@budibase/backend-core": "^1.0.79-alpha.5", - "@budibase/string-templates": "^1.0.79-alpha.5", + "@budibase/backend-core": "^1.0.79-alpha.6", + "@budibase/string-templates": "^1.0.79-alpha.6", "@koa/router": "^8.0.0", "@sentry/node": "^6.0.0", "@techpass/passport-openidconnect": "^0.3.0", From af5210e4dc0292c997a6da62f1b0a9495f77a8c1 Mon Sep 17 00:00:00 2001 From: Budibase Staging Release Bot <> Date: Wed, 2 Mar 2022 10:47:17 +0000 Subject: [PATCH 64/64] v1.0.79-alpha.7 --- lerna.json | 2 +- packages/backend-core/package.json | 2 +- packages/bbui/package.json | 4 ++-- packages/builder/package.json | 10 +++++----- packages/cli/package.json | 2 +- packages/client/package.json | 8 ++++---- packages/frontend-core/package.json | 4 ++-- packages/server/package.json | 8 ++++---- packages/string-templates/package.json | 2 +- packages/worker/package.json | 6 +++--- 10 files changed, 24 insertions(+), 24 deletions(-) diff --git a/lerna.json b/lerna.json index f85c1b2efd..07b77404de 100644 --- a/lerna.json +++ b/lerna.json @@ -1,5 +1,5 @@ { - "version": "1.0.79-alpha.6", + "version": "1.0.79-alpha.7", "npmClient": "yarn", "packages": [ "packages/*" diff --git a/packages/backend-core/package.json b/packages/backend-core/package.json index 8a89eccffb..8b52691512 100644 --- a/packages/backend-core/package.json +++ b/packages/backend-core/package.json @@ -1,6 +1,6 @@ { "name": "@budibase/backend-core", - "version": "1.0.79-alpha.6", + "version": "1.0.79-alpha.7", "description": "Budibase backend core libraries used in server and worker", "main": "src/index.js", "author": "Budibase", diff --git a/packages/bbui/package.json b/packages/bbui/package.json index ef162826f3..8c822980cf 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.79-alpha.6", + "version": "1.0.79-alpha.7", "license": "MPL-2.0", "svelte": "src/index.js", "module": "dist/bbui.es.js", @@ -38,7 +38,7 @@ ], "dependencies": { "@adobe/spectrum-css-workflow-icons": "^1.2.1", - "@budibase/string-templates": "^1.0.79-alpha.6", + "@budibase/string-templates": "^1.0.79-alpha.7", "@spectrum-css/actionbutton": "^1.0.1", "@spectrum-css/actiongroup": "^1.0.1", "@spectrum-css/avatar": "^3.0.2", diff --git a/packages/builder/package.json b/packages/builder/package.json index 8f4803aa0f..33518612e5 100644 --- a/packages/builder/package.json +++ b/packages/builder/package.json @@ -1,6 +1,6 @@ { "name": "@budibase/builder", - "version": "1.0.79-alpha.6", + "version": "1.0.79-alpha.7", "license": "GPL-3.0", "private": true, "scripts": { @@ -65,10 +65,10 @@ } }, "dependencies": { - "@budibase/bbui": "^1.0.79-alpha.6", - "@budibase/client": "^1.0.79-alpha.6", - "@budibase/frontend-core": "^1.0.79-alpha.6", - "@budibase/string-templates": "^1.0.79-alpha.6", + "@budibase/bbui": "^1.0.79-alpha.7", + "@budibase/client": "^1.0.79-alpha.7", + "@budibase/frontend-core": "^1.0.79-alpha.7", + "@budibase/string-templates": "^1.0.79-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 c6a7b49880..75a72fa193 100644 --- a/packages/cli/package.json +++ b/packages/cli/package.json @@ -1,6 +1,6 @@ { "name": "@budibase/cli", - "version": "1.0.79-alpha.6", + "version": "1.0.79-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 191871dfa1..c776e3f698 100644 --- a/packages/client/package.json +++ b/packages/client/package.json @@ -1,6 +1,6 @@ { "name": "@budibase/client", - "version": "1.0.79-alpha.6", + "version": "1.0.79-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": "^1.0.79-alpha.6", - "@budibase/frontend-core": "^1.0.79-alpha.6", - "@budibase/string-templates": "^1.0.79-alpha.6", + "@budibase/bbui": "^1.0.79-alpha.7", + "@budibase/frontend-core": "^1.0.79-alpha.7", + "@budibase/string-templates": "^1.0.79-alpha.7", "@spectrum-css/button": "^3.0.3", "@spectrum-css/card": "^3.0.3", "@spectrum-css/divider": "^1.0.3", diff --git a/packages/frontend-core/package.json b/packages/frontend-core/package.json index c318f382fb..fe73177cbb 100644 --- a/packages/frontend-core/package.json +++ b/packages/frontend-core/package.json @@ -1,12 +1,12 @@ { "name": "@budibase/frontend-core", - "version": "1.0.79-alpha.6", + "version": "1.0.79-alpha.7", "description": "Budibase frontend core libraries used in builder and client", "author": "Budibase", "license": "MPL-2.0", "svelte": "src/index.js", "dependencies": { - "@budibase/bbui": "^1.0.79-alpha.6", + "@budibase/bbui": "^1.0.79-alpha.7", "lodash": "^4.17.21", "svelte": "^3.46.2" } diff --git a/packages/server/package.json b/packages/server/package.json index e4261ce154..43cf9b9dbe 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.79-alpha.6", + "version": "1.0.79-alpha.7", "description": "Budibase Web Server", "main": "src/index.ts", "repository": { @@ -74,9 +74,9 @@ "license": "GPL-3.0", "dependencies": { "@apidevtools/swagger-parser": "^10.0.3", - "@budibase/backend-core": "^1.0.79-alpha.6", - "@budibase/client": "^1.0.79-alpha.6", - "@budibase/string-templates": "^1.0.79-alpha.6", + "@budibase/backend-core": "^1.0.79-alpha.7", + "@budibase/client": "^1.0.79-alpha.7", + "@budibase/string-templates": "^1.0.79-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 30b10fecf3..dc5cc078d6 100644 --- a/packages/string-templates/package.json +++ b/packages/string-templates/package.json @@ -1,6 +1,6 @@ { "name": "@budibase/string-templates", - "version": "1.0.79-alpha.6", + "version": "1.0.79-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 20eedb0b22..5414543a79 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.79-alpha.6", + "version": "1.0.79-alpha.7", "description": "Budibase background service", "main": "src/index.ts", "repository": { @@ -34,8 +34,8 @@ "author": "Budibase", "license": "GPL-3.0", "dependencies": { - "@budibase/backend-core": "^1.0.79-alpha.6", - "@budibase/string-templates": "^1.0.79-alpha.6", + "@budibase/backend-core": "^1.0.79-alpha.7", + "@budibase/string-templates": "^1.0.79-alpha.7", "@koa/router": "^8.0.0", "@sentry/node": "^6.0.0", "@techpass/passport-openidconnect": "^0.3.0",