Merge remote-tracking branch 'origin/develop' into sso-rest-requests
This commit is contained in:
commit
8eabd7ff20
|
@ -1,5 +1,5 @@
|
||||||
{
|
{
|
||||||
"version": "1.0.207-alpha.8",
|
"version": "1.0.207-alpha.10",
|
||||||
"npmClient": "yarn",
|
"npmClient": "yarn",
|
||||||
"packages": [
|
"packages": [
|
||||||
"packages/*"
|
"packages/*"
|
||||||
|
|
|
@ -1,6 +1,6 @@
|
||||||
{
|
{
|
||||||
"name": "@budibase/backend-core",
|
"name": "@budibase/backend-core",
|
||||||
"version": "1.0.207-alpha.8",
|
"version": "1.0.207-alpha.10",
|
||||||
"description": "Budibase backend core libraries used in server and worker",
|
"description": "Budibase backend core libraries used in server and worker",
|
||||||
"main": "dist/src/index.js",
|
"main": "dist/src/index.js",
|
||||||
"types": "dist/src/index.d.ts",
|
"types": "dist/src/index.d.ts",
|
||||||
|
@ -20,7 +20,7 @@
|
||||||
"test:watch": "jest --watchAll"
|
"test:watch": "jest --watchAll"
|
||||||
},
|
},
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
"@budibase/types": "^1.0.207-alpha.8",
|
"@budibase/types": "^1.0.207-alpha.10",
|
||||||
"@techpass/passport-openidconnect": "0.3.2",
|
"@techpass/passport-openidconnect": "0.3.2",
|
||||||
"aws-sdk": "2.1030.0",
|
"aws-sdk": "2.1030.0",
|
||||||
"bcrypt": "5.0.1",
|
"bcrypt": "5.0.1",
|
||||||
|
|
|
@ -1,21 +1,42 @@
|
||||||
const PouchDB = require("pouchdb")
|
const PouchDB = require("pouchdb")
|
||||||
const env = require("../environment")
|
const env = require("../environment")
|
||||||
|
|
||||||
function getUrlInfo() {
|
exports.getUrlInfo = (url = env.COUCH_DB_URL) => {
|
||||||
let url = env.COUCH_DB_URL
|
let cleanUrl, username, password, host
|
||||||
let username, password, host
|
if (url) {
|
||||||
const [protocol, rest] = url.split("://")
|
// Ensure the URL starts with a protocol
|
||||||
|
const protoRegex = /^https?:\/\//i
|
||||||
|
if (!protoRegex.test(url)) {
|
||||||
|
url = `http://${url}`
|
||||||
|
}
|
||||||
|
|
||||||
|
// Split into protocol and remainder
|
||||||
|
const split = url.split("://")
|
||||||
|
const protocol = split[0]
|
||||||
|
const rest = split.slice(1).join("://")
|
||||||
|
|
||||||
|
// Extract auth if specified
|
||||||
if (url.includes("@")) {
|
if (url.includes("@")) {
|
||||||
const hostParts = rest.split("@")
|
// Split into host and remainder
|
||||||
host = hostParts[1]
|
let parts = rest.split("@")
|
||||||
const authParts = hostParts[0].split(":")
|
host = parts[parts.length - 1]
|
||||||
|
let auth = parts.slice(0, -1).join("@")
|
||||||
|
|
||||||
|
// Split auth into username and password
|
||||||
|
if (auth.includes(":")) {
|
||||||
|
const authParts = auth.split(":")
|
||||||
username = authParts[0]
|
username = authParts[0]
|
||||||
password = authParts[1]
|
password = authParts.slice(1).join(":")
|
||||||
|
} else {
|
||||||
|
username = auth
|
||||||
|
}
|
||||||
} else {
|
} else {
|
||||||
host = rest
|
host = rest
|
||||||
}
|
}
|
||||||
|
cleanUrl = `${protocol}://${host}`
|
||||||
|
}
|
||||||
return {
|
return {
|
||||||
url: `${protocol}://${host}`,
|
url: cleanUrl,
|
||||||
auth: {
|
auth: {
|
||||||
username,
|
username,
|
||||||
password,
|
password,
|
||||||
|
@ -24,7 +45,7 @@ function getUrlInfo() {
|
||||||
}
|
}
|
||||||
|
|
||||||
exports.getCouchInfo = () => {
|
exports.getCouchInfo = () => {
|
||||||
const urlInfo = getUrlInfo()
|
const urlInfo = exports.getUrlInfo()
|
||||||
let username
|
let username
|
||||||
let password
|
let password
|
||||||
if (env.COUCH_DB_USERNAME) {
|
if (env.COUCH_DB_USERNAME) {
|
||||||
|
|
|
@ -0,0 +1,62 @@
|
||||||
|
require("../../../tests/utilities/TestConfiguration")
|
||||||
|
const getUrlInfo = require("../pouch").getUrlInfo
|
||||||
|
|
||||||
|
describe("pouch", () => {
|
||||||
|
describe("Couch DB URL parsing", () => {
|
||||||
|
it("should handle a null Couch DB URL", () => {
|
||||||
|
const info = getUrlInfo(null)
|
||||||
|
expect(info.url).toBeUndefined()
|
||||||
|
expect(info.auth.username).toBeUndefined()
|
||||||
|
})
|
||||||
|
it("should be able to parse a basic Couch DB URL", () => {
|
||||||
|
const info = getUrlInfo("http://host.com")
|
||||||
|
expect(info.url).toBe("http://host.com")
|
||||||
|
expect(info.auth.username).toBeUndefined()
|
||||||
|
})
|
||||||
|
it("should be able to parse a Couch DB basic URL with HTTPS", () => {
|
||||||
|
const info = getUrlInfo("https://host.com")
|
||||||
|
expect(info.url).toBe("https://host.com")
|
||||||
|
expect(info.auth.username).toBeUndefined()
|
||||||
|
})
|
||||||
|
it("should be able to parse a basic Couch DB URL with a custom port", () => {
|
||||||
|
const info = getUrlInfo("https://host.com:1234")
|
||||||
|
expect(info.url).toBe("https://host.com:1234")
|
||||||
|
expect(info.auth.username).toBeUndefined()
|
||||||
|
})
|
||||||
|
it("should be able to parse a Couch DB URL with auth", () => {
|
||||||
|
const info = getUrlInfo("https://user:pass@host.com:1234")
|
||||||
|
expect(info.url).toBe("https://host.com:1234")
|
||||||
|
expect(info.auth.username).toBe("user")
|
||||||
|
expect(info.auth.password).toBe("pass")
|
||||||
|
})
|
||||||
|
it("should be able to parse a Couch DB URL with auth and special chars", () => {
|
||||||
|
const info = getUrlInfo("https://user:s:p@s://@://:d@;][~s@host.com:1234")
|
||||||
|
expect(info.url).toBe("https://host.com:1234")
|
||||||
|
expect(info.auth.username).toBe("user")
|
||||||
|
expect(info.auth.password).toBe("s:p@s://@://:d@;][~s")
|
||||||
|
})
|
||||||
|
it("should be able to parse a Couch DB URL without a protocol", () => {
|
||||||
|
const info = getUrlInfo("host.com:1234")
|
||||||
|
expect(info.url).toBe("http://host.com:1234")
|
||||||
|
expect(info.auth.username).toBeUndefined()
|
||||||
|
})
|
||||||
|
it("should be able to parse a Couch DB URL with auth and without a protocol", () => {
|
||||||
|
const info = getUrlInfo("user:s:p@s://@://:d@;][~s@host.com:1234")
|
||||||
|
expect(info.url).toBe("http://host.com:1234")
|
||||||
|
expect(info.auth.username).toBe("user")
|
||||||
|
expect(info.auth.password).toBe("s:p@s://@://:d@;][~s")
|
||||||
|
})
|
||||||
|
it("should be able to parse a Couch DB URL with only username auth", () => {
|
||||||
|
const info = getUrlInfo("https://user@host.com:1234")
|
||||||
|
expect(info.url).toBe("https://host.com:1234")
|
||||||
|
expect(info.auth.username).toBe("user")
|
||||||
|
expect(info.auth.password).toBeUndefined()
|
||||||
|
})
|
||||||
|
it("should be able to parse a Couch DB URL with only username auth and without a protocol", () => {
|
||||||
|
const info = getUrlInfo("user@host.com:1234")
|
||||||
|
expect(info.url).toBe("http://host.com:1234")
|
||||||
|
expect(info.auth.username).toBe("user")
|
||||||
|
expect(info.auth.password).toBeUndefined()
|
||||||
|
})
|
||||||
|
})
|
||||||
|
})
|
|
@ -1,7 +1,7 @@
|
||||||
{
|
{
|
||||||
"name": "@budibase/bbui",
|
"name": "@budibase/bbui",
|
||||||
"description": "A UI solution used in the different Budibase projects.",
|
"description": "A UI solution used in the different Budibase projects.",
|
||||||
"version": "1.0.207-alpha.8",
|
"version": "1.0.207-alpha.10",
|
||||||
"license": "MPL-2.0",
|
"license": "MPL-2.0",
|
||||||
"svelte": "src/index.js",
|
"svelte": "src/index.js",
|
||||||
"module": "dist/bbui.es.js",
|
"module": "dist/bbui.es.js",
|
||||||
|
@ -38,7 +38,7 @@
|
||||||
],
|
],
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
"@adobe/spectrum-css-workflow-icons": "^1.2.1",
|
"@adobe/spectrum-css-workflow-icons": "^1.2.1",
|
||||||
"@budibase/string-templates": "^1.0.207-alpha.8",
|
"@budibase/string-templates": "^1.0.207-alpha.10",
|
||||||
"@spectrum-css/actionbutton": "^1.0.1",
|
"@spectrum-css/actionbutton": "^1.0.1",
|
||||||
"@spectrum-css/actiongroup": "^1.0.1",
|
"@spectrum-css/actiongroup": "^1.0.1",
|
||||||
"@spectrum-css/avatar": "^3.0.2",
|
"@spectrum-css/avatar": "^3.0.2",
|
||||||
|
|
|
@ -1,9 +1,7 @@
|
||||||
<script>
|
<script>
|
||||||
import "@spectrum-css/typography/dist/index-vars.css"
|
import "@spectrum-css/typography/dist/index-vars.css"
|
||||||
|
|
||||||
// Sizes
|
|
||||||
export let size = "M"
|
export let size = "M"
|
||||||
|
|
||||||
export let serif = false
|
export let serif = false
|
||||||
</script>
|
</script>
|
||||||
|
|
||||||
|
|
|
@ -361,7 +361,7 @@ Cypress.Commands.add("createTable", (tableName, initialTable) => {
|
||||||
cy.get(`[data-cy="new-table"]`).click()
|
cy.get(`[data-cy="new-table"]`).click()
|
||||||
}
|
}
|
||||||
cy.wait(5000)
|
cy.wait(5000)
|
||||||
cy.get(".spectrum-Dialog-grid")
|
cy.get(".item")
|
||||||
.contains("Budibase DB")
|
.contains("Budibase DB")
|
||||||
.click({ force: true })
|
.click({ force: true })
|
||||||
.then(() => {
|
.then(() => {
|
||||||
|
|
|
@ -1,6 +1,6 @@
|
||||||
{
|
{
|
||||||
"name": "@budibase/builder",
|
"name": "@budibase/builder",
|
||||||
"version": "1.0.207-alpha.8",
|
"version": "1.0.207-alpha.10",
|
||||||
"license": "GPL-3.0",
|
"license": "GPL-3.0",
|
||||||
"private": true,
|
"private": true,
|
||||||
"scripts": {
|
"scripts": {
|
||||||
|
@ -69,10 +69,10 @@
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
"@budibase/bbui": "^1.0.207-alpha.8",
|
"@budibase/bbui": "^1.0.207-alpha.10",
|
||||||
"@budibase/client": "^1.0.207-alpha.8",
|
"@budibase/client": "^1.0.207-alpha.10",
|
||||||
"@budibase/frontend-core": "^1.0.207-alpha.8",
|
"@budibase/frontend-core": "^1.0.207-alpha.10",
|
||||||
"@budibase/string-templates": "^1.0.207-alpha.8",
|
"@budibase/string-templates": "^1.0.207-alpha.10",
|
||||||
"@sentry/browser": "5.19.1",
|
"@sentry/browser": "5.19.1",
|
||||||
"@spectrum-css/page": "^3.0.1",
|
"@spectrum-css/page": "^3.0.1",
|
||||||
"@spectrum-css/vars": "^3.0.1",
|
"@spectrum-css/vars": "^3.0.1",
|
||||||
|
|
|
@ -5,12 +5,13 @@
|
||||||
Body,
|
Body,
|
||||||
Layout,
|
Layout,
|
||||||
Detail,
|
Detail,
|
||||||
|
Heading,
|
||||||
notifications,
|
notifications,
|
||||||
} from "@budibase/bbui"
|
} from "@budibase/bbui"
|
||||||
import { onMount } from "svelte"
|
import { onMount } from "svelte"
|
||||||
import ICONS from "../icons"
|
import ICONS from "../icons"
|
||||||
import { API } from "api"
|
import { API } from "api"
|
||||||
import { IntegrationNames, IntegrationTypes } from "constants/backend"
|
import { IntegrationTypes } from "constants/backend"
|
||||||
import CreateTableModal from "components/backend/TableNavigator/modals/CreateTableModal.svelte"
|
import CreateTableModal from "components/backend/TableNavigator/modals/CreateTableModal.svelte"
|
||||||
import DatasourceConfigModal from "components/backend/DatasourceNavigator/modals/DatasourceConfigModal.svelte"
|
import DatasourceConfigModal from "components/backend/DatasourceNavigator/modals/DatasourceConfigModal.svelte"
|
||||||
import GoogleDatasourceConfigModal from "components/backend/DatasourceNavigator/modals/GoogleDatasourceConfigModal.svelte"
|
import GoogleDatasourceConfigModal from "components/backend/DatasourceNavigator/modals/GoogleDatasourceConfigModal.svelte"
|
||||||
|
@ -118,7 +119,7 @@
|
||||||
<Modal bind:this={modal}>
|
<Modal bind:this={modal}>
|
||||||
<ModalContent
|
<ModalContent
|
||||||
disabled={!Object.keys(integration).length}
|
disabled={!Object.keys(integration).length}
|
||||||
title="Data"
|
title="Add data source"
|
||||||
confirmText="Continue"
|
confirmText="Continue"
|
||||||
showSecondaryButton={showImportButton}
|
showSecondaryButton={showImportButton}
|
||||||
secondaryButtonText="Import"
|
secondaryButtonText="Import"
|
||||||
|
@ -129,27 +130,25 @@
|
||||||
chooseNextModal()
|
chooseNextModal()
|
||||||
}}
|
}}
|
||||||
>
|
>
|
||||||
<Layout noPadding>
|
<Layout noPadding gap="XS">
|
||||||
<Body size="S"
|
<Body size="S">Get started with Budibase DB</Body>
|
||||||
>All apps need data. You can connect to a data source below, or add data
|
|
||||||
to your app using Budibase's built-in database.
|
|
||||||
</Body>
|
|
||||||
<div
|
<div
|
||||||
class:selected={integration.type === IntegrationTypes.INTERNAL}
|
class:selected={integration.type === IntegrationTypes.INTERNAL}
|
||||||
on:click={() => selectIntegration(IntegrationTypes.INTERNAL)}
|
on:click={() => selectIntegration(IntegrationTypes.INTERNAL)}
|
||||||
class="item hoverable"
|
class="item hoverable"
|
||||||
>
|
>
|
||||||
<div class="item-body">
|
<div class="item-body with-type">
|
||||||
<svelte:component this={ICONS.BUDIBASE} height="18" width="18" />
|
<svelte:component this={ICONS.BUDIBASE} height="20" width="20" />
|
||||||
<span class="icon-spacing"> <Body size="S">Budibase DB</Body></span>
|
<div class="text">
|
||||||
|
<Heading size="XXS">Budibase DB</Heading>
|
||||||
|
<Detail size="S" class="type">Non-relational</Detail>
|
||||||
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</Layout>
|
</Layout>
|
||||||
|
|
||||||
<Layout gap="XS" noPadding>
|
<Layout noPadding gap="XS">
|
||||||
<div class="title-spacing">
|
<Body size="S">Connect to an external data source</Body>
|
||||||
<Detail size="S">Connect to data source</Detail>
|
|
||||||
</div>
|
|
||||||
<div class="item-list">
|
<div class="item-list">
|
||||||
{#each Object.entries(integrations).filter(([key]) => key !== IntegrationTypes.INTERNAL) as [integrationType, schema]}
|
{#each Object.entries(integrations).filter(([key]) => key !== IntegrationTypes.INTERNAL) as [integrationType, schema]}
|
||||||
<div
|
<div
|
||||||
|
@ -157,18 +156,18 @@
|
||||||
on:click={() => selectIntegration(integrationType)}
|
on:click={() => selectIntegration(integrationType)}
|
||||||
class="item hoverable"
|
class="item hoverable"
|
||||||
>
|
>
|
||||||
<div class="item-body">
|
<div class="item-body" class:with-type={!!schema.type}>
|
||||||
<svelte:component
|
<svelte:component
|
||||||
this={ICONS[integrationType]}
|
this={ICONS[integrationType]}
|
||||||
height="18"
|
height="20"
|
||||||
width="18"
|
width="20"
|
||||||
/>
|
/>
|
||||||
|
<div class="text">
|
||||||
<span class="icon-spacing">
|
<Heading size="XXS">{schema.friendlyName}</Heading>
|
||||||
<Body size="S"
|
{#if schema.type}
|
||||||
>{schema.name || IntegrationNames[integrationType]}</Body
|
<Detail size="S">{schema.type || ""}</Detail>
|
||||||
></span
|
{/if}
|
||||||
>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
{/each}
|
{/each}
|
||||||
|
@ -178,13 +177,6 @@
|
||||||
</Modal>
|
</Modal>
|
||||||
|
|
||||||
<style>
|
<style>
|
||||||
.icon-spacing {
|
|
||||||
margin-left: var(--spacing-m);
|
|
||||||
}
|
|
||||||
.item-body {
|
|
||||||
display: flex;
|
|
||||||
margin-left: var(--spacing-m);
|
|
||||||
}
|
|
||||||
.item-list {
|
.item-list {
|
||||||
display: grid;
|
display: grid;
|
||||||
grid-template-columns: repeat(auto-fit, minmax(150px, 1fr));
|
grid-template-columns: repeat(auto-fit, minmax(150px, 1fr));
|
||||||
|
@ -195,21 +187,35 @@
|
||||||
cursor: pointer;
|
cursor: pointer;
|
||||||
display: grid;
|
display: grid;
|
||||||
grid-gap: var(--spectrum-alias-grid-margin-xsmall);
|
grid-gap: var(--spectrum-alias-grid-margin-xsmall);
|
||||||
padding: var(--spectrum-alias-item-padding-s);
|
padding: var(--spectrum-alias-item-padding-s)
|
||||||
|
var(--spectrum-alias-item-padding-m);
|
||||||
background: var(--spectrum-alias-background-color-secondary);
|
background: var(--spectrum-alias-background-color-secondary);
|
||||||
transition: 0.3s all;
|
transition: background 0.13s ease-out;
|
||||||
border: solid var(--spectrum-alias-border-color);
|
border: solid var(--spectrum-alias-border-color);
|
||||||
border-radius: 5px;
|
border-radius: 5px;
|
||||||
box-sizing: border-box;
|
box-sizing: border-box;
|
||||||
border-width: 2px;
|
border-width: 2px;
|
||||||
}
|
}
|
||||||
|
.item:hover,
|
||||||
.selected {
|
.item.selected {
|
||||||
background: var(--spectrum-alias-background-color-tertiary);
|
background: var(--spectrum-alias-background-color-tertiary);
|
||||||
}
|
}
|
||||||
|
|
||||||
.item:hover,
|
.item-body {
|
||||||
.selected {
|
display: flex;
|
||||||
background: var(--spectrum-alias-background-color-tertiary);
|
flex-direction: row;
|
||||||
|
justify-content: flex-start;
|
||||||
|
align-items: center;
|
||||||
|
gap: var(--spacing-m);
|
||||||
|
}
|
||||||
|
.item-body.with-type {
|
||||||
|
align-items: flex-start;
|
||||||
|
}
|
||||||
|
.item-body.with-type :global(svg) {
|
||||||
|
margin-top: 4px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.text :global(.spectrum-Detail) {
|
||||||
|
color: var(--spectrum-global-color-gray-700);
|
||||||
}
|
}
|
||||||
</style>
|
</style>
|
||||||
|
|
|
@ -1,6 +1,6 @@
|
||||||
{
|
{
|
||||||
"name": "@budibase/cli",
|
"name": "@budibase/cli",
|
||||||
"version": "1.0.207-alpha.8",
|
"version": "1.0.207-alpha.10",
|
||||||
"description": "Budibase CLI, for developers, self hosting and migrations.",
|
"description": "Budibase CLI, for developers, self hosting and migrations.",
|
||||||
"main": "src/index.js",
|
"main": "src/index.js",
|
||||||
"bin": {
|
"bin": {
|
||||||
|
|
|
@ -1,6 +1,6 @@
|
||||||
{
|
{
|
||||||
"name": "@budibase/client",
|
"name": "@budibase/client",
|
||||||
"version": "1.0.207-alpha.8",
|
"version": "1.0.207-alpha.10",
|
||||||
"license": "MPL-2.0",
|
"license": "MPL-2.0",
|
||||||
"module": "dist/budibase-client.js",
|
"module": "dist/budibase-client.js",
|
||||||
"main": "dist/budibase-client.js",
|
"main": "dist/budibase-client.js",
|
||||||
|
@ -19,9 +19,9 @@
|
||||||
"dev:builder": "rollup -cw"
|
"dev:builder": "rollup -cw"
|
||||||
},
|
},
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
"@budibase/bbui": "^1.0.207-alpha.8",
|
"@budibase/bbui": "^1.0.207-alpha.10",
|
||||||
"@budibase/frontend-core": "^1.0.207-alpha.8",
|
"@budibase/frontend-core": "^1.0.207-alpha.10",
|
||||||
"@budibase/string-templates": "^1.0.207-alpha.8",
|
"@budibase/string-templates": "^1.0.207-alpha.10",
|
||||||
"@spectrum-css/button": "^3.0.3",
|
"@spectrum-css/button": "^3.0.3",
|
||||||
"@spectrum-css/card": "^3.0.3",
|
"@spectrum-css/card": "^3.0.3",
|
||||||
"@spectrum-css/divider": "^1.0.3",
|
"@spectrum-css/divider": "^1.0.3",
|
||||||
|
|
|
@ -1,12 +1,12 @@
|
||||||
{
|
{
|
||||||
"name": "@budibase/frontend-core",
|
"name": "@budibase/frontend-core",
|
||||||
"version": "1.0.207-alpha.8",
|
"version": "1.0.207-alpha.10",
|
||||||
"description": "Budibase frontend core libraries used in builder and client",
|
"description": "Budibase frontend core libraries used in builder and client",
|
||||||
"author": "Budibase",
|
"author": "Budibase",
|
||||||
"license": "MPL-2.0",
|
"license": "MPL-2.0",
|
||||||
"svelte": "src/index.js",
|
"svelte": "src/index.js",
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
"@budibase/bbui": "^1.0.207-alpha.8",
|
"@budibase/bbui": "^1.0.207-alpha.10",
|
||||||
"lodash": "^4.17.21",
|
"lodash": "^4.17.21",
|
||||||
"svelte": "^3.46.2"
|
"svelte": "^3.46.2"
|
||||||
}
|
}
|
||||||
|
|
|
@ -1,7 +1,7 @@
|
||||||
{
|
{
|
||||||
"name": "@budibase/server",
|
"name": "@budibase/server",
|
||||||
"email": "hi@budibase.com",
|
"email": "hi@budibase.com",
|
||||||
"version": "1.0.207-alpha.8",
|
"version": "1.0.207-alpha.10",
|
||||||
"description": "Budibase Web Server",
|
"description": "Budibase Web Server",
|
||||||
"main": "src/index.ts",
|
"main": "src/index.ts",
|
||||||
"repository": {
|
"repository": {
|
||||||
|
@ -77,11 +77,11 @@
|
||||||
"license": "GPL-3.0",
|
"license": "GPL-3.0",
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
"@apidevtools/swagger-parser": "10.0.3",
|
"@apidevtools/swagger-parser": "10.0.3",
|
||||||
"@budibase/backend-core": "^1.0.207-alpha.8",
|
"@budibase/backend-core": "^1.0.207-alpha.10",
|
||||||
"@budibase/client": "^1.0.207-alpha.8",
|
"@budibase/client": "^1.0.207-alpha.10",
|
||||||
"@budibase/pro": "1.0.207-alpha.8",
|
"@budibase/pro": "1.0.207-alpha.10",
|
||||||
"@budibase/string-templates": "^1.0.207-alpha.8",
|
"@budibase/string-templates": "^1.0.207-alpha.10",
|
||||||
"@budibase/types": "^1.0.207-alpha.8",
|
"@budibase/types": "^1.0.207-alpha.10",
|
||||||
"@bull-board/api": "3.7.0",
|
"@bull-board/api": "3.7.0",
|
||||||
"@bull-board/koa": "3.9.4",
|
"@bull-board/koa": "3.9.4",
|
||||||
"@elastic/elasticsearch": "7.10.0",
|
"@elastic/elasticsearch": "7.10.0",
|
||||||
|
|
|
@ -94,6 +94,7 @@ export interface Integration {
|
||||||
relationships?: boolean
|
relationships?: boolean
|
||||||
description: string
|
description: string
|
||||||
friendlyName: string
|
friendlyName: string
|
||||||
|
type?: string
|
||||||
datasource: {}
|
datasource: {}
|
||||||
query: {
|
query: {
|
||||||
[key: string]: QueryDefinition
|
[key: string]: QueryDefinition
|
||||||
|
|
|
@ -18,6 +18,7 @@ module AirtableModule {
|
||||||
description:
|
description:
|
||||||
"Airtable is a spreadsheet-database hybrid, with the features of a database but applied to a spreadsheet.",
|
"Airtable is a spreadsheet-database hybrid, with the features of a database but applied to a spreadsheet.",
|
||||||
friendlyName: "Airtable",
|
friendlyName: "Airtable",
|
||||||
|
type: "Spreadsheet",
|
||||||
datasource: {
|
datasource: {
|
||||||
apiKey: {
|
apiKey: {
|
||||||
type: DatasourceFieldTypes.PASSWORD,
|
type: DatasourceFieldTypes.PASSWORD,
|
||||||
|
|
|
@ -19,6 +19,7 @@ module ArangoModule {
|
||||||
const SCHEMA: Integration = {
|
const SCHEMA: Integration = {
|
||||||
docs: "https://github.com/arangodb/arangojs",
|
docs: "https://github.com/arangodb/arangojs",
|
||||||
friendlyName: "ArangoDB",
|
friendlyName: "ArangoDB",
|
||||||
|
type: "Non-relational",
|
||||||
description:
|
description:
|
||||||
"ArangoDB is a scalable open-source multi-model database natively supporting graph, document and search. All supported data models & access patterns can be combined in queries allowing for maximal flexibility. ",
|
"ArangoDB is a scalable open-source multi-model database natively supporting graph, document and search. All supported data models & access patterns can be combined in queries allowing for maximal flexibility. ",
|
||||||
datasource: {
|
datasource: {
|
||||||
|
|
|
@ -16,6 +16,7 @@ module CouchDBModule {
|
||||||
const SCHEMA: Integration = {
|
const SCHEMA: Integration = {
|
||||||
docs: "https://docs.couchdb.org/en/stable/",
|
docs: "https://docs.couchdb.org/en/stable/",
|
||||||
friendlyName: "CouchDB",
|
friendlyName: "CouchDB",
|
||||||
|
type: "Non-relational",
|
||||||
description:
|
description:
|
||||||
"Apache CouchDB is an open-source document-oriented NoSQL database, implemented in Erlang.",
|
"Apache CouchDB is an open-source document-oriented NoSQL database, implemented in Erlang.",
|
||||||
datasource: {
|
datasource: {
|
||||||
|
|
|
@ -21,6 +21,7 @@ module DynamoModule {
|
||||||
description:
|
description:
|
||||||
"Amazon DynamoDB is a key-value and document database that delivers single-digit millisecond performance at any scale.",
|
"Amazon DynamoDB is a key-value and document database that delivers single-digit millisecond performance at any scale.",
|
||||||
friendlyName: "DynamoDB",
|
friendlyName: "DynamoDB",
|
||||||
|
type: "Non-relational",
|
||||||
datasource: {
|
datasource: {
|
||||||
region: {
|
region: {
|
||||||
type: DatasourceFieldTypes.STRING,
|
type: DatasourceFieldTypes.STRING,
|
||||||
|
|
|
@ -17,6 +17,7 @@ module ElasticsearchModule {
|
||||||
description:
|
description:
|
||||||
"Elasticsearch is a search engine based on the Lucene library. It provides a distributed, multitenant-capable full-text search engine with an HTTP web interface and schema-free JSON documents.",
|
"Elasticsearch is a search engine based on the Lucene library. It provides a distributed, multitenant-capable full-text search engine with an HTTP web interface and schema-free JSON documents.",
|
||||||
friendlyName: "ElasticSearch",
|
friendlyName: "ElasticSearch",
|
||||||
|
type: "Non-relational",
|
||||||
datasource: {
|
datasource: {
|
||||||
url: {
|
url: {
|
||||||
type: DatasourceFieldTypes.STRING,
|
type: DatasourceFieldTypes.STRING,
|
||||||
|
|
|
@ -16,6 +16,7 @@ module Firebase {
|
||||||
const SCHEMA: Integration = {
|
const SCHEMA: Integration = {
|
||||||
docs: "https://firebase.google.com/docs/firestore/quickstart",
|
docs: "https://firebase.google.com/docs/firestore/quickstart",
|
||||||
friendlyName: "Firestore",
|
friendlyName: "Firestore",
|
||||||
|
type: "Non-relational",
|
||||||
description:
|
description:
|
||||||
"Cloud Firestore is a flexible, scalable database for mobile, web, and server development from Firebase and Google Cloud.",
|
"Cloud Firestore is a flexible, scalable database for mobile, web, and server development from Firebase and Google Cloud.",
|
||||||
datasource: {
|
datasource: {
|
||||||
|
|
|
@ -49,6 +49,7 @@ module GoogleSheetsModule {
|
||||||
description:
|
description:
|
||||||
"Create and collaborate on online spreadsheets in real-time and from any device. ",
|
"Create and collaborate on online spreadsheets in real-time and from any device. ",
|
||||||
friendlyName: "Google Sheets",
|
friendlyName: "Google Sheets",
|
||||||
|
type: "Spreadsheet",
|
||||||
datasource: {
|
datasource: {
|
||||||
spreadsheetId: {
|
spreadsheetId: {
|
||||||
display: "Google Sheet URL",
|
display: "Google Sheet URL",
|
||||||
|
|
|
@ -44,6 +44,7 @@ module MSSQLModule {
|
||||||
description:
|
description:
|
||||||
"Microsoft SQL Server is a relational database management system developed by Microsoft. ",
|
"Microsoft SQL Server is a relational database management system developed by Microsoft. ",
|
||||||
friendlyName: "MS SQL Server",
|
friendlyName: "MS SQL Server",
|
||||||
|
type: "Relational",
|
||||||
datasource: {
|
datasource: {
|
||||||
user: {
|
user: {
|
||||||
type: DatasourceFieldTypes.STRING,
|
type: DatasourceFieldTypes.STRING,
|
||||||
|
|
|
@ -24,6 +24,7 @@ module MongoDBModule {
|
||||||
const SCHEMA: Integration = {
|
const SCHEMA: Integration = {
|
||||||
docs: "https://github.com/mongodb/node-mongodb-native",
|
docs: "https://github.com/mongodb/node-mongodb-native",
|
||||||
friendlyName: "MongoDB",
|
friendlyName: "MongoDB",
|
||||||
|
type: "Non-relational",
|
||||||
description:
|
description:
|
||||||
"MongoDB is a general purpose, document-based, distributed database built for modern application developers and for the cloud era.",
|
"MongoDB is a general purpose, document-based, distributed database built for modern application developers and for the cloud era.",
|
||||||
datasource: {
|
datasource: {
|
||||||
|
|
|
@ -36,6 +36,7 @@ module MySQLModule {
|
||||||
docs: "https://github.com/sidorares/node-mysql2",
|
docs: "https://github.com/sidorares/node-mysql2",
|
||||||
plus: true,
|
plus: true,
|
||||||
friendlyName: "MySQL",
|
friendlyName: "MySQL",
|
||||||
|
type: "Relational",
|
||||||
description:
|
description:
|
||||||
"MySQL Database Service is a fully managed database service to deploy cloud-native applications. ",
|
"MySQL Database Service is a fully managed database service to deploy cloud-native applications. ",
|
||||||
datasource: {
|
datasource: {
|
||||||
|
|
|
@ -40,6 +40,7 @@ module OracleModule {
|
||||||
docs: "https://github.com/oracle/node-oracledb",
|
docs: "https://github.com/oracle/node-oracledb",
|
||||||
plus: true,
|
plus: true,
|
||||||
friendlyName: "Oracle",
|
friendlyName: "Oracle",
|
||||||
|
type: "Relational",
|
||||||
description:
|
description:
|
||||||
"Oracle Database is an object-relational database management system developed by Oracle Corporation",
|
"Oracle Database is an object-relational database management system developed by Oracle Corporation",
|
||||||
datasource: {
|
datasource: {
|
||||||
|
|
|
@ -47,6 +47,7 @@ module PostgresModule {
|
||||||
docs: "https://node-postgres.com",
|
docs: "https://node-postgres.com",
|
||||||
plus: true,
|
plus: true,
|
||||||
friendlyName: "PostgreSQL",
|
friendlyName: "PostgreSQL",
|
||||||
|
type: "Relational",
|
||||||
description:
|
description:
|
||||||
"PostgreSQL, also known as Postgres, is a free and open-source relational database management system emphasizing extensibility and SQL compliance.",
|
"PostgreSQL, also known as Postgres, is a free and open-source relational database management system emphasizing extensibility and SQL compliance.",
|
||||||
datasource: {
|
datasource: {
|
||||||
|
|
|
@ -17,6 +17,7 @@ module RedisModule {
|
||||||
docs: "https://redis.io/docs/",
|
docs: "https://redis.io/docs/",
|
||||||
description: "",
|
description: "",
|
||||||
friendlyName: "Redis",
|
friendlyName: "Redis",
|
||||||
|
type: "Non-relational",
|
||||||
datasource: {
|
datasource: {
|
||||||
host: {
|
host: {
|
||||||
type: "string",
|
type: "string",
|
||||||
|
|
|
@ -64,6 +64,7 @@ module RestModule {
|
||||||
description:
|
description:
|
||||||
"With the REST API datasource, you can connect, query and pull data from multiple REST APIs. You can then use the retrieved data to build apps.",
|
"With the REST API datasource, you can connect, query and pull data from multiple REST APIs. You can then use the retrieved data to build apps.",
|
||||||
friendlyName: "REST API",
|
friendlyName: "REST API",
|
||||||
|
type: "API",
|
||||||
datasource: {
|
datasource: {
|
||||||
url: {
|
url: {
|
||||||
type: DatasourceFieldTypes.STRING,
|
type: DatasourceFieldTypes.STRING,
|
||||||
|
|
|
@ -17,6 +17,7 @@ module S3Module {
|
||||||
description:
|
description:
|
||||||
"Amazon Simple Storage Service (Amazon S3) is an object storage service that offers industry-leading scalability, data availability, security, and performance.",
|
"Amazon Simple Storage Service (Amazon S3) is an object storage service that offers industry-leading scalability, data availability, security, and performance.",
|
||||||
friendlyName: "Amazon S3",
|
friendlyName: "Amazon S3",
|
||||||
|
type: "Object store",
|
||||||
datasource: {
|
datasource: {
|
||||||
region: {
|
region: {
|
||||||
type: "string",
|
type: "string",
|
||||||
|
|
|
@ -16,6 +16,7 @@ module SnowflakeModule {
|
||||||
description:
|
description:
|
||||||
"Snowflake is a solution for data warehousing, data lakes, data engineering, data science, data application development, and securely sharing and consuming shared data.",
|
"Snowflake is a solution for data warehousing, data lakes, data engineering, data science, data application development, and securely sharing and consuming shared data.",
|
||||||
friendlyName: "Snowflake",
|
friendlyName: "Snowflake",
|
||||||
|
type: "Relational",
|
||||||
datasource: {
|
datasource: {
|
||||||
account: {
|
account: {
|
||||||
type: "string",
|
type: "string",
|
||||||
|
|
|
@ -1,6 +1,6 @@
|
||||||
{
|
{
|
||||||
"name": "@budibase/string-templates",
|
"name": "@budibase/string-templates",
|
||||||
"version": "1.0.207-alpha.8",
|
"version": "1.0.207-alpha.10",
|
||||||
"description": "Handlebars wrapper for Budibase templating.",
|
"description": "Handlebars wrapper for Budibase templating.",
|
||||||
"main": "src/index.cjs",
|
"main": "src/index.cjs",
|
||||||
"module": "dist/bundle.mjs",
|
"module": "dist/bundle.mjs",
|
||||||
|
|
|
@ -1,6 +1,6 @@
|
||||||
{
|
{
|
||||||
"name": "@budibase/types",
|
"name": "@budibase/types",
|
||||||
"version": "1.0.207-alpha.8",
|
"version": "1.0.207-alpha.10",
|
||||||
"description": "Budibase types",
|
"description": "Budibase types",
|
||||||
"main": "dist/index.js",
|
"main": "dist/index.js",
|
||||||
"types": "dist/index.d.ts",
|
"types": "dist/index.d.ts",
|
||||||
|
|
|
@ -1,7 +1,7 @@
|
||||||
{
|
{
|
||||||
"name": "@budibase/worker",
|
"name": "@budibase/worker",
|
||||||
"email": "hi@budibase.com",
|
"email": "hi@budibase.com",
|
||||||
"version": "1.0.207-alpha.8",
|
"version": "1.0.207-alpha.10",
|
||||||
"description": "Budibase background service",
|
"description": "Budibase background service",
|
||||||
"main": "src/index.ts",
|
"main": "src/index.ts",
|
||||||
"repository": {
|
"repository": {
|
||||||
|
@ -34,10 +34,10 @@
|
||||||
"author": "Budibase",
|
"author": "Budibase",
|
||||||
"license": "GPL-3.0",
|
"license": "GPL-3.0",
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
"@budibase/backend-core": "^1.0.207-alpha.8",
|
"@budibase/backend-core": "^1.0.207-alpha.10",
|
||||||
"@budibase/pro": "1.0.207-alpha.8",
|
"@budibase/pro": "1.0.207-alpha.10",
|
||||||
"@budibase/string-templates": "^1.0.207-alpha.8",
|
"@budibase/string-templates": "^1.0.207-alpha.10",
|
||||||
"@budibase/types": "^1.0.207-alpha.8",
|
"@budibase/types": "^1.0.207-alpha.10",
|
||||||
"@koa/router": "8.0.8",
|
"@koa/router": "8.0.8",
|
||||||
"@sentry/node": "6.17.7",
|
"@sentry/node": "6.17.7",
|
||||||
"@techpass/passport-openidconnect": "0.3.2",
|
"@techpass/passport-openidconnect": "0.3.2",
|
||||||
|
|
Loading…
Reference in New Issue