@budibase/backend-core 2.32.5 → 2.32.7
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/index.js +38 -25
- package/dist/index.js.map +2 -2
- package/dist/index.js.meta.json +1 -1
- package/dist/package.json +4 -4
- package/dist/plugins.js.map +1 -1
- package/dist/plugins.js.meta.json +1 -1
- package/dist/src/configs/configs.d.ts +2 -1
- package/dist/src/configs/configs.js +7 -0
- package/dist/src/configs/configs.js.map +1 -1
- package/dist/src/environment.d.ts +1 -0
- package/dist/src/environment.js +1 -1
- package/dist/src/environment.js.map +1 -1
- package/dist/src/features/index.js +4 -1
- package/dist/src/features/index.js.map +1 -1
- package/dist/src/sql/sql.js +29 -21
- package/dist/src/sql/sql.js.map +1 -1
- package/dist/src/sql/sqlTable.d.ts +3 -0
- package/dist/src/sql/sqlTable.js +9 -1
- package/dist/src/sql/sqlTable.js.map +1 -1
- package/dist/tests/core/utilities/mocks/licenses.d.ts +0 -1
- package/dist/tests/core/utilities/mocks/licenses.js +1 -5
- package/dist/tests/core/utilities/mocks/licenses.js.map +1 -1
- package/package.json +4 -4
- package/src/configs/configs.ts +7 -0
- package/src/environment.ts +1 -0
- package/src/features/index.ts +6 -1
- package/src/features/tests/features.spec.ts +1 -0
- package/src/sql/sql.ts +43 -31
- package/src/sql/sqlTable.ts +12 -1
- package/tests/core/utilities/mocks/licenses.ts +0 -4
package/dist/index.js
CHANGED
|
@@ -54228,6 +54228,7 @@ var configs_exports = {};
|
|
|
54228
54228
|
__export(configs_exports, {
|
|
54229
54229
|
analyticsEnabled: () => analyticsEnabled,
|
|
54230
54230
|
generateConfigID: () => generateConfigID,
|
|
54231
|
+
getAIConfig: () => getAIConfig,
|
|
54231
54232
|
getConfig: () => getConfig,
|
|
54232
54233
|
getDefaultGoogleConfig: () => getDefaultGoogleConfig,
|
|
54233
54234
|
getGoogleConfig: () => getGoogleConfig,
|
|
@@ -56302,6 +56303,7 @@ var environment = {
|
|
|
56302
56303
|
POSTHOG_TOKEN: process.env.POSTHOG_TOKEN,
|
|
56303
56304
|
POSTHOG_PERSONAL_TOKEN: process.env.POSTHOG_PERSONAL_TOKEN,
|
|
56304
56305
|
POSTHOG_API_HOST: process.env.POSTHOG_API_HOST || "https://us.i.posthog.com",
|
|
56306
|
+
POSTHOG_FEATURE_FLAGS_ENABLED: process.env.POSTHOG_FEATURE_FLAGS_ENABLED,
|
|
56305
56307
|
ENABLE_ANALYTICS: process.env.ENABLE_ANALYTICS,
|
|
56306
56308
|
TENANT_FEATURE_FLAGS: process.env.TENANT_FEATURE_FLAGS,
|
|
56307
56309
|
CLOUDFRONT_CDN: process.env.CLOUDFRONT_CDN,
|
|
@@ -59815,7 +59817,7 @@ var import_posthog_node = require("posthog-node");
|
|
|
59815
59817
|
var import_dd_trace3 = __toESM(require("dd-trace"));
|
|
59816
59818
|
var posthog;
|
|
59817
59819
|
function init4(opts) {
|
|
59818
|
-
if (environment_default.POSTHOG_TOKEN && environment_default.POSTHOG_API_HOST && !environment_default.SELF_HOSTED) {
|
|
59820
|
+
if (environment_default.POSTHOG_TOKEN && environment_default.POSTHOG_API_HOST && !environment_default.SELF_HOSTED && environment_default.POSTHOG_FEATURE_FLAGS_ENABLED) {
|
|
59819
59821
|
console.log("initializing posthog client...");
|
|
59820
59822
|
posthog = new import_posthog_node.PostHog(environment_default.POSTHOG_TOKEN, {
|
|
59821
59823
|
host: environment_default.POSTHOG_API_HOST,
|
|
@@ -66197,6 +66199,9 @@ async function getSCIMConfig() {
|
|
|
66197
66199
|
const config = await getConfig("scim" /* SCIM */);
|
|
66198
66200
|
return config?.config;
|
|
66199
66201
|
}
|
|
66202
|
+
async function getAIConfig() {
|
|
66203
|
+
return getConfig("ai" /* AI */);
|
|
66204
|
+
}
|
|
66200
66205
|
|
|
66201
66206
|
// src/migrations/index.ts
|
|
66202
66207
|
var migrations_exports = {};
|
|
@@ -67983,9 +67988,17 @@ var SqlTableQueryBuilder = class {
|
|
|
67983
67988
|
constructor(client) {
|
|
67984
67989
|
this.sqlClient = client;
|
|
67985
67990
|
}
|
|
67986
|
-
|
|
67991
|
+
getBaseSqlClient() {
|
|
67987
67992
|
return this.sqlClient;
|
|
67988
67993
|
}
|
|
67994
|
+
getSqlClient() {
|
|
67995
|
+
return this.extendedSqlClient || this.sqlClient;
|
|
67996
|
+
}
|
|
67997
|
+
// if working in a database like MySQL with many variants (MariaDB)
|
|
67998
|
+
// we can set another client which overrides the base one
|
|
67999
|
+
setExtendedSqlClient(client) {
|
|
68000
|
+
this.extendedSqlClient = client;
|
|
68001
|
+
}
|
|
67989
68002
|
/**
|
|
67990
68003
|
* @param json the input JSON structure from which an SQL query will be built.
|
|
67991
68004
|
* @return the operation that was found in the JSON.
|
|
@@ -68137,6 +68150,7 @@ var InternalBuilder = class {
|
|
|
68137
68150
|
return `"${str}"`;
|
|
68138
68151
|
case "mssql" /* MS_SQL */:
|
|
68139
68152
|
return `[${str}]`;
|
|
68153
|
+
case "mariadb" /* MARIADB */:
|
|
68140
68154
|
case "mysql2" /* MY_SQL */:
|
|
68141
68155
|
return `\`${str}\``;
|
|
68142
68156
|
}
|
|
@@ -68444,7 +68458,7 @@ var InternalBuilder = class {
|
|
|
68444
68458
|
)}${wrap}, FALSE)`
|
|
68445
68459
|
);
|
|
68446
68460
|
});
|
|
68447
|
-
} else if (this.client === "mysql2" /* MY_SQL */) {
|
|
68461
|
+
} else if (this.client === "mysql2" /* MY_SQL */ || this.client === "mariadb" /* MARIADB */) {
|
|
68448
68462
|
const jsonFnc = any ? "JSON_OVERLAPS" : "JSON_CONTAINS";
|
|
68449
68463
|
iterate(mode, (q2, key, value) => {
|
|
68450
68464
|
return q2[rawFnc](
|
|
@@ -68747,7 +68761,7 @@ var InternalBuilder = class {
|
|
|
68747
68761
|
continue;
|
|
68748
68762
|
}
|
|
68749
68763
|
const relatedTable = meta.tables?.[toTable];
|
|
68750
|
-
const toAlias = aliases?.[toTable] || toTable, fromAlias = aliases?.[fromTable] || fromTable;
|
|
68764
|
+
const toAlias = aliases?.[toTable] || toTable, fromAlias = aliases?.[fromTable] || fromTable, throughAlias = throughTable && aliases?.[throughTable] || throughTable;
|
|
68751
68765
|
let toTableWithSchema = this.tableNameWithSchema(toTable, {
|
|
68752
68766
|
alias: toAlias,
|
|
68753
68767
|
schema: endpoint.schema
|
|
@@ -68766,29 +68780,25 @@ var InternalBuilder = class {
|
|
|
68766
68780
|
);
|
|
68767
68781
|
const fieldList = relationshipFields.map((field) => this.buildJsonField(field)).join(",");
|
|
68768
68782
|
const primaryKey = `${toAlias}.${toPrimary || toKey}`;
|
|
68769
|
-
let subQuery = knex3.from(toTableWithSchema).
|
|
68770
|
-
|
|
68771
|
-
|
|
68783
|
+
let subQuery = knex3.from(toTableWithSchema).orderBy(primaryKey);
|
|
68784
|
+
const isManyToMany = throughTable && toPrimary && fromPrimary;
|
|
68785
|
+
let correlatedTo = isManyToMany ? `${throughAlias}.${fromKey}` : `${toAlias}.${toKey}`, correlatedFrom = isManyToMany ? `${fromAlias}.${fromPrimary}` : `${fromAlias}.${fromKey}`;
|
|
68786
|
+
if (isManyToMany) {
|
|
68772
68787
|
let throughTableWithSchema = this.tableNameWithSchema(throughTable, {
|
|
68773
68788
|
alias: throughAlias,
|
|
68774
68789
|
schema: endpoint.schema
|
|
68775
68790
|
});
|
|
68776
68791
|
subQuery = subQuery.join(throughTableWithSchema, function() {
|
|
68777
68792
|
this.on(`${toAlias}.${toPrimary}`, "=", `${throughAlias}.${toKey}`);
|
|
68778
|
-
})
|
|
68779
|
-
`${throughAlias}.${fromKey}`,
|
|
68780
|
-
"=",
|
|
68781
|
-
knex3.raw(this.quotedIdentifier(`${fromAlias}.${fromPrimary}`))
|
|
68782
|
-
);
|
|
68783
|
-
} else {
|
|
68784
|
-
subQuery = subQuery.where(
|
|
68785
|
-
`${toAlias}.${toKey}`,
|
|
68786
|
-
"=",
|
|
68787
|
-
knex3.raw(this.quotedIdentifier(`${fromAlias}.${fromKey}`))
|
|
68788
|
-
);
|
|
68793
|
+
});
|
|
68789
68794
|
}
|
|
68795
|
+
subQuery = subQuery.where(
|
|
68796
|
+
correlatedTo,
|
|
68797
|
+
"=",
|
|
68798
|
+
knex3.raw(this.quotedIdentifier(correlatedFrom))
|
|
68799
|
+
);
|
|
68790
68800
|
const standardWrap = (select) => {
|
|
68791
|
-
subQuery = subQuery.select(`${toAlias}.*`);
|
|
68801
|
+
subQuery = subQuery.select(`${toAlias}.*`).limit(getRelationshipLimit());
|
|
68792
68802
|
return knex3.select(knex3.raw(select)).from({
|
|
68793
68803
|
[toAlias]: subQuery
|
|
68794
68804
|
});
|
|
@@ -68806,11 +68816,14 @@ var InternalBuilder = class {
|
|
|
68806
68816
|
`json_agg(json_build_object(${fieldList}))`
|
|
68807
68817
|
);
|
|
68808
68818
|
break;
|
|
68809
|
-
case "
|
|
68819
|
+
case "mariadb" /* MARIADB */:
|
|
68810
68820
|
wrapperQuery = subQuery.select(
|
|
68811
|
-
knex3.raw(
|
|
68821
|
+
knex3.raw(
|
|
68822
|
+
`json_arrayagg(json_object(${fieldList}) LIMIT ${getRelationshipLimit()})`
|
|
68823
|
+
)
|
|
68812
68824
|
);
|
|
68813
68825
|
break;
|
|
68826
|
+
case "mysql2" /* MY_SQL */:
|
|
68814
68827
|
case "oracledb" /* ORACLE */:
|
|
68815
68828
|
wrapperQuery = standardWrap(
|
|
68816
68829
|
`json_arrayagg(json_object(${fieldList}))`
|
|
@@ -68819,7 +68832,7 @@ var InternalBuilder = class {
|
|
|
68819
68832
|
case "mssql" /* MS_SQL */:
|
|
68820
68833
|
wrapperQuery = knex3.raw(
|
|
68821
68834
|
`(SELECT ${this.quote(toAlias)} = (${knex3.select(`${fromAlias}.*`).from({
|
|
68822
|
-
[fromAlias]: subQuery.select(`${toAlias}.*`)
|
|
68835
|
+
[fromAlias]: subQuery.select(`${toAlias}.*`).limit(getRelationshipLimit())
|
|
68823
68836
|
})} FOR JSON PATH))`
|
|
68824
68837
|
);
|
|
68825
68838
|
break;
|
|
@@ -68930,7 +68943,7 @@ var InternalBuilder = class {
|
|
|
68930
68943
|
return query;
|
|
68931
68944
|
}
|
|
68932
68945
|
const parsedBody = body2.map((row) => this.parseBody(row));
|
|
68933
|
-
if (this.client === "pg" /* POSTGRES */ || this.client === "sqlite3" /* SQL_LITE */ || this.client === "mysql2" /* MY_SQL */) {
|
|
68946
|
+
if (this.client === "pg" /* POSTGRES */ || this.client === "sqlite3" /* SQL_LITE */ || this.client === "mysql2" /* MY_SQL */ || this.client === "mariadb" /* MARIADB */) {
|
|
68934
68947
|
const primary = this.table.primary;
|
|
68935
68948
|
if (!primary) {
|
|
68936
68949
|
throw new Error("Primary key is required for upsert");
|
|
@@ -69034,7 +69047,7 @@ var SqlQueryBuilder = class extends sqlTable_default {
|
|
|
69034
69047
|
_query(json, opts = {}) {
|
|
69035
69048
|
const sqlClient = this.getSqlClient();
|
|
69036
69049
|
const config = {
|
|
69037
|
-
client:
|
|
69050
|
+
client: this.getBaseSqlClient()
|
|
69038
69051
|
};
|
|
69039
69052
|
if (sqlClient === "sqlite3" /* SQL_LITE */ || sqlClient === "oracledb" /* ORACLE */) {
|
|
69040
69053
|
config.useNullAsDefault = true;
|
|
@@ -69136,7 +69149,7 @@ var SqlQueryBuilder = class extends sqlTable_default {
|
|
|
69136
69149
|
let id;
|
|
69137
69150
|
if (sqlClient === "mssql" /* MS_SQL */) {
|
|
69138
69151
|
id = results?.[0].id;
|
|
69139
|
-
} else if (sqlClient === "mysql2" /* MY_SQL */) {
|
|
69152
|
+
} else if (sqlClient === "mysql2" /* MY_SQL */ || sqlClient === "mariadb" /* MARIADB */) {
|
|
69140
69153
|
id = results?.insertId;
|
|
69141
69154
|
}
|
|
69142
69155
|
row = processFn(
|