backend-core typescript building successfully
This commit is contained in:
parent
01551fa009
commit
cfa75a8af3
|
@ -3,9 +3,11 @@
|
||||||
"version": "1.0.126-alpha.0",
|
"version": "1.0.126-alpha.0",
|
||||||
"description": "Budibase backend core libraries used in server and worker",
|
"description": "Budibase backend core libraries used in server and worker",
|
||||||
"main": "src/index.js",
|
"main": "src/index.js",
|
||||||
|
"types": "dist/src/index.d.ts",
|
||||||
"author": "Budibase",
|
"author": "Budibase",
|
||||||
"license": "GPL-3.0",
|
"license": "GPL-3.0",
|
||||||
"scripts": {
|
"scripts": {
|
||||||
|
"build": "rimraf dist/ && tsc -p tsconfig.build.json",
|
||||||
"test": "jest",
|
"test": "jest",
|
||||||
"test:watch": "jest --watchAll"
|
"test:watch": "jest --watchAll"
|
||||||
},
|
},
|
||||||
|
@ -39,6 +41,10 @@
|
||||||
]
|
]
|
||||||
},
|
},
|
||||||
"devDependencies": {
|
"devDependencies": {
|
||||||
|
"@types/jest": "^27.4.1",
|
||||||
|
"@types/node": "^15.12.4",
|
||||||
|
"@types/node-fetch": "^2.6.1",
|
||||||
|
"typescript": "^4.5.5",
|
||||||
"ioredis-mock": "^5.5.5",
|
"ioredis-mock": "^5.5.5",
|
||||||
"jest": "^26.6.3",
|
"jest": "^26.6.3",
|
||||||
"pouchdb-adapter-memory": "^7.2.2",
|
"pouchdb-adapter-memory": "^7.2.2",
|
||||||
|
|
|
@ -1,12 +1,16 @@
|
||||||
const { dangerousGetDB, closeDB } = require(".")
|
import { dangerousGetDB, closeDB } from "."
|
||||||
|
|
||||||
class Replication {
|
class Replication {
|
||||||
|
source: any
|
||||||
|
target: any
|
||||||
|
replication: any
|
||||||
|
|
||||||
/**
|
/**
|
||||||
*
|
*
|
||||||
* @param {String} source - the DB you want to replicate or rollback to
|
* @param {String} source - the DB you want to replicate or rollback to
|
||||||
* @param {String} target - the DB you want to replicate to, or rollback from
|
* @param {String} target - the DB you want to replicate to, or rollback from
|
||||||
*/
|
*/
|
||||||
constructor({ source, target }) {
|
constructor({ source, target }: any) {
|
||||||
this.source = dangerousGetDB(source)
|
this.source = dangerousGetDB(source)
|
||||||
this.target = dangerousGetDB(target)
|
this.target = dangerousGetDB(target)
|
||||||
}
|
}
|
||||||
|
@ -15,17 +19,17 @@ class Replication {
|
||||||
return Promise.all([closeDB(this.source), closeDB(this.target)])
|
return Promise.all([closeDB(this.source), closeDB(this.target)])
|
||||||
}
|
}
|
||||||
|
|
||||||
promisify(operation, opts = {}) {
|
promisify(operation: any, opts = {}) {
|
||||||
return new Promise(resolve => {
|
return new Promise(resolve => {
|
||||||
operation(this.target, opts)
|
operation(this.target, opts)
|
||||||
.on("denied", function (err) {
|
.on("denied", function (err: any) {
|
||||||
// a document failed to replicate (e.g. due to permissions)
|
// a document failed to replicate (e.g. due to permissions)
|
||||||
throw new Error(`Denied: Document failed to replicate ${err}`)
|
throw new Error(`Denied: Document failed to replicate ${err}`)
|
||||||
})
|
})
|
||||||
.on("complete", function (info) {
|
.on("complete", function (info: any) {
|
||||||
return resolve(info)
|
return resolve(info)
|
||||||
})
|
})
|
||||||
.on("error", function (err) {
|
.on("error", function (err: any) {
|
||||||
throw new Error(`Replication Error: ${err}`)
|
throw new Error(`Replication Error: ${err}`)
|
||||||
})
|
})
|
||||||
})
|
})
|
||||||
|
@ -64,4 +68,4 @@ class Replication {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
module.exports = Replication
|
export default Replication
|
|
@ -1,47 +1,26 @@
|
||||||
const { newid } = require("../hashing")
|
import { newid } from "../hashing"
|
||||||
const Replication = require("./Replication")
|
import { DEFAULT_TENANT_ID, Configs } from "../constants"
|
||||||
const { DEFAULT_TENANT_ID, Configs } = require("../constants")
|
import * as env from "../environment"
|
||||||
const env = require("../environment")
|
import { SEPARATOR, DocumentTypes } from "./constants"
|
||||||
const {
|
import { getTenantId, getGlobalDBName } from "../tenancy"
|
||||||
StaticDatabases,
|
import fetch from "node-fetch"
|
||||||
SEPARATOR,
|
import { doWithDB, allDbs } from "./index"
|
||||||
DocumentTypes,
|
import { getCouchUrl } from "./pouch"
|
||||||
APP_PREFIX,
|
import { getAppMetadata } from "../cache/appMetadata"
|
||||||
APP_DEV,
|
import { checkSlashesInUrl } from "../helpers"
|
||||||
} = require("./constants")
|
import { isDevApp, isDevAppID } from "./conversions"
|
||||||
const { getTenantId, getGlobalDBName } = require("../tenancy")
|
|
||||||
const fetch = require("node-fetch")
|
|
||||||
const { doWithDB, allDbs } = require("./index")
|
|
||||||
const { getCouchUrl } = require("./pouch")
|
|
||||||
const { getAppMetadata } = require("../cache/appMetadata")
|
|
||||||
const { checkSlashesInUrl } = require("../helpers")
|
|
||||||
const {
|
|
||||||
isDevApp,
|
|
||||||
isProdAppID,
|
|
||||||
isDevAppID,
|
|
||||||
getDevelopmentAppID,
|
|
||||||
getProdAppID,
|
|
||||||
} = require("./conversions")
|
|
||||||
|
|
||||||
const UNICODE_MAX = "\ufff0"
|
const UNICODE_MAX = "\ufff0"
|
||||||
|
|
||||||
exports.ViewNames = {
|
export const ViewNames = {
|
||||||
USER_BY_EMAIL: "by_email",
|
USER_BY_EMAIL: "by_email",
|
||||||
BY_API_KEY: "by_api_key",
|
BY_API_KEY: "by_api_key",
|
||||||
USER_BY_BUILDERS: "by_builders",
|
USER_BY_BUILDERS: "by_builders",
|
||||||
}
|
}
|
||||||
|
|
||||||
exports.StaticDatabases = StaticDatabases
|
export * from "./constants"
|
||||||
|
export * from "./conversions"
|
||||||
exports.DocumentTypes = DocumentTypes
|
export { default as Replication } from "./Replication"
|
||||||
exports.APP_PREFIX = APP_PREFIX
|
|
||||||
exports.APP_DEV = exports.APP_DEV_PREFIX = APP_DEV
|
|
||||||
exports.SEPARATOR = SEPARATOR
|
|
||||||
exports.isDevApp = isDevApp
|
|
||||||
exports.isProdAppID = isProdAppID
|
|
||||||
exports.isDevAppID = isDevAppID
|
|
||||||
exports.getDevelopmentAppID = getDevelopmentAppID
|
|
||||||
exports.getProdAppID = getProdAppID
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* If creating DB allDocs/query params with only a single top level ID this can be used, this
|
* If creating DB allDocs/query params with only a single top level ID this can be used, this
|
||||||
|
@ -55,7 +34,11 @@ exports.getProdAppID = getProdAppID
|
||||||
* @param {object} otherProps Add any other properties onto the request, e.g. include_docs.
|
* @param {object} otherProps Add any other properties onto the request, e.g. include_docs.
|
||||||
* @returns {object} Parameters which can then be used with an allDocs request.
|
* @returns {object} Parameters which can then be used with an allDocs request.
|
||||||
*/
|
*/
|
||||||
function getDocParams(docType, docId = null, otherProps = {}) {
|
export function getDocParams(
|
||||||
|
docType: any,
|
||||||
|
docId: any = null,
|
||||||
|
otherProps: any = {}
|
||||||
|
) {
|
||||||
if (docId == null) {
|
if (docId == null) {
|
||||||
docId = ""
|
docId = ""
|
||||||
}
|
}
|
||||||
|
@ -65,20 +48,19 @@ function getDocParams(docType, docId = null, otherProps = {}) {
|
||||||
endkey: `${docType}${SEPARATOR}${docId}${UNICODE_MAX}`,
|
endkey: `${docType}${SEPARATOR}${docId}${UNICODE_MAX}`,
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
exports.getDocParams = getDocParams
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Generates a new workspace ID.
|
* Generates a new workspace ID.
|
||||||
* @returns {string} The new workspace ID which the workspace doc can be stored under.
|
* @returns {string} The new workspace ID which the workspace doc can be stored under.
|
||||||
*/
|
*/
|
||||||
exports.generateWorkspaceID = () => {
|
export function generateWorkspaceID() {
|
||||||
return `${DocumentTypes.WORKSPACE}${SEPARATOR}${newid()}`
|
return `${DocumentTypes.WORKSPACE}${SEPARATOR}${newid()}`
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Gets parameters for retrieving workspaces.
|
* Gets parameters for retrieving workspaces.
|
||||||
*/
|
*/
|
||||||
exports.getWorkspaceParams = (id = "", otherProps = {}) => {
|
export function getWorkspaceParams(id = "", otherProps = {}) {
|
||||||
return {
|
return {
|
||||||
...otherProps,
|
...otherProps,
|
||||||
startkey: `${DocumentTypes.WORKSPACE}${SEPARATOR}${id}`,
|
startkey: `${DocumentTypes.WORKSPACE}${SEPARATOR}${id}`,
|
||||||
|
@ -90,14 +72,14 @@ exports.getWorkspaceParams = (id = "", otherProps = {}) => {
|
||||||
* Generates a new global user ID.
|
* Generates a new global user ID.
|
||||||
* @returns {string} The new user ID which the user doc can be stored under.
|
* @returns {string} The new user ID which the user doc can be stored under.
|
||||||
*/
|
*/
|
||||||
exports.generateGlobalUserID = id => {
|
export function generateGlobalUserID(id: any) {
|
||||||
return `${DocumentTypes.USER}${SEPARATOR}${id || newid()}`
|
return `${DocumentTypes.USER}${SEPARATOR}${id || newid()}`
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Gets parameters for retrieving users.
|
* Gets parameters for retrieving users.
|
||||||
*/
|
*/
|
||||||
exports.getGlobalUserParams = (globalId, otherProps = {}) => {
|
export function getGlobalUserParams(globalId: any, otherProps = {}) {
|
||||||
if (!globalId) {
|
if (!globalId) {
|
||||||
globalId = ""
|
globalId = ""
|
||||||
}
|
}
|
||||||
|
@ -112,14 +94,18 @@ exports.getGlobalUserParams = (globalId, otherProps = {}) => {
|
||||||
* Generates a template ID.
|
* Generates a template ID.
|
||||||
* @param ownerId The owner/user of the template, this could be global or a workspace level.
|
* @param ownerId The owner/user of the template, this could be global or a workspace level.
|
||||||
*/
|
*/
|
||||||
exports.generateTemplateID = ownerId => {
|
export function generateTemplateID(ownerId: any) {
|
||||||
return `${DocumentTypes.TEMPLATE}${SEPARATOR}${ownerId}${SEPARATOR}${newid()}`
|
return `${DocumentTypes.TEMPLATE}${SEPARATOR}${ownerId}${SEPARATOR}${newid()}`
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Gets parameters for retrieving templates. Owner ID must be specified, either global or a workspace level.
|
* Gets parameters for retrieving templates. Owner ID must be specified, either global or a workspace level.
|
||||||
*/
|
*/
|
||||||
exports.getTemplateParams = (ownerId, templateId, otherProps = {}) => {
|
export function getTemplateParams(
|
||||||
|
ownerId: any,
|
||||||
|
templateId: any,
|
||||||
|
otherProps = {}
|
||||||
|
) {
|
||||||
if (!templateId) {
|
if (!templateId) {
|
||||||
templateId = ""
|
templateId = ""
|
||||||
}
|
}
|
||||||
|
@ -140,18 +126,18 @@ exports.getTemplateParams = (ownerId, templateId, otherProps = {}) => {
|
||||||
* Generates a new role ID.
|
* Generates a new role ID.
|
||||||
* @returns {string} The new role ID which the role doc can be stored under.
|
* @returns {string} The new role ID which the role doc can be stored under.
|
||||||
*/
|
*/
|
||||||
exports.generateRoleID = id => {
|
export function generateRoleID(id: any) {
|
||||||
return `${DocumentTypes.ROLE}${SEPARATOR}${id || newid()}`
|
return `${DocumentTypes.ROLE}${SEPARATOR}${id || newid()}`
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Gets parameters for retrieving a role, this is a utility function for the getDocParams function.
|
* Gets parameters for retrieving a role, this is a utility function for the getDocParams function.
|
||||||
*/
|
*/
|
||||||
exports.getRoleParams = (roleId = null, otherProps = {}) => {
|
export function getRoleParams(roleId = null, otherProps = {}) {
|
||||||
return getDocParams(DocumentTypes.ROLE, roleId, otherProps)
|
return getDocParams(DocumentTypes.ROLE, roleId, otherProps)
|
||||||
}
|
}
|
||||||
|
|
||||||
exports.getStartEndKeyURL = (base, baseKey, tenantId = null) => {
|
export function getStartEndKeyURL(base: any, baseKey: any, tenantId = null) {
|
||||||
const tenancy = tenantId ? `${SEPARATOR}${tenantId}` : ""
|
const tenancy = tenantId ? `${SEPARATOR}${tenantId}` : ""
|
||||||
return `${base}?startkey="${baseKey}${tenancy}"&endkey="${baseKey}${tenancy}${UNICODE_MAX}"`
|
return `${base}?startkey="${baseKey}${tenancy}"&endkey="${baseKey}${tenancy}${UNICODE_MAX}"`
|
||||||
}
|
}
|
||||||
|
@ -162,14 +148,14 @@ exports.getStartEndKeyURL = (base, baseKey, tenantId = null) => {
|
||||||
* opts.efficient can be provided to make sure this call is always quick in a multi-tenant environment,
|
* opts.efficient can be provided to make sure this call is always quick in a multi-tenant environment,
|
||||||
* but it may not be 100% accurate in full efficiency mode (some tenantless apps may be missed).
|
* but it may not be 100% accurate in full efficiency mode (some tenantless apps may be missed).
|
||||||
*/
|
*/
|
||||||
exports.getAllDbs = async (opts = { efficient: false }) => {
|
export async function getAllDbs(opts = { efficient: false }) {
|
||||||
const efficient = opts && opts.efficient
|
const efficient = opts && opts.efficient
|
||||||
// specifically for testing we use the pouch package for this
|
// specifically for testing we use the pouch package for this
|
||||||
if (env.isTest()) {
|
if (env.isTest()) {
|
||||||
return allDbs()
|
return allDbs()
|
||||||
}
|
}
|
||||||
let dbs = []
|
let dbs: any = []
|
||||||
async function addDbs(url) {
|
async function addDbs(url: any) {
|
||||||
const response = await fetch(checkSlashesInUrl(encodeURI(url)))
|
const response = await fetch(checkSlashesInUrl(encodeURI(url)))
|
||||||
if (response.status === 200) {
|
if (response.status === 200) {
|
||||||
let json = await response.json()
|
let json = await response.json()
|
||||||
|
@ -189,13 +175,9 @@ exports.getAllDbs = async (opts = { efficient: false }) => {
|
||||||
await addDbs(couchUrl)
|
await addDbs(couchUrl)
|
||||||
} else {
|
} else {
|
||||||
// get prod apps
|
// get prod apps
|
||||||
await addDbs(
|
await addDbs(getStartEndKeyURL(couchUrl, DocumentTypes.APP, tenantId))
|
||||||
exports.getStartEndKeyURL(couchUrl, DocumentTypes.APP, tenantId)
|
|
||||||
)
|
|
||||||
// get dev apps
|
// get dev apps
|
||||||
await addDbs(
|
await addDbs(getStartEndKeyURL(couchUrl, DocumentTypes.APP_DEV, tenantId))
|
||||||
exports.getStartEndKeyURL(couchUrl, DocumentTypes.APP_DEV, tenantId)
|
|
||||||
)
|
|
||||||
// add global db name
|
// add global db name
|
||||||
dbs.push(getGlobalDBName(tenantId))
|
dbs.push(getGlobalDBName(tenantId))
|
||||||
}
|
}
|
||||||
|
@ -208,13 +190,13 @@ exports.getAllDbs = async (opts = { efficient: false }) => {
|
||||||
*
|
*
|
||||||
* @return {Promise<object[]>} returns the app information document stored in each app database.
|
* @return {Promise<object[]>} returns the app information document stored in each app database.
|
||||||
*/
|
*/
|
||||||
exports.getAllApps = async ({ dev, all, idsOnly, efficient } = {}) => {
|
export async function getAllApps({ dev, all, idsOnly, efficient }: any = {}) {
|
||||||
let tenantId = getTenantId()
|
let tenantId = getTenantId()
|
||||||
if (!env.MULTI_TENANCY && !tenantId) {
|
if (!env.MULTI_TENANCY && !tenantId) {
|
||||||
tenantId = DEFAULT_TENANT_ID
|
tenantId = DEFAULT_TENANT_ID
|
||||||
}
|
}
|
||||||
let dbs = await exports.getAllDbs({ efficient })
|
let dbs = await getAllDbs({ efficient })
|
||||||
const appDbNames = dbs.filter(dbName => {
|
const appDbNames = dbs.filter((dbName: any) => {
|
||||||
const split = dbName.split(SEPARATOR)
|
const split = dbName.split(SEPARATOR)
|
||||||
// it is an app, check the tenantId
|
// it is an app, check the tenantId
|
||||||
if (split[0] === DocumentTypes.APP) {
|
if (split[0] === DocumentTypes.APP) {
|
||||||
|
@ -234,7 +216,7 @@ exports.getAllApps = async ({ dev, all, idsOnly, efficient } = {}) => {
|
||||||
if (idsOnly) {
|
if (idsOnly) {
|
||||||
return appDbNames
|
return appDbNames
|
||||||
}
|
}
|
||||||
const appPromises = appDbNames.map(app =>
|
const appPromises = appDbNames.map((app: any) =>
|
||||||
// skip setup otherwise databases could be re-created
|
// skip setup otherwise databases could be re-created
|
||||||
getAppMetadata(app)
|
getAppMetadata(app)
|
||||||
)
|
)
|
||||||
|
@ -243,17 +225,19 @@ exports.getAllApps = async ({ dev, all, idsOnly, efficient } = {}) => {
|
||||||
} else {
|
} else {
|
||||||
const response = await Promise.allSettled(appPromises)
|
const response = await Promise.allSettled(appPromises)
|
||||||
const apps = response
|
const apps = response
|
||||||
.filter(result => result.status === "fulfilled" && result.value != null)
|
.filter(
|
||||||
.map(({ value }) => value)
|
(result: any) => result.status === "fulfilled" && result.value != null
|
||||||
|
)
|
||||||
|
.map(({ value }: any) => value)
|
||||||
if (!all) {
|
if (!all) {
|
||||||
return apps.filter(app => {
|
return apps.filter((app: any) => {
|
||||||
if (dev) {
|
if (dev) {
|
||||||
return isDevApp(app)
|
return isDevApp(app)
|
||||||
}
|
}
|
||||||
return !isDevApp(app)
|
return !isDevApp(app)
|
||||||
})
|
})
|
||||||
} else {
|
} else {
|
||||||
return apps.map(app => ({
|
return apps.map((app: any) => ({
|
||||||
...app,
|
...app,
|
||||||
status: isDevApp(app) ? "development" : "published",
|
status: isDevApp(app) ? "development" : "published",
|
||||||
}))
|
}))
|
||||||
|
@ -264,26 +248,26 @@ exports.getAllApps = async ({ dev, all, idsOnly, efficient } = {}) => {
|
||||||
/**
|
/**
|
||||||
* Utility function for getAllApps but filters to production apps only.
|
* Utility function for getAllApps but filters to production apps only.
|
||||||
*/
|
*/
|
||||||
exports.getProdAppIDs = async () => {
|
export async function getProdAppIDs() {
|
||||||
return (await exports.getAllApps({ idsOnly: true })).filter(
|
return (await getAllApps({ idsOnly: true })).filter(
|
||||||
id => !exports.isDevAppID(id)
|
(id: any) => !isDevAppID(id)
|
||||||
)
|
)
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Utility function for the inverse of above.
|
* Utility function for the inverse of above.
|
||||||
*/
|
*/
|
||||||
exports.getDevAppIDs = async () => {
|
export async function getDevAppIDs() {
|
||||||
return (await exports.getAllApps({ idsOnly: true })).filter(id =>
|
return (await getAllApps({ idsOnly: true })).filter((id: any) =>
|
||||||
exports.isDevAppID(id)
|
isDevAppID(id)
|
||||||
)
|
)
|
||||||
}
|
}
|
||||||
|
|
||||||
exports.dbExists = async dbName => {
|
export async function dbExists(dbName: any) {
|
||||||
let exists = false
|
let exists = false
|
||||||
return doWithDB(
|
return doWithDB(
|
||||||
dbName,
|
dbName,
|
||||||
async db => {
|
async (db: any) => {
|
||||||
try {
|
try {
|
||||||
// check if database exists
|
// check if database exists
|
||||||
const info = await db.info()
|
const info = await db.info()
|
||||||
|
@ -303,7 +287,7 @@ exports.dbExists = async dbName => {
|
||||||
* Generates a new configuration ID.
|
* Generates a new configuration ID.
|
||||||
* @returns {string} The new configuration ID which the config doc can be stored under.
|
* @returns {string} The new configuration ID which the config doc can be stored under.
|
||||||
*/
|
*/
|
||||||
const generateConfigID = ({ type, workspace, user }) => {
|
export const generateConfigID = ({ type, workspace, user }: any) => {
|
||||||
const scope = [type, workspace, user].filter(Boolean).join(SEPARATOR)
|
const scope = [type, workspace, user].filter(Boolean).join(SEPARATOR)
|
||||||
|
|
||||||
return `${DocumentTypes.CONFIG}${SEPARATOR}${scope}`
|
return `${DocumentTypes.CONFIG}${SEPARATOR}${scope}`
|
||||||
|
@ -312,7 +296,10 @@ const generateConfigID = ({ type, workspace, user }) => {
|
||||||
/**
|
/**
|
||||||
* Gets parameters for retrieving configurations.
|
* Gets parameters for retrieving configurations.
|
||||||
*/
|
*/
|
||||||
const getConfigParams = ({ type, workspace, user }, otherProps = {}) => {
|
export const getConfigParams = (
|
||||||
|
{ type, workspace, user }: any,
|
||||||
|
otherProps = {}
|
||||||
|
) => {
|
||||||
const scope = [type, workspace, user].filter(Boolean).join(SEPARATOR)
|
const scope = [type, workspace, user].filter(Boolean).join(SEPARATOR)
|
||||||
|
|
||||||
return {
|
return {
|
||||||
|
@ -326,7 +313,7 @@ const getConfigParams = ({ type, workspace, user }, otherProps = {}) => {
|
||||||
* Generates a new dev info document ID - this is scoped to a user.
|
* Generates a new dev info document ID - this is scoped to a user.
|
||||||
* @returns {string} The new dev info ID which info for dev (like api key) can be stored under.
|
* @returns {string} The new dev info ID which info for dev (like api key) can be stored under.
|
||||||
*/
|
*/
|
||||||
const generateDevInfoID = userId => {
|
export const generateDevInfoID = (userId: any) => {
|
||||||
return `${DocumentTypes.DEV_INFO}${SEPARATOR}${userId}`
|
return `${DocumentTypes.DEV_INFO}${SEPARATOR}${userId}`
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -336,7 +323,10 @@ const generateDevInfoID = userId => {
|
||||||
* @param {Object} scopes - the type, workspace and userID scopes of the configuration.
|
* @param {Object} scopes - the type, workspace and userID scopes of the configuration.
|
||||||
* @returns The most granular configuration document based on the scope.
|
* @returns The most granular configuration document based on the scope.
|
||||||
*/
|
*/
|
||||||
const getScopedFullConfig = async function (db, { type, user, workspace }) {
|
export const getScopedFullConfig = async function (
|
||||||
|
db: any,
|
||||||
|
{ type, user, workspace }: any
|
||||||
|
) {
|
||||||
const response = await db.allDocs(
|
const response = await db.allDocs(
|
||||||
getConfigParams(
|
getConfigParams(
|
||||||
{ type, user, workspace },
|
{ type, user, workspace },
|
||||||
|
@ -346,7 +336,7 @@ const getScopedFullConfig = async function (db, { type, user, workspace }) {
|
||||||
)
|
)
|
||||||
)
|
)
|
||||||
|
|
||||||
function determineScore(row) {
|
function determineScore(row: any) {
|
||||||
const config = row.doc
|
const config = row.doc
|
||||||
|
|
||||||
// Config is specific to a user and a workspace
|
// Config is specific to a user and a workspace
|
||||||
|
@ -367,7 +357,7 @@ const getScopedFullConfig = async function (db, { type, user, workspace }) {
|
||||||
|
|
||||||
// Find the config with the most granular scope based on context
|
// Find the config with the most granular scope based on context
|
||||||
let scopedConfig = response.rows.sort(
|
let scopedConfig = response.rows.sort(
|
||||||
(a, b) => determineScore(a) - determineScore(b)
|
(a: any, b: any) => determineScore(a) - determineScore(b)
|
||||||
)[0]
|
)[0]
|
||||||
|
|
||||||
// custom logic for settings doc
|
// custom logic for settings doc
|
||||||
|
@ -391,7 +381,7 @@ const getScopedFullConfig = async function (db, { type, user, workspace }) {
|
||||||
return scopedConfig && scopedConfig.doc
|
return scopedConfig && scopedConfig.doc
|
||||||
}
|
}
|
||||||
|
|
||||||
const getPlatformUrl = async settings => {
|
export const getPlatformUrl = async (settings?: any) => {
|
||||||
let platformUrl = env.PLATFORM_URL || "http://localhost:10000"
|
let platformUrl = env.PLATFORM_URL || "http://localhost:10000"
|
||||||
|
|
||||||
if (!env.SELF_HOSTED && env.MULTI_TENANCY) {
|
if (!env.SELF_HOSTED && env.MULTI_TENANCY) {
|
||||||
|
@ -410,15 +400,7 @@ const getPlatformUrl = async settings => {
|
||||||
return platformUrl
|
return platformUrl
|
||||||
}
|
}
|
||||||
|
|
||||||
async function getScopedConfig(db, params) {
|
export async function getScopedConfig(db: any, params: any) {
|
||||||
const configDoc = await getScopedFullConfig(db, params)
|
const configDoc = await getScopedFullConfig(db, params)
|
||||||
return configDoc && configDoc.config ? configDoc.config : configDoc
|
return configDoc && configDoc.config ? configDoc.config : configDoc
|
||||||
}
|
}
|
||||||
|
|
||||||
exports.Replication = Replication
|
|
||||||
exports.getScopedConfig = getScopedConfig
|
|
||||||
exports.generateConfigID = generateConfigID
|
|
||||||
exports.getConfigParams = getConfigParams
|
|
||||||
exports.getScopedFullConfig = getScopedFullConfig
|
|
||||||
exports.generateDevInfoID = generateDevInfoID
|
|
||||||
exports.getPlatformUrl = getPlatformUrl
|
|
|
@ -1,16 +1,16 @@
|
||||||
const sanitize = require("sanitize-s3-objectkey")
|
import sanitize from "sanitize-s3-objectkey"
|
||||||
const AWS = require("aws-sdk")
|
import AWS from "aws-sdk"
|
||||||
const stream = require("stream")
|
import stream from "stream"
|
||||||
const fetch = require("node-fetch")
|
import fetch from "node-fetch"
|
||||||
const tar = require("tar-fs")
|
import tar from "tar-fs"
|
||||||
const zlib = require("zlib")
|
import zlib from "zlib"
|
||||||
const { promisify } = require("util")
|
import { promisify } from "util"
|
||||||
const { join } = require("path")
|
import { join } from "path"
|
||||||
const fs = require("fs")
|
import fs from "fs"
|
||||||
const env = require("../environment")
|
import env from "../environment"
|
||||||
const { budibaseTempDir, ObjectStoreBuckets } = require("./utils")
|
import { budibaseTempDir, ObjectStoreBuckets } from "./utils"
|
||||||
const { v4 } = require("uuid")
|
import { v4 } from "uuid"
|
||||||
const { APP_PREFIX, APP_DEV_PREFIX } = require("../db/utils")
|
import { APP_PREFIX, APP_DEV_PREFIX } from "../db/utils"
|
||||||
|
|
||||||
const streamPipeline = promisify(stream.pipeline)
|
const streamPipeline = promisify(stream.pipeline)
|
||||||
// use this as a temporary store of buckets that are being created
|
// use this as a temporary store of buckets that are being created
|
||||||
|
|
|
@ -0,0 +1,10 @@
|
||||||
|
{
|
||||||
|
// Used for building with tsc
|
||||||
|
"extends": "./tsconfig.json",
|
||||||
|
"exclude": [
|
||||||
|
"node_modules",
|
||||||
|
"**/*.json",
|
||||||
|
"**/*.spec.js",
|
||||||
|
"**/*.spec.ts"
|
||||||
|
]
|
||||||
|
}
|
|
@ -0,0 +1,35 @@
|
||||||
|
{
|
||||||
|
"compilerOptions": {
|
||||||
|
"target": "es6",
|
||||||
|
"module": "commonjs",
|
||||||
|
"lib": ["es2020"],
|
||||||
|
// Tells TypeScript to read JS files, as
|
||||||
|
// normally they are ignored as source files
|
||||||
|
"allowJs": true,
|
||||||
|
// Generate d.ts files
|
||||||
|
"declaration": true,
|
||||||
|
// go to js file when using IDE functions like
|
||||||
|
// "Go to Definition" in VSCode
|
||||||
|
"declarationMap": true,
|
||||||
|
"sourceMap": true,
|
||||||
|
// Types should go into this directory.
|
||||||
|
// Removing this would place the .d.ts files
|
||||||
|
// next to the .js files
|
||||||
|
"outDir": "dist",
|
||||||
|
"strict": true,
|
||||||
|
"noImplicitAny": true,
|
||||||
|
"esModuleInterop": true,
|
||||||
|
"resolveJsonModule": true,
|
||||||
|
"incremental": true,
|
||||||
|
"types": [ "node", "jest"],
|
||||||
|
},
|
||||||
|
"include": [
|
||||||
|
"**/*.js",
|
||||||
|
"**/*.ts",
|
||||||
|
],
|
||||||
|
"exclude": [
|
||||||
|
"node_modules",
|
||||||
|
"**/*.spec.js",
|
||||||
|
// "**/*.spec.ts" // don't exclude spec.ts files for editor support
|
||||||
|
]
|
||||||
|
}
|
|
@ -586,11 +586,32 @@
|
||||||
dependencies:
|
dependencies:
|
||||||
"@types/istanbul-lib-report" "*"
|
"@types/istanbul-lib-report" "*"
|
||||||
|
|
||||||
|
"@types/jest@^27.4.1":
|
||||||
|
version "27.4.1"
|
||||||
|
resolved "https://registry.yarnpkg.com/@types/jest/-/jest-27.4.1.tgz#185cbe2926eaaf9662d340cc02e548ce9e11ab6d"
|
||||||
|
integrity sha512-23iPJADSmicDVrWk+HT58LMJtzLAnB2AgIzplQuq/bSrGaxCrlvRFjGbXmamnnk/mAmCdLStiGqggu28ocUyiw==
|
||||||
|
dependencies:
|
||||||
|
jest-matcher-utils "^27.0.0"
|
||||||
|
pretty-format "^27.0.0"
|
||||||
|
|
||||||
|
"@types/node-fetch@^2.6.1":
|
||||||
|
version "2.6.1"
|
||||||
|
resolved "https://registry.yarnpkg.com/@types/node-fetch/-/node-fetch-2.6.1.tgz#8f127c50481db65886800ef496f20bbf15518975"
|
||||||
|
integrity sha512-oMqjURCaxoSIsHSr1E47QHzbmzNR5rK8McHuNb11BOM9cHcIK3Avy0s/b2JlXHoQGTYS3NsvWzV1M0iK7l0wbA==
|
||||||
|
dependencies:
|
||||||
|
"@types/node" "*"
|
||||||
|
form-data "^3.0.0"
|
||||||
|
|
||||||
"@types/node@*":
|
"@types/node@*":
|
||||||
version "16.11.7"
|
version "16.11.7"
|
||||||
resolved "https://registry.yarnpkg.com/@types/node/-/node-16.11.7.tgz#36820945061326978c42a01e56b61cd223dfdc42"
|
resolved "https://registry.yarnpkg.com/@types/node/-/node-16.11.7.tgz#36820945061326978c42a01e56b61cd223dfdc42"
|
||||||
integrity sha512-QB5D2sqfSjCmTuWcBWyJ+/44bcjO7VbjSbOE0ucoVbAsSNQc4Lt6QkgkVXkTDwkL4z/beecZNDvVX15D4P8Jbw==
|
integrity sha512-QB5D2sqfSjCmTuWcBWyJ+/44bcjO7VbjSbOE0ucoVbAsSNQc4Lt6QkgkVXkTDwkL4z/beecZNDvVX15D4P8Jbw==
|
||||||
|
|
||||||
|
"@types/node@^15.12.4":
|
||||||
|
version "15.14.9"
|
||||||
|
resolved "https://registry.yarnpkg.com/@types/node/-/node-15.14.9.tgz#bc43c990c3c9be7281868bbc7b8fdd6e2b57adfa"
|
||||||
|
integrity sha512-qjd88DrCxupx/kJD5yQgZdcYKZKSIGBVDIBE1/LTGcNm3d2Np/jxojkdePDdfnBHJc5W7vSMpbJ1aB7p/Py69A==
|
||||||
|
|
||||||
"@types/normalize-package-data@^2.4.0":
|
"@types/normalize-package-data@^2.4.0":
|
||||||
version "2.4.1"
|
version "2.4.1"
|
||||||
resolved "https://registry.yarnpkg.com/@types/normalize-package-data/-/normalize-package-data-2.4.1.tgz#d3357479a0fdfdd5907fe67e17e0a85c906e1301"
|
resolved "https://registry.yarnpkg.com/@types/normalize-package-data/-/normalize-package-data-2.4.1.tgz#d3357479a0fdfdd5907fe67e17e0a85c906e1301"
|
||||||
|
@ -732,6 +753,11 @@ ansi-styles@^4.0.0, ansi-styles@^4.1.0:
|
||||||
dependencies:
|
dependencies:
|
||||||
color-convert "^2.0.1"
|
color-convert "^2.0.1"
|
||||||
|
|
||||||
|
ansi-styles@^5.0.0:
|
||||||
|
version "5.2.0"
|
||||||
|
resolved "https://registry.yarnpkg.com/ansi-styles/-/ansi-styles-5.2.0.tgz#07449690ad45777d1924ac2abb2fc8895dba836b"
|
||||||
|
integrity sha512-Cxwpt2SfTzTtXcfOlzGEee8O+c+MmUgGrNiBcXnuWxuFJHe6a5Hz7qwhwe5OgaSYI0IJvkLqWX1ASG+cJOkEiA==
|
||||||
|
|
||||||
anymatch@^2.0.0:
|
anymatch@^2.0.0:
|
||||||
version "2.0.0"
|
version "2.0.0"
|
||||||
resolved "https://registry.yarnpkg.com/anymatch/-/anymatch-2.0.0.tgz#bcb24b4f37934d9aa7ac17b4adaf89e7c76ef2eb"
|
resolved "https://registry.yarnpkg.com/anymatch/-/anymatch-2.0.0.tgz#bcb24b4f37934d9aa7ac17b4adaf89e7c76ef2eb"
|
||||||
|
@ -1494,6 +1520,11 @@ diff-sequences@^26.6.2:
|
||||||
resolved "https://registry.yarnpkg.com/diff-sequences/-/diff-sequences-26.6.2.tgz#48ba99157de1923412eed41db6b6d4aa9ca7c0b1"
|
resolved "https://registry.yarnpkg.com/diff-sequences/-/diff-sequences-26.6.2.tgz#48ba99157de1923412eed41db6b6d4aa9ca7c0b1"
|
||||||
integrity sha512-Mv/TDa3nZ9sbc5soK+OoA74BsS3mL37yixCvUAQkiuA4Wz6YtwP/K47n2rv2ovzHZvoiQeA5FTQOschKkEwB0Q==
|
integrity sha512-Mv/TDa3nZ9sbc5soK+OoA74BsS3mL37yixCvUAQkiuA4Wz6YtwP/K47n2rv2ovzHZvoiQeA5FTQOschKkEwB0Q==
|
||||||
|
|
||||||
|
diff-sequences@^27.5.1:
|
||||||
|
version "27.5.1"
|
||||||
|
resolved "https://registry.yarnpkg.com/diff-sequences/-/diff-sequences-27.5.1.tgz#eaecc0d327fd68c8d9672a1e64ab8dccb2ef5327"
|
||||||
|
integrity sha512-k1gCAXAsNgLwEL+Y8Wvl+M6oEFj5bgazfZULpS5CneoPPXRaCCW7dm+q21Ky2VEE5X+VeRDBVg1Pcvvsr4TtNQ==
|
||||||
|
|
||||||
domexception@^2.0.1:
|
domexception@^2.0.1:
|
||||||
version "2.0.1"
|
version "2.0.1"
|
||||||
resolved "https://registry.yarnpkg.com/domexception/-/domexception-2.0.1.tgz#fb44aefba793e1574b0af6aed2801d057529f304"
|
resolved "https://registry.yarnpkg.com/domexception/-/domexception-2.0.1.tgz#fb44aefba793e1574b0af6aed2801d057529f304"
|
||||||
|
@ -2555,6 +2586,16 @@ jest-diff@^26.6.2:
|
||||||
jest-get-type "^26.3.0"
|
jest-get-type "^26.3.0"
|
||||||
pretty-format "^26.6.2"
|
pretty-format "^26.6.2"
|
||||||
|
|
||||||
|
jest-diff@^27.5.1:
|
||||||
|
version "27.5.1"
|
||||||
|
resolved "https://registry.yarnpkg.com/jest-diff/-/jest-diff-27.5.1.tgz#a07f5011ac9e6643cf8a95a462b7b1ecf6680def"
|
||||||
|
integrity sha512-m0NvkX55LDt9T4mctTEgnZk3fmEg3NRYutvMPWM/0iPnkFj2wIeF45O1718cMSOFO1vINkqmxqD8vE37uTEbqw==
|
||||||
|
dependencies:
|
||||||
|
chalk "^4.0.0"
|
||||||
|
diff-sequences "^27.5.1"
|
||||||
|
jest-get-type "^27.5.1"
|
||||||
|
pretty-format "^27.5.1"
|
||||||
|
|
||||||
jest-docblock@^26.0.0:
|
jest-docblock@^26.0.0:
|
||||||
version "26.0.0"
|
version "26.0.0"
|
||||||
resolved "https://registry.yarnpkg.com/jest-docblock/-/jest-docblock-26.0.0.tgz#3e2fa20899fc928cb13bd0ff68bd3711a36889b5"
|
resolved "https://registry.yarnpkg.com/jest-docblock/-/jest-docblock-26.0.0.tgz#3e2fa20899fc928cb13bd0ff68bd3711a36889b5"
|
||||||
|
@ -2603,6 +2644,11 @@ jest-get-type@^26.3.0:
|
||||||
resolved "https://registry.yarnpkg.com/jest-get-type/-/jest-get-type-26.3.0.tgz#e97dc3c3f53c2b406ca7afaed4493b1d099199e0"
|
resolved "https://registry.yarnpkg.com/jest-get-type/-/jest-get-type-26.3.0.tgz#e97dc3c3f53c2b406ca7afaed4493b1d099199e0"
|
||||||
integrity sha512-TpfaviN1R2pQWkIihlfEanwOXK0zcxrKEE4MlU6Tn7keoXdN6/3gK/xl0yEh8DOunn5pOVGKf8hB4R9gVh04ig==
|
integrity sha512-TpfaviN1R2pQWkIihlfEanwOXK0zcxrKEE4MlU6Tn7keoXdN6/3gK/xl0yEh8DOunn5pOVGKf8hB4R9gVh04ig==
|
||||||
|
|
||||||
|
jest-get-type@^27.5.1:
|
||||||
|
version "27.5.1"
|
||||||
|
resolved "https://registry.yarnpkg.com/jest-get-type/-/jest-get-type-27.5.1.tgz#3cd613c507b0f7ace013df407a1c1cd578bcb4f1"
|
||||||
|
integrity sha512-2KY95ksYSaK7DMBWQn6dQz3kqAf3BB64y2udeG+hv4KfSOb9qwcYQstTJc1KCbsix+wLZWZYN8t7nwX3GOBLRw==
|
||||||
|
|
||||||
jest-haste-map@^26.6.2:
|
jest-haste-map@^26.6.2:
|
||||||
version "26.6.2"
|
version "26.6.2"
|
||||||
resolved "https://registry.yarnpkg.com/jest-haste-map/-/jest-haste-map-26.6.2.tgz#dd7e60fe7dc0e9f911a23d79c5ff7fb5c2cafeaa"
|
resolved "https://registry.yarnpkg.com/jest-haste-map/-/jest-haste-map-26.6.2.tgz#dd7e60fe7dc0e9f911a23d79c5ff7fb5c2cafeaa"
|
||||||
|
@ -2666,6 +2712,16 @@ jest-matcher-utils@^26.6.2:
|
||||||
jest-get-type "^26.3.0"
|
jest-get-type "^26.3.0"
|
||||||
pretty-format "^26.6.2"
|
pretty-format "^26.6.2"
|
||||||
|
|
||||||
|
jest-matcher-utils@^27.0.0:
|
||||||
|
version "27.5.1"
|
||||||
|
resolved "https://registry.yarnpkg.com/jest-matcher-utils/-/jest-matcher-utils-27.5.1.tgz#9c0cdbda8245bc22d2331729d1091308b40cf8ab"
|
||||||
|
integrity sha512-z2uTx/T6LBaCoNWNFWwChLBKYxTMcGBRjAt+2SbP929/Fflb9aa5LGma654Rz8z9HLxsrUaYzxE9T/EFIL/PAw==
|
||||||
|
dependencies:
|
||||||
|
chalk "^4.0.0"
|
||||||
|
jest-diff "^27.5.1"
|
||||||
|
jest-get-type "^27.5.1"
|
||||||
|
pretty-format "^27.5.1"
|
||||||
|
|
||||||
jest-message-util@^26.6.2:
|
jest-message-util@^26.6.2:
|
||||||
version "26.6.2"
|
version "26.6.2"
|
||||||
resolved "https://registry.yarnpkg.com/jest-message-util/-/jest-message-util-26.6.2.tgz#58173744ad6fc0506b5d21150b9be56ef001ca07"
|
resolved "https://registry.yarnpkg.com/jest-message-util/-/jest-message-util-26.6.2.tgz#58173744ad6fc0506b5d21150b9be56ef001ca07"
|
||||||
|
@ -4104,6 +4160,15 @@ pretty-format@^26.6.2:
|
||||||
ansi-styles "^4.0.0"
|
ansi-styles "^4.0.0"
|
||||||
react-is "^17.0.1"
|
react-is "^17.0.1"
|
||||||
|
|
||||||
|
pretty-format@^27.0.0, pretty-format@^27.5.1:
|
||||||
|
version "27.5.1"
|
||||||
|
resolved "https://registry.yarnpkg.com/pretty-format/-/pretty-format-27.5.1.tgz#2181879fdea51a7a5851fb39d920faa63f01d88e"
|
||||||
|
integrity sha512-Qb1gy5OrP5+zDf2Bvnzdl3jsTf1qXVMazbvCoKhtKqVs4/YK4ozX4gKQJJVyNe+cajNPn0KoC0MC3FUmaHWEmQ==
|
||||||
|
dependencies:
|
||||||
|
ansi-regex "^5.0.1"
|
||||||
|
ansi-styles "^5.0.0"
|
||||||
|
react-is "^17.0.1"
|
||||||
|
|
||||||
private@^0.1.6, private@~0.1.5:
|
private@^0.1.6, private@~0.1.5:
|
||||||
version "0.1.8"
|
version "0.1.8"
|
||||||
resolved "https://registry.yarnpkg.com/private/-/private-0.1.8.tgz#2381edb3689f7a53d653190060fcf822d2f368ff"
|
resolved "https://registry.yarnpkg.com/private/-/private-0.1.8.tgz#2381edb3689f7a53d653190060fcf822d2f368ff"
|
||||||
|
@ -5041,6 +5106,11 @@ typedarray-to-buffer@^3.1.5:
|
||||||
dependencies:
|
dependencies:
|
||||||
is-typedarray "^1.0.0"
|
is-typedarray "^1.0.0"
|
||||||
|
|
||||||
|
typescript@^4.5.5:
|
||||||
|
version "4.6.4"
|
||||||
|
resolved "https://registry.yarnpkg.com/typescript/-/typescript-4.6.4.tgz#caa78bbc3a59e6a5c510d35703f6a09877ce45e9"
|
||||||
|
integrity sha512-9ia/jWHIEbo49HfjrLGfKbZSuWo9iTMwXO+Ca3pRsSpbsMbc7/IU8NKdCZVRRBafVPGnoJeFL76ZOAA84I9fEg==
|
||||||
|
|
||||||
uid2@0.0.x:
|
uid2@0.0.x:
|
||||||
version "0.0.4"
|
version "0.0.4"
|
||||||
resolved "https://registry.yarnpkg.com/uid2/-/uid2-0.0.4.tgz#033f3b1d5d32505f5ce5f888b9f3b667123c0a44"
|
resolved "https://registry.yarnpkg.com/uid2/-/uid2-0.0.4.tgz#033f3b1d5d32505f5ce5f888b9f3b667123c0a44"
|
||||||
|
|
|
@ -1,4 +1,4 @@
|
||||||
declare module "@budibase/backend-core"
|
// declare module "@budibase/backend-core"
|
||||||
declare module "@budibase/backend-core/tenancy"
|
declare module "@budibase/backend-core/tenancy"
|
||||||
declare module "@budibase/backend-core/db"
|
declare module "@budibase/backend-core/db"
|
||||||
declare module "@budibase/backend-core/context"
|
declare module "@budibase/backend-core/context"
|
||||||
|
|
|
@ -1014,10 +1014,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/backend-core@1.0.124-alpha.0":
|
"@budibase/backend-core@1.0.126-alpha.0":
|
||||||
version "1.0.124-alpha.0"
|
version "1.0.126-alpha.0"
|
||||||
resolved "https://registry.yarnpkg.com/@budibase/backend-core/-/backend-core-1.0.124-alpha.0.tgz#33a9408206088da49154710910dafc8088d864d2"
|
resolved "https://registry.yarnpkg.com/@budibase/backend-core/-/backend-core-1.0.126-alpha.0.tgz#1e0968c685420592e1a7b3c12362075bd96fba57"
|
||||||
integrity sha512-0ZUkDeqaoXS9qyK91SjwokYEA1wUPhi48nFE0+UwBloF8i7zVDFp2kOX7VNUrUer4gLuND9BoihEdpqsdQDvAg==
|
integrity sha512-35X/+B2IPvl6WZR0ztl6u6yz049TwEZrs4+BSp/euqRCzntVKuhfsN4dR+dDV/WGvOywrcARPCl28ubE7dLI8g==
|
||||||
dependencies:
|
dependencies:
|
||||||
"@techpass/passport-openidconnect" "^0.3.0"
|
"@techpass/passport-openidconnect" "^0.3.0"
|
||||||
aws-sdk "^2.901.0"
|
aws-sdk "^2.901.0"
|
||||||
|
@ -1091,12 +1091,12 @@
|
||||||
svelte-flatpickr "^3.2.3"
|
svelte-flatpickr "^3.2.3"
|
||||||
svelte-portal "^1.0.0"
|
svelte-portal "^1.0.0"
|
||||||
|
|
||||||
"@budibase/pro@1.0.124-alpha.0":
|
"@budibase/pro@1.0.126-alpha.0":
|
||||||
version "1.0.124-alpha.0"
|
version "1.0.126-alpha.0"
|
||||||
resolved "https://registry.yarnpkg.com/@budibase/pro/-/pro-1.0.124-alpha.0.tgz#6287a51fa7c19754e44374c209c4aa3480fc3ac9"
|
resolved "https://registry.yarnpkg.com/@budibase/pro/-/pro-1.0.126-alpha.0.tgz#b9b0d73ecbb5e878efafef3289409448a4884f19"
|
||||||
integrity sha512-EgMuh+XSd/9tb3Ej9EZa4Y8hgiS6fHG+tuUwUcTuP6zvHbTijQGPb9075yImUbSc10bS3o41AP2qa2/ZdZKV2w==
|
integrity sha512-+2aSs0LicKyWu+3A+b7eZXNhaPEkVrGUVtqUmfyLiqhnYM6ICVCBQJOxYQX08fpXq++icUfHoye4Me03aKSnKw==
|
||||||
dependencies:
|
dependencies:
|
||||||
"@budibase/backend-core" "1.0.124-alpha.0"
|
"@budibase/backend-core" "1.0.126-alpha.0"
|
||||||
node-fetch "^2.6.1"
|
node-fetch "^2.6.1"
|
||||||
|
|
||||||
"@budibase/standard-components@^0.9.139":
|
"@budibase/standard-components@^0.9.139":
|
||||||
|
|
|
@ -293,10 +293,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/backend-core@1.0.124-alpha.0":
|
"@budibase/backend-core@1.0.126-alpha.0":
|
||||||
version "1.0.124-alpha.0"
|
version "1.0.126-alpha.0"
|
||||||
resolved "https://registry.yarnpkg.com/@budibase/backend-core/-/backend-core-1.0.124-alpha.0.tgz#33a9408206088da49154710910dafc8088d864d2"
|
resolved "https://registry.yarnpkg.com/@budibase/backend-core/-/backend-core-1.0.126-alpha.0.tgz#1e0968c685420592e1a7b3c12362075bd96fba57"
|
||||||
integrity sha512-0ZUkDeqaoXS9qyK91SjwokYEA1wUPhi48nFE0+UwBloF8i7zVDFp2kOX7VNUrUer4gLuND9BoihEdpqsdQDvAg==
|
integrity sha512-35X/+B2IPvl6WZR0ztl6u6yz049TwEZrs4+BSp/euqRCzntVKuhfsN4dR+dDV/WGvOywrcARPCl28ubE7dLI8g==
|
||||||
dependencies:
|
dependencies:
|
||||||
"@techpass/passport-openidconnect" "^0.3.0"
|
"@techpass/passport-openidconnect" "^0.3.0"
|
||||||
aws-sdk "^2.901.0"
|
aws-sdk "^2.901.0"
|
||||||
|
@ -321,12 +321,12 @@
|
||||||
uuid "^8.3.2"
|
uuid "^8.3.2"
|
||||||
zlib "^1.0.5"
|
zlib "^1.0.5"
|
||||||
|
|
||||||
"@budibase/pro@1.0.124-alpha.0":
|
"@budibase/pro@1.0.126-alpha.0":
|
||||||
version "1.0.124-alpha.0"
|
version "1.0.126-alpha.0"
|
||||||
resolved "https://registry.yarnpkg.com/@budibase/pro/-/pro-1.0.124-alpha.0.tgz#6287a51fa7c19754e44374c209c4aa3480fc3ac9"
|
resolved "https://registry.yarnpkg.com/@budibase/pro/-/pro-1.0.126-alpha.0.tgz#b9b0d73ecbb5e878efafef3289409448a4884f19"
|
||||||
integrity sha512-EgMuh+XSd/9tb3Ej9EZa4Y8hgiS6fHG+tuUwUcTuP6zvHbTijQGPb9075yImUbSc10bS3o41AP2qa2/ZdZKV2w==
|
integrity sha512-+2aSs0LicKyWu+3A+b7eZXNhaPEkVrGUVtqUmfyLiqhnYM6ICVCBQJOxYQX08fpXq++icUfHoye4Me03aKSnKw==
|
||||||
dependencies:
|
dependencies:
|
||||||
"@budibase/backend-core" "1.0.124-alpha.0"
|
"@budibase/backend-core" "1.0.126-alpha.0"
|
||||||
node-fetch "^2.6.1"
|
node-fetch "^2.6.1"
|
||||||
|
|
||||||
"@cspotcode/source-map-consumer@0.8.0":
|
"@cspotcode/source-map-consumer@0.8.0":
|
||||||
|
|
Loading…
Reference in New Issue