From 571ac3cf061913eb3d375209e5092e6f407d7428 Mon Sep 17 00:00:00 2001
From: mike12345567
Date: Thu, 11 Mar 2021 18:29:48 +0000
Subject: [PATCH 01/26] Testing some of the automation actions (still a few to
complete) and adding quick test case for the self host stuff.
---
packages/server/package.json | 5 +-
.../src/api/routes/tests/automation.spec.js | 2 +-
.../src/api/routes/tests/datasource.spec.js | 4 +-
.../src/api/routes/tests/layout.spec.js | 2 +-
.../src/api/routes/tests/permissions.spec.js | 2 +-
.../server/src/api/routes/tests/query.spec.js | 4 +-
.../server/src/api/routes/tests/role.spec.js | 2 +-
.../src/api/routes/tests/routing.spec.js | 2 +-
.../server/src/api/routes/tests/row.spec.js | 3 +-
.../src/api/routes/tests/screen.spec.js | 2 +-
.../server/src/api/routes/tests/user.spec.js | 2 +-
.../api/routes/tests/utilities/controllers.js | 15 -----
.../src/api/routes/tests/utilities/index.js | 5 +-
.../src/api/routes/tests/webhook.spec.js | 2 +-
packages/server/src/automations/actions.js | 3 +
.../server/src/automations/steps/createRow.js | 18 +++---
.../server/src/automations/steps/filter.js | 7 ++-
.../src/automations/tests/createRow.spec.js | 57 +++++++++++++++++++
.../src/automations/tests/createUser.spec.js | 43 ++++++++++++++
.../src/automations/tests/delay.spec.js | 12 ++++
.../src/automations/tests/filter.spec.js | 48 ++++++++++++++++
.../src/automations/tests/utilities/index.js | 43 ++++++++++++++
.../src/middleware/tests/usageQuota.spec.js | 2 +-
.../server/src/selfhost/tests/setup.spec.js | 26 +++++++++
.../tests/utilities/TestConfiguration.js | 29 +++++++---
.../server/src/tests/utilities/controllers.js | 15 +++++
.../routes => }/tests/utilities/structures.js | 8 +--
27 files changed, 306 insertions(+), 57 deletions(-)
delete mode 100644 packages/server/src/api/routes/tests/utilities/controllers.js
create mode 100644 packages/server/src/automations/tests/createRow.spec.js
create mode 100644 packages/server/src/automations/tests/createUser.spec.js
create mode 100644 packages/server/src/automations/tests/delay.spec.js
create mode 100644 packages/server/src/automations/tests/filter.spec.js
create mode 100644 packages/server/src/automations/tests/utilities/index.js
create mode 100644 packages/server/src/selfhost/tests/setup.spec.js
rename packages/server/src/{api/routes => }/tests/utilities/TestConfiguration.js (91%)
create mode 100644 packages/server/src/tests/utilities/controllers.js
rename packages/server/src/{api/routes => }/tests/utilities/structures.js (86%)
diff --git a/packages/server/package.json b/packages/server/package.json
index 99763109f3..ec37ed0605 100644
--- a/packages/server/package.json
+++ b/packages/server/package.json
@@ -55,9 +55,8 @@
"!src/db/views/*.js",
"!src/api/routes/tests/**/*.js",
"!src/api/controllers/deploy/**/*.js",
- "!src/api/controllers/static/templates/**/*",
- "!src/api/controllers/static/selfhost/**/*",
- "!src/*.js"
+ "!src/*.js",
+ "!src/api/controllers/static/**/*"
],
"coverageReporters": [
"lcov",
diff --git a/packages/server/src/api/routes/tests/automation.spec.js b/packages/server/src/api/routes/tests/automation.spec.js
index 9d11219506..5654c14c17 100644
--- a/packages/server/src/api/routes/tests/automation.spec.js
+++ b/packages/server/src/api/routes/tests/automation.spec.js
@@ -3,8 +3,8 @@ const {
getAllTableRows,
clearAllAutomations,
} = require("./utilities/TestFunctions")
-const { basicAutomation } = require("./utilities/structures")
const setup = require("./utilities")
+const { basicAutomation } = setup.structures
const MAX_RETRIES = 4
diff --git a/packages/server/src/api/routes/tests/datasource.spec.js b/packages/server/src/api/routes/tests/datasource.spec.js
index ee1a1c47f5..c1448894b1 100644
--- a/packages/server/src/api/routes/tests/datasource.spec.js
+++ b/packages/server/src/api/routes/tests/datasource.spec.js
@@ -1,6 +1,6 @@
-let {basicDatasource} = require("./utilities/structures")
-let {checkBuilderEndpoint} = require("./utilities/TestFunctions")
let setup = require("./utilities")
+let { basicDatasource } = setup.structures
+let { checkBuilderEndpoint } = require("./utilities/TestFunctions")
describe("/datasources", () => {
let request = setup.getRequest()
diff --git a/packages/server/src/api/routes/tests/layout.spec.js b/packages/server/src/api/routes/tests/layout.spec.js
index 6b21554d71..4842b2cc8e 100644
--- a/packages/server/src/api/routes/tests/layout.spec.js
+++ b/packages/server/src/api/routes/tests/layout.spec.js
@@ -1,6 +1,6 @@
const { checkBuilderEndpoint } = require("./utilities/TestFunctions")
const setup = require("./utilities")
-const { basicLayout } = require("./utilities/structures")
+const { basicLayout } = setup.structures
describe("/layouts", () => {
let request = setup.getRequest()
diff --git a/packages/server/src/api/routes/tests/permissions.spec.js b/packages/server/src/api/routes/tests/permissions.spec.js
index b24fac57c0..aab5567881 100644
--- a/packages/server/src/api/routes/tests/permissions.spec.js
+++ b/packages/server/src/api/routes/tests/permissions.spec.js
@@ -1,6 +1,6 @@
const { BUILTIN_ROLE_IDS } = require("../../../utilities/security/roles")
const setup = require("./utilities")
-const { basicRow } = require("./utilities/structures")
+const { basicRow } = setup.structures
const HIGHER_ROLE_ID = BUILTIN_ROLE_IDS.BASIC
const STD_ROLE_ID = BUILTIN_ROLE_IDS.PUBLIC
diff --git a/packages/server/src/api/routes/tests/query.spec.js b/packages/server/src/api/routes/tests/query.spec.js
index aa0e5428c5..87938c6a37 100644
--- a/packages/server/src/api/routes/tests/query.spec.js
+++ b/packages/server/src/api/routes/tests/query.spec.js
@@ -1,9 +1,9 @@
// mock out postgres for this
jest.mock("pg")
-const { checkBuilderEndpoint } = require("./utilities/TestFunctions")
-const { basicQuery, basicDatasource } = require("./utilities/structures")
const setup = require("./utilities")
+const { checkBuilderEndpoint } = require("./utilities/TestFunctions")
+const { basicQuery, basicDatasource } = setup.structures
describe("/queries", () => {
let request = setup.getRequest()
diff --git a/packages/server/src/api/routes/tests/role.spec.js b/packages/server/src/api/routes/tests/role.spec.js
index 9bb38b295a..062450cf63 100644
--- a/packages/server/src/api/routes/tests/role.spec.js
+++ b/packages/server/src/api/routes/tests/role.spec.js
@@ -2,8 +2,8 @@ const { BUILTIN_ROLE_IDS } = require("../../../utilities/security/roles")
const {
BUILTIN_PERMISSION_IDS,
} = require("../../../utilities/security/permissions")
-const { basicRole } = require("./utilities/structures")
const setup = require("./utilities")
+const { basicRole } = setup.structures
describe("/roles", () => {
let request = setup.getRequest()
diff --git a/packages/server/src/api/routes/tests/routing.spec.js b/packages/server/src/api/routes/tests/routing.spec.js
index 70d1632bf3..beb1659b2a 100644
--- a/packages/server/src/api/routes/tests/routing.spec.js
+++ b/packages/server/src/api/routes/tests/routing.spec.js
@@ -1,5 +1,5 @@
const setup = require("./utilities")
-const { basicScreen } = require("./utilities/structures")
+const { basicScreen } = setup.structures
const { checkBuilderEndpoint } = require("./utilities/TestFunctions")
const { BUILTIN_ROLE_IDS } = require("../../../utilities/security/roles")
diff --git a/packages/server/src/api/routes/tests/row.spec.js b/packages/server/src/api/routes/tests/row.spec.js
index 1442e4eb75..f597db0cc0 100644
--- a/packages/server/src/api/routes/tests/row.spec.js
+++ b/packages/server/src/api/routes/tests/row.spec.js
@@ -1,7 +1,6 @@
const { outputProcessing } = require("../../../utilities/rowProcessor")
-const env = require("../../../environment")
-const { basicRow } = require("./utilities/structures")
const setup = require("./utilities")
+const { basicRow } = setup.structures
describe("/rows", () => {
let request = setup.getRequest()
diff --git a/packages/server/src/api/routes/tests/screen.spec.js b/packages/server/src/api/routes/tests/screen.spec.js
index ae30afd29c..5533bc5e59 100644
--- a/packages/server/src/api/routes/tests/screen.spec.js
+++ b/packages/server/src/api/routes/tests/screen.spec.js
@@ -1,6 +1,6 @@
const { checkBuilderEndpoint } = require("./utilities/TestFunctions")
const setup = require("./utilities")
-const { basicScreen } = require("./utilities/structures")
+const { basicScreen } = setup.structures
describe("/screens", () => {
let request = setup.getRequest()
diff --git a/packages/server/src/api/routes/tests/user.spec.js b/packages/server/src/api/routes/tests/user.spec.js
index 5e7ec9e9d4..808f1a2622 100644
--- a/packages/server/src/api/routes/tests/user.spec.js
+++ b/packages/server/src/api/routes/tests/user.spec.js
@@ -1,7 +1,7 @@
const { BUILTIN_ROLE_IDS } = require("../../../utilities/security/roles")
const { checkPermissionsEndpoint } = require("./utilities/TestFunctions")
-const { basicUser } = require("./utilities/structures")
const setup = require("./utilities")
+const { basicUser } = setup.structures
describe("/users", () => {
let request = setup.getRequest()
diff --git a/packages/server/src/api/routes/tests/utilities/controllers.js b/packages/server/src/api/routes/tests/utilities/controllers.js
deleted file mode 100644
index a4eb9ac9de..0000000000
--- a/packages/server/src/api/routes/tests/utilities/controllers.js
+++ /dev/null
@@ -1,15 +0,0 @@
-module.exports = {
- table: require("../../../controllers/table"),
- row: require("../../../controllers/row"),
- role: require("../../../controllers/role"),
- perms: require("../../../controllers/permission"),
- view: require("../../../controllers/view"),
- app: require("../../../controllers/application"),
- user: require("../../../controllers/user"),
- automation: require("../../../controllers/automation"),
- datasource: require("../../../controllers/datasource"),
- query: require("../../../controllers/query"),
- screen: require("../../../controllers/screen"),
- webhook: require("../../../controllers/webhook"),
- layout: require("../../../controllers/layout"),
-}
diff --git a/packages/server/src/api/routes/tests/utilities/index.js b/packages/server/src/api/routes/tests/utilities/index.js
index 7126f141e2..ed5c98cc48 100644
--- a/packages/server/src/api/routes/tests/utilities/index.js
+++ b/packages/server/src/api/routes/tests/utilities/index.js
@@ -1,4 +1,5 @@
-const TestConfig = require("./TestConfiguration")
+const TestConfig = require("../../../../tests/utilities/TestConfiguration")
+const structures = require("../../../../tests/utilities/structures")
const env = require("../../../../environment")
exports.delay = ms => new Promise(resolve => setTimeout(resolve, ms))
@@ -51,3 +52,5 @@ exports.switchToCloudForFunction = async func => {
throw error
}
}
+
+exports.structures = structures
diff --git a/packages/server/src/api/routes/tests/webhook.spec.js b/packages/server/src/api/routes/tests/webhook.spec.js
index 2bf5445a09..7fb7a26fc1 100644
--- a/packages/server/src/api/routes/tests/webhook.spec.js
+++ b/packages/server/src/api/routes/tests/webhook.spec.js
@@ -1,6 +1,6 @@
const setup = require("./utilities")
const { checkBuilderEndpoint } = require("./utilities/TestFunctions")
-const { basicWebhook, basicAutomation } = require("./utilities/structures")
+const { basicWebhook, basicAutomation } = setup.structures
describe("/webhooks", () => {
let request = setup.getRequest()
diff --git a/packages/server/src/automations/actions.js b/packages/server/src/automations/actions.js
index ea88c2d1d6..37126c7ed4 100644
--- a/packages/server/src/automations/actions.js
+++ b/packages/server/src/automations/actions.js
@@ -37,10 +37,12 @@ let AUTOMATION_BUCKET = env.AUTOMATION_BUCKET
let AUTOMATION_DIRECTORY = env.AUTOMATION_DIRECTORY
let MANIFEST = null
+/* instanbul ignore next */
function buildBundleName(pkgName, version) {
return `${pkgName}@${version}.min.js`
}
+/* instanbul ignore next */
async function downloadPackage(name, version, bundleName) {
await download(
`${AUTOMATION_BUCKET}/${name}/${version}/${bundleName}`,
@@ -96,5 +98,6 @@ module.exports.init = async function() {
return MANIFEST
}
+// definitions will have downloaded ones added to it, while builtin won't
module.exports.DEFINITIONS = BUILTIN_DEFINITIONS
module.exports.BUILTIN_DEFINITIONS = BUILTIN_DEFINITIONS
diff --git a/packages/server/src/automations/steps/createRow.js b/packages/server/src/automations/steps/createRow.js
index aeb75958f6..ef136e1131 100644
--- a/packages/server/src/automations/steps/createRow.js
+++ b/packages/server/src/automations/steps/createRow.js
@@ -59,15 +59,14 @@ module.exports.definition = {
}
module.exports.run = async function({ inputs, appId, apiKey, emitter }) {
- // TODO: better logging of when actions are missed due to missing parameters
if (inputs.row == null || inputs.row.tableId == null) {
- return
+ return {
+ success: false,
+ response: {
+ message: "Invalid inputs",
+ },
+ }
}
- inputs.row = await automationUtils.cleanUpRow(
- appId,
- inputs.row.tableId,
- inputs.row
- )
// have to clean up the row, remove the table from it
const ctx = {
params: {
@@ -81,6 +80,11 @@ module.exports.run = async function({ inputs, appId, apiKey, emitter }) {
}
try {
+ inputs.row = await automationUtils.cleanUpRow(
+ appId,
+ inputs.row.tableId,
+ inputs.row
+ )
if (env.CLOUD) {
await usage.update(apiKey, usage.Properties.ROW, 1)
}
diff --git a/packages/server/src/automations/steps/filter.js b/packages/server/src/automations/steps/filter.js
index 4286cd44e8..586e424cc4 100644
--- a/packages/server/src/automations/steps/filter.js
+++ b/packages/server/src/automations/steps/filter.js
@@ -12,6 +12,9 @@ const PrettyLogicConditions = {
[LogicConditions.LESS_THAN]: "Less than",
}
+module.exports.LogicConditions = LogicConditions
+module.exports.PrettyLogicConditions = PrettyLogicConditions
+
module.exports.definition = {
name: "Filter",
tagline: "{{inputs.field}} {{inputs.condition}} {{inputs.value}}",
@@ -64,7 +67,7 @@ module.exports.run = async function filter({ inputs }) {
value = Date.parse(value)
field = Date.parse(field)
}
- let success
+ let success = false
if (typeof field !== "object" && typeof value !== "object") {
switch (condition) {
case LogicConditions.EQUAL:
@@ -79,8 +82,6 @@ module.exports.run = async function filter({ inputs }) {
case LogicConditions.LESS_THAN:
success = field < value
break
- default:
- return
}
} else {
success = false
diff --git a/packages/server/src/automations/tests/createRow.spec.js b/packages/server/src/automations/tests/createRow.spec.js
new file mode 100644
index 0000000000..0be2803e47
--- /dev/null
+++ b/packages/server/src/automations/tests/createRow.spec.js
@@ -0,0 +1,57 @@
+const usageQuota = require("../../utilities/usageQuota")
+const env = require("../../environment")
+const setup = require("./utilities")
+
+jest.mock("../../utilities/usageQuota")
+
+describe("test the create row action", () => {
+ let table, row
+ let config = setup.getConfig()
+
+ beforeEach(async () => {
+ await config.init()
+ table = await config.createTable()
+ row = {
+ tableId: table._id,
+ name: "test",
+ description: "test",
+ }
+ })
+
+ afterAll(setup.afterAll)
+
+ it("should be able to run the action", async () => {
+ const res = await setup.runStep(setup.actions.CREATE_ROW.stepId, {
+ row,
+ })
+ expect(res.id).toBeDefined()
+ expect(res.revision).toBeDefined()
+ const gottenRow = await config.getRow(table._id, res.id)
+ expect(gottenRow.name).toEqual("test")
+ expect(gottenRow.description).toEqual("test")
+ })
+
+ it("should return an error (not throw) when bad info provided", async () => {
+ const res = await setup.runStep(setup.actions.CREATE_ROW.stepId, {
+ row: {
+ tableId: "invalid",
+ invalid: "invalid",
+ }
+ })
+ expect(res.success).toEqual(false)
+ })
+
+ it("check usage quota attempts", async () => {
+ env.CLOUD = true
+ await setup.runStep(setup.actions.CREATE_ROW.stepId, {
+ row
+ })
+ expect(usageQuota.update).toHaveBeenCalledWith(setup.apiKey, "rows", 1)
+ env.CLOUD = false
+ })
+
+ it("should check invalid inputs return an error", async () => {
+ const res = await setup.runStep(setup.actions.CREATE_ROW.stepId, {})
+ expect(res.success).toEqual(false)
+ })
+})
diff --git a/packages/server/src/automations/tests/createUser.spec.js b/packages/server/src/automations/tests/createUser.spec.js
new file mode 100644
index 0000000000..5f65e260a9
--- /dev/null
+++ b/packages/server/src/automations/tests/createUser.spec.js
@@ -0,0 +1,43 @@
+const usageQuota = require("../../utilities/usageQuota")
+const env = require("../../environment")
+const setup = require("./utilities")
+const { BUILTIN_ROLE_IDS } = require("../../utilities/security/roles")
+const { ViewNames } = require("../../db/utils")
+
+jest.mock("../../utilities/usageQuota")
+
+describe("test the create user action", () => {
+ let config = setup.getConfig()
+ let user
+
+ beforeEach(async () => {
+ await config.init()
+ user = {
+ email: "test@test.com",
+ password: "password",
+ roleId: BUILTIN_ROLE_IDS.POWER
+ }
+ })
+
+ afterAll(setup.afterAll)
+
+ it("should be able to run the action", async () => {
+ const res = await setup.runStep(setup.actions.CREATE_USER.stepId, user)
+ expect(res.id).toBeDefined()
+ expect(res.revision).toBeDefined()
+ const userDoc = await config.getRow(ViewNames.USERS, res.id)
+ expect(userDoc.email).toEqual(user.email)
+ })
+
+ it("should return an error if no inputs provided", async () => {
+ const res = await setup.runStep(setup.actions.CREATE_USER.stepId, {})
+ expect(res.success).toEqual(false)
+ })
+
+ it("check usage quota attempts", async () => {
+ env.CLOUD = true
+ await setup.runStep(setup.actions.CREATE_USER.stepId, user)
+ expect(usageQuota.update).toHaveBeenCalledWith(setup.apiKey, "users", 1)
+ env.CLOUD = false
+ })
+})
diff --git a/packages/server/src/automations/tests/delay.spec.js b/packages/server/src/automations/tests/delay.spec.js
new file mode 100644
index 0000000000..8e9a725d01
--- /dev/null
+++ b/packages/server/src/automations/tests/delay.spec.js
@@ -0,0 +1,12 @@
+const setup = require("./utilities")
+
+describe("test the delay action", () => {
+ it("should be able to run the delay", async () => {
+ const time = 100
+ const before = Date.now()
+ await setup.runStep(setup.logic.DELAY.stepId, { time: time })
+ const now = Date.now()
+ // divide by two just so that test will always pass as long as there was some sort of delay
+ expect(now - before).toBeGreaterThanOrEqual(time / 2)
+ })
+})
\ No newline at end of file
diff --git a/packages/server/src/automations/tests/filter.spec.js b/packages/server/src/automations/tests/filter.spec.js
new file mode 100644
index 0000000000..8ddd94f7e4
--- /dev/null
+++ b/packages/server/src/automations/tests/filter.spec.js
@@ -0,0 +1,48 @@
+const setup = require("./utilities")
+const { LogicConditions } = require("../steps/filter")
+
+describe("test the delay action", () => {
+ async function checkFilter(field, condition, value, pass = true) {
+ let res = await setup.runStep(setup.logic.FILTER.stepId,
+ { field, condition, value }
+ )
+ expect(res.success).toEqual(pass)
+ }
+
+ it("should be able test equality", async () => {
+ await checkFilter("hello", LogicConditions.EQUAL, "hello", true)
+ await checkFilter("hello", LogicConditions.EQUAL, "no", false)
+ })
+
+ it("should be able to test greater than", async () => {
+ await checkFilter(10, LogicConditions.GREATER_THAN, 5, true)
+ await checkFilter(10, LogicConditions.GREATER_THAN, 15, false)
+ })
+
+ it("should be able to test less than", async () => {
+ await checkFilter(5, LogicConditions.LESS_THAN, 10, true)
+ await checkFilter(15, LogicConditions.LESS_THAN, 10, false)
+ })
+
+ it("should be able to in-equality", async () => {
+ await checkFilter("hello", LogicConditions.NOT_EQUAL, "no", true)
+ await checkFilter(10, LogicConditions.NOT_EQUAL, 10, false)
+ })
+
+ it("check number coercion", async () => {
+ await checkFilter("10", LogicConditions.GREATER_THAN, "5", true)
+ })
+
+ it("check date coercion", async () => {
+ await checkFilter(
+ (new Date()).toISOString(),
+ LogicConditions.GREATER_THAN,
+ (new Date(-10000)).toISOString(),
+ true
+ )
+ })
+
+ it("check objects always false", async () => {
+ await checkFilter({}, LogicConditions.EQUAL, {}, false)
+ })
+})
\ No newline at end of file
diff --git a/packages/server/src/automations/tests/utilities/index.js b/packages/server/src/automations/tests/utilities/index.js
new file mode 100644
index 0000000000..ad149d6bde
--- /dev/null
+++ b/packages/server/src/automations/tests/utilities/index.js
@@ -0,0 +1,43 @@
+const TestConfig = require("../../../tests/utilities/TestConfiguration")
+const actions = require("../../actions")
+const logic = require("../../logic")
+const emitter = require("../../../events/index")
+
+let config
+
+exports.getConfig = () => {
+ if (!config) {
+ config = new TestConfig(false)
+ }
+ return config
+}
+
+exports.afterAll = () => {
+ config.end()
+}
+
+exports.runStep = async function runStep(stepId, inputs) {
+ let step
+ if (
+ Object.values(exports.actions)
+ .map(action => action.stepId)
+ .includes(stepId)
+ ) {
+ step = await actions.getAction(stepId)
+ } else {
+ step = logic.getLogic(stepId)
+ }
+ expect(step).toBeDefined()
+ return step({
+ inputs,
+ appId: config ? config.getAppId() : null,
+ // don't really need an API key, mocked out usage quota, not being tested here
+ apiKey: exports.apiKey,
+ emitter,
+ })
+}
+
+exports.apiKey = "test"
+
+exports.actions = actions.BUILTIN_DEFINITIONS
+exports.logic = logic.BUILTIN_DEFINITIONS
diff --git a/packages/server/src/middleware/tests/usageQuota.spec.js b/packages/server/src/middleware/tests/usageQuota.spec.js
index c76acb47d2..395f14c1ed 100644
--- a/packages/server/src/middleware/tests/usageQuota.spec.js
+++ b/packages/server/src/middleware/tests/usageQuota.spec.js
@@ -3,7 +3,7 @@ const usageQuota = require("../../utilities/usageQuota")
const CouchDB = require("../../db")
const env = require("../../environment")
-jest.mock("../../db");
+jest.mock("../../db")
jest.mock("../../utilities/usageQuota")
jest.mock("../../environment")
diff --git a/packages/server/src/selfhost/tests/setup.spec.js b/packages/server/src/selfhost/tests/setup.spec.js
new file mode 100644
index 0000000000..13eeda0b1b
--- /dev/null
+++ b/packages/server/src/selfhost/tests/setup.spec.js
@@ -0,0 +1,26 @@
+const selfhost = require("..")
+const env = require("../../environment")
+
+describe("test the setup process", () => {
+ beforeAll(() => {
+ env.SELF_HOSTED = true
+ })
+
+ beforeEach(async () => {
+ await selfhost.init()
+ })
+
+ afterAll(() => {
+ env.SELF_HOSTED = false
+ })
+
+ it("getSelfHostInfo", async () => {
+ let info = await selfhost.getSelfHostInfo()
+ expect(info._id).toEqual("self-host-info")
+ })
+
+ it("getSelfHostAPIKey", async () => {
+ let apiKey = await selfhost.getSelfHostAPIKey()
+ expect(typeof apiKey).toEqual("string")
+ })
+})
\ No newline at end of file
diff --git a/packages/server/src/api/routes/tests/utilities/TestConfiguration.js b/packages/server/src/tests/utilities/TestConfiguration.js
similarity index 91%
rename from packages/server/src/api/routes/tests/utilities/TestConfiguration.js
rename to packages/server/src/tests/utilities/TestConfiguration.js
index 0ff742293d..9651bfb670 100644
--- a/packages/server/src/api/routes/tests/utilities/TestConfiguration.js
+++ b/packages/server/src/tests/utilities/TestConfiguration.js
@@ -1,6 +1,6 @@
-const { BUILTIN_ROLE_IDS } = require("../../../../utilities/security/roles")
+const { BUILTIN_ROLE_IDS } = require("../../utilities/security/roles")
const jwt = require("jsonwebtoken")
-const env = require("../../../../environment")
+const env = require("../../environment")
const {
basicTable,
basicRow,
@@ -15,18 +15,20 @@ const {
const controllers = require("./controllers")
const supertest = require("supertest")
const fs = require("fs")
-const { budibaseAppsDir } = require("../../../../utilities/budibaseDir")
+const { budibaseAppsDir } = require("../../utilities/budibaseDir")
const { join } = require("path")
const EMAIL = "babs@babs.com"
const PASSWORD = "babs_password"
class TestConfiguration {
- constructor() {
- env.PORT = 4002
- this.server = require("../../../../app")
- // we need the request for logging in, involves cookies, hard to fake
- this.request = supertest(this.server)
+ constructor(openServer = true) {
+ if (openServer) {
+ env.PORT = 4002
+ this.server = require("../../app")
+ // we need the request for logging in, involves cookies, hard to fake
+ this.request = supertest(this.server)
+ }
this.appId = null
this.allApps = []
}
@@ -61,7 +63,9 @@ class TestConfiguration {
}
end() {
- this.server.close()
+ if (this.server) {
+ this.server.close()
+ }
const appDir = budibaseAppsDir()
const files = fs.readdirSync(appDir)
for (let file of files) {
@@ -163,6 +167,10 @@ class TestConfiguration {
return this._req(config, { tableId: this.table._id }, controllers.row.save)
}
+ async getRow(tableId, rowId) {
+ return this._req(null, { tableId, rowId }, controllers.row.find)
+ }
+
async createRole(config = null) {
config = config || basicRole()
return this._req(config, null, controllers.role.save)
@@ -285,6 +293,9 @@ class TestConfiguration {
}
async login(email, password) {
+ if (!this.request) {
+ throw "Server has not been opened, cannot login."
+ }
if (!email || !password) {
await this.createUser()
email = EMAIL
diff --git a/packages/server/src/tests/utilities/controllers.js b/packages/server/src/tests/utilities/controllers.js
new file mode 100644
index 0000000000..b07754038f
--- /dev/null
+++ b/packages/server/src/tests/utilities/controllers.js
@@ -0,0 +1,15 @@
+module.exports = {
+ table: require("../../api/controllers/table"),
+ row: require("../../api/controllers/row"),
+ role: require("../../api/controllers/role"),
+ perms: require("../../api/controllers/permission"),
+ view: require("../../api/controllers/view"),
+ app: require("../../api/controllers/application"),
+ user: require("../../api/controllers/user"),
+ automation: require("../../api/controllers/automation"),
+ datasource: require("../../api/controllers/datasource"),
+ query: require("../../api/controllers/query"),
+ screen: require("../../api/controllers/screen"),
+ webhook: require("../../api/controllers/webhook"),
+ layout: require("../../api/controllers/layout"),
+}
diff --git a/packages/server/src/api/routes/tests/utilities/structures.js b/packages/server/src/tests/utilities/structures.js
similarity index 86%
rename from packages/server/src/api/routes/tests/utilities/structures.js
rename to packages/server/src/tests/utilities/structures.js
index ff3a239211..e6489f0903 100644
--- a/packages/server/src/api/routes/tests/utilities/structures.js
+++ b/packages/server/src/tests/utilities/structures.js
@@ -1,9 +1,9 @@
-const { BUILTIN_ROLE_IDS } = require("../../../../utilities/security/roles")
+const { BUILTIN_ROLE_IDS } = require("../../utilities/security/roles")
const {
BUILTIN_PERMISSION_IDS,
-} = require("../../../../utilities/security/permissions")
-const { createHomeScreen } = require("../../../../constants/screens")
-const { EMPTY_LAYOUT } = require("../../../../constants/layouts")
+} = require("../../utilities/security/permissions")
+const { createHomeScreen } = require("../../constants/screens")
+const { EMPTY_LAYOUT } = require("../../constants/layouts")
const { cloneDeep } = require("lodash/fp")
exports.basicTable = () => {
From 9ef4deef386d7e1286f2c55b5483136a6ccbfa4f Mon Sep 17 00:00:00 2001
From: mike12345567
Date: Thu, 11 Mar 2021 18:36:36 +0000
Subject: [PATCH 02/26] Removing dynamo client from coverage.
---
packages/server/package.json | 3 ++-
1 file changed, 2 insertions(+), 1 deletion(-)
diff --git a/packages/server/package.json b/packages/server/package.json
index ec37ed0605..990a69115b 100644
--- a/packages/server/package.json
+++ b/packages/server/package.json
@@ -56,7 +56,8 @@
"!src/api/routes/tests/**/*.js",
"!src/api/controllers/deploy/**/*.js",
"!src/*.js",
- "!src/api/controllers/static/**/*"
+ "!src/api/controllers/static/**/*",
+ "!src/db/dynamoClient.js"
],
"coverageReporters": [
"lcov",
From b51ac37b6f1c7c208ae7ef90c8c5ce5755112b9e Mon Sep 17 00:00:00 2001
From: Martin McKeaveney
Date: Fri, 12 Mar 2021 09:33:12 +0000
Subject: [PATCH 03/26] v0.8.6
---
lerna.json | 2 +-
packages/builder/package.json | 6 +++---
packages/client/package.json | 6 +++---
packages/server/package.json | 8 ++++----
packages/standard-components/package.json | 2 +-
packages/string-templates/package.json | 2 +-
packages/worker/package.json | 2 +-
7 files changed, 14 insertions(+), 14 deletions(-)
diff --git a/lerna.json b/lerna.json
index 3425a979b8..50ff8febac 100644
--- a/lerna.json
+++ b/lerna.json
@@ -1,5 +1,5 @@
{
- "version": "0.8.5",
+ "version": "0.8.6",
"npmClient": "yarn",
"packages": [
"packages/*"
diff --git a/packages/builder/package.json b/packages/builder/package.json
index ac957fa141..0a10bbc4b2 100644
--- a/packages/builder/package.json
+++ b/packages/builder/package.json
@@ -1,6 +1,6 @@
{
"name": "@budibase/builder",
- "version": "0.8.5",
+ "version": "0.8.6",
"license": "AGPL-3.0",
"private": true,
"scripts": {
@@ -64,9 +64,9 @@
},
"dependencies": {
"@budibase/bbui": "^1.58.13",
- "@budibase/client": "^0.8.5",
+ "@budibase/client": "^0.8.6",
"@budibase/colorpicker": "1.1.2",
- "@budibase/string-templates": "^0.8.5",
+ "@budibase/string-templates": "^0.8.6",
"@budibase/svelte-ag-grid": "^1.0.4",
"@sentry/browser": "5.19.1",
"@svelteschool/svelte-forms": "0.7.0",
diff --git a/packages/client/package.json b/packages/client/package.json
index 49ece2ed43..5e1d040bf3 100644
--- a/packages/client/package.json
+++ b/packages/client/package.json
@@ -1,6 +1,6 @@
{
"name": "@budibase/client",
- "version": "0.8.5",
+ "version": "0.8.6",
"license": "MPL-2.0",
"main": "dist/budibase-client.js",
"module": "dist/budibase-client.js",
@@ -9,14 +9,14 @@
"dev:builder": "rollup -cw"
},
"dependencies": {
- "@budibase/string-templates": "^0.8.5",
+ "@budibase/string-templates": "^0.8.6",
"deep-equal": "^2.0.1",
"regexparam": "^1.3.0",
"shortid": "^2.2.15",
"svelte-spa-router": "^3.0.5"
},
"devDependencies": {
- "@budibase/standard-components": "^0.8.5",
+ "@budibase/standard-components": "^0.8.6",
"@rollup/plugin-commonjs": "^16.0.0",
"@rollup/plugin-node-resolve": "^10.0.0",
"fs-extra": "^8.1.0",
diff --git a/packages/server/package.json b/packages/server/package.json
index 99763109f3..1a0e743eba 100644
--- a/packages/server/package.json
+++ b/packages/server/package.json
@@ -1,7 +1,7 @@
{
"name": "@budibase/server",
"email": "hi@budibase.com",
- "version": "0.8.5",
+ "version": "0.8.6",
"description": "Budibase Web Server",
"main": "src/electron.js",
"repository": {
@@ -71,8 +71,8 @@
"author": "Budibase",
"license": "AGPL-3.0-or-later",
"dependencies": {
- "@budibase/client": "^0.8.5",
- "@budibase/string-templates": "^0.8.5",
+ "@budibase/client": "^0.8.6",
+ "@budibase/string-templates": "^0.8.6",
"@elastic/elasticsearch": "7.10.0",
"@koa/router": "8.0.0",
"@sendgrid/mail": "7.1.1",
@@ -126,7 +126,7 @@
"zlib": "1.0.5"
},
"devDependencies": {
- "@budibase/standard-components": "^0.8.5",
+ "@budibase/standard-components": "^0.8.6",
"@jest/test-sequencer": "^24.8.0",
"cross-env": "^7.0.3",
"electron": "10.1.3",
diff --git a/packages/standard-components/package.json b/packages/standard-components/package.json
index 8bce8b2f0b..781d6d8e29 100644
--- a/packages/standard-components/package.json
+++ b/packages/standard-components/package.json
@@ -35,7 +35,7 @@
"keywords": [
"svelte"
],
- "version": "0.8.5",
+ "version": "0.8.6",
"license": "MIT",
"gitHead": "768a9d59da12cfefcd7ccaba05f975e878669504",
"dependencies": {
diff --git a/packages/string-templates/package.json b/packages/string-templates/package.json
index ec7858da74..52bef88516 100644
--- a/packages/string-templates/package.json
+++ b/packages/string-templates/package.json
@@ -1,6 +1,6 @@
{
"name": "@budibase/string-templates",
- "version": "0.8.5",
+ "version": "0.8.6",
"description": "Handlebars wrapper for Budibase templating.",
"main": "src/index.js",
"module": "src/index.js",
diff --git a/packages/worker/package.json b/packages/worker/package.json
index 9f12a0ac1a..84aec78fa9 100644
--- a/packages/worker/package.json
+++ b/packages/worker/package.json
@@ -1,7 +1,7 @@
{
"name": "@budibase/deployment",
"email": "hi@budibase.com",
- "version": "0.8.5",
+ "version": "0.8.6",
"description": "Budibase Deployment Server",
"main": "src/index.js",
"repository": {
From 4ad9b6904726f75eebd43e2244d7aa27e1e239ed Mon Sep 17 00:00:00 2001
From: Martin McKeaveney
Date: Fri, 12 Mar 2021 10:39:09 +0000
Subject: [PATCH 04/26] Update release.yml
---
.github/workflows/release.yml | 4 ++--
1 file changed, 2 insertions(+), 2 deletions(-)
diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml
index 792191af7a..14c0cc06a3 100644
--- a/.github/workflows/release.yml
+++ b/.github/workflows/release.yml
@@ -52,8 +52,8 @@ jobs:
mac_certs: ${{ secrets.mac_certs }}
mac_certs_password: ${{ secrets.mac_certs_password }}
- windows_certs: ${{ secrets.windows_certs }}
- windows_certs_password: ${{ secrets.windows_certs_password }}
+ # windows_certs: ${{ secrets.windows_certs }}
+ # windows_certs_password: ${{ secrets.windows_certs_password }}
# release the app after building
release: ${{ startsWith(github.ref, 'refs/tags/v') }}
From d402e73f80e46e319cbadf815280c31f5735928a Mon Sep 17 00:00:00 2001
From: Martin McKeaveney
Date: Fri, 12 Mar 2021 11:43:07 +0000
Subject: [PATCH 05/26] removing dud package
---
packages/client/package.json | 1 -
packages/client/yarn.lock | 285 +-------
packages/server/yarn.lock | 1192 +---------------------------------
3 files changed, 12 insertions(+), 1466 deletions(-)
diff --git a/packages/client/package.json b/packages/client/package.json
index 5e1d040bf3..55a3404853 100644
--- a/packages/client/package.json
+++ b/packages/client/package.json
@@ -10,7 +10,6 @@
},
"dependencies": {
"@budibase/string-templates": "^0.8.6",
- "deep-equal": "^2.0.1",
"regexparam": "^1.3.0",
"shortid": "^2.2.15",
"svelte-spa-router": "^3.0.5"
diff --git a/packages/client/yarn.lock b/packages/client/yarn.lock
index b82ea3d13d..bcef9d320d 100644
--- a/packages/client/yarn.lock
+++ b/packages/client/yarn.lock
@@ -150,11 +150,6 @@ ansi-styles@^3.2.1:
dependencies:
color-convert "^1.9.0"
-array-filter@^1.0.0:
- version "1.0.0"
- resolved "https://registry.yarnpkg.com/array-filter/-/array-filter-1.0.0.tgz#baf79e62e6ef4c2a4c0b831232daffec251f9d83"
- integrity sha1-uveeYubvTCpMC4MSMtr/7CUfnYM=
-
asn1.js@^5.2.0:
version "5.4.1"
resolved "https://registry.yarnpkg.com/asn1.js/-/asn1.js-5.4.1.tgz#11a980b84ebb91781ce35b0fdc2ee294e3783f07"
@@ -182,13 +177,6 @@ asynckit@^0.4.0:
resolved "https://registry.yarnpkg.com/asynckit/-/asynckit-0.4.0.tgz#c79ed97f7f34cb8f2ba1bc9790bcc366474b4b79"
integrity sha1-x57Zf380y48robyXkLzDZkdLS3k=
-available-typed-arrays@^1.0.0, available-typed-arrays@^1.0.2:
- version "1.0.2"
- resolved "https://registry.yarnpkg.com/available-typed-arrays/-/available-typed-arrays-1.0.2.tgz#6b098ca9d8039079ee3f77f7b783c4480ba513f5"
- integrity sha512-XWX3OX8Onv97LMk/ftVyBibpGwY5a8SmuxZPzeOxqmuEqUCOM9ZE+uIaD1VNJ5QnvU2UQusvmKbuM1FR8QWGfQ==
- dependencies:
- array-filter "^1.0.0"
-
aws-sign2@~0.7.0:
version "0.7.0"
resolved "https://registry.yarnpkg.com/aws-sign2/-/aws-sign2-0.7.0.tgz#b46e890934a9591f2d2f6f86d7e6a9f1b3fe76a8"
@@ -507,26 +495,6 @@ decimal.js@^10.2.0:
resolved "https://registry.yarnpkg.com/decimal.js/-/decimal.js-10.2.0.tgz#39466113a9e036111d02f82489b5fd6b0b5ed231"
integrity sha512-vDPw+rDgn3bZe1+F/pyEwb1oMG2XTlRVgAa6B4KccTEpYgF8w6eQllVbQcfIJnZyvzFtFpxnpGtx8dd7DJp/Rw==
-deep-equal@^2.0.1:
- version "2.0.3"
- resolved "https://registry.yarnpkg.com/deep-equal/-/deep-equal-2.0.3.tgz#cad1c15277ad78a5c01c49c2dee0f54de8a6a7b0"
- integrity sha512-Spqdl4H+ky45I9ByyJtXteOm9CaIrPmnIPmOhrkKGNYWeDgCvJ8jNYVCTjChxW4FqGuZnLHADc8EKRMX6+CgvA==
- dependencies:
- es-abstract "^1.17.5"
- es-get-iterator "^1.1.0"
- is-arguments "^1.0.4"
- is-date-object "^1.0.2"
- is-regex "^1.0.5"
- isarray "^2.0.5"
- object-is "^1.1.2"
- object-keys "^1.1.1"
- object.assign "^4.1.0"
- regexp.prototype.flags "^1.3.0"
- side-channel "^1.0.2"
- which-boxed-primitive "^1.0.1"
- which-collection "^1.0.1"
- which-typed-array "^1.1.2"
-
deep-is@~0.1.3:
version "0.1.3"
resolved "https://registry.yarnpkg.com/deep-is/-/deep-is-0.1.3.tgz#b369d6fb5dbc13eecf524f91b070feedc357cf34"
@@ -544,13 +512,6 @@ deferred-leveldown@~0.2.0:
dependencies:
abstract-leveldown "~0.12.1"
-define-properties@^1.1.2, define-properties@^1.1.3:
- version "1.1.3"
- resolved "https://registry.yarnpkg.com/define-properties/-/define-properties-1.1.3.tgz#cf88da6cbee26fe6db7094f61d870cbd84cee9f1"
- integrity sha512-3MqfYKj2lLzdMSf8ZIZE/V+Zuy+BgD6f164e8K2w7dgnpKArBDerGYpM46IYYcjnkdPNMjPk9A6VFB8+3SKlXQ==
- dependencies:
- object-keys "^1.0.12"
-
delayed-stream@~1.0.0:
version "1.0.0"
resolved "https://registry.yarnpkg.com/delayed-stream/-/delayed-stream-1.0.0.tgz#df3ae199acadfb7d440aaae0b29e2272b24ec619"
@@ -615,63 +576,6 @@ error-ex@^1.3.1:
dependencies:
is-arrayish "^0.2.1"
-es-abstract@^1.17.0-next.1, es-abstract@^1.17.4, es-abstract@^1.17.5:
- version "1.17.6"
- resolved "https://registry.yarnpkg.com/es-abstract/-/es-abstract-1.17.6.tgz#9142071707857b2cacc7b89ecb670316c3e2d52a"
- integrity sha512-Fr89bON3WFyUi5EvAeI48QTWX0AyekGgLA8H+c+7fbfCkJwRWRMLd8CQedNEyJuoYYhmtEqY92pgte1FAhBlhw==
- dependencies:
- es-to-primitive "^1.2.1"
- function-bind "^1.1.1"
- has "^1.0.3"
- has-symbols "^1.0.1"
- is-callable "^1.2.0"
- is-regex "^1.1.0"
- object-inspect "^1.7.0"
- object-keys "^1.1.1"
- object.assign "^4.1.0"
- string.prototype.trimend "^1.0.1"
- string.prototype.trimstart "^1.0.1"
-
-es-abstract@^1.18.0-next.0:
- version "1.18.0-next.0"
- resolved "https://registry.yarnpkg.com/es-abstract/-/es-abstract-1.18.0-next.0.tgz#b302834927e624d8e5837ed48224291f2c66e6fc"
- integrity sha512-elZXTZXKn51hUBdJjSZGYRujuzilgXo8vSPQzjGYXLvSlGiCo8VO8ZGV3kjo9a0WNJJ57hENagwbtlRuHuzkcQ==
- dependencies:
- es-to-primitive "^1.2.1"
- function-bind "^1.1.1"
- has "^1.0.3"
- has-symbols "^1.0.1"
- is-callable "^1.2.0"
- is-negative-zero "^2.0.0"
- is-regex "^1.1.1"
- object-inspect "^1.8.0"
- object-keys "^1.1.1"
- object.assign "^4.1.0"
- string.prototype.trimend "^1.0.1"
- string.prototype.trimstart "^1.0.1"
-
-es-get-iterator@^1.1.0:
- version "1.1.0"
- resolved "https://registry.yarnpkg.com/es-get-iterator/-/es-get-iterator-1.1.0.tgz#bb98ad9d6d63b31aacdc8f89d5d0ee57bcb5b4c8"
- integrity sha512-UfrmHuWQlNMTs35e1ypnvikg6jCz3SK8v8ImvmDsh36fCVUR1MqoFDiyn0/k52C8NqO3YsO8Oe0azeesNuqSsQ==
- dependencies:
- es-abstract "^1.17.4"
- has-symbols "^1.0.1"
- is-arguments "^1.0.4"
- is-map "^2.0.1"
- is-set "^2.0.1"
- is-string "^1.0.5"
- isarray "^2.0.5"
-
-es-to-primitive@^1.2.1:
- version "1.2.1"
- resolved "https://registry.yarnpkg.com/es-to-primitive/-/es-to-primitive-1.2.1.tgz#e55cd4c9cdc188bcefb03b366c736323fc5c898a"
- integrity sha512-QCOllgZJtaUo9miYBcLChTUaHNjJF3PYs1VidD7AwiEj1kYxKeQTctLAezAOH5ZKRH0g2IgPn6KwB4IT8iRpvA==
- dependencies:
- is-callable "^1.1.4"
- is-date-object "^1.0.1"
- is-symbol "^1.0.2"
-
escape-string-regexp@^1.0.5:
version "1.0.5"
resolved "https://registry.yarnpkg.com/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz#1b61c0562190a8dff6ae3bb2cf0200ca130b86d4"
@@ -762,7 +666,7 @@ fast-levenshtein@~2.0.6:
resolved "https://registry.yarnpkg.com/fast-levenshtein/-/fast-levenshtein-2.0.6.tgz#3d8a5c66883a16a30ca8643e851f19baa7797917"
integrity sha1-PYpcZog6FqMMqGQ+hR8Zuqd5eRc=
-foreach@^2.0.5, foreach@~2.0.1:
+foreach@~2.0.1:
version "2.0.5"
resolved "https://registry.yarnpkg.com/foreach/-/foreach-2.0.5.tgz#0bee005018aeb260d0a3af3ae658dd0136ec1b99"
integrity sha1-C+4AUBiusmDQo6865ljdATbsG5k=
@@ -859,11 +763,6 @@ has-flag@^4.0.0:
resolved "https://registry.yarnpkg.com/has-flag/-/has-flag-4.0.0.tgz#944771fd9c81c81265c4d6941860da06bb59479b"
integrity sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==
-has-symbols@^1.0.0, has-symbols@^1.0.1:
- version "1.0.1"
- resolved "https://registry.yarnpkg.com/has-symbols/-/has-symbols-1.0.1.tgz#9f5214758a44196c406d9bd76cebf81ec2dd31e8"
- integrity sha512-PLcsoqu++dmEIZB+6totNFKq/7Do+Z0u4oT0zKOJNl3lYK6vGwwu2hjHs+68OEZbTjiUE9bgOABXbP/GvrS0Kg==
-
has@^1.0.3:
version "1.0.3"
resolved "https://registry.yarnpkg.com/has/-/has-1.0.3.tgz#722d7cbfc1f6aa8241f16dd814e011e1f41e8796"
@@ -956,31 +855,11 @@ ip-regex@^2.1.0:
resolved "https://registry.yarnpkg.com/ip-regex/-/ip-regex-2.1.0.tgz#fa78bf5d2e6913c911ce9f819ee5146bb6d844e9"
integrity sha1-+ni/XS5pE8kRzp+BnuUUa7bYROk=
-is-arguments@^1.0.4:
- version "1.0.4"
- resolved "https://registry.yarnpkg.com/is-arguments/-/is-arguments-1.0.4.tgz#3faf966c7cba0ff437fb31f6250082fcf0448cf3"
- integrity sha512-xPh0Rmt8NE65sNzvyUmWgI1tz3mKq74lGA0mL8LYZcoIzKOzDh6HmrYm3d18k60nHerC8A9Km8kYu87zfSFnLA==
-
is-arrayish@^0.2.1:
version "0.2.1"
resolved "https://registry.yarnpkg.com/is-arrayish/-/is-arrayish-0.2.1.tgz#77c99840527aa8ecb1a8ba697b80645a7a926a9d"
integrity sha1-d8mYQFJ6qOyxqLppe4BkWnqSap0=
-is-bigint@^1.0.0:
- version "1.0.0"
- resolved "https://registry.yarnpkg.com/is-bigint/-/is-bigint-1.0.0.tgz#73da8c33208d00f130e9b5e15d23eac9215601c4"
- integrity sha512-t5mGUXC/xRheCK431ylNiSkGGpBp8bHENBcENTkDT6ppwPzEVxNGZRvgvmOEfbWkFhA7D2GEuE2mmQTr78sl2g==
-
-is-boolean-object@^1.0.0:
- version "1.0.1"
- resolved "https://registry.yarnpkg.com/is-boolean-object/-/is-boolean-object-1.0.1.tgz#10edc0900dd127697a92f6f9807c7617d68ac48e"
- integrity sha512-TqZuVwa/sppcrhUCAYkGBk7w0yxfQQnxq28fjkO53tnK9FQXmdwz2JS5+GjsWQ6RByES1K40nI+yDic5c9/aAQ==
-
-is-callable@^1.1.4, is-callable@^1.2.0:
- version "1.2.0"
- resolved "https://registry.yarnpkg.com/is-callable/-/is-callable-1.2.0.tgz#83336560b54a38e35e3a2df7afd0454d691468bb"
- integrity sha512-pyVD9AaGLxtg6srb2Ng6ynWJqkHU9bEM087AKck0w8QwDarTfNcpIYoU8x8Hv2Icm8u6kFJM18Dag8lyqGkviw==
-
is-core-module@^2.1.0:
version "2.1.0"
resolved "https://registry.yarnpkg.com/is-core-module/-/is-core-module-2.1.0.tgz#a4cc031d9b1aca63eecbd18a650e13cb4eeab946"
@@ -988,31 +867,11 @@ is-core-module@^2.1.0:
dependencies:
has "^1.0.3"
-is-date-object@^1.0.1, is-date-object@^1.0.2:
- version "1.0.2"
- resolved "https://registry.yarnpkg.com/is-date-object/-/is-date-object-1.0.2.tgz#bda736f2cd8fd06d32844e7743bfa7494c3bfd7e"
- integrity sha512-USlDT524woQ08aoZFzh3/Z6ch9Y/EWXEHQ/AaRN0SkKq4t2Jw2R2339tSXmwuVoY7LLlBCbOIlx2myP/L5zk0g==
-
-is-map@^2.0.1:
- version "2.0.1"
- resolved "https://registry.yarnpkg.com/is-map/-/is-map-2.0.1.tgz#520dafc4307bb8ebc33b813de5ce7c9400d644a1"
- integrity sha512-T/S49scO8plUiAOA2DBTBG3JHpn1yiw0kRp6dgiZ0v2/6twi5eiB0rHtHFH9ZIrvlWc6+4O+m4zg5+Z833aXgw==
-
is-module@^1.0.0:
version "1.0.0"
resolved "https://registry.yarnpkg.com/is-module/-/is-module-1.0.0.tgz#3258fb69f78c14d5b815d664336b4cffb6441591"
integrity sha1-Mlj7afeMFNW4FdZkM2tM/7ZEFZE=
-is-negative-zero@^2.0.0:
- version "2.0.0"
- resolved "https://registry.yarnpkg.com/is-negative-zero/-/is-negative-zero-2.0.0.tgz#9553b121b0fac28869da9ed459e20c7543788461"
- integrity sha1-lVOxIbD6wohp2p7UWeIMdUN4hGE=
-
-is-number-object@^1.0.3:
- version "1.0.4"
- resolved "https://registry.yarnpkg.com/is-number-object/-/is-number-object-1.0.4.tgz#36ac95e741cf18b283fc1ddf5e83da798e3ec197"
- integrity sha512-zohwelOAur+5uXtk8O3GPQ1eAcu4ZX3UwxQhUlfFFMNpUd83gXgjbhJh6HmB6LUNV/ieOLQuDwJO3dWJosUeMw==
-
is-object@~0.1.2:
version "0.1.2"
resolved "https://registry.yarnpkg.com/is-object/-/is-object-0.1.2.tgz#00efbc08816c33cfc4ac8251d132e10dc65098d7"
@@ -1030,55 +889,11 @@ is-reference@^1.2.1:
dependencies:
"@types/estree" "*"
-is-regex@^1.0.5, is-regex@^1.1.0, is-regex@^1.1.1:
- version "1.1.1"
- resolved "https://registry.yarnpkg.com/is-regex/-/is-regex-1.1.1.tgz#c6f98aacc546f6cec5468a07b7b153ab564a57b9"
- integrity sha512-1+QkEcxiLlB7VEyFtyBg94e08OAsvq7FUBgApTq/w2ymCLyKJgDPsybBENVtA7XCQEgEXxKPonG+mvYRxh/LIg==
- dependencies:
- has-symbols "^1.0.1"
-
-is-set@^2.0.1:
- version "2.0.1"
- resolved "https://registry.yarnpkg.com/is-set/-/is-set-2.0.1.tgz#d1604afdab1724986d30091575f54945da7e5f43"
- integrity sha512-eJEzOtVyenDs1TMzSQ3kU3K+E0GUS9sno+F0OBT97xsgcJsF9nXMBtkT9/kut5JEpM7oL7X/0qxR17K3mcwIAA==
-
-is-string@^1.0.4, is-string@^1.0.5:
- version "1.0.5"
- resolved "https://registry.yarnpkg.com/is-string/-/is-string-1.0.5.tgz#40493ed198ef3ff477b8c7f92f644ec82a5cd3a6"
- integrity sha512-buY6VNRjhQMiF1qWDouloZlQbRhDPCebwxSjxMjxgemYT46YMd2NR0/H+fBhEfWX4A/w9TBJ+ol+okqJKFE6vQ==
-
-is-symbol@^1.0.2:
- version "1.0.3"
- resolved "https://registry.yarnpkg.com/is-symbol/-/is-symbol-1.0.3.tgz#38e1014b9e6329be0de9d24a414fd7441ec61937"
- integrity sha512-OwijhaRSgqvhm/0ZdAcXNZt9lYdKFpcRDT5ULUuYXPoT794UNOdU+gpT6Rzo7b4V2HUl/op6GqY894AZwv9faQ==
- dependencies:
- has-symbols "^1.0.1"
-
-is-typed-array@^1.1.3:
- version "1.1.3"
- resolved "https://registry.yarnpkg.com/is-typed-array/-/is-typed-array-1.1.3.tgz#a4ff5a5e672e1a55f99c7f54e59597af5c1df04d"
- integrity sha512-BSYUBOK/HJibQ30wWkWold5txYwMUXQct9YHAQJr8fSwvZoiglcqB0pd7vEN23+Tsi9IUEjztdOSzl4qLVYGTQ==
- dependencies:
- available-typed-arrays "^1.0.0"
- es-abstract "^1.17.4"
- foreach "^2.0.5"
- has-symbols "^1.0.1"
-
is-typedarray@~1.0.0:
version "1.0.0"
resolved "https://registry.yarnpkg.com/is-typedarray/-/is-typedarray-1.0.0.tgz#e479c80858df0c1b11ddda6940f96011fcda4a9a"
integrity sha1-5HnICFjfDBsR3dppQPlgEfzaSpo=
-is-weakmap@^2.0.1:
- version "2.0.1"
- resolved "https://registry.yarnpkg.com/is-weakmap/-/is-weakmap-2.0.1.tgz#5008b59bdc43b698201d18f62b37b2ca243e8cf2"
- integrity sha512-NSBR4kH5oVj1Uwvv970ruUkCV7O1mzgVFO4/rev2cLRda9Tm9HrL70ZPut4rOHgY0FNrUu9BCbXA2sdQ+x0chA==
-
-is-weakset@^2.0.1:
- version "2.0.1"
- resolved "https://registry.yarnpkg.com/is-weakset/-/is-weakset-2.0.1.tgz#e9a0af88dbd751589f5e50d80f4c98b780884f83"
- integrity sha512-pi4vhbhVHGLxohUw7PhGsueT4vRGFoXhP7+RGN0jKIv9+8PWYCQTqtADngrxOm2g46hoH0+g8uZZBzMrvVGDmw==
-
is@~0.2.6:
version "0.2.7"
resolved "https://registry.yarnpkg.com/is/-/is-0.2.7.tgz#3b34a2c48f359972f35042849193ae7264b63562"
@@ -1089,11 +904,6 @@ isarray@0.0.1:
resolved "https://registry.yarnpkg.com/isarray/-/isarray-0.0.1.tgz#8a18acfca9a8f4177e09abfc6038939b05d1eedf"
integrity sha1-ihis/Kmo9Bd+Cav8YDiTmwXR7t8=
-isarray@^2.0.5:
- version "2.0.5"
- resolved "https://registry.yarnpkg.com/isarray/-/isarray-2.0.5.tgz#8af1e4c1221244cc62459faf38940d4e644a5723"
- integrity sha512-xHjhDr3cNBK0BzdUJSPXZntQUx/mwMS5Rw4A7lPJ90XGAO6ISP/ePDNuo0vhqOZU+UD5JoodwCAAoZQd3FeAKw==
-
isarray@~1.0.0:
version "1.0.0"
resolved "https://registry.yarnpkg.com/isarray/-/isarray-1.0.0.tgz#bb935d48582cba168c06834957a54a3e07124f11"
@@ -1390,24 +1200,6 @@ oauth-sign@~0.9.0:
resolved "https://registry.yarnpkg.com/oauth-sign/-/oauth-sign-0.9.0.tgz#47a7b016baa68b5fa0ecf3dee08a85c679ac6455"
integrity sha512-fexhUFFPTGV8ybAtSIGbV6gOkSv8UtRbDBnAyLQw4QPKkgNlsH2ByPGtMUqdWkos6YCRmAqViwgZrJc/mRDzZQ==
-object-inspect@^1.7.0, object-inspect@^1.8.0:
- version "1.8.0"
- resolved "https://registry.yarnpkg.com/object-inspect/-/object-inspect-1.8.0.tgz#df807e5ecf53a609cc6bfe93eac3cc7be5b3a9d0"
- integrity sha512-jLdtEOB112fORuypAyl/50VRVIBIdVQOSUUGQHzJ4xBSbit81zRarz7GThkEFZy1RceYrWYcPcBFPQwHyAc1gA==
-
-object-is@^1.1.2:
- version "1.1.2"
- resolved "https://registry.yarnpkg.com/object-is/-/object-is-1.1.2.tgz#c5d2e87ff9e119f78b7a088441519e2eec1573b6"
- integrity sha512-5lHCz+0uufF6wZ7CRFWJN3hp8Jqblpgve06U5CMQ3f//6iDjPr2PEo9MWCjEssDsa+UZEL4PkFpr+BMop6aKzQ==
- dependencies:
- define-properties "^1.1.3"
- es-abstract "^1.17.5"
-
-object-keys@^1.0.11, object-keys@^1.0.12, object-keys@^1.1.1:
- version "1.1.1"
- resolved "https://registry.yarnpkg.com/object-keys/-/object-keys-1.1.1.tgz#1c47f272df277f3b1daf061677d9c82e2322c60e"
- integrity sha512-NuAESUOUMrlIXOfHKzD6bpPu3tYt3xvjNdRIQ+FeT0lNb4K8WR70CaDxhuNguS2XG+GjkyMwOzsN5ZktImfhLA==
-
object-keys@~0.2.0:
version "0.2.0"
resolved "https://registry.yarnpkg.com/object-keys/-/object-keys-0.2.0.tgz#cddec02998b091be42bf1035ae32e49f1cb6ea67"
@@ -1422,16 +1214,6 @@ object-keys@~0.4.0:
resolved "https://registry.yarnpkg.com/object-keys/-/object-keys-0.4.0.tgz#28a6aae7428dd2c3a92f3d95f21335dd204e0336"
integrity sha1-KKaq50KN0sOpLz2V8hM13SBOAzY=
-object.assign@^4.1.0:
- version "4.1.0"
- resolved "https://registry.yarnpkg.com/object.assign/-/object.assign-4.1.0.tgz#968bf1100d7956bb3ca086f006f846b3bc4008da"
- integrity sha512-exHJeq6kBKj58mqGyTQ9DFvrZC/eR6OwxzoM9YRoGBqrXYonaFyGiFMuc9VZrXf7DarreEwMpurG3dd+CNyW5w==
- dependencies:
- define-properties "^1.1.2"
- function-bind "^1.1.1"
- has-symbols "^1.0.0"
- object-keys "^1.0.11"
-
octal@^1.0.0:
version "1.0.0"
resolved "https://registry.yarnpkg.com/octal/-/octal-1.0.0.tgz#63e7162a68efbeb9e213588d58e989d1e5c4530b"
@@ -1634,14 +1416,6 @@ readable-stream@~1.0.26, readable-stream@~1.0.26-4:
isarray "0.0.1"
string_decoder "~0.10.x"
-regexp.prototype.flags@^1.3.0:
- version "1.3.0"
- resolved "https://registry.yarnpkg.com/regexp.prototype.flags/-/regexp.prototype.flags-1.3.0.tgz#7aba89b3c13a64509dabcf3ca8d9fbb9bdf5cb75"
- integrity sha512-2+Q0C5g951OlYlJz6yu5/M33IcsESLlLfsyIaLJaG4FA2r4yP8MvVMJUUP/fVBkSpbbbZlS5gynbEWLipiiXiQ==
- dependencies:
- define-properties "^1.1.3"
- es-abstract "^1.17.0-next.1"
-
regexparam@1.3.0, regexparam@^1.3.0:
version "1.3.0"
resolved "https://registry.yarnpkg.com/regexparam/-/regexparam-1.3.0.tgz#2fe42c93e32a40eff6235d635e0ffa344b92965f"
@@ -1830,14 +1604,6 @@ shortid@^2.2.15:
dependencies:
nanoid "^2.1.0"
-side-channel@^1.0.2:
- version "1.0.3"
- resolved "https://registry.yarnpkg.com/side-channel/-/side-channel-1.0.3.tgz#cdc46b057550bbab63706210838df5d4c19519c3"
- integrity sha512-A6+ByhlLkksFoUepsGxfj5x1gTSrs+OydsRptUxeNCabQpCFUvcwIczgOigI8vhY/OJCnPnyE9rGiwgvr9cS1g==
- dependencies:
- es-abstract "^1.18.0-next.0"
- object-inspect "^1.8.0"
-
source-map-support@~0.5.19:
version "0.5.19"
resolved "https://registry.yarnpkg.com/source-map-support/-/source-map-support-0.5.19.tgz#a98b62f86dcaf4f67399648c085291ab9e8fed61"
@@ -1886,22 +1652,6 @@ string-range@~1.2, string-range@~1.2.1:
resolved "https://registry.yarnpkg.com/string-range/-/string-range-1.2.2.tgz#a893ed347e72299bc83befbbf2a692a8d239d5dd"
integrity sha1-qJPtNH5yKZvIO++78qaSqNI51d0=
-string.prototype.trimend@^1.0.1:
- version "1.0.1"
- resolved "https://registry.yarnpkg.com/string.prototype.trimend/-/string.prototype.trimend-1.0.1.tgz#85812a6b847ac002270f5808146064c995fb6913"
- integrity sha512-LRPxFUaTtpqYsTeNKaFOw3R4bxIzWOnbQ837QfBylo8jIxtcbK/A/sMV7Q+OAV/vWo+7s25pOE10KYSjaSO06g==
- dependencies:
- define-properties "^1.1.3"
- es-abstract "^1.17.5"
-
-string.prototype.trimstart@^1.0.1:
- version "1.0.1"
- resolved "https://registry.yarnpkg.com/string.prototype.trimstart/-/string.prototype.trimstart-1.0.1.tgz#14af6d9f34b053f7cfc89b72f8f2ee14b9039a54"
- integrity sha512-XxZn+QpvrBI1FOcg6dIpxUPgWCPuNXvMD72aaRaUQv1eD4e/Qy8i/hFTe0BUmD60p/QA6bh1avmuPTfNjqVWRw==
- dependencies:
- define-properties "^1.1.3"
- es-abstract "^1.17.5"
-
string_decoder@^1.1.1:
version "1.3.0"
resolved "https://registry.yarnpkg.com/string_decoder/-/string_decoder-1.3.0.tgz#42f114594a46cf1a8e30b0a84f56c78c3edac21e"
@@ -2102,39 +1852,6 @@ whatwg-url@^8.0.0:
tr46 "^2.0.2"
webidl-conversions "^6.1.0"
-which-boxed-primitive@^1.0.1:
- version "1.0.1"
- resolved "https://registry.yarnpkg.com/which-boxed-primitive/-/which-boxed-primitive-1.0.1.tgz#cbe8f838ebe91ba2471bb69e9edbda67ab5a5ec1"
- integrity sha512-7BT4TwISdDGBgaemWU0N0OU7FeAEJ9Oo2P1PHRm/FCWoEi2VLWC9b6xvxAA3C/NMpxg3HXVgi0sMmGbNUbNepQ==
- dependencies:
- is-bigint "^1.0.0"
- is-boolean-object "^1.0.0"
- is-number-object "^1.0.3"
- is-string "^1.0.4"
- is-symbol "^1.0.2"
-
-which-collection@^1.0.1:
- version "1.0.1"
- resolved "https://registry.yarnpkg.com/which-collection/-/which-collection-1.0.1.tgz#70eab71ebbbd2aefaf32f917082fc62cdcb70906"
- integrity sha512-W8xeTUwaln8i3K/cY1nGXzdnVZlidBcagyNFtBdD5kxnb4TvGKR7FfSIS3mYpwWS1QUCutfKz8IY8RjftB0+1A==
- dependencies:
- is-map "^2.0.1"
- is-set "^2.0.1"
- is-weakmap "^2.0.1"
- is-weakset "^2.0.1"
-
-which-typed-array@^1.1.2:
- version "1.1.2"
- resolved "https://registry.yarnpkg.com/which-typed-array/-/which-typed-array-1.1.2.tgz#e5f98e56bda93e3dac196b01d47c1156679c00b2"
- integrity sha512-KT6okrd1tE6JdZAy3o2VhMoYPh3+J6EMZLyrxBQsZflI1QCZIxMrIYLkosd8Twf+YfknVIHmYQPgJt238p8dnQ==
- dependencies:
- available-typed-arrays "^1.0.2"
- es-abstract "^1.17.5"
- foreach "^2.0.5"
- function-bind "^1.1.1"
- has-symbols "^1.0.1"
- is-typed-array "^1.1.3"
-
word-wrap@~1.2.3:
version "1.2.3"
resolved "https://registry.yarnpkg.com/word-wrap/-/word-wrap-1.2.3.tgz#610636f6b1f703891bd34771ccb17fb93b47079c"
diff --git a/packages/server/yarn.lock b/packages/server/yarn.lock
index 591205393a..11aa95bf90 100644
--- a/packages/server/yarn.lock
+++ b/packages/server/yarn.lock
@@ -7,11 +7,6 @@
resolved "https://registry.yarnpkg.com/7zip-bin/-/7zip-bin-5.0.3.tgz#bc5b5532ecafd923a61f2fb097e3b108c0106a3f"
integrity sha512-GLyWIFBbGvpKPGo55JyRZAo4lVbnBiD52cKlw/0Vt+wnmKvWJkpZvsjVoaIolyBXDeAQKSicRtqFNPem9w0WYA==
-"@adobe/spectrum-css-workflow-icons@^1.1.0":
- version "1.2.0"
- resolved "https://registry.yarnpkg.com/@adobe/spectrum-css-workflow-icons/-/spectrum-css-workflow-icons-1.2.0.tgz#cda8bbe873ba9317160458858ae979e5393e5550"
- integrity sha512-STSQQHvoBM0kf1JrNL3KEt88RklIctaGyGOzwUTnhtTkT1jHLaF4FgxrPDCvr1AT8VOq1nGplKUCeyZ9vdUUmA==
-
"@azure/ms-rest-azure-env@^1.1.2":
version "1.1.2"
resolved "https://registry.yarnpkg.com/@azure/ms-rest-azure-env/-/ms-rest-azure-env-1.1.2.tgz#8505873afd4a1227ec040894a64fdd736b4a101f"
@@ -254,111 +249,6 @@
lodash "^4.17.19"
to-fast-properties "^2.0.0"
-"@budibase/bbui@^1.58.13":
- version "1.58.13"
- resolved "https://registry.yarnpkg.com/@budibase/bbui/-/bbui-1.58.13.tgz#59df9c73def2d81c75dcbd2266c52c19db88dbd7"
- integrity sha512-Zk6CKXdBfKsTVzA1Xs5++shdSSZLfphVpZuKVbjfzkgtuhyH7ruucexuSHEpFsxjW5rEKgKIBoRFzCK5vPvN0w==
- dependencies:
- 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@^0.8.5":
- version "0.8.5"
- resolved "https://registry.yarnpkg.com/@budibase/client/-/client-0.8.5.tgz#31a6bbf8e7ff2a5ab635e8987357c310dcedf555"
- integrity sha512-igiHyFpqbYm2EyCy0aUlBlaPibpFa5DtQow1kFBAjUW2cyZdEt84JV4Mei77NueGo7zHcr6/ByF6ycdyeBgXQw==
- dependencies:
- "@budibase/string-templates" "^0.8.5"
- deep-equal "^2.0.1"
- regexparam "^1.3.0"
- shortid "^2.2.15"
- svelte-spa-router "^3.0.5"
-
-"@budibase/handlebars-helpers@^0.11.3":
- version "0.11.3"
- resolved "https://registry.yarnpkg.com/@budibase/handlebars-helpers/-/handlebars-helpers-0.11.3.tgz#b6e5c91b83e8906e7d7ff10ddde277a3d561016e"
- integrity sha512-MS1ptZEYq8o9J3tNLM7cZ2RGSSJIer4GiMIUHtbBI3sC9UKqZebao1JYNfmZKpNjntuqhZKgjqc5GfnVIEjsYQ==
- dependencies:
- arr-flatten "^1.1.0"
- array-sort "^0.1.4"
- define-property "^1.0.0"
- extend-shallow "^3.0.2"
- "falsey" "^0.3.2"
- for-in "^1.0.2"
- for-own "^1.0.0"
- get-object "^0.2.0"
- get-value "^2.0.6"
- handlebars "^4.0.11"
- handlebars-utils "^1.0.6"
- has-value "^1.0.0"
- helper-date "^1.0.1"
- helper-markdown "^1.0.0"
- helper-md "^0.2.2"
- html-tag "^2.0.0"
- is-even "^1.0.0"
- is-glob "^4.0.0"
- is-number "^4.0.0"
- kind-of "^6.0.0"
- logging-helpers "^1.0.0"
- micromatch "^3.1.4"
- relative "^3.0.2"
- striptags "^3.1.0"
- to-gfm-code-block "^0.1.1"
- year "^0.2.1"
-
-"@budibase/standard-components@^0.8.5":
- version "0.8.5"
- resolved "https://registry.yarnpkg.com/@budibase/standard-components/-/standard-components-0.8.5.tgz#4b94653110e4f20a8cb252b6421b620fd5ac31bc"
- integrity sha512-wDEuxiu/DyPQYR2zQSt7TdPlAzdjjePitfKDzdIxm/WM7umXDSvLkA39nRzicEXikti34+waS7H96xGNuednVw==
- dependencies:
- "@adobe/spectrum-css-workflow-icons" "^1.1.0"
- "@budibase/bbui" "^1.58.13"
- "@budibase/svelte-ag-grid" "^1.0.4"
- "@spectrum-css/actionbutton" "^1.0.0-beta.1"
- "@spectrum-css/button" "^3.0.0-beta.6"
- "@spectrum-css/checkbox" "^3.0.0-beta.6"
- "@spectrum-css/fieldlabel" "^3.0.0-beta.7"
- "@spectrum-css/icon" "^3.0.0-beta.2"
- "@spectrum-css/inputgroup" "^3.0.0-beta.7"
- "@spectrum-css/menu" "^3.0.0-beta.5"
- "@spectrum-css/page" "^3.0.0-beta.0"
- "@spectrum-css/picker" "^1.0.0-beta.3"
- "@spectrum-css/popover" "^3.0.0-beta.6"
- "@spectrum-css/stepper" "^3.0.0-beta.7"
- "@spectrum-css/textfield" "^3.0.0-beta.6"
- "@spectrum-css/vars" "^3.0.0-beta.2"
- apexcharts "^3.22.1"
- flatpickr "^4.6.6"
- loadicons "^1.0.0"
- lodash.debounce "^4.0.8"
- markdown-it "^12.0.2"
- quill "^1.3.7"
- remixicon "^2.5.0"
- svelte-apexcharts "^1.0.2"
- svelte-flatpickr "^3.1.0"
- turndown "^7.0.0"
-
-"@budibase/string-templates@^0.8.5":
- version "0.8.5"
- resolved "https://registry.yarnpkg.com/@budibase/string-templates/-/string-templates-0.8.5.tgz#ad30e318f7486d4256b1165099fe2bd8004ef472"
- integrity sha512-PcpiiDlYJFIVwtFGIRqZQtRl8wbO6yr0/+1Gca0TwR2WhyUyAs/ojO+jLIj97JWh/hE5zKaZW7d4cMOf+BDI/A==
- dependencies:
- "@budibase/handlebars-helpers" "^0.11.3"
- dayjs "^1.10.4"
- handlebars "^4.7.6"
- handlebars-utils "^1.0.6"
- lodash "^4.17.20"
-
-"@budibase/svelte-ag-grid@^1.0.4":
- version "1.0.4"
- resolved "https://registry.yarnpkg.com/@budibase/svelte-ag-grid/-/svelte-ag-grid-1.0.4.tgz#41cceec4bde2c4aea8b9da8f610fe36055c7709f"
- integrity sha512-JZm6qujxnZpqw7Twbegr6se4sHhyWzN0Cibrk5bVBH32hBgzD6dd33fxwrjHKkWFxjys9wRT+cqYgYVlSt9E3w==
- dependencies:
- ag-grid-community "^24.0.0"
-
"@cnakazawa/watch@^1.0.3":
version "1.0.4"
resolved "https://registry.yarnpkg.com/@cnakazawa/watch/-/watch-1.0.4.tgz#f864ae85004d0fcab6f50be9141c4da368d1656a"
@@ -886,11 +776,6 @@
path-to-regexp "^1.1.1"
urijs "^1.19.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==
-
"@sendgrid/client@^7.1.1":
version "7.4.2"
resolved "https://registry.yarnpkg.com/@sendgrid/client/-/client-7.4.2.tgz#204a9fbb5dc05a721a5d8cd8930f57f9f8e612b1"
@@ -1003,73 +888,6 @@
resolved "https://registry.yarnpkg.com/@sindresorhus/is/-/is-0.7.0.tgz#9a06f4f137ee84d7df0460c1fdb1135ffa6c50fd"
integrity sha512-ONhaKPIufzzrlNbqtWFFd+jlnemX6lJAgq9ZeiZtS7I1PIf/la7CW4m83rTXRnVnsMbW2k56pGYu7AUFJD9Pow==
-"@spectrum-css/actionbutton@^1.0.0-beta.1":
- version "1.0.0"
- resolved "https://registry.yarnpkg.com/@spectrum-css/actionbutton/-/actionbutton-1.0.0.tgz#c2f0939f6d49de0a855f08a9466e3f27105a1747"
- integrity sha512-klE5CGJEJXkc4DMLF8W+VPlLZ6SFr4WXI5Tc9NarOtbAc7mqhs2gWA8HpsPT717FWdxRVVt3sSuAydgKC/T0UA==
-
-"@spectrum-css/button@^3.0.0-beta.6":
- version "3.0.0"
- resolved "https://registry.yarnpkg.com/@spectrum-css/button/-/button-3.0.0.tgz#eebdd7a05eac9a40f297f802aca3efeb95931e83"
- integrity sha512-CUGkuHOhqgfIRYTEceybcW1YsUN61F9BgDhqymhVd1yJFsuh1xkwnmv3IIodukgS+1e3L0JY6ifU86IWX/Dx5w==
-
-"@spectrum-css/checkbox@^3.0.0-beta.6":
- version "3.0.0"
- resolved "https://registry.yarnpkg.com/@spectrum-css/checkbox/-/checkbox-3.0.0.tgz#6ed15f433bed31a63818d154960aca044ce62182"
- integrity sha512-FpxxftMzuWT8qq3XB4oBQgWglXuCCEGBfgX82EI9VtrJmw9j0Lm/nThMLX353p9awM4GfT3l2LNOneHbNetaRQ==
-
-"@spectrum-css/fieldlabel@^3.0.0-beta.7":
- version "3.0.0"
- resolved "https://registry.yarnpkg.com/@spectrum-css/fieldlabel/-/fieldlabel-3.0.0.tgz#01be5e5a7b024516574820962b9a656f7b2e20d4"
- integrity sha512-dEOvDEigL9E60kQ9fT6MLyRzPKrPXAKulqDYOYpZaK2bsKrbIvsKb7NcuQynPAOE26FiuqQsp2khv5VqF4KzrA==
-
-"@spectrum-css/icon@^3.0.0-beta.2":
- version "3.0.0"
- resolved "https://registry.yarnpkg.com/@spectrum-css/icon/-/icon-3.0.0.tgz#a822c901ca049f487420053dfeaaf71c0850c848"
- integrity sha512-0VVx34WECxe+acSZsB+zk8T+AG8YimlCfUothuqLzcUgY6MnBESHJKOEuKKihxnihEm6EJiMc2NYA7+09kPv/A==
-
-"@spectrum-css/inputgroup@^3.0.0-beta.7":
- version "3.0.0"
- resolved "https://registry.yarnpkg.com/@spectrum-css/inputgroup/-/inputgroup-3.0.0.tgz#c2790c2c0a4c435ca3fff9ba04f64dd2b252f980"
- integrity sha512-dlF8LmMwTa5G6Rl4zUiNCmRv7p2v+88jINnSwZHucgKZL0/HJZBRxjF1neeSfRFrc8R6cemoVXDHRDtZFaVtXQ==
-
-"@spectrum-css/menu@^3.0.0-beta.5":
- version "3.0.0"
- resolved "https://registry.yarnpkg.com/@spectrum-css/menu/-/menu-3.0.0.tgz#78153ea60a36c87e9d815ce51dc7f84d6b9b9abd"
- integrity sha512-E6L6s1/cwh6hn4yhUHegiJ+Su03Bpa7qP5a6nEccpYePZxPAAN2FjZBWdMOPlGtv1e70vudAsoejli9nVthC2w==
-
-"@spectrum-css/page@^3.0.0-beta.0":
- version "3.0.0"
- resolved "https://registry.yarnpkg.com/@spectrum-css/page/-/page-3.0.0.tgz#159e79fd376e2def1a7a25a8b8a8fcfa94bd79d1"
- integrity sha512-4rNpGq99cfNSq/IOQNCiXio5gF/EEfjcSmihHBJlh7/VOB9zE84kMNW1Gux4cGEmdP14U1Zo1ZwnPIVs5ZuPgg==
- dependencies:
- "@spectrum-css/vars" "^3.0.0"
-
-"@spectrum-css/picker@^1.0.0-beta.3":
- version "1.0.0"
- resolved "https://registry.yarnpkg.com/@spectrum-css/picker/-/picker-1.0.0.tgz#5758a128da081becd425b8d9433b24541f12b4b3"
- integrity sha512-aSoin2SVYl5W2R3nFp+V/Er6rAJUnwygO4E3g/tfDuImq8p5U3FKZj4sggSqfuD2U1PIwNSwX0D1RdxuGXsnUQ==
-
-"@spectrum-css/popover@^3.0.0-beta.6":
- version "3.0.0"
- resolved "https://registry.yarnpkg.com/@spectrum-css/popover/-/popover-3.0.0.tgz#ec1ab86a66cc59bd522d3de2b7febe41e2a9fe46"
- integrity sha512-Lr2FZSJbDbDMp3bOlLtvDjOw6AwzRu3g0BbQ7NGK1l5MB06AhnqJX+TPB2iEDTfPdNyaDc5SCp55lBHP3RzHuw==
-
-"@spectrum-css/stepper@^3.0.0-beta.7":
- version "3.0.0"
- resolved "https://registry.yarnpkg.com/@spectrum-css/stepper/-/stepper-3.0.0.tgz#ab5af818c86f2bc5050d0caee8b0a1c75201bfaf"
- integrity sha512-Gwvb4YLEBy/YtnFQ4aySnlve+pBrgPIm5LSq5IkeyjAKy7ZalQm9IIEkrVERHO1b+vbRZ6DW/aj2zYgzKgGMrA==
-
-"@spectrum-css/textfield@^3.0.0-beta.6":
- version "3.0.0"
- resolved "https://registry.yarnpkg.com/@spectrum-css/textfield/-/textfield-3.0.0.tgz#2f2d341b8d2c6f74e074b7e8df4a28307561cbbf"
- integrity sha512-ooXiSc5TZuZCFr3wl1JB60nS9FBBkGgqsml7kAS/7bOwRTCUPH7cY80SoaabRL8Z9Clml+K1Pa7I/r+Wphb53g==
-
-"@spectrum-css/vars@^3.0.0", "@spectrum-css/vars@^3.0.0-beta.2":
- version "3.0.0"
- resolved "https://registry.yarnpkg.com/@spectrum-css/vars/-/vars-3.0.0.tgz#c3ef4c2f07bd4f0d2734e730233ca81cb18106e7"
- integrity sha512-fNXU6qmcCbSiUoWGe/m9A8/THRHbpzwZ+iN8o/27tWIzcQIyZBZgjmV/kIMdF1dHpu5CuWik7mGV1Ex8tlzATg==
-
"@szmarczak/http-timer@^1.1.2":
version "1.1.2"
resolved "https://registry.yarnpkg.com/@szmarczak/http-timer/-/http-timer-1.1.2.tgz#b1665e2c461a2cd92f4c1bbf50d5454de0d4b421"
@@ -1354,11 +1172,6 @@ adal-node@^0.1.28:
xmldom ">= 0.1.x"
xpath.js "~1.1.0"
-ag-grid-community@^24.0.0:
- version "24.1.0"
- resolved "https://registry.yarnpkg.com/ag-grid-community/-/ag-grid-community-24.1.0.tgz#1e3cab51211822e08d56f03a491b7c0deaa398e6"
- integrity sha512-pWnWphuDcejZ8ahf6C734EpCx3XQ6dHEZWMWTlCdHNT0mZBLJ4YKCGACX+ttAEtSX2MGM3G13JncvuratUlYag==
-
agent-base@6:
version "6.0.1"
resolved "https://registry.yarnpkg.com/agent-base/-/agent-base-6.0.1.tgz#808007e4e5867decb0ab6ab2f928fbdb5a596db4"
@@ -1404,130 +1217,6 @@ ansi-align@^3.0.0:
dependencies:
string-width "^3.0.0"
-ansi-bgblack@^0.1.1:
- version "0.1.1"
- resolved "https://registry.yarnpkg.com/ansi-bgblack/-/ansi-bgblack-0.1.1.tgz#a68ba5007887701b6aafbe3fa0dadfdfa8ee3ca2"
- integrity sha1-poulAHiHcBtqr74/oNrf36juPKI=
- dependencies:
- ansi-wrap "0.1.0"
-
-ansi-bgblue@^0.1.1:
- version "0.1.1"
- resolved "https://registry.yarnpkg.com/ansi-bgblue/-/ansi-bgblue-0.1.1.tgz#67bdc04edc9b9b5278969da196dea3d75c8c3613"
- integrity sha1-Z73ATtybm1J4lp2hlt6j11yMNhM=
- dependencies:
- ansi-wrap "0.1.0"
-
-ansi-bgcyan@^0.1.1:
- version "0.1.1"
- resolved "https://registry.yarnpkg.com/ansi-bgcyan/-/ansi-bgcyan-0.1.1.tgz#58489425600bde9f5507068dd969ebfdb50fe768"
- integrity sha1-WEiUJWAL3p9VBwaN2Wnr/bUP52g=
- dependencies:
- ansi-wrap "0.1.0"
-
-ansi-bggreen@^0.1.1:
- version "0.1.1"
- resolved "https://registry.yarnpkg.com/ansi-bggreen/-/ansi-bggreen-0.1.1.tgz#4e3191248529943f4321e96bf131d1c13816af49"
- integrity sha1-TjGRJIUplD9DIelr8THRwTgWr0k=
- dependencies:
- ansi-wrap "0.1.0"
-
-ansi-bgmagenta@^0.1.1:
- version "0.1.1"
- resolved "https://registry.yarnpkg.com/ansi-bgmagenta/-/ansi-bgmagenta-0.1.1.tgz#9b28432c076eaa999418672a3efbe19391c2c7a1"
- integrity sha1-myhDLAduqpmUGGcqPvvhk5HCx6E=
- dependencies:
- ansi-wrap "0.1.0"
-
-ansi-bgred@^0.1.1:
- version "0.1.1"
- resolved "https://registry.yarnpkg.com/ansi-bgred/-/ansi-bgred-0.1.1.tgz#a76f92838382ba43290a6c1778424f984d6f1041"
- integrity sha1-p2+Sg4OCukMpCmwXeEJPmE1vEEE=
- dependencies:
- ansi-wrap "0.1.0"
-
-ansi-bgwhite@^0.1.1:
- version "0.1.1"
- resolved "https://registry.yarnpkg.com/ansi-bgwhite/-/ansi-bgwhite-0.1.1.tgz#6504651377a58a6ececd0331994e480258e11ba8"
- integrity sha1-ZQRlE3elim7OzQMxmU5IAljhG6g=
- dependencies:
- ansi-wrap "0.1.0"
-
-ansi-bgyellow@^0.1.1:
- version "0.1.1"
- resolved "https://registry.yarnpkg.com/ansi-bgyellow/-/ansi-bgyellow-0.1.1.tgz#c3fe2eb08cd476648029e6874d15a0b38f61d44f"
- integrity sha1-w/4usIzUdmSAKeaHTRWgs49h1E8=
- dependencies:
- ansi-wrap "0.1.0"
-
-ansi-black@^0.1.1:
- version "0.1.1"
- resolved "https://registry.yarnpkg.com/ansi-black/-/ansi-black-0.1.1.tgz#f6185e889360b2545a1ec50c0bf063fc43032453"
- integrity sha1-9hheiJNgslRaHsUMC/Bj/EMDJFM=
- dependencies:
- ansi-wrap "0.1.0"
-
-ansi-blue@^0.1.1:
- version "0.1.1"
- resolved "https://registry.yarnpkg.com/ansi-blue/-/ansi-blue-0.1.1.tgz#15b804990e92fc9ca8c5476ce8f699777c21edbf"
- integrity sha1-FbgEmQ6S/JyoxUds6PaZd3wh7b8=
- dependencies:
- ansi-wrap "0.1.0"
-
-ansi-bold@^0.1.1:
- version "0.1.1"
- resolved "https://registry.yarnpkg.com/ansi-bold/-/ansi-bold-0.1.1.tgz#3e63950af5acc2ae2e670e6f67deb115d1a5f505"
- integrity sha1-PmOVCvWswq4uZw5vZ96xFdGl9QU=
- dependencies:
- ansi-wrap "0.1.0"
-
-ansi-colors@^0.2.0:
- version "0.2.0"
- resolved "https://registry.yarnpkg.com/ansi-colors/-/ansi-colors-0.2.0.tgz#72c31de2a0d9a2ccd0cac30cc9823eeb2f6434b5"
- integrity sha1-csMd4qDZoszQysMMyYI+6y9kNLU=
- dependencies:
- ansi-bgblack "^0.1.1"
- ansi-bgblue "^0.1.1"
- ansi-bgcyan "^0.1.1"
- ansi-bggreen "^0.1.1"
- ansi-bgmagenta "^0.1.1"
- ansi-bgred "^0.1.1"
- ansi-bgwhite "^0.1.1"
- ansi-bgyellow "^0.1.1"
- ansi-black "^0.1.1"
- ansi-blue "^0.1.1"
- ansi-bold "^0.1.1"
- ansi-cyan "^0.1.1"
- ansi-dim "^0.1.1"
- ansi-gray "^0.1.1"
- ansi-green "^0.1.1"
- ansi-grey "^0.1.1"
- ansi-hidden "^0.1.1"
- ansi-inverse "^0.1.1"
- ansi-italic "^0.1.1"
- ansi-magenta "^0.1.1"
- ansi-red "^0.1.1"
- ansi-reset "^0.1.1"
- ansi-strikethrough "^0.1.1"
- ansi-underline "^0.1.1"
- ansi-white "^0.1.1"
- ansi-yellow "^0.1.1"
- lazy-cache "^2.0.1"
-
-ansi-cyan@^0.1.1:
- version "0.1.1"
- resolved "https://registry.yarnpkg.com/ansi-cyan/-/ansi-cyan-0.1.1.tgz#538ae528af8982f28ae30d86f2f17456d2609873"
- integrity sha1-U4rlKK+JgvKK4w2G8vF0VtJgmHM=
- dependencies:
- ansi-wrap "0.1.0"
-
-ansi-dim@^0.1.1:
- version "0.1.1"
- resolved "https://registry.yarnpkg.com/ansi-dim/-/ansi-dim-0.1.1.tgz#40de4c603aa8086d8e7a86b8ff998d5c36eefd6c"
- integrity sha1-QN5MYDqoCG2Oeoa4/5mNXDbu/Ww=
- dependencies:
- ansi-wrap "0.1.0"
-
ansi-escapes@^3.0.0:
version "3.2.0"
resolved "https://registry.yarnpkg.com/ansi-escapes/-/ansi-escapes-3.2.0.tgz#8780b98ff9dbf5638152d1f1fe5c1d7b4442976b"
@@ -1540,62 +1229,6 @@ ansi-escapes@^4.2.1:
dependencies:
type-fest "^0.11.0"
-ansi-gray@^0.1.1:
- version "0.1.1"
- resolved "https://registry.yarnpkg.com/ansi-gray/-/ansi-gray-0.1.1.tgz#2962cf54ec9792c48510a3deb524436861ef7251"
- integrity sha1-KWLPVOyXksSFEKPetSRDaGHvclE=
- dependencies:
- ansi-wrap "0.1.0"
-
-ansi-green@^0.1.1:
- version "0.1.1"
- resolved "https://registry.yarnpkg.com/ansi-green/-/ansi-green-0.1.1.tgz#8a5d9a979e458d57c40e33580b37390b8e10d0f7"
- integrity sha1-il2al55FjVfEDjNYCzc5C44Q0Pc=
- dependencies:
- ansi-wrap "0.1.0"
-
-ansi-grey@^0.1.1:
- version "0.1.1"
- resolved "https://registry.yarnpkg.com/ansi-grey/-/ansi-grey-0.1.1.tgz#59d98b6ac2ba19f8a51798e9853fba78339a33c1"
- integrity sha1-WdmLasK6GfilF5jphT+6eDOaM8E=
- dependencies:
- ansi-wrap "0.1.0"
-
-ansi-hidden@^0.1.1:
- version "0.1.1"
- resolved "https://registry.yarnpkg.com/ansi-hidden/-/ansi-hidden-0.1.1.tgz#ed6a4c498d2bb7cbb289dbf2a8d1dcc8567fae0f"
- integrity sha1-7WpMSY0rt8uyidvyqNHcyFZ/rg8=
- dependencies:
- ansi-wrap "0.1.0"
-
-ansi-inverse@^0.1.1:
- version "0.1.1"
- resolved "https://registry.yarnpkg.com/ansi-inverse/-/ansi-inverse-0.1.1.tgz#b6af45826fe826bfb528a6c79885794355ccd269"
- integrity sha1-tq9Fgm/oJr+1KKbHmIV5Q1XM0mk=
- dependencies:
- ansi-wrap "0.1.0"
-
-ansi-italic@^0.1.1:
- version "0.1.1"
- resolved "https://registry.yarnpkg.com/ansi-italic/-/ansi-italic-0.1.1.tgz#104743463f625c142a036739cf85eda688986f23"
- integrity sha1-EEdDRj9iXBQqA2c5z4XtpoiYbyM=
- dependencies:
- ansi-wrap "0.1.0"
-
-ansi-magenta@^0.1.1:
- version "0.1.1"
- resolved "https://registry.yarnpkg.com/ansi-magenta/-/ansi-magenta-0.1.1.tgz#063b5ba16fb3f23e1cfda2b07c0a89de11e430ae"
- integrity sha1-BjtboW+z8j4c/aKwfAqJ3hHkMK4=
- dependencies:
- ansi-wrap "0.1.0"
-
-ansi-red@^0.1.1:
- version "0.1.1"
- resolved "https://registry.yarnpkg.com/ansi-red/-/ansi-red-0.1.1.tgz#8c638f9d1080800a353c9c28c8a81ca4705d946c"
- integrity sha1-jGOPnRCAgAo1PJwoyKgcpHBdlGw=
- dependencies:
- ansi-wrap "0.1.0"
-
ansi-regex@^2.0.0:
version "2.1.1"
resolved "https://registry.yarnpkg.com/ansi-regex/-/ansi-regex-2.1.1.tgz#c3b33ab5ee360d86e0e628f0468ae7ef27d654df"
@@ -1616,20 +1249,6 @@ ansi-regex@^5.0.0:
resolved "https://registry.yarnpkg.com/ansi-regex/-/ansi-regex-5.0.0.tgz#388539f55179bf39339c81af30a654d69f87cb75"
integrity sha512-bY6fj56OUQ0hU1KjFNDQuJFezqKdrAyFdIevADiqrWHwSlbmBNMHp5ak2f40Pm8JTFyM2mqxkG6ngkHO11f/lg==
-ansi-reset@^0.1.1:
- version "0.1.1"
- resolved "https://registry.yarnpkg.com/ansi-reset/-/ansi-reset-0.1.1.tgz#e7e71292c3c7ddcd4d62ef4a6c7c05980911c3b7"
- integrity sha1-5+cSksPH3c1NYu9KbHwFmAkRw7c=
- dependencies:
- ansi-wrap "0.1.0"
-
-ansi-strikethrough@^0.1.1:
- version "0.1.1"
- resolved "https://registry.yarnpkg.com/ansi-strikethrough/-/ansi-strikethrough-0.1.1.tgz#d84877140b2cff07d1c93ebce69904f68885e568"
- integrity sha1-2Eh3FAss/wfRyT685pkE9oiF5Wg=
- dependencies:
- ansi-wrap "0.1.0"
-
ansi-styles@^3.2.0, ansi-styles@^3.2.1:
version "3.2.1"
resolved "https://registry.yarnpkg.com/ansi-styles/-/ansi-styles-3.2.1.tgz#41fbb20243e50b12be0f04b8dedbf07520ce841d"
@@ -1644,32 +1263,6 @@ ansi-styles@^4.0.0, ansi-styles@^4.1.0:
dependencies:
color-convert "^2.0.1"
-ansi-underline@^0.1.1:
- version "0.1.1"
- resolved "https://registry.yarnpkg.com/ansi-underline/-/ansi-underline-0.1.1.tgz#dfc920f4c97b5977ea162df8ffb988308aaa71a4"
- integrity sha1-38kg9Ml7WXfqFi34/7mIMIqqcaQ=
- dependencies:
- ansi-wrap "0.1.0"
-
-ansi-white@^0.1.1:
- version "0.1.1"
- resolved "https://registry.yarnpkg.com/ansi-white/-/ansi-white-0.1.1.tgz#9c77b7c193c5ee992e6011d36ec4c921b4578944"
- integrity sha1-nHe3wZPF7pkuYBHTbsTJIbRXiUQ=
- dependencies:
- ansi-wrap "0.1.0"
-
-ansi-wrap@0.1.0:
- version "0.1.0"
- resolved "https://registry.yarnpkg.com/ansi-wrap/-/ansi-wrap-0.1.0.tgz#a82250ddb0015e9a27ca82e82ea603bbfa45efaf"
- integrity sha1-qCJQ3bABXponyoLoLqYDu/pF768=
-
-ansi-yellow@^0.1.1:
- version "0.1.1"
- resolved "https://registry.yarnpkg.com/ansi-yellow/-/ansi-yellow-0.1.1.tgz#cb9356f2f46c732f0e3199e6102955a77da83c1d"
- integrity sha1-y5NW8vRscy8OMZnmEClVp32oPB0=
- dependencies:
- ansi-wrap "0.1.0"
-
any-base@^1.1.0:
version "1.1.0"
resolved "https://registry.yarnpkg.com/any-base/-/any-base-1.1.0.tgz#ae101a62bc08a597b4c9ab5b7089d456630549fe"
@@ -1696,18 +1289,6 @@ anymatch@~3.1.1:
normalize-path "^3.0.0"
picomatch "^2.0.4"
-apexcharts@^3.19.2, apexcharts@^3.22.1:
- version "3.25.0"
- resolved "https://registry.yarnpkg.com/apexcharts/-/apexcharts-3.25.0.tgz#f3f0f9f344f997230f5c7f2918408aa072627496"
- integrity sha512-uM7OF+jLL4ba79noYcrMwMgJW8DI+Ff28CCQoGq23g25z8nGSQEoU+u12YWlECA9gBA5tbmdaQhMxjlK+M6B9Q==
- dependencies:
- svg.draggable.js "^2.2.2"
- svg.easing.js "^2.0.0"
- svg.filter.js "^2.0.2"
- svg.pathmorphing.js "^0.1.3"
- svg.resize.js "^1.4.3"
- svg.select.js "^3.0.1"
-
app-builder-bin@3.5.10:
version "3.5.10"
resolved "https://registry.yarnpkg.com/app-builder-bin/-/app-builder-bin-3.5.10.tgz#4a7f9999fccc0c435b6284ae1366bc76a17c4a7d"
@@ -1759,18 +1340,13 @@ archive-type@^4.0.0:
dependencies:
file-type "^4.2.0"
-argparse@^1.0.10, argparse@^1.0.7:
+argparse@^1.0.7:
version "1.0.10"
resolved "https://registry.yarnpkg.com/argparse/-/argparse-1.0.10.tgz#bcd6791ea5ae09725e17e5ad988134cd40b3d911"
integrity sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg==
dependencies:
sprintf-js "~1.0.2"
-argparse@^2.0.1:
- version "2.0.1"
- resolved "https://registry.yarnpkg.com/argparse/-/argparse-2.0.1.tgz#246f50f3ca78a3240f6c997e8a9bd1eac49e4b38"
- integrity sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==
-
args@^5.0.1:
version "5.0.1"
resolved "https://registry.yarnpkg.com/args/-/args-5.0.1.tgz#4bf298df90a4799a09521362c579278cc2fdd761"
@@ -1806,20 +1382,6 @@ array-equal@^1.0.0:
resolved "https://registry.yarnpkg.com/array-equal/-/array-equal-1.0.0.tgz#8c2a5ef2472fd9ea742b04c77a75093ba2757c93"
integrity sha1-jCpe8kcv2ep0KwTHenUJO6J1fJM=
-array-filter@^1.0.0:
- version "1.0.0"
- resolved "https://registry.yarnpkg.com/array-filter/-/array-filter-1.0.0.tgz#baf79e62e6ef4c2a4c0b831232daffec251f9d83"
- integrity sha1-uveeYubvTCpMC4MSMtr/7CUfnYM=
-
-array-sort@^0.1.4:
- version "0.1.4"
- resolved "https://registry.yarnpkg.com/array-sort/-/array-sort-0.1.4.tgz#662855eaeb671b4188df4451b2f24a0753992b23"
- integrity sha512-BNcM+RXxndPxiZ2rd76k6nyQLRZr2/B/sdi8pQ+Joafr5AH279L40dfokSUTp8O+AaqYjXWhblBWa2st2nc4fQ==
- dependencies:
- default-compare "^1.0.0"
- get-value "^2.0.6"
- kind-of "^5.0.2"
-
array-unique@^0.3.2:
version "0.3.2"
resolved "https://registry.yarnpkg.com/array-unique/-/array-unique-0.3.2.tgz#a894b75d4bc4f6cd679ef3244a9fd8f46ae2d428"
@@ -1897,20 +1459,6 @@ atomic-sleep@^1.0.0:
resolved "https://registry.yarnpkg.com/atomic-sleep/-/atomic-sleep-1.0.0.tgz#eb85b77a601fc932cfe432c5acd364a9e2c9075b"
integrity sha512-kNOjDqAh7px0XWNI+4QbzoiR/nTkHAWNud2uvnJquD1/x5a7EQZMJT0AczqK0Qn67oY/TTQ1LbUKajZpp3I9tQ==
-autolinker@~0.28.0:
- version "0.28.1"
- resolved "https://registry.yarnpkg.com/autolinker/-/autolinker-0.28.1.tgz#0652b491881879f0775dace0cdca3233942a4e47"
- integrity sha1-BlK0kYgYefB3XazgzcoyM5QqTkc=
- dependencies:
- gulp-header "^1.7.1"
-
-available-typed-arrays@^1.0.2:
- version "1.0.2"
- resolved "https://registry.yarnpkg.com/available-typed-arrays/-/available-typed-arrays-1.0.2.tgz#6b098ca9d8039079ee3f77f7b783c4480ba513f5"
- integrity sha512-XWX3OX8Onv97LMk/ftVyBibpGwY5a8SmuxZPzeOxqmuEqUCOM9ZE+uIaD1VNJ5QnvU2UQusvmKbuM1FR8QWGfQ==
- dependencies:
- array-filter "^1.0.0"
-
aws-sdk@^2.767.0:
version "2.771.0"
resolved "https://registry.yarnpkg.com/aws-sdk/-/aws-sdk-2.771.0.tgz#ff4beb0a04d6ab1ae962c85dfb42e3e9bfe2b93b"
@@ -2506,11 +2054,6 @@ 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=
-
co-body@^5.1.1:
version "5.2.0"
resolved "https://registry.yarnpkg.com/co-body/-/co-body-5.2.0.tgz#5a0a658c46029131e0e3a306f67647302f71c124"
@@ -2617,13 +2160,6 @@ concat-stream@^1.6.2:
readable-stream "^2.2.2"
typedarray "^0.0.6"
-concat-with-sourcemaps@*:
- version "1.1.0"
- resolved "https://registry.yarnpkg.com/concat-with-sourcemaps/-/concat-with-sourcemaps-1.1.0.tgz#d4ea93f05ae25790951b99e7b3b09e3908a4082e"
- integrity sha512-4gEjHJFT9e+2W/77h/DS5SGUgwDaOwprX8L/gl5+3ixnzkVJJsZWDSelmN3Oilw3LNDZjZV0yqH1hLG3k6nghg==
- dependencies:
- source-map "^0.6.1"
-
config-chain@^1.1.11:
version "1.1.12"
resolved "https://registry.yarnpkg.com/config-chain/-/config-chain-1.1.12.tgz#0fde8d091200eb5e808caf25fe618c02f48e4efa"
@@ -2644,11 +2180,6 @@ 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==
-
content-disposition@^0.5.2, content-disposition@~0.5.2:
version "0.5.3"
resolved "https://registry.yarnpkg.com/content-disposition/-/content-disposition-0.5.3.tgz#e130caf7e7279087c5616c2007d0485698984fbd"
@@ -2790,23 +2321,11 @@ date-utils@*:
resolved "https://registry.yarnpkg.com/date-utils/-/date-utils-1.2.21.tgz#61fb16cdc1274b3c9acaaffe9fc69df8720a2b64"
integrity sha1-YfsWzcEnSzyayq/+n8ad+HIKK2Q=
-date.js@^0.3.1:
- version "0.3.3"
- resolved "https://registry.yarnpkg.com/date.js/-/date.js-0.3.3.tgz#ef1e92332f507a638795dbb985e951882e50bbda"
- integrity sha512-HgigOS3h3k6HnW011nAb43c5xx5rBXk8P2v/WIT9Zv4koIaVXiH2BURguI78VVp+5Qc076T7OR378JViCnZtBw==
- dependencies:
- debug "~3.1.0"
-
dateformat@^3.0.3:
version "3.0.3"
resolved "https://registry.yarnpkg.com/dateformat/-/dateformat-3.0.3.tgz#a6e37499a4d9a9cf85ef5872044d62901c9889ae"
integrity sha512-jyCETtSl3VMZMWeRo7iY1FL19ges1t55hMo5yaam4Jrsm5EPL89UQkoQRyiI+Yf4k8r2ZpdngkV8hr1lIdjb3Q==
-dayjs@^1.10.4:
- version "1.10.4"
- resolved "https://registry.yarnpkg.com/dayjs/-/dayjs-1.10.4.tgz#8e544a9b8683f61783f570980a8a80eaf54ab1e2"
- integrity sha512-RI/Hh4kqRc1UKLOAf/T5zdMMX5DQIlDxwUe3wSyMMnEbGunnpENCdbUgM+dW7kXidZqCttBrmw7BhN4TMddkCw==
-
debug@4, debug@^4.0.1:
version "4.2.0"
resolved "https://registry.yarnpkg.com/debug/-/debug-4.2.0.tgz#7f150f93920e94c58f5574c2fd01a3110effe7f1"
@@ -2912,39 +2431,6 @@ decompress@^4.2.1:
pify "^2.3.0"
strip-dirs "^2.0.0"
-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@^2.0.1:
- version "2.0.5"
- resolved "https://registry.yarnpkg.com/deep-equal/-/deep-equal-2.0.5.tgz#55cd2fe326d83f9cbf7261ef0e060b3f724c5cb9"
- integrity sha512-nPiRgmbAtm1a3JsnLCf6/SLfXcjyN5v8L1TXzdCmHrXJ4hx+gW/w1YCcn7z8gJtSiDArZCgYtbao3QqLm/N1Sw==
- dependencies:
- call-bind "^1.0.0"
- es-get-iterator "^1.1.1"
- get-intrinsic "^1.0.1"
- is-arguments "^1.0.4"
- is-date-object "^1.0.2"
- is-regex "^1.1.1"
- isarray "^2.0.5"
- object-is "^1.1.4"
- object-keys "^1.1.1"
- object.assign "^4.1.2"
- regexp.prototype.flags "^1.3.0"
- side-channel "^1.0.3"
- which-boxed-primitive "^1.0.1"
- which-collection "^1.0.1"
- which-typed-array "^1.1.2"
-
deep-equal@~1.0.1:
version "1.0.1"
resolved "https://registry.yarnpkg.com/deep-equal/-/deep-equal-1.0.1.tgz#f5d260292b660e084eff4cdbc9f08ad3247448b5"
@@ -2965,13 +2451,6 @@ deepmerge@^4.2.2:
resolved "https://registry.yarnpkg.com/deepmerge/-/deepmerge-4.2.2.tgz#44d2ea3679b8f4d4ffba33f03d865fc1e7bf4955"
integrity sha512-FJ3UgI4gIl+PHZm53knsuSFpE+nESMr7M4v9QcgB7S63Kj/6WqMiFQJpBBYz1Pt+66bZpP3Q7Lye0Oo9MPKEdg==
-default-compare@^1.0.0:
- version "1.0.0"
- resolved "https://registry.yarnpkg.com/default-compare/-/default-compare-1.0.0.tgz#cb61131844ad84d84788fb68fd01681ca7781a2f"
- integrity sha512-QWfXlM0EkAbqOCbD/6HjdwT19j7WCkMyiRhWilc4H9/5h/RzTF9gv5LYh1+CmDV5d1rki6KAWLtQale0xt20eQ==
- dependencies:
- kind-of "^5.0.2"
-
default-shell@^1.0.0:
version "1.0.1"
resolved "https://registry.yarnpkg.com/default-shell/-/default-shell-1.0.1.tgz#752304bddc6174f49eb29cb988feea0b8813c8bc"
@@ -3116,11 +2595,6 @@ domexception@^1.0.1:
dependencies:
webidl-conversions "^4.0.2"
-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"
@@ -3337,16 +2811,6 @@ ensure-error@^2.0.0:
resolved "https://registry.yarnpkg.com/ensure-error/-/ensure-error-2.1.0.tgz#f11fbe383c0cf4a54850ac77acceb7bc06e0f99d"
integrity sha512-+BMSJHw9gxiJAAp2ZR1E0TNcL09dD3lOvkl7WVm4+Y6xnes/pMetP/TzCHiDduh8ihNDjbGfuYxl7l4PA1xZ8A==
-ent@^2.2.0:
- version "2.2.0"
- resolved "https://registry.yarnpkg.com/ent/-/ent-2.2.0.tgz#e964219325a21d05f44466a2f686ed6ce5f5dd1d"
- integrity sha1-6WQhkyWiHQX0RGai9obtbOX13R0=
-
-entities@~2.1.0:
- version "2.1.0"
- resolved "https://registry.yarnpkg.com/entities/-/entities-2.1.0.tgz#992d3129cf7df6870b96c57858c249a120f8b8b5"
- integrity sha512-hCx1oky9PFrJ611mf0ifBLBRW8lUUVRlFolb5gWRfIELabBlbp9xZvrqZLZAs+NxFnbfQoeGd8wDkygjg7U85w==
-
env-paths@^2.2.0:
version "2.2.0"
resolved "https://registry.yarnpkg.com/env-paths/-/env-paths-2.2.0.tgz#cdca557dc009152917d6166e2febe1f039685e43"
@@ -3371,12 +2835,7 @@ error-inject@^1.0.0:
resolved "https://registry.yarnpkg.com/error-inject/-/error-inject-1.0.0.tgz#e2b3d91b54aed672f309d950d154850fa11d4f37"
integrity sha1-4rPZG1Su1nLzCdlQ0VSFD6EdTzc=
-error-symbol@^0.1.0:
- version "0.1.0"
- resolved "https://registry.yarnpkg.com/error-symbol/-/error-symbol-0.1.0.tgz#0a4dae37d600d15a29ba453d8ef920f1844333f6"
- integrity sha1-Ck2uN9YA0VopukU9jvkg8YRDM/Y=
-
-es-abstract@^1.18.0-next.1, es-abstract@^1.18.0-next.2:
+es-abstract@^1.18.0-next.2:
version "1.18.0-next.3"
resolved "https://registry.yarnpkg.com/es-abstract/-/es-abstract-1.18.0-next.3.tgz#56bc8b5cc36b2cca25a13be07f3c02c2343db6b7"
integrity sha512-VMzHx/Bczjg59E6jZOQjHeN3DEoptdhejpARgflAViidlqSpjdq9zA6lKwlhRRs/lOw1gHJv2xkkSFRgvEwbQg==
@@ -3398,20 +2857,6 @@ es-abstract@^1.18.0-next.1, es-abstract@^1.18.0-next.2:
string.prototype.trimstart "^1.0.4"
unbox-primitive "^1.0.0"
-es-get-iterator@^1.1.1:
- version "1.1.2"
- resolved "https://registry.yarnpkg.com/es-get-iterator/-/es-get-iterator-1.1.2.tgz#9234c54aba713486d7ebde0220864af5e2b283f7"
- integrity sha512-+DTO8GYwbMCwbywjimwZMHp8AuYXOS2JZFWoi2AlPOS3ebnII9w/NLpNZtA7A0YLaVDw+O7KFCeoIV7OPvM7hQ==
- dependencies:
- call-bind "^1.0.2"
- get-intrinsic "^1.1.0"
- has-symbols "^1.0.1"
- is-arguments "^1.1.0"
- is-map "^2.0.2"
- is-set "^2.0.2"
- is-string "^1.0.5"
- isarray "^2.0.5"
-
es-to-primitive@^1.2.1:
version "1.2.1"
resolved "https://registry.yarnpkg.com/es-to-primitive/-/es-to-primitive-1.2.1.tgz#e55cd4c9cdc188bcefb03b366c736323fc5c898a"
@@ -3632,11 +3077,6 @@ 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"
@@ -3738,7 +3178,7 @@ extend-shallow@^3.0.0, extend-shallow@^3.0.2:
assign-symbols "^1.0.0"
is-extendable "^1.0.1"
-extend@^3.0.0, extend@^3.0.2, extend@~3.0.2:
+extend@^3.0.0, extend@~3.0.2:
version "3.0.2"
resolved "https://registry.yarnpkg.com/extend/-/extend-3.0.2.tgz#f8b1136b4071fbd8eb140aff858b1019ec2915fa"
integrity sha512-fjquC59cD7CyW6urNXK0FBufkZcoiGG80wTuPujX590cB5Ttln20E2UB4S/WARVqhXffZl2LNgS+gQdPIIim/g==
@@ -3796,23 +3236,11 @@ falafel@^1.0.1:
isarray "0.0.1"
object-keys "^1.0.6"
-"falsey@^0.3.2":
- version "0.3.2"
- resolved "https://registry.yarnpkg.com/falsey/-/falsey-0.3.2.tgz#b21c90c5c34660fc192bf909575db95b6880d597"
- integrity sha512-lxEuefF5MBIVDmE6XeqCdM4BWk1+vYmGZtkbKZ/VFcg6uBBw6fXNEbWmxCjDdQlFc9hy450nkiWwM3VAW6G1qg==
- dependencies:
- kind-of "^5.0.2"
-
fast-deep-equal@^3.1.1:
version "3.1.3"
resolved "https://registry.yarnpkg.com/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz#3a7d56b559d6cbc3eb512325244e619a65c6c525"
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-json-stable-stringify@^2.0.0:
version "2.1.0"
resolved "https://registry.yarnpkg.com/fast-json-stable-stringify/-/fast-json-stable-stringify-2.1.0.tgz#874bf69c6f404c2b5d99c481341399fd55892633"
@@ -3992,11 +3420,6 @@ flat-cache@^2.0.1:
rimraf "2.6.3"
write "1.0.3"
-flatpickr@^4.5.2, flatpickr@^4.6.6:
- version "4.6.9"
- resolved "https://registry.yarnpkg.com/flatpickr/-/flatpickr-4.6.9.tgz#9a13383e8a6814bda5d232eae3fcdccb97dc1499"
- integrity sha512-F0azNNi8foVWKSF+8X+ZJzz8r9sE1G4hl06RyceIaLvyltKvDl6vqk9Lm/6AUUCi5HWaIjiUbk7UpeE/fOXOpw==
-
flatstr@^1.0.12:
version "1.0.12"
resolved "https://registry.yarnpkg.com/flatstr/-/flatstr-1.0.12.tgz#c2ba6a08173edbb6c9640e3055b95e287ceb5931"
@@ -4026,18 +3449,11 @@ for-each@^0.3.3:
dependencies:
is-callable "^1.1.3"
-for-in@^1.0.1, for-in@^1.0.2:
+for-in@^1.0.2:
version "1.0.2"
resolved "https://registry.yarnpkg.com/for-in/-/for-in-1.0.2.tgz#81068d295a8142ec0ac726c6e2200c30fb6d5e80"
integrity sha1-gQaNKVqBQuwKxybG4iAMMPttXoA=
-for-own@^1.0.0:
- version "1.0.0"
- resolved "https://registry.yarnpkg.com/for-own/-/for-own-1.0.0.tgz#c63332f415cedc4b04dbfe70cf836494c53cb44b"
- integrity sha1-xjMy9BXO3EsE2/5wz4NklMU8tEs=
- dependencies:
- for-in "^1.0.1"
-
foreach@^2.0.5:
version "2.0.5"
resolved "https://registry.yarnpkg.com/foreach/-/foreach-2.0.5.tgz#0bee005018aeb260d0a3af3ae658dd0136ec1b99"
@@ -4096,11 +3512,6 @@ fs-constants@^1.0.0:
resolved "https://registry.yarnpkg.com/fs-constants/-/fs-constants-1.0.0.tgz#6be0de9be998ce16af8afc24497b9ee9b7ccd9ad"
integrity sha512-y6OAwoSIf7FyjMIv94u+b5rdheZEjzR63GTyZJm5qh4Bi+2YgwLCcI/fPFZkL5PSixOt6ZNKm+w+Hfp/Bciwow==
-fs-exists-sync@^0.1.0:
- version "0.1.0"
- resolved "https://registry.yarnpkg.com/fs-exists-sync/-/fs-exists-sync-0.1.0.tgz#982d6893af918e72d08dec9e8673ff2b5a8d6add"
- integrity sha1-mC1ok6+RjnLQjeyehnP/K1qNat0=
-
fs-extra@8.1.0, fs-extra@^8.1.0:
version "8.1.0"
resolved "https://registry.yarnpkg.com/fs-extra/-/fs-extra-8.1.0.tgz#49d43c45a88cd9677668cb7be1b46efdb8d2e1c0"
@@ -4168,7 +3579,7 @@ get-caller-file@^2.0.1, get-caller-file@^2.0.5:
resolved "https://registry.yarnpkg.com/get-caller-file/-/get-caller-file-2.0.5.tgz#4f94412a82db32f36e3b0b9741f8a97feb031f7e"
integrity sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg==
-get-intrinsic@^1.0.1, get-intrinsic@^1.0.2, get-intrinsic@^1.1.0, get-intrinsic@^1.1.1:
+get-intrinsic@^1.0.2, get-intrinsic@^1.1.1:
version "1.1.1"
resolved "https://registry.yarnpkg.com/get-intrinsic/-/get-intrinsic-1.1.1.tgz#15f59f376f855c446963948f0d24cd3637b4abc6"
integrity sha512-kWZrnVM42QCiEA2Ig1bG8zjoIMOgxWwYCEeNdwY6Tv/cOSeGpcoX4pXHfKUxNKVoArnrEr2e9srnAxxGIraS9Q==
@@ -4177,19 +3588,6 @@ get-intrinsic@^1.0.1, get-intrinsic@^1.0.2, get-intrinsic@^1.1.0, get-intrinsic@
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-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-stream@3.0.0, get-stream@^3.0.0:
version "3.0.0"
resolved "https://registry.yarnpkg.com/get-stream/-/get-stream-3.0.0.tgz#8e943d1358dc37555054ecbe2edb05aa174ede14"
@@ -4387,35 +3785,6 @@ growly@^1.3.0:
resolved "https://registry.yarnpkg.com/growly/-/growly-1.3.0.tgz#f10748cbe76af964b7c96c93c6bcc28af120c081"
integrity sha1-8QdIy+dq+WS3yWyTxrzCivEgwIE=
-gulp-header@^1.7.1:
- version "1.8.12"
- resolved "https://registry.yarnpkg.com/gulp-header/-/gulp-header-1.8.12.tgz#ad306be0066599127281c4f8786660e705080a84"
- integrity sha512-lh9HLdb53sC7XIZOYzTXM4lFuXElv3EVkSDhsd7DoJBj7hm+Ni7D3qYbb+Rr8DuM8nRanBvkVO9d7askreXGnQ==
- dependencies:
- concat-with-sourcemaps "*"
- lodash.template "^4.4.0"
- through2 "^2.0.0"
-
-handlebars-utils@^1.0.2, handlebars-utils@^1.0.4, handlebars-utils@^1.0.6:
- version "1.0.6"
- resolved "https://registry.yarnpkg.com/handlebars-utils/-/handlebars-utils-1.0.6.tgz#cb9db43362479054782d86ffe10f47abc76357f9"
- integrity sha512-d5mmoQXdeEqSKMtQQZ9WkiUcO1E3tPbWxluCK9hVgIDPzQa9WsKo3Lbe/sGflTe7TomHEeZaOgwIkyIr1kfzkw==
- dependencies:
- kind-of "^6.0.0"
- typeof-article "^0.1.1"
-
-handlebars@^4.0.11, handlebars@^4.7.6:
- version "4.7.7"
- resolved "https://registry.yarnpkg.com/handlebars/-/handlebars-4.7.7.tgz#9ce33416aad02dbd6c8fafa8240d5d98004945a1"
- integrity sha512-aAcXm5OAfE/8IXkcZvCepKU3VzW1/39Fb5ZuqMtgI/hT8X2YgoMvBY5dLhq/cpOvw7Lk1nK/UF71aLG/ZnVYRA==
- dependencies:
- minimist "^1.2.5"
- neo-async "^2.6.0"
- source-map "^0.6.1"
- wordwrap "^1.0.0"
- optionalDependencies:
- uglify-js "^3.1.4"
-
har-schema@^2.0.0:
version "2.0.0"
resolved "https://registry.yarnpkg.com/har-schema/-/har-schema-2.0.0.tgz#a94c2224ebcac04782a0d9035521f24735b7ec92"
@@ -4504,39 +3873,6 @@ has@^1.0.3:
dependencies:
function-bind "^1.1.1"
-helper-date@^1.0.1:
- version "1.0.1"
- resolved "https://registry.yarnpkg.com/helper-date/-/helper-date-1.0.1.tgz#12fedea3ad8e44a7ca4c4efb0ff4104a5120cffb"
- integrity sha512-wU3VOwwTJvGr/w5rZr3cprPHO+hIhlblTJHD6aFBrKLuNbf4lAmkawd2iK3c6NbJEvY7HAmDpqjOFSI5/+Ey2w==
- dependencies:
- date.js "^0.3.1"
- handlebars-utils "^1.0.4"
- moment "^2.18.1"
-
-helper-markdown@^1.0.0:
- version "1.0.0"
- resolved "https://registry.yarnpkg.com/helper-markdown/-/helper-markdown-1.0.0.tgz#ee7e9fc554675007d37eb90f7853b13ce74f3e10"
- integrity sha512-AnDqMS4ejkQK0MXze7pA9TM3pu01ZY+XXsES6gEE0RmCGk5/NIfvTn0NmItfyDOjRAzyo9z6X7YHbHX4PzIvOA==
- dependencies:
- handlebars-utils "^1.0.2"
- highlight.js "^9.12.0"
- remarkable "^1.7.1"
-
-helper-md@^0.2.2:
- version "0.2.2"
- resolved "https://registry.yarnpkg.com/helper-md/-/helper-md-0.2.2.tgz#c1f59d7e55bbae23362fd8a0e971607aec69d41f"
- integrity sha1-wfWdflW7riM2L9ig6XFgeuxp1B8=
- dependencies:
- ent "^2.2.0"
- extend-shallow "^2.0.1"
- fs-exists-sync "^0.1.0"
- remarkable "^1.6.2"
-
-highlight.js@^9.12.0:
- version "9.18.5"
- resolved "https://registry.yarnpkg.com/highlight.js/-/highlight.js-9.18.5.tgz#d18a359867f378c138d6819edfc2a8acd5f29825"
- integrity sha512-a5bFyofd/BHCX52/8i8uJkjr9DYwXIPnM/plwI6W7ezItLGqzt7X2G2nXuYSfsIJdkwwj/g9DG1LkcGJI/dDoA==
-
hosted-git-info@^2.1.4:
version "2.8.8"
resolved "https://registry.yarnpkg.com/hosted-git-info/-/hosted-git-info-2.8.8.tgz#7539bd4bc1e0e0a895815a2e0262420b12858488"
@@ -4566,14 +3902,6 @@ html-escaper@^2.0.0:
resolved "https://registry.yarnpkg.com/html-escaper/-/html-escaper-2.0.2.tgz#dfd60027da36a36dfcbe236262c00a5822681453"
integrity sha512-H2iMtd0I4Mt5eYiapRdIDjp+XzelXQ0tFE4JS7YFwFevXXMmOp9myNrUvCg0D6ws8iqkRPBfKHgbwig1SmlLfg==
-html-tag@^2.0.0:
- version "2.0.0"
- resolved "https://registry.yarnpkg.com/html-tag/-/html-tag-2.0.0.tgz#36c3bc8d816fd30b570d5764a497a641640c2fed"
- integrity sha512-XxzooSo6oBoxBEUazgjdXj7VwTn/iSTSZzTYKzYY6I916tkaYzypHxy+pbVU1h+0UQ9JlVf5XkNQyxOAiiQO1g==
- dependencies:
- is-self-closing "^1.0.1"
- kind-of "^6.0.0"
-
http-assert@^1.3.0:
version "1.4.1"
resolved "https://registry.yarnpkg.com/http-assert/-/http-assert-1.4.1.tgz#c5f725d677aa7e873ef736199b89686cceb37878"
@@ -4731,11 +4059,6 @@ inflight@^1.0.4:
once "^1.3.0"
wrappy "1"
-info-symbol@^0.1.0:
- version "0.1.0"
- resolved "https://registry.yarnpkg.com/info-symbol/-/info-symbol-0.1.0.tgz#27841d72867ddb4242cd612d79c10633881c6a78"
- integrity sha1-J4QdcoZ920JCzWEtecEGM4gcang=
-
inherits@2, inherits@2.0.4, inherits@^2.0.1, inherits@^2.0.3, inherits@^2.0.4, inherits@~2.0.1, inherits@~2.0.3:
version "2.0.4"
resolved "https://registry.yarnpkg.com/inherits/-/inherits-2.0.4.tgz#0fa2c64f932917c3433a0ded55363aae37416b7c"
@@ -4812,13 +4135,6 @@ is-accessor-descriptor@^1.0.0:
dependencies:
kind-of "^6.0.0"
-is-arguments@^1.0.4, is-arguments@^1.1.0:
- version "1.1.0"
- resolved "https://registry.yarnpkg.com/is-arguments/-/is-arguments-1.1.0.tgz#62353031dfbee07ceb34656a6bde59efecae8dd9"
- integrity sha512-1Ij4lOMPl/xB5kBDn7I+b2ttPMKa8szhEIrXDuXQD/oe3HJLTLhqhgGspwgyGd6MOywBUqVvYicF72lkgDnIHg==
- dependencies:
- call-bind "^1.0.0"
-
is-arrayish@^0.2.1:
version "0.2.1"
resolved "https://registry.yarnpkg.com/is-arrayish/-/is-arrayish-0.2.1.tgz#77c99840527aa8ecb1a8ba697b80645a7a926a9d"
@@ -4886,7 +4202,7 @@ is-data-descriptor@^1.0.0:
dependencies:
kind-of "^6.0.0"
-is-date-object@^1.0.1, is-date-object@^1.0.2:
+is-date-object@^1.0.1:
version "1.0.2"
resolved "https://registry.yarnpkg.com/is-date-object/-/is-date-object-1.0.2.tgz#bda736f2cd8fd06d32844e7743bfa7494c3bfd7e"
integrity sha512-USlDT524woQ08aoZFzh3/Z6ch9Y/EWXEHQ/AaRN0SkKq4t2Jw2R2339tSXmwuVoY7LLlBCbOIlx2myP/L5zk0g==
@@ -4914,13 +4230,6 @@ is-docker@^2.0.0:
resolved "https://registry.yarnpkg.com/is-docker/-/is-docker-2.1.1.tgz#4125a88e44e450d384e09047ede71adc2d144156"
integrity sha512-ZOoqiXfEwtGknTiuDEy8pN2CfE3TxMHprvNer1mXiqwkOT77Rw3YVrUQ52EqAOU3QAWDQ+bQdx7HJzrv7LS2Hw==
-is-even@^1.0.0:
- version "1.0.0"
- resolved "https://registry.yarnpkg.com/is-even/-/is-even-1.0.0.tgz#76b5055fbad8d294a86b6a949015e1c97b717c06"
- integrity sha1-drUFX7rY0pSoa2qUkBXhyXtxfAY=
- dependencies:
- is-odd "^0.1.2"
-
is-extendable@^0.1.0, is-extendable@^0.1.1:
version "0.1.1"
resolved "https://registry.yarnpkg.com/is-extendable/-/is-extendable-0.1.1.tgz#62b110e289a471418e3ec36a617d472e301dfc89"
@@ -4978,11 +4287,6 @@ is-installed-globally@^0.3.1:
global-dirs "^2.0.1"
is-path-inside "^3.0.1"
-is-map@^2.0.1, is-map@^2.0.2:
- version "2.0.2"
- resolved "https://registry.yarnpkg.com/is-map/-/is-map-2.0.2.tgz#00922db8c9bf73e81b7a335827bc2a43f2b91127"
- integrity sha512-cOZFQQozTha1f4MxLFzlgKYPTyj26picdZTx82hbc/Xf4K/tZOOXSCkMvU4pKioRXGDLJRn0GM7Upe7kR721yg==
-
is-natural-number@^4.0.1:
version "4.0.1"
resolved "https://registry.yarnpkg.com/is-natural-number/-/is-natural-number-4.0.1.tgz#ab9d76e1db4ced51e35de0c72ebecf09f734cde8"
@@ -5003,13 +4307,6 @@ is-number-object@^1.0.4:
resolved "https://registry.yarnpkg.com/is-number-object/-/is-number-object-1.0.4.tgz#36ac95e741cf18b283fc1ddf5e83da798e3ec197"
integrity sha512-zohwelOAur+5uXtk8O3GPQ1eAcu4ZX3UwxQhUlfFFMNpUd83gXgjbhJh6HmB6LUNV/ieOLQuDwJO3dWJosUeMw==
-is-number@^2.0.2:
- version "2.1.0"
- resolved "https://registry.yarnpkg.com/is-number/-/is-number-2.1.0.tgz#01fcbbb393463a548f2f466cce16dece49db908f"
- integrity sha1-Afy7s5NGOlSPL0ZszhbezknbkI8=
- dependencies:
- kind-of "^3.0.2"
-
is-number@^3.0.0:
version "3.0.0"
resolved "https://registry.yarnpkg.com/is-number/-/is-number-3.0.0.tgz#24fd6201a4782cf50561c810276afc7d12d71195"
@@ -5017,11 +4314,6 @@ is-number@^3.0.0:
dependencies:
kind-of "^3.0.2"
-is-number@^4.0.0:
- version "4.0.0"
- resolved "https://registry.yarnpkg.com/is-number/-/is-number-4.0.0.tgz#0026e37f5454d73e356dfe6564699867c6a7f0ff"
- integrity sha512-rSklcAIlf1OmFdyAqbnWTLVelsQ58uvZ66S/ZyawjWqIviTWCjg2PzVGw8WUA+nNuPTqb4wgA+NszrJ+08LlgQ==
-
is-number@^7.0.0:
version "7.0.0"
resolved "https://registry.yarnpkg.com/is-number/-/is-number-7.0.0.tgz#7535345b896734d5f80c4d06c50955527a14f12b"
@@ -5037,13 +4329,6 @@ is-object@^1.0.1:
resolved "https://registry.yarnpkg.com/is-object/-/is-object-1.0.1.tgz#8952688c5ec2ffd6b03ecc85e769e02903083470"
integrity sha1-iVJojF7C/9awPsyF52ngKQMINHA=
-is-odd@^0.1.2:
- version "0.1.2"
- resolved "https://registry.yarnpkg.com/is-odd/-/is-odd-0.1.2.tgz#bc573b5ce371ef2aad6e6f49799b72bef13978a7"
- integrity sha1-vFc7XONx7yqtbm9JeZtyvvE5eKc=
- dependencies:
- is-number "^3.0.0"
-
is-path-inside@^3.0.1:
version "3.0.2"
resolved "https://registry.yarnpkg.com/is-path-inside/-/is-path-inside-3.0.2.tgz#f5220fc82a3e233757291dddc9c5877f2a1f3017"
@@ -5061,7 +4346,7 @@ is-plain-object@^2.0.3, is-plain-object@^2.0.4:
dependencies:
isobject "^3.0.1"
-is-regex@^1.0.4, is-regex@^1.1.1, is-regex@^1.1.2:
+is-regex@^1.1.2:
version "1.1.2"
resolved "https://registry.yarnpkg.com/is-regex/-/is-regex-1.1.2.tgz#81c8ebde4db142f2cf1c53fc86d6a45788266251"
integrity sha512-axvdhb5pdhEVThqJzYXwMlVuZwC+FF2DpcOhTS+y/8jVq4trxyPgfcwIxIKiyeuLlSQYKkmUaPQJ8ZE4yNKXDg==
@@ -5074,18 +4359,6 @@ is-retry-allowed@^1.1.0:
resolved "https://registry.yarnpkg.com/is-retry-allowed/-/is-retry-allowed-1.2.0.tgz#d778488bd0a4666a3be8a1482b9f2baafedea8b4"
integrity sha512-RUbUeKwvm3XG2VYamhJL1xFktgjvPzL0Hq8C+6yrWIswDy3BIXGqCxhxkc30N9jqK311gVU137K8Ei55/zVJRg==
-is-self-closing@^1.0.1:
- version "1.0.1"
- resolved "https://registry.yarnpkg.com/is-self-closing/-/is-self-closing-1.0.1.tgz#5f406b527c7b12610176320338af0fa3896416e4"
- integrity sha512-E+60FomW7Blv5GXTlYee2KDrnG6srxF7Xt1SjrhWUGUEsTFIqY/nq2y3DaftCsgUMdh89V07IVfhY9KIJhLezg==
- dependencies:
- self-closing-tags "^1.0.1"
-
-is-set@^2.0.1, is-set@^2.0.2:
- version "2.0.2"
- resolved "https://registry.yarnpkg.com/is-set/-/is-set-2.0.2.tgz#90755fa4c2562dc1c5d4024760d6119b94ca18ec"
- integrity sha512-+2cnTEZeY5z/iXGbLhPrOAaK/Mau5k5eXq9j14CpRTftq0pAJu2MwVRSZhyZWBzx3o6X795Lz6Bpb6R0GKf37g==
-
is-stream@^1.1.0:
version "1.1.0"
resolved "https://registry.yarnpkg.com/is-stream/-/is-stream-1.1.0.tgz#12d4a3dd4e68e0b79ceb8dbc84173ae80d91ca44"
@@ -5112,17 +4385,6 @@ is-type-of@^1.0.0:
is-class-hotfix "~0.0.6"
isstream "~0.1.2"
-is-typed-array@^1.1.3:
- version "1.1.5"
- resolved "https://registry.yarnpkg.com/is-typed-array/-/is-typed-array-1.1.5.tgz#f32e6e096455e329eb7b423862456aa213f0eb4e"
- integrity sha512-S+GRDgJlR3PyEbsX/Fobd9cqpZBuvUS+8asRqYDMLCb2qMzt1oz5m5oxQCxOgUDxiWsOVNi4yaF+/uvdlHlYug==
- dependencies:
- available-typed-arrays "^1.0.2"
- call-bind "^1.0.2"
- es-abstract "^1.18.0-next.2"
- foreach "^2.0.5"
- has-symbols "^1.0.1"
-
is-typedarray@^1.0.0, is-typedarray@~1.0.0:
version "1.0.0"
resolved "https://registry.yarnpkg.com/is-typedarray/-/is-typedarray-1.0.0.tgz#e479c80858df0c1b11ddda6940f96011fcda4a9a"
@@ -5133,16 +4395,6 @@ is-utf8@^0.2.0:
resolved "https://registry.yarnpkg.com/is-utf8/-/is-utf8-0.2.1.tgz#4b0da1442104d1b336340e80797e865cf39f7d72"
integrity sha1-Sw2hRCEE0bM2NA6AeX6GXPOffXI=
-is-weakmap@^2.0.1:
- version "2.0.1"
- resolved "https://registry.yarnpkg.com/is-weakmap/-/is-weakmap-2.0.1.tgz#5008b59bdc43b698201d18f62b37b2ca243e8cf2"
- integrity sha512-NSBR4kH5oVj1Uwvv970ruUkCV7O1mzgVFO4/rev2cLRda9Tm9HrL70ZPut4rOHgY0FNrUu9BCbXA2sdQ+x0chA==
-
-is-weakset@^2.0.1:
- version "2.0.1"
- resolved "https://registry.yarnpkg.com/is-weakset/-/is-weakset-2.0.1.tgz#e9a0af88dbd751589f5e50d80f4c98b780884f83"
- integrity sha512-pi4vhbhVHGLxohUw7PhGsueT4vRGFoXhP7+RGN0jKIv9+8PWYCQTqtADngrxOm2g46hoH0+g8uZZBzMrvVGDmw==
-
is-windows@^1.0.2:
version "1.0.2"
resolved "https://registry.yarnpkg.com/is-windows/-/is-windows-1.0.2.tgz#d1850eb9791ecd18e6182ce12a30f396634bb19d"
@@ -5175,11 +4427,6 @@ isarray@1.0.0, isarray@^1.0.0, isarray@~1.0.0:
resolved "https://registry.yarnpkg.com/isarray/-/isarray-1.0.0.tgz#bb935d48582cba168c06834957a54a3e07124f11"
integrity sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE=
-isarray@^2.0.5:
- version "2.0.5"
- resolved "https://registry.yarnpkg.com/isarray/-/isarray-2.0.5.tgz#8af1e4c1221244cc62459faf38940d4e644a5723"
- integrity sha512-xHjhDr3cNBK0BzdUJSPXZntQUx/mwMS5Rw4A7lPJ90XGAO6ISP/ePDNuo0vhqOZU+UD5JoodwCAAoZQd3FeAKw==
-
isbinaryfile@^4.0.6:
version "4.0.6"
resolved "https://registry.yarnpkg.com/isbinaryfile/-/isbinaryfile-4.0.6.tgz#edcb62b224e2b4710830b67498c8e4e5a4d2610b"
@@ -5190,11 +4437,6 @@ isexe@^2.0.0:
resolved "https://registry.yarnpkg.com/isexe/-/isexe-2.0.0.tgz#e8fbf374dc556ff8947a10dcb0572d633f2cfa10"
integrity sha1-6PvzdNxVb/iUehDcsFctYz8s+hA=
-isobject@^0.2.0:
- version "0.2.0"
- resolved "https://registry.yarnpkg.com/isobject/-/isobject-0.2.0.tgz#a3432192f39b910b5f02cc989487836ec70aa85e"
- integrity sha1-o0MhkvObkQtfAsyYlIeDbscKqF4=
-
isobject@^2.0.0:
version "2.1.0"
resolved "https://registry.yarnpkg.com/isobject/-/isobject-2.1.0.tgz#f065561096a3f1da2ef46272f815c840d87e0c89"
@@ -5871,7 +5113,7 @@ keyv@^3.0.0:
dependencies:
json-buffer "3.0.0"
-kind-of@^3.0.2, kind-of@^3.0.3, kind-of@^3.1.0, kind-of@^3.2.0:
+kind-of@^3.0.2, kind-of@^3.0.3, kind-of@^3.2.0:
version "3.2.2"
resolved "https://registry.yarnpkg.com/kind-of/-/kind-of-3.2.2.tgz#31ea21a734bab9bbb0f32466d893aea51e4a3c64"
integrity sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=
@@ -5885,7 +5127,7 @@ kind-of@^4.0.0:
dependencies:
is-buffer "^1.1.5"
-kind-of@^5.0.0, kind-of@^5.0.2:
+kind-of@^5.0.0:
version "5.1.0"
resolved "https://registry.yarnpkg.com/kind-of/-/kind-of-5.1.0.tgz#729c91e2d857b7a419a1f9aa65685c4c33f5845d"
integrity sha512-NGEErnH6F2vUuXDh+OlbcKW7/wOcfdRHaZ7VWtqCztfHri/++YKmP51OdWeGPuqCOba6kk2OTe5d02VmTB80Pw==
@@ -5895,7 +5137,7 @@ kind-of@^6.0.0, kind-of@^6.0.2:
resolved "https://registry.yarnpkg.com/kind-of/-/kind-of-6.0.3.tgz#07c05034a6c349fa06e24fa35aa76db4580ce4dd"
integrity sha512-dcS1ul+9tmeD95T+x28/ehLgd9mENa3LsvDTtzm3vyBEO7RPptvAD+t44WVXaUjTBRcrpFeFlC8WCruUR456hw==
-kleur@^3.0.0, kleur@^3.0.3:
+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==
@@ -6026,13 +5268,6 @@ latest-version@^5.0.0:
dependencies:
package-json "^6.3.0"
-lazy-cache@^2.0.1:
- version "2.0.2"
- resolved "https://registry.yarnpkg.com/lazy-cache/-/lazy-cache-2.0.2.tgz#b9190a4f913354694840859f8a8f7084d8822264"
- integrity sha1-uRkKT5EzVGlIQIWfio9whNiCImQ=
- dependencies:
- set-getter "^0.1.0"
-
lazy-val@^1.0.4:
version "1.0.4"
resolved "https://registry.yarnpkg.com/lazy-val/-/lazy-val-1.0.4.tgz#882636a7245c2cfe6e0a4e3ba6c5d68a137e5c65"
@@ -6204,13 +5439,6 @@ lines-and-columns@^1.1.6:
resolved "https://registry.yarnpkg.com/lines-and-columns/-/lines-and-columns-1.1.6.tgz#1c00c743b433cd0a4e80758f7b64a57440d9ff00"
integrity sha1-HADHQ7QzzQpOgHWPe2SldEDZ/wA=
-linkify-it@^3.0.1:
- version "3.0.2"
- resolved "https://registry.yarnpkg.com/linkify-it/-/linkify-it-3.0.2.tgz#f55eeb8bc1d3ae754049e124ab3bb56d97797fb8"
- integrity sha512-gDBO4aHNZS6coiZCKVhSNh43F9ioIL4JwRjLZPkoLIY4yZFwg264Y5lu2x6rb1Js42Gh6Yqm2f6L2AJcnkzinQ==
- dependencies:
- uc.micro "^1.0.1"
-
load-bmfont@^1.3.1, load-bmfont@^1.4.0:
version "1.4.1"
resolved "https://registry.yarnpkg.com/load-bmfont/-/load-bmfont-1.4.1.tgz#c0f5f4711a1e2ccff725a7b6078087ccfcddd3e9"
@@ -6235,16 +5463,6 @@ load-json-file@^4.0.0:
pify "^3.0.0"
strip-bom "^3.0.0"
-loadicons@^1.0.0:
- version "1.0.0"
- resolved "https://registry.yarnpkg.com/loadicons/-/loadicons-1.0.0.tgz#79fd9b08ef2933988c94068cbd246ef3f21cbd04"
- integrity sha512-KSywiudfuOK5sTdhNMM8hwRpMxZ5TbQlU4ZijMxUFwRW7jpxUmb9YJoLIzDn7+xuxeLzCZWBmLJS2JDjDWCpsw==
-
-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"
@@ -6260,11 +5478,6 @@ locate-path@^5.0.0:
dependencies:
p-locate "^4.1.0"
-lodash._reinterpolate@^3.0.0:
- version "3.0.0"
- resolved "https://registry.yarnpkg.com/lodash._reinterpolate/-/lodash._reinterpolate-3.0.0.tgz#0ccf2d89166af03b3663c796538b75ac6e114d9d"
- integrity sha1-DM8tiRZq8Ds2Y8eWU4t1rG4RTZ0=
-
lodash.debounce@^4.0.8:
version "4.0.8"
resolved "https://registry.yarnpkg.com/lodash.debounce/-/lodash.debounce-4.0.8.tgz#82d79bff30a67c4005ffd5e2515300ad9ca4d7af"
@@ -6335,21 +5548,6 @@ lodash.sortby@^4.7.0:
resolved "https://registry.yarnpkg.com/lodash.sortby/-/lodash.sortby-4.7.0.tgz#edd14c824e2cc9c1e0b0a1b42bb5210516a42438"
integrity sha1-7dFMgk4sycHgsKG0K7UhBRakJDg=
-lodash.template@^4.4.0:
- version "4.5.0"
- resolved "https://registry.yarnpkg.com/lodash.template/-/lodash.template-4.5.0.tgz#f976195cf3f347d0d5f52483569fe8031ccce8ab"
- integrity sha512-84vYFxIkmidUiFxidA/KjjH9pAycqW+h980j7Fuz5qxRtO9pgB7MDFTdys1N7A5mcucRiDyEq4fusljItR1T/A==
- dependencies:
- lodash._reinterpolate "^3.0.0"
- lodash.templatesettings "^4.0.0"
-
-lodash.templatesettings@^4.0.0:
- version "4.2.0"
- resolved "https://registry.yarnpkg.com/lodash.templatesettings/-/lodash.templatesettings-4.2.0.tgz#e481310f049d3cf6d47e912ad09313b154f0fb33"
- integrity sha512-stgLz+i3Aa9mZgnjr/O+v9ruKZsPsndy7qPZOchbqk2cnTU1ZaldKK+v7m54WoKIyxiuMZTKT2H81F8BeAc3ZQ==
- dependencies:
- lodash._reinterpolate "^3.0.0"
-
lodash.without@^4.4.0:
version "4.4.0"
resolved "https://registry.yarnpkg.com/lodash.without/-/lodash.without-4.4.0.tgz#3cd4574a00b67bae373a94b748772640507b7aac"
@@ -6370,40 +5568,11 @@ lodash@^4.17.10, lodash@^4.17.14, lodash@^4.17.3:
resolved "https://registry.yarnpkg.com/lodash/-/lodash-4.17.20.tgz#b44a9b6297bcb698f1c51a3545a2b3b368d59c52"
integrity sha512-PlhdFcillOINfeV7Ni6oF1TAEayyZBoZ8bcshTHqOYJYlrqzRK5hagpagky5o4HfCzzd1TRkXPMFq6cKk9rGmA==
-lodash@^4.17.19, lodash@^4.17.20:
+lodash@^4.17.19:
version "4.17.21"
resolved "https://registry.yarnpkg.com/lodash/-/lodash-4.17.21.tgz#679591c564c3bffaae8454cf0b3df370c3d6911c"
integrity sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==
-log-ok@^0.1.1:
- version "0.1.1"
- resolved "https://registry.yarnpkg.com/log-ok/-/log-ok-0.1.1.tgz#bea3dd36acd0b8a7240d78736b5b97c65444a334"
- integrity sha1-vqPdNqzQuKckDXhza1uXxlREozQ=
- dependencies:
- ansi-green "^0.1.1"
- success-symbol "^0.1.0"
-
-log-utils@^0.2.1:
- version "0.2.1"
- resolved "https://registry.yarnpkg.com/log-utils/-/log-utils-0.2.1.tgz#a4c217a0dd9a50515d9b920206091ab3d4e031cf"
- integrity sha1-pMIXoN2aUFFdm5ICBgkas9TgMc8=
- dependencies:
- ansi-colors "^0.2.0"
- error-symbol "^0.1.0"
- info-symbol "^0.1.0"
- log-ok "^0.1.1"
- success-symbol "^0.1.0"
- time-stamp "^1.0.1"
- warning-symbol "^0.1.0"
-
-logging-helpers@^1.0.0:
- version "1.0.0"
- resolved "https://registry.yarnpkg.com/logging-helpers/-/logging-helpers-1.0.0.tgz#b5a37b32ad53eb0137c58c7898a47b175ddb7c36"
- integrity sha512-qyIh2goLt1sOgQQrrIWuwkRjUx4NUcEqEGAcYqD8VOnOC6ItwkrVE8/tA4smGpjzyp4Svhc6RodDp9IO5ghpyA==
- dependencies:
- isobject "^3.0.0"
- log-utils "^0.2.1"
-
loose-envify@^1.0.0:
version "1.4.0"
resolved "https://registry.yarnpkg.com/loose-envify/-/loose-envify-1.4.0.tgz#71ee51fa7be4caec1a63839f7e682d8132d30caf"
@@ -6499,17 +5668,6 @@ map-visit@^1.0.0:
dependencies:
object-visit "^1.0.0"
-markdown-it@^12.0.2:
- version "12.0.4"
- resolved "https://registry.yarnpkg.com/markdown-it/-/markdown-it-12.0.4.tgz#eec8247d296327eac3ba9746bdeec9cfcc751e33"
- integrity sha512-34RwOXZT8kyuOJy25oJNJoulO8L0bTHYWXcdZBYZqFnjIy3NgjeoM3FmPXIOFQ26/lSHYMr8oc62B6adxXcb3Q==
- dependencies:
- argparse "^2.0.1"
- entities "~2.1.0"
- linkify-it "^3.0.1"
- mdurl "^1.0.1"
- uc.micro "^1.0.5"
-
matcher@^3.0.0:
version "3.0.0"
resolved "https://registry.yarnpkg.com/matcher/-/matcher-3.0.0.tgz#bd9060f4c5b70aa8041ccc6f80368760994f30ca"
@@ -6517,11 +5675,6 @@ matcher@^3.0.0:
dependencies:
escape-string-regexp "^4.0.0"
-mdurl@^1.0.1:
- version "1.0.1"
- resolved "https://registry.yarnpkg.com/mdurl/-/mdurl-1.0.1.tgz#fe85b2ec75a59037f2adfec100fd6c601761152e"
- integrity sha1-/oWy7HWlkDfyrf7BAP1sYBdhFS4=
-
media-typer@0.3.0:
version "0.3.0"
resolved "https://registry.yarnpkg.com/media-typer/-/media-typer-0.3.0.tgz#8710d7af0aa626f8fffa1ce00168545263255748"
@@ -6631,11 +5784,6 @@ 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.5.2"
- resolved "https://registry.yarnpkg.com/mime/-/mime-2.5.2.tgz#6e3dc6cc2b9510643830e5f19d5cb753da5eeabe"
- integrity sha512-tqkh47FzKeCPD2PUiPB6pkbMzsCasjxAfC62/Wap5qrUWcb+sFasXUC5I3gYM5iBM8v/Qpn4UK0x+j0iHyFPDg==
-
mime@^2.4.6:
version "2.4.6"
resolved "https://registry.yarnpkg.com/mime/-/mime-2.4.6.tgz#e5b407c90db442f2beb5b162373d07b69affa4d1"
@@ -6690,11 +5838,6 @@ mkdirp@^0.5.0, mkdirp@^0.5.1, mkdirp@^0.5.4:
dependencies:
minimist "^1.2.5"
-moment@^2.18.1:
- version "2.29.1"
- resolved "https://registry.yarnpkg.com/moment/-/moment-2.29.1.tgz#b2be769fa31940be9eeea6469c075e35006fa3d3"
- integrity sha512-kHmoybcPV8Sqy59DwNDY3Jefr64lK/by/da0ViFcuA4DH0vQg5Q6Ze5VimxkfQNSC+Mls/Kx53s7TjP1RhFEDQ==
-
mongodb@3.6.3:
version "3.6.3"
resolved "https://registry.yarnpkg.com/mongodb/-/mongodb-3.6.3.tgz#eddaed0cc3598474d7a15f0f2a5b04848489fd05"
@@ -6713,11 +5856,6 @@ 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.1.6"
- resolved "https://registry.yarnpkg.com/mri/-/mri-1.1.6.tgz#49952e1044db21dbf90f6cd92bc9c9a777d415a6"
- integrity sha512-oi1b3MfbyGa7FJMP9GmLTttni5JoICpYBRlq+x5V16fZbLsnL9N3wFqqIm/nIG43FjUFkFh9Epzp/kzUGUnJxQ==
-
ms@2.0.0:
version "2.0.0"
resolved "https://registry.yarnpkg.com/ms/-/ms-2.0.0.tgz#5608aeadfc00be6c2901df5f9861788de0d597c8"
@@ -6779,11 +5917,6 @@ nan@^2.12.1:
resolved "https://registry.yarnpkg.com/nan/-/nan-2.14.2.tgz#f5376400695168f4cc694ac9393d0c9585eeea19"
integrity sha512-M2ufzIiINKCuDfBSAUr1vWQ+vuVcA9kqx8JJUsbQi6yf1uGRyb7HfpdfUr5qLXf3B/t8dPvcjhKMmlfnP47EzQ==
-nanoid@^2.1.0:
- version "2.1.11"
- resolved "https://registry.yarnpkg.com/nanoid/-/nanoid-2.1.11.tgz#ec24b8a758d591561531b4176a01e3ab4f0f0280"
- 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"
@@ -6831,11 +5964,6 @@ negotiator@0.6.2:
resolved "https://registry.yarnpkg.com/negotiator/-/negotiator-0.6.2.tgz#feacf7ccf525a77ae9634436a64883ffeca346fb"
integrity sha512-hZXc7K2e+PgeI1eDBe/10Ard4ekbfrrqG8Ep+8Jmf4JID2bNg7NvCPOZN+kfF574pFQI7mum2AUqDidoKqcTOw==
-neo-async@^2.6.0:
- version "2.6.2"
- resolved "https://registry.yarnpkg.com/neo-async/-/neo-async-2.6.2.tgz#b4aafb93e3aeb2d8174ca53cf163ab7d7308305f"
- integrity sha512-Yd3UES5mWCSqR+qNT93S3UoYUkqAZ9lLg8a7g9rimsWmYGK8cVToA4/sF3RrshdyV3sAGMXVUmpMYOw+dLpOuw==
-
new-github-issue-url@^0.2.1:
version "0.2.1"
resolved "https://registry.yarnpkg.com/new-github-issue-url/-/new-github-issue-url-0.2.1.tgz#e17be1f665a92de465926603e44b9f8685630c1d"
@@ -7000,14 +6128,6 @@ object-inspect@^1.9.0:
resolved "https://registry.yarnpkg.com/object-inspect/-/object-inspect-1.9.0.tgz#c90521d74e1127b67266ded3394ad6116986533a"
integrity sha512-i3Bp9iTqwhaLZBxGkRfo5ZbE07BQRT7MGu8+nNgwW9ItGp1TzCTw2DLEoWwjClxBjOFI/hWljTAmYGCEwmtnOw==
-object-is@^1.0.1, object-is@^1.1.4:
- 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"
@@ -7218,11 +6338,6 @@ 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"
@@ -7896,27 +7011,6 @@ quick-format-unescaped@^4.0.1:
resolved "https://registry.yarnpkg.com/quick-format-unescaped/-/quick-format-unescaped-4.0.1.tgz#437a5ea1a0b61deb7605f8ab6a8fd3858dbeb701"
integrity sha512-RyYpQ6Q5/drsJyOhrWHYMWTedvjTIat+FTwv0K4yoUxzvekw2aRHMQJLlnvt8UantkZg2++bEzD9EdxXqkWf4A==
-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"
-
raw-body@^2.2.0:
version "2.4.1"
resolved "https://registry.yarnpkg.com/raw-body/-/raw-body-2.4.1.tgz#30ac82f98bb5ae8c152e67149dac8d55153b168c"
@@ -8093,19 +7187,6 @@ regex-not@^1.0.0, regex-not@^1.0.2:
extend-shallow "^3.0.2"
safe-regex "^1.1.0"
-regexp.prototype.flags@^1.2.0, regexp.prototype.flags@^1.3.0:
- version "1.3.1"
- resolved "https://registry.yarnpkg.com/regexp.prototype.flags/-/regexp.prototype.flags-1.3.1.tgz#7ef352ae8d159e758c0eadca6f8fcb4eef07be26"
- integrity sha512-JiBdRBq91WlY7uRJ0ds7R+dU02i6LKi8r3BuQhNXn+kmeLN+EfHhfjqMRis1zJxnlu88hq/4dx0P2OP3APRTOA==
- dependencies:
- call-bind "^1.0.2"
- define-properties "^1.1.3"
-
-regexparam@1.3.0, regexparam@^1.3.0:
- version "1.3.0"
- resolved "https://registry.yarnpkg.com/regexparam/-/regexparam-1.3.0.tgz#2fe42c93e32a40eff6235d635e0ffa344b92965f"
- integrity sha512-6IQpFBv6e5vz1QAqI+V4k8P2e/3gRrqfCJ9FI+O1FLQTO+Uz6RXZEZOPmTJ6hlGj7gkERzY5BRCv09whKP96/g==
-
regexpp@^2.0.1:
version "2.0.1"
resolved "https://registry.yarnpkg.com/regexpp/-/regexpp-2.0.1.tgz#8d19d31cf632482b589049f8281f93dbcba4d07f"
@@ -8125,26 +7206,6 @@ registry-url@^5.0.0:
dependencies:
rc "^1.2.8"
-relative@^3.0.2:
- version "3.0.2"
- resolved "https://registry.yarnpkg.com/relative/-/relative-3.0.2.tgz#0dcd8ec54a5d35a3c15e104503d65375b5a5367f"
- integrity sha1-Dc2OxUpdNaPBXhBFA9ZTdbWlNn8=
- dependencies:
- isobject "^2.0.0"
-
-remarkable@^1.6.2, remarkable@^1.7.1:
- version "1.7.4"
- resolved "https://registry.yarnpkg.com/remarkable/-/remarkable-1.7.4.tgz#19073cb960398c87a7d6546eaa5e50d2022fcd00"
- integrity sha512-e6NKUXgX95whv7IgddywbeN/ItCkWbISmc2DiqHJb0wTrqZIexqdco5b8Z3XZoo/48IdNVKM9ZCvTPJ4F5uvhg==
- dependencies:
- argparse "^1.0.10"
- autolinker "~0.28.0"
-
-remixicon@^2.5.0:
- version "2.5.0"
- resolved "https://registry.yarnpkg.com/remixicon/-/remixicon-2.5.0.tgz#b5e245894a1550aa23793f95daceadbf96ad1a41"
- integrity sha512-q54ra2QutYDZpuSnFjmeagmEiN9IMo56/zz5dDNitzKD23oFRw77cWo4TsrAdmdkPiEn8mxlrTqxnkujDbEGww==
-
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"
@@ -8331,13 +7392,6 @@ rxjs@^6.6.0:
dependencies:
tslib "^1.9.0"
-sade@^1.4.0:
- version "1.7.4"
- resolved "https://registry.yarnpkg.com/sade/-/sade-1.7.4.tgz#ea681e0c65d248d2095c90578c03ca0bb1b54691"
- integrity sha512-y5yauMD93rX840MwUJr7C1ysLFBgMspsdTo4UVrDg3fXDvtwOyIqykhVAAm6fk/3au77773itJStObgK+LKaiA==
- dependencies:
- mri "^1.1.0"
-
safe-buffer@*, safe-buffer@^5.0.1, 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"
@@ -8416,11 +7470,6 @@ seek-bzip@^1.0.5:
dependencies:
commander "^2.8.1"
-self-closing-tags@^1.0.1:
- version "1.0.1"
- resolved "https://registry.yarnpkg.com/self-closing-tags/-/self-closing-tags-1.0.1.tgz#6c5fa497994bb826b484216916371accee490a5d"
- integrity sha512-7t6hNbYMxM+VHXTgJmxwgZgLGktuXtVVD5AivWzNTdJBM4DBjnDKDzkf2SrNjihaArpeJYNjxkELBu1evI4lQA==
-
semver-compare@^1.0.0:
version "1.0.0"
resolved "https://registry.yarnpkg.com/semver-compare/-/semver-compare-1.0.0.tgz#0dee216a1c941ab37e9efb1788f6afc5ff5537fc"
@@ -8472,13 +7521,6 @@ set-blocking@^2.0.0:
resolved "https://registry.yarnpkg.com/set-blocking/-/set-blocking-2.0.0.tgz#045f9782d011ae9a6803ddd382b24392b3d890f7"
integrity sha1-BF+XgtARrppoA93TgrJDkrPYkPc=
-set-getter@^0.1.0:
- version "0.1.0"
- resolved "https://registry.yarnpkg.com/set-getter/-/set-getter-0.1.0.tgz#d769c182c9d5a51f409145f2fba82e5e86e80376"
- integrity sha1-12nBgsnVpR9AkUXy+6guXoboA3Y=
- dependencies:
- to-object-path "^0.3.0"
-
set-value@^2.0.0, set-value@^2.0.1:
version "2.0.1"
resolved "https://registry.yarnpkg.com/set-value/-/set-value-2.0.1.tgz#a18d40530e6f07de4228c7defe4227af8cad005b"
@@ -8549,48 +7591,11 @@ shellwords@^0.1.1:
resolved "https://registry.yarnpkg.com/shellwords/-/shellwords-0.1.1.tgz#d6b9181c1a48d397324c84871efbcfc73fc0654b"
integrity sha512-vFwSUfQvqybiICwZY5+DAWIPLKsWO31Q91JSKl3UYv+K5c2QRPzn0qzec6QPu1Qc9eHYItiP3NdJqNVqetYAww==
-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.3:
- version "1.0.4"
- resolved "https://registry.yarnpkg.com/side-channel/-/side-channel-1.0.4.tgz#efce5c8fdc104ee751b25c58d4290011fa5ea2cf"
- integrity sha512-q5XPytqFEIKHkGdiMIrY10mvLRvnQh42/+GoBlFW3b2LXLE2xxJpZFdm94we0BaoV3RwJyGqg5wS7epxTv0Zvw==
- dependencies:
- call-bind "^1.0.0"
- get-intrinsic "^1.0.2"
- object-inspect "^1.9.0"
-
signal-exit@^3.0.0, signal-exit@^3.0.2:
version "3.0.3"
resolved "https://registry.yarnpkg.com/signal-exit/-/signal-exit-3.0.3.tgz#a1410c2edd8f077b08b4e253c8eacfcaf057461c"
integrity sha512-VUJ49FC8U1OxwZLxIbTTrDvLnf/6TDgxZcK8wxR8zs13xpx7xbG60ndBlhNrFi2EMuFRoeDoJO7wthSLq42EjA==
-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"
@@ -8981,11 +7986,6 @@ strip-outer@^1.0.0:
dependencies:
escape-string-regexp "^1.0.2"
-striptags@^3.1.0:
- version "3.1.1"
- resolved "https://registry.yarnpkg.com/striptags/-/striptags-3.1.1.tgz#c8c3e7fdd6fb4bb3a32a3b752e5b5e3e38093ebd"
- integrity sha1-yMPn/db7S7OjKjt1LltePjgJPr0=
-
sublevel-pouchdb@7.2.2:
version "7.2.2"
resolved "https://registry.yarnpkg.com/sublevel-pouchdb/-/sublevel-pouchdb-7.2.2.tgz#49e46cd37883bf7ff5006d7c5b9bcc7bcc1f422f"
@@ -8996,11 +7996,6 @@ sublevel-pouchdb@7.2.2:
ltgt "2.2.1"
readable-stream "1.1.14"
-success-symbol@^0.1.0:
- version "0.1.0"
- resolved "https://registry.yarnpkg.com/success-symbol/-/success-symbol-0.1.0.tgz#24022e486f3bf1cdca094283b769c472d3b72897"
- integrity sha1-JAIuSG878c3KCUKDt2nEctO3KJc=
-
sumchecker@^3.0.1:
version "3.0.1"
resolved "https://registry.yarnpkg.com/sumchecker/-/sumchecker-3.0.1.tgz#6377e996795abb0b6d348e9b3e1dfb24345a8e42"
@@ -9053,99 +8048,11 @@ supports-color@^7.1.0:
dependencies:
has-flag "^4.0.0"
-svelte-apexcharts@^1.0.2:
- version "1.0.2"
- resolved "https://registry.yarnpkg.com/svelte-apexcharts/-/svelte-apexcharts-1.0.2.tgz#4e000f8b8f7c901c05658c845457dfc8314d54c1"
- integrity sha512-6qlx4rE+XsonZ0FZudfwqOQ34Pq+3wpxgAD75zgEmGoYhYBJcwmikTuTf3o8ZBsZue9U/pAwhNy3ed1Bkq1gmA==
- 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:
- version "3.1.0"
- resolved "https://registry.yarnpkg.com/svelte-flatpickr/-/svelte-flatpickr-3.1.0.tgz#ad83588430dbd55196a1a258b8ba27e7f9c1ee37"
- integrity sha512-zKyV+ukeVuJ8CW0Ing3T19VSekc4bPkou/5Riutt1yATrLvSsanNqcgqi7Q5IePvIoOF9GJ5OtHvn1qK9Wx9BQ==
- dependencies:
- flatpickr "^4.5.2"
-
-svelte-portal@^1.0.0:
- version "1.0.0"
- resolved "https://registry.yarnpkg.com/svelte-portal/-/svelte-portal-1.0.0.tgz#36a47c5578b1a4d9b4dc60fa32a904640ec4cdd3"
- integrity sha512-nHf+DS/jZ6jjnZSleBMSaZua9JlG5rZv9lOGKgJuaZStfevtjIlUJrkLc3vbV8QdBvPPVmvcjTlazAzfKu0v3Q==
-
-svelte-spa-router@^3.0.5:
- version "3.1.0"
- resolved "https://registry.yarnpkg.com/svelte-spa-router/-/svelte-spa-router-3.1.0.tgz#a929f0def7e12c41f32bc356f91685aeadcd75bf"
- integrity sha512-jlM/xwjn57mylr+pzHYCOOy+IPQauT46gOucNGTBu6jHcFXu3F+oaojN4PXC1LYizRGxFB6QA0qnYbZnRfX7Sg==
- dependencies:
- regexparam "1.3.0"
-
svelte@3.30.0:
version "3.30.0"
resolved "https://registry.yarnpkg.com/svelte/-/svelte-3.30.0.tgz#cbde341e96bf34f4ac73c8f14f8a014e03bfb7d6"
integrity sha512-z+hdIACb9TROGvJBQWcItMtlr4s0DBUgJss6qWrtFkOoIInkG+iAMo/FJZQFyDBQZc+dul2+TzYSi/tpTT5/Ag==
-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"
- integrity sha512-JzNHBc2fLQMzYCZ90KZHN2ohXL0BQJGQimK1kGk6AvSeibuKcIdDX9Kr0dT9+UJ5O8nYA0RB839Lhvk4CY4MZw==
- dependencies:
- svg.js "^2.0.1"
-
-svg.easing.js@^2.0.0:
- version "2.0.0"
- resolved "https://registry.yarnpkg.com/svg.easing.js/-/svg.easing.js-2.0.0.tgz#8aa9946b0a8e27857a5c40a10eba4091e5691f12"
- integrity sha1-iqmUawqOJ4V6XEChDrpAkeVpHxI=
- dependencies:
- svg.js ">=2.3.x"
-
-svg.filter.js@^2.0.2:
- version "2.0.2"
- resolved "https://registry.yarnpkg.com/svg.filter.js/-/svg.filter.js-2.0.2.tgz#91008e151389dd9230779fcbe6e2c9a362d1c203"
- integrity sha1-kQCOFROJ3ZIwd5/L5uLJo2LRwgM=
- dependencies:
- svg.js "^2.2.5"
-
-svg.js@>=2.3.x, svg.js@^2.0.1, svg.js@^2.2.5, svg.js@^2.4.0, svg.js@^2.6.5:
- version "2.7.1"
- resolved "https://registry.yarnpkg.com/svg.js/-/svg.js-2.7.1.tgz#eb977ed4737001eab859949b4a398ee1bb79948d"
- integrity sha512-ycbxpizEQktk3FYvn/8BH+6/EuWXg7ZpQREJvgacqn46gIddG24tNNe4Son6omdXCnSOaApnpZw6MPCBA1dODA==
-
-svg.pathmorphing.js@^0.1.3:
- version "0.1.3"
- resolved "https://registry.yarnpkg.com/svg.pathmorphing.js/-/svg.pathmorphing.js-0.1.3.tgz#c25718a1cc7c36e852ecabc380e758ac09bb2b65"
- integrity sha512-49HWI9X4XQR/JG1qXkSDV8xViuTLIWm/B/7YuQELV5KMOPtXjiwH4XPJvr/ghEDibmLQ9Oc22dpWpG0vUDDNww==
- dependencies:
- svg.js "^2.4.0"
-
-svg.resize.js@^1.4.3:
- version "1.4.3"
- resolved "https://registry.yarnpkg.com/svg.resize.js/-/svg.resize.js-1.4.3.tgz#885abd248e0cd205b36b973c4b578b9a36f23332"
- integrity sha512-9k5sXJuPKp+mVzXNvxz7U0uC9oVMQrrf7cFsETznzUDDm0x8+77dtZkWdMfRlmbkEEYvUn9btKuZ3n41oNA+uw==
- dependencies:
- svg.js "^2.6.5"
- svg.select.js "^2.1.2"
-
-svg.select.js@^2.1.2:
- version "2.1.2"
- resolved "https://registry.yarnpkg.com/svg.select.js/-/svg.select.js-2.1.2.tgz#e41ce13b1acff43a7441f9f8be87a2319c87be73"
- integrity sha512-tH6ABEyJsAOVAhwcCjF8mw4crjXSI1aa7j2VQR8ZuJ37H2MBUbyeqYr5nEO7sSN3cy9AR9DUwNg0t/962HlDbQ==
- dependencies:
- svg.js "^2.2.5"
-
-svg.select.js@^3.0.1:
- version "3.0.1"
- resolved "https://registry.yarnpkg.com/svg.select.js/-/svg.select.js-3.0.1.tgz#a4198e359f3825739226415f82176a90ea5cc917"
- integrity sha512-h5IS/hKkuVCbKSieR9uQCj9w+zLHoPh+ce19bBYyqF53g6mnPB8sAtIbe1s9dh2S2fCmYX2xel1Ln3PJBbK4kw==
- dependencies:
- svg.js "^2.6.5"
-
symbol-tree@^3.2.2:
version "3.2.4"
resolved "https://registry.yarnpkg.com/symbol-tree/-/symbol-tree-3.2.4.tgz#430637d248ba77e078883951fb9aa0eed7c63fa2"
@@ -9300,11 +8207,6 @@ through@^2.3.6, through@^2.3.8, through@~2.3.4:
resolved "https://registry.yarnpkg.com/through/-/through-2.3.8.tgz#0dd4c9ffaabc357960b1b724115d7e0e86a2e1f5"
integrity sha1-DdTJ/6q8NXlgsbckEV1+Doai4fU=
-time-stamp@^1.0.1:
- version "1.1.0"
- resolved "https://registry.yarnpkg.com/time-stamp/-/time-stamp-1.1.0.tgz#764a5a11af50561921b133f3b44e618687e0f5c3"
- integrity sha1-dkpaEa9QVhkhsTPztE5hhofg9cM=
-
timed-out@^4.0.1:
version "4.0.1"
resolved "https://registry.yarnpkg.com/timed-out/-/timed-out-4.0.1.tgz#f32eacac5a175bea25d7fab565ab3ed8741ef56f"
@@ -9325,11 +8227,6 @@ 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"
@@ -9352,11 +8249,6 @@ to-fast-properties@^2.0.0:
resolved "https://registry.yarnpkg.com/to-fast-properties/-/to-fast-properties-2.0.0.tgz#dc5e698cbd079265bc73e0377681a4e4e83f616e"
integrity sha1-3F5pjL0HkmW8c+A3doGk5Og/YW4=
-to-gfm-code-block@^0.1.1:
- version "0.1.1"
- resolved "https://registry.yarnpkg.com/to-gfm-code-block/-/to-gfm-code-block-0.1.1.tgz#25d045a5fae553189e9637b590900da732d8aa82"
- integrity sha1-JdBFpfrlUxielje1kJANpzLYqoI=
-
to-json-schema@0.2.5:
version "0.2.5"
resolved "https://registry.yarnpkg.com/to-json-schema/-/to-json-schema-0.2.5.tgz#ef3c3f11ad64460dcfbdbafd0fd525d69d62a98f"
@@ -9473,13 +8365,6 @@ tunnel@0.0.6, 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.0.0"
- resolved "https://registry.yarnpkg.com/turndown/-/turndown-7.0.0.tgz#19b2a6a2d1d700387a1e07665414e4af4fec5225"
- integrity sha512-G1FfxfR0mUNMeGjszLYl3kxtopC4O9DRRiMlMDDVHvU1jaBkGFg4qxIyjIk2aiKLHyDyZvZyu4qBO2guuYBy3Q==
- 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"
@@ -9532,23 +8417,6 @@ typedarray@^0.0.6:
resolved "https://registry.yarnpkg.com/typedarray/-/typedarray-0.0.6.tgz#867ac74e3864187b1d3d47d996a78ec5c8830777"
integrity sha1-hnrHTjhkGHsdPUfZlqeOxciDB3c=
-typeof-article@^0.1.1:
- version "0.1.1"
- resolved "https://registry.yarnpkg.com/typeof-article/-/typeof-article-0.1.1.tgz#9f07e733c3fbb646ffa9e61c08debacd460e06af"
- integrity sha1-nwfnM8P7tkb/qeYcCN66zUYOBq8=
- dependencies:
- kind-of "^3.1.0"
-
-uc.micro@^1.0.1, uc.micro@^1.0.5:
- version "1.0.6"
- resolved "https://registry.yarnpkg.com/uc.micro/-/uc.micro-1.0.6.tgz#9c411a802a409a91fc6cf74081baba34b24499ac"
- integrity sha512-8Y75pvTYkLJW2hWQHXxoqRgV7qb9B+9vFEtidML+7koHUFapnVJAZ6cKs+Qjz5Aw3aZWHMC6u0wJE3At+nSGwA==
-
-uglify-js@^3.1.4:
- version "3.13.0"
- resolved "https://registry.yarnpkg.com/uglify-js/-/uglify-js-3.13.0.tgz#66ed69f7241f33f13531d3d51d5bcebf00df7f69"
- integrity sha512-TWYSWa9T2pPN4DIJYbU9oAjQx+5qdV5RUDxwARg8fmJZrD/V27Zj0JngW5xg1DFz42G0uDYl2XhzF6alSzD62w==
-
unbox-primitive@^1.0.0:
version "1.0.0"
resolved "https://registry.yarnpkg.com/unbox-primitive/-/unbox-primitive-1.0.0.tgz#eeacbc4affa28e9b3d36b5eaeccc50b3251b1d3f"
@@ -9793,11 +8661,6 @@ walker@^1.0.7, walker@~1.0.5:
dependencies:
makeerror "1.0.x"
-warning-symbol@^0.1.0:
- version "0.1.0"
- resolved "https://registry.yarnpkg.com/warning-symbol/-/warning-symbol-0.1.0.tgz#bb31dd11b7a0f9d67ab2ed95f457b65825bbad21"
- integrity sha1-uzHdEbeg+dZ6su2V9Fe2WCW7rSE=
-
webidl-conversions@^4.0.2:
version "4.0.2"
resolved "https://registry.yarnpkg.com/webidl-conversions/-/webidl-conversions-4.0.2.tgz#a855980b1f0b6b359ba1d5d9fb39ae941faa63ad"
@@ -9844,34 +8707,11 @@ which-boxed-primitive@^1.0.1:
is-string "^1.0.5"
is-symbol "^1.0.3"
-which-collection@^1.0.1:
- version "1.0.1"
- resolved "https://registry.yarnpkg.com/which-collection/-/which-collection-1.0.1.tgz#70eab71ebbbd2aefaf32f917082fc62cdcb70906"
- integrity sha512-W8xeTUwaln8i3K/cY1nGXzdnVZlidBcagyNFtBdD5kxnb4TvGKR7FfSIS3mYpwWS1QUCutfKz8IY8RjftB0+1A==
- dependencies:
- is-map "^2.0.1"
- is-set "^2.0.1"
- is-weakmap "^2.0.1"
- is-weakset "^2.0.1"
-
which-module@^2.0.0:
version "2.0.0"
resolved "https://registry.yarnpkg.com/which-module/-/which-module-2.0.0.tgz#d9ef07dce77b9902b8a3a8fa4b31c3e3f7e6e87a"
integrity sha1-2e8H3Od7mQK4o6j6SzHD4/fm6Ho=
-which-typed-array@^1.1.2:
- version "1.1.4"
- resolved "https://registry.yarnpkg.com/which-typed-array/-/which-typed-array-1.1.4.tgz#8fcb7d3ee5adf2d771066fba7cf37e32fe8711ff"
- integrity sha512-49E0SpUe90cjpoc7BOJwyPHRqSAd12c10Qm2amdEZrJPCY2NDxaW01zHITrem+rnETY3dwrbH3UUrUwagfCYDA==
- dependencies:
- available-typed-arrays "^1.0.2"
- call-bind "^1.0.0"
- es-abstract "^1.18.0-next.1"
- foreach "^2.0.5"
- function-bind "^1.1.1"
- has-symbols "^1.0.1"
- is-typed-array "^1.1.3"
-
which@^1.2.9, which@^1.3.0:
version "1.3.1"
resolved "https://registry.yarnpkg.com/which/-/which-1.3.1.tgz#a45043d54f5805316da8d62f9f50918d3da70b0a"
@@ -9898,11 +8738,6 @@ word-wrap@~1.2.3:
resolved "https://registry.yarnpkg.com/word-wrap/-/word-wrap-1.2.3.tgz#610636f6b1f703891bd34771ccb17fb93b47079c"
integrity sha512-Hz/mrNwitNRh/HUAtM/VT/5VH+ygD6DV7mYKZAtHOrbs8U7lvPS6xf7EJKMF0uW1KJCl0H701g3ZGus+muE5vQ==
-wordwrap@^1.0.0:
- version "1.0.0"
- resolved "https://registry.yarnpkg.com/wordwrap/-/wordwrap-1.0.0.tgz#27584810891456a4171c8d0226441ade90cbcaeb"
- integrity sha1-J1hIEIkUVqQXHI0CJkQa3pDLyus=
-
worker-farm@1.7.0:
version "1.7.0"
resolved "https://registry.yarnpkg.com/worker-farm/-/worker-farm-1.7.0.tgz#26a94c5391bbca926152002f69b84a4bf772e5a8"
@@ -10141,11 +8976,6 @@ yauzl@^2.10.0, yauzl@^2.4.2:
buffer-crc32 "~0.2.3"
fd-slicer "~1.1.0"
-year@^0.2.1:
- version "0.2.1"
- resolved "https://registry.yarnpkg.com/year/-/year-0.2.1.tgz#4083ae520a318b23ec86037f3000cb892bdf9bb0"
- integrity sha1-QIOuUgoxiyPshgN/MADLiSvfm7A=
-
ylru@^1.2.0:
version "1.2.1"
resolved "https://registry.yarnpkg.com/ylru/-/ylru-1.2.1.tgz#f576b63341547989c1de7ba288760923b27fe84f"
From 1b95326b20d1352d36305910259228b96a683dc7 Mon Sep 17 00:00:00 2001
From: Martin McKeaveney
Date: Fri, 12 Mar 2021 11:45:42 +0000
Subject: [PATCH 06/26] v0.8.7
---
lerna.json | 2 +-
packages/builder/package.json | 6 +++---
packages/cli/package.json | 2 +-
packages/client/package.json | 6 +++---
packages/server/package.json | 8 ++++----
packages/standard-components/package.json | 2 +-
packages/string-templates/package.json | 2 +-
packages/worker/package.json | 2 +-
8 files changed, 15 insertions(+), 15 deletions(-)
diff --git a/lerna.json b/lerna.json
index 50ff8febac..cf28146792 100644
--- a/lerna.json
+++ b/lerna.json
@@ -1,5 +1,5 @@
{
- "version": "0.8.6",
+ "version": "0.8.7",
"npmClient": "yarn",
"packages": [
"packages/*"
diff --git a/packages/builder/package.json b/packages/builder/package.json
index 0a10bbc4b2..3293ebc4b2 100644
--- a/packages/builder/package.json
+++ b/packages/builder/package.json
@@ -1,6 +1,6 @@
{
"name": "@budibase/builder",
- "version": "0.8.6",
+ "version": "0.8.7",
"license": "AGPL-3.0",
"private": true,
"scripts": {
@@ -64,9 +64,9 @@
},
"dependencies": {
"@budibase/bbui": "^1.58.13",
- "@budibase/client": "^0.8.6",
+ "@budibase/client": "^0.8.7",
"@budibase/colorpicker": "1.1.2",
- "@budibase/string-templates": "^0.8.6",
+ "@budibase/string-templates": "^0.8.7",
"@budibase/svelte-ag-grid": "^1.0.4",
"@sentry/browser": "5.19.1",
"@svelteschool/svelte-forms": "0.7.0",
diff --git a/packages/cli/package.json b/packages/cli/package.json
index a957e8415d..5c58c80560 100644
--- a/packages/cli/package.json
+++ b/packages/cli/package.json
@@ -1,6 +1,6 @@
{
"name": "cli",
- "version": "0.8.4",
+ "version": "0.8.7",
"description": "Budibase CLI, for developers, self hosting and migrations.",
"main": "src/index.js",
"bin": "src/index.js",
diff --git a/packages/client/package.json b/packages/client/package.json
index 55a3404853..750a85d462 100644
--- a/packages/client/package.json
+++ b/packages/client/package.json
@@ -1,6 +1,6 @@
{
"name": "@budibase/client",
- "version": "0.8.6",
+ "version": "0.8.7",
"license": "MPL-2.0",
"main": "dist/budibase-client.js",
"module": "dist/budibase-client.js",
@@ -9,13 +9,13 @@
"dev:builder": "rollup -cw"
},
"dependencies": {
- "@budibase/string-templates": "^0.8.6",
+ "@budibase/string-templates": "^0.8.7",
"regexparam": "^1.3.0",
"shortid": "^2.2.15",
"svelte-spa-router": "^3.0.5"
},
"devDependencies": {
- "@budibase/standard-components": "^0.8.6",
+ "@budibase/standard-components": "^0.8.7",
"@rollup/plugin-commonjs": "^16.0.0",
"@rollup/plugin-node-resolve": "^10.0.0",
"fs-extra": "^8.1.0",
diff --git a/packages/server/package.json b/packages/server/package.json
index 1a0e743eba..d6f128d4f6 100644
--- a/packages/server/package.json
+++ b/packages/server/package.json
@@ -1,7 +1,7 @@
{
"name": "@budibase/server",
"email": "hi@budibase.com",
- "version": "0.8.6",
+ "version": "0.8.7",
"description": "Budibase Web Server",
"main": "src/electron.js",
"repository": {
@@ -71,8 +71,8 @@
"author": "Budibase",
"license": "AGPL-3.0-or-later",
"dependencies": {
- "@budibase/client": "^0.8.6",
- "@budibase/string-templates": "^0.8.6",
+ "@budibase/client": "^0.8.7",
+ "@budibase/string-templates": "^0.8.7",
"@elastic/elasticsearch": "7.10.0",
"@koa/router": "8.0.0",
"@sendgrid/mail": "7.1.1",
@@ -126,7 +126,7 @@
"zlib": "1.0.5"
},
"devDependencies": {
- "@budibase/standard-components": "^0.8.6",
+ "@budibase/standard-components": "^0.8.7",
"@jest/test-sequencer": "^24.8.0",
"cross-env": "^7.0.3",
"electron": "10.1.3",
diff --git a/packages/standard-components/package.json b/packages/standard-components/package.json
index 781d6d8e29..cb8a180b67 100644
--- a/packages/standard-components/package.json
+++ b/packages/standard-components/package.json
@@ -35,7 +35,7 @@
"keywords": [
"svelte"
],
- "version": "0.8.6",
+ "version": "0.8.7",
"license": "MIT",
"gitHead": "768a9d59da12cfefcd7ccaba05f975e878669504",
"dependencies": {
diff --git a/packages/string-templates/package.json b/packages/string-templates/package.json
index 52bef88516..52d3372c23 100644
--- a/packages/string-templates/package.json
+++ b/packages/string-templates/package.json
@@ -1,6 +1,6 @@
{
"name": "@budibase/string-templates",
- "version": "0.8.6",
+ "version": "0.8.7",
"description": "Handlebars wrapper for Budibase templating.",
"main": "src/index.js",
"module": "src/index.js",
diff --git a/packages/worker/package.json b/packages/worker/package.json
index 84aec78fa9..770e63fa89 100644
--- a/packages/worker/package.json
+++ b/packages/worker/package.json
@@ -1,7 +1,7 @@
{
"name": "@budibase/deployment",
"email": "hi@budibase.com",
- "version": "0.8.6",
+ "version": "0.8.7",
"description": "Budibase Deployment Server",
"main": "src/index.js",
"repository": {
From 6afcda7599c1bcc645171e50e844cc414386a10c Mon Sep 17 00:00:00 2001
From: Martin McKeaveney
Date: Fri, 12 Mar 2021 14:20:18 +0000
Subject: [PATCH 07/26] v0.8.8
---
lerna.json | 2 +-
packages/builder/package.json | 6 +++---
packages/client/package.json | 8 ++++----
packages/server/package.json | 10 +++++-----
packages/standard-components/package.json | 4 ++--
packages/string-templates/package.json | 4 ++--
packages/worker/package.json | 4 ++--
7 files changed, 19 insertions(+), 19 deletions(-)
diff --git a/lerna.json b/lerna.json
index cf28146792..0ac686ea5f 100644
--- a/lerna.json
+++ b/lerna.json
@@ -1,5 +1,5 @@
{
- "version": "0.8.7",
+ "version": "0.8.8",
"npmClient": "yarn",
"packages": [
"packages/*"
diff --git a/packages/builder/package.json b/packages/builder/package.json
index 3293ebc4b2..806d0f3d06 100644
--- a/packages/builder/package.json
+++ b/packages/builder/package.json
@@ -1,6 +1,6 @@
{
"name": "@budibase/builder",
- "version": "0.8.7",
+ "version": "0.8.8",
"license": "AGPL-3.0",
"private": true,
"scripts": {
@@ -64,9 +64,9 @@
},
"dependencies": {
"@budibase/bbui": "^1.58.13",
- "@budibase/client": "^0.8.7",
+ "@budibase/client": "^0.8.8",
"@budibase/colorpicker": "1.1.2",
- "@budibase/string-templates": "^0.8.7",
+ "@budibase/string-templates": "^0.8.8",
"@budibase/svelte-ag-grid": "^1.0.4",
"@sentry/browser": "5.19.1",
"@svelteschool/svelte-forms": "0.7.0",
diff --git a/packages/client/package.json b/packages/client/package.json
index 750a85d462..1398471028 100644
--- a/packages/client/package.json
+++ b/packages/client/package.json
@@ -1,6 +1,6 @@
{
"name": "@budibase/client",
- "version": "0.8.7",
+ "version": "0.8.8",
"license": "MPL-2.0",
"main": "dist/budibase-client.js",
"module": "dist/budibase-client.js",
@@ -9,13 +9,13 @@
"dev:builder": "rollup -cw"
},
"dependencies": {
- "@budibase/string-templates": "^0.8.7",
+ "@budibase/string-templates": "^0.8.8",
"regexparam": "^1.3.0",
"shortid": "^2.2.15",
"svelte-spa-router": "^3.0.5"
},
"devDependencies": {
- "@budibase/standard-components": "^0.8.7",
+ "@budibase/standard-components": "^0.8.8",
"@rollup/plugin-commonjs": "^16.0.0",
"@rollup/plugin-node-resolve": "^10.0.0",
"fs-extra": "^8.1.0",
@@ -29,5 +29,5 @@
"svelte": "^3.30.0",
"svelte-jester": "^1.0.6"
},
- "gitHead": "768a9d59da12cfefcd7ccaba05f975e878669504"
+ "gitHead": "1b95326b20d1352d36305910259228b96a683dc7"
}
diff --git a/packages/server/package.json b/packages/server/package.json
index d6f128d4f6..91d36c33fc 100644
--- a/packages/server/package.json
+++ b/packages/server/package.json
@@ -1,7 +1,7 @@
{
"name": "@budibase/server",
"email": "hi@budibase.com",
- "version": "0.8.7",
+ "version": "0.8.8",
"description": "Budibase Web Server",
"main": "src/electron.js",
"repository": {
@@ -71,8 +71,8 @@
"author": "Budibase",
"license": "AGPL-3.0-or-later",
"dependencies": {
- "@budibase/client": "^0.8.7",
- "@budibase/string-templates": "^0.8.7",
+ "@budibase/client": "^0.8.8",
+ "@budibase/string-templates": "^0.8.8",
"@elastic/elasticsearch": "7.10.0",
"@koa/router": "8.0.0",
"@sendgrid/mail": "7.1.1",
@@ -126,7 +126,7 @@
"zlib": "1.0.5"
},
"devDependencies": {
- "@budibase/standard-components": "^0.8.7",
+ "@budibase/standard-components": "^0.8.8",
"@jest/test-sequencer": "^24.8.0",
"cross-env": "^7.0.3",
"electron": "10.1.3",
@@ -138,5 +138,5 @@
"pouchdb-adapter-memory": "^7.2.1",
"supertest": "^4.0.2"
},
- "gitHead": "768a9d59da12cfefcd7ccaba05f975e878669504"
+ "gitHead": "1b95326b20d1352d36305910259228b96a683dc7"
}
diff --git a/packages/standard-components/package.json b/packages/standard-components/package.json
index cb8a180b67..84759cc537 100644
--- a/packages/standard-components/package.json
+++ b/packages/standard-components/package.json
@@ -35,9 +35,9 @@
"keywords": [
"svelte"
],
- "version": "0.8.7",
+ "version": "0.8.8",
"license": "MIT",
- "gitHead": "768a9d59da12cfefcd7ccaba05f975e878669504",
+ "gitHead": "1b95326b20d1352d36305910259228b96a683dc7",
"dependencies": {
"@adobe/spectrum-css-workflow-icons": "^1.1.0",
"@budibase/bbui": "^1.58.13",
diff --git a/packages/string-templates/package.json b/packages/string-templates/package.json
index 52d3372c23..5cb026f48d 100644
--- a/packages/string-templates/package.json
+++ b/packages/string-templates/package.json
@@ -1,6 +1,6 @@
{
"name": "@budibase/string-templates",
- "version": "0.8.7",
+ "version": "0.8.8",
"description": "Handlebars wrapper for Budibase templating.",
"main": "src/index.js",
"module": "src/index.js",
@@ -33,5 +33,5 @@
"rollup-plugin-terser": "^7.0.2",
"typescript": "^4.1.3"
},
- "gitHead": "768a9d59da12cfefcd7ccaba05f975e878669504"
+ "gitHead": "1b95326b20d1352d36305910259228b96a683dc7"
}
diff --git a/packages/worker/package.json b/packages/worker/package.json
index 770e63fa89..189d0df4a9 100644
--- a/packages/worker/package.json
+++ b/packages/worker/package.json
@@ -1,7 +1,7 @@
{
"name": "@budibase/deployment",
"email": "hi@budibase.com",
- "version": "0.8.7",
+ "version": "0.8.8",
"description": "Budibase Deployment Server",
"main": "src/index.js",
"repository": {
@@ -34,5 +34,5 @@
"pouchdb-all-dbs": "^1.0.2",
"server-destroy": "^1.0.1"
},
- "gitHead": "768a9d59da12cfefcd7ccaba05f975e878669504"
+ "gitHead": "1b95326b20d1352d36305910259228b96a683dc7"
}
From b63599d0247062dc9f71dc58ec0c8ab985ca0066 Mon Sep 17 00:00:00 2001
From: mike12345567
Date: Fri, 12 Mar 2021 15:32:16 +0000
Subject: [PATCH 08/26] Adding in all the automation step tests, beginning work
on the general automation tests.
---
packages/server/__mocks__/@sendgrid/mail.js | 18 ++++++
packages/server/__mocks__/node-fetch.js | 32 +++++++---
packages/server/package.json | 7 ++-
.../server/src/automations/steps/deleteRow.js | 8 ++-
.../src/automations/steps/outgoingWebhook.js | 1 +
.../server/src/automations/steps/updateRow.js | 19 +++---
.../src/automations/tests/automation.spec.js | 14 +++++
.../src/automations/tests/delay.spec.js | 2 +-
.../src/automations/tests/deleteRow.spec.js | 58 +++++++++++++++++++
.../src/automations/tests/filter.spec.js | 2 +-
.../automations/tests/outgoingWebhook.spec.js | 39 +++++++++++++
.../src/automations/tests/sendEmail.spec.js | 36 ++++++++++++
.../src/automations/tests/updateRow.spec.js | 45 ++++++++++++++
.../server/src/utilities/routing/index.js | 1 +
14 files changed, 262 insertions(+), 20 deletions(-)
create mode 100644 packages/server/__mocks__/@sendgrid/mail.js
create mode 100644 packages/server/src/automations/tests/automation.spec.js
create mode 100644 packages/server/src/automations/tests/deleteRow.spec.js
create mode 100644 packages/server/src/automations/tests/outgoingWebhook.spec.js
create mode 100644 packages/server/src/automations/tests/sendEmail.spec.js
create mode 100644 packages/server/src/automations/tests/updateRow.spec.js
diff --git a/packages/server/__mocks__/@sendgrid/mail.js b/packages/server/__mocks__/@sendgrid/mail.js
new file mode 100644
index 0000000000..e162237ff4
--- /dev/null
+++ b/packages/server/__mocks__/@sendgrid/mail.js
@@ -0,0 +1,18 @@
+class Email {
+ constructor() {
+ this.apiKey = null
+ }
+
+ setApiKey(apiKey) {
+ this.apiKey = apiKey
+ }
+
+ async send(msg) {
+ if (msg.to === "invalid@test.com") {
+ throw "Invalid"
+ }
+ return msg
+ }
+}
+
+module.exports = new Email()
diff --git a/packages/server/__mocks__/node-fetch.js b/packages/server/__mocks__/node-fetch.js
index 1113791ec2..3cc412b1c6 100644
--- a/packages/server/__mocks__/node-fetch.js
+++ b/packages/server/__mocks__/node-fetch.js
@@ -1,17 +1,35 @@
const fetch = jest.requireActual("node-fetch")
module.exports = async (url, opts) => {
- // mocked data based on url
- if (url.includes("api/apps")) {
+ function json(body, status = 200) {
return {
+ status,
json: async () => {
- return {
- app1: {
- url: "/app1",
- },
- }
+ return body
},
}
}
+
+ // mocked data based on url
+ if (url.includes("api/apps")) {
+ return json({
+ app1: {
+ url: "/app1",
+ },
+ })
+ } else if (url.includes("test.com")) {
+ return json({
+ body: opts.body,
+ url,
+ method: opts.method,
+ })
+ } else if (url.includes("invalid.com")) {
+ return json(
+ {
+ invalid: true,
+ },
+ 404
+ )
+ }
return fetch(url, opts)
}
diff --git a/packages/server/package.json b/packages/server/package.json
index 990a69115b..703c1cd2b9 100644
--- a/packages/server/package.json
+++ b/packages/server/package.json
@@ -53,11 +53,14 @@
"src/**/*.js",
"!**/node_modules/**",
"!src/db/views/*.js",
- "!src/api/routes/tests/**/*.js",
"!src/api/controllers/deploy/**/*.js",
"!src/*.js",
"!src/api/controllers/static/**/*",
- "!src/db/dynamoClient.js"
+ "!src/db/dynamoClient.js",
+ "!src/utilities/usageQuota.js",
+ "!src/api/routes/tests/**/*",
+ "!src/tests/**/*",
+ "!src/automations/tests/**/*"
],
"coverageReporters": [
"lcov",
diff --git a/packages/server/src/automations/steps/deleteRow.js b/packages/server/src/automations/steps/deleteRow.js
index 8edee38dee..ea4d60a04e 100644
--- a/packages/server/src/automations/steps/deleteRow.js
+++ b/packages/server/src/automations/steps/deleteRow.js
@@ -51,9 +51,13 @@ module.exports.definition = {
}
module.exports.run = async function({ inputs, appId, apiKey, emitter }) {
- // TODO: better logging of when actions are missed due to missing parameters
if (inputs.id == null || inputs.revision == null) {
- return
+ return {
+ success: false,
+ response: {
+ message: "Invalid inputs",
+ },
+ }
}
let ctx = {
params: {
diff --git a/packages/server/src/automations/steps/outgoingWebhook.js b/packages/server/src/automations/steps/outgoingWebhook.js
index 817ec424b2..ab8c747c58 100644
--- a/packages/server/src/automations/steps/outgoingWebhook.js
+++ b/packages/server/src/automations/steps/outgoingWebhook.js
@@ -87,6 +87,7 @@ module.exports.run = async function({ inputs }) {
success: response.status === 200,
}
} catch (err) {
+ /* istanbul ignore next */
return {
success: false,
response: err,
diff --git a/packages/server/src/automations/steps/updateRow.js b/packages/server/src/automations/steps/updateRow.js
index 3b83f961f5..a545662cf8 100644
--- a/packages/server/src/automations/steps/updateRow.js
+++ b/packages/server/src/automations/steps/updateRow.js
@@ -55,14 +55,14 @@ module.exports.definition = {
module.exports.run = async function({ inputs, appId, emitter }) {
if (inputs.rowId == null || inputs.row == null) {
- return
+ return {
+ success: false,
+ response: {
+ message: "Invalid inputs",
+ },
+ }
}
- inputs.row = await automationUtils.cleanUpRowById(
- appId,
- inputs.rowId,
- inputs.row
- )
// clear any falsy properties so that they aren't updated
for (let propKey of Object.keys(inputs.row)) {
if (!inputs.row[propKey] || inputs.row[propKey] === "") {
@@ -73,7 +73,7 @@ module.exports.run = async function({ inputs, appId, emitter }) {
// have to clean up the row, remove the table from it
const ctx = {
params: {
- id: inputs.rowId,
+ rowId: inputs.rowId,
},
request: {
body: inputs.row,
@@ -83,6 +83,11 @@ module.exports.run = async function({ inputs, appId, emitter }) {
}
try {
+ inputs.row = await automationUtils.cleanUpRowById(
+ appId,
+ inputs.rowId,
+ inputs.row
+ )
await rowController.patch(ctx)
return {
row: ctx.body,
diff --git a/packages/server/src/automations/tests/automation.spec.js b/packages/server/src/automations/tests/automation.spec.js
new file mode 100644
index 0000000000..8f2dcc3475
--- /dev/null
+++ b/packages/server/src/automations/tests/automation.spec.js
@@ -0,0 +1,14 @@
+const automation = require("../index")
+const usageQuota = require("../../utilities/usageQuota")
+
+jest.mock("../../utilities/usageQuota")
+
+describe("Check the primary input functions to automations", () => {
+ it("should be able to init in builder", async () => {
+
+ })
+
+ it("should be able to init in cloud", async () => {
+
+ })
+})
\ No newline at end of file
diff --git a/packages/server/src/automations/tests/delay.spec.js b/packages/server/src/automations/tests/delay.spec.js
index 8e9a725d01..99046e8171 100644
--- a/packages/server/src/automations/tests/delay.spec.js
+++ b/packages/server/src/automations/tests/delay.spec.js
@@ -1,6 +1,6 @@
const setup = require("./utilities")
-describe("test the delay action", () => {
+describe("test the delay logic", () => {
it("should be able to run the delay", async () => {
const time = 100
const before = Date.now()
diff --git a/packages/server/src/automations/tests/deleteRow.spec.js b/packages/server/src/automations/tests/deleteRow.spec.js
new file mode 100644
index 0000000000..0d5ff47ed8
--- /dev/null
+++ b/packages/server/src/automations/tests/deleteRow.spec.js
@@ -0,0 +1,58 @@
+const usageQuota = require("../../utilities/usageQuota")
+const env = require("../../environment")
+const setup = require("./utilities")
+
+jest.mock("../../utilities/usageQuota")
+
+describe("test the delete row action", () => {
+ let table, row, inputs
+ let config = setup.getConfig()
+
+ beforeEach(async () => {
+ await config.init()
+ table = await config.createTable()
+ row = await config.createRow()
+ inputs = {
+ tableId: table._id,
+ id: row._id,
+ revision: row._rev,
+ }
+ })
+
+ afterAll(setup.afterAll)
+
+ it("should be able to run the action", async () => {
+ const res = await setup.runStep(setup.actions.DELETE_ROW.stepId, inputs)
+ expect(res.success).toEqual(true)
+ expect(res.response).toBeDefined()
+ expect(res.row._id).toEqual(row._id)
+ let error
+ try {
+ await config.getRow(table._id, res.id)
+ } catch (err) {
+ error = err
+ }
+ expect(error).toBeDefined()
+ })
+
+ it("check usage quota attempts", async () => {
+ env.CLOUD = true
+ await setup.runStep(setup.actions.DELETE_ROW.stepId, inputs)
+ expect(usageQuota.update).toHaveBeenCalledWith(setup.apiKey, "rows", -1)
+ env.CLOUD = false
+ })
+
+ it("should check invalid inputs return an error", async () => {
+ const res = await setup.runStep(setup.actions.DELETE_ROW.stepId, {})
+ expect(res.success).toEqual(false)
+ })
+
+ it("should return an error when table doesn't exist", async () => {
+ const res = await setup.runStep(setup.actions.DELETE_ROW.stepId, {
+ tableId: "invalid",
+ id: "invalid",
+ revision: "invalid",
+ })
+ expect(res.success).toEqual(false)
+ })
+})
diff --git a/packages/server/src/automations/tests/filter.spec.js b/packages/server/src/automations/tests/filter.spec.js
index 8ddd94f7e4..05361f43ed 100644
--- a/packages/server/src/automations/tests/filter.spec.js
+++ b/packages/server/src/automations/tests/filter.spec.js
@@ -1,7 +1,7 @@
const setup = require("./utilities")
const { LogicConditions } = require("../steps/filter")
-describe("test the delay action", () => {
+describe("test the filter logic", () => {
async function checkFilter(field, condition, value, pass = true) {
let res = await setup.runStep(setup.logic.FILTER.stepId,
{ field, condition, value }
diff --git a/packages/server/src/automations/tests/outgoingWebhook.spec.js b/packages/server/src/automations/tests/outgoingWebhook.spec.js
new file mode 100644
index 0000000000..f1d8d25ba8
--- /dev/null
+++ b/packages/server/src/automations/tests/outgoingWebhook.spec.js
@@ -0,0 +1,39 @@
+const setup = require("./utilities")
+const fetch = require("node-fetch")
+
+jest.mock("node-fetch")
+
+describe("test the outgoing webhook action", () => {
+ let inputs
+ let config = setup.getConfig()
+
+ beforeEach(async () => {
+ await config.init()
+ inputs = {
+ requestMethod: "POST",
+ url: "www.test.com",
+ requestBody: JSON.stringify({
+ a: 1,
+ }),
+ }
+ })
+
+ afterAll(setup.afterAll)
+
+ it("should be able to run the action", async () => {
+ const res = await setup.runStep(setup.actions.OUTGOING_WEBHOOK.stepId, inputs)
+ expect(res.success).toEqual(true)
+ expect(res.response.url).toEqual("http://www.test.com")
+ expect(res.response.method).toEqual("POST")
+ expect(res.response.body.a).toEqual(1)
+ })
+
+ it("should return an error if something goes wrong in fetch", async () => {
+ const res = await setup.runStep(setup.actions.OUTGOING_WEBHOOK.stepId, {
+ requestMethod: "GET",
+ url: "www.invalid.com"
+ })
+ expect(res.success).toEqual(false)
+ })
+
+})
diff --git a/packages/server/src/automations/tests/sendEmail.spec.js b/packages/server/src/automations/tests/sendEmail.spec.js
new file mode 100644
index 0000000000..5f3aabfff8
--- /dev/null
+++ b/packages/server/src/automations/tests/sendEmail.spec.js
@@ -0,0 +1,36 @@
+const setup = require("./utilities")
+
+jest.mock("@sendgrid/mail")
+
+describe("test the send email action", () => {
+ let inputs
+ let config = setup.getConfig()
+
+ beforeEach(async () => {
+ await config.init()
+ inputs = {
+ to: "me@test.com",
+ from: "budibase@test.com",
+ subject: "Testing",
+ text: "Email contents",
+ }
+ })
+
+ afterAll(setup.afterAll)
+
+ it("should be able to run the action", async () => {
+ const res = await setup.runStep(setup.actions.SEND_EMAIL.stepId, inputs)
+ expect(res.success).toEqual(true)
+ // the mocked module throws back the input
+ expect(res.response.to).toEqual("me@test.com")
+ })
+
+ it("should return an error if input an invalid email address", async () => {
+ const res = await setup.runStep(setup.actions.SEND_EMAIL.stepId, {
+ ...inputs,
+ to: "invalid@test.com",
+ })
+ expect(res.success).toEqual(false)
+ })
+
+})
diff --git a/packages/server/src/automations/tests/updateRow.spec.js b/packages/server/src/automations/tests/updateRow.spec.js
new file mode 100644
index 0000000000..79c998459b
--- /dev/null
+++ b/packages/server/src/automations/tests/updateRow.spec.js
@@ -0,0 +1,45 @@
+const env = require("../../environment")
+const setup = require("./utilities")
+
+describe("test the update row action", () => {
+ let table, row, inputs
+ let config = setup.getConfig()
+
+ beforeEach(async () => {
+ await config.init()
+ table = await config.createTable()
+ row = await config.createRow()
+ inputs = {
+ rowId: row._id,
+ row: {
+ ...row,
+ name: "Updated name",
+ // put a falsy option in to be removed
+ description: "",
+ }
+ }
+ })
+
+ afterAll(setup.afterAll)
+
+ it("should be able to run the action", async () => {
+ const res = await setup.runStep(setup.actions.UPDATE_ROW.stepId, inputs)
+ expect(res.success).toEqual(true)
+ const updatedRow = await config.getRow(table._id, res.id)
+ expect(updatedRow.name).toEqual("Updated name")
+ expect(updatedRow.description).not.toEqual("")
+ })
+
+ it("should check invalid inputs return an error", async () => {
+ const res = await setup.runStep(setup.actions.UPDATE_ROW.stepId, {})
+ expect(res.success).toEqual(false)
+ })
+
+ it("should return an error when table doesn't exist", async () => {
+ const res = await setup.runStep(setup.actions.UPDATE_ROW.stepId, {
+ row: { _id: "invalid" },
+ rowId: "invalid",
+ })
+ expect(res.success).toEqual(false)
+ })
+})
diff --git a/packages/server/src/utilities/routing/index.js b/packages/server/src/utilities/routing/index.js
index f4af585dc6..541733dcc4 100644
--- a/packages/server/src/utilities/routing/index.js
+++ b/packages/server/src/utilities/routing/index.js
@@ -12,6 +12,7 @@ exports.getRoutingInfo = async appId => {
return allRouting.rows.map(row => row.value)
} catch (err) {
// check if the view doesn't exist, it should for all new instances
+ /* istanbul ignore next */
if (err != null && err.name === "not_found") {
await createRoutingView(appId)
return exports.getRoutingInfo(appId)
From 8f6538f33a039cac5761a963ec508d882ebf8c2b Mon Sep 17 00:00:00 2001
From: Martin McKeaveney
Date: Sun, 14 Mar 2021 17:57:28 +0000
Subject: [PATCH 09/26] make path windows friendly
---
packages/server/src/api/routes/tests/component.spec.js | 3 ++-
1 file changed, 2 insertions(+), 1 deletion(-)
diff --git a/packages/server/src/api/routes/tests/component.spec.js b/packages/server/src/api/routes/tests/component.spec.js
index 926efc51e3..6cf8d8ae72 100644
--- a/packages/server/src/api/routes/tests/component.spec.js
+++ b/packages/server/src/api/routes/tests/component.spec.js
@@ -21,7 +21,8 @@ describe("/component", () => {
for (let library of libraries) {
let appDirectory = resolve(budibaseAppsDir(), appId, "node_modules", library, "package")
fs.mkdirSync(appDirectory, { recursive: true })
- const file = require.resolve(library).split("dist/index.js")[0] + manifestFile
+
+ const file = require.resolve(library).split(join("dist", "index.js"))[0] + manifestFile
fs.copyFileSync(file, join(appDirectory, manifestFile))
}
}
From 7da92451d64ceda0b213dbeff9c990607d1cb27e Mon Sep 17 00:00:00 2001
From: Martin McKeaveney
Date: Sun, 14 Mar 2021 18:10:38 +0000
Subject: [PATCH 10/26] adding correct path delimiter for windows
---
packages/server/src/api/routes/tests/component.spec.js | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/packages/server/src/api/routes/tests/component.spec.js b/packages/server/src/api/routes/tests/component.spec.js
index 6cf8d8ae72..cabf9f8223 100644
--- a/packages/server/src/api/routes/tests/component.spec.js
+++ b/packages/server/src/api/routes/tests/component.spec.js
@@ -17,7 +17,7 @@ describe("/component", () => {
function mock() {
const manifestFile = "manifest.json"
const appId = config.getAppId()
- const libraries = ["@budibase/standard-components"]
+ const libraries = [join("@budibase", "standard-components")]
for (let library of libraries) {
let appDirectory = resolve(budibaseAppsDir(), appId, "node_modules", library, "package")
fs.mkdirSync(appDirectory, { recursive: true })
From 0f37bc44a7d0f6137694f3994d077656c60cc2df Mon Sep 17 00:00:00 2001
From: Martin McKeaveney
Date: Sun, 14 Mar 2021 18:13:13 +0000
Subject: [PATCH 11/26] v0.8.9
---
lerna.json | 2 +-
packages/builder/package.json | 6 +++---
packages/client/package.json | 6 +++---
packages/server/package.json | 8 ++++----
packages/standard-components/package.json | 2 +-
packages/string-templates/package.json | 2 +-
packages/worker/package.json | 2 +-
7 files changed, 14 insertions(+), 14 deletions(-)
diff --git a/lerna.json b/lerna.json
index 0ac686ea5f..f63871e1c3 100644
--- a/lerna.json
+++ b/lerna.json
@@ -1,5 +1,5 @@
{
- "version": "0.8.8",
+ "version": "0.8.9",
"npmClient": "yarn",
"packages": [
"packages/*"
diff --git a/packages/builder/package.json b/packages/builder/package.json
index 806d0f3d06..32389a985b 100644
--- a/packages/builder/package.json
+++ b/packages/builder/package.json
@@ -1,6 +1,6 @@
{
"name": "@budibase/builder",
- "version": "0.8.8",
+ "version": "0.8.9",
"license": "AGPL-3.0",
"private": true,
"scripts": {
@@ -64,9 +64,9 @@
},
"dependencies": {
"@budibase/bbui": "^1.58.13",
- "@budibase/client": "^0.8.8",
+ "@budibase/client": "^0.8.9",
"@budibase/colorpicker": "1.1.2",
- "@budibase/string-templates": "^0.8.8",
+ "@budibase/string-templates": "^0.8.9",
"@budibase/svelte-ag-grid": "^1.0.4",
"@sentry/browser": "5.19.1",
"@svelteschool/svelte-forms": "0.7.0",
diff --git a/packages/client/package.json b/packages/client/package.json
index 1398471028..192bacfbc4 100644
--- a/packages/client/package.json
+++ b/packages/client/package.json
@@ -1,6 +1,6 @@
{
"name": "@budibase/client",
- "version": "0.8.8",
+ "version": "0.8.9",
"license": "MPL-2.0",
"main": "dist/budibase-client.js",
"module": "dist/budibase-client.js",
@@ -9,13 +9,13 @@
"dev:builder": "rollup -cw"
},
"dependencies": {
- "@budibase/string-templates": "^0.8.8",
+ "@budibase/string-templates": "^0.8.9",
"regexparam": "^1.3.0",
"shortid": "^2.2.15",
"svelte-spa-router": "^3.0.5"
},
"devDependencies": {
- "@budibase/standard-components": "^0.8.8",
+ "@budibase/standard-components": "^0.8.9",
"@rollup/plugin-commonjs": "^16.0.0",
"@rollup/plugin-node-resolve": "^10.0.0",
"fs-extra": "^8.1.0",
diff --git a/packages/server/package.json b/packages/server/package.json
index 91d36c33fc..0a53aa8f55 100644
--- a/packages/server/package.json
+++ b/packages/server/package.json
@@ -1,7 +1,7 @@
{
"name": "@budibase/server",
"email": "hi@budibase.com",
- "version": "0.8.8",
+ "version": "0.8.9",
"description": "Budibase Web Server",
"main": "src/electron.js",
"repository": {
@@ -71,8 +71,8 @@
"author": "Budibase",
"license": "AGPL-3.0-or-later",
"dependencies": {
- "@budibase/client": "^0.8.8",
- "@budibase/string-templates": "^0.8.8",
+ "@budibase/client": "^0.8.9",
+ "@budibase/string-templates": "^0.8.9",
"@elastic/elasticsearch": "7.10.0",
"@koa/router": "8.0.0",
"@sendgrid/mail": "7.1.1",
@@ -126,7 +126,7 @@
"zlib": "1.0.5"
},
"devDependencies": {
- "@budibase/standard-components": "^0.8.8",
+ "@budibase/standard-components": "^0.8.9",
"@jest/test-sequencer": "^24.8.0",
"cross-env": "^7.0.3",
"electron": "10.1.3",
diff --git a/packages/standard-components/package.json b/packages/standard-components/package.json
index 84759cc537..3e937cff44 100644
--- a/packages/standard-components/package.json
+++ b/packages/standard-components/package.json
@@ -35,7 +35,7 @@
"keywords": [
"svelte"
],
- "version": "0.8.8",
+ "version": "0.8.9",
"license": "MIT",
"gitHead": "1b95326b20d1352d36305910259228b96a683dc7",
"dependencies": {
diff --git a/packages/string-templates/package.json b/packages/string-templates/package.json
index 5cb026f48d..6e0b573656 100644
--- a/packages/string-templates/package.json
+++ b/packages/string-templates/package.json
@@ -1,6 +1,6 @@
{
"name": "@budibase/string-templates",
- "version": "0.8.8",
+ "version": "0.8.9",
"description": "Handlebars wrapper for Budibase templating.",
"main": "src/index.js",
"module": "src/index.js",
diff --git a/packages/worker/package.json b/packages/worker/package.json
index 189d0df4a9..1670fd729e 100644
--- a/packages/worker/package.json
+++ b/packages/worker/package.json
@@ -1,7 +1,7 @@
{
"name": "@budibase/deployment",
"email": "hi@budibase.com",
- "version": "0.8.8",
+ "version": "0.8.9",
"description": "Budibase Deployment Server",
"main": "src/index.js",
"repository": {
From 8296eccd68f83a3614b5888c260428fe10f2a922 Mon Sep 17 00:00:00 2001
From: Maurits Lourens
Date: Mon, 15 Mar 2021 08:50:51 +0100
Subject: [PATCH 12/26] 1240 - restore notification blocknotifications method,
since it was called in the datasource
---
packages/client/src/store/notification.js | 10 ++++++++++
1 file changed, 10 insertions(+)
diff --git a/packages/client/src/store/notification.js b/packages/client/src/store/notification.js
index d69a39080e..3efd40a882 100644
--- a/packages/client/src/store/notification.js
+++ b/packages/client/src/store/notification.js
@@ -13,8 +13,17 @@ const createNotificationStore = () => {
_notifications.set([])
}
})
+ let block = false
+
+ const blockNotifications = (timeout = 1000) => {
+ block = true
+ setTimeout(() => (block = false), timeout)
+ }
const send = (message, type = "default") => {
+ if (block) {
+ return
+ }
let _id = id()
_notifications.update(state => {
return [...state, { id: _id, type, message }]
@@ -36,6 +45,7 @@ const createNotificationStore = () => {
warning: msg => send(msg, "warning"),
info: msg => send(msg, "info"),
success: msg => send(msg, "success"),
+ blockNotifications,
}
}
From 973cbb5a75d241044c6c215b89bfba13ee105367 Mon Sep 17 00:00:00 2001
From: Andrew Kingston
Date: Mon, 15 Mar 2021 12:10:21 +0000
Subject: [PATCH 13/26] Remove electron specific attachment uploads inside the
builder
---
packages/builder/src/builderStore/api.js | 3 +-
.../src/components/common/Dropzone.svelte | 17 +++-----
.../src/api/controllers/static/index.js | 43 -------------------
packages/server/src/api/routes/static.js | 6 +--
4 files changed, 8 insertions(+), 61 deletions(-)
diff --git a/packages/builder/src/builderStore/api.js b/packages/builder/src/builderStore/api.js
index 46304e1486..0202c5e8ab 100644
--- a/packages/builder/src/builderStore/api.js
+++ b/packages/builder/src/builderStore/api.js
@@ -7,9 +7,10 @@ const apiCall = method => async (
headers = { "Content-Type": "application/json" }
) => {
headers["x-budibase-app-id"] = svelteGet(store).appId
+ const json = headers["Content-Type"] === "application/json"
return await fetch(url, {
method: method,
- body: body && JSON.stringify(body),
+ body: json ? JSON.stringify(body) : body,
headers,
})
}
diff --git a/packages/builder/src/components/common/Dropzone.svelte b/packages/builder/src/components/common/Dropzone.svelte
index be93829084..0b98f2b256 100644
--- a/packages/builder/src/components/common/Dropzone.svelte
+++ b/packages/builder/src/components/common/Dropzone.svelte
@@ -15,18 +15,11 @@
}
async function processFiles(fileList) {
- const fileArray = Array.from(fileList)
-
- const filesToProcess = fileArray.map(({ name, path, size, type }) => ({
- name,
- path,
- size,
- type,
- }))
-
- const response = await api.post(`/api/attachments/process`, {
- files: filesToProcess,
- })
+ let data = new FormData()
+ for (let i = 0; i < fileList.length; i++) {
+ data.append("file", fileList[i])
+ }
+ const response = await api.post(`/api/attachments/process`, data, {})
return await response.json()
}
diff --git a/packages/server/src/api/controllers/static/index.js b/packages/server/src/api/controllers/static/index.js
index bf01314795..bc9384b892 100644
--- a/packages/server/src/api/controllers/static/index.js
+++ b/packages/server/src/api/controllers/static/index.js
@@ -74,29 +74,6 @@ exports.uploadFile = async function(ctx) {
"attachments"
)
- if (env.CLOUD) {
- // remote upload
- const s3 = new AWS.S3({
- params: {
- Bucket: "prod-budi-app-assets",
- },
- })
-
- const uploads = files.map(file => {
- const fileExtension = [...file.name.split(".")].pop()
- const processedFileName = `${uuid.v4()}.${fileExtension}`
-
- return prepareUpload({
- file,
- s3Key: `assets/${ctx.user.appId}/attachments/${processedFileName}`,
- s3,
- })
- })
-
- ctx.body = await Promise.all(uploads)
- return
- }
-
ctx.body = await processLocalFileUploads({
files,
outputPath: attachmentsPath,
@@ -152,26 +129,6 @@ async function processLocalFileUploads({ files, outputPath, appId }) {
return processedFiles
}
-exports.performLocalFileProcessing = async function(ctx) {
- const { files } = ctx.request.body
-
- const processedFileOutputPath = resolve(
- budibaseAppsDir(),
- ctx.user.appId,
- "attachments"
- )
-
- try {
- ctx.body = await processLocalFileUploads({
- files,
- outputPath: processedFileOutputPath,
- appId: ctx.user.appId,
- })
- } catch (err) {
- ctx.throw(500, err)
- }
-}
-
exports.serveApp = async function(ctx) {
let appId = ctx.params.appId
if (env.SELF_HOSTED) {
diff --git a/packages/server/src/api/routes/static.js b/packages/server/src/api/routes/static.js
index c812c4d3b1..30701d578b 100644
--- a/packages/server/src/api/routes/static.js
+++ b/packages/server/src/api/routes/static.js
@@ -29,11 +29,7 @@ if (env.SELF_HOSTED) {
}
router
- .post(
- "/api/attachments/process",
- authorized(BUILDER),
- controller.performLocalFileProcessing
- )
+ .post("/api/attachments/process", authorized(BUILDER), controller.uploadFile)
.post("/api/attachments/upload", usage, controller.uploadFile)
.get("/componentlibrary", controller.serveComponentLibrary)
.get("/assets/:file*", controller.serveAppAsset)
From 5bbb2b388d429f7622a287d128663391e9c6e1f0 Mon Sep 17 00:00:00 2001
From: Martin McKeaveney
Date: Mon, 15 Mar 2021 12:12:19 +0000
Subject: [PATCH 14/26] Update budibase_ci.yml
---
.github/workflows/budibase_ci.yml | 2 ++
1 file changed, 2 insertions(+)
diff --git a/.github/workflows/budibase_ci.yml b/.github/workflows/budibase_ci.yml
index 0380f92253..96db14b77a 100644
--- a/.github/workflows/budibase_ci.yml
+++ b/.github/workflows/budibase_ci.yml
@@ -7,10 +7,12 @@ on:
branches:
- master
- develop
+ - next
pull_request:
branches:
- master
- develop
+ - next
jobs:
build:
From ece948e4ef876133f413cec633a43d44abfe4d72 Mon Sep 17 00:00:00 2001
From: mike12345567
Date: Mon, 15 Mar 2021 14:11:13 +0000
Subject: [PATCH 15/26] Finishing off automation test cases, above 90% coverage
for automations codebase.
---
packages/server/package.json | 2 +-
packages/server/src/app.js | 2 +-
packages/server/src/automations/actions.js | 5 +-
packages/server/src/automations/index.js | 33 ++--
.../src/automations/tests/automation.spec.js | 143 +++++++++++++++++-
packages/server/src/automations/triggers.js | 5 +
packages/server/src/tests/utilities/index.js | 11 ++
7 files changed, 177 insertions(+), 24 deletions(-)
create mode 100644 packages/server/src/tests/utilities/index.js
diff --git a/packages/server/package.json b/packages/server/package.json
index 703c1cd2b9..a025d274f1 100644
--- a/packages/server/package.json
+++ b/packages/server/package.json
@@ -33,7 +33,7 @@
},
"scripts": {
"test": "jest --testPathIgnorePatterns=routes && npm run test:integration",
- "test:integration": "jest --runInBand --coverage",
+ "test:integration": "jest --coverage --detectOpenHandles",
"test:watch": "jest --watch",
"run:docker": "node src/index",
"dev:builder": "cross-env PORT=4001 nodemon src/index.js",
diff --git a/packages/server/src/app.js b/packages/server/src/app.js
index 15e996cfe6..6167bdecdf 100644
--- a/packages/server/src/app.js
+++ b/packages/server/src/app.js
@@ -66,7 +66,7 @@ module.exports = server.listen(env.PORT || 0, async () => {
console.log(`Budibase running on ${JSON.stringify(server.address())}`)
env._set("PORT", server.address().port)
eventEmitter.emitPort(env.PORT)
- automations.init()
+ await automations.init()
// only init the self hosting DB info in the Pouch, not needed in self hosting prod
if (!env.CLOUD) {
await selfhost.init()
diff --git a/packages/server/src/automations/actions.js b/packages/server/src/automations/actions.js
index 37126c7ed4..ee57f5a109 100644
--- a/packages/server/src/automations/actions.js
+++ b/packages/server/src/automations/actions.js
@@ -37,12 +37,12 @@ let AUTOMATION_BUCKET = env.AUTOMATION_BUCKET
let AUTOMATION_DIRECTORY = env.AUTOMATION_DIRECTORY
let MANIFEST = null
-/* instanbul ignore next */
+/* istanbul ignore next */
function buildBundleName(pkgName, version) {
return `${pkgName}@${version}.min.js`
}
-/* instanbul ignore next */
+/* istanbul ignore next */
async function downloadPackage(name, version, bundleName) {
await download(
`${AUTOMATION_BUCKET}/${name}/${version}/${bundleName}`,
@@ -51,6 +51,7 @@ async function downloadPackage(name, version, bundleName) {
return require(join(AUTOMATION_DIRECTORY, bundleName))
}
+/* istanbul ignore next */
module.exports.getAction = async function(actionName) {
if (BUILTIN_ACTIONS[actionName] != null) {
return BUILTIN_ACTIONS[actionName]
diff --git a/packages/server/src/automations/index.js b/packages/server/src/automations/index.js
index a983495fb5..9aba399133 100644
--- a/packages/server/src/automations/index.js
+++ b/packages/server/src/automations/index.js
@@ -30,23 +30,22 @@ async function updateQuota(automation) {
/**
* This module is built purely to kick off the worker farm and manage the inputs/outputs
*/
-module.exports.init = function() {
- actions.init().then(() => {
- triggers.automationQueue.process(async job => {
- try {
- if (env.CLOUD && job.data.automation && !env.SELF_HOSTED) {
- job.data.automation.apiKey = await updateQuota(job.data.automation)
- }
- if (env.BUDIBASE_ENVIRONMENT === "PRODUCTION") {
- await runWorker(job)
- } else {
- await singleThread(job)
- }
- } catch (err) {
- console.error(
- `${job.data.automation.appId} automation ${job.data.automation._id} was unable to run - ${err}`
- )
+module.exports.init = async function() {
+ await actions.init()
+ triggers.automationQueue.process(async job => {
+ try {
+ if (env.CLOUD && job.data.automation && !env.SELF_HOSTED) {
+ job.data.automation.apiKey = await updateQuota(job.data.automation)
}
- })
+ if (env.BUDIBASE_ENVIRONMENT === "PRODUCTION") {
+ await runWorker(job)
+ } else {
+ await singleThread(job)
+ }
+ } catch (err) {
+ console.error(
+ `${job.data.automation.appId} automation ${job.data.automation._id} was unable to run - ${err}`
+ )
+ }
})
}
diff --git a/packages/server/src/automations/tests/automation.spec.js b/packages/server/src/automations/tests/automation.spec.js
index 8f2dcc3475..f2463b2306 100644
--- a/packages/server/src/automations/tests/automation.spec.js
+++ b/packages/server/src/automations/tests/automation.spec.js
@@ -1,14 +1,151 @@
const automation = require("../index")
const usageQuota = require("../../utilities/usageQuota")
+const thread = require("../thread")
+const triggers = require("../triggers")
+const { basicAutomation, basicTable } = require("../../tests/utilities/structures")
+const TestConfig = require("../../tests/utilities/TestConfiguration")
+const { wait } = require("../../utilities")
+const env = require("../../environment")
+const { makePartial } = require("../../tests/utilities")
+const { cleanInputValues } = require("../automationUtils")
+
+let workerJob
jest.mock("../../utilities/usageQuota")
+usageQuota.getAPIKey.mockReturnValue({ apiKey: "test" })
+jest.mock("../thread")
+jest.spyOn(global.console, "error")
+jest.mock("worker-farm", () => {
+ return () => {
+ const value = jest
+ .fn()
+ .mockReturnValueOnce(undefined)
+ .mockReturnValueOnce("Error")
+ return (input, callback) => {
+ workerJob = input
+ if (callback) {
+ callback(value())
+ }
+ }
+ }
+})
+
+describe("Run through some parts of the automations system", () => {
+ let config = new TestConfig(false)
+
+ beforeEach(async () => {
+ await automation.init()
+ await config.init()
+ })
+
-describe("Check the primary input functions to automations", () => {
it("should be able to init in builder", async () => {
-
+ await triggers.externalTrigger(basicAutomation(), { a: 1 })
+ await wait(100)
+ expect(workerJob).toBeUndefined()
+ expect(thread).toHaveBeenCalled()
})
it("should be able to init in cloud", async () => {
-
+ env.CLOUD = true
+ env.BUDIBASE_ENVIRONMENT = "PRODUCTION"
+ await triggers.externalTrigger(basicAutomation(), { a: 1 })
+ await wait(100)
+ // haven't added a mock implementation so getAPIKey of usageQuota just returns undefined
+ expect(usageQuota.update).toHaveBeenCalledWith("test", "automationRuns", 1)
+ expect(workerJob).toBeDefined()
+ env.BUDIBASE_ENVIRONMENT = "JEST"
+ env.CLOUD = false
+ })
+
+ it("try error scenario", async () => {
+ env.CLOUD = true
+ env.BUDIBASE_ENVIRONMENT = "PRODUCTION"
+ // the second call will throw an error
+ await triggers.externalTrigger(basicAutomation(), { a: 1 })
+ await wait(100)
+ expect(console.error).toHaveBeenCalled()
+ env.BUDIBASE_ENVIRONMENT = "JEST"
+ env.CLOUD = false
+ })
+
+ it("should be able to check triggering row filling", async () => {
+ const automation = basicAutomation()
+ let table = basicTable()
+ table.schema.boolean = {
+ type: "boolean",
+ constraints: {
+ type: "boolean",
+ },
+ }
+ table.schema.number = {
+ type: "number",
+ constraints: {
+ type: "number",
+ },
+ }
+ table.schema.datetime = {
+ type: "datetime",
+ constraints: {
+ type: "datetime",
+ },
+ }
+ table = await config.createTable(table)
+ automation.definition.trigger.inputs.tableId = table._id
+ const params = await triggers.fillRowOutput(automation, { appId: config.getAppId() })
+ expect(params.row).toBeDefined()
+ const date = new Date(params.row.datetime)
+ expect(typeof params.row.name).toBe("string")
+ expect(typeof params.row.boolean).toBe("boolean")
+ expect(typeof params.row.number).toBe("number")
+ expect(date.getFullYear()).toBe(1970)
+ })
+
+ it("should check coercion", async () => {
+ const table = await config.createTable()
+ const automation = basicAutomation()
+ automation.definition.trigger.inputs.tableId = table._id
+ automation.definition.trigger.stepId = "APP"
+ automation.definition.trigger.inputs.fields = { a: "number" }
+ await triggers.externalTrigger(automation, {
+ appId: config.getAppId(),
+ fields: {
+ a: "1"
+ }
+ })
+ await wait(100)
+ expect(thread).toHaveBeenCalledWith(makePartial({
+ data: {
+ event: {
+ fields: {
+ a: 1
+ }
+ }
+ }
+ }))
+ })
+
+ it("should be able to clean inputs with the utilities", () => {
+ // can't clean without a schema
+ let output = cleanInputValues({a: "1"})
+ expect(output.a).toBe("1")
+ output = cleanInputValues({a: "1", b: "true", c: "false", d: 1, e: "help"}, {
+ properties: {
+ a: {
+ type: "number",
+ },
+ b: {
+ type: "boolean",
+ },
+ c: {
+ type: "boolean",
+ }
+ }
+ })
+ expect(output.a).toBe(1)
+ expect(output.b).toBe(true)
+ expect(output.c).toBe(false)
+ expect(output.d).toBe(1)
+ expect(output.e).toBe("help")
})
})
\ No newline at end of file
diff --git a/packages/server/src/automations/triggers.js b/packages/server/src/automations/triggers.js
index 73ce9edeed..7e50e5ee74 100644
--- a/packages/server/src/automations/triggers.js
+++ b/packages/server/src/automations/triggers.js
@@ -225,6 +225,7 @@ async function queueRelevantRowAutomations(event, eventType) {
}
emitter.on("row:save", async function(event) {
+ /* istanbul ignore next */
if (!event || !event.row || !event.row.tableId) {
return
}
@@ -232,6 +233,7 @@ emitter.on("row:save", async function(event) {
})
emitter.on("row:update", async function(event) {
+ /* istanbul ignore next */
if (!event || !event.row || !event.row.tableId) {
return
}
@@ -239,6 +241,7 @@ emitter.on("row:update", async function(event) {
})
emitter.on("row:delete", async function(event) {
+ /* istanbul ignore next */
if (!event || !event.row || !event.row.tableId) {
return
}
@@ -272,6 +275,7 @@ async function fillRowOutput(automation, params) {
}
params.row = row
} catch (err) {
+ /* istanbul ignore next */
throw "Failed to find table for trigger"
}
return params
@@ -297,6 +301,7 @@ module.exports.externalTrigger = async function(automation, params) {
automationQueue.add({ automation, event: params })
}
+module.exports.fillRowOutput = fillRowOutput
module.exports.automationQueue = automationQueue
module.exports.BUILTIN_DEFINITIONS = BUILTIN_DEFINITIONS
diff --git a/packages/server/src/tests/utilities/index.js b/packages/server/src/tests/utilities/index.js
new file mode 100644
index 0000000000..aa8039ce2f
--- /dev/null
+++ b/packages/server/src/tests/utilities/index.js
@@ -0,0 +1,11 @@
+exports.makePartial = obj => {
+ const newObj = {}
+ for (let key of Object.keys(obj)) {
+ if (typeof obj[key] === "object") {
+ newObj[key] = exports.makePartial(obj[key])
+ } else {
+ newObj[key] = obj[key]
+ }
+ }
+ return expect.objectContaining(newObj)
+}
From e8c000dd51442fa560c0194be4d8574bc4305987 Mon Sep 17 00:00:00 2001
From: mike12345567
Date: Mon, 15 Mar 2021 16:36:38 +0000
Subject: [PATCH 16/26] Adding more test cases for the controllers, tables and
views weren't as well covered as required.
---
.../server/src/api/controllers/table/index.js | 4 +-
.../server/src/api/controllers/table/utils.js | 8 +-
.../server/src/api/controllers/view/index.js | 21 +-
.../server/src/api/routes/tests/misc.spec.js | 56 ++++--
.../server/src/api/routes/tests/row.spec.js | 2 +-
.../server/src/api/routes/tests/table.spec.js | 185 +++++++++++-------
.../routes/tests/utilities/TestFunctions.js | 5 +
.../server/src/api/routes/tests/view.spec.js | 53 ++++-
.../src/automations/tests/automation.spec.js | 5 +-
packages/server/src/db/client.js | 1 +
.../src/tests/utilities/TestConfiguration.js | 8 +
11 files changed, 241 insertions(+), 107 deletions(-)
diff --git a/packages/server/src/api/controllers/table/index.js b/packages/server/src/api/controllers/table/index.js
index 93f4ec9f94..4cb1d16146 100644
--- a/packages/server/src/api/controllers/table/index.js
+++ b/packages/server/src/api/controllers/table/index.js
@@ -65,12 +65,14 @@ exports.save = async function(ctx) {
// Don't rename if the name is the same
let { _rename } = tableToSave
+ /* istanbul ignore next */
if (_rename && _rename.old === _rename.updated) {
_rename = null
delete tableToSave._rename
}
// rename row fields when table column is renamed
+ /* istanbul ignore next */
if (_rename && tableToSave.schema[_rename.updated].type === FieldTypes.LINK) {
ctx.throw(400, "Cannot rename a linked column.")
} else if (_rename && tableToSave.primaryDisplay === _rename.old) {
@@ -159,7 +161,7 @@ exports.destroy = async function(ctx) {
ctx.eventEmitter &&
ctx.eventEmitter.emitTable(`table:delete`, appId, tableToDelete)
ctx.status = 200
- ctx.message = `Table ${ctx.params.tableId} deleted.`
+ ctx.body = { message: `Table ${ctx.params.tableId} deleted.` }
}
exports.validateCSVSchema = async function(ctx) {
diff --git a/packages/server/src/api/controllers/table/utils.js b/packages/server/src/api/controllers/table/utils.js
index 73e6e60551..66b3651ccf 100644
--- a/packages/server/src/api/controllers/table/utils.js
+++ b/packages/server/src/api/controllers/table/utils.js
@@ -90,7 +90,8 @@ exports.handleDataImport = async (user, table, dataImport) => {
return table
}
-exports.handleSearchIndexes = async (db, table) => {
+exports.handleSearchIndexes = async (appId, table) => {
+ const db = new CouchDB(appId)
// create relevant search indexes
if (table.indexes && table.indexes.length > 0) {
const currentIndexes = await db.getIndexes()
@@ -150,6 +151,9 @@ class TableSaveFunctions {
constructor({ db, ctx, oldTable, dataImport }) {
this.db = db
this.ctx = ctx
+ if (this.ctx && this.ctx.user) {
+ this.appId = this.ctx.user.appId
+ }
this.oldTable = oldTable
this.dataImport = dataImport
// any rows that need updated
@@ -178,7 +182,7 @@ class TableSaveFunctions {
// after saving
async after(table) {
- table = await exports.handleSearchIndexes(this.db, table)
+ table = await exports.handleSearchIndexes(this.appId, table)
table = await exports.handleDataImport(
this.ctx.user,
table,
diff --git a/packages/server/src/api/controllers/view/index.js b/packages/server/src/api/controllers/view/index.js
index 05dc299754..f482f3f2a6 100644
--- a/packages/server/src/api/controllers/view/index.js
+++ b/packages/server/src/api/controllers/view/index.js
@@ -29,11 +29,13 @@ const controller = {
save: async ctx => {
const db = new CouchDB(ctx.user.appId)
const { originalName, ...viewToSave } = ctx.request.body
-
const designDoc = await db.get("_design/database")
-
const view = viewTemplate(viewToSave)
+ if (!viewToSave.name) {
+ ctx.throw(400, "Cannot create view without a name")
+ }
+
designDoc.views = {
...designDoc.views,
[viewToSave.name]: view,
@@ -60,17 +62,16 @@ const controller = {
await db.put(table)
- ctx.body = table.views[viewToSave.name]
- ctx.message = `View ${viewToSave.name} saved successfully.`
+ ctx.body = {
+ ...table.views[viewToSave.name],
+ name: viewToSave.name,
+ }
},
destroy: async ctx => {
const db = new CouchDB(ctx.user.appId)
const designDoc = await db.get("_design/database")
-
const viewName = decodeURI(ctx.params.viewName)
-
const view = designDoc.views[viewName]
-
delete designDoc.views[viewName]
await db.put(designDoc)
@@ -80,16 +81,17 @@ const controller = {
await db.put(table)
ctx.body = view
- ctx.message = `View ${ctx.params.viewName} saved successfully.`
},
exportView: async ctx => {
const db = new CouchDB(ctx.user.appId)
const designDoc = await db.get("_design/database")
-
const viewName = decodeURI(ctx.query.view)
const view = designDoc.views[viewName]
const format = ctx.query.format
+ if (!format) {
+ ctx.throw(400, "Format must be specified, either csv or json")
+ }
if (view) {
ctx.params.viewName = viewName
@@ -102,6 +104,7 @@ const controller = {
}
} else {
// table all_ view
+ /* istanbul ignore next */
ctx.params.viewName = viewName
}
diff --git a/packages/server/src/api/routes/tests/misc.spec.js b/packages/server/src/api/routes/tests/misc.spec.js
index 3d3b6047e2..2957e42d90 100644
--- a/packages/server/src/api/routes/tests/misc.spec.js
+++ b/packages/server/src/api/routes/tests/misc.spec.js
@@ -1,6 +1,7 @@
const setup = require("./utilities")
+const tableUtils = require("../../controllers/table/utils")
-describe("/analytics", () => {
+describe("run misc tests", () => {
let request = setup.getRequest()
let config = setup.getConfig()
@@ -10,29 +11,44 @@ describe("/analytics", () => {
await config.init()
})
- describe("isEnabled", () => {
- it("check if analytics enabled", async () => {
- const res = await request
- .get(`/api/analytics`)
- .set(config.defaultHeaders())
- .expect("Content-Type", /json/)
- .expect(200)
- expect(typeof res.body.enabled).toEqual("boolean")
+ describe("/analytics", () => {
+ it("check if analytics enabled", async () => {
+ const res = await request
+ .get(`/api/analytics`)
+ .set(config.defaultHeaders())
+ .expect("Content-Type", /json/)
+ .expect(200)
+ expect(typeof res.body.enabled).toEqual("boolean")
+ })
+ })
+
+ describe("/health", () => {
+ it("should confirm healthy", async () => {
+ await request.get("/health").expect(200)
})
})
-})
-describe("/health", () => {
- it("should confirm healthy", async () => {
- let config = setup.getConfig()
- await config.getRequest().get("/health").expect(200)
+ describe("/version", () => {
+ it("should confirm version", async () => {
+ const res = await request.get("/version").expect(200)
+ expect(res.text.split(".").length).toEqual(3)
+ })
})
-})
-describe("/version", () => {
- it("should confirm version", async () => {
- const config = setup.getConfig()
- const res = await config.getRequest().get("/version").expect(200)
- expect(res.text.split(".").length).toEqual(3)
+ describe("test table utilities", () => {
+ it("should be able to import a CSV", async () => {
+ const table = await config.createTable()
+ const dataImport = {
+ csvString: "a,b,c,d\n1,2,3,4"
+ }
+ await tableUtils.handleDataImport({
+ appId: config.getAppId(),
+ userId: "test",
+ }, table, dataImport)
+ const rows = await config.getRows()
+ expect(rows[0].a).toEqual("1")
+ expect(rows[0].b).toEqual("2")
+ expect(rows[0].c).toEqual("3")
+ })
})
})
\ No newline at end of file
diff --git a/packages/server/src/api/routes/tests/row.spec.js b/packages/server/src/api/routes/tests/row.spec.js
index f597db0cc0..652a17366d 100644
--- a/packages/server/src/api/routes/tests/row.spec.js
+++ b/packages/server/src/api/routes/tests/row.spec.js
@@ -348,7 +348,7 @@ describe("/rows", () => {
const view = await config.createView()
const row = await config.createRow()
const res = await request
- .get(`/api/views/${view._id}`)
+ .get(`/api/views/${view.name}`)
.set(config.defaultHeaders())
.expect('Content-Type', /json/)
.expect(200)
diff --git a/packages/server/src/api/routes/tests/table.spec.js b/packages/server/src/api/routes/tests/table.spec.js
index 1a2df624f1..df28eed0c2 100644
--- a/packages/server/src/api/routes/tests/table.spec.js
+++ b/packages/server/src/api/routes/tests/table.spec.js
@@ -1,5 +1,6 @@
-const { checkBuilderEndpoint } = require("./utilities/TestFunctions")
+const { checkBuilderEndpoint, getDB } = require("./utilities/TestFunctions")
const setup = require("./utilities")
+const { basicTable } = setup.structures
describe("/tables", () => {
let request = setup.getRequest()
@@ -12,25 +13,22 @@ describe("/tables", () => {
})
describe("create", () => {
- it("returns a success message when the table is successfully created", done => {
- request
+ it("returns a success message when the table is successfully created", async () => {
+ const res = await request
.post(`/api/tables`)
- .send({
+ .send({
name: "TestTable",
key: "name",
schema: {
- name: { type: "string" }
+ name: {type: "string"}
}
})
.set(config.defaultHeaders())
.expect('Content-Type', /json/)
.expect(200)
- .end(async (err, res) => {
- expect(res.res.statusMessage).toEqual("Table TestTable saved successfully.")
- expect(res.body.name).toEqual("TestTable")
- done()
- })
- })
+ expect(res.res.statusMessage).toEqual("Table TestTable saved successfully.")
+ expect(res.body.name).toEqual("TestTable")
+ })
it("renames all the row fields for a table when a schema key is renamed", async () => {
const testTable = await config.createTable()
@@ -46,7 +44,7 @@ describe("/tables", () => {
const updatedTable = await request
.post(`/api/tables`)
- .send({
+ .send({
_id: testTable._id,
_rev: testTable._rev,
name: "TestTable",
@@ -56,41 +54,40 @@ describe("/tables", () => {
updated: "updatedName"
},
schema: {
- updatedName: { type: "string" }
+ updatedName: {type: "string"}
}
})
.set(config.defaultHeaders())
.expect('Content-Type', /json/)
.expect(200)
+ expect(updatedTable.res.statusMessage).toEqual("Table TestTable saved successfully.")
+ expect(updatedTable.body.name).toEqual("TestTable")
- expect(updatedTable.res.statusMessage).toEqual("Table TestTable saved successfully.")
- expect(updatedTable.body.name).toEqual("TestTable")
+ const res = await request
+ .get(`/api/${testTable._id}/rows/${testRow.body._id}`)
+ .set(config.defaultHeaders())
+ .expect('Content-Type', /json/)
+ .expect(200)
- const res = await request
- .get(`/api/${testTable._id}/rows/${testRow.body._id}`)
- .set(config.defaultHeaders())
- .expect('Content-Type', /json/)
- .expect(200)
+ expect(res.body.updatedName).toEqual("test")
+ expect(res.body.name).toBeUndefined()
+ })
- expect(res.body.updatedName).toEqual("test")
- expect(res.body.name).toBeUndefined()
- })
-
- it("should apply authorization to endpoint", async () => {
- await checkBuilderEndpoint({
- config,
- method: "POST",
- url: `/api/tables`,
- body: {
- name: "TestTable",
- key: "name",
- schema: {
- name: { type: "string" }
- }
+ it("should apply authorization to endpoint", async () => {
+ await checkBuilderEndpoint({
+ config,
+ method: "POST",
+ url: `/api/tables`,
+ body: {
+ name: "TestTable",
+ key: "name",
+ schema: {
+ name: {type: "string"}
}
- })
+ }
})
})
+ })
describe("fetch", () => {
let testTable
@@ -103,28 +100,91 @@ describe("/tables", () => {
delete testTable._rev
})
- it("returns all the tables for that instance in the response body", done => {
- request
+ it("returns all the tables for that instance in the response body", async () => {
+ const res = await request
.get(`/api/tables`)
.set(config.defaultHeaders())
.expect('Content-Type', /json/)
.expect(200)
- .end(async (_, res) => {
- const fetchedTable = res.body[0]
- expect(fetchedTable.name).toEqual(testTable.name)
- expect(fetchedTable.type).toEqual("table")
- done()
- })
+ const fetchedTable = res.body[0]
+ expect(fetchedTable.name).toEqual(testTable.name)
+ expect(fetchedTable.type).toEqual("table")
})
it("should apply authorization to endpoint", async () => {
- await checkBuilderEndpoint({
- config,
- method: "GET",
- url: `/api/tables`,
- })
+ await checkBuilderEndpoint({
+ config,
+ method: "GET",
+ url: `/api/tables`,
})
})
+ })
+
+ describe("indexing", () => {
+ it("should be able to create a table with indexes", async () => {
+ const db = getDB(config)
+ const indexCount = (await db.getIndexes()).total_rows
+ const table = basicTable()
+ table.indexes = ["name"]
+ const res = await request
+ .post(`/api/tables`)
+ .send(table)
+ .set(config.defaultHeaders())
+ .expect('Content-Type', /json/)
+ .expect(200)
+ expect(res.body._id).toBeDefined()
+ expect(res.body._rev).toBeDefined()
+ expect((await db.getIndexes()).total_rows).toEqual(indexCount + 1)
+ // update index to see what happens
+ table.indexes = ["name", "description"]
+ await request
+ .post(`/api/tables`)
+ .send({
+ ...table,
+ _id: res.body._id,
+ _rev: res.body._rev,
+ })
+ .set(config.defaultHeaders())
+ .expect('Content-Type', /json/)
+ .expect(200)
+ // shouldn't have created a new index
+ expect((await db.getIndexes()).total_rows).toEqual(indexCount + 1)
+ })
+ })
+
+ describe("updating user table", () => {
+ it("should add roleId and email field when adjusting user table schema", async () => {
+ const res = await request
+ .post(`/api/tables`)
+ .send({
+ ...basicTable(),
+ _id: "ta_users",
+ })
+ .set(config.defaultHeaders())
+ .expect('Content-Type', /json/)
+ .expect(200)
+ expect(res.body.schema.email).toBeDefined()
+ expect(res.body.schema.roleId).toBeDefined()
+ })
+ })
+
+ describe("validate csv", () => {
+ it("should be able to validate a CSV layout", async () => {
+ const res = await request
+ .post(`/api/tables/csv/validate`)
+ .send({
+ csvString: "a,b,c,d\n1,2,3,4"
+ })
+ .set(config.defaultHeaders())
+ .expect('Content-Type', /json/)
+ .expect(200)
+ expect(res.body.schema).toBeDefined()
+ expect(res.body.schema.a).toEqual({
+ type: "string",
+ success: true,
+ })
+ })
+ })
describe("destroy", () => {
let testTable
@@ -137,19 +197,16 @@ describe("/tables", () => {
delete testTable._rev
})
- it("returns a success response when a table is deleted.", async done => {
- request
+ it("returns a success response when a table is deleted.", async () => {
+ const res = await request
.delete(`/api/tables/${testTable._id}/${testTable._rev}`)
.set(config.defaultHeaders())
.expect('Content-Type', /json/)
.expect(200)
- .end(async (_, res) => {
- expect(res.res.statusMessage).toEqual(`Table ${testTable._id} deleted.`)
- done()
- })
- })
+ expect(res.body.message).toEqual(`Table ${testTable._id} deleted.`)
+ })
- it("deletes linked references to the table after deletion", async done => {
+ it("deletes linked references to the table after deletion", async () => {
const linkedTable = await config.createTable({
name: "LinkedTable",
type: "table",
@@ -171,18 +228,15 @@ describe("/tables", () => {
},
})
- request
+ const res = await request
.delete(`/api/tables/${testTable._id}/${testTable._rev}`)
.set(config.defaultHeaders())
.expect('Content-Type', /json/)
.expect(200)
- .end(async (_, res) => {
- expect(res.res.statusMessage).toEqual(`Table ${testTable._id} deleted.`)
- const dependentTable = await config.getTable(linkedTable._id)
- expect(dependentTable.schema.TestTable).not.toBeDefined()
- done()
- })
- })
+ expect(res.body.message).toEqual(`Table ${testTable._id} deleted.`)
+ const dependentTable = await config.getTable(linkedTable._id)
+ expect(dependentTable.schema.TestTable).not.toBeDefined()
+ })
it("should apply authorization to endpoint", async () => {
await checkBuilderEndpoint({
@@ -191,6 +245,5 @@ describe("/tables", () => {
url: `/api/tables/${testTable._id}/${testTable._rev}`,
})
})
-
})
})
diff --git a/packages/server/src/api/routes/tests/utilities/TestFunctions.js b/packages/server/src/api/routes/tests/utilities/TestFunctions.js
index 534119d279..313b9e63a8 100644
--- a/packages/server/src/api/routes/tests/utilities/TestFunctions.js
+++ b/packages/server/src/api/routes/tests/utilities/TestFunctions.js
@@ -1,5 +1,6 @@
const rowController = require("../../../controllers/row")
const appController = require("../../../controllers/application")
+const CouchDB = require("../../../../db")
function Request(appId, params) {
this.user = { appId }
@@ -77,3 +78,7 @@ exports.checkPermissionsEndpoint = async ({
.set(failHeader)
.expect(403)
}
+
+exports.getDB = config => {
+ return new CouchDB(config.getAppId())
+}
diff --git a/packages/server/src/api/routes/tests/view.spec.js b/packages/server/src/api/routes/tests/view.spec.js
index a80b09d3a0..3bfbacccbe 100644
--- a/packages/server/src/api/routes/tests/view.spec.js
+++ b/packages/server/src/api/routes/tests/view.spec.js
@@ -29,9 +29,7 @@ describe("/views", () => {
.expect("Content-Type", /json/)
.expect(200)
- expect(res.res.statusMessage).toEqual(
- "View TestView saved successfully."
- )
+ expect(res.body.tableId).toBe(table._id)
})
it("updates the table row with the new view metadata", async () => {
@@ -46,10 +44,8 @@ describe("/views", () => {
.set(config.defaultHeaders())
.expect("Content-Type", /json/)
.expect(200)
+ expect(res.body.tableId).toBe(table._id)
- expect(res.res.statusMessage).toEqual(
- "View TestView saved successfully."
- )
const updatedTable = await config.getTable(table._id)
expect(updatedTable.views).toEqual({
TestView: {
@@ -173,4 +169,49 @@ describe("/views", () => {
expect(res.body).toMatchSnapshot()
})
})
+
+ describe("destroy", () => {
+ it("should be able to delete a view", async () => {
+ const table = await config.createTable()
+ const view = await config.createView()
+ const res = await request
+ .delete(`/api/views/${view.name}`)
+ .set(config.defaultHeaders())
+ .expect("Content-Type", /json/)
+ .expect(200)
+ expect(res.body.map).toBeDefined()
+ expect(res.body.meta.tableId).toEqual(table._id)
+ })
+ })
+
+ describe("exportView", () => {
+ it("should be able to delete a view", async () => {
+ await config.createTable()
+ await config.createRow()
+ const view = await config.createView()
+ let res = await request
+ .get(`/api/views/export?view=${view.name}&format=json`)
+ .set(config.defaultHeaders())
+ .expect(200)
+ let error
+ try {
+ const obj = JSON.parse(res.text)
+ expect(obj.length).toBe(1)
+ } catch (err) {
+ error = err
+ }
+ expect(error).toBeUndefined()
+ res = await request
+ .get(`/api/views/export?view=${view.name}&format=csv`)
+ .set(config.defaultHeaders())
+ .expect(200)
+ // this shouldn't be JSON
+ try {
+ JSON.parse(res.text)
+ } catch (err) {
+ error = err
+ }
+ expect(error).toBeDefined()
+ })
+ })
})
diff --git a/packages/server/src/automations/tests/automation.spec.js b/packages/server/src/automations/tests/automation.spec.js
index f2463b2306..f4d3b4c865 100644
--- a/packages/server/src/automations/tests/automation.spec.js
+++ b/packages/server/src/automations/tests/automation.spec.js
@@ -3,11 +3,11 @@ const usageQuota = require("../../utilities/usageQuota")
const thread = require("../thread")
const triggers = require("../triggers")
const { basicAutomation, basicTable } = require("../../tests/utilities/structures")
-const TestConfig = require("../../tests/utilities/TestConfiguration")
const { wait } = require("../../utilities")
const env = require("../../environment")
const { makePartial } = require("../../tests/utilities")
const { cleanInputValues } = require("../automationUtils")
+const setup = require("./utilities")
let workerJob
@@ -31,13 +31,14 @@ jest.mock("worker-farm", () => {
})
describe("Run through some parts of the automations system", () => {
- let config = new TestConfig(false)
+ let config = setup.getConfig()
beforeEach(async () => {
await automation.init()
await config.init()
})
+ afterAll(setup.afterAll)
it("should be able to init in builder", async () => {
await triggers.externalTrigger(basicAutomation(), { a: 1 })
diff --git a/packages/server/src/db/client.js b/packages/server/src/db/client.js
index b5edb1e877..f6dea33a40 100644
--- a/packages/server/src/db/client.js
+++ b/packages/server/src/db/client.js
@@ -30,6 +30,7 @@ const Pouch = PouchDB.defaults(POUCH_DB_DEFAULTS)
allDbs(Pouch)
// replicate your local levelDB pouch to a running HTTP compliant couch or pouchdb server.
+/* istanbul ignore next */
// eslint-disable-next-line no-unused-vars
function replicateLocal() {
Pouch.allDbs().then(dbs => {
diff --git a/packages/server/src/tests/utilities/TestConfiguration.js b/packages/server/src/tests/utilities/TestConfiguration.js
index 9651bfb670..b36b45186a 100644
--- a/packages/server/src/tests/utilities/TestConfiguration.js
+++ b/packages/server/src/tests/utilities/TestConfiguration.js
@@ -171,6 +171,13 @@ class TestConfiguration {
return this._req(null, { tableId, rowId }, controllers.row.find)
}
+ async getRows(tableId) {
+ if (!tableId && this.table) {
+ tableId = this.table._id
+ }
+ return this._req(null, { tableId }, controllers.row.fetchTableRows)
+ }
+
async createRole(config = null) {
config = config || basicRole()
return this._req(config, null, controllers.role.save)
@@ -195,6 +202,7 @@ class TestConfiguration {
const view = config || {
map: "function(doc) { emit(doc[doc.key], doc._id); } ",
tableId: this.table._id,
+ name: "ViewTest",
}
return this._req(view, null, controllers.view.save)
}
From 3b0988074c10f460eb3e0a68819529eb3300f25b Mon Sep 17 00:00:00 2001
From: mike12345567
Date: Mon, 15 Mar 2021 17:14:56 +0000
Subject: [PATCH 17/26] Removing un-used code and removing some files from
coverage that aren't of consequence.
---
packages/server/package.json | 4 +++-
.../server/src/utilities/createAppPackage.js | 2 ++
packages/server/src/utilities/exceptions.js | 16 ----------------
3 files changed, 5 insertions(+), 17 deletions(-)
delete mode 100644 packages/server/src/utilities/exceptions.js
diff --git a/packages/server/package.json b/packages/server/package.json
index a025d274f1..9c21fa4918 100644
--- a/packages/server/package.json
+++ b/packages/server/package.json
@@ -60,7 +60,9 @@
"!src/utilities/usageQuota.js",
"!src/api/routes/tests/**/*",
"!src/tests/**/*",
- "!src/automations/tests/**/*"
+ "!src/automations/tests/**/*",
+ "!src/utilities/fileProcessor.js",
+ "!src/utilities/initialiseBudibase.js"
],
"coverageReporters": [
"lcov",
diff --git a/packages/server/src/utilities/createAppPackage.js b/packages/server/src/utilities/createAppPackage.js
index a62e8c96df..9500554227 100644
--- a/packages/server/src/utilities/createAppPackage.js
+++ b/packages/server/src/utilities/createAppPackage.js
@@ -7,6 +7,8 @@ const packageJson = require("../../package.json")
const streamPipeline = promisify(stream.pipeline)
+// can't really test this due to the downloading nature of it, wouldn't be a great test case
+/* istanbul ignore next */
exports.downloadExtractComponentLibraries = async appFolder => {
const LIBRARIES = ["standard-components"]
diff --git a/packages/server/src/utilities/exceptions.js b/packages/server/src/utilities/exceptions.js
deleted file mode 100644
index e02c88eec3..0000000000
--- a/packages/server/src/utilities/exceptions.js
+++ /dev/null
@@ -1,16 +0,0 @@
-const statusCodes = require("./statusCodes")
-
-const errorWithStatus = (message, statusCode) => {
- const e = new Error(message)
- e.statusCode = statusCode
- return e
-}
-
-module.exports.unauthorized = message =>
- errorWithStatus(message, statusCodes.UNAUTHORIZED)
-
-module.exports.forbidden = message =>
- errorWithStatus(message, statusCodes.FORBIDDEN)
-
-module.exports.notfound = message =>
- errorWithStatus(message, statusCodes.NOT_FOUND)
From cee0decfcc3ae10e3f3c3972b90040ab76c422a3 Mon Sep 17 00:00:00 2001
From: Andrew Kingston
Date: Mon, 15 Mar 2021 18:32:20 +0000
Subject: [PATCH 18/26] Remove electron specific app import
---
.../src/components/start/CreateAppModal.svelte | 18 ++++++++++++------
.../src/components/start/Steps/Info.svelte | 5 ++---
.../server/src/api/controllers/application.js | 15 ++++++++++-----
3 files changed, 24 insertions(+), 14 deletions(-)
diff --git a/packages/builder/src/components/start/CreateAppModal.svelte b/packages/builder/src/components/start/CreateAppModal.svelte
index 7f1d73f744..5102179cde 100644
--- a/packages/builder/src/components/start/CreateAppModal.svelte
+++ b/packages/builder/src/components/start/CreateAppModal.svelte
@@ -123,13 +123,19 @@
async function createNewApp() {
submitting = true
try {
- // Create App
- const appResp = await post("/api/applications", {
- name: $createAppStore.values.applicationName,
- template,
- })
- const appJson = await appResp.json()
+ // Create form data to create app
+ let data = new FormData()
+ data.append("name", $createAppStore.values.applicationName)
+ data.append("useTemplate", template != null)
+ if (template) {
+ data.append("templateName", template.name)
+ data.append("templateKey", template.key)
+ data.append("templateFile", template.file)
+ }
+ // Create App
+ const appResp = await post("/api/applications", data, {})
+ const appJson = await appResp.json()
if (!appResp.ok) {
throw new Error(appJson.message)
}
diff --git a/packages/builder/src/components/start/Steps/Info.svelte b/packages/builder/src/components/start/Steps/Info.svelte
index e14e327bce..fa74e8b3a0 100644
--- a/packages/builder/src/components/start/Steps/Info.svelte
+++ b/packages/builder/src/components/start/Steps/Info.svelte
@@ -1,6 +1,5 @@
diff --git a/packages/server/src/api/controllers/application.js b/packages/server/src/api/controllers/application.js
index cba3e6455a..2023385a7f 100644
--- a/packages/server/src/api/controllers/application.js
+++ b/packages/server/src/api/controllers/application.js
@@ -91,7 +91,6 @@ async function getAppUrlIfNotInUse(ctx) {
async function createInstance(template) {
const appId = generateAppID()
-
const db = new CouchDB(appId)
await db.put({
_id: "_design/database",
@@ -106,10 +105,10 @@ async function createInstance(template) {
// replicate the template data to the instance DB
// this is currently very hard to test, downloading and importing template files
/* istanbul ignore next */
- if (template) {
+ if (template && template.useTemplate === "true") {
let dbDumpReadStream
- if (template.fileImportPath) {
- dbDumpReadStream = fs.createReadStream(template.fileImportPath)
+ if (template.file) {
+ dbDumpReadStream = fs.createReadStream(template.file.path)
} else {
const templatePath = await downloadTemplate(...template.key.split("/"))
dbDumpReadStream = fs.createReadStream(
@@ -162,8 +161,14 @@ exports.fetchAppPackage = async function(ctx) {
}
exports.create = async function(ctx) {
+ const { useTemplate, templateKey } = ctx.request.body
+ const instance = await createInstance({
+ useTemplate,
+ key: templateKey,
+ file: ctx.request.files.templateFile,
+ })
+
const url = await getAppUrlIfNotInUse(ctx)
- const instance = await createInstance(ctx.request.body.template)
const appId = instance._id
const version = packageJson.version
const newApplication = {
From b4f4b7dde06ef156d1d2e8eaf5467883acbdc504 Mon Sep 17 00:00:00 2001
From: Martin McKeaveney
Date: Mon, 15 Mar 2021 20:38:55 +0000
Subject: [PATCH 19/26] fix duplicate column name issue
---
.../DataTable/modals/CreateEditColumn.svelte | 6 +++-
.../PropertyControls/ColorPicker.svelte | 34 +++++++++++--------
2 files changed, 24 insertions(+), 16 deletions(-)
diff --git a/packages/builder/src/components/backend/DataTable/modals/CreateEditColumn.svelte b/packages/builder/src/components/backend/DataTable/modals/CreateEditColumn.svelte
index ad2371f3ea..d269124219 100644
--- a/packages/builder/src/components/backend/DataTable/modals/CreateEditColumn.svelte
+++ b/packages/builder/src/components/backend/DataTable/modals/CreateEditColumn.svelte
@@ -53,7 +53,11 @@
$: uneditable =
$backendUiStore.selectedTable?._id === TableNames.USERS &&
UNEDITABLE_USER_FIELDS.includes(field.name)
- $: invalid = field.type === LINK_TYPE && !field.tableId
+ $: invalid =
+ (field.type === LINK_TYPE && !field.tableId) ||
+ Object.keys($backendUiStore.draftTable.schema).some(
+ key => key === field.name
+ )
// used to select what different options can be displayed for column type
$: canBeSearched =
diff --git a/packages/builder/src/components/design/PropertiesPanel/PropertyControls/ColorPicker.svelte b/packages/builder/src/components/design/PropertiesPanel/PropertyControls/ColorPicker.svelte
index 6235e744f8..c777f79666 100644
--- a/packages/builder/src/components/design/PropertiesPanel/PropertyControls/ColorPicker.svelte
+++ b/packages/builder/src/components/design/PropertiesPanel/PropertyControls/ColorPicker.svelte
@@ -1,38 +1,42 @@
From 8b9271e5b763988ae5787b3368c59f5c5da8bd13 Mon Sep 17 00:00:00 2001
From: mike12345567
Date: Mon, 15 Mar 2021 20:43:08 +0000
Subject: [PATCH 20/26] Removing unused code that was causing some issues with
API key lookup and validation in self hosted setups.
---
packages/server/src/app.js | 8 +---
packages/server/src/selfhost/README.md | 7 ---
packages/server/src/selfhost/index.js | 44 -------------------
.../server/src/utilities/security/apikey.js | 10 ++---
4 files changed, 5 insertions(+), 64 deletions(-)
delete mode 100644 packages/server/src/selfhost/README.md
delete mode 100644 packages/server/src/selfhost/index.js
diff --git a/packages/server/src/app.js b/packages/server/src/app.js
index 15e996cfe6..30cdfe5fdb 100644
--- a/packages/server/src/app.js
+++ b/packages/server/src/app.js
@@ -9,7 +9,6 @@ const env = require("./environment")
const eventEmitter = require("./events")
const automations = require("./automations/index")
const Sentry = require("@sentry/node")
-const selfhost = require("./selfhost")
const app = new Koa()
@@ -66,11 +65,8 @@ module.exports = server.listen(env.PORT || 0, async () => {
console.log(`Budibase running on ${JSON.stringify(server.address())}`)
env._set("PORT", server.address().port)
eventEmitter.emitPort(env.PORT)
- automations.init()
- // only init the self hosting DB info in the Pouch, not needed in self hosting prod
- if (!env.CLOUD) {
- await selfhost.init()
- }
+
+ await automations.init()
})
process.on("uncaughtException", err => {
diff --git a/packages/server/src/selfhost/README.md b/packages/server/src/selfhost/README.md
deleted file mode 100644
index a02743a58c..0000000000
--- a/packages/server/src/selfhost/README.md
+++ /dev/null
@@ -1,7 +0,0 @@
-### Self hosting
-This directory contains utilities that are needed for self hosted platforms to operate.
-These will mostly be utilities, necessary to the operation of the server e.g. storing self
-hosting specific options and attributes to CouchDB.
-
-All the internal operations should be exposed through the `index.js` so importing
-the self host directory should give you everything you need.
\ No newline at end of file
diff --git a/packages/server/src/selfhost/index.js b/packages/server/src/selfhost/index.js
deleted file mode 100644
index f77d1f0b6c..0000000000
--- a/packages/server/src/selfhost/index.js
+++ /dev/null
@@ -1,44 +0,0 @@
-const CouchDB = require("../db")
-const env = require("../environment")
-const newid = require("../db/newid")
-
-const SELF_HOST_DB = "self-host-db"
-const SELF_HOST_DOC = "self-host-info"
-
-async function createSelfHostDB(db) {
- await db.put({
- _id: "_design/database",
- views: {},
- })
- const selfHostInfo = {
- _id: SELF_HOST_DOC,
- apiKeyId: newid(),
- }
- await db.put(selfHostInfo)
- return selfHostInfo
-}
-
-exports.init = async () => {
- if (!env.SELF_HOSTED) {
- return
- }
- const db = new CouchDB(SELF_HOST_DB)
- try {
- await db.get(SELF_HOST_DOC)
- } catch (err) {
- // failed to retrieve
- if (err.status === 404) {
- await createSelfHostDB(db)
- }
- }
-}
-
-exports.getSelfHostInfo = async () => {
- const db = new CouchDB(SELF_HOST_DB)
- return db.get(SELF_HOST_DOC)
-}
-
-exports.getSelfHostAPIKey = async () => {
- const info = await exports.getSelfHostInfo()
- return info ? info.apiKeyId : null
-}
diff --git a/packages/server/src/utilities/security/apikey.js b/packages/server/src/utilities/security/apikey.js
index c8965cee43..3d5f428bb7 100644
--- a/packages/server/src/utilities/security/apikey.js
+++ b/packages/server/src/utilities/security/apikey.js
@@ -1,6 +1,5 @@
const { apiKeyTable } = require("../../db/dynamoClient")
const env = require("../../environment")
-const { getSelfHostAPIKey } = require("../../selfhost")
/**
* This file purely exists so that we can centralise all logic pertaining to API keys, as their usage differs
@@ -8,16 +7,13 @@ const { getSelfHostAPIKey } = require("../../selfhost")
*/
exports.isAPIKeyValid = async apiKeyId => {
- if (env.CLOUD && !env.SELF_HOSTED) {
+ if (!env.SELF_HOSTED) {
let apiKeyInfo = await apiKeyTable.get({
primary: apiKeyId,
})
return apiKeyInfo != null
- }
- if (env.SELF_HOSTED) {
- const selfHostKey = await getSelfHostAPIKey()
+ } else {
// if the api key supplied is correct then return structure similar
- return apiKeyId === selfHostKey ? { pk: apiKeyId } : null
+ return apiKeyId === env.HOSTING_KEY
}
- return false
}
From bec6ff0881d731cc4bdf588996adc8db66c6b53f Mon Sep 17 00:00:00 2001
From: mike12345567
Date: Mon, 15 Mar 2021 20:43:31 +0000
Subject: [PATCH 21/26] Formatting.
---
.../PropertyControls/ColorPicker.svelte | 34 +++++++++++--------
1 file changed, 19 insertions(+), 15 deletions(-)
diff --git a/packages/builder/src/components/design/PropertiesPanel/PropertyControls/ColorPicker.svelte b/packages/builder/src/components/design/PropertiesPanel/PropertyControls/ColorPicker.svelte
index 6235e744f8..c777f79666 100644
--- a/packages/builder/src/components/design/PropertiesPanel/PropertyControls/ColorPicker.svelte
+++ b/packages/builder/src/components/design/PropertiesPanel/PropertyControls/ColorPicker.svelte
@@ -1,38 +1,42 @@
From 8b6e429055e9a18feea59284c6727727f4d5ea6f Mon Sep 17 00:00:00 2001
From: mike12345567
Date: Mon, 15 Mar 2021 20:45:16 +0000
Subject: [PATCH 22/26] Removing unused test and directory.
---
.../server/src/selfhost/tests/setup.spec.js | 26 -------------------
1 file changed, 26 deletions(-)
delete mode 100644 packages/server/src/selfhost/tests/setup.spec.js
diff --git a/packages/server/src/selfhost/tests/setup.spec.js b/packages/server/src/selfhost/tests/setup.spec.js
deleted file mode 100644
index 13eeda0b1b..0000000000
--- a/packages/server/src/selfhost/tests/setup.spec.js
+++ /dev/null
@@ -1,26 +0,0 @@
-const selfhost = require("..")
-const env = require("../../environment")
-
-describe("test the setup process", () => {
- beforeAll(() => {
- env.SELF_HOSTED = true
- })
-
- beforeEach(async () => {
- await selfhost.init()
- })
-
- afterAll(() => {
- env.SELF_HOSTED = false
- })
-
- it("getSelfHostInfo", async () => {
- let info = await selfhost.getSelfHostInfo()
- expect(info._id).toEqual("self-host-info")
- })
-
- it("getSelfHostAPIKey", async () => {
- let apiKey = await selfhost.getSelfHostAPIKey()
- expect(typeof apiKey).toEqual("string")
- })
-})
\ No newline at end of file
From 5da828a11c1b089197b01aa1568b016aedc80aec Mon Sep 17 00:00:00 2001
From: Andrew Kingston
Date: Tue, 16 Mar 2021 09:28:58 +0000
Subject: [PATCH 23/26] Lint
---
.../PropertyControls/ColorPicker.svelte | 34 +++++++++++--------
.../src/api/controllers/static/index.js | 2 --
2 files changed, 19 insertions(+), 17 deletions(-)
diff --git a/packages/builder/src/components/design/PropertiesPanel/PropertyControls/ColorPicker.svelte b/packages/builder/src/components/design/PropertiesPanel/PropertyControls/ColorPicker.svelte
index 6235e744f8..c777f79666 100644
--- a/packages/builder/src/components/design/PropertiesPanel/PropertyControls/ColorPicker.svelte
+++ b/packages/builder/src/components/design/PropertiesPanel/PropertyControls/ColorPicker.svelte
@@ -1,38 +1,42 @@
diff --git a/packages/server/src/api/controllers/static/index.js b/packages/server/src/api/controllers/static/index.js
index bc9384b892..f5de271d36 100644
--- a/packages/server/src/api/controllers/static/index.js
+++ b/packages/server/src/api/controllers/static/index.js
@@ -5,8 +5,6 @@ const { resolve, join } = require("../../../utilities/centralPath")
const fetch = require("node-fetch")
const fs = require("fs-extra")
const uuid = require("uuid")
-const AWS = require("aws-sdk")
-const { prepareUpload } = require("../deploy/utils")
const { processString } = require("@budibase/string-templates")
const {
budibaseAppsDir,
From 7ec90faf1c32bb598cb0f148cd759364fe8756a6 Mon Sep 17 00:00:00 2001
From: Michael Drury
Date: Tue, 16 Mar 2021 12:56:11 +0000
Subject: [PATCH 24/26] Update README.md
Updating codecov badge to look at next branch.
---
README.md | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/README.md b/README.md
index 75b48a6107..04bb71fb50 100644
--- a/README.md
+++ b/README.md
@@ -38,7 +38,7 @@
-
+
From bc18959f87e5c9cc5252dc32e7bfae269ae1f08a Mon Sep 17 00:00:00 2001
From: mike12345567
Date: Tue, 16 Mar 2021 13:43:46 +0000
Subject: [PATCH 25/26] Fixing issue with applications not being created due to
a lack of template file.
---
packages/server/src/api/controllers/application.js | 9 ++++++---
1 file changed, 6 insertions(+), 3 deletions(-)
diff --git a/packages/server/src/api/controllers/application.js b/packages/server/src/api/controllers/application.js
index 2023385a7f..9e50319d5d 100644
--- a/packages/server/src/api/controllers/application.js
+++ b/packages/server/src/api/controllers/application.js
@@ -162,11 +162,14 @@ exports.fetchAppPackage = async function(ctx) {
exports.create = async function(ctx) {
const { useTemplate, templateKey } = ctx.request.body
- const instance = await createInstance({
+ const instanceConfig = {
useTemplate,
key: templateKey,
- file: ctx.request.files.templateFile,
- })
+ }
+ if (ctx.request.files && ctx.request.files.templateFile) {
+ instanceConfig.file = ctx.request.files.templateFile
+ }
+ const instance = await createInstance(instanceConfig)
const url = await getAppUrlIfNotInUse(ctx)
const appId = instance._id
From c0cf70720a41a2a53a2e8407dc94eaf25a1ee26b Mon Sep 17 00:00:00 2001
From: Andrew Kingston
Date: Tue, 16 Mar 2021 13:51:50 +0000
Subject: [PATCH 26/26] Revert deletion of S3 upload of attachments in cloud
env
---
.../src/api/controllers/static/index.js | 25 +++++++++++++++++++
1 file changed, 25 insertions(+)
diff --git a/packages/server/src/api/controllers/static/index.js b/packages/server/src/api/controllers/static/index.js
index f5de271d36..ff1ecf5b2e 100644
--- a/packages/server/src/api/controllers/static/index.js
+++ b/packages/server/src/api/controllers/static/index.js
@@ -5,6 +5,8 @@ const { resolve, join } = require("../../../utilities/centralPath")
const fetch = require("node-fetch")
const fs = require("fs-extra")
const uuid = require("uuid")
+const AWS = require("aws-sdk")
+const { prepareUpload } = require("../deploy/utils")
const { processString } = require("@budibase/string-templates")
const {
budibaseAppsDir,
@@ -72,6 +74,29 @@ exports.uploadFile = async function(ctx) {
"attachments"
)
+ if (env.CLOUD) {
+ // remote upload
+ const s3 = new AWS.S3({
+ params: {
+ Bucket: "prod-budi-app-assets",
+ },
+ })
+
+ const uploads = files.map(file => {
+ const fileExtension = [...file.name.split(".")].pop()
+ const processedFileName = `${uuid.v4()}.${fileExtension}`
+
+ return prepareUpload({
+ file,
+ s3Key: `assets/${ctx.user.appId}/attachments/${processedFileName}`,
+ s3,
+ })
+ })
+
+ ctx.body = await Promise.all(uploads)
+ return
+ }
+
ctx.body = await processLocalFileUploads({
files,
outputPath: attachmentsPath,