Merge branch 'master' into tests/shared-core-ci
This commit is contained in:
commit
7b5220116b
|
@ -39,7 +39,6 @@
|
|||
"extends": ["eslint:recommended"],
|
||||
"rules": {
|
||||
"no-unused-vars": "off",
|
||||
"no-case-declarations": "off",
|
||||
"no-undef": "off",
|
||||
"no-prototype-builtins": "off",
|
||||
"local-rules/no-budibase-imports": "error"
|
||||
|
@ -56,7 +55,6 @@
|
|||
},
|
||||
"rules": {
|
||||
"no-unused-vars": "off",
|
||||
"no-case-declarations": "off",
|
||||
"no-undef": "off",
|
||||
"no-prototype-builtins": "off",
|
||||
"local-rules/no-test-com": "error",
|
||||
|
|
|
@ -133,7 +133,7 @@ export async function refreshOAuthToken(
|
|||
configId?: string
|
||||
): Promise<RefreshResponse> {
|
||||
switch (providerType) {
|
||||
case SSOProviderType.OIDC:
|
||||
case SSOProviderType.OIDC: {
|
||||
if (!configId) {
|
||||
return { err: { data: "OIDC config id not provided" } }
|
||||
}
|
||||
|
@ -142,7 +142,8 @@ export async function refreshOAuthToken(
|
|||
return { err: { data: "OIDC configuration not found" } }
|
||||
}
|
||||
return refreshOIDCAccessToken(oidcConfig, refreshToken)
|
||||
case SSOProviderType.GOOGLE:
|
||||
}
|
||||
case SSOProviderType.GOOGLE: {
|
||||
let googleConfig = await configs.getGoogleConfig()
|
||||
if (!googleConfig) {
|
||||
return { err: { data: "Google configuration not found" } }
|
||||
|
@ -150,6 +151,7 @@ export async function refreshOAuthToken(
|
|||
return refreshGoogleAccessToken(googleConfig, refreshToken)
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
// TODO: Refactor to use user save function instead to prevent the need for
|
||||
// manually saving and invalidating on callback
|
||||
|
|
|
@ -39,19 +39,21 @@ export async function create(ctx: any) {
|
|||
let name = "PLUGIN_" + Math.floor(100000 + Math.random() * 900000)
|
||||
|
||||
switch (source) {
|
||||
case PluginSource.NPM:
|
||||
case PluginSource.NPM: {
|
||||
const { metadata: metadataNpm, directory: directoryNpm } =
|
||||
await npmUpload(url, name)
|
||||
metadata = metadataNpm
|
||||
directory = directoryNpm
|
||||
break
|
||||
case PluginSource.GITHUB:
|
||||
}
|
||||
case PluginSource.GITHUB: {
|
||||
const { metadata: metadataGithub, directory: directoryGithub } =
|
||||
await githubUpload(url, name, githubToken)
|
||||
metadata = metadataGithub
|
||||
directory = directoryGithub
|
||||
break
|
||||
case PluginSource.URL:
|
||||
}
|
||||
case PluginSource.URL: {
|
||||
const headersObj = headers || {}
|
||||
const { metadata: metadataUrl, directory: directoryUrl } =
|
||||
await urlUpload(url, name, headersObj)
|
||||
|
@ -59,6 +61,7 @@ export async function create(ctx: any) {
|
|||
directory = directoryUrl
|
||||
break
|
||||
}
|
||||
}
|
||||
|
||||
pluginCore.validate(metadata?.schema)
|
||||
|
||||
|
|
|
@ -109,13 +109,14 @@ export class OpenAPI2 extends OpenAPISource {
|
|||
for (let param of allParams) {
|
||||
if (parameterNotRef(param)) {
|
||||
switch (param.in) {
|
||||
case "query":
|
||||
case "query": {
|
||||
let prefix = ""
|
||||
if (queryString) {
|
||||
prefix = "&"
|
||||
}
|
||||
queryString = `${queryString}${prefix}${param.name}={{${param.name}}}`
|
||||
break
|
||||
}
|
||||
case "header":
|
||||
headers[param.name] = `{{${param.name}}}`
|
||||
break
|
||||
|
@ -125,7 +126,7 @@ export class OpenAPI2 extends OpenAPISource {
|
|||
case "formData":
|
||||
// future enhancement
|
||||
break
|
||||
case "body":
|
||||
case "body": {
|
||||
// set the request body to the example provided
|
||||
// future enhancement: generate an example from the schema
|
||||
let bodyParam: OpenAPIV2.InBodyParameterObject =
|
||||
|
@ -136,6 +137,7 @@ export class OpenAPI2 extends OpenAPISource {
|
|||
}
|
||||
break
|
||||
}
|
||||
}
|
||||
|
||||
// add the parameter if it can be bound in our config
|
||||
if (["query", "header", "path"].includes(param.in)) {
|
||||
|
|
|
@ -161,13 +161,14 @@ export class OpenAPI3 extends OpenAPISource {
|
|||
for (let param of allParams) {
|
||||
if (parameterNotRef(param)) {
|
||||
switch (param.in) {
|
||||
case "query":
|
||||
case "query": {
|
||||
let prefix = ""
|
||||
if (queryString) {
|
||||
prefix = "&"
|
||||
}
|
||||
queryString = `${queryString}${prefix}${param.name}={{${param.name}}}`
|
||||
break
|
||||
}
|
||||
case "header":
|
||||
headers[param.name] = `{{${param.name}}}`
|
||||
break
|
||||
|
|
|
@ -59,7 +59,7 @@ function generateSchema(
|
|||
case FieldType.BARCODEQR:
|
||||
schema.text(key)
|
||||
break
|
||||
case FieldType.BB_REFERENCE:
|
||||
case FieldType.BB_REFERENCE: {
|
||||
const subtype = column.subtype as FieldSubtype
|
||||
switch (subtype) {
|
||||
case FieldSubtype.USER:
|
||||
|
@ -72,6 +72,7 @@ function generateSchema(
|
|||
throw utils.unreachable(subtype)
|
||||
}
|
||||
break
|
||||
}
|
||||
case FieldType.NUMBER:
|
||||
// if meta is specified then this is a junction table entry
|
||||
if (column.meta && column.meta.toKey && column.meta.toTable) {
|
||||
|
|
|
@ -254,7 +254,7 @@ class SqlServerIntegration extends Sql implements DatasourcePlus {
|
|||
}
|
||||
|
||||
switch (this.config.authType) {
|
||||
case MSSQLConfigAuthType.AZURE_ACTIVE_DIRECTORY:
|
||||
case MSSQLConfigAuthType.AZURE_ACTIVE_DIRECTORY: {
|
||||
const { clientId, tenantId, clientSecret } =
|
||||
this.config.adConfig || {}
|
||||
const clientApp = new ConfidentialClientApplication({
|
||||
|
@ -276,7 +276,8 @@ class SqlServerIntegration extends Sql implements DatasourcePlus {
|
|||
},
|
||||
}
|
||||
break
|
||||
case MSSQLConfigAuthType.NTLM:
|
||||
}
|
||||
case MSSQLConfigAuthType.NTLM: {
|
||||
const { domain, trustServerCertificate } =
|
||||
this.config.ntlmConfig || {}
|
||||
clientCfg.authentication = {
|
||||
|
@ -288,6 +289,7 @@ class SqlServerIntegration extends Sql implements DatasourcePlus {
|
|||
clientCfg.options ??= {}
|
||||
clientCfg.options.trustServerCertificate = !!trustServerCertificate
|
||||
break
|
||||
}
|
||||
case null:
|
||||
case undefined:
|
||||
break
|
||||
|
|
|
@ -283,7 +283,7 @@ class RestIntegration implements IntegrationBase {
|
|||
// content type defaults to plaintext
|
||||
input.body = string
|
||||
break
|
||||
case BodyTypes.ENCODED:
|
||||
case BodyTypes.ENCODED: {
|
||||
const params = new URLSearchParams()
|
||||
for (let [key, value] of Object.entries(object)) {
|
||||
params.append(key, value as string)
|
||||
|
@ -293,7 +293,8 @@ class RestIntegration implements IntegrationBase {
|
|||
})
|
||||
input.body = params
|
||||
break
|
||||
case BodyTypes.FORM_DATA:
|
||||
}
|
||||
case BodyTypes.FORM_DATA: {
|
||||
const form = new FormData()
|
||||
for (let [key, value] of Object.entries(object)) {
|
||||
form.append(key, value)
|
||||
|
@ -303,6 +304,7 @@ class RestIntegration implements IntegrationBase {
|
|||
})
|
||||
input.body = form
|
||||
break
|
||||
}
|
||||
case BodyTypes.XML:
|
||||
if (object != null && Object.keys(object).length) {
|
||||
string = new XmlBuilder().buildObject(object)
|
||||
|
|
|
@ -66,7 +66,7 @@ export function searchInputMapping(table: Table, options: SearchParams) {
|
|||
}
|
||||
for (let [key, column] of Object.entries(table.schema)) {
|
||||
switch (column.type) {
|
||||
case FieldType.BB_REFERENCE:
|
||||
case FieldType.BB_REFERENCE: {
|
||||
const subtype = column.subtype as FieldSubtype
|
||||
switch (subtype) {
|
||||
case FieldSubtype.USER:
|
||||
|
@ -79,5 +79,6 @@ export function searchInputMapping(table: Table, options: SearchParams) {
|
|||
break
|
||||
}
|
||||
}
|
||||
}
|
||||
return options
|
||||
}
|
||||
|
|
|
@ -41,7 +41,7 @@ export async function processInputBBReferences(
|
|||
|
||||
switch (subtype) {
|
||||
case FieldSubtype.USER:
|
||||
case FieldSubtype.USERS:
|
||||
case FieldSubtype.USERS: {
|
||||
const { notFoundIds } = await cache.user.getUsers(referenceIds)
|
||||
|
||||
if (notFoundIds?.length) {
|
||||
|
@ -53,7 +53,7 @@ export async function processInputBBReferences(
|
|||
}
|
||||
|
||||
return referenceIds.join(",") || null
|
||||
|
||||
}
|
||||
default:
|
||||
throw utils.unreachable(subtype)
|
||||
}
|
||||
|
@ -73,7 +73,7 @@ export async function processOutputBBReferences(
|
|||
|
||||
switch (subtype) {
|
||||
case FieldSubtype.USER:
|
||||
case FieldSubtype.USERS:
|
||||
case FieldSubtype.USERS: {
|
||||
const { users } = await cache.user.getUsers(ids)
|
||||
if (!users.length) {
|
||||
return undefined
|
||||
|
@ -86,7 +86,7 @@ export async function processOutputBBReferences(
|
|||
firstName: u.firstName,
|
||||
lastName: u.lastName,
|
||||
}))
|
||||
|
||||
}
|
||||
default:
|
||||
throw utils.unreachable(subtype)
|
||||
}
|
||||
|
|
|
@ -191,7 +191,7 @@ function isValidBBReference(
|
|||
): boolean {
|
||||
switch (columnSubtype) {
|
||||
case FieldSubtype.USER:
|
||||
case FieldSubtype.USERS:
|
||||
case FieldSubtype.USERS: {
|
||||
if (typeof columnData !== "string") {
|
||||
return false
|
||||
}
|
||||
|
@ -208,7 +208,7 @@ function isValidBBReference(
|
|||
user => !db.isGlobalUserID(user._id)
|
||||
)
|
||||
return !constainsWrongId
|
||||
|
||||
}
|
||||
default:
|
||||
throw utils.unreachable(columnSubtype)
|
||||
}
|
||||
|
|
Loading…
Reference in New Issue