Merge branch 'feature/sql-relationships' of github.com:Budibase/budibase into feature/opinionated-relationships-ui
This commit is contained in:
commit
9f3e5cdc7f
|
@ -152,7 +152,7 @@ The HTML and CSS for your apps runtime pages, as well as the budibase client lib
|
||||||
|
|
||||||
#### Backend
|
#### Backend
|
||||||
|
|
||||||
The backend schema, tables and rows are stored using PouchDB when developing locally, and in [CouchDB](https://pouchdb.com/) when running in production.
|
For the backend we run [Redis](https://redis.io/), [CouchDB](https://couchdb.apache.org/), [MinIO](https://min.io/) and [Envoy](https://www.envoyproxy.io/) in Docker compose. This means that to develop Budibase you will need Docker and Docker compose installed. The backend services are then ran separately as Node services with nodemon so that they can be debugged outside of Docker.
|
||||||
|
|
||||||
### Publishing Budibase to NPM
|
### Publishing Budibase to NPM
|
||||||
|
|
||||||
|
|
|
@ -20,8 +20,8 @@ jobs:
|
||||||
with:
|
with:
|
||||||
node-version: 12.x
|
node-version: 12.x
|
||||||
- run: yarn
|
- run: yarn
|
||||||
- run: yarn lint
|
|
||||||
- run: yarn bootstrap
|
- run: yarn bootstrap
|
||||||
|
- run: yarn lint
|
||||||
- run: yarn build
|
- run: yarn build
|
||||||
- run: yarn test
|
- run: yarn test
|
||||||
|
|
||||||
|
|
|
@ -1,5 +1,5 @@
|
||||||
{
|
{
|
||||||
"version": "0.9.65",
|
"version": "0.9.69",
|
||||||
"npmClient": "yarn",
|
"npmClient": "yarn",
|
||||||
"packages": [
|
"packages": [
|
||||||
"packages/*"
|
"packages/*"
|
||||||
|
|
|
@ -1,6 +1,6 @@
|
||||||
{
|
{
|
||||||
"name": "@budibase/auth",
|
"name": "@budibase/auth",
|
||||||
"version": "0.9.65",
|
"version": "0.9.69",
|
||||||
"description": "Authentication middlewares for budibase builder and apps",
|
"description": "Authentication middlewares for budibase builder and apps",
|
||||||
"main": "src/index.js",
|
"main": "src/index.js",
|
||||||
"author": "Budibase",
|
"author": "Budibase",
|
||||||
|
|
|
@ -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": "0.9.65",
|
"version": "0.9.69",
|
||||||
"license": "AGPL-3.0",
|
"license": "AGPL-3.0",
|
||||||
"svelte": "src/index.js",
|
"svelte": "src/index.js",
|
||||||
"module": "dist/bbui.es.js",
|
"module": "dist/bbui.es.js",
|
||||||
|
|
|
@ -1,6 +1,6 @@
|
||||||
{
|
{
|
||||||
"name": "@budibase/builder",
|
"name": "@budibase/builder",
|
||||||
"version": "0.9.65",
|
"version": "0.9.69",
|
||||||
"license": "AGPL-3.0",
|
"license": "AGPL-3.0",
|
||||||
"private": true,
|
"private": true,
|
||||||
"scripts": {
|
"scripts": {
|
||||||
|
@ -65,10 +65,10 @@
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
"@budibase/bbui": "^0.9.65",
|
"@budibase/bbui": "^0.9.69",
|
||||||
"@budibase/client": "^0.9.65",
|
"@budibase/client": "^0.9.69",
|
||||||
"@budibase/colorpicker": "1.1.2",
|
"@budibase/colorpicker": "1.1.2",
|
||||||
"@budibase/string-templates": "^0.9.65",
|
"@budibase/string-templates": "^0.9.69",
|
||||||
"@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",
|
||||||
|
|
|
@ -284,7 +284,7 @@ export const background = {
|
||||||
|
|
||||||
export const border = {
|
export const border = {
|
||||||
label: "Border",
|
label: "Border",
|
||||||
columns: "auto 1fr",
|
columns: "1fr 1fr",
|
||||||
settings: [
|
settings: [
|
||||||
{
|
{
|
||||||
label: "Color",
|
label: "Color",
|
||||||
|
@ -295,17 +295,31 @@ export const border = {
|
||||||
label: "Width",
|
label: "Width",
|
||||||
key: "border-width",
|
key: "border-width",
|
||||||
control: Select,
|
control: Select,
|
||||||
|
column: "1 / 2",
|
||||||
|
placeholder: "None",
|
||||||
options: [
|
options: [
|
||||||
{ label: "Small", value: "1px" },
|
{ label: "Small", value: "1px" },
|
||||||
{ label: "Medium", value: "2px" },
|
{ label: "Medium", value: "2px" },
|
||||||
{ label: "Large", value: "4px" },
|
{ label: "Large", value: "4px" },
|
||||||
],
|
],
|
||||||
},
|
},
|
||||||
|
{
|
||||||
|
label: "Style",
|
||||||
|
key: "border-style",
|
||||||
|
control: Select,
|
||||||
|
column: "2 / 3",
|
||||||
|
placeholder: "None",
|
||||||
|
options: [
|
||||||
|
{ label: "Solid", value: "solid" },
|
||||||
|
{ label: "Dotted", value: "dotted" },
|
||||||
|
{ label: "Dashed", value: "dashed" },
|
||||||
|
],
|
||||||
|
},
|
||||||
{
|
{
|
||||||
label: "Radius",
|
label: "Radius",
|
||||||
key: "border-radius",
|
key: "border-radius",
|
||||||
control: Select,
|
control: Select,
|
||||||
column: "1 / 3",
|
placeholder: "None",
|
||||||
options: [
|
options: [
|
||||||
{ label: "Small", value: "0.25rem" },
|
{ label: "Small", value: "0.25rem" },
|
||||||
{ label: "Medium", value: "0.5rem" },
|
{ label: "Medium", value: "0.5rem" },
|
||||||
|
@ -317,7 +331,7 @@ export const border = {
|
||||||
label: "Shadow",
|
label: "Shadow",
|
||||||
key: "box-shadow",
|
key: "box-shadow",
|
||||||
control: Select,
|
control: Select,
|
||||||
column: "1 / 3",
|
placeholder: "None",
|
||||||
options: [
|
options: [
|
||||||
{
|
{
|
||||||
label: "Small",
|
label: "Small",
|
||||||
|
|
|
@ -1,6 +1,6 @@
|
||||||
{
|
{
|
||||||
"name": "@budibase/cli",
|
"name": "@budibase/cli",
|
||||||
"version": "0.9.65",
|
"version": "0.9.69",
|
||||||
"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": "0.9.65",
|
"version": "0.9.69",
|
||||||
"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",
|
||||||
|
@ -18,9 +18,9 @@
|
||||||
"dev:builder": "rollup -cw"
|
"dev:builder": "rollup -cw"
|
||||||
},
|
},
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
"@budibase/bbui": "^0.9.65",
|
"@budibase/bbui": "^0.9.69",
|
||||||
"@budibase/standard-components": "^0.9.65",
|
"@budibase/standard-components": "^0.9.69",
|
||||||
"@budibase/string-templates": "^0.9.65",
|
"@budibase/string-templates": "^0.9.69",
|
||||||
"regexparam": "^1.3.0",
|
"regexparam": "^1.3.0",
|
||||||
"shortid": "^2.2.15",
|
"shortid": "^2.2.15",
|
||||||
"svelte-spa-router": "^3.0.5"
|
"svelte-spa-router": "^3.0.5"
|
||||||
|
|
|
@ -34,11 +34,6 @@ export const styleable = (node, styles = {}) => {
|
||||||
baseStyles.overflow = "hidden"
|
baseStyles.overflow = "hidden"
|
||||||
}
|
}
|
||||||
|
|
||||||
// Append border-style css if border-width is specified
|
|
||||||
if (newStyles.normal?.["border-width"]) {
|
|
||||||
baseStyles["border-style"] = "solid"
|
|
||||||
}
|
|
||||||
|
|
||||||
const componentId = newStyles.id
|
const componentId = newStyles.id
|
||||||
const customStyles = newStyles.custom || ""
|
const customStyles = newStyles.custom || ""
|
||||||
const normalStyles = { ...baseStyles, ...newStyles.normal }
|
const normalStyles = { ...baseStyles, ...newStyles.normal }
|
||||||
|
|
|
@ -1,7 +1,7 @@
|
||||||
{
|
{
|
||||||
"name": "@budibase/server",
|
"name": "@budibase/server",
|
||||||
"email": "hi@budibase.com",
|
"email": "hi@budibase.com",
|
||||||
"version": "0.9.65",
|
"version": "0.9.69",
|
||||||
"description": "Budibase Web Server",
|
"description": "Budibase Web Server",
|
||||||
"main": "src/index.js",
|
"main": "src/index.js",
|
||||||
"repository": {
|
"repository": {
|
||||||
|
@ -59,9 +59,9 @@
|
||||||
"author": "Budibase",
|
"author": "Budibase",
|
||||||
"license": "AGPL-3.0-or-later",
|
"license": "AGPL-3.0-or-later",
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
"@budibase/auth": "^0.9.65",
|
"@budibase/auth": "^0.9.69",
|
||||||
"@budibase/client": "^0.9.65",
|
"@budibase/client": "^0.9.69",
|
||||||
"@budibase/string-templates": "^0.9.65",
|
"@budibase/string-templates": "^0.9.69",
|
||||||
"@elastic/elasticsearch": "7.10.0",
|
"@elastic/elasticsearch": "7.10.0",
|
||||||
"@koa/router": "8.0.0",
|
"@koa/router": "8.0.0",
|
||||||
"@sendgrid/mail": "7.1.1",
|
"@sendgrid/mail": "7.1.1",
|
||||||
|
@ -114,14 +114,14 @@
|
||||||
"devDependencies": {
|
"devDependencies": {
|
||||||
"@babel/core": "^7.14.3",
|
"@babel/core": "^7.14.3",
|
||||||
"@babel/preset-env": "^7.14.4",
|
"@babel/preset-env": "^7.14.4",
|
||||||
"@budibase/standard-components": "^0.9.65",
|
"@budibase/standard-components": "^0.9.69",
|
||||||
"@jest/test-sequencer": "^24.8.0",
|
"@jest/test-sequencer": "^24.8.0",
|
||||||
"@types/bull": "^3.15.1",
|
"@types/bull": "^3.15.1",
|
||||||
"@types/jest": "^26.0.23",
|
"@types/jest": "^26.0.23",
|
||||||
"@types/koa": "^2.13.3",
|
"@types/koa": "^2.13.3",
|
||||||
"@types/koa-router": "^7.4.2",
|
"@types/koa-router": "^7.4.2",
|
||||||
"@types/node": "^15.12.4",
|
"@types/node": "^15.12.4",
|
||||||
"@typescript-eslint/parser": "^4.28.0",
|
"@typescript-eslint/parser": "4.28.0",
|
||||||
"babel-jest": "^27.0.2",
|
"babel-jest": "^27.0.2",
|
||||||
"copyfiles": "^2.4.1",
|
"copyfiles": "^2.4.1",
|
||||||
"docker-compose": "^0.23.6",
|
"docker-compose": "^0.23.6",
|
||||||
|
|
|
@ -1,5 +1,5 @@
|
||||||
const { makeExternalQuery } = require("./utils")
|
const { makeExternalQuery } = require("./utils")
|
||||||
const { DataSourceOperation, SortDirection } = require("../../../constants")
|
const { DataSourceOperation, SortDirection, FieldTypes } = require("../../../constants")
|
||||||
const { getAllExternalTables } = require("../table/utils")
|
const { getAllExternalTables } = require("../table/utils")
|
||||||
const {
|
const {
|
||||||
breakExternalTableId,
|
breakExternalTableId,
|
||||||
|
@ -19,10 +19,12 @@ async function handleRequest(
|
||||||
appId,
|
appId,
|
||||||
operation,
|
operation,
|
||||||
tableId,
|
tableId,
|
||||||
{ id, row, filters, sort, paginate, fullDocs } = {}
|
{ id, row, filters, sort, paginate, tables } = {}
|
||||||
) {
|
) {
|
||||||
let { datasourceId, tableName } = breakExternalTableId(tableId)
|
let { datasourceId, tableName } = breakExternalTableId(tableId)
|
||||||
const tables = await getAllExternalTables(appId, datasourceId)
|
if (!tables) {
|
||||||
|
tables = await getAllExternalTables(appId, datasourceId)
|
||||||
|
}
|
||||||
const table = tables[tableName]
|
const table = tables[tableName]
|
||||||
if (!table) {
|
if (!table) {
|
||||||
throw `Unable to process query, table "${tableName}" not defined.`
|
throw `Unable to process query, table "${tableName}" not defined.`
|
||||||
|
@ -83,8 +85,7 @@ async function handleRequest(
|
||||||
response,
|
response,
|
||||||
table,
|
table,
|
||||||
relationships,
|
relationships,
|
||||||
tables,
|
tables
|
||||||
fullDocs
|
|
||||||
)
|
)
|
||||||
// if reading it'll just be an array of rows, return whole thing
|
// if reading it'll just be an array of rows, return whole thing
|
||||||
return operation === DataSourceOperation.READ && Array.isArray(response)
|
return operation === DataSourceOperation.READ && Array.isArray(response)
|
||||||
|
@ -239,15 +240,43 @@ exports.fetchEnrichedRow = async ctx => {
|
||||||
const appId = ctx.appId
|
const appId = ctx.appId
|
||||||
const id = ctx.params.rowId
|
const id = ctx.params.rowId
|
||||||
const tableId = ctx.params.tableId
|
const tableId = ctx.params.tableId
|
||||||
// TODO: this only enriches the full docs 1 layer deep, need to join those as well
|
const { datasourceId, tableName } = breakExternalTableId(tableId)
|
||||||
|
const tables = await getAllExternalTables(appId, datasourceId)
|
||||||
const response = await handleRequest(
|
const response = await handleRequest(
|
||||||
appId,
|
appId,
|
||||||
DataSourceOperation.READ,
|
DataSourceOperation.READ,
|
||||||
tableId,
|
tableId,
|
||||||
{
|
{
|
||||||
id,
|
id,
|
||||||
fullDocs: true,
|
tables,
|
||||||
}
|
}
|
||||||
)
|
)
|
||||||
return response ? response[0] : response
|
const table = tables[tableName]
|
||||||
|
const row = response[0]
|
||||||
|
// this seems like a lot of work, but basically we need to dig deeper for the enrich
|
||||||
|
// for a single row, there is probably a better way to do this with some smart multi-layer joins
|
||||||
|
for (let [fieldName, field] of Object.entries(table.schema)) {
|
||||||
|
if (field.type !== FieldTypes.LINK || !row[fieldName] || row[fieldName].length === 0) {
|
||||||
|
continue
|
||||||
|
}
|
||||||
|
const links = row[fieldName]
|
||||||
|
const linkedTableId = field.tableId
|
||||||
|
const linkedTable = tables[breakExternalTableId(linkedTableId).tableName]
|
||||||
|
// don't support composite keys right now
|
||||||
|
const linkedIds = links.map(link => breakRowIdField(link._id)[0])
|
||||||
|
row[fieldName] = await handleRequest(
|
||||||
|
appId,
|
||||||
|
DataSourceOperation.READ,
|
||||||
|
linkedTableId,
|
||||||
|
{
|
||||||
|
tables,
|
||||||
|
filters: {
|
||||||
|
oneOf: {
|
||||||
|
[linkedTable.primary]: linkedIds,
|
||||||
|
},
|
||||||
|
},
|
||||||
|
},
|
||||||
|
)
|
||||||
|
}
|
||||||
|
return row
|
||||||
}
|
}
|
||||||
|
|
|
@ -80,8 +80,7 @@ exports.updateRelationshipColumns = (
|
||||||
row,
|
row,
|
||||||
rows,
|
rows,
|
||||||
relationships,
|
relationships,
|
||||||
allTables,
|
allTables
|
||||||
fullDocs
|
|
||||||
) => {
|
) => {
|
||||||
const columns = {}
|
const columns = {}
|
||||||
for (let relationship of relationships) {
|
for (let relationship of relationships) {
|
||||||
|
@ -91,12 +90,10 @@ exports.updateRelationshipColumns = (
|
||||||
}
|
}
|
||||||
let linked = basicProcessing(row, linkedTable)
|
let linked = basicProcessing(row, linkedTable)
|
||||||
// if not returning full docs then get the minimal links out
|
// if not returning full docs then get the minimal links out
|
||||||
if (!fullDocs) {
|
const display = linkedTable.primaryDisplay
|
||||||
const display = linkedTable.primaryDisplay
|
linked = {
|
||||||
linked = {
|
primaryDisplay: display ? linked[display] : undefined,
|
||||||
primaryDisplay: display ? linked[display] : undefined,
|
_id: linked._id,
|
||||||
_id: linked._id,
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
columns[relationship.column] = linked
|
columns[relationship.column] = linked
|
||||||
}
|
}
|
||||||
|
@ -116,8 +113,7 @@ exports.outputProcessing = (
|
||||||
rows,
|
rows,
|
||||||
table,
|
table,
|
||||||
relationships,
|
relationships,
|
||||||
allTables,
|
allTables
|
||||||
fullDocs
|
|
||||||
) => {
|
) => {
|
||||||
// if no rows this is what is returned? Might be PG only
|
// if no rows this is what is returned? Might be PG only
|
||||||
if (rows[0].read === true) {
|
if (rows[0].read === true) {
|
||||||
|
@ -132,8 +128,7 @@ exports.outputProcessing = (
|
||||||
row,
|
row,
|
||||||
finalRows,
|
finalRows,
|
||||||
relationships,
|
relationships,
|
||||||
allTables,
|
allTables
|
||||||
fullDocs
|
|
||||||
)
|
)
|
||||||
continue
|
continue
|
||||||
}
|
}
|
||||||
|
@ -144,8 +139,7 @@ exports.outputProcessing = (
|
||||||
row,
|
row,
|
||||||
finalRows,
|
finalRows,
|
||||||
relationships,
|
relationships,
|
||||||
allTables,
|
allTables
|
||||||
fullDocs
|
|
||||||
)
|
)
|
||||||
}
|
}
|
||||||
return Object.values(finalRows)
|
return Object.values(finalRows)
|
||||||
|
|
|
@ -1,3 +1,5 @@
|
||||||
|
import {breakExternalTableId} from "../../../integrations/utils"
|
||||||
|
|
||||||
const CouchDB = require("../../../db")
|
const CouchDB = require("../../../db")
|
||||||
const csvParser = require("../../../utilities/csvParser")
|
const csvParser = require("../../../utilities/csvParser")
|
||||||
const {
|
const {
|
||||||
|
|
|
@ -72,6 +72,9 @@ export interface SearchFilters {
|
||||||
notEmpty?: {
|
notEmpty?: {
|
||||||
[key: string]: any
|
[key: string]: any
|
||||||
}
|
}
|
||||||
|
oneOf?: {
|
||||||
|
[key: string]: any[]
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
export interface RelationshipsJson {
|
export interface RelationshipsJson {
|
||||||
|
|
|
@ -30,6 +30,12 @@ function addFilters(
|
||||||
}
|
}
|
||||||
// if all or specified in filters, then everything is an or
|
// if all or specified in filters, then everything is an or
|
||||||
const allOr = filters.allOr
|
const allOr = filters.allOr
|
||||||
|
if (filters.oneOf) {
|
||||||
|
iterate(filters.oneOf, (key, array) => {
|
||||||
|
const fnc = allOr ? "orWhereIn" : "whereIn"
|
||||||
|
query = query[fnc](key, array)
|
||||||
|
})
|
||||||
|
}
|
||||||
if (filters.string) {
|
if (filters.string) {
|
||||||
iterate(filters.string, (key, value) => {
|
iterate(filters.string, (key, value) => {
|
||||||
const fnc = allOr ? "orWhere" : "where"
|
const fnc = allOr ? "orWhere" : "where"
|
||||||
|
|
|
@ -1146,10 +1146,10 @@
|
||||||
resolved "https://registry.yarnpkg.com/@bcoe/v8-coverage/-/v8-coverage-0.2.3.tgz#75a2e8b51cb758a7553d6804a5932d7aace75c39"
|
resolved "https://registry.yarnpkg.com/@bcoe/v8-coverage/-/v8-coverage-0.2.3.tgz#75a2e8b51cb758a7553d6804a5932d7aace75c39"
|
||||||
integrity sha512-0hYQ8SB4Db5zvZB4axdMHGwEaQjkZzFjQiN9LVYvIFB2nSUHW9tYpxWriPrWDASIxiaXax83REcLxuSdnGPZtw==
|
integrity sha512-0hYQ8SB4Db5zvZB4axdMHGwEaQjkZzFjQiN9LVYvIFB2nSUHW9tYpxWriPrWDASIxiaXax83REcLxuSdnGPZtw==
|
||||||
|
|
||||||
"@budibase/auth@^0.9.65":
|
"@budibase/auth@^0.9.66":
|
||||||
version "0.9.65"
|
version "0.9.66"
|
||||||
resolved "https://registry.yarnpkg.com/@budibase/auth/-/auth-0.9.65.tgz#3ba3ae9dd04781674682bc3b612fba0c16c92a1a"
|
resolved "https://registry.yarnpkg.com/@budibase/auth/-/auth-0.9.66.tgz#543eb6e0cbc0072d8567fdb5ce0f60a601e84f9f"
|
||||||
integrity sha512-WVNT69uLgpQYKrHclPApYnL0Jfg7gct1oCbziJWoNEisRgSLe+SjtduQDhn5R8SZcPdmP4xdhISwlrvI+tYJsw==
|
integrity sha512-hLVCzSmXk7X6oYpNQz06wYyXeN/eJP1AWKtfJfvUOCyE1zLDAxxkvk6UTnAZJ6Mj013QNjWfI9ohlncvY1vsmQ==
|
||||||
dependencies:
|
dependencies:
|
||||||
aws-sdk "^2.901.0"
|
aws-sdk "^2.901.0"
|
||||||
bcryptjs "^2.4.3"
|
bcryptjs "^2.4.3"
|
||||||
|
@ -1167,10 +1167,10 @@
|
||||||
uuid "^8.3.2"
|
uuid "^8.3.2"
|
||||||
zlib "^1.0.5"
|
zlib "^1.0.5"
|
||||||
|
|
||||||
"@budibase/bbui@^0.9.65":
|
"@budibase/bbui@^0.9.66":
|
||||||
version "0.9.65"
|
version "0.9.66"
|
||||||
resolved "https://registry.yarnpkg.com/@budibase/bbui/-/bbui-0.9.65.tgz#cdcfa418b79b27c10195b65a90c10f571b32ae70"
|
resolved "https://registry.yarnpkg.com/@budibase/bbui/-/bbui-0.9.66.tgz#aba79def0d90c2fcb322ae787c06b47f6c1c3814"
|
||||||
integrity sha512-DHhBe3e6kO5GiVpkOwjFReiBiXeIuOxFgKKxI6X5TIUGbnVzsM032ehcyH9QRxwMlwIIGjEA6CSKjxMreJ7sPA==
|
integrity sha512-2P7SFbrw5/E8g4eSZ4OBuJOMDQPyjZBTcZkGtMIP2BlGH3Pn6OilYrH9OmHhn0zebzFA4hGoRgrT2TOiMBRCrg==
|
||||||
dependencies:
|
dependencies:
|
||||||
"@adobe/spectrum-css-workflow-icons" "^1.2.1"
|
"@adobe/spectrum-css-workflow-icons" "^1.2.1"
|
||||||
"@spectrum-css/actionbutton" "^1.0.1"
|
"@spectrum-css/actionbutton" "^1.0.1"
|
||||||
|
@ -1215,14 +1215,14 @@
|
||||||
svelte-flatpickr "^3.1.0"
|
svelte-flatpickr "^3.1.0"
|
||||||
svelte-portal "^1.0.0"
|
svelte-portal "^1.0.0"
|
||||||
|
|
||||||
"@budibase/client@^0.9.65":
|
"@budibase/client@^0.9.66":
|
||||||
version "0.9.65"
|
version "0.9.66"
|
||||||
resolved "https://registry.yarnpkg.com/@budibase/client/-/client-0.9.65.tgz#8ad5fb1400ddc620955d6bb12aad181ff56498a6"
|
resolved "https://registry.yarnpkg.com/@budibase/client/-/client-0.9.66.tgz#04a0838352169607fc005f9910e7c2d485fdbe06"
|
||||||
integrity sha512-9Eo0xdCxqGxnn8s0RJq/Nx+WFK8SM+GWd0vKi55TuKC/Oj4X8qnRprpL5la83cQrRb2aGCk5/41IdETnwtTNGw==
|
integrity sha512-2SJWAZjqi5DUdAJBYmyfKuCw1pHmgzdjEHgU0kP5MZpHxcllKcyQCTELRVFRebz74PR9GibjvNNUIexQQElEVQ==
|
||||||
dependencies:
|
dependencies:
|
||||||
"@budibase/bbui" "^0.9.65"
|
"@budibase/bbui" "^0.9.66"
|
||||||
"@budibase/standard-components" "^0.9.65"
|
"@budibase/standard-components" "^0.9.66"
|
||||||
"@budibase/string-templates" "^0.9.65"
|
"@budibase/string-templates" "^0.9.66"
|
||||||
regexparam "^1.3.0"
|
regexparam "^1.3.0"
|
||||||
shortid "^2.2.15"
|
shortid "^2.2.15"
|
||||||
svelte-spa-router "^3.0.5"
|
svelte-spa-router "^3.0.5"
|
||||||
|
@ -1259,12 +1259,12 @@
|
||||||
to-gfm-code-block "^0.1.1"
|
to-gfm-code-block "^0.1.1"
|
||||||
year "^0.2.1"
|
year "^0.2.1"
|
||||||
|
|
||||||
"@budibase/standard-components@^0.9.65":
|
"@budibase/standard-components@^0.9.66":
|
||||||
version "0.9.65"
|
version "0.9.66"
|
||||||
resolved "https://registry.yarnpkg.com/@budibase/standard-components/-/standard-components-0.9.65.tgz#6c6b82160952ca1413777f303a915289c759e3f2"
|
resolved "https://registry.yarnpkg.com/@budibase/standard-components/-/standard-components-0.9.66.tgz#79ee98e0b5b71801360594b59966f203197eb6ae"
|
||||||
integrity sha512-MIGQFmckV5KC3kurZTAHPrpw/dNXwd0sTzfva3f1NwpkZUVN/dovBnyrU3xmMULq2Aj2DfomUR/mCbTlKRBSMA==
|
integrity sha512-iq+ninGbe5GqNRk8qxlgXXH7hgCFJ90+Xw1zhYRtIE//BmeGYHxEJjDTjG+7qSHPvp2ZB4KkLiD/y7/H0zwuEA==
|
||||||
dependencies:
|
dependencies:
|
||||||
"@budibase/bbui" "^0.9.65"
|
"@budibase/bbui" "^0.9.66"
|
||||||
"@spectrum-css/link" "^3.1.3"
|
"@spectrum-css/link" "^3.1.3"
|
||||||
"@spectrum-css/page" "^3.0.1"
|
"@spectrum-css/page" "^3.0.1"
|
||||||
"@spectrum-css/vars" "^3.0.1"
|
"@spectrum-css/vars" "^3.0.1"
|
||||||
|
@ -1273,10 +1273,10 @@
|
||||||
svelte-apexcharts "^1.0.2"
|
svelte-apexcharts "^1.0.2"
|
||||||
svelte-flatpickr "^3.1.0"
|
svelte-flatpickr "^3.1.0"
|
||||||
|
|
||||||
"@budibase/string-templates@^0.9.65":
|
"@budibase/string-templates@^0.9.66":
|
||||||
version "0.9.65"
|
version "0.9.66"
|
||||||
resolved "https://registry.yarnpkg.com/@budibase/string-templates/-/string-templates-0.9.65.tgz#63c9461284ee5f20be35a246082835b00e95672c"
|
resolved "https://registry.yarnpkg.com/@budibase/string-templates/-/string-templates-0.9.66.tgz#700145549f1636cb46f88b94ef23b3a064058b75"
|
||||||
integrity sha512-hD/NN1h+AQzNlr+OukwUAN9qqbFyH7EBLYNPD507ZAy0fiP+Z5+GgnjGeIkP8tZk8LDtVCcM2uSjyjG+X3UX7Q==
|
integrity sha512-eFFBTTKlRpzNSNwKGOclRkXlrKr5UxV3sCU2QfskPXai4hx9RtD/LyKKSlLshVU1ZjwfTCor9cm7f/hhxRzuRA==
|
||||||
dependencies:
|
dependencies:
|
||||||
"@budibase/handlebars-helpers" "^0.11.4"
|
"@budibase/handlebars-helpers" "^0.11.4"
|
||||||
dayjs "^1.10.4"
|
dayjs "^1.10.4"
|
||||||
|
@ -2613,7 +2613,7 @@
|
||||||
dependencies:
|
dependencies:
|
||||||
"@types/yargs-parser" "*"
|
"@types/yargs-parser" "*"
|
||||||
|
|
||||||
"@typescript-eslint/parser@^4.28.0":
|
"@typescript-eslint/parser@4.28.0":
|
||||||
version "4.28.0"
|
version "4.28.0"
|
||||||
resolved "https://registry.yarnpkg.com/@typescript-eslint/parser/-/parser-4.28.0.tgz#2404c16751a28616ef3abab77c8e51d680a12caa"
|
resolved "https://registry.yarnpkg.com/@typescript-eslint/parser/-/parser-4.28.0.tgz#2404c16751a28616ef3abab77c8e51d680a12caa"
|
||||||
integrity sha512-7x4D22oPY8fDaOCvkuXtYYTQ6mTMmkivwEzS+7iml9F9VkHGbbZ3x4fHRwxAb5KeuSkLqfnYjs46tGx2Nour4A==
|
integrity sha512-7x4D22oPY8fDaOCvkuXtYYTQ6mTMmkivwEzS+7iml9F9VkHGbbZ3x4fHRwxAb5KeuSkLqfnYjs46tGx2Nour4A==
|
||||||
|
|
|
@ -29,11 +29,11 @@
|
||||||
"keywords": [
|
"keywords": [
|
||||||
"svelte"
|
"svelte"
|
||||||
],
|
],
|
||||||
"version": "0.9.65",
|
"version": "0.9.69",
|
||||||
"license": "MIT",
|
"license": "MIT",
|
||||||
"gitHead": "d1836a898cab3f8ab80ee6d8f42be1a9eed7dcdc",
|
"gitHead": "d1836a898cab3f8ab80ee6d8f42be1a9eed7dcdc",
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
"@budibase/bbui": "^0.9.65",
|
"@budibase/bbui": "^0.9.69",
|
||||||
"@spectrum-css/link": "^3.1.3",
|
"@spectrum-css/link": "^3.1.3",
|
||||||
"@spectrum-css/page": "^3.0.1",
|
"@spectrum-css/page": "^3.0.1",
|
||||||
"@spectrum-css/vars": "^3.0.1",
|
"@spectrum-css/vars": "^3.0.1",
|
||||||
|
|
|
@ -19,12 +19,19 @@
|
||||||
|
|
||||||
// Add color styles to main styles object, otherwise the styleable helper
|
// Add color styles to main styles object, otherwise the styleable helper
|
||||||
// overrides the color when it's passed as inline style.
|
// overrides the color when it's passed as inline style.
|
||||||
$: styles = {
|
$: styles = enrichStyles($component.styles, color)
|
||||||
...$component.styles,
|
|
||||||
normal: {
|
const enrichStyles = (styles, color) => {
|
||||||
...$component.styles?.normal,
|
if (!color) {
|
||||||
color,
|
return styles
|
||||||
},
|
}
|
||||||
|
return {
|
||||||
|
...styles,
|
||||||
|
normal: {
|
||||||
|
...styles?.normal,
|
||||||
|
color,
|
||||||
|
},
|
||||||
|
}
|
||||||
}
|
}
|
||||||
</script>
|
</script>
|
||||||
|
|
||||||
|
|
|
@ -23,12 +23,21 @@
|
||||||
|
|
||||||
// Add color styles to main styles object, otherwise the styleable helper
|
// Add color styles to main styles object, otherwise the styleable helper
|
||||||
// overrides the color when it's passed as inline style.
|
// overrides the color when it's passed as inline style.
|
||||||
$: styles = {
|
// Add color styles to main styles object, otherwise the styleable helper
|
||||||
...$component.styles,
|
// overrides the color when it's passed as inline style.
|
||||||
normal: {
|
$: styles = enrichStyles($component.styles, color)
|
||||||
...$component.styles?.normal,
|
|
||||||
color,
|
const enrichStyles = (styles, color) => {
|
||||||
},
|
if (!color) {
|
||||||
|
return styles
|
||||||
|
}
|
||||||
|
return {
|
||||||
|
...styles,
|
||||||
|
normal: {
|
||||||
|
...styles?.normal,
|
||||||
|
color,
|
||||||
|
},
|
||||||
|
}
|
||||||
}
|
}
|
||||||
</script>
|
</script>
|
||||||
|
|
||||||
|
|
|
@ -19,12 +19,19 @@
|
||||||
|
|
||||||
// Add color styles to main styles object, otherwise the styleable helper
|
// Add color styles to main styles object, otherwise the styleable helper
|
||||||
// overrides the color when it's passed as inline style.
|
// overrides the color when it's passed as inline style.
|
||||||
$: styles = {
|
$: styles = enrichStyles($component.styles, color)
|
||||||
...$component.styles,
|
|
||||||
normal: {
|
const enrichStyles = (styles, color) => {
|
||||||
...$component.styles?.normal,
|
if (!color) {
|
||||||
color,
|
return styles
|
||||||
},
|
}
|
||||||
|
return {
|
||||||
|
...styles,
|
||||||
|
normal: {
|
||||||
|
...styles?.normal,
|
||||||
|
color,
|
||||||
|
},
|
||||||
|
}
|
||||||
}
|
}
|
||||||
</script>
|
</script>
|
||||||
|
|
||||||
|
|
|
@ -1,6 +1,6 @@
|
||||||
{
|
{
|
||||||
"name": "@budibase/string-templates",
|
"name": "@budibase/string-templates",
|
||||||
"version": "0.9.65",
|
"version": "0.9.69",
|
||||||
"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,7 +1,7 @@
|
||||||
{
|
{
|
||||||
"name": "@budibase/worker",
|
"name": "@budibase/worker",
|
||||||
"email": "hi@budibase.com",
|
"email": "hi@budibase.com",
|
||||||
"version": "0.9.65",
|
"version": "0.9.69",
|
||||||
"description": "Budibase background service",
|
"description": "Budibase background service",
|
||||||
"main": "src/index.js",
|
"main": "src/index.js",
|
||||||
"repository": {
|
"repository": {
|
||||||
|
@ -21,8 +21,8 @@
|
||||||
"author": "Budibase",
|
"author": "Budibase",
|
||||||
"license": "AGPL-3.0-or-later",
|
"license": "AGPL-3.0-or-later",
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
"@budibase/auth": "^0.9.65",
|
"@budibase/auth": "^0.9.69",
|
||||||
"@budibase/string-templates": "^0.9.65",
|
"@budibase/string-templates": "^0.9.69",
|
||||||
"@koa/router": "^8.0.0",
|
"@koa/router": "^8.0.0",
|
||||||
"aws-sdk": "^2.811.0",
|
"aws-sdk": "^2.811.0",
|
||||||
"bcryptjs": "^2.4.3",
|
"bcryptjs": "^2.4.3",
|
||||||
|
|
|
@ -8,7 +8,7 @@ const CouchDB = require("../../../db")
|
||||||
|
|
||||||
exports.fetch = async ctx => {
|
exports.fetch = async ctx => {
|
||||||
// always use the dev apps as they'll be most up to date (true)
|
// always use the dev apps as they'll be most up to date (true)
|
||||||
const apps = await getAllApps({ CouchDB, dev: true })
|
const apps = await getAllApps({ CouchDB, all: true })
|
||||||
const promises = []
|
const promises = []
|
||||||
for (let app of apps) {
|
for (let app of apps) {
|
||||||
// use dev app IDs
|
// use dev app IDs
|
||||||
|
|
Loading…
Reference in New Issue