Merge branch 'master' into tests/shared-core-ci

This commit is contained in:
Adria Navarro 2024-03-19 23:42:28 +01:00 committed by GitHub
commit 7b5220116b
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
11 changed files with 34 additions and 22 deletions

View File

@ -39,7 +39,6 @@
"extends": ["eslint:recommended"], "extends": ["eslint:recommended"],
"rules": { "rules": {
"no-unused-vars": "off", "no-unused-vars": "off",
"no-case-declarations": "off",
"no-undef": "off", "no-undef": "off",
"no-prototype-builtins": "off", "no-prototype-builtins": "off",
"local-rules/no-budibase-imports": "error" "local-rules/no-budibase-imports": "error"
@ -56,7 +55,6 @@
}, },
"rules": { "rules": {
"no-unused-vars": "off", "no-unused-vars": "off",
"no-case-declarations": "off",
"no-undef": "off", "no-undef": "off",
"no-prototype-builtins": "off", "no-prototype-builtins": "off",
"local-rules/no-test-com": "error", "local-rules/no-test-com": "error",

View File

@ -133,7 +133,7 @@ export async function refreshOAuthToken(
configId?: string configId?: string
): Promise<RefreshResponse> { ): Promise<RefreshResponse> {
switch (providerType) { switch (providerType) {
case SSOProviderType.OIDC: case SSOProviderType.OIDC: {
if (!configId) { if (!configId) {
return { err: { data: "OIDC config id not provided" } } return { err: { data: "OIDC config id not provided" } }
} }
@ -142,7 +142,8 @@ export async function refreshOAuthToken(
return { err: { data: "OIDC configuration not found" } } return { err: { data: "OIDC configuration not found" } }
} }
return refreshOIDCAccessToken(oidcConfig, refreshToken) return refreshOIDCAccessToken(oidcConfig, refreshToken)
case SSOProviderType.GOOGLE: }
case SSOProviderType.GOOGLE: {
let googleConfig = await configs.getGoogleConfig() let googleConfig = await configs.getGoogleConfig()
if (!googleConfig) { if (!googleConfig) {
return { err: { data: "Google configuration not found" } } return { err: { data: "Google configuration not found" } }
@ -150,6 +151,7 @@ export async function refreshOAuthToken(
return refreshGoogleAccessToken(googleConfig, refreshToken) return refreshGoogleAccessToken(googleConfig, refreshToken)
} }
} }
}
// TODO: Refactor to use user save function instead to prevent the need for // TODO: Refactor to use user save function instead to prevent the need for
// manually saving and invalidating on callback // manually saving and invalidating on callback

View File

@ -39,19 +39,21 @@ export async function create(ctx: any) {
let name = "PLUGIN_" + Math.floor(100000 + Math.random() * 900000) let name = "PLUGIN_" + Math.floor(100000 + Math.random() * 900000)
switch (source) { switch (source) {
case PluginSource.NPM: case PluginSource.NPM: {
const { metadata: metadataNpm, directory: directoryNpm } = const { metadata: metadataNpm, directory: directoryNpm } =
await npmUpload(url, name) await npmUpload(url, name)
metadata = metadataNpm metadata = metadataNpm
directory = directoryNpm directory = directoryNpm
break break
case PluginSource.GITHUB: }
case PluginSource.GITHUB: {
const { metadata: metadataGithub, directory: directoryGithub } = const { metadata: metadataGithub, directory: directoryGithub } =
await githubUpload(url, name, githubToken) await githubUpload(url, name, githubToken)
metadata = metadataGithub metadata = metadataGithub
directory = directoryGithub directory = directoryGithub
break break
case PluginSource.URL: }
case PluginSource.URL: {
const headersObj = headers || {} const headersObj = headers || {}
const { metadata: metadataUrl, directory: directoryUrl } = const { metadata: metadataUrl, directory: directoryUrl } =
await urlUpload(url, name, headersObj) await urlUpload(url, name, headersObj)
@ -59,6 +61,7 @@ export async function create(ctx: any) {
directory = directoryUrl directory = directoryUrl
break break
} }
}
pluginCore.validate(metadata?.schema) pluginCore.validate(metadata?.schema)

View File

@ -109,13 +109,14 @@ export class OpenAPI2 extends OpenAPISource {
for (let param of allParams) { for (let param of allParams) {
if (parameterNotRef(param)) { if (parameterNotRef(param)) {
switch (param.in) { switch (param.in) {
case "query": case "query": {
let prefix = "" let prefix = ""
if (queryString) { if (queryString) {
prefix = "&" prefix = "&"
} }
queryString = `${queryString}${prefix}${param.name}={{${param.name}}}` queryString = `${queryString}${prefix}${param.name}={{${param.name}}}`
break break
}
case "header": case "header":
headers[param.name] = `{{${param.name}}}` headers[param.name] = `{{${param.name}}}`
break break
@ -125,7 +126,7 @@ export class OpenAPI2 extends OpenAPISource {
case "formData": case "formData":
// future enhancement // future enhancement
break break
case "body": case "body": {
// set the request body to the example provided // set the request body to the example provided
// future enhancement: generate an example from the schema // future enhancement: generate an example from the schema
let bodyParam: OpenAPIV2.InBodyParameterObject = let bodyParam: OpenAPIV2.InBodyParameterObject =
@ -136,6 +137,7 @@ export class OpenAPI2 extends OpenAPISource {
} }
break break
} }
}
// add the parameter if it can be bound in our config // add the parameter if it can be bound in our config
if (["query", "header", "path"].includes(param.in)) { if (["query", "header", "path"].includes(param.in)) {

View File

@ -161,13 +161,14 @@ export class OpenAPI3 extends OpenAPISource {
for (let param of allParams) { for (let param of allParams) {
if (parameterNotRef(param)) { if (parameterNotRef(param)) {
switch (param.in) { switch (param.in) {
case "query": case "query": {
let prefix = "" let prefix = ""
if (queryString) { if (queryString) {
prefix = "&" prefix = "&"
} }
queryString = `${queryString}${prefix}${param.name}={{${param.name}}}` queryString = `${queryString}${prefix}${param.name}={{${param.name}}}`
break break
}
case "header": case "header":
headers[param.name] = `{{${param.name}}}` headers[param.name] = `{{${param.name}}}`
break break

View File

@ -59,7 +59,7 @@ function generateSchema(
case FieldType.BARCODEQR: case FieldType.BARCODEQR:
schema.text(key) schema.text(key)
break break
case FieldType.BB_REFERENCE: case FieldType.BB_REFERENCE: {
const subtype = column.subtype as FieldSubtype const subtype = column.subtype as FieldSubtype
switch (subtype) { switch (subtype) {
case FieldSubtype.USER: case FieldSubtype.USER:
@ -72,6 +72,7 @@ function generateSchema(
throw utils.unreachable(subtype) throw utils.unreachable(subtype)
} }
break break
}
case FieldType.NUMBER: case FieldType.NUMBER:
// if meta is specified then this is a junction table entry // if meta is specified then this is a junction table entry
if (column.meta && column.meta.toKey && column.meta.toTable) { if (column.meta && column.meta.toKey && column.meta.toTable) {

View File

@ -254,7 +254,7 @@ class SqlServerIntegration extends Sql implements DatasourcePlus {
} }
switch (this.config.authType) { switch (this.config.authType) {
case MSSQLConfigAuthType.AZURE_ACTIVE_DIRECTORY: case MSSQLConfigAuthType.AZURE_ACTIVE_DIRECTORY: {
const { clientId, tenantId, clientSecret } = const { clientId, tenantId, clientSecret } =
this.config.adConfig || {} this.config.adConfig || {}
const clientApp = new ConfidentialClientApplication({ const clientApp = new ConfidentialClientApplication({
@ -276,7 +276,8 @@ class SqlServerIntegration extends Sql implements DatasourcePlus {
}, },
} }
break break
case MSSQLConfigAuthType.NTLM: }
case MSSQLConfigAuthType.NTLM: {
const { domain, trustServerCertificate } = const { domain, trustServerCertificate } =
this.config.ntlmConfig || {} this.config.ntlmConfig || {}
clientCfg.authentication = { clientCfg.authentication = {
@ -288,6 +289,7 @@ class SqlServerIntegration extends Sql implements DatasourcePlus {
clientCfg.options ??= {} clientCfg.options ??= {}
clientCfg.options.trustServerCertificate = !!trustServerCertificate clientCfg.options.trustServerCertificate = !!trustServerCertificate
break break
}
case null: case null:
case undefined: case undefined:
break break

View File

@ -283,7 +283,7 @@ class RestIntegration implements IntegrationBase {
// content type defaults to plaintext // content type defaults to plaintext
input.body = string input.body = string
break break
case BodyTypes.ENCODED: case BodyTypes.ENCODED: {
const params = new URLSearchParams() const params = new URLSearchParams()
for (let [key, value] of Object.entries(object)) { for (let [key, value] of Object.entries(object)) {
params.append(key, value as string) params.append(key, value as string)
@ -293,7 +293,8 @@ class RestIntegration implements IntegrationBase {
}) })
input.body = params input.body = params
break break
case BodyTypes.FORM_DATA: }
case BodyTypes.FORM_DATA: {
const form = new FormData() const form = new FormData()
for (let [key, value] of Object.entries(object)) { for (let [key, value] of Object.entries(object)) {
form.append(key, value) form.append(key, value)
@ -303,6 +304,7 @@ class RestIntegration implements IntegrationBase {
}) })
input.body = form input.body = form
break break
}
case BodyTypes.XML: case BodyTypes.XML:
if (object != null && Object.keys(object).length) { if (object != null && Object.keys(object).length) {
string = new XmlBuilder().buildObject(object) string = new XmlBuilder().buildObject(object)

View File

@ -66,7 +66,7 @@ export function searchInputMapping(table: Table, options: SearchParams) {
} }
for (let [key, column] of Object.entries(table.schema)) { for (let [key, column] of Object.entries(table.schema)) {
switch (column.type) { switch (column.type) {
case FieldType.BB_REFERENCE: case FieldType.BB_REFERENCE: {
const subtype = column.subtype as FieldSubtype const subtype = column.subtype as FieldSubtype
switch (subtype) { switch (subtype) {
case FieldSubtype.USER: case FieldSubtype.USER:
@ -79,5 +79,6 @@ export function searchInputMapping(table: Table, options: SearchParams) {
break break
} }
} }
}
return options return options
} }

View File

@ -41,7 +41,7 @@ export async function processInputBBReferences(
switch (subtype) { switch (subtype) {
case FieldSubtype.USER: case FieldSubtype.USER:
case FieldSubtype.USERS: case FieldSubtype.USERS: {
const { notFoundIds } = await cache.user.getUsers(referenceIds) const { notFoundIds } = await cache.user.getUsers(referenceIds)
if (notFoundIds?.length) { if (notFoundIds?.length) {
@ -53,7 +53,7 @@ export async function processInputBBReferences(
} }
return referenceIds.join(",") || null return referenceIds.join(",") || null
}
default: default:
throw utils.unreachable(subtype) throw utils.unreachable(subtype)
} }
@ -73,7 +73,7 @@ export async function processOutputBBReferences(
switch (subtype) { switch (subtype) {
case FieldSubtype.USER: case FieldSubtype.USER:
case FieldSubtype.USERS: case FieldSubtype.USERS: {
const { users } = await cache.user.getUsers(ids) const { users } = await cache.user.getUsers(ids)
if (!users.length) { if (!users.length) {
return undefined return undefined
@ -86,7 +86,7 @@ export async function processOutputBBReferences(
firstName: u.firstName, firstName: u.firstName,
lastName: u.lastName, lastName: u.lastName,
})) }))
}
default: default:
throw utils.unreachable(subtype) throw utils.unreachable(subtype)
} }

View File

@ -191,7 +191,7 @@ function isValidBBReference(
): boolean { ): boolean {
switch (columnSubtype) { switch (columnSubtype) {
case FieldSubtype.USER: case FieldSubtype.USER:
case FieldSubtype.USERS: case FieldSubtype.USERS: {
if (typeof columnData !== "string") { if (typeof columnData !== "string") {
return false return false
} }
@ -208,7 +208,7 @@ function isValidBBReference(
user => !db.isGlobalUserID(user._id) user => !db.isGlobalUserID(user._id)
) )
return !constainsWrongId return !constainsWrongId
}
default: default:
throw utils.unreachable(columnSubtype) throw utils.unreachable(columnSubtype)
} }