@budibase/server 2.7.15 → 2.7.16-alpha.1

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/query.js CHANGED
@@ -11,8 +11,8 @@ var __commonJS = (cb, mod) => function __require() {
11
11
  return mod || (0, cb[__getOwnPropNames(cb)[0]])((mod = { exports: {} }).exports, mod), mod.exports;
12
12
  };
13
13
  var __export = (target, all) => {
14
- for (var name in all)
15
- __defProp(target, name, { get: all[name], enumerable: true });
14
+ for (var name2 in all)
15
+ __defProp(target, name2, { get: all[name2], enumerable: true });
16
16
  };
17
17
  var __copyProps = (to, from, except, desc) => {
18
18
  if (from && typeof from === "object" || typeof from === "function") {
@@ -563,13 +563,13 @@ var init_plan = __esm({
563
563
  var isStaticQuota, isMonthlyQuota, isConstantQuota;
564
564
  var init_quota = __esm({
565
565
  "../types/src/sdk/licensing/quota.ts"() {
566
- isStaticQuota = (quotaType, usageType, name) => {
566
+ isStaticQuota = (quotaType, usageType, name2) => {
567
567
  return quotaType === "usage" /* USAGE */ && usageType === "static" /* STATIC */;
568
568
  };
569
- isMonthlyQuota = (quotaType, usageType, name) => {
569
+ isMonthlyQuota = (quotaType, usageType, name2) => {
570
570
  return quotaType === "usage" /* USAGE */ && usageType === "monthly" /* MONTHLY */;
571
571
  };
572
- isConstantQuota = (quotaType, name) => {
572
+ isConstantQuota = (quotaType, name2) => {
573
573
  return quotaType === "constant" /* CONSTANT */;
574
574
  };
575
575
  }
@@ -679,8 +679,8 @@ var init_locks = __esm({
679
679
  var isDocument;
680
680
  var init_db = __esm({
681
681
  "../types/src/sdk/db.ts"() {
682
- isDocument = (doc) => {
683
- return typeof doc === "object" && doc._id && doc._rev;
682
+ isDocument = (doc2) => {
683
+ return typeof doc2 === "object" && doc2._id && doc2._rev;
684
684
  };
685
685
  }
686
686
  });
@@ -838,6 +838,7 @@ var init_automation2 = __esm({
838
838
  AutomationIOType2["NUMBER"] = "number";
839
839
  AutomationIOType2["ARRAY"] = "array";
840
840
  AutomationIOType2["JSON"] = "json";
841
+ AutomationIOType2["DATE"] = "date";
841
842
  return AutomationIOType2;
842
843
  })(AutomationIOType || {});
843
844
  AutomationCustomIOType = /* @__PURE__ */ ((AutomationCustomIOType2) => {
@@ -1954,27 +1955,27 @@ function init(opts) {
1954
1955
  }
1955
1956
  function getPouchDB(dbName, opts) {
1956
1957
  checkInitialised();
1957
- const db = new Pouch(dbName, opts);
1958
- const dbPut = db.put;
1959
- db.put = async (doc, options2 = {}) => {
1960
- if (!doc.createdAt) {
1961
- doc.createdAt = (/* @__PURE__ */ new Date()).toISOString();
1962
- }
1963
- doc.updatedAt = (/* @__PURE__ */ new Date()).toISOString();
1964
- return dbPut(doc, options2);
1958
+ const db2 = new Pouch(dbName, opts);
1959
+ const dbPut = db2.put;
1960
+ db2.put = async (doc2, options2 = {}) => {
1961
+ if (!doc2.createdAt) {
1962
+ doc2.createdAt = (/* @__PURE__ */ new Date()).toISOString();
1963
+ }
1964
+ doc2.updatedAt = (/* @__PURE__ */ new Date()).toISOString();
1965
+ return dbPut(doc2, options2);
1965
1966
  };
1966
- db.exists = async () => {
1967
- const info = await db.info();
1967
+ db2.exists = async () => {
1968
+ const info = await db2.info();
1968
1969
  return !info.error;
1969
1970
  };
1970
- return db;
1971
+ return db2;
1971
1972
  }
1972
- async function closePouchDB(db) {
1973
- if (!db || environment_default2.isTest()) {
1973
+ async function closePouchDB(db2) {
1974
+ if (!db2 || environment_default2.isTest()) {
1974
1975
  return;
1975
1976
  }
1976
1977
  try {
1977
- return await db.close();
1978
+ return await db2.close();
1978
1979
  } catch (err) {
1979
1980
  }
1980
1981
  }
@@ -2125,14 +2126,14 @@ var init_DatabaseImpl = __esm({
2125
2126
  }
2126
2127
  }
2127
2128
  async get(id) {
2128
- const db = await this.checkSetup();
2129
+ const db2 = await this.checkSetup();
2129
2130
  if (!id) {
2130
2131
  throw new Error("Unable to get doc without a valid _id.");
2131
2132
  }
2132
- return this.updateOutput(() => db.get(id));
2133
+ return this.updateOutput(() => db2.get(id));
2133
2134
  }
2134
- async remove(idOrDoc, rev) {
2135
- const db = await this.checkSetup();
2135
+ async remove(idOrDoc, rev2) {
2136
+ const db2 = await this.checkSetup();
2136
2137
  let _id;
2137
2138
  let _rev;
2138
2139
  if (isDocument(idOrDoc)) {
@@ -2140,12 +2141,12 @@ var init_DatabaseImpl = __esm({
2140
2141
  _rev = idOrDoc._rev;
2141
2142
  } else {
2142
2143
  _id = idOrDoc;
2143
- _rev = rev;
2144
+ _rev = rev2;
2144
2145
  }
2145
2146
  if (!_id || !_rev) {
2146
2147
  throw new Error("Unable to remove doc without a valid _id and _rev.");
2147
2148
  }
2148
- return this.updateOutput(() => db.destroy(_id, _rev));
2149
+ return this.updateOutput(() => db2.destroy(_id, _rev));
2149
2150
  }
2150
2151
  async post(document, opts) {
2151
2152
  if (!document._id) {
@@ -2157,7 +2158,7 @@ var init_DatabaseImpl = __esm({
2157
2158
  if (!document._id) {
2158
2159
  throw new Error("Cannot store document without _id field.");
2159
2160
  }
2160
- const db = await this.checkSetup();
2161
+ const db2 = await this.checkSetup();
2161
2162
  if (!document.createdAt) {
2162
2163
  document.createdAt = (/* @__PURE__ */ new Date()).toISOString();
2163
2164
  }
@@ -2174,20 +2175,20 @@ var init_DatabaseImpl = __esm({
2174
2175
  }
2175
2176
  }
2176
2177
  }
2177
- return this.updateOutput(() => db.insert(document));
2178
+ return this.updateOutput(() => db2.insert(document));
2178
2179
  }
2179
2180
  async bulkDocs(documents) {
2180
- const db = await this.checkSetup();
2181
- return this.updateOutput(() => db.bulk({ docs: documents }));
2181
+ const db2 = await this.checkSetup();
2182
+ return this.updateOutput(() => db2.bulk({ docs: documents }));
2182
2183
  }
2183
2184
  async allDocs(params2) {
2184
- const db = await this.checkSetup();
2185
- return this.updateOutput(() => db.list(params2));
2185
+ const db2 = await this.checkSetup();
2186
+ return this.updateOutput(() => db2.list(params2));
2186
2187
  }
2187
2188
  async query(viewName, params2) {
2188
- const db = await this.checkSetup();
2189
+ const db2 = await this.checkSetup();
2189
2190
  const [database, view] = viewName.split("/");
2190
- return this.updateOutput(() => db.view(database, view, params2));
2191
+ return this.updateOutput(() => db2.view(database, view, params2));
2191
2192
  }
2192
2193
  async destroy() {
2193
2194
  try {
@@ -2201,8 +2202,8 @@ var init_DatabaseImpl = __esm({
2201
2202
  }
2202
2203
  }
2203
2204
  async compact() {
2204
- const db = await this.checkSetup();
2205
- return this.updateOutput(() => db.compact());
2205
+ const db2 = await this.checkSetup();
2206
+ return this.updateOutput(() => db2.compact());
2206
2207
  }
2207
2208
  // All below functions are in-frequently called, just utilise PouchDB
2208
2209
  // for them as it implements them better than we can
@@ -2245,8 +2246,8 @@ function getDB(dbName, opts) {
2245
2246
  return new DatabaseImpl(dbName, opts);
2246
2247
  }
2247
2248
  async function doWithDB(dbName, cb, opts = {}) {
2248
- const db = getDB(dbName, opts);
2249
- return await cb(db);
2249
+ const db2 = getDB(dbName, opts);
2250
+ return await cb(db2);
2250
2251
  }
2251
2252
  function allDbs() {
2252
2253
  if (!environment_default2.isTest()) {
@@ -2594,11 +2595,11 @@ function getRedisOptions() {
2594
2595
  }
2595
2596
  return { opts, host, port: parseInt(port), redisProtocolUrl };
2596
2597
  }
2597
- function addDbPrefix(db, key) {
2598
- if (key.includes(db)) {
2598
+ function addDbPrefix(db2, key) {
2599
+ if (key.includes(db2)) {
2599
2600
  return key;
2600
2601
  }
2601
- return `${db}${SEPARATOR2}${key}`;
2602
+ return `${db2}${SEPARATOR2}${key}`;
2602
2603
  }
2603
2604
  function removeDbPrefix(key) {
2604
2605
  let parts = key.split(SEPARATOR2);
@@ -2818,8 +2819,8 @@ var init_redis = __esm({
2818
2819
  CONNECTED = true;
2819
2820
  }
2820
2821
  RedisWrapper = class {
2821
- constructor(db, selectDb = null) {
2822
- this._db = db;
2822
+ constructor(db2, selectDb = null) {
2823
+ this._db = db2;
2823
2824
  this._select = selectDb || DEFAULT_SELECT_DB;
2824
2825
  }
2825
2826
  getClient() {
@@ -2839,8 +2840,8 @@ var init_redis = __esm({
2839
2840
  this.getClient().disconnect();
2840
2841
  }
2841
2842
  async scan(key = "") {
2842
- const db = this._db;
2843
- key = `${db}${SEPARATOR2}${key}`;
2843
+ const db2 = this._db;
2844
+ key = `${db2}${SEPARATOR2}${key}`;
2844
2845
  let stream3;
2845
2846
  if (CLUSTERED) {
2846
2847
  let node = this.getClient().nodes("master");
@@ -2851,16 +2852,16 @@ var init_redis = __esm({
2851
2852
  return promisifyStream(stream3, this.getClient());
2852
2853
  }
2853
2854
  async keys(pattern) {
2854
- const db = this._db;
2855
- return this.getClient().keys(addDbPrefix(db, pattern));
2855
+ const db2 = this._db;
2856
+ return this.getClient().keys(addDbPrefix(db2, pattern));
2856
2857
  }
2857
2858
  async exists(key) {
2858
- const db = this._db;
2859
- return await this.getClient().exists(addDbPrefix(db, key));
2859
+ const db2 = this._db;
2860
+ return await this.getClient().exists(addDbPrefix(db2, key));
2860
2861
  }
2861
2862
  async get(key) {
2862
- const db = this._db;
2863
- let response = await this.getClient().get(addDbPrefix(db, key));
2863
+ const db2 = this._db;
2864
+ let response = await this.getClient().get(addDbPrefix(db2, key));
2864
2865
  if (response != null && response.key) {
2865
2866
  response.key = key;
2866
2867
  }
@@ -2871,11 +2872,11 @@ var init_redis = __esm({
2871
2872
  }
2872
2873
  }
2873
2874
  async bulkGet(keys2) {
2874
- const db = this._db;
2875
+ const db2 = this._db;
2875
2876
  if (keys2.length === 0) {
2876
2877
  return {};
2877
2878
  }
2878
- const prefixedKeys = keys2.map((key) => addDbPrefix(db, key));
2879
+ const prefixedKeys = keys2.map((key) => addDbPrefix(db2, key));
2879
2880
  let response = await this.getClient().mget(prefixedKeys);
2880
2881
  if (Array.isArray(response)) {
2881
2882
  let final = {};
@@ -2898,29 +2899,29 @@ var init_redis = __esm({
2898
2899
  }
2899
2900
  }
2900
2901
  async store(key, value, expirySeconds = null) {
2901
- const db = this._db;
2902
+ const db2 = this._db;
2902
2903
  if (typeof value === "object") {
2903
2904
  value = JSON.stringify(value);
2904
2905
  }
2905
- const prefixedKey = addDbPrefix(db, key);
2906
+ const prefixedKey = addDbPrefix(db2, key);
2906
2907
  await this.getClient().set(prefixedKey, value);
2907
2908
  if (expirySeconds) {
2908
2909
  await this.getClient().expire(prefixedKey, expirySeconds);
2909
2910
  }
2910
2911
  }
2911
2912
  async getTTL(key) {
2912
- const db = this._db;
2913
- const prefixedKey = addDbPrefix(db, key);
2913
+ const db2 = this._db;
2914
+ const prefixedKey = addDbPrefix(db2, key);
2914
2915
  return this.getClient().ttl(prefixedKey);
2915
2916
  }
2916
2917
  async setExpiry(key, expirySeconds) {
2917
- const db = this._db;
2918
- const prefixedKey = addDbPrefix(db, key);
2918
+ const db2 = this._db;
2919
+ const prefixedKey = addDbPrefix(db2, key);
2919
2920
  await this.getClient().expire(prefixedKey, expirySeconds);
2920
2921
  }
2921
2922
  async delete(key) {
2922
- const db = this._db;
2923
- await this.getClient().del(addDbPrefix(db, key));
2923
+ const db2 = this._db;
2924
+ await this.getClient().del(addDbPrefix(db2, key));
2924
2925
  }
2925
2926
  async clear() {
2926
2927
  let items = await this.scan();
@@ -3296,8 +3297,8 @@ function logAlert(message, e) {
3296
3297
  }
3297
3298
  console.error(`bb-alert: ${message}`, e);
3298
3299
  }
3299
- function logAlertWithInfo(message, db, id, error) {
3300
- message = `${message} - db: ${db} - doc: ${id} - error: `;
3300
+ function logAlertWithInfo(message, db2, id, error) {
3301
+ message = `${message} - db: ${db2} - doc: ${id} - error: `;
3301
3302
  logAlert(message, error);
3302
3303
  }
3303
3304
  function logWarn(message) {
@@ -3334,8 +3335,8 @@ var init_logging = __esm({
3334
3335
  var require_Helper = __commonJS({
3335
3336
  "../string-templates/src/helpers/Helper.js"(exports2, module2) {
3336
3337
  var Helper = class {
3337
- constructor(name, fn, useValueFallback = true) {
3338
- this.name = name;
3338
+ constructor(name2, fn, useValueFallback = true) {
3339
+ this.name = name2;
3339
3340
  this.fn = fn;
3340
3341
  this.useValueFallback = useValueFallback;
3341
3342
  }
@@ -3504,18 +3505,18 @@ var require_external = __commonJS({
3504
3505
  exports2.externalCollections = EXTERNAL_FUNCTION_COLLECTIONS;
3505
3506
  exports2.addedHelpers = ADDED_HELPERS;
3506
3507
  exports2.registerAll = (handlebars) => {
3507
- for (let [name, helper] of Object.entries(ADDED_HELPERS)) {
3508
- handlebars.registerHelper(name, helper);
3508
+ for (let [name2, helper] of Object.entries(ADDED_HELPERS)) {
3509
+ handlebars.registerHelper(name2, helper);
3509
3510
  }
3510
3511
  let externalNames = [];
3511
3512
  for (let collection of EXTERNAL_FUNCTION_COLLECTIONS) {
3512
3513
  let hbsHelperInfo = helpers[collection]();
3513
3514
  for (let entry of Object.entries(hbsHelperInfo)) {
3514
- const name = entry[0];
3515
- if (HelperFunctionBuiltin.indexOf(name) !== -1 || externalNames.indexOf(name) !== -1) {
3515
+ const name2 = entry[0];
3516
+ if (HelperFunctionBuiltin.indexOf(name2) !== -1 || externalNames.indexOf(name2) !== -1) {
3516
3517
  continue;
3517
3518
  }
3518
- externalNames.push(name);
3519
+ externalNames.push(name2);
3519
3520
  }
3520
3521
  helpers[collection]({
3521
3522
  handlebars
@@ -3524,11 +3525,11 @@ var require_external = __commonJS({
3524
3525
  exports2.externalHelperNames = externalNames.concat(Object.keys(ADDED_HELPERS));
3525
3526
  };
3526
3527
  exports2.unregisterAll = (handlebars) => {
3527
- for (let name of Object.keys(ADDED_HELPERS)) {
3528
- handlebars.unregisterHelper(name);
3528
+ for (let name2 of Object.keys(ADDED_HELPERS)) {
3529
+ handlebars.unregisterHelper(name2);
3529
3530
  }
3530
- for (let name of module2.exports.externalHelperNames) {
3531
- handlebars.unregisterHelper(name);
3531
+ for (let name2 of module2.exports.externalHelperNames) {
3532
+ handlebars.unregisterHelper(name2);
3532
3533
  }
3533
3534
  exports2.externalHelperNames = [];
3534
3535
  };
@@ -3642,12 +3643,12 @@ var require_javascript = __commonJS({
3642
3643
  throw new Error("JS disabled in environment.");
3643
3644
  }
3644
3645
  try {
3645
- const js = `function run(){${atob(handlebars)}};run();`;
3646
+ const js2 = `function run(){${atob(handlebars)}};run();`;
3646
3647
  const sandboxContext = {
3647
3648
  $: (path2) => getContextValue(path2, cloneDeep7(context)),
3648
3649
  helpers: getHelperList()
3649
3650
  };
3650
- const res = { data: runJS(js, sandboxContext) };
3651
+ const res = { data: runJS(js2, sandboxContext) };
3651
3652
  return `{{${LITERAL_MARKER} js_result-${JSON.stringify(res)}}}`;
3652
3653
  } catch (error) {
3653
3654
  return "Error while executing JS";
@@ -3760,8 +3761,8 @@ var require_preprocessor = __commonJS({
3760
3761
  FINALISE: "finalise"
3761
3762
  };
3762
3763
  var Preprocessor = class {
3763
- constructor(name, fn) {
3764
- this.name = name;
3764
+ constructor(name2, fn) {
3765
+ this.name = name2;
3765
3766
  this.fn = fn;
3766
3767
  }
3767
3768
  process(fullString, statement, opts) {
@@ -3825,8 +3826,8 @@ var require_postprocessor = __commonJS({
3825
3826
  CONVERT_LITERALS: "convert-literals"
3826
3827
  };
3827
3828
  var Postprocessor = class {
3828
- constructor(name, fn) {
3829
- this.name = name;
3829
+ constructor(name2, fn) {
3830
+ this.name = name2;
3830
3831
  this.fn = fn;
3831
3832
  }
3832
3833
  process(statement) {
@@ -5468,10 +5469,10 @@ var require_src = __commonJS({
5468
5469
  };
5469
5470
  module2.exports.convertToJS = (hbs) => {
5470
5471
  const blocks = exports2.findHBSBlocks(hbs);
5471
- let js = "return `", prevBlock = null;
5472
+ let js2 = "return `", prevBlock = null;
5472
5473
  const variables = {};
5473
5474
  if (blocks.length === 0) {
5474
- js += hbs;
5475
+ js2 += hbs;
5475
5476
  }
5476
5477
  let count = 1;
5477
5478
  for (let block of blocks) {
@@ -5483,15 +5484,15 @@ var require_src = __commonJS({
5483
5484
  prevBlock = block;
5484
5485
  const { variable, value } = convertHBSBlock(block, count++);
5485
5486
  variables[variable] = value;
5486
- js += `${stringPart.split()}\${${variable}}`;
5487
+ js2 += `${stringPart.split()}\${${variable}}`;
5487
5488
  }
5488
5489
  let varBlock = "";
5489
5490
  for (let [variable, value] of Object.entries(variables)) {
5490
5491
  varBlock += `const ${variable} = ${value};
5491
5492
  `;
5492
5493
  }
5493
- js += "`;";
5494
- return `${varBlock}${js}`;
5494
+ js2 += "`;";
5495
+ return `${varBlock}${js2}`;
5495
5496
  };
5496
5497
  }
5497
5498
  });
@@ -5518,12 +5519,12 @@ var require_src2 = __commonJS({
5518
5519
  if (!process.env.NO_JS) {
5519
5520
  const { VM: VM2 } = require("vm2");
5520
5521
  const { setJSRunner } = require_javascript();
5521
- setJSRunner((js, context) => {
5522
+ setJSRunner((js2, context) => {
5522
5523
  const vm = new VM2({
5523
5524
  sandbox: context,
5524
5525
  timeout: 1e3
5525
5526
  });
5526
- return vm.run(js);
5527
+ return vm.run(js2);
5527
5528
  });
5528
5529
  }
5529
5530
  }
@@ -5874,8 +5875,8 @@ async function lookupTenantId(userId) {
5874
5875
  return user.tenantId;
5875
5876
  }
5876
5877
  async function getUserDoc(emailOrId) {
5877
- const db = getPlatformDB();
5878
- return db.get(emailOrId);
5878
+ const db2 = getPlatformDB();
5879
+ return db2.get(emailOrId);
5879
5880
  }
5880
5881
  function newUserIdDoc(id, tenantId) {
5881
5882
  return {
@@ -5891,14 +5892,14 @@ function newUserEmailDoc(userId, email, tenantId) {
5891
5892
  };
5892
5893
  }
5893
5894
  async function addUserDoc(emailOrId, newDocFn) {
5894
- const db = getPlatformDB();
5895
+ const db2 = getPlatformDB();
5895
5896
  let user;
5896
5897
  try {
5897
- await db.get(emailOrId);
5898
+ await db2.get(emailOrId);
5898
5899
  } catch (e) {
5899
5900
  if (e.status === 404) {
5900
5901
  user = newDocFn();
5901
- await db.put(user);
5902
+ await db2.put(user);
5902
5903
  } else {
5903
5904
  throw e;
5904
5905
  }
@@ -5911,9 +5912,9 @@ async function addUser(tenantId, userId, email) {
5911
5912
  ]);
5912
5913
  }
5913
5914
  async function removeUser(user) {
5914
- const db = getPlatformDB();
5915
+ const db2 = getPlatformDB();
5915
5916
  const keys2 = [user._id, user.email];
5916
- const userDocs = await db.allDocs({
5917
+ const userDocs = await db2.allDocs({
5917
5918
  keys: keys2,
5918
5919
  include_docs: true
5919
5920
  });
@@ -5923,7 +5924,7 @@ async function removeUser(user) {
5923
5924
  _deleted: true
5924
5925
  };
5925
5926
  });
5926
- await db.bulkDocs(toDelete);
5927
+ await db2.bulkDocs(toDelete);
5927
5928
  }
5928
5929
 
5929
5930
  // ../backend-core/src/platform/tenants.ts
@@ -6008,18 +6009,18 @@ async function newRedlock(opts = {}) {
6008
6009
  }
6009
6010
  function getLockName(opts) {
6010
6011
  const prefix = opts.systemLock ? "system" : getTenantId();
6011
- let name = `lock:${prefix}_${opts.name}`;
6012
+ let name2 = `lock:${prefix}_${opts.name}`;
6012
6013
  if (opts.resource) {
6013
- name = name + `_${opts.resource}`;
6014
+ name2 = name2 + `_${opts.resource}`;
6014
6015
  }
6015
- return name;
6016
+ return name2;
6016
6017
  }
6017
6018
  async function doWithLock(opts, task) {
6018
6019
  const redlock = await getClient(opts.type, opts.customOptions);
6019
6020
  let lock;
6020
6021
  try {
6021
- const name = getLockName(opts);
6022
- lock = await redlock.lock(name, opts.ttl);
6022
+ const name2 = getLockName(opts);
6023
+ lock = await redlock.lock(name2, opts.ttl);
6023
6024
  const result = await task();
6024
6025
  return { executed: true, result };
6025
6026
  } catch (e) {
@@ -6129,8 +6130,8 @@ var getAccount = async (email) => {
6129
6130
  // ../backend-core/src/cache/user.ts
6130
6131
  var EXPIRY_SECONDS = 3600;
6131
6132
  async function populateFromDB(userId, tenantId) {
6132
- const db = getTenantDB(tenantId);
6133
- const user = await db.get(userId);
6133
+ const db2 = getTenantDB(tenantId);
6134
+ const user = await db2.get(userId);
6134
6135
  user.budibaseAccess = true;
6135
6136
  if (!environment_default2.SELF_HOSTED && !environment_default2.DISABLE_ACCOUNT_PORTAL) {
6136
6137
  const account = await getAccount(user.email);
@@ -6319,8 +6320,8 @@ function generateRoleID(id) {
6319
6320
  var generateDevInfoID = (userId) => {
6320
6321
  return `${"devinfo" /* DEV_INFO */}${SEPARATOR}${userId}`;
6321
6322
  };
6322
- var generatePluginID = (name) => {
6323
- return `${"plg" /* PLUGIN */}${SEPARATOR}${name}`;
6323
+ var generatePluginID = (name2) => {
6324
+ return `${"plg" /* PLUGIN */}${SEPARATOR}${name2}`;
6324
6325
  };
6325
6326
 
6326
6327
  // ../backend-core/src/docIds/params.ts
@@ -6405,8 +6406,8 @@ function getStartEndKeyURL(baseKey, tenantId) {
6405
6406
  const tenancy2 = tenantId ? `${SEPARATOR}${tenantId}` : "";
6406
6407
  return `startkey="${baseKey}${tenancy2}"&endkey="${baseKey}${tenancy2}${UNICODE_MAX}"`;
6407
6408
  }
6408
- var getPluginParams = (pluginId, otherProps = {}) => {
6409
- return getDocParams("plg" /* PLUGIN */, pluginId, otherProps);
6409
+ var getPluginParams = (pluginId2, otherProps = {}) => {
6410
+ return getDocParams("plg" /* PLUGIN */, pluginId2, otherProps);
6410
6411
  };
6411
6412
 
6412
6413
  // ../backend-core/src/db/utils.ts
@@ -6513,8 +6514,8 @@ function isSameAppID(appId1, appId2) {
6513
6514
  async function dbExists(dbName) {
6514
6515
  return doWithDB(
6515
6516
  dbName,
6516
- async (db) => {
6517
- return await db.exists();
6517
+ async (db2) => {
6518
+ return await db2.exists();
6518
6519
  },
6519
6520
  { skip_setup: true }
6520
6521
  );
@@ -6533,7 +6534,7 @@ function pagination(data, pageSize, {
6533
6534
  const hasNextPage = data.length > pageSize;
6534
6535
  let nextPage = void 0;
6535
6536
  if (!getKey) {
6536
- getKey = (doc) => property ? doc == null ? void 0 : doc[property] : doc == null ? void 0 : doc._id;
6537
+ getKey = (doc2) => property ? doc2 == null ? void 0 : doc2[property] : doc2 == null ? void 0 : doc2._id;
6537
6538
  }
6538
6539
  if (hasNextPage) {
6539
6540
  nextPage = getKey(data[pageSize]);
@@ -6558,23 +6559,23 @@ function DesignDoc() {
6558
6559
  views: {}
6559
6560
  };
6560
6561
  }
6561
- async function removeDeprecated(db, viewName) {
6562
+ async function removeDeprecated(db2, viewName) {
6562
6563
  if (!DeprecatedViews[viewName]) {
6563
6564
  return;
6564
6565
  }
6565
6566
  try {
6566
- const designDoc = await db.get(DESIGN_DB);
6567
+ const designDoc = await db2.get(DESIGN_DB);
6567
6568
  for (let deprecatedNames of DeprecatedViews[viewName]) {
6568
6569
  delete designDoc.views[deprecatedNames];
6569
6570
  }
6570
- await db.put(designDoc);
6571
+ await db2.put(designDoc);
6571
6572
  } catch (err) {
6572
6573
  }
6573
6574
  }
6574
- async function createView(db, viewJs, viewName) {
6575
+ async function createView(db2, viewJs, viewName) {
6575
6576
  let designDoc;
6576
6577
  try {
6577
- designDoc = await db.get(DESIGN_DB);
6578
+ designDoc = await db2.get(DESIGN_DB);
6578
6579
  } catch (err) {
6579
6580
  designDoc = DesignDoc();
6580
6581
  }
@@ -6586,26 +6587,26 @@ async function createView(db, viewJs, viewName) {
6586
6587
  [viewName]: view
6587
6588
  };
6588
6589
  try {
6589
- await db.put(designDoc);
6590
+ await db2.put(designDoc);
6590
6591
  } catch (err) {
6591
6592
  if (err.status === 409) {
6592
- return await createView(db, viewJs, viewName);
6593
+ return await createView(db2, viewJs, viewName);
6593
6594
  } else {
6594
6595
  throw err;
6595
6596
  }
6596
6597
  }
6597
6598
  }
6598
6599
  var createNewUserEmailView = async () => {
6599
- const db = getGlobalDB();
6600
+ const db2 = getGlobalDB();
6600
6601
  const viewJs = `function(doc) {
6601
6602
  if (doc._id.startsWith("${"us" /* USER */}${SEPARATOR}")) {
6602
6603
  emit(doc.email.toLowerCase(), doc._id)
6603
6604
  }
6604
6605
  }`;
6605
- await createView(db, viewJs, "by_email2" /* USER_BY_EMAIL */);
6606
+ await createView(db2, viewJs, "by_email2" /* USER_BY_EMAIL */);
6606
6607
  };
6607
6608
  var createUserAppView = async () => {
6608
- const db = getGlobalDB();
6609
+ const db2 = getGlobalDB();
6609
6610
  const viewJs = `function(doc) {
6610
6611
  if (doc._id.startsWith("${"us" /* USER */}${SEPARATOR}") && doc.roles) {
6611
6612
  for (let prodAppId of Object.keys(doc.roles)) {
@@ -6614,46 +6615,46 @@ var createUserAppView = async () => {
6614
6615
  }
6615
6616
  }
6616
6617
  }`;
6617
- await createView(db, viewJs, "by_app" /* USER_BY_APP */);
6618
+ await createView(db2, viewJs, "by_app" /* USER_BY_APP */);
6618
6619
  };
6619
6620
  var createApiKeyView = async () => {
6620
- const db = getGlobalDB();
6621
+ const db2 = getGlobalDB();
6621
6622
  const viewJs = `function(doc) {
6622
6623
  if (doc._id.startsWith("${"devinfo" /* DEV_INFO */}") && doc.apiKey) {
6623
6624
  emit(doc.apiKey, doc.userId)
6624
6625
  }
6625
6626
  }`;
6626
- await createView(db, viewJs, "by_api_key" /* BY_API_KEY */);
6627
+ await createView(db2, viewJs, "by_api_key" /* BY_API_KEY */);
6627
6628
  };
6628
6629
  var createUserBuildersView = async () => {
6629
- const db = getGlobalDB();
6630
+ const db2 = getGlobalDB();
6630
6631
  const viewJs = `function(doc) {
6631
6632
  if (doc.builder && doc.builder.global === true) {
6632
6633
  emit(doc._id, doc._id)
6633
6634
  }
6634
6635
  }`;
6635
- await createView(db, viewJs, "by_builders" /* USER_BY_BUILDERS */);
6636
+ await createView(db2, viewJs, "by_builders" /* USER_BY_BUILDERS */);
6636
6637
  };
6637
- async function queryViewRaw(viewName, params2, db, createFunc, opts) {
6638
+ async function queryViewRaw(viewName, params2, db2, createFunc, opts) {
6638
6639
  try {
6639
- const response = await db.query(`database/${viewName}`, params2);
6640
+ const response = await db2.query(`database/${viewName}`, params2);
6640
6641
  return response;
6641
6642
  } catch (err) {
6642
6643
  const pouchNotFound = err && err.name === "not_found";
6643
6644
  const couchNotFound = err && err.status === 404;
6644
6645
  if (pouchNotFound || couchNotFound) {
6645
- await removeDeprecated(db, viewName);
6646
+ await removeDeprecated(db2, viewName);
6646
6647
  await createFunc();
6647
- return queryViewRaw(viewName, params2, db, createFunc, opts);
6648
+ return queryViewRaw(viewName, params2, db2, createFunc, opts);
6648
6649
  } else if (err.status === 409) {
6649
- return queryViewRaw(viewName, params2, db, createFunc, opts);
6650
+ return queryViewRaw(viewName, params2, db2, createFunc, opts);
6650
6651
  } else {
6651
6652
  throw err;
6652
6653
  }
6653
6654
  }
6654
6655
  }
6655
- var queryView = async (viewName, params2, db, createFunc, opts) => {
6656
- const response = await queryViewRaw(viewName, params2, db, createFunc, opts);
6656
+ var queryView = async (viewName, params2, db2, createFunc, opts) => {
6657
+ const response = await queryViewRaw(viewName, params2, db2, createFunc, opts);
6657
6658
  const rows2 = response.rows;
6658
6659
  const docs = rows2.map(
6659
6660
  (row) => params2.include_docs ? row.doc : row.value
@@ -6666,8 +6667,8 @@ var queryView = async (viewName, params2, db, createFunc, opts) => {
6666
6667
  };
6667
6668
  async function createPlatformView(viewJs, viewName) {
6668
6669
  try {
6669
- await doWithDB(StaticDatabases.PLATFORM_INFO.name, async (db) => {
6670
- await createView(db, viewJs, viewName);
6670
+ await doWithDB(StaticDatabases.PLATFORM_INFO.name, async (db2) => {
6671
+ await createView(db2, viewJs, viewName);
6671
6672
  });
6672
6673
  } catch (e) {
6673
6674
  if (e.status === 409 && environment_default2.isTest()) {
@@ -6697,9 +6698,9 @@ var queryPlatformView = async (viewName, params2, opts) => {
6697
6698
  ["account_by_email" /* ACCOUNT_BY_EMAIL */]: createPlatformAccountEmailView,
6698
6699
  ["platform_users_lowercase" /* PLATFORM_USERS_LOWERCASE */]: createPlatformUserView
6699
6700
  };
6700
- return doWithDB(StaticDatabases.PLATFORM_INFO.name, async (db) => {
6701
+ return doWithDB(StaticDatabases.PLATFORM_INFO.name, async (db2) => {
6701
6702
  const createFn = CreateFuncByName2[viewName];
6702
- return queryView(viewName, params2, db, createFn, opts);
6703
+ return queryView(viewName, params2, db2, createFn, opts);
6703
6704
  });
6704
6705
  };
6705
6706
  var CreateFuncByName = {
@@ -6708,17 +6709,17 @@ var CreateFuncByName = {
6708
6709
  ["by_builders" /* USER_BY_BUILDERS */]: createUserBuildersView,
6709
6710
  ["by_app" /* USER_BY_APP */]: createUserAppView
6710
6711
  };
6711
- var queryGlobalView = async (viewName, params2, db, opts) => {
6712
- if (!db) {
6713
- db = getGlobalDB();
6712
+ var queryGlobalView = async (viewName, params2, db2, opts) => {
6713
+ if (!db2) {
6714
+ db2 = getGlobalDB();
6714
6715
  }
6715
6716
  const createFn = CreateFuncByName[viewName];
6716
- return queryView(viewName, params2, db, createFn, opts);
6717
+ return queryView(viewName, params2, db2, createFn, opts);
6717
6718
  };
6718
6719
  async function queryGlobalViewRaw(viewName, params2, opts) {
6719
- const db = getGlobalDB();
6720
+ const db2 = getGlobalDB();
6720
6721
  const createFn = CreateFuncByName[viewName];
6721
- return queryViewRaw(viewName, params2, db, createFn, opts);
6722
+ return queryViewRaw(viewName, params2, db2, createFn, opts);
6722
6723
  }
6723
6724
 
6724
6725
  // ../backend-core/src/db/index.ts
@@ -6733,8 +6734,8 @@ var Replication = class {
6733
6734
  * @param {String} source - the DB you want to replicate or rollback to
6734
6735
  * @param {String} target - the DB you want to replicate to, or rollback from
6735
6736
  */
6736
- constructor({ source, target }) {
6737
- this.source = getPouchDB(source);
6737
+ constructor({ source: source2, target }) {
6738
+ this.source = getPouchDB(source2);
6738
6739
  this.target = getPouchDB(target);
6739
6740
  }
6740
6741
  close() {
@@ -6769,8 +6770,8 @@ var Replication = class {
6769
6770
  }
6770
6771
  appReplicateOpts() {
6771
6772
  return {
6772
- filter: (doc) => {
6773
- return doc._id !== "app_metadata" /* APP_METADATA */;
6773
+ filter: (doc2) => {
6774
+ return doc2._id !== "app_metadata" /* APP_METADATA */;
6774
6775
  }
6775
6776
  };
6776
6777
  }
@@ -6858,9 +6859,9 @@ var _QueryBuilder = class {
6858
6859
  __privateSet(this, _indexBuilder, builderFn);
6859
6860
  return this;
6860
6861
  }
6861
- setVersion(version) {
6862
- if (version != null) {
6863
- __privateSet(this, _version, version);
6862
+ setVersion(version2) {
6863
+ if (version2 != null) {
6864
+ __privateSet(this, _version, version2);
6864
6865
  }
6865
6866
  return this;
6866
6867
  }
@@ -7353,10 +7354,10 @@ __export(searchIndexes_exports, {
7353
7354
  init_src();
7354
7355
  init_context2();
7355
7356
  async function createUserIndex() {
7356
- const db = getGlobalDB();
7357
+ const db2 = getGlobalDB();
7357
7358
  let designDoc;
7358
7359
  try {
7359
- designDoc = await db.get("_design/database");
7360
+ designDoc = await db2.get("_design/database");
7360
7361
  } catch (err) {
7361
7362
  if (err.status === 404) {
7362
7363
  designDoc = { _id: "_design/database" };
@@ -7402,7 +7403,7 @@ async function createUserIndex() {
7402
7403
  }
7403
7404
  }
7404
7405
  };
7405
- await db.put(designDoc);
7406
+ await db2.put(designDoc);
7406
7407
  }
7407
7408
 
7408
7409
  // ../backend-core/src/cache/appMetadata.ts
@@ -7413,42 +7414,42 @@ var EXPIRY_SECONDS2 = 3600;
7413
7414
  async function populateFromDB2(appId) {
7414
7415
  return doWithDB(
7415
7416
  appId,
7416
- (db) => {
7417
- return db.get("app_metadata" /* APP_METADATA */);
7417
+ (db2) => {
7418
+ return db2.get("app_metadata" /* APP_METADATA */);
7418
7419
  },
7419
7420
  { skip_setup: true }
7420
7421
  );
7421
7422
  }
7422
- function isInvalid(metadata) {
7423
- return !metadata || metadata.state === AppState.INVALID;
7423
+ function isInvalid(metadata2) {
7424
+ return !metadata2 || metadata2.state === AppState.INVALID;
7424
7425
  }
7425
7426
  async function getAppMetadata(appId) {
7426
7427
  const client3 = await getAppClient();
7427
- let metadata = await client3.get(appId);
7428
- if (!metadata) {
7428
+ let metadata2 = await client3.get(appId);
7429
+ if (!metadata2) {
7429
7430
  let expiry = EXPIRY_SECONDS2;
7430
7431
  try {
7431
- metadata = await populateFromDB2(appId);
7432
+ metadata2 = await populateFromDB2(appId);
7432
7433
  } catch (err) {
7433
7434
  if (err && err.status === 404) {
7434
- metadata = { state: AppState.INVALID };
7435
+ metadata2 = { state: AppState.INVALID };
7435
7436
  expiry = void 0;
7436
7437
  } else {
7437
7438
  throw err;
7438
7439
  }
7439
7440
  }
7440
- if (isInvalid(metadata)) {
7441
+ if (isInvalid(metadata2)) {
7441
7442
  const temp = await client3.get(appId);
7442
7443
  if (temp) {
7443
- metadata = temp;
7444
+ metadata2 = temp;
7444
7445
  }
7445
7446
  }
7446
- await client3.store(appId, metadata, expiry);
7447
+ await client3.store(appId, metadata2, expiry);
7447
7448
  }
7448
- if (isInvalid(metadata)) {
7449
+ if (isInvalid(metadata2)) {
7449
7450
  throw { status: 404, message: "No app metadata found" };
7450
7451
  }
7451
- return metadata;
7452
+ return metadata2;
7452
7453
  }
7453
7454
  async function invalidateAppMetadata(appId, newMetadata) {
7454
7455
  if (!appId) {
@@ -7479,21 +7480,21 @@ async function getCache() {
7479
7480
  }
7480
7481
  return CACHE;
7481
7482
  }
7482
- function makeCacheKey(db, key) {
7483
- return db.name + key;
7483
+ function makeCacheKey(db2, key) {
7484
+ return db2.name + key;
7484
7485
  }
7485
- function makeCacheItem(doc, lastWrite = null) {
7486
- return { doc, lastWrite: lastWrite || Date.now() };
7486
+ function makeCacheItem(doc2, lastWrite = null) {
7487
+ return { doc: doc2, lastWrite: lastWrite || Date.now() };
7487
7488
  }
7488
- async function put(db, doc, writeRateMs = DEFAULT_WRITE_RATE_MS) {
7489
+ async function put(db2, doc2, writeRateMs = DEFAULT_WRITE_RATE_MS) {
7489
7490
  const cache2 = await getCache();
7490
- const key = doc._id;
7491
+ const key = doc2._id;
7491
7492
  let cacheItem;
7492
7493
  if (key) {
7493
- cacheItem = await cache2.get(makeCacheKey(db, key));
7494
+ cacheItem = await cache2.get(makeCacheKey(db2, key));
7494
7495
  }
7495
7496
  const updateDb = !cacheItem || cacheItem.lastWrite < Date.now() - writeRateMs;
7496
- let output = doc;
7497
+ let output = doc2;
7497
7498
  if (updateDb) {
7498
7499
  const lockResponse = await doWithLock(
7499
7500
  {
@@ -7504,15 +7505,15 @@ async function put(db, doc, writeRateMs = DEFAULT_WRITE_RATE_MS) {
7504
7505
  },
7505
7506
  async () => {
7506
7507
  const writeDb = async (toWrite) => {
7507
- const response = await db.put(toWrite, { force: true });
7508
+ const response = await db2.put(toWrite, { force: true });
7508
7509
  output = {
7509
- ...doc,
7510
+ ...doc2,
7510
7511
  _id: response.id,
7511
7512
  _rev: response.rev
7512
7513
  };
7513
7514
  };
7514
7515
  try {
7515
- await writeDb(doc);
7516
+ await writeDb(doc2);
7516
7517
  } catch (err) {
7517
7518
  if (err.status !== 409) {
7518
7519
  throw err;
@@ -7528,47 +7529,47 @@ async function put(db, doc, writeRateMs = DEFAULT_WRITE_RATE_MS) {
7528
7529
  }
7529
7530
  cacheItem = makeCacheItem(output, updateDb ? null : cacheItem == null ? void 0 : cacheItem.lastWrite);
7530
7531
  if (output._id) {
7531
- await cache2.store(makeCacheKey(db, output._id), cacheItem);
7532
+ await cache2.store(makeCacheKey(db2, output._id), cacheItem);
7532
7533
  }
7533
7534
  return { ok: true, id: output._id, rev: output._rev };
7534
7535
  }
7535
- async function get2(db, id) {
7536
+ async function get2(db2, id) {
7536
7537
  const cache2 = await getCache();
7537
- const cacheKey = makeCacheKey(db, id);
7538
+ const cacheKey = makeCacheKey(db2, id);
7538
7539
  let cacheItem = await cache2.get(cacheKey);
7539
7540
  if (!cacheItem) {
7540
- const doc = await db.get(id);
7541
- cacheItem = makeCacheItem(doc);
7541
+ const doc2 = await db2.get(id);
7542
+ cacheItem = makeCacheItem(doc2);
7542
7543
  await cache2.store(cacheKey, cacheItem);
7543
7544
  }
7544
7545
  return cacheItem.doc;
7545
7546
  }
7546
- async function remove(db, docOrId, rev) {
7547
+ async function remove(db2, docOrId, rev2) {
7547
7548
  const cache2 = await getCache();
7548
7549
  if (!docOrId) {
7549
7550
  throw new Error("No ID/Rev provided.");
7550
7551
  }
7551
7552
  const id = typeof docOrId === "string" ? docOrId : docOrId._id;
7552
- rev = typeof docOrId === "string" ? rev : docOrId._rev;
7553
+ rev2 = typeof docOrId === "string" ? rev2 : docOrId._rev;
7553
7554
  try {
7554
- await cache2.delete(makeCacheKey(db, id));
7555
+ await cache2.delete(makeCacheKey(db2, id));
7555
7556
  } finally {
7556
- await db.remove(id, rev);
7557
+ await db2.remove(id, rev2);
7557
7558
  }
7558
7559
  }
7559
7560
  var Writethrough = class {
7560
- constructor(db, writeRateMs = DEFAULT_WRITE_RATE_MS) {
7561
- this.db = db;
7561
+ constructor(db2, writeRateMs = DEFAULT_WRITE_RATE_MS) {
7562
+ this.db = db2;
7562
7563
  this.writeRateMs = writeRateMs;
7563
7564
  }
7564
- async put(doc) {
7565
- return put(this.db, doc, this.writeRateMs);
7565
+ async put(doc2) {
7566
+ return put(this.db, doc2, this.writeRateMs);
7566
7567
  }
7567
7568
  async get(id) {
7568
7569
  return get2(this.db, id);
7569
7570
  }
7570
- async remove(docOrId, rev) {
7571
- return remove(this.db, docOrId, rev);
7571
+ async remove(docOrId, rev2) {
7572
+ return remove(this.db, docOrId, rev2);
7572
7573
  }
7573
7574
  };
7574
7575
 
@@ -7580,9 +7581,9 @@ function generateConfigID(type) {
7580
7581
  return `${"config" /* CONFIG */}${SEPARATOR}${type}`;
7581
7582
  }
7582
7583
  async function getConfig(type) {
7583
- const db = getGlobalDB();
7584
+ const db2 = getGlobalDB();
7584
7585
  try {
7585
- return await db.get(generateConfigID(type));
7586
+ return await db2.get(generateConfigID(type));
7586
7587
  } catch (e) {
7587
7588
  if (e.status === 404) {
7588
7589
  return;
@@ -7591,8 +7592,8 @@ async function getConfig(type) {
7591
7592
  }
7592
7593
  }
7593
7594
  async function save(config) {
7594
- const db = getGlobalDB();
7595
- return db.put(config);
7595
+ const db2 = getGlobalDB();
7596
+ return db2.put(config);
7596
7597
  }
7597
7598
  async function getSettingsConfigDoc() {
7598
7599
  let config = await getConfig("settings" /* SETTINGS */);
@@ -8041,7 +8042,7 @@ __export(utils_exports2, {
8041
8042
  compare: () => compare,
8042
8043
  getAppIdFromCtx: () => getAppIdFromCtx,
8043
8044
  getCookie: () => getCookie,
8044
- hash: () => hash,
8045
+ hash: () => hash2,
8045
8046
  isAudited: () => isAudited,
8046
8047
  isClient: () => isClient,
8047
8048
  isPublicApiRequest: () => isPublicApiRequest,
@@ -8062,7 +8063,7 @@ init_environment2();
8062
8063
  init_newid();
8063
8064
  var bcrypt = environment_default2.JS_BCRYPT ? require("bcryptjs") : require("bcrypt");
8064
8065
  var SALT_ROUNDS = environment_default2.SALT_ROUNDS || 10;
8065
- async function hash(data) {
8066
+ async function hash2(data) {
8066
8067
  const salt = await bcrypt.genSalt(SALT_ROUNDS);
8067
8068
  return bcrypt.hash(data, salt);
8068
8069
  }
@@ -8178,14 +8179,14 @@ function isValidInternalAPIKey(apiKey) {
8178
8179
  }
8179
8180
  return false;
8180
8181
  }
8181
- function getCookie(ctx, name) {
8182
- const cookie = ctx.cookies.get(name);
8182
+ function getCookie(ctx, name2) {
8183
+ const cookie = ctx.cookies.get(name2);
8183
8184
  if (!cookie) {
8184
8185
  return cookie;
8185
8186
  }
8186
8187
  return openJwt(cookie);
8187
8188
  }
8188
- function setCookie(ctx, value, name = "builder", opts = { sign: true }) {
8189
+ function setCookie(ctx, value, name2 = "builder", opts = { sign: true }) {
8189
8190
  if (value && opts && opts.sign) {
8190
8191
  value = jwt.sign(value, environment_default2.JWT_SECRET);
8191
8192
  }
@@ -8198,10 +8199,10 @@ function setCookie(ctx, value, name = "builder", opts = { sign: true }) {
8198
8199
  if (environment_default2.COOKIE_DOMAIN) {
8199
8200
  config.domain = environment_default2.COOKIE_DOMAIN;
8200
8201
  }
8201
- ctx.cookies.set(name, value, config);
8202
+ ctx.cookies.set(name2, value, config);
8202
8203
  }
8203
- function clearCookie(ctx, name) {
8204
- setCookie(ctx, null, name);
8204
+ function clearCookie(ctx, name2) {
8205
+ setCookie(ctx, null, name2);
8205
8206
  }
8206
8207
  function isClient(ctx) {
8207
8208
  return ctx.headers["x-budibase-type" /* TYPE */] === "client";
@@ -8235,8 +8236,8 @@ var InMemoryQueue = class {
8235
8236
  * @param {object|null} opts This is not used by the in memory queue as there is no real use
8236
8237
  * case when in memory, but is the same API as Bull
8237
8238
  */
8238
- constructor(name, opts = null) {
8239
- this._name = name;
8239
+ constructor(name2, opts = null) {
8240
+ this._name = name2;
8240
8241
  this._opts = opts;
8241
8242
  this._messages = [];
8242
8243
  this._emitter = new import_events2.default.EventEmitter();
@@ -8669,13 +8670,13 @@ var getInstallFromDB = async () => {
8669
8670
  }
8670
8671
  );
8671
8672
  };
8672
- var updateVersion = async (version) => {
8673
+ var updateVersion = async (version2) => {
8673
8674
  try {
8674
8675
  await doWithDB(
8675
8676
  StaticDatabases.PLATFORM_INFO.name,
8676
8677
  async (platformDb) => {
8677
8678
  const install = await getInstall();
8678
- install.version = version;
8679
+ install.version = version2;
8679
8680
  await platformDb.put(install);
8680
8681
  await bustCache("installation" /* INSTALLATION */);
8681
8682
  }
@@ -8777,13 +8778,13 @@ var identifyInstallationGroup = async (installId, timestamp) => {
8777
8778
  const id = installId;
8778
8779
  const type = "installation" /* INSTALLATION */;
8779
8780
  const hosting = getHostingFromEnv();
8780
- const version = environment_default2.VERSION;
8781
+ const version2 = environment_default2.VERSION;
8781
8782
  const environment3 = getDeploymentEnvironment();
8782
8783
  const group = {
8783
8784
  id,
8784
8785
  type,
8785
8786
  hosting,
8786
- version,
8787
+ version: version2,
8787
8788
  environment: environment3
8788
8789
  };
8789
8790
  await identifyGroup(group, timestamp);
@@ -8908,7 +8909,7 @@ var getEventTenantId = async (tenantId) => {
8908
8909
  var getUniqueTenantId = async (tenantId) => {
8909
8910
  return doInTenant(tenantId, () => {
8910
8911
  return withCache("uniqueTenantId" /* UNIQUE_TENANT_ID */, 86400 /* ONE_DAY */, async () => {
8911
- const db = getGlobalDB();
8912
+ const db2 = getGlobalDB();
8912
8913
  const config = await getSettingsConfigDoc();
8913
8914
  let uniqueTenantId;
8914
8915
  if (config.config.uniqueTenantId) {
@@ -8916,7 +8917,7 @@ var getUniqueTenantId = async (tenantId) => {
8916
8917
  } else {
8917
8918
  uniqueTenantId = `${newid()}_${tenantId}`;
8918
8919
  config.config.uniqueTenantId = uniqueTenantId;
8919
- await db.put(config);
8920
+ await db2.put(config);
8920
8921
  return uniqueTenantId;
8921
8922
  }
8922
8923
  });
@@ -8956,10 +8957,10 @@ __export(backfill_exports, {
8956
8957
  init_src();
8957
8958
  init_context2();
8958
8959
  var start = async (events2) => {
8959
- const metadata = {
8960
+ const metadata2 = {
8960
8961
  eventWhitelist: events2
8961
8962
  };
8962
- return saveBackfillMetadata(metadata);
8963
+ return saveBackfillMetadata(metadata2);
8963
8964
  };
8964
8965
  var recordEvent2 = async (event, properties) => {
8965
8966
  const eventKey2 = getEventKey(event, properties);
@@ -9269,11 +9270,11 @@ var app_default = {
9269
9270
 
9270
9271
  // ../backend-core/src/events/publishers/auth.ts
9271
9272
  init_src();
9272
- async function login(source, email) {
9273
+ async function login(source2, email) {
9273
9274
  const identity = await identification_default.getCurrentIdentity();
9274
9275
  const properties = {
9275
9276
  userId: identity.id,
9276
- source,
9277
+ source: source2,
9277
9278
  audited: {
9278
9279
  email
9279
9280
  }
@@ -10062,9 +10063,9 @@ var view_default = {
10062
10063
 
10063
10064
  // ../backend-core/src/events/publishers/installation.ts
10064
10065
  init_src();
10065
- async function versionChecked(version) {
10066
+ async function versionChecked(version2) {
10066
10067
  const properties = {
10067
- currentVersion: version
10068
+ currentVersion: version2
10068
10069
  };
10069
10070
  await publishEvent("installation:version:checked" /* INSTALLATION_VERSION_CHECKED */, properties);
10070
10071
  }
@@ -10283,13 +10284,13 @@ async function appBackupRestored(backup) {
10283
10284
  };
10284
10285
  await publishEvent("app:backup:restored" /* APP_BACKUP_RESTORED */, properties);
10285
10286
  }
10286
- async function appBackupTriggered(appId, backupId, type, trigger, name) {
10287
+ async function appBackupTriggered(appId, backupId, type, trigger, name2) {
10287
10288
  const properties = {
10288
10289
  appId,
10289
10290
  backupId,
10290
10291
  type,
10291
10292
  trigger,
10292
- name
10293
+ name: name2
10293
10294
  };
10294
10295
  await publishEvent("app:backup:triggered" /* APP_BACKUP_TRIGGERED */, properties);
10295
10296
  }
@@ -10300,16 +10301,16 @@ var backup_default = {
10300
10301
 
10301
10302
  // ../backend-core/src/events/publishers/environmentVariable.ts
10302
10303
  init_src();
10303
- async function created14(name, environments) {
10304
+ async function created14(name2, environments) {
10304
10305
  const properties = {
10305
- name,
10306
+ name: name2,
10306
10307
  environments
10307
10308
  };
10308
10309
  await publishEvent("environment_variable:created" /* ENVIRONMENT_VARIABLE_CREATED */, properties);
10309
10310
  }
10310
- async function deleted14(name) {
10311
+ async function deleted14(name2) {
10311
10312
  const properties = {
10312
- name
10313
+ name: name2
10313
10314
  };
10314
10315
  await publishEvent("environment_variable:deleted" /* ENVIRONMENT_VARIABLE_DELETED */, properties);
10315
10316
  }
@@ -10430,8 +10431,8 @@ function removeUserPassword(users2) {
10430
10431
  return users2;
10431
10432
  }
10432
10433
  var bulkGetGlobalUsersById = async (userIds, opts) => {
10433
- const db = getGlobalDB();
10434
- let users2 = (await db.allDocs({
10434
+ const db2 = getGlobalDB();
10435
+ let users2 = (await db2.allDocs({
10435
10436
  keys: userIds,
10436
10437
  include_docs: true
10437
10438
  })).rows.map((row) => row.doc);
@@ -10441,21 +10442,21 @@ var bulkGetGlobalUsersById = async (userIds, opts) => {
10441
10442
  return users2;
10442
10443
  };
10443
10444
  var getAllUserIds = async () => {
10444
- const db = getGlobalDB();
10445
+ const db2 = getGlobalDB();
10445
10446
  const startKey = `${"us" /* USER */}${SEPARATOR}`;
10446
- const response = await db.allDocs({
10447
+ const response = await db2.allDocs({
10447
10448
  startkey: startKey,
10448
10449
  endkey: `${startKey}${UNICODE_MAX}`
10449
10450
  });
10450
10451
  return response.rows.map((row) => row.id);
10451
10452
  };
10452
10453
  var bulkUpdateGlobalUsers = async (users2) => {
10453
- const db = getGlobalDB();
10454
- return await db.bulkDocs(users2);
10454
+ const db2 = getGlobalDB();
10455
+ return await db2.bulkDocs(users2);
10455
10456
  };
10456
10457
  async function getById(id, opts) {
10457
- const db = getGlobalDB();
10458
- let user = await db.get(id);
10458
+ const db2 = getGlobalDB();
10459
+ let user = await db2.get(id);
10459
10460
  if (opts == null ? void 0 : opts.cleanup) {
10460
10461
  user = removeUserPassword(user);
10461
10462
  }
@@ -10558,7 +10559,7 @@ var paginatedUsers = async ({
10558
10559
  email,
10559
10560
  appId
10560
10561
  } = {}) => {
10561
- const db = getGlobalDB();
10562
+ const db2 = getGlobalDB();
10562
10563
  const opts = {
10563
10564
  include_docs: true,
10564
10565
  limit: PAGE_LIMIT + 1
@@ -10569,12 +10570,12 @@ var paginatedUsers = async ({
10569
10570
  let userList, property = "_id", getKey;
10570
10571
  if (appId) {
10571
10572
  userList = await searchGlobalUsersByApp(appId, opts);
10572
- getKey = (doc) => getGlobalUserByAppPage(appId, doc);
10573
+ getKey = (doc2) => getGlobalUserByAppPage(appId, doc2);
10573
10574
  } else if (email) {
10574
10575
  userList = await searchGlobalUsersByEmail(email, opts);
10575
10576
  property = "email";
10576
10577
  } else {
10577
- const response = await db.allDocs(getGlobalUserParams(null, opts));
10578
+ const response = await db2.allDocs(getGlobalUserParams(null, opts));
10578
10579
  userList = response.rows.map((row) => row.doc);
10579
10580
  }
10580
10581
  return pagination(userList, PAGE_LIMIT, {
@@ -10695,10 +10696,10 @@ var EXTERNAL_BUILTIN_ROLE_IDS = [
10695
10696
  BUILTIN_IDS.PUBLIC
10696
10697
  ];
10697
10698
  var Role2 = class {
10698
- constructor(id, name, permissionId) {
10699
+ constructor(id, name2, permissionId) {
10699
10700
  this.permissions = {};
10700
10701
  this._id = id;
10701
- this.name = name;
10702
+ this.name = name2;
10702
10703
  this.permissionId = permissionId;
10703
10704
  }
10704
10705
  addInheritance(inherits) {
@@ -10777,7 +10778,7 @@ function lowerBuiltinRoleID(roleId1, roleId2) {
10777
10778
  }
10778
10779
  return builtinRoleToNumber(roleId1) > builtinRoleToNumber(roleId2) ? roleId2 : roleId1;
10779
10780
  }
10780
- async function getRole(roleId) {
10781
+ async function getRole(roleId, opts) {
10781
10782
  if (!roleId) {
10782
10783
  return void 0;
10783
10784
  }
@@ -10788,11 +10789,14 @@ async function getRole(roleId) {
10788
10789
  );
10789
10790
  }
10790
10791
  try {
10791
- const db = getAppDB();
10792
- const dbRole = await db.get(getDBRoleID(roleId));
10792
+ const db2 = getAppDB();
10793
+ const dbRole = await db2.get(getDBRoleID(roleId));
10793
10794
  role = Object.assign(role, dbRole);
10794
10795
  role._id = getExternalRoleID(role._id);
10795
10796
  } catch (err) {
10797
+ if (!isBuiltin(roleId) && (opts == null ? void 0 : opts.defaultPublic)) {
10798
+ return cloneDeep2(BUILTIN_ROLES.PUBLIC);
10799
+ }
10796
10800
  if (Object.keys(role).length === 0) {
10797
10801
  throw err;
10798
10802
  }
@@ -10840,10 +10844,10 @@ async function getAllRoles(appId) {
10840
10844
  }
10841
10845
  return internal(appDB);
10842
10846
  }
10843
- async function internal(db) {
10847
+ async function internal(db2) {
10844
10848
  let roles = [];
10845
- if (db) {
10846
- const body2 = await db.allDocs(
10849
+ if (db2) {
10850
+ const body2 = await db2.allDocs(
10847
10851
  getRoleParams(null, {
10848
10852
  include_docs: true
10849
10853
  })
@@ -11279,12 +11283,12 @@ async function syncUser(user, details) {
11279
11283
  if (details.profile) {
11280
11284
  const profile = details.profile;
11281
11285
  if (profile.name) {
11282
- const name = profile.name;
11283
- if (name.givenName) {
11284
- firstName = name.givenName;
11286
+ const name2 = profile.name;
11287
+ if (name2.givenName) {
11288
+ firstName = name2.givenName;
11285
11289
  }
11286
- if (name.familyName) {
11287
- lastName = name.familyName;
11290
+ if (name2.familyName) {
11291
+ lastName = name2.familyName;
11288
11292
  }
11289
11293
  }
11290
11294
  pictureUrl = await getProfilePictureUrl(user, details);
@@ -11481,8 +11485,8 @@ async function preAuth(passport2, ctx, next) {
11481
11485
  callbackUrl,
11482
11486
  ssoSaveUserNoOp
11483
11487
  );
11484
- if (!ctx.query.appId || !ctx.query.datasourceId) {
11485
- ctx.throw(400, "appId and datasourceId query params not present.");
11488
+ if (!ctx.query.appId) {
11489
+ ctx.throw(400, "appId query param not present.");
11486
11490
  }
11487
11491
  return passport2.authenticate(strategy, {
11488
11492
  scope: ["profile", "email", "https://www.googleapis.com/auth/spreadsheets"],
@@ -11502,7 +11506,7 @@ async function postAuth(passport2, ctx, next) {
11502
11506
  clientSecret: config.clientSecret,
11503
11507
  callbackURL: callbackUrl
11504
11508
  },
11505
- (accessToken, refreshToken, profile, done) => {
11509
+ (accessToken, refreshToken, _profile, done) => {
11506
11510
  clearCookie(ctx, "budibase:datasourceauth" /* DatasourceAuth */);
11507
11511
  done(null, { accessToken, refreshToken });
11508
11512
  }
@@ -11510,22 +11514,14 @@ async function postAuth(passport2, ctx, next) {
11510
11514
  { successRedirect: "/", failureRedirect: "/error" },
11511
11515
  async (err, tokens) => {
11512
11516
  const baseUrl = `/builder/app/${authStateCookie.appId}/data`;
11513
- await doWithDB(authStateCookie.appId, async (db) => {
11514
- let datasource2;
11515
- try {
11516
- datasource2 = await db.get(authStateCookie.datasourceId);
11517
- } catch (err2) {
11518
- if (err2.status === 404) {
11519
- ctx.redirect(baseUrl);
11520
- }
11521
- }
11522
- if (!datasource2.config) {
11523
- datasource2.config = {};
11517
+ const id = newid();
11518
+ await store(
11519
+ `datasource:creation:${authStateCookie.appId}:google:${id}`,
11520
+ {
11521
+ tokens
11524
11522
  }
11525
- datasource2.config.auth = { type: "google", ...tokens };
11526
- await db.put(datasource2);
11527
- ctx.redirect(`${baseUrl}/datasource/${authStateCookie.datasourceId}`);
11528
- });
11523
+ );
11524
+ ctx.redirect(`${baseUrl}/new?continue_google_setup=${id}`);
11529
11525
  }
11530
11526
  )(ctx, next);
11531
11527
  }
@@ -11575,16 +11571,22 @@ var encryption_exports = {};
11575
11571
  __export(encryption_exports, {
11576
11572
  SecretOption: () => SecretOption,
11577
11573
  decrypt: () => decrypt,
11574
+ decryptFile: () => decryptFile,
11578
11575
  encrypt: () => encrypt,
11576
+ encryptFile: () => encryptFile,
11579
11577
  getSecret: () => getSecret
11580
11578
  });
11581
11579
  var import_crypto = __toESM(require("crypto"));
11580
+ var import_fs2 = __toESM(require("fs"));
11581
+ var import_zlib = __toESM(require("zlib"));
11582
11582
  init_environment2();
11583
+ var import_path2 = require("path");
11583
11584
  var ALGO = "aes-256-ctr";
11584
11585
  var SEPARATOR3 = "-";
11585
11586
  var ITERATIONS = 1e4;
11586
- var RANDOM_BYTES = 16;
11587
11587
  var STRETCH_LENGTH = 32;
11588
+ var SALT_LENGTH = 16;
11589
+ var IV_LENGTH = 16;
11588
11590
  var SecretOption = /* @__PURE__ */ ((SecretOption2) => {
11589
11591
  SecretOption2["API"] = "api";
11590
11592
  SecretOption2["ENCRYPTION"] = "encryption";
@@ -11608,11 +11610,11 @@ function getSecret(secretOption) {
11608
11610
  }
11609
11611
  return secret;
11610
11612
  }
11611
- function stretchString(string, salt) {
11612
- return import_crypto.default.pbkdf2Sync(string, salt, ITERATIONS, STRETCH_LENGTH, "sha512");
11613
+ function stretchString(secret, salt) {
11614
+ return import_crypto.default.pbkdf2Sync(secret, salt, ITERATIONS, STRETCH_LENGTH, "sha512");
11613
11615
  }
11614
11616
  function encrypt(input, secretOption = "api" /* API */) {
11615
- const salt = import_crypto.default.randomBytes(RANDOM_BYTES);
11617
+ const salt = import_crypto.default.randomBytes(SALT_LENGTH);
11616
11618
  const stretched = stretchString(getSecret(secretOption), salt);
11617
11619
  const cipher = import_crypto.default.createCipheriv(ALGO, stretched, salt);
11618
11620
  const base = cipher.update(input);
@@ -11629,6 +11631,87 @@ function decrypt(input, secretOption = "api" /* API */) {
11629
11631
  const final = decipher.final();
11630
11632
  return Buffer.concat([base, final]).toString();
11631
11633
  }
11634
+ async function encryptFile({ dir, filename }, secret) {
11635
+ const outputFileName = `${filename}.enc`;
11636
+ const filePath = (0, import_path2.join)(dir, filename);
11637
+ const inputFile = import_fs2.default.createReadStream(filePath);
11638
+ const outputFile = import_fs2.default.createWriteStream((0, import_path2.join)(dir, outputFileName));
11639
+ const salt = import_crypto.default.randomBytes(SALT_LENGTH);
11640
+ const iv = import_crypto.default.randomBytes(IV_LENGTH);
11641
+ const stretched = stretchString(secret, salt);
11642
+ const cipher = import_crypto.default.createCipheriv(ALGO, stretched, iv);
11643
+ outputFile.write(salt);
11644
+ outputFile.write(iv);
11645
+ inputFile.pipe(import_zlib.default.createGzip()).pipe(cipher).pipe(outputFile);
11646
+ return new Promise((r) => {
11647
+ outputFile.on("finish", () => {
11648
+ r({
11649
+ filename: outputFileName,
11650
+ dir
11651
+ });
11652
+ });
11653
+ });
11654
+ }
11655
+ async function getSaltAndIV(path2) {
11656
+ const fileStream = import_fs2.default.createReadStream(path2);
11657
+ const salt = await readBytes(fileStream, SALT_LENGTH);
11658
+ const iv = await readBytes(fileStream, IV_LENGTH);
11659
+ fileStream.close();
11660
+ return { salt, iv };
11661
+ }
11662
+ async function decryptFile(inputPath, outputPath, secret) {
11663
+ const { salt, iv } = await getSaltAndIV(inputPath);
11664
+ const inputFile = import_fs2.default.createReadStream(inputPath, {
11665
+ start: SALT_LENGTH + IV_LENGTH
11666
+ });
11667
+ const outputFile = import_fs2.default.createWriteStream(outputPath);
11668
+ const stretched = stretchString(secret, salt);
11669
+ const decipher = import_crypto.default.createDecipheriv(ALGO, stretched, iv);
11670
+ const unzip = import_zlib.default.createGunzip();
11671
+ inputFile.pipe(decipher).pipe(unzip).pipe(outputFile);
11672
+ return new Promise((res, rej) => {
11673
+ outputFile.on("finish", () => {
11674
+ outputFile.close();
11675
+ res();
11676
+ });
11677
+ inputFile.on("error", (e) => {
11678
+ outputFile.close();
11679
+ rej(e);
11680
+ });
11681
+ decipher.on("error", (e) => {
11682
+ outputFile.close();
11683
+ rej(e);
11684
+ });
11685
+ unzip.on("error", (e) => {
11686
+ outputFile.close();
11687
+ rej(e);
11688
+ });
11689
+ outputFile.on("error", (e) => {
11690
+ outputFile.close();
11691
+ rej(e);
11692
+ });
11693
+ });
11694
+ }
11695
+ function readBytes(stream3, length) {
11696
+ return new Promise((resolve3, reject) => {
11697
+ let bytesRead = 0;
11698
+ const data = [];
11699
+ stream3.on("readable", () => {
11700
+ let chunk;
11701
+ while ((chunk = stream3.read(length - bytesRead)) !== null) {
11702
+ data.push(chunk);
11703
+ bytesRead += chunk.length;
11704
+ }
11705
+ resolve3(Buffer.concat(data));
11706
+ });
11707
+ stream3.on("end", () => {
11708
+ reject(new Error("Insufficient data in the stream."));
11709
+ });
11710
+ stream3.on("error", (error) => {
11711
+ reject(error);
11712
+ });
11713
+ });
11714
+ }
11632
11715
 
11633
11716
  // ../backend-core/src/middleware/authenticated.ts
11634
11717
  init_identity();
@@ -11720,13 +11803,13 @@ async function checkApiKey(apiKey, populateUser) {
11720
11803
  return doInTenant(tenantId, async () => {
11721
11804
  let userId;
11722
11805
  try {
11723
- const db = getGlobalDB();
11806
+ const db2 = getGlobalDB();
11724
11807
  userId = await queryGlobalView(
11725
11808
  "by_api_key" /* BY_API_KEY */,
11726
11809
  {
11727
11810
  key: apiKey
11728
11811
  },
11729
- db
11812
+ db2
11730
11813
  );
11731
11814
  } catch (err) {
11732
11815
  userId = void 0;
@@ -11747,7 +11830,7 @@ function authenticated_default(noAuthPatterns = [], opts = {
11747
11830
  const noAuthOptions = noAuthPatterns ? buildMatcherRegex(noAuthPatterns) : [];
11748
11831
  return async (ctx, next) => {
11749
11832
  let publicEndpoint = false;
11750
- const version = ctx.request.headers["x-budibase-api-version" /* API_VER */];
11833
+ const version2 = ctx.request.headers["x-budibase-api-version" /* API_VER */];
11751
11834
  const found = matches(ctx, noAuthOptions);
11752
11835
  if (found) {
11753
11836
  publicEndpoint = true;
@@ -11810,7 +11893,7 @@ function authenticated_default(noAuthPatterns = [], opts = {
11810
11893
  if (!authenticated) {
11811
11894
  authenticated = false;
11812
11895
  }
11813
- finalise(ctx, { authenticated, user, internal, version, publicEndpoint });
11896
+ finalise(ctx, { authenticated, user, internal, version: version2, publicEndpoint });
11814
11897
  if (user && user.email) {
11815
11898
  return doInUserContext(user, ctx, next);
11816
11899
  } else {
@@ -11825,7 +11908,7 @@ function authenticated_default(noAuthPatterns = [], opts = {
11825
11908
  ctx.throw(403, err.message);
11826
11909
  }
11827
11910
  if (opts && opts.publicAllowed || publicEndpoint) {
11828
- finalise(ctx, { authenticated: false, version, publicEndpoint });
11911
+ finalise(ctx, { authenticated: false, version: version2, publicEndpoint });
11829
11912
  return next();
11830
11913
  } else {
11831
11914
  ctx.throw(err.status || 403, err);
@@ -12182,8 +12265,8 @@ async function updateUserOAuth(userId, oAuthConfig) {
12182
12265
  refreshToken: oAuthConfig.refreshToken
12183
12266
  };
12184
12267
  try {
12185
- const db = getGlobalDB();
12186
- const dbUser = await db.get(userId);
12268
+ const db2 = getGlobalDB();
12269
+ const dbUser = await db2.get(userId);
12187
12270
  if (typeof details.refreshToken !== "string") {
12188
12271
  delete details.refreshToken;
12189
12272
  }
@@ -12191,7 +12274,7 @@ async function updateUserOAuth(userId, oAuthConfig) {
12191
12274
  ...dbUser.oauth2,
12192
12275
  ...details
12193
12276
  };
12194
- await db.put(dbUser);
12277
+ await db2.put(dbUser);
12195
12278
  await invalidateUser(userId);
12196
12279
  } catch (e) {
12197
12280
  console.error("Could not update OAuth details for current user", e);
@@ -12386,16 +12469,16 @@ var import_aws_sdk = __toESM(require("aws-sdk"));
12386
12469
  var import_stream = __toESM(require("stream"));
12387
12470
  var import_node_fetch6 = __toESM(require("node-fetch"));
12388
12471
  var import_tar_fs = __toESM(require("tar-fs"));
12389
- var import_zlib = __toESM(require("zlib"));
12472
+ var import_zlib2 = __toESM(require("zlib"));
12390
12473
  var import_util = require("util");
12391
- var import_path3 = require("path");
12392
- var import_fs3 = __toESM(require("fs"));
12474
+ var import_path4 = require("path");
12475
+ var import_fs4 = __toESM(require("fs"));
12393
12476
  init_environment2();
12394
12477
 
12395
12478
  // ../backend-core/src/objectStore/utils.ts
12396
- var import_path2 = require("path");
12479
+ var import_path3 = require("path");
12397
12480
  var import_os = require("os");
12398
- var import_fs2 = __toESM(require("fs"));
12481
+ var import_fs3 = __toESM(require("fs"));
12399
12482
  init_environment2();
12400
12483
  var ObjectStoreBuckets = {
12401
12484
  BACKUPS: environment_default2.BACKUPS_BUCKET_NAME,
@@ -12404,9 +12487,9 @@ var ObjectStoreBuckets = {
12404
12487
  GLOBAL: environment_default2.GLOBAL_BUCKET_NAME,
12405
12488
  PLUGINS: environment_default2.PLUGIN_BUCKET_NAME
12406
12489
  };
12407
- var bbTmp = (0, import_path2.join)((0, import_os.tmpdir)(), ".budibase");
12408
- if (!import_fs2.default.existsSync(bbTmp)) {
12409
- import_fs2.default.mkdirSync(bbTmp);
12490
+ var bbTmp = (0, import_path3.join)((0, import_os.tmpdir)(), ".budibase");
12491
+ if (!import_fs3.default.existsSync(bbTmp)) {
12492
+ import_fs3.default.mkdirSync(bbTmp);
12410
12493
  }
12411
12494
  function budibaseTempDir() {
12412
12495
  return bbTmp;
@@ -12491,10 +12574,10 @@ var upload = async ({
12491
12574
  filename,
12492
12575
  path: path2,
12493
12576
  type,
12494
- metadata
12577
+ metadata: metadata2
12495
12578
  }) => {
12496
12579
  const extension = filename.split(".").pop();
12497
- const fileBytes = import_fs3.default.readFileSync(path2);
12580
+ const fileBytes = import_fs4.default.readFileSync(path2);
12498
12581
  const objectStore = ObjectStore(bucketName);
12499
12582
  await makeSureBucketExists(objectStore, bucketName);
12500
12583
  let contentType = type;
@@ -12507,13 +12590,13 @@ var upload = async ({
12507
12590
  Body: fileBytes,
12508
12591
  ContentType: contentType
12509
12592
  };
12510
- if (metadata && typeof metadata === "object") {
12511
- for (let key of Object.keys(metadata)) {
12512
- if (!metadata[key] || typeof metadata[key] !== "string") {
12513
- delete metadata[key];
12593
+ if (metadata2 && typeof metadata2 === "object") {
12594
+ for (let key of Object.keys(metadata2)) {
12595
+ if (!metadata2[key] || typeof metadata2[key] !== "string") {
12596
+ delete metadata2[key];
12514
12597
  }
12515
12598
  }
12516
- config.Metadata = metadata;
12599
+ config.Metadata = metadata2;
12517
12600
  }
12518
12601
  return objectStore.upload(config).promise();
12519
12602
  };
@@ -12596,13 +12679,13 @@ var retrieveToTmp = async (bucketName, filepath) => {
12596
12679
  bucketName = sanitizeBucket(bucketName);
12597
12680
  filepath = sanitizeKey(filepath);
12598
12681
  const data = await retrieve(bucketName, filepath);
12599
- const outputPath = (0, import_path3.join)(budibaseTempDir(), (0, import_uuid3.v4)());
12600
- import_fs3.default.writeFileSync(outputPath, data);
12682
+ const outputPath = (0, import_path4.join)(budibaseTempDir(), (0, import_uuid3.v4)());
12683
+ import_fs4.default.writeFileSync(outputPath, data);
12601
12684
  return outputPath;
12602
12685
  };
12603
12686
  var retrieveDirectory = async (bucketName, path2) => {
12604
- let writePath = (0, import_path3.join)(budibaseTempDir(), (0, import_uuid3.v4)());
12605
- import_fs3.default.mkdirSync(writePath);
12687
+ let writePath = (0, import_path4.join)(budibaseTempDir(), (0, import_uuid3.v4)());
12688
+ import_fs4.default.mkdirSync(writePath);
12606
12689
  const objects = await listAllObjects(bucketName, path2);
12607
12690
  let fullObjects = await Promise.all(
12608
12691
  objects.map((obj) => retrieve(bucketName, obj.Key))
@@ -12614,9 +12697,9 @@ var retrieveDirectory = async (bucketName, path2) => {
12614
12697
  const possiblePath = filename.split("/");
12615
12698
  if (possiblePath.length > 1) {
12616
12699
  const dirs = possiblePath.slice(0, possiblePath.length - 1);
12617
- import_fs3.default.mkdirSync((0, import_path3.join)(writePath, ...dirs), { recursive: true });
12700
+ import_fs4.default.mkdirSync((0, import_path4.join)(writePath, ...dirs), { recursive: true });
12618
12701
  }
12619
- import_fs3.default.writeFileSync((0, import_path3.join)(writePath, ...possiblePath), data);
12702
+ import_fs4.default.writeFileSync((0, import_path4.join)(writePath, ...possiblePath), data);
12620
12703
  }
12621
12704
  return writePath;
12622
12705
  };
@@ -12667,21 +12750,21 @@ var deleteFolder = async (bucketName, folder) => {
12667
12750
  return deleteFolder(bucketName, folder);
12668
12751
  }
12669
12752
  };
12670
- var uploadDirectory = async (bucketName, localPath, bucketPath) => {
12753
+ var uploadDirectory = async (bucketName, localPath, bucketPath2) => {
12671
12754
  bucketName = sanitizeBucket(bucketName);
12672
12755
  let uploads = [];
12673
- const files = import_fs3.default.readdirSync(localPath, { withFileTypes: true });
12674
- for (let file of files) {
12675
- const path2 = sanitizeKey((0, import_path3.join)(bucketPath, file.name));
12676
- const local = (0, import_path3.join)(localPath, file.name);
12756
+ const files2 = import_fs4.default.readdirSync(localPath, { withFileTypes: true });
12757
+ for (let file of files2) {
12758
+ const path2 = sanitizeKey((0, import_path4.join)(bucketPath2, file.name));
12759
+ const local = (0, import_path4.join)(localPath, file.name);
12677
12760
  if (file.isDirectory()) {
12678
12761
  uploads.push(uploadDirectory(bucketName, local, path2));
12679
12762
  } else {
12680
- uploads.push(streamUpload(bucketName, path2, import_fs3.default.createReadStream(local)));
12763
+ uploads.push(streamUpload(bucketName, path2, import_fs4.default.createReadStream(local)));
12681
12764
  }
12682
12765
  }
12683
12766
  await Promise.all(uploads);
12684
- return files;
12767
+ return files2;
12685
12768
  };
12686
12769
  var downloadTarballDirect = async (url, path2, headers = {}) => {
12687
12770
  path2 = sanitizeKey(path2);
@@ -12689,7 +12772,7 @@ var downloadTarballDirect = async (url, path2, headers = {}) => {
12689
12772
  if (!response.ok) {
12690
12773
  throw new Error(`unexpected response ${response.statusText}`);
12691
12774
  }
12692
- await streamPipeline(response.body, import_zlib.default.createUnzip(), import_tar_fs.default.extract(path2));
12775
+ await streamPipeline(response.body, import_zlib2.default.createUnzip(), import_tar_fs.default.extract(path2));
12693
12776
  };
12694
12777
  var downloadTarball = async (url, bucketName, path2) => {
12695
12778
  bucketName = sanitizeBucket(bucketName);
@@ -12698,8 +12781,8 @@ var downloadTarball = async (url, bucketName, path2) => {
12698
12781
  if (!response.ok) {
12699
12782
  throw new Error(`unexpected response ${response.statusText}`);
12700
12783
  }
12701
- const tmpPath = (0, import_path3.join)(budibaseTempDir(), path2);
12702
- await streamPipeline(response.body, import_zlib.default.createUnzip(), import_tar_fs.default.extract(tmpPath));
12784
+ const tmpPath = (0, import_path4.join)(budibaseTempDir(), path2);
12785
+ await streamPipeline(response.body, import_zlib2.default.createUnzip(), import_tar_fs.default.extract(tmpPath));
12703
12786
  if (!environment_default2.isTest() && environment_default2.SELF_HOSTED) {
12704
12787
  await uploadDirectory(bucketName, tmpPath, path2);
12705
12788
  }
@@ -12746,12 +12829,12 @@ var getUrl = (s3Key) => {
12746
12829
  };
12747
12830
 
12748
12831
  // ../backend-core/src/objectStore/buckets/app.ts
12749
- var clientLibraryUrl = (appId, version) => {
12832
+ var clientLibraryUrl = (appId, version2) => {
12750
12833
  if (environment_default2.isProd()) {
12751
12834
  let file = `${sanitizeKey(appId)}/budibase-client.js`;
12752
12835
  if (environment_default2.CLOUDFRONT_CDN) {
12753
- if (version) {
12754
- file += `?v=${version}`;
12836
+ if (version2) {
12837
+ file += `?v=${version2}`;
12755
12838
  }
12756
12839
  return getUrl(file);
12757
12840
  } else {
@@ -12772,8 +12855,8 @@ var getAppFileUrl = (s3Key) => {
12772
12855
  // ../backend-core/src/objectStore/buckets/global.ts
12773
12856
  init_environment2();
12774
12857
  init_context2();
12775
- var getGlobalFileUrl = (type, name, etag) => {
12776
- let file = getGlobalFileS3Key(type, name);
12858
+ var getGlobalFileUrl = (type, name2, etag) => {
12859
+ let file = getGlobalFileS3Key(type, name2);
12777
12860
  if (environment_default2.CLOUDFRONT_CDN) {
12778
12861
  if (etag) {
12779
12862
  file = `${file}?etag=${etag}`;
@@ -12783,8 +12866,8 @@ var getGlobalFileUrl = (type, name, etag) => {
12783
12866
  return getPresignedUrl(environment_default2.GLOBAL_BUCKET_NAME, file);
12784
12867
  }
12785
12868
  };
12786
- var getGlobalFileS3Key = (type, name) => {
12787
- let file = `${type}/${name}`;
12869
+ var getGlobalFileS3Key = (type, name2) => {
12870
+ let file = `${type}/${name2}`;
12788
12871
  if (environment_default2.MULTI_TENANCY) {
12789
12872
  const tenantId = getTenantId();
12790
12873
  file = `${tenantId}/${file}`;
@@ -12827,11 +12910,11 @@ var getPluginJSKey = (plugin) => {
12827
12910
  return getPluginS3Key(plugin, "plugin.min.js");
12828
12911
  };
12829
12912
  var getPluginIconKey = (plugin) => {
12830
- const iconFileName = plugin.iconUrl ? "icon.svg" : plugin.iconFileName;
12831
- if (!iconFileName) {
12913
+ const iconFileName2 = plugin.iconUrl ? "icon.svg" : plugin.iconFileName;
12914
+ if (!iconFileName2) {
12832
12915
  return;
12833
12916
  }
12834
- return getPluginS3Key(plugin, iconFileName);
12917
+ return getPluginS3Key(plugin, iconFileName2);
12835
12918
  };
12836
12919
  var getPluginS3Key = (plugin, fileName) => {
12837
12920
  const s3Key = getPluginS3Dir(plugin.name);
@@ -13384,18 +13467,18 @@ function finaliseExternalTables(tables, entities) {
13384
13467
  let finalTables = {};
13385
13468
  const errors = {};
13386
13469
  const tableIds = Object.values(tables).map((table) => table._id);
13387
- for (let [name, table] of Object.entries(tables)) {
13470
+ for (let [name2, table] of Object.entries(tables)) {
13388
13471
  const schemaFields = Object.keys(table.schema);
13389
13472
  if (table.primary == null || table.primary.length === 0) {
13390
- errors[name] = "no_key" /* NO_KEY */;
13473
+ errors[name2] = "no_key" /* NO_KEY */;
13391
13474
  continue;
13392
13475
  } else if (schemaFields.find(
13393
13476
  (field) => invalidColumns.includes(field)
13394
13477
  )) {
13395
- errors[name] = "invalid_column" /* INVALID_COLUMN */;
13478
+ errors[name2] = "invalid_column" /* INVALID_COLUMN */;
13396
13479
  continue;
13397
13480
  }
13398
- finalTables[name] = copyExistingPropsOver(name, table, entities, tableIds);
13481
+ finalTables[name2] = copyExistingPropsOver(name2, table, entities, tableIds);
13399
13482
  }
13400
13483
  finalTables = Object.entries(finalTables).sort(([a], [b]) => a.localeCompare(b)).reduce((r, [k, v]) => ({ ...r, [k]: v }), {});
13401
13484
  return { tables: finalTables, errors };
@@ -14355,7 +14438,8 @@ var PostgresIntegration = class extends sql_default {
14355
14438
  try {
14356
14439
  await this.openConnection();
14357
14440
  const columnsResponse = await this.client.query(this.COLUMNS_SQL);
14358
- return columnsResponse.rows.map((row) => row.table_name);
14441
+ const names = columnsResponse.rows.map((row) => row.table_name);
14442
+ return [...new Set(names)];
14359
14443
  } finally {
14360
14444
  await this.closeConnection();
14361
14445
  }
@@ -14968,6 +15052,8 @@ var MongoIntegration = class {
14968
15052
  response.connected = true;
14969
15053
  } catch (e) {
14970
15054
  response.error = e.message;
15055
+ } finally {
15056
+ await this.client.close();
14971
15057
  }
14972
15058
  return response;
14973
15059
  }
@@ -15040,8 +15126,8 @@ var MongoIntegration = class {
15040
15126
  async create(query) {
15041
15127
  try {
15042
15128
  await this.connect();
15043
- const db = this.client.db(this.config.db);
15044
- const collection = db.collection(query.extra.collection);
15129
+ const db2 = this.client.db(this.config.db);
15130
+ const collection = db2.collection(query.extra.collection);
15045
15131
  let json = this.createObjectIds(query.json);
15046
15132
  switch (query.extra.actionType) {
15047
15133
  case "insertOne": {
@@ -15066,8 +15152,8 @@ var MongoIntegration = class {
15066
15152
  async read(query) {
15067
15153
  try {
15068
15154
  await this.connect();
15069
- const db = this.client.db(this.config.db);
15070
- const collection = db.collection(query.extra.collection);
15155
+ const db2 = this.client.db(this.config.db);
15156
+ const collection = db2.collection(query.extra.collection);
15071
15157
  let json = this.createObjectIds(query.json);
15072
15158
  switch (query.extra.actionType) {
15073
15159
  case "find": {
@@ -15109,8 +15195,8 @@ var MongoIntegration = class {
15109
15195
  async update(query) {
15110
15196
  try {
15111
15197
  await this.connect();
15112
- const db = this.client.db(this.config.db);
15113
- const collection = db.collection(query.extra.collection);
15198
+ const db2 = this.client.db(this.config.db);
15199
+ const collection = db2.collection(query.extra.collection);
15114
15200
  let queryJson = query.json;
15115
15201
  if (typeof queryJson === "string") {
15116
15202
  queryJson = this.parseQueryParams(queryJson, "update");
@@ -15147,8 +15233,8 @@ var MongoIntegration = class {
15147
15233
  async delete(query) {
15148
15234
  try {
15149
15235
  await this.connect();
15150
- const db = this.client.db(this.config.db);
15151
- const collection = db.collection(query.extra.collection);
15236
+ const db2 = this.client.db(this.config.db);
15237
+ const collection = db2.collection(query.extra.collection);
15152
15238
  let queryJson = query.json;
15153
15239
  if (typeof queryJson === "string") {
15154
15240
  queryJson = this.parseQueryParams(queryJson, "delete");
@@ -15184,25 +15270,25 @@ var MongoIntegration = class {
15184
15270
  var _a;
15185
15271
  try {
15186
15272
  await this.connect();
15187
- const db = this.client.db(this.config.db);
15188
- const collection = db.collection(query.extra.collection);
15273
+ const db2 = this.client.db(this.config.db);
15274
+ const collection = db2.collection(query.extra.collection);
15189
15275
  let response = [];
15190
15276
  if (((_a = query.extra) == null ? void 0 : _a.actionType) === "pipeline") {
15191
- for await (const doc of collection.aggregate(
15277
+ for await (const doc2 of collection.aggregate(
15192
15278
  query.steps.map(({ key, value }) => {
15193
15279
  let temp = {};
15194
15280
  temp[key] = JSON.parse(value.value);
15195
15281
  return this.createObjectIds(temp);
15196
15282
  })
15197
15283
  )) {
15198
- response.push(doc);
15284
+ response.push(doc2);
15199
15285
  }
15200
15286
  } else {
15201
15287
  const stages = query.json;
15202
- for await (const doc of collection.aggregate(
15288
+ for await (const doc2 of collection.aggregate(
15203
15289
  stages ? this.createObjectIds(stages) : []
15204
15290
  )) {
15205
- response.push(doc);
15291
+ response.push(doc2);
15206
15292
  }
15207
15293
  }
15208
15294
  return response;
@@ -15502,9 +15588,9 @@ var CouchDBIntegration = class {
15502
15588
  });
15503
15589
  }
15504
15590
  async delete(query) {
15505
- const doc = await this.query("get", "Cannot find doc to be deleted", query);
15591
+ const doc2 = await this.query("get", "Cannot find doc to be deleted", query);
15506
15592
  return this.query("remove", "Error deleting couchDB document", {
15507
- json: doc
15593
+ json: doc2
15508
15594
  });
15509
15595
  }
15510
15596
  };
@@ -15683,7 +15769,7 @@ var SqlServerIntegration = class extends sql_default {
15683
15769
  throw "Unable to get list of tables in database";
15684
15770
  }
15685
15771
  const schema = this.config.schema || DEFAULT_SCHEMA;
15686
- const tableNames = tableInfo.filter((record) => record.TABLE_SCHEMA === schema).map((record) => record.TABLE_NAME).filter((name) => this.MASTER_TABLES.indexOf(name) === -1);
15772
+ const tableNames = tableInfo.filter((record) => record.TABLE_SCHEMA === schema).map((record) => record.TABLE_NAME).filter((name2) => this.MASTER_TABLES.indexOf(name2) === -1);
15687
15773
  const tables = {};
15688
15774
  for (let tableName of tableNames) {
15689
15775
  const definition = await this.runSQL(this.getDefinitionSQL(tableName));
@@ -15698,16 +15784,16 @@ var SqlServerIntegration = class extends sql_default {
15698
15784
  const requiredColumns = columns.filter((col) => col.IS_NULLABLE === "NO").map((col) => col.COLUMN_NAME);
15699
15785
  let schema2 = {};
15700
15786
  for (let def of definition) {
15701
- const name = def.COLUMN_NAME;
15702
- if (typeof name !== "string") {
15787
+ const name2 = def.COLUMN_NAME;
15788
+ if (typeof name2 !== "string") {
15703
15789
  continue;
15704
15790
  }
15705
15791
  const hasDefault = def.COLUMN_DEFAULT;
15706
- const isAuto = !!autoColumns.find((col) => col === name);
15707
- const required = !!requiredColumns.find((col) => col === name);
15708
- schema2[name] = {
15792
+ const isAuto = !!autoColumns.find((col) => col === name2);
15793
+ const required = !!requiredColumns.find((col) => col === name2);
15794
+ schema2[name2] = {
15709
15795
  autocolumn: isAuto,
15710
- name,
15796
+ name: name2,
15711
15797
  constraints: {
15712
15798
  presence: required && !isAuto && !hasDefault
15713
15799
  },
@@ -15729,7 +15815,7 @@ var SqlServerIntegration = class extends sql_default {
15729
15815
  async queryTableNames() {
15730
15816
  let tableInfo = await this.runSQL(this.TABLES_SQL);
15731
15817
  const schema = this.config.schema || DEFAULT_SCHEMA;
15732
- return tableInfo.filter((record) => record.TABLE_SCHEMA === schema).map((record) => record.TABLE_NAME).filter((name) => this.MASTER_TABLES.indexOf(name) === -1);
15818
+ return tableInfo.filter((record) => record.TABLE_SCHEMA === schema).map((record) => record.TABLE_NAME).filter((name2) => this.MASTER_TABLES.indexOf(name2) === -1);
15733
15819
  }
15734
15820
  async getTableNames() {
15735
15821
  await this.connect();
@@ -17119,11 +17205,11 @@ var runLuceneQuery = (docs, query) => {
17119
17205
  return docs;
17120
17206
  }
17121
17207
  query = cleanupQuery(query);
17122
- const match = (type, failFn) => (doc) => {
17208
+ const match = (type, failFn) => (doc2) => {
17123
17209
  const filters = Object.entries(query[type] || {});
17124
17210
  for (let i = 0; i < filters.length; i++) {
17125
17211
  const [key, testValue] = filters[i];
17126
- const docValue = deepGet(doc, removeKeyNumbering2(key));
17212
+ const docValue = deepGet(doc2, removeKeyNumbering2(key));
17127
17213
  if (failFn(docValue, testValue)) {
17128
17214
  return false;
17129
17215
  }
@@ -17184,8 +17270,8 @@ var runLuceneQuery = (docs, query) => {
17184
17270
  return testValue == null ? void 0 : testValue.every((item) => docValue == null ? void 0 : docValue.includes(item));
17185
17271
  }
17186
17272
  );
17187
- const docMatch = (doc) => {
17188
- return stringMatch(doc) && fuzzyMatch(doc) && rangeMatch(doc) && equalMatch(doc) && notEqualMatch(doc) && emptyMatch(doc) && notEmptyMatch(doc) && oneOf(doc) && contains(doc) && containsAny(doc) && notContains(doc);
17273
+ const docMatch = (doc2) => {
17274
+ return stringMatch(doc2) && fuzzyMatch(doc2) && rangeMatch(doc2) && equalMatch(doc2) && notEqualMatch(doc2) && emptyMatch(doc2) && notEmptyMatch(doc2) && oneOf(doc2) && contains(doc2) && containsAny(doc2) && notContains(doc2);
17189
17275
  };
17190
17276
  return docs.filter(docMatch);
17191
17277
  };
@@ -17230,11 +17316,39 @@ var hasFilters = (query) => {
17230
17316
  // ../shared-core/src/utils.ts
17231
17317
  var utils_exports3 = {};
17232
17318
  __export(utils_exports3, {
17319
+ parallelForeach: () => parallelForeach,
17233
17320
  unreachable: () => unreachable
17234
17321
  });
17235
17322
  function unreachable(value, message = `No such case in exhaustive switch: ${value}`) {
17236
17323
  throw new Error(message);
17237
17324
  }
17325
+ async function parallelForeach(items, task, maxConcurrency) {
17326
+ const promises = [];
17327
+ let index2 = 0;
17328
+ const processItem = async (item) => {
17329
+ try {
17330
+ await task(item);
17331
+ } finally {
17332
+ processNext();
17333
+ }
17334
+ };
17335
+ const processNext = () => {
17336
+ if (index2 >= items.length) {
17337
+ return;
17338
+ }
17339
+ const item = items[index2];
17340
+ index2++;
17341
+ const promise = processItem(item);
17342
+ promises.push(promise);
17343
+ if (promises.length >= maxConcurrency) {
17344
+ Promise.race(promises).then(processNext);
17345
+ } else {
17346
+ processNext();
17347
+ }
17348
+ };
17349
+ processNext();
17350
+ await Promise.all(promises);
17351
+ }
17238
17352
 
17239
17353
  // src/integrations/googlesheets.ts
17240
17354
  var ALLOWED_TYPES = [
@@ -17263,7 +17377,7 @@ var SCHEMA12 = {
17263
17377
  },
17264
17378
  datasource: {
17265
17379
  spreadsheetId: {
17266
- display: "Google Sheet URL",
17380
+ display: "Spreadsheet URL",
17267
17381
  type: "string" /* STRING */,
17268
17382
  required: true
17269
17383
  }
@@ -17384,6 +17498,7 @@ var GoogleSheetsIntegration = class {
17384
17498
  async connect() {
17385
17499
  var _a;
17386
17500
  try {
17501
+ await setupCreationAuth(this.config);
17387
17502
  let googleConfig = await configs_exports.getGoogleDatasourceConfig();
17388
17503
  if (!googleConfig) {
17389
17504
  throw new HTTPError("Google config not found", 400);
@@ -17434,21 +17549,22 @@ var GoogleSheetsIntegration = class {
17434
17549
  return table;
17435
17550
  }
17436
17551
  async buildSchema(datasourceId, entities) {
17437
- if (!this.config.auth) {
17438
- return;
17439
- }
17440
17552
  await this.connect();
17441
17553
  const sheets = this.client.sheetsByIndex;
17442
17554
  const tables = {};
17443
- for (let sheet of sheets) {
17444
- await sheet.getRows();
17445
- const id = buildExternalTableId(datasourceId, sheet.title);
17446
- tables[sheet.title] = this.getTableSchema(
17447
- sheet.title,
17448
- sheet.headerValues,
17449
- id
17450
- );
17451
- }
17555
+ await utils_exports3.parallelForeach(
17556
+ sheets,
17557
+ async (sheet) => {
17558
+ await sheet.getRows({ limit: 0, offset: 0 });
17559
+ const id = buildExternalTableId(datasourceId, sheet.title);
17560
+ tables[sheet.title] = this.getTableSchema(
17561
+ sheet.title,
17562
+ sheet.headerValues,
17563
+ id
17564
+ );
17565
+ },
17566
+ 10
17567
+ );
17452
17568
  const final = finaliseExternalTables(tables, entities);
17453
17569
  this.tables = final.tables;
17454
17570
  this.schemaErrors = final.errors;
@@ -17496,13 +17612,13 @@ var GoogleSheetsIntegration = class {
17496
17612
  }
17497
17613
  return rowObject;
17498
17614
  }
17499
- async createTable(name) {
17500
- if (!name) {
17615
+ async createTable(name2) {
17616
+ if (!name2) {
17501
17617
  throw new Error("Must provide name for new sheet.");
17502
17618
  }
17503
17619
  try {
17504
17620
  await this.connect();
17505
- return await this.client.addSheet({ title: name, headerValues: [name] });
17621
+ return await this.client.addSheet({ title: name2, headerValues: [name2] });
17506
17622
  } catch (err) {
17507
17623
  console.error("Error creating new table in google sheets", err);
17508
17624
  throw err;
@@ -17694,6 +17810,16 @@ var GoogleSheetsIntegration = class {
17694
17810
  }
17695
17811
  }
17696
17812
  };
17813
+ async function setupCreationAuth(datasouce) {
17814
+ if (datasouce.continueSetupId) {
17815
+ const appId = context_exports.getAppId();
17816
+ const tokens = await cache_exports.get(
17817
+ `datasource:creation:${appId}:google:${datasouce.continueSetupId}`
17818
+ );
17819
+ datasouce.auth = tokens.tokens;
17820
+ delete datasouce.continueSetupId;
17821
+ }
17822
+ }
17697
17823
  var googlesheets_default = {
17698
17824
  schema: SCHEMA12,
17699
17825
  integration: GoogleSheetsIntegration
@@ -17823,7 +17949,7 @@ var FirebaseIntegration = class {
17823
17949
  snapshot = await collectionRef.get();
17824
17950
  }
17825
17951
  const result = [];
17826
- snapshot.forEach((doc) => result.push(doc.data()));
17952
+ snapshot.forEach((doc2) => result.push(doc2.data()));
17827
17953
  return result;
17828
17954
  } catch (err) {
17829
17955
  console.error("Error querying Firestore", err);
@@ -18472,24 +18598,24 @@ init_src();
18472
18598
  var budibaseTempDir2 = objectStore_exports2.budibaseTempDir;
18473
18599
 
18474
18600
  // src/utilities/fileSystem/app.ts
18475
- var import_path5 = require("path");
18601
+ var import_path6 = require("path");
18476
18602
 
18477
18603
  // src/utilities/fileSystem/filesystem.ts
18478
- var import_fs4 = __toESM(require("fs"));
18479
- var import_path4 = require("path");
18604
+ var import_fs5 = __toESM(require("fs"));
18605
+ var import_path5 = require("path");
18480
18606
  var import_tar = __toESM(require("tar"));
18481
18607
  var uuid2 = require("uuid/v4");
18482
- var TOP_LEVEL_PATH = environment_default.TOP_LEVEL_PATH || (0, import_path4.resolve)((0, import_path4.join)(__dirname, "..", "..", ".."));
18608
+ var TOP_LEVEL_PATH = environment_default.TOP_LEVEL_PATH || (0, import_path5.resolve)((0, import_path5.join)(__dirname, "..", "..", ".."));
18483
18609
  var streamFile = (path2) => {
18484
- return import_fs4.default.createReadStream(path2);
18610
+ return import_fs5.default.createReadStream(path2);
18485
18611
  };
18486
18612
  var createTempFolder = (item) => {
18487
- const path2 = (0, import_path4.join)(budibaseTempDir2(), item);
18613
+ const path2 = (0, import_path5.join)(budibaseTempDir2(), item);
18488
18614
  try {
18489
- if (import_fs4.default.existsSync(path2)) {
18490
- import_fs4.default.rmSync(path2, { recursive: true, force: true });
18615
+ if (import_fs5.default.existsSync(path2)) {
18616
+ import_fs5.default.rmSync(path2, { recursive: true, force: true });
18491
18617
  }
18492
- import_fs4.default.mkdirSync(path2);
18618
+ import_fs5.default.mkdirSync(path2);
18493
18619
  } catch (err) {
18494
18620
  throw new Error(`Path cannot be created: ${err.message}`);
18495
18621
  }
@@ -18503,21 +18629,21 @@ var extractTarball = async (fromFilePath, toPath) => {
18503
18629
  };
18504
18630
 
18505
18631
  // src/utilities/fileSystem/app.ts
18506
- var NODE_MODULES_PATH = (0, import_path5.join)(TOP_LEVEL_PATH, "node_modules");
18632
+ var NODE_MODULES_PATH = (0, import_path6.join)(TOP_LEVEL_PATH, "node_modules");
18507
18633
 
18508
18634
  // src/utilities/fileSystem/plugin.ts
18509
- var import_fs5 = __toESM(require("fs"));
18510
- var import_path6 = require("path");
18511
- var DATASOURCE_PATH = (0, import_path6.join)(budibaseTempDir2(), "datasource");
18512
- var AUTOMATION_PATH = (0, import_path6.join)(budibaseTempDir2(), "automation");
18635
+ var import_fs6 = __toESM(require("fs"));
18636
+ var import_path7 = require("path");
18637
+ var DATASOURCE_PATH = (0, import_path7.join)(budibaseTempDir2(), "datasource");
18638
+ var AUTOMATION_PATH = (0, import_path7.join)(budibaseTempDir2(), "automation");
18513
18639
  var getPluginMetadata = async (path2) => {
18514
- let metadata = {};
18640
+ let metadata2 = {};
18515
18641
  try {
18516
- const pkg2 = import_fs5.default.readFileSync((0, import_path6.join)(path2, "package.json"), "utf8");
18517
- const schema = import_fs5.default.readFileSync((0, import_path6.join)(path2, "schema.json"), "utf8");
18518
- metadata.schema = JSON.parse(schema);
18519
- metadata.package = JSON.parse(pkg2);
18520
- if (!metadata.package.name || !metadata.package.version || !metadata.package.description) {
18642
+ const pkg2 = import_fs6.default.readFileSync((0, import_path7.join)(path2, "package.json"), "utf8");
18643
+ const schema = import_fs6.default.readFileSync((0, import_path7.join)(path2, "schema.json"), "utf8");
18644
+ metadata2.schema = JSON.parse(schema);
18645
+ metadata2.package = JSON.parse(pkg2);
18646
+ if (!metadata2.package.name || !metadata2.package.version || !metadata2.package.description) {
18521
18647
  throw new Error(
18522
18648
  "package.json is missing one of 'name', 'version' or 'description'."
18523
18649
  );
@@ -18527,24 +18653,24 @@ var getPluginMetadata = async (path2) => {
18527
18653
  `Unable to process schema.json/package.json in plugin. ${err.message}`
18528
18654
  );
18529
18655
  }
18530
- return { metadata, directory: path2 };
18656
+ return { metadata: metadata2, directory: path2 };
18531
18657
  };
18532
18658
  async function getPluginImpl(path2, plugin) {
18533
18659
  var _a;
18534
- const hash2 = (_a = plugin.schema) == null ? void 0 : _a.hash;
18535
- if (!import_fs5.default.existsSync(path2)) {
18536
- import_fs5.default.mkdirSync(path2);
18660
+ const hash3 = (_a = plugin.schema) == null ? void 0 : _a.hash;
18661
+ if (!import_fs6.default.existsSync(path2)) {
18662
+ import_fs6.default.mkdirSync(path2);
18537
18663
  }
18538
- const filename = (0, import_path6.join)(path2, plugin.name);
18664
+ const filename = (0, import_path7.join)(path2, plugin.name);
18539
18665
  const metadataName = `${filename}.bbmetadata`;
18540
- if (import_fs5.default.existsSync(filename)) {
18541
- const currentHash = import_fs5.default.readFileSync(metadataName, "utf8");
18542
- if (currentHash === hash2) {
18666
+ if (import_fs6.default.existsSync(filename)) {
18667
+ const currentHash = import_fs6.default.readFileSync(metadataName, "utf8");
18668
+ if (currentHash === hash3) {
18543
18669
  return require(filename);
18544
18670
  } else {
18545
18671
  console.log(`Updating plugin: ${plugin.name}`);
18546
18672
  delete require.cache[require.resolve(filename)];
18547
- import_fs5.default.unlinkSync(filename);
18673
+ import_fs6.default.unlinkSync(filename);
18548
18674
  }
18549
18675
  }
18550
18676
  const pluginKey = objectStore_exports2.getPluginJSKey(plugin);
@@ -18552,8 +18678,8 @@ async function getPluginImpl(path2, plugin) {
18552
18678
  objectStore_exports2.ObjectStoreBuckets.PLUGINS,
18553
18679
  pluginKey
18554
18680
  );
18555
- import_fs5.default.writeFileSync(filename, pluginJs);
18556
- import_fs5.default.writeFileSync(metadataName, hash2);
18681
+ import_fs6.default.writeFileSync(filename, pluginJs);
18682
+ import_fs6.default.writeFileSync(metadataName, hash3);
18557
18683
  return require(filename);
18558
18684
  }
18559
18685
  var getDatasourcePlugin = async (plugin) => {
@@ -18561,9 +18687,9 @@ var getDatasourcePlugin = async (plugin) => {
18561
18687
  };
18562
18688
 
18563
18689
  // src/utilities/fileSystem/template.ts
18564
- var downloadTemplate = async (type, name) => {
18690
+ var downloadTemplate = async (type, name2) => {
18565
18691
  const DEFAULT_TEMPLATES_BUCKET = "prod-budi-templates.s3-eu-west-1.amazonaws.com";
18566
- const templateUrl = `https://${DEFAULT_TEMPLATES_BUCKET}/templates/${type}/${name}.tar.gz`;
18692
+ const templateUrl = `https://${DEFAULT_TEMPLATES_BUCKET}/templates/${type}/${name2}.tar.gz`;
18567
18693
  return objectStore_exports2.downloadTarball(
18568
18694
  templateUrl,
18569
18695
  ObjectStoreBuckets2.TEMPLATES,
@@ -18588,22 +18714,23 @@ var GLOBAL_DB_EXPORT_FILE = "global.txt";
18588
18714
  var STATIC_APP_FILES = ["manifest.json", "budibase-client.js"];
18589
18715
 
18590
18716
  // src/sdk/app/backups/exports.ts
18591
- var import_fs6 = __toESM(require("fs"));
18592
- var import_path7 = require("path");
18717
+ var import_fs7 = __toESM(require("fs"));
18718
+ var import_path8 = require("path");
18719
+ var import_tar2 = __toESM(require("tar"));
18593
18720
  var uuid3 = require("uuid/v4");
18594
- var tar3 = require("tar");
18595
18721
  var MemoryStream = require("memorystream");
18596
- function tarFilesToTmp(tmpDir, files) {
18597
- const exportFile = (0, import_path7.join)(budibaseTempDir2(), `${uuid3()}.tar.gz`);
18598
- tar3.create(
18722
+ function tarFilesToTmp(tmpDir, files2) {
18723
+ const fileName = `${uuid3()}.tar.gz`;
18724
+ const exportFile = (0, import_path8.join)(budibaseTempDir2(), fileName);
18725
+ import_tar2.default.create(
18599
18726
  {
18600
18727
  sync: true,
18601
18728
  gzip: true,
18602
18729
  file: exportFile,
18603
- recursive: true,
18730
+ noDirRecurse: false,
18604
18731
  cwd: tmpDir
18605
18732
  },
18606
- files
18733
+ files2
18607
18734
  );
18608
18735
  return exportFile;
18609
18736
  }
@@ -18614,11 +18741,11 @@ async function exportDB(dbName, opts = {}) {
18614
18741
  batch_limit: 5,
18615
18742
  style: "main_only"
18616
18743
  };
18617
- return db_exports.doWithDB(dbName, async (db) => {
18744
+ return db_exports.doWithDB(dbName, async (db2) => {
18618
18745
  if (opts == null ? void 0 : opts.exportPath) {
18619
18746
  const path2 = opts == null ? void 0 : opts.exportPath;
18620
- const writeStream = import_fs6.default.createWriteStream(path2);
18621
- await db.dump(writeStream, exportOpts);
18747
+ const writeStream = import_fs7.default.createWriteStream(path2);
18748
+ await db2.dump(writeStream, exportOpts);
18622
18749
  return path2;
18623
18750
  } else {
18624
18751
  const memStream = new MemoryStream();
@@ -18626,7 +18753,7 @@ async function exportDB(dbName, opts = {}) {
18626
18753
  memStream.on("data", (chunk) => {
18627
18754
  appString += chunk.toString();
18628
18755
  });
18629
- await db.dump(memStream, exportOpts);
18756
+ await db2.dump(memStream, exportOpts);
18630
18757
  return appString;
18631
18758
  }
18632
18759
  });
@@ -18639,7 +18766,7 @@ function defineFilter(excludeRows, excludeLogs) {
18639
18766
  if (excludeLogs) {
18640
18767
  ids.push(AUTOMATION_LOG_PREFIX);
18641
18768
  }
18642
- return (doc) => !ids.map((key) => doc._id.includes(key)).reduce((prev, curr) => prev || curr);
18769
+ return (doc2) => !ids.map((key) => doc2._id.includes(key)).reduce((prev, curr) => prev || curr);
18643
18770
  }
18644
18771
  async function exportApp(appId, config) {
18645
18772
  const prodAppId = db_exports.getProdAppID(appId);
@@ -18650,9 +18777,9 @@ async function exportApp(appId, config) {
18650
18777
  for (let path2 of STATIC_APP_FILES) {
18651
18778
  const contents = await objectStore_exports2.retrieve(
18652
18779
  ObjectStoreBuckets2.APPS,
18653
- (0, import_path7.join)(appPath, path2)
18780
+ (0, import_path8.join)(appPath, path2)
18654
18781
  );
18655
- import_fs6.default.writeFileSync((0, import_path7.join)(tmpPath, path2), contents);
18782
+ import_fs7.default.writeFileSync((0, import_path8.join)(tmpPath, path2), contents);
18656
18783
  }
18657
18784
  } else {
18658
18785
  tmpPath = await objectStore_exports2.retrieveDirectory(
@@ -18661,33 +18788,48 @@ async function exportApp(appId, config) {
18661
18788
  );
18662
18789
  }
18663
18790
  }
18664
- const downloadedPath = (0, import_path7.join)(tmpPath, appPath);
18665
- if (import_fs6.default.existsSync(downloadedPath)) {
18666
- const allFiles = import_fs6.default.readdirSync(downloadedPath);
18791
+ const downloadedPath = (0, import_path8.join)(tmpPath, appPath);
18792
+ if (import_fs7.default.existsSync(downloadedPath)) {
18793
+ const allFiles = import_fs7.default.readdirSync(downloadedPath);
18667
18794
  for (let file of allFiles) {
18668
- const path2 = (0, import_path7.join)(downloadedPath, file);
18669
- import_fs6.default.renameSync(path2, (0, import_path7.join)(downloadedPath, "..", file));
18795
+ const path2 = (0, import_path8.join)(downloadedPath, file);
18796
+ import_fs7.default.renameSync(path2, (0, import_path8.join)(downloadedPath, "..", file));
18670
18797
  }
18671
- import_fs6.default.rmdirSync(downloadedPath);
18798
+ import_fs7.default.rmdirSync(downloadedPath);
18672
18799
  }
18673
- const dbPath = (0, import_path7.join)(tmpPath, DB_EXPORT_FILE);
18800
+ const dbPath = (0, import_path8.join)(tmpPath, DB_EXPORT_FILE);
18674
18801
  await exportDB(appId, {
18675
18802
  filter: defineFilter(config == null ? void 0 : config.excludeRows, config == null ? void 0 : config.excludeLogs),
18676
18803
  exportPath: dbPath
18677
18804
  });
18805
+ if (config == null ? void 0 : config.encryptPassword) {
18806
+ for (let file of import_fs7.default.readdirSync(tmpPath)) {
18807
+ const path2 = (0, import_path8.join)(tmpPath, file);
18808
+ await encryption_exports.encryptFile(
18809
+ { dir: tmpPath, filename: file },
18810
+ config.encryptPassword
18811
+ );
18812
+ import_fs7.default.rmSync(path2);
18813
+ }
18814
+ }
18678
18815
  if (config == null ? void 0 : config.tar) {
18679
- const tarPath = tarFilesToTmp(tmpPath, import_fs6.default.readdirSync(tmpPath));
18680
- import_fs6.default.rmSync(tmpPath, { recursive: true, force: true });
18816
+ const tarPath = tarFilesToTmp(tmpPath, import_fs7.default.readdirSync(tmpPath));
18817
+ import_fs7.default.rmSync(tmpPath, { recursive: true, force: true });
18681
18818
  return tarPath;
18682
18819
  } else {
18683
18820
  return tmpPath;
18684
18821
  }
18685
18822
  }
18686
- async function streamExportApp(appId, excludeRows) {
18823
+ async function streamExportApp({
18824
+ appId,
18825
+ excludeRows,
18826
+ encryptPassword
18827
+ }) {
18687
18828
  const tmpPath = await exportApp(appId, {
18688
18829
  excludeRows,
18689
18830
  excludeLogs: true,
18690
- tar: true
18831
+ tar: true,
18832
+ encryptPassword
18691
18833
  });
18692
18834
  return streamFile(tmpPath);
18693
18835
  }
@@ -18701,8 +18843,8 @@ __export(imports_exports, {
18701
18843
  untarFile: () => untarFile,
18702
18844
  updateAttachmentColumns: () => updateAttachmentColumns
18703
18845
  });
18704
- var import_path8 = require("path");
18705
- var import_fs7 = __toESM(require("fs"));
18846
+ var import_path9 = require("path");
18847
+ var import_fs8 = __toESM(require("fs"));
18706
18848
  init_src();
18707
18849
  var uuid4 = require("uuid/v4");
18708
18850
  var tar4 = require("tar");
@@ -18718,12 +18860,12 @@ function rewriteAttachmentUrl(appId, attachment) {
18718
18860
  // calculated on retrieval using key
18719
18861
  };
18720
18862
  }
18721
- async function updateAttachmentColumns(prodAppId, db) {
18722
- const tables = await sdk_default.tables.getAllInternalTables(db);
18863
+ async function updateAttachmentColumns(prodAppId, db2) {
18864
+ const tables = await sdk_default.tables.getAllInternalTables(db2);
18723
18865
  let updatedRows = [];
18724
18866
  for (let table of tables) {
18725
18867
  const { rows: rows2, columns } = await sdk_default.rows.getRowsWithAttachments(
18726
- db.name,
18868
+ db2.name,
18727
18869
  table
18728
18870
  );
18729
18871
  updatedRows = updatedRows.concat(
@@ -18739,11 +18881,11 @@ async function updateAttachmentColumns(prodAppId, db) {
18739
18881
  })
18740
18882
  );
18741
18883
  }
18742
- await db.bulkDocs(updatedRows);
18884
+ await db2.bulkDocs(updatedRows);
18743
18885
  }
18744
- async function updateAutomations(prodAppId, db) {
18886
+ async function updateAutomations(prodAppId, db2) {
18745
18887
  var _a;
18746
- const automations2 = (await db.allDocs(
18888
+ const automations2 = (await db2.allDocs(
18747
18889
  getAutomationParams(null, {
18748
18890
  include_docs: true
18749
18891
  })
@@ -18762,23 +18904,23 @@ async function updateAutomations(prodAppId, db) {
18762
18904
  automation.appId = devAppId;
18763
18905
  toSave.push(automation);
18764
18906
  }
18765
- await db.bulkDocs(toSave);
18907
+ await db2.bulkDocs(toSave);
18766
18908
  }
18767
18909
  async function getTemplateStream(template) {
18768
18910
  if (template.file && template.file.type !== "text/plain") {
18769
18911
  throw new Error("Cannot import a non-text based file.");
18770
18912
  }
18771
18913
  if (template.file) {
18772
- return import_fs7.default.createReadStream(template.file.path);
18914
+ return import_fs8.default.createReadStream(template.file.path);
18773
18915
  } else if (template.key) {
18774
- const [type, name] = template.key.split("/");
18775
- const tmpPath = await downloadTemplate(type, name);
18776
- return import_fs7.default.createReadStream((0, import_path8.join)(tmpPath, name, "db", "dump.txt"));
18916
+ const [type, name2] = template.key.split("/");
18917
+ const tmpPath = await downloadTemplate(type, name2);
18918
+ return import_fs8.default.createReadStream((0, import_path9.join)(tmpPath, name2, "db", "dump.txt"));
18777
18919
  }
18778
18920
  }
18779
18921
  function untarFile(file) {
18780
- const tmpPath = (0, import_path8.join)(budibaseTempDir2(), uuid4());
18781
- import_fs7.default.mkdirSync(tmpPath);
18922
+ const tmpPath = (0, import_path9.join)(budibaseTempDir2(), uuid4());
18923
+ import_fs8.default.mkdirSync(tmpPath);
18782
18924
  tar4.extract({
18783
18925
  sync: true,
18784
18926
  cwd: tmpPath,
@@ -18786,31 +18928,49 @@ function untarFile(file) {
18786
18928
  });
18787
18929
  return tmpPath;
18788
18930
  }
18931
+ async function decryptFiles(path2, password) {
18932
+ try {
18933
+ for (let file of import_fs8.default.readdirSync(path2)) {
18934
+ const inputPath = (0, import_path9.join)(path2, file);
18935
+ const outputPath = inputPath.replace(/\.enc$/, "");
18936
+ await encryption_exports.decryptFile(inputPath, outputPath, password);
18937
+ import_fs8.default.rmSync(inputPath);
18938
+ }
18939
+ } catch (err) {
18940
+ if (err.message === "incorrect header check") {
18941
+ throw new Error("File cannot be imported");
18942
+ }
18943
+ throw err;
18944
+ }
18945
+ }
18789
18946
  function getGlobalDBFile(tmpPath) {
18790
- return import_fs7.default.readFileSync((0, import_path8.join)(tmpPath, GLOBAL_DB_EXPORT_FILE), "utf8");
18947
+ return import_fs8.default.readFileSync((0, import_path9.join)(tmpPath, GLOBAL_DB_EXPORT_FILE), "utf8");
18791
18948
  }
18792
18949
  function getListOfAppsInMulti(tmpPath) {
18793
- return import_fs7.default.readdirSync(tmpPath).filter((dir) => dir !== GLOBAL_DB_EXPORT_FILE);
18950
+ return import_fs8.default.readdirSync(tmpPath).filter((dir) => dir !== GLOBAL_DB_EXPORT_FILE);
18794
18951
  }
18795
- async function importApp(appId, db, template) {
18952
+ async function importApp(appId, db2, template) {
18796
18953
  var _a, _b;
18797
18954
  let prodAppId = db_exports.getProdAppID(appId);
18798
18955
  let dbStream;
18799
18956
  const isTar = template.file && ((_b = (_a = template == null ? void 0 : template.file) == null ? void 0 : _a.type) == null ? void 0 : _b.endsWith("gzip"));
18800
- const isDirectory = template.file && import_fs7.default.lstatSync(template.file.path).isDirectory();
18957
+ const isDirectory = template.file && import_fs8.default.lstatSync(template.file.path).isDirectory();
18801
18958
  if (template.file && (isTar || isDirectory)) {
18802
18959
  const tmpPath = isTar ? untarFile(template.file) : template.file.path;
18803
- const contents = import_fs7.default.readdirSync(tmpPath);
18960
+ if (isTar && template.file.password) {
18961
+ await decryptFiles(tmpPath, template.file.password);
18962
+ }
18963
+ const contents = import_fs8.default.readdirSync(tmpPath);
18804
18964
  if (contents.length) {
18805
18965
  let promises = [];
18806
18966
  let excludedFiles = [GLOBAL_DB_EXPORT_FILE, DB_EXPORT_FILE];
18807
18967
  for (let filename of contents) {
18808
- const path2 = (0, import_path8.join)(tmpPath, filename);
18968
+ const path2 = (0, import_path9.join)(tmpPath, filename);
18809
18969
  if (excludedFiles.includes(filename)) {
18810
18970
  continue;
18811
18971
  }
18812
- filename = (0, import_path8.join)(prodAppId, filename);
18813
- if (import_fs7.default.lstatSync(path2).isDirectory()) {
18972
+ filename = (0, import_path9.join)(prodAppId, filename);
18973
+ if (import_fs8.default.lstatSync(path2).isDirectory()) {
18814
18974
  promises.push(
18815
18975
  objectStore_exports2.uploadDirectory(ObjectStoreBuckets2.APPS, path2, filename)
18816
18976
  );
@@ -18826,16 +18986,16 @@ async function importApp(appId, db, template) {
18826
18986
  }
18827
18987
  await Promise.all(promises);
18828
18988
  }
18829
- dbStream = import_fs7.default.createReadStream((0, import_path8.join)(tmpPath, DB_EXPORT_FILE));
18989
+ dbStream = import_fs8.default.createReadStream((0, import_path9.join)(tmpPath, DB_EXPORT_FILE));
18830
18990
  } else {
18831
18991
  dbStream = await getTemplateStream(template);
18832
18992
  }
18833
- const { ok } = await db.load(dbStream);
18993
+ const { ok } = await db2.load(dbStream);
18834
18994
  if (!ok) {
18835
18995
  throw "Error loading database dump from template.";
18836
18996
  }
18837
- await updateAttachmentColumns(prodAppId, db);
18838
- await updateAutomations(prodAppId, db);
18997
+ await updateAttachmentColumns(prodAppId, db2);
18998
+ await updateAutomations(prodAppId, db2);
18839
18999
  return ok;
18840
19000
  }
18841
19001
 
@@ -18847,54 +19007,54 @@ __export(statistics_exports, {
18847
19007
  calculateDatasourceCount: () => calculateDatasourceCount,
18848
19008
  calculateScreenCount: () => calculateScreenCount
18849
19009
  });
18850
- async function runInContext(appId, cb, db) {
18851
- if (db) {
18852
- return cb(db);
19010
+ async function runInContext(appId, cb, db2) {
19011
+ if (db2) {
19012
+ return cb(db2);
18853
19013
  } else {
18854
19014
  const devAppId = db_exports.getDevAppID(appId);
18855
19015
  return context_exports.doInAppContext(devAppId, () => {
18856
- const db2 = context_exports.getAppDB();
18857
- return cb(db2);
19016
+ const db3 = context_exports.getAppDB();
19017
+ return cb(db3);
18858
19018
  });
18859
19019
  }
18860
19020
  }
18861
- async function calculateDatasourceCount(appId, db) {
19021
+ async function calculateDatasourceCount(appId, db2) {
18862
19022
  return runInContext(
18863
19023
  appId,
18864
- async (db2) => {
18865
- const datasourceList = await db2.allDocs(getDatasourceParams());
18866
- const tableList = await db2.allDocs(getTableParams());
19024
+ async (db3) => {
19025
+ const datasourceList = await db3.allDocs(getDatasourceParams());
19026
+ const tableList = await db3.allDocs(getTableParams());
18867
19027
  return datasourceList.rows.length + tableList.rows.length;
18868
19028
  },
18869
- db
19029
+ db2
18870
19030
  );
18871
19031
  }
18872
- async function calculateAutomationCount(appId, db) {
19032
+ async function calculateAutomationCount(appId, db2) {
18873
19033
  return runInContext(
18874
19034
  appId,
18875
- async (db2) => {
18876
- const automationList = await db2.allDocs(getAutomationParams());
19035
+ async (db3) => {
19036
+ const automationList = await db3.allDocs(getAutomationParams());
18877
19037
  return automationList.rows.length;
18878
19038
  },
18879
- db
19039
+ db2
18880
19040
  );
18881
19041
  }
18882
- async function calculateScreenCount(appId, db) {
19042
+ async function calculateScreenCount(appId, db2) {
18883
19043
  return runInContext(
18884
19044
  appId,
18885
- async (db2) => {
18886
- const screenList = await db2.allDocs(getScreenParams());
19045
+ async (db3) => {
19046
+ const screenList = await db3.allDocs(getScreenParams());
18887
19047
  return screenList.rows.length;
18888
19048
  },
18889
- db
19049
+ db2
18890
19050
  );
18891
19051
  }
18892
19052
  async function calculateBackupStats(appId) {
18893
- return runInContext(appId, async (db) => {
19053
+ return runInContext(appId, async (db2) => {
18894
19054
  const promises = [];
18895
- promises.push(calculateDatasourceCount(appId, db));
18896
- promises.push(calculateAutomationCount(appId, db));
18897
- promises.push(calculateScreenCount(appId, db));
19055
+ promises.push(calculateDatasourceCount(appId, db2));
19056
+ promises.push(calculateAutomationCount(appId, db2));
19057
+ promises.push(calculateScreenCount(appId, db2));
18898
19058
  const responses = await Promise.all(promises);
18899
19059
  return {
18900
19060
  datasources: responses[0],
@@ -19140,11 +19300,11 @@ var setCurrentMonth = (usage) => {
19140
19300
  }
19141
19301
  usage.monthly.current = usage.monthly[currentMonth];
19142
19302
  };
19143
- var getBreakdownName = (name, id) => {
19144
- if (!id || !name) {
19303
+ var getBreakdownName = (name2, id) => {
19304
+ if (!id || !name2) {
19145
19305
  return;
19146
19306
  }
19147
- switch (name) {
19307
+ switch (name2) {
19148
19308
  case "automations" /* AUTOMATIONS */:
19149
19309
  return "automations" /* AUTOMATIONS */;
19150
19310
  case "queries" /* QUERIES */:
@@ -19158,11 +19318,11 @@ var getDB2 = () => {
19158
19318
  return new Writethrough2(tenancy.getGlobalDB());
19159
19319
  };
19160
19320
  var bustCache2 = async () => {
19161
- const db = getDB2();
19321
+ const db2 = getDB2();
19162
19322
  try {
19163
- const usage = await db.get(db_exports.StaticDatabases.GLOBAL.docs.usageQuota);
19323
+ const usage = await db2.get(db_exports.StaticDatabases.GLOBAL.docs.usageQuota);
19164
19324
  if (usage == null ? void 0 : usage._rev) {
19165
- await db.remove(
19325
+ await db2.remove(
19166
19326
  db_exports.StaticDatabases.GLOBAL.docs.usageQuota,
19167
19327
  usage == null ? void 0 : usage._rev
19168
19328
  );
@@ -19174,16 +19334,16 @@ var bustCache2 = async () => {
19174
19334
  }
19175
19335
  };
19176
19336
  var getQuotaUsage = async () => {
19177
- const db = getDB2();
19337
+ const db2 = getDB2();
19178
19338
  let usage;
19179
19339
  try {
19180
- usage = await db.get(db_exports.StaticDatabases.GLOBAL.docs.usageQuota);
19340
+ usage = await db2.get(db_exports.StaticDatabases.GLOBAL.docs.usageQuota);
19181
19341
  setCurrentMonth(usage);
19182
19342
  setQuotaReset(usage);
19183
19343
  } catch (err) {
19184
19344
  if (err.status === 404) {
19185
19345
  usage = generateNewQuotaUsage();
19186
- const response = await db.put(usage);
19346
+ const response = await db2.put(usage);
19187
19347
  usage._rev = response.rev;
19188
19348
  } else {
19189
19349
  throw err;
@@ -19198,17 +19358,17 @@ var getQuotaUsage = async () => {
19198
19358
  delete usage.usageQuota.developers;
19199
19359
  return usage;
19200
19360
  };
19201
- var setUsage = async (value, name, type) => {
19202
- return setAllUsage(name, type, { total: value });
19361
+ var setUsage = async (value, name2, type) => {
19362
+ return setAllUsage(name2, type, { total: value });
19203
19363
  };
19204
- var setUsagePerApp = async (appValues, name, type) => {
19205
- const db = getDB2();
19364
+ var setUsagePerApp = async (appValues, name2, type) => {
19365
+ const db2 = getDB2();
19206
19366
  let quotaUsage = await getQuotaUsage();
19207
19367
  const total = Object.values(appValues).reduce((sum, num) => sum + num, 0);
19208
19368
  for (let [appId, value] of Object.entries(appValues)) {
19209
19369
  quotaUsage = coreUsageUpdate(
19210
19370
  quotaUsage,
19211
- name,
19371
+ name2,
19212
19372
  type,
19213
19373
  {
19214
19374
  total,
@@ -19219,12 +19379,12 @@ var setUsagePerApp = async (appValues, name, type) => {
19219
19379
  }
19220
19380
  );
19221
19381
  }
19222
- const response = await db.put(quotaUsage);
19382
+ const response = await db2.put(quotaUsage);
19223
19383
  quotaUsage._rev = response.rev;
19224
19384
  return quotaUsage;
19225
19385
  };
19226
- var setBreakdown = (monthUsage, name, id, values) => {
19227
- const breakdownName = getBreakdownName(name, id);
19386
+ var setBreakdown = (monthUsage, name2, id, values) => {
19387
+ const breakdownName = getBreakdownName(name2, id);
19228
19388
  if (!breakdownName || !(values == null ? void 0 : values.breakdown)) {
19229
19389
  return monthUsage;
19230
19390
  }
@@ -19233,7 +19393,7 @@ var setBreakdown = (monthUsage, name, id, values) => {
19233
19393
  }
19234
19394
  if (!monthUsage.breakdown[breakdownName]) {
19235
19395
  monthUsage.breakdown[breakdownName] = {
19236
- parent: name,
19396
+ parent: name2,
19237
19397
  values: {}
19238
19398
  };
19239
19399
  }
@@ -19241,14 +19401,14 @@ var setBreakdown = (monthUsage, name, id, values) => {
19241
19401
  breakdown.values[id] = values.breakdown;
19242
19402
  return monthUsage;
19243
19403
  };
19244
- var setAppUsageValue = (quotaUsage, name, type, opts = {}, values) => {
19404
+ var setAppUsageValue = (quotaUsage, name2, type, opts = {}, values) => {
19245
19405
  var _a;
19246
19406
  let appId;
19247
19407
  try {
19248
19408
  appId = db_exports.getProdAppID((opts == null ? void 0 : opts.appId) || context_exports.getAppId());
19249
19409
  } catch (err) {
19250
19410
  }
19251
- if (!appId || !values.app || !APP_QUOTA_NAMES.includes(name)) {
19411
+ if (!appId || !values.app || !APP_QUOTA_NAMES.includes(name2)) {
19252
19412
  return quotaUsage;
19253
19413
  }
19254
19414
  if (!((_a = quotaUsage.apps) == null ? void 0 : _a[appId])) {
@@ -19260,11 +19420,11 @@ var setAppUsageValue = (quotaUsage, name, type, opts = {}, values) => {
19260
19420
  const appUsage = quotaUsage.apps[appId];
19261
19421
  switch (type) {
19262
19422
  case "static" /* STATIC */:
19263
- appUsage.usageQuota[name] = values.app;
19423
+ appUsage.usageQuota[name2] = values.app;
19264
19424
  break;
19265
19425
  case "monthly" /* MONTHLY */:
19266
19426
  const currentMonth = getCurrentMonthString();
19267
- const monthlyName = name;
19427
+ const monthlyName = name2;
19268
19428
  let monthUsage = appUsage.monthly[currentMonth];
19269
19429
  if (!monthUsage) {
19270
19430
  appUsage.monthly[currentMonth] = generateNewMonthlyQuotas();
@@ -19278,9 +19438,9 @@ var setAppUsageValue = (quotaUsage, name, type, opts = {}, values) => {
19278
19438
  }
19279
19439
  return quotaUsage;
19280
19440
  };
19281
- var getAppUsageValue = (quotaUsage, type, name, id) => {
19441
+ var getAppUsageValue = (quotaUsage, type, name2, id) => {
19282
19442
  var _a, _b, _c, _d, _e;
19283
- if (!APP_QUOTA_NAMES.includes(name)) {
19443
+ if (!APP_QUOTA_NAMES.includes(name2)) {
19284
19444
  return {};
19285
19445
  }
19286
19446
  let appId;
@@ -19294,13 +19454,13 @@ var getAppUsageValue = (quotaUsage, type, name, id) => {
19294
19454
  const appUsage = quotaUsage.apps[appId];
19295
19455
  switch (type) {
19296
19456
  case "static" /* STATIC */:
19297
- if ((_a = appUsage.usageQuota) == null ? void 0 : _a[name]) {
19298
- return { app: appUsage.usageQuota[name] };
19457
+ if ((_a = appUsage.usageQuota) == null ? void 0 : _a[name2]) {
19458
+ return { app: appUsage.usageQuota[name2] };
19299
19459
  }
19300
19460
  break;
19301
19461
  case "monthly" /* MONTHLY */:
19302
19462
  const currentMonth = getCurrentMonthString();
19303
- const monthlyName = name;
19463
+ const monthlyName = name2;
19304
19464
  if (!((_c = (_b = appUsage.monthly) == null ? void 0 : _b[currentMonth]) == null ? void 0 : _c[monthlyName])) {
19305
19465
  break;
19306
19466
  }
@@ -19315,68 +19475,68 @@ var getAppUsageValue = (quotaUsage, type, name, id) => {
19315
19475
  }
19316
19476
  return { app: 0 };
19317
19477
  };
19318
- var setStaticTriggers = (name, quotaUsage, triggers) => {
19478
+ var setStaticTriggers = (name2, quotaUsage, triggers) => {
19319
19479
  if (!quotaUsage.usageQuota.triggers) {
19320
19480
  quotaUsage.usageQuota.triggers = {};
19321
19481
  }
19322
19482
  if (triggers) {
19323
- quotaUsage.usageQuota.triggers[name] = triggers;
19483
+ quotaUsage.usageQuota.triggers[name2] = triggers;
19324
19484
  }
19325
19485
  };
19326
- var setMonthlyTriggers = (name, currentMonth, quotaUsage, triggers) => {
19486
+ var setMonthlyTriggers = (name2, currentMonth, quotaUsage, triggers) => {
19327
19487
  if (!quotaUsage.monthly[currentMonth].triggers) {
19328
19488
  quotaUsage.monthly[currentMonth].triggers = {};
19329
19489
  }
19330
19490
  if (triggers) {
19331
- quotaUsage.monthly[currentMonth].triggers[name] = triggers;
19491
+ quotaUsage.monthly[currentMonth].triggers[name2] = triggers;
19332
19492
  }
19333
19493
  };
19334
- var coreUsageUpdate = (quotaUsage, name, type, values, opts = {}) => {
19494
+ var coreUsageUpdate = (quotaUsage, name2, type, values, opts = {}) => {
19335
19495
  if (type === "static" /* STATIC */) {
19336
- name = name;
19337
- quotaUsage.usageQuota[name] = values.total;
19338
- setStaticTriggers(name, quotaUsage, values.triggers);
19496
+ name2 = name2;
19497
+ quotaUsage.usageQuota[name2] = values.total;
19498
+ setStaticTriggers(name2, quotaUsage, values.triggers);
19339
19499
  } else if (type === "monthly" /* MONTHLY */) {
19340
- name = name;
19500
+ name2 = name2;
19341
19501
  const currentMonth = getCurrentMonthString();
19342
- quotaUsage.monthly[currentMonth][name] = values.total;
19343
- setMonthlyTriggers(name, currentMonth, quotaUsage, values.triggers);
19502
+ quotaUsage.monthly[currentMonth][name2] = values.total;
19503
+ setMonthlyTriggers(name2, currentMonth, quotaUsage, values.triggers);
19344
19504
  } else {
19345
19505
  throw new Error(`Invalid usage type: ${type}`);
19346
19506
  }
19347
- return setAppUsageValue(quotaUsage, name, type, opts, values);
19507
+ return setAppUsageValue(quotaUsage, name2, type, opts, values);
19348
19508
  };
19349
- var setAllUsage = async (name, type, values, opts = {}) => {
19350
- const db = getDB2();
19509
+ var setAllUsage = async (name2, type, values, opts = {}) => {
19510
+ const db2 = getDB2();
19351
19511
  let quotaUsage = await getQuotaUsage();
19352
- quotaUsage = coreUsageUpdate(quotaUsage, name, type, values, opts);
19353
- const response = await db.put(quotaUsage);
19512
+ quotaUsage = coreUsageUpdate(quotaUsage, name2, type, values, opts);
19513
+ const response = await db2.put(quotaUsage);
19354
19514
  quotaUsage._rev = response.rev;
19355
19515
  return quotaUsage;
19356
19516
  };
19357
- var getCurrentUsageValues = async (type, name, id) => {
19517
+ var getCurrentUsageValues = async (type, name2, id) => {
19358
19518
  const quotaUsage = await getQuotaUsage();
19359
19519
  let total = 0, appValues = {};
19360
19520
  switch (type) {
19361
19521
  case "static" /* STATIC */:
19362
- if (quotaUsage.usageQuota[name]) {
19363
- const staticName = name;
19522
+ if (quotaUsage.usageQuota[name2]) {
19523
+ const staticName = name2;
19364
19524
  total = quotaUsage.usageQuota[staticName];
19365
- appValues = getAppUsageValue(quotaUsage, type, name, id);
19525
+ appValues = getAppUsageValue(quotaUsage, type, name2, id);
19366
19526
  }
19367
19527
  break;
19368
19528
  case "monthly" /* MONTHLY */:
19369
19529
  const currentMonth = getCurrentMonthString();
19370
- const monthlyName = name;
19530
+ const monthlyName = name2;
19371
19531
  if (quotaUsage.monthly[currentMonth][monthlyName]) {
19372
19532
  total = quotaUsage.monthly[currentMonth][monthlyName];
19373
- appValues = getAppUsageValue(quotaUsage, type, name, id);
19533
+ appValues = getAppUsageValue(quotaUsage, type, name2, id);
19374
19534
  }
19375
19535
  break;
19376
19536
  default:
19377
19537
  throw new Error(`Invalid usage type: ${type}`);
19378
19538
  }
19379
- if (APP_QUOTA_NAMES.includes(name) && !(appValues.app || appValues.breakdown)) {
19539
+ if (APP_QUOTA_NAMES.includes(name2) && !(appValues.app || appValues.breakdown)) {
19380
19540
  appValues.app = appValues.app || 0;
19381
19541
  appValues.breakdown = appValues.breakdown || 0;
19382
19542
  }
@@ -19397,8 +19557,8 @@ var newLicenseInfo = (licenseKey) => {
19397
19557
  };
19398
19558
  };
19399
19559
  var save2 = async (licenseInfo) => {
19400
- const db = tenancy.getGlobalDB();
19401
- const response = await db.put(licenseInfo);
19560
+ const db2 = tenancy.getGlobalDB();
19561
+ const response = await db2.put(licenseInfo);
19402
19562
  licenseInfo._rev = response.rev;
19403
19563
  return licenseInfo;
19404
19564
  };
@@ -19407,9 +19567,9 @@ var create = async (licenseKey) => {
19407
19567
  return save2(licenseInfo);
19408
19568
  };
19409
19569
  var get4 = async () => {
19410
- const db = tenancy.getGlobalDB();
19570
+ const db2 = tenancy.getGlobalDB();
19411
19571
  try {
19412
- return await db.get(StaticDatabases.GLOBAL.docs.licenseInfo);
19572
+ return await db2.get(StaticDatabases.GLOBAL.docs.licenseInfo);
19413
19573
  } catch (err) {
19414
19574
  if (err.status === 404) {
19415
19575
  return void 0;
@@ -19422,8 +19582,8 @@ var destroy2 = async () => {
19422
19582
  if (!info) {
19423
19583
  return;
19424
19584
  }
19425
- const db = tenancy.getGlobalDB();
19426
- return db.remove(StaticDatabases.GLOBAL.docs.licenseInfo, info._rev);
19585
+ const db2 = tenancy.getGlobalDB();
19586
+ return db2.remove(StaticDatabases.GLOBAL.docs.licenseInfo, info._rev);
19427
19587
  };
19428
19588
 
19429
19589
  // ../pro/packages/pro/src/db/groups.ts
@@ -19445,10 +19605,10 @@ __export(groups_exports, {
19445
19605
  // ../pro/packages/pro/src/db/views/staticViews.ts
19446
19606
  init_src();
19447
19607
  async function createAuditLogSearchIndex() {
19448
- const db = context_exports.getAuditLogsDB();
19608
+ const db2 = context_exports.getAuditLogsDB();
19449
19609
  let designDoc;
19450
19610
  try {
19451
- designDoc = await db.get("_design/database");
19611
+ designDoc = await db2.get("_design/database");
19452
19612
  } catch (err) {
19453
19613
  if (err.status === 404) {
19454
19614
  designDoc = { _id: "_design/database" };
@@ -19491,14 +19651,14 @@ async function createAuditLogSearchIndex() {
19491
19651
  }
19492
19652
  }
19493
19653
  };
19494
- await db.put(designDoc);
19654
+ await db2.put(designDoc);
19495
19655
  }
19496
19656
 
19497
19657
  // ../pro/packages/pro/src/db/views/groups.ts
19498
19658
  var { ViewName: ViewName4, SEPARATOR: SEPARATOR5, DocumentType: DocumentType3, createView: createView2 } = db_exports;
19499
19659
  var USER_PREFIX = DocumentType3.USER + SEPARATOR5;
19500
19660
  async function createGroupUserLookupView() {
19501
- const db = tenancy.getGlobalDB();
19661
+ const db2 = tenancy.getGlobalDB();
19502
19662
  const viewJs = `function(doc) {
19503
19663
  if (doc._id.startsWith("${USER_PREFIX}") && Array.isArray(doc.userGroups)) {
19504
19664
  for (let groupId of doc.userGroups) {
@@ -19507,7 +19667,7 @@ async function createGroupUserLookupView() {
19507
19667
  }
19508
19668
  }
19509
19669
  }`;
19510
- await createView2(db, viewJs, ViewName4.USER_BY_GROUP);
19670
+ await createView2(db2, viewJs, ViewName4.USER_BY_GROUP);
19511
19671
  }
19512
19672
 
19513
19673
  // ../pro/packages/pro/src/db/groups.ts
@@ -19547,17 +19707,17 @@ function generateUserGroupID() {
19547
19707
  return `${GROUP_PREFIX}${utils_exports2.newid()}`;
19548
19708
  }
19549
19709
  async function getGroupUsers(groupId, params2) {
19550
- const db = tenancy.getGlobalDB();
19710
+ const db2 = tenancy.getGlobalDB();
19551
19711
  const userDocs = await db_exports.queryView(
19552
19712
  db_exports.ViewName.USER_BY_GROUP,
19553
19713
  getGroupUsersParams(groupId, params2),
19554
- db,
19714
+ db2,
19555
19715
  createGroupUserLookupView,
19556
19716
  { arrayResponse: true }
19557
19717
  );
19558
- const users2 = userDocs.map((doc) => ({
19559
- _id: doc.userId,
19560
- email: doc.email
19718
+ const users2 = userDocs.map((doc2) => ({
19719
+ _id: doc2.userId,
19720
+ email: doc2.email
19561
19721
  })) || [];
19562
19722
  return users2;
19563
19723
  }
@@ -19586,9 +19746,9 @@ async function cleanupUsers(group) {
19586
19746
  }
19587
19747
  }
19588
19748
  async function fetch11() {
19589
- const db = tenancy.getGlobalDB();
19749
+ const db2 = tenancy.getGlobalDB();
19590
19750
  try {
19591
- const groups = (await db.allDocs(
19751
+ const groups = (await db2.allDocs(
19592
19752
  getUserGroupsParams(null, {
19593
19753
  include_docs: true
19594
19754
  })
@@ -19603,18 +19763,18 @@ async function fetch11() {
19603
19763
  }
19604
19764
  }
19605
19765
  async function get5(groupId) {
19606
- const db = tenancy.getGlobalDB();
19766
+ const db2 = tenancy.getGlobalDB();
19607
19767
  try {
19608
- const group = await db.get(groupId);
19768
+ const group = await db2.get(groupId);
19609
19769
  return await enrichGroup(group);
19610
19770
  } catch (err) {
19611
19771
  throw err;
19612
19772
  }
19613
19773
  }
19614
19774
  async function getBulk(groupIds, opts = { enriched: true }) {
19615
- const db = tenancy.getGlobalDB();
19775
+ const db2 = tenancy.getGlobalDB();
19616
19776
  try {
19617
- const groups = (await db.allDocs({
19777
+ const groups = (await db2.allDocs({
19618
19778
  keys: groupIds,
19619
19779
  include_docs: true
19620
19780
  })).rows.map((row) => row.doc);
@@ -19632,26 +19792,26 @@ async function getBulk(groupIds, opts = { enriched: true }) {
19632
19792
  }
19633
19793
  }
19634
19794
  async function save3(group) {
19635
- const db = tenancy.getGlobalDB();
19636
- return await db.put(group);
19795
+ const db2 = tenancy.getGlobalDB();
19796
+ return await db2.put(group);
19637
19797
  }
19638
19798
  async function bulkSave(groups) {
19639
- const db = tenancy.getGlobalDB();
19640
- return await db.bulkDocs(groups);
19799
+ const db2 = tenancy.getGlobalDB();
19800
+ return await db2.bulkDocs(groups);
19641
19801
  }
19642
19802
  async function destroy3(groupId, revision) {
19643
- const db = tenancy.getGlobalDB();
19644
- const group = await db.get(groupId);
19645
- let resp = await db.remove(groupId, revision);
19803
+ const db2 = tenancy.getGlobalDB();
19804
+ const group = await db2.get(groupId);
19805
+ let resp = await db2.remove(groupId, revision);
19646
19806
  await cleanupUsers(group);
19647
19807
  return resp;
19648
19808
  }
19649
- async function getByName(name) {
19809
+ async function getByName(name2) {
19650
19810
  try {
19651
19811
  const groups = await db_exports.directCouchFind(tenancy.getGlobalDBName(), {
19652
19812
  selector: {
19653
19813
  name: {
19654
- $regex: `^(?i)${name}$`
19814
+ $regex: `^(?i)${name2}$`
19655
19815
  }
19656
19816
  },
19657
19817
  limit: 1
@@ -19701,7 +19861,7 @@ var { ViewName: ViewName5, AutomationViewMode: AutomationViewMode2, SEPARATOR: S
19701
19861
  var LOG_PREFIX = DocumentType4.AUTOMATION_LOG + SEPARATOR6;
19702
19862
  var APP_BACKUP_PREFIX = DocumentType4.APP_BACKUP + SEPARATOR6;
19703
19863
  async function createLogByAutomationView() {
19704
- const db = context_exports.getProdAppDB();
19864
+ const db2 = context_exports.getProdAppDB();
19705
19865
  const viewJs = `function(doc) {
19706
19866
  if (doc._id.startsWith("${LOG_PREFIX}")) {
19707
19867
  let autoId = doc.automationId + "${SEPARATOR6}"
@@ -19714,10 +19874,10 @@ async function createLogByAutomationView() {
19714
19874
  emit(allKey)
19715
19875
  }
19716
19876
  }`;
19717
- await createView3(db, viewJs, ViewName5.AUTOMATION_LOGS);
19877
+ await createView3(db2, viewJs, ViewName5.AUTOMATION_LOGS);
19718
19878
  }
19719
19879
  async function createAppBackupTriggerView() {
19720
- const db = tenancy.getGlobalDB();
19880
+ const db2 = tenancy.getGlobalDB();
19721
19881
  const viewJs = `function(doc) {
19722
19882
  if (doc._id.startsWith("${APP_BACKUP_PREFIX}") && doc.type && doc.trigger) {
19723
19883
  let full = doc.appId + "${SEPARATOR6}"
@@ -19726,7 +19886,7 @@ async function createAppBackupTriggerView() {
19726
19886
  emit("${APP_BACKUP_PREFIX}" + full + doc.timestamp)
19727
19887
  }
19728
19888
  }`;
19729
- await createView3(db, viewJs, ViewName5.APP_BACKUP_BY_TRIGGER);
19889
+ await createView3(db2, viewJs, ViewName5.APP_BACKUP_BY_TRIGGER);
19730
19890
  }
19731
19891
 
19732
19892
  // ../pro/packages/pro/src/db/utils/retention.ts
@@ -19945,17 +20105,17 @@ __export(version_exports, {
19945
20105
  getLicenseVersion: () => getLicenseVersion,
19946
20106
  getProVersion: () => getProVersion
19947
20107
  });
19948
- var import_fs8 = __toESM(require("fs"));
19949
- var import_path9 = __toESM(require("path"));
20108
+ var import_fs9 = __toESM(require("fs"));
20109
+ var import_path10 = __toESM(require("path"));
19950
20110
  var getLicenseVersion = () => {
19951
20111
  if (environment_default2.isDev()) {
19952
20112
  const DEV_VER_FILENAME = "dev-version.txt";
19953
- const verFile = import_path9.default.join(objectStore_exports2.budibaseTempDir(), DEV_VER_FILENAME);
19954
- if (import_fs8.default.existsSync(verFile)) {
19955
- return import_fs8.default.readFileSync(verFile, "utf8");
20113
+ const verFile = import_path10.default.join(objectStore_exports2.budibaseTempDir(), DEV_VER_FILENAME);
20114
+ if (import_fs9.default.existsSync(verFile)) {
20115
+ return import_fs9.default.readFileSync(verFile, "utf8");
19956
20116
  } else {
19957
20117
  const devVer = utils_exports2.newid();
19958
- import_fs8.default.writeFileSync(verFile, devVer);
20118
+ import_fs9.default.writeFileSync(verFile, devVer);
19959
20119
  return devVer;
19960
20120
  }
19961
20121
  } else {
@@ -19963,11 +20123,11 @@ var getLicenseVersion = () => {
19963
20123
  }
19964
20124
  };
19965
20125
  var getProVersion = () => {
19966
- const version = environment_default2.VERSION;
19967
- if (!version) {
20126
+ const version2 = environment_default2.VERSION;
20127
+ if (!version2) {
19968
20128
  throw new Error("No budibase pro version was specified");
19969
20129
  }
19970
- return version;
20130
+ return version2;
19971
20131
  };
19972
20132
 
19973
20133
  // ../pro/packages/pro/src/constants/misc.ts
@@ -20020,17 +20180,17 @@ async function getAppBackupParams(appId, filters, otherProps = {}) {
20020
20180
  endkey: `${APP_BACKUP_PREFIX2}${endKey}`
20021
20181
  };
20022
20182
  }
20023
- async function getAppBackupsByTrigger(db, params2) {
20183
+ async function getAppBackupsByTrigger(db2, params2) {
20024
20184
  let backups = [];
20025
20185
  try {
20026
20186
  const queryIndex = db_exports.getQueryIndex(
20027
20187
  db_exports.ViewName.APP_BACKUP_BY_TRIGGER
20028
20188
  );
20029
- backups = await db.query(queryIndex, params2);
20189
+ backups = await db2.query(queryIndex, params2);
20030
20190
  } catch (err) {
20031
20191
  if (err != null && err.error === "not_found") {
20032
20192
  await createAppBackupTriggerView();
20033
- return getAppBackupsByTrigger(db, params2);
20193
+ return getAppBackupsByTrigger(db2, params2);
20034
20194
  } else {
20035
20195
  throw err;
20036
20196
  }
@@ -20041,7 +20201,7 @@ function generateAppBackupID(appId, timestamp) {
20041
20201
  return `${APP_BACKUP_PREFIX2}${appId}${db_exports.SEPARATOR}${timestamp}`;
20042
20202
  }
20043
20203
  async function fetchAppBackups(appId, opts = {}) {
20044
- const db = tenancy.getGlobalDB();
20204
+ const db2 = tenancy.getGlobalDB();
20045
20205
  let backups;
20046
20206
  const pageSize = opts.limit || GENERIC_PAGE_SIZE;
20047
20207
  const params2 = await getAppBackupParams(appId, opts, {
@@ -20052,9 +20212,9 @@ async function fetchAppBackups(appId, opts = {}) {
20052
20212
  params2.startkey = opts.page;
20053
20213
  }
20054
20214
  if (!opts.trigger || !opts.type) {
20055
- backups = await db.allDocs(params2);
20215
+ backups = await db2.allDocs(params2);
20056
20216
  } else {
20057
- backups = await getAppBackupsByTrigger(db, params2);
20217
+ backups = await getAppBackupsByTrigger(db2, params2);
20058
20218
  }
20059
20219
  const pageData = pagination2(backups, {
20060
20220
  paginate: opts.paginate,
@@ -20077,15 +20237,15 @@ async function fetchAppBackups(appId, opts = {}) {
20077
20237
  }
20078
20238
  return pageData;
20079
20239
  }
20080
- async function storeAppBackupMetadata(metadata, opts = {}) {
20081
- const db = tenancy.getGlobalDB();
20082
- const prodAppId = db_exports.getProdAppID(metadata.appId);
20083
- let _id = generateAppBackupID(prodAppId, metadata.timestamp);
20240
+ async function storeAppBackupMetadata(metadata2, opts = {}) {
20241
+ const db2 = tenancy.getGlobalDB();
20242
+ const prodAppId = db_exports.getProdAppID(metadata2.appId);
20243
+ let _id = generateAppBackupID(prodAppId, metadata2.timestamp);
20084
20244
  const appBackupDoc = {
20085
- ...metadata,
20245
+ ...metadata2,
20086
20246
  _id,
20087
20247
  appId: prodAppId,
20088
- name: metadata.name
20248
+ name: metadata2.name
20089
20249
  };
20090
20250
  if (opts.filename) {
20091
20251
  appBackupDoc.filename = opts.filename;
@@ -20094,27 +20254,27 @@ async function storeAppBackupMetadata(metadata, opts = {}) {
20094
20254
  appBackupDoc._id = opts.docId;
20095
20255
  appBackupDoc._rev = opts.docRev;
20096
20256
  }
20097
- if (metadata.createdBy) {
20257
+ if (metadata2.createdBy) {
20098
20258
  appBackupDoc.createdBy = db_exports.getGlobalIDFromUserMetadataID(
20099
- metadata.createdBy
20259
+ metadata2.createdBy
20100
20260
  );
20101
20261
  }
20102
- return await db.put(appBackupDoc);
20262
+ return await db2.put(appBackupDoc);
20103
20263
  }
20104
- async function updateAppBackupMetadata(backupId, name) {
20105
- const db = tenancy.getGlobalDB();
20106
- const metadata = await db.get(backupId);
20107
- metadata.name = name;
20108
- return await db.put(metadata);
20264
+ async function updateAppBackupMetadata(backupId, name2) {
20265
+ const db2 = tenancy.getGlobalDB();
20266
+ const metadata2 = await db2.get(backupId);
20267
+ metadata2.name = name2;
20268
+ return await db2.put(metadata2);
20109
20269
  }
20110
20270
  async function deleteAppBackupMetadata(backupId) {
20111
- const db = tenancy.getGlobalDB();
20112
- const backupDoc = await db.get(backupId);
20113
- await db.remove(backupDoc._id, backupDoc._rev);
20271
+ const db2 = tenancy.getGlobalDB();
20272
+ const backupDoc = await db2.get(backupId);
20273
+ await db2.remove(backupDoc._id, backupDoc._rev);
20114
20274
  }
20115
20275
  async function getAppBackupMetadata(backupId) {
20116
- const db = tenancy.getGlobalDB();
20117
- return await db.get(backupId);
20276
+ const db2 = tenancy.getGlobalDB();
20277
+ return await db2.get(backupId);
20118
20278
  }
20119
20279
 
20120
20280
  // ../pro/packages/pro/src/db/environmentVariables.ts
@@ -20133,16 +20293,16 @@ var cache = new import_lru_cache.default({
20133
20293
  function getEnvVarID() {
20134
20294
  return StaticDatabases.GLOBAL.docs.environmentVariables;
20135
20295
  }
20136
- function getCacheEnvVarID(rev) {
20296
+ function getCacheEnvVarID(rev2) {
20137
20297
  const tenantId = tenancy.getTenantId();
20138
- return `${tenantId}/${getEnvVarID()}/${rev || ""}`;
20298
+ return `${tenantId}/${getEnvVarID()}/${rev2 || ""}`;
20139
20299
  }
20140
20300
  async function get6() {
20141
20301
  const id = getEnvVarID();
20142
- const db = tenancy.getGlobalDB();
20302
+ const db2 = tenancy.getGlobalDB();
20143
20303
  let encrypted, notFound = false;
20144
20304
  try {
20145
- encrypted = await db.get(id);
20305
+ encrypted = await db2.get(id);
20146
20306
  } catch (err) {
20147
20307
  if (err.status == 404) {
20148
20308
  notFound = true;
@@ -20175,14 +20335,14 @@ async function get6() {
20175
20335
  cache.set(cacheKey, finalDoc);
20176
20336
  return finalDoc;
20177
20337
  }
20178
- async function update(doc) {
20338
+ async function update(doc2) {
20179
20339
  const id = getEnvVarID();
20180
- const db = tenancy.getGlobalDB();
20181
- return await db.put({
20182
- _id: doc._id || id,
20183
- _rev: doc._rev || void 0,
20340
+ const db2 = tenancy.getGlobalDB();
20341
+ return await db2.put({
20342
+ _id: doc2._id || id,
20343
+ _rev: doc2._rev || void 0,
20184
20344
  variables: encryption_exports.encrypt(
20185
- JSON.stringify(doc.variables),
20345
+ JSON.stringify(doc2.variables),
20186
20346
  encryption_exports.SecretOption.ENCRYPTION
20187
20347
  )
20188
20348
  });
@@ -20314,16 +20474,16 @@ __export(offline_exports, {
20314
20474
  getOfflineLicense: () => getOfflineLicense,
20315
20475
  writeOfflineLicenseToDisk: () => writeOfflineLicenseToDisk
20316
20476
  });
20317
- var import_fs9 = __toESM(require("fs"));
20318
- var import_path10 = require("path");
20477
+ var import_fs10 = __toESM(require("fs"));
20478
+ var import_path11 = require("path");
20319
20479
  var import_os2 = require("os");
20320
20480
  var import_jsonwebtoken = __toESM(require("jsonwebtoken"));
20321
20481
  var SUB_DIRECTORY = environment_default2.isTest() ? ".budibase-test" : ".budibase";
20322
- var DIRECTORY = (0, import_path10.join)((0, import_os2.tmpdir)(), SUB_DIRECTORY);
20482
+ var DIRECTORY = (0, import_path11.join)((0, import_os2.tmpdir)(), SUB_DIRECTORY);
20323
20483
  var OFFLINE_LICENSE_FILE = "offline_license.txt";
20324
- var LICENSE_FILE_PATH = (0, import_path10.join)(DIRECTORY, OFFLINE_LICENSE_FILE);
20325
- if (!import_fs9.default.existsSync(DIRECTORY)) {
20326
- import_fs9.default.mkdirSync(DIRECTORY);
20484
+ var LICENSE_FILE_PATH = (0, import_path11.join)(DIRECTORY, OFFLINE_LICENSE_FILE);
20485
+ if (!import_fs10.default.existsSync(DIRECTORY)) {
20486
+ import_fs10.default.mkdirSync(DIRECTORY);
20327
20487
  }
20328
20488
  var PUBLIC_KEY = "-----BEGIN PUBLIC KEY-----\nMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAvz3jePLCFBXZ19c8Dpkv\nXtSgOhKFOcvQdo/LV0KJRUzQWDPWuO4ILtBtnqhjtIzZH4CH0qCYBet5L6Qr4CM1\nl2HXiAD1Q2rlHNW9wDaYyKb1F5f+v4RyqCAyzlkwRdksmkLeECTboojNnmRCrE3C\n8suunQP5bEScqEY2kclqzSf8e6xqMzPUg3mL/pNa1iEv7TuLbU9nJfgR36l0WmZY\n94fWnSaT8OSXSqcxsaByf06gfS3HAoTJNc7eqz1Hf9fUORQGPUAnFK8cT3SfdA36\nd/o3ZWE1TTj1zYwlCLN5qRKr3hU8nC3xEYNEbkB9SfTRaOq9Q7P8WmfLkoCPm3pR\nmwIDAQAB\n-----END PUBLIC KEY-----\n";
20329
20489
  function getOfflineLicense() {
@@ -20334,16 +20494,16 @@ function getOfflineLicense() {
20334
20494
  }
20335
20495
  }
20336
20496
  function getOfflineLicenseFromDisk() {
20337
- if (import_fs9.default.existsSync(LICENSE_FILE_PATH)) {
20338
- const token = import_fs9.default.readFileSync(LICENSE_FILE_PATH, { encoding: "utf-8" });
20497
+ if (import_fs10.default.existsSync(LICENSE_FILE_PATH)) {
20498
+ const token = import_fs10.default.readFileSync(LICENSE_FILE_PATH, { encoding: "utf-8" });
20339
20499
  return import_jsonwebtoken.default.verify(token, PUBLIC_KEY, { algorithms: ["RS256"] });
20340
20500
  }
20341
20501
  }
20342
20502
  function writeOfflineLicenseToDisk(signedLicense) {
20343
- import_fs9.default.writeFileSync(LICENSE_FILE_PATH, signedLicense, { encoding: "utf-8" });
20503
+ import_fs10.default.writeFileSync(LICENSE_FILE_PATH, signedLicense, { encoding: "utf-8" });
20344
20504
  }
20345
20505
  function deleteOfflineLicense() {
20346
- import_fs9.default.rmSync(LICENSE_FILE_PATH, { force: true });
20506
+ import_fs10.default.rmSync(LICENSE_FILE_PATH, { force: true });
20347
20507
  }
20348
20508
 
20349
20509
  // ../pro/packages/pro/src/sdk/licensing/licenses/licenses.ts
@@ -20546,14 +20706,14 @@ __export(quotas_exports4, {
20546
20706
 
20547
20707
  // ../pro/packages/pro/src/sdk/quotas/quotas.ts
20548
20708
  init_src();
20549
- var increment = (name, type, opts) => {
20550
- return tryIncrement(1, name, type, opts);
20709
+ var increment = (name2, type, opts) => {
20710
+ return tryIncrement(1, name2, type, opts);
20551
20711
  };
20552
- var incrementMany = (change, name, type, opts) => {
20553
- return tryIncrement(change, name, type, opts);
20712
+ var incrementMany = (change, name2, type, opts) => {
20713
+ return tryIncrement(change, name2, type, opts);
20554
20714
  };
20555
- var tryIncrement = async (change, name, type, opts = {}) => {
20556
- await updateUsage(change, name, type, {
20715
+ var tryIncrement = async (change, name2, type, opts = {}) => {
20716
+ await updateUsage(change, name2, type, {
20557
20717
  dryRun: true,
20558
20718
  suppressErrorLog: opts.suppressErrorLog,
20559
20719
  id: opts.id
@@ -20562,7 +20722,7 @@ var tryIncrement = async (change, name, type, opts = {}) => {
20562
20722
  if (opts.fn) {
20563
20723
  result = await opts.fn();
20564
20724
  }
20565
- await updateUsage(change, name, type, {
20725
+ await updateUsage(change, name2, type, {
20566
20726
  dryRun: false,
20567
20727
  valueFn: opts.valueFn,
20568
20728
  suppressErrorLog: opts.suppressErrorLog,
@@ -20570,32 +20730,32 @@ var tryIncrement = async (change, name, type, opts = {}) => {
20570
20730
  });
20571
20731
  return result;
20572
20732
  };
20573
- var decrement = (name, type, opts = {}) => {
20574
- return updateUsage(-1, name, type, opts);
20733
+ var decrement = (name2, type, opts = {}) => {
20734
+ return updateUsage(-1, name2, type, opts);
20575
20735
  };
20576
- var decrementMany = (change, name, type, opts = {}) => {
20577
- return updateUsage(-change, name, type, opts);
20736
+ var decrementMany = (change, name2, type, opts = {}) => {
20737
+ return updateUsage(-change, name2, type, opts);
20578
20738
  };
20579
- var set2 = async (name, type, value) => {
20580
- return quotas_exports.setUsage(value, name, type);
20739
+ var set2 = async (name2, type, value) => {
20740
+ return quotas_exports.setUsage(value, name2, type);
20581
20741
  };
20582
- var getExistingTriggers = (type, name, quotaUsage) => {
20742
+ var getExistingTriggers = (type, name2, quotaUsage) => {
20583
20743
  if (type == "static" /* STATIC */) {
20584
20744
  const triggers = quotaUsage.usageQuota.triggers;
20585
- return triggers ? triggers[name] || {} : {};
20745
+ return triggers ? triggers[name2] || {} : {};
20586
20746
  } else {
20587
20747
  const currentMonthString = quotas_exports.utils.getCurrentMonthString();
20588
20748
  const triggers = quotaUsage.monthly[currentMonthString].triggers;
20589
- return triggers ? triggers[name] || {} : {};
20749
+ return triggers ? triggers[name2] || {} : {};
20590
20750
  }
20591
20751
  };
20592
- var triggerQuota2 = async (name, quota, percentage, resetDate) => {
20752
+ var triggerQuota2 = async (name2, quota, percentage, resetDate) => {
20593
20753
  try {
20594
20754
  await redlockImpl_exports.doWithLock(
20595
20755
  {
20596
20756
  type: "try_once" /* TRY_ONCE */,
20597
20757
  name: "trigger_quota" /* TRIGGER_QUOTA */,
20598
- resource: name,
20758
+ resource: name2,
20599
20759
  // use the quota name for extra uniqueness on the lock
20600
20760
  ttl: 1e4
20601
20761
  // auto expire after 10 seconds
@@ -20615,10 +20775,10 @@ var triggerQuota2 = async (name, quota, percentage, resetDate) => {
20615
20775
  logging_exports.logAlert("Error triggering quota", e);
20616
20776
  }
20617
20777
  };
20618
- var checkTriggers = async (type, name, totalValue, quota) => {
20778
+ var checkTriggers = async (type, name2, totalValue, quota) => {
20619
20779
  const usage = await getQuotaUsage();
20620
20780
  const resetDate = type === "monthly" /* MONTHLY */ ? usage.quotaReset : void 0;
20621
- const triggers = await getExistingTriggers(type, name, usage);
20781
+ const triggers = await getExistingTriggers(type, name2, usage);
20622
20782
  const quotaTriggers = quota.triggers;
20623
20783
  let percentage = totalValue / quota.value * 100;
20624
20784
  if (percentage > 100) {
@@ -20634,7 +20794,7 @@ var checkTriggers = async (type, name, totalValue, quota) => {
20634
20794
  const isAtTrigger = percentage === triggerPercentage;
20635
20795
  const sendNotification = !nextIsTriggered || isAtTrigger;
20636
20796
  if (sendNotification) {
20637
- await triggerQuota2(name, quota, percentage, resetDate);
20797
+ await triggerQuota2(name2, quota, percentage, resetDate);
20638
20798
  }
20639
20799
  }
20640
20800
  } else {
@@ -20643,23 +20803,23 @@ var checkTriggers = async (type, name, totalValue, quota) => {
20643
20803
  }
20644
20804
  return triggers;
20645
20805
  };
20646
- var updateUsage = async (usageChange, name, type, opts = {}) => {
20806
+ var updateUsage = async (usageChange, name2, type, opts = {}) => {
20647
20807
  let appId = null;
20648
20808
  try {
20649
20809
  appId = context_exports.getAppId();
20650
20810
  } catch (err) {
20651
20811
  }
20652
- const isAppQuota = APP_QUOTA_NAMES.includes(name);
20812
+ const isAppQuota = APP_QUOTA_NAMES.includes(name2);
20653
20813
  if (isAppQuota && !appId) {
20654
20814
  throw new Error("App context required for quota update");
20655
20815
  }
20656
20816
  try {
20657
- const licensedQuota = await getLicensedQuota("usage" /* USAGE */, name, type);
20817
+ const licensedQuota = await getLicensedQuota("usage" /* USAGE */, name2, type);
20658
20818
  let {
20659
20819
  total: totalValue,
20660
20820
  app: appValue,
20661
20821
  breakdown: breakdownValue
20662
- } = await quotas_exports.getCurrentUsageValues(type, name, opts.id);
20822
+ } = await quotas_exports.getCurrentUsageValues(type, name2, opts.id);
20663
20823
  totalValue += usageChange;
20664
20824
  if (appValue != null) {
20665
20825
  appValue += usageChange;
@@ -20669,7 +20829,7 @@ var updateUsage = async (usageChange, name, type, opts = {}) => {
20669
20829
  }
20670
20830
  let triggers = {};
20671
20831
  if (!opts.dryRun) {
20672
- triggers = await checkTriggers(type, name, totalValue, licensedQuota);
20832
+ triggers = await checkTriggers(type, name2, totalValue, licensedQuota);
20673
20833
  }
20674
20834
  if (licensedQuota.value !== quotas_exports2.UNLIMITED && totalValue > licensedQuota.value && usageChange > 0) {
20675
20835
  throw new UsageLimitError(
@@ -20692,7 +20852,7 @@ var updateUsage = async (usageChange, name, type, opts = {}) => {
20692
20852
  appValue = totalValue;
20693
20853
  }
20694
20854
  await quotas_exports.setAllUsage(
20695
- name,
20855
+ name2,
20696
20856
  type,
20697
20857
  {
20698
20858
  total: totalValue,
@@ -20704,30 +20864,30 @@ var updateUsage = async (usageChange, name, type, opts = {}) => {
20704
20864
  );
20705
20865
  } catch (err) {
20706
20866
  if (!opts.suppressErrorLog) {
20707
- console.error(`Error updating usage quotas for ${name}`, err);
20867
+ console.error(`Error updating usage quotas for ${name2}`, err);
20708
20868
  }
20709
20869
  throw err;
20710
20870
  }
20711
20871
  };
20712
- var getLicensedQuota = async (quotaType, name, usageType) => {
20872
+ var getLicensedQuota = async (quotaType, name2, usageType) => {
20713
20873
  const license = await cache_exports2.getCachedLicense();
20714
20874
  if (!license) {
20715
20875
  const tenantId = tenancy.getTenantId();
20716
20876
  throw new Error("License not found for tenant id " + tenantId);
20717
20877
  }
20718
- if (usageType && isStaticQuota(quotaType, usageType, name)) {
20719
- return license.quotas[quotaType][usageType][name];
20720
- } else if (usageType && isMonthlyQuota(quotaType, usageType, name)) {
20721
- return license.quotas[quotaType][usageType][name];
20722
- } else if (isConstantQuota(quotaType, name)) {
20723
- return license.quotas[quotaType][name];
20878
+ if (usageType && isStaticQuota(quotaType, usageType, name2)) {
20879
+ return license.quotas[quotaType][usageType][name2];
20880
+ } else if (usageType && isMonthlyQuota(quotaType, usageType, name2)) {
20881
+ return license.quotas[quotaType][usageType][name2];
20882
+ } else if (isConstantQuota(quotaType, name2)) {
20883
+ return license.quotas[quotaType][name2];
20724
20884
  } else {
20725
20885
  throw new Error("Invalid quota type");
20726
20886
  }
20727
20887
  };
20728
- var usageLimitIsExceeded = async (name, type) => {
20888
+ var usageLimitIsExceeded = async (name2, type) => {
20729
20889
  try {
20730
- await updateUsage(1, name, type, { dryRun: true });
20890
+ await updateUsage(1, name2, type, { dryRun: true });
20731
20891
  return false;
20732
20892
  } catch (e) {
20733
20893
  if (e.code === "usage_limit_exceeded" /* USAGE_LIMIT_EXCEEDED */) {
@@ -20841,19 +21001,19 @@ async function recordDayPassOnQuotas() {
20841
21001
  });
20842
21002
  }
20843
21003
  async function recordDayPassTimeOnUser(user) {
20844
- const db = tenancy.getGlobalDB();
20845
- let dbUser = await db.get(user._id);
21004
+ const db2 = tenancy.getGlobalDB();
21005
+ let dbUser = await db2.get(user._id);
20846
21006
  const now = /* @__PURE__ */ new Date();
20847
21007
  const nowString = (/* @__PURE__ */ new Date()).toISOString();
20848
21008
  user.dayPassRecordedAt = nowString;
20849
21009
  dbUser.dayPassRecordedAt = nowString;
20850
21010
  try {
20851
21011
  console.log(`Recording day pass for user=${user._id}`);
20852
- await db.put(dbUser);
21012
+ await db2.put(dbUser);
20853
21013
  } catch (e) {
20854
21014
  if (e.status === 409) {
20855
21015
  console.warn(`Conflict recording day pass for user=${user._id}`);
20856
- dbUser = await db.get(user._id);
21016
+ dbUser = await db2.get(user._id);
20857
21017
  if (!dbUser.dayPassRecordedAt || new Date(dbUser.dayPassRecordedAt).getDay() !== now.getDay()) {
20858
21018
  console.error(`Day pass not recorded for user=${user._id}`);
20859
21019
  throw e;
@@ -21102,9 +21262,9 @@ function generateAutomationLogID(isoDate, status2, automationId) {
21102
21262
  return `${DocumentType5.AUTOMATION_LOG}${SEPARATOR7}${isoDate}${SEPARATOR7}${automationId}${SEPARATOR7}${status2}`;
21103
21263
  }
21104
21264
  async function getAllLogs(startDate, endDate, opts = { docs: true }) {
21105
- let db = context_exports.getProdAppDB();
21106
- if (!await db.exists()) {
21107
- db = context_exports.getDevAppDB();
21265
+ let db2 = context_exports.getProdAppDB();
21266
+ if (!await db2.exists()) {
21267
+ db2 = context_exports.getDevAppDB();
21108
21268
  }
21109
21269
  let optional = { status: opts.status };
21110
21270
  let limit = (opts == null ? void 0 : opts.limit) ? opts.limit : (opts == null ? void 0 : opts.paginate) ? GENERIC_PAGE_SIZE + 1 : void 0;
@@ -21115,16 +21275,16 @@ async function getAllLogs(startDate, endDate, opts = { docs: true }) {
21115
21275
  if (opts == null ? void 0 : opts.page) {
21116
21276
  params2.startkey = opts.page;
21117
21277
  }
21118
- let response = await db.allDocs(params2);
21278
+ let response = await db2.allDocs(params2);
21119
21279
  return pagination2(response, {
21120
21280
  paginate: opts == null ? void 0 : opts.paginate,
21121
21281
  pageSize: GENERIC_PAGE_SIZE
21122
21282
  });
21123
21283
  }
21124
21284
  async function getLogsByView(startDate, endDate, viewParams = {}) {
21125
- let db = context_exports.getProdAppDB();
21126
- if (!await db.exists()) {
21127
- db = context_exports.getDevAppDB();
21285
+ let db2 = context_exports.getProdAppDB();
21286
+ if (!await db2.exists()) {
21287
+ db2 = context_exports.getDevAppDB();
21128
21288
  }
21129
21289
  let response;
21130
21290
  try {
@@ -21139,7 +21299,7 @@ async function getLogsByView(startDate, endDate, viewParams = {}) {
21139
21299
  if (viewParams == null ? void 0 : viewParams.page) {
21140
21300
  params2.startkey = viewParams.page;
21141
21301
  }
21142
- response = await db.query(getQueryIndex3(ViewName6.AUTOMATION_LOGS), params2);
21302
+ response = await db2.query(getQueryIndex3(ViewName6.AUTOMATION_LOGS), params2);
21143
21303
  } catch (err) {
21144
21304
  if (err != null && (err.name === "not_found" || err.error === "not_found")) {
21145
21305
  await createLogByAutomationView();
@@ -21151,9 +21311,9 @@ async function getLogsByView(startDate, endDate, viewParams = {}) {
21151
21311
  return pagination2(response);
21152
21312
  }
21153
21313
  async function writeLog(automation, results) {
21154
- const db = context_exports.getProdAppDB();
21314
+ const db2 = context_exports.getProdAppDB();
21155
21315
  const automationId = automation._id;
21156
- const name = automation.name;
21316
+ const name2 = automation.name;
21157
21317
  const status2 = getStatus(results);
21158
21318
  const isoDate = (/* @__PURE__ */ new Date()).toISOString();
21159
21319
  const id = generateAutomationLogID(isoDate, status2, automationId);
@@ -21162,23 +21322,23 @@ async function writeLog(automation, results) {
21162
21322
  ...results,
21163
21323
  automationId,
21164
21324
  status: status2,
21165
- automationName: name,
21325
+ automationName: name2,
21166
21326
  createdAt: isoDate,
21167
21327
  _id: id
21168
21328
  };
21169
- await db.put(log);
21329
+ await db2.put(log);
21170
21330
  return id;
21171
21331
  }
21172
21332
  async function updateAppMetadataWithErrors(logIds, { clearing } = { clearing: false }) {
21173
- const db = context_exports.getProdAppDB();
21333
+ const db2 = context_exports.getProdAppDB();
21174
21334
  await backOff(async () => {
21175
- const metadata = await db.get(db_exports.DocumentType.APP_METADATA);
21335
+ const metadata2 = await db2.get(db_exports.DocumentType.APP_METADATA);
21176
21336
  for (let logId of logIds) {
21177
21337
  const parts = logId.split(db_exports.SEPARATOR);
21178
21338
  const autoId = `${parts[parts.length - 3]}${db_exports.SEPARATOR}${parts[parts.length - 2]}`;
21179
21339
  let errors = {};
21180
- if (metadata.automationErrors) {
21181
- errors = metadata.automationErrors;
21340
+ if (metadata2.automationErrors) {
21341
+ errors = metadata2.automationErrors;
21182
21342
  }
21183
21343
  if (!Array.isArray(errors[autoId])) {
21184
21344
  errors[autoId] = [];
@@ -21192,10 +21352,10 @@ async function updateAppMetadataWithErrors(logIds, { clearing } = { clearing: fa
21192
21352
  if (errors[autoId].length === 0) {
21193
21353
  delete errors[autoId];
21194
21354
  }
21195
- metadata.automationErrors = errors;
21355
+ metadata2.automationErrors = errors;
21196
21356
  }
21197
- await db.put(metadata);
21198
- await cache_exports.app.invalidateAppMetadata(metadata.appId, metadata);
21357
+ await db2.put(metadata2);
21358
+ await cache_exports.app.invalidateAppMetadata(metadata2.appId, metadata2);
21199
21359
  }, "Failed to update app metadata with automation log error");
21200
21360
  }
21201
21361
  async function getExpiredLogs() {
@@ -21211,29 +21371,29 @@ async function getExpiredLogs() {
21211
21371
  }
21212
21372
  }
21213
21373
  async function clearOldHistory() {
21214
- const db = context_exports.getProdAppDB();
21374
+ const db2 = context_exports.getProdAppDB();
21215
21375
  try {
21216
21376
  const expired = await getExpiredLogs();
21217
21377
  if (!expired.data || expired.data.length === 0) {
21218
21378
  return;
21219
21379
  }
21220
- const toDelete = expired.data.map((doc) => ({
21221
- _id: doc.id,
21222
- _rev: doc.value.rev,
21380
+ const toDelete = expired.data.map((doc2) => ({
21381
+ _id: doc2.id,
21382
+ _rev: doc2.value.rev,
21223
21383
  _deleted: true
21224
21384
  }));
21225
- const errorLogIds = expired.data.filter((doc) => {
21226
- const parts = doc.id.split(db_exports.SEPARATOR);
21385
+ const errorLogIds = expired.data.filter((doc2) => {
21386
+ const parts = doc2.id.split(db_exports.SEPARATOR);
21227
21387
  const status2 = parts[parts.length - 1];
21228
21388
  return status2 === "error" /* ERROR */;
21229
- }).map((doc) => doc.id);
21230
- await db.bulkDocs(toDelete);
21389
+ }).map((doc2) => doc2.id);
21390
+ await db2.bulkDocs(toDelete);
21231
21391
  if (errorLogIds.length) {
21232
21392
  await updateAppMetadataWithErrors(errorLogIds, { clearing: true });
21233
21393
  }
21234
21394
  } catch (err) {
21235
21395
  logging_exports.logAlert(
21236
- `Failed to cleanup automation log history - Database "${db.name}"`,
21396
+ `Failed to cleanup automation log history - Database "${db2.name}"`,
21237
21397
  err
21238
21398
  );
21239
21399
  }
@@ -21406,10 +21566,10 @@ async function get7(id) {
21406
21566
  async function getBulk2(ids, opts = { enriched: true }) {
21407
21567
  return await groups_exports.getBulk(ids, opts);
21408
21568
  }
21409
- async function guardNameAvailility(name) {
21410
- const existingGroup = await groups_exports.getByName(name);
21569
+ async function guardNameAvailility(name2) {
21570
+ const existingGroup = await groups_exports.getByName(name2);
21411
21571
  if (existingGroup) {
21412
- throw new GroupNameUnavailableError(name);
21572
+ throw new GroupNameUnavailableError(name2);
21413
21573
  }
21414
21574
  }
21415
21575
  async function save4(group) {
@@ -21548,16 +21708,16 @@ __export(plugins_exports, {
21548
21708
  init_src();
21549
21709
 
21550
21710
  // ../pro/packages/pro/src/utilities/fileSystem.ts
21551
- var import_fs10 = __toESM(require("fs"));
21552
- var import_path11 = require("path");
21553
- function loadJSFile(directory, name) {
21554
- return import_fs10.default.readFileSync((0, import_path11.join)(directory, name), "utf8");
21711
+ var import_fs11 = __toESM(require("fs"));
21712
+ var import_path12 = require("path");
21713
+ function loadJSFile(directory2, name2) {
21714
+ return import_fs11.default.readFileSync((0, import_path12.join)(directory2, name2), "utf8");
21555
21715
  }
21556
21716
 
21557
21717
  // ../pro/packages/pro/src/sdk/plugins/index.ts
21558
21718
  async function storePlugin(metadata, directory, source) {
21559
21719
  const db = tenancy.getGlobalDB();
21560
- const version = metadata.package.version, name = metadata.package.name, description = metadata.package.description, hash2 = metadata.schema.hash;
21720
+ const version = metadata.package.version, name = metadata.package.name, description = metadata.package.description, hash = metadata.schema.hash;
21561
21721
  const bucketPath = objectStore_exports2.getPluginS3Dir(name);
21562
21722
  const files = await objectStore_exports2.uploadDirectory(
21563
21723
  objectStore_exports2.ObjectStoreBuckets.PLUGINS,
@@ -21572,8 +21732,7 @@ async function storePlugin(metadata, directory, source) {
21572
21732
  if (metadata.schema.type === "datasource" /* DATASOURCE */) {
21573
21733
  const js = loadJSFile(directory, jsFile.name);
21574
21734
  try {
21575
- ;
21576
- (0, eval)(js);
21735
+ eval(js);
21577
21736
  } catch (err) {
21578
21737
  const message = (err == null ? void 0 : err.message) ? err.message : JSON.stringify(err);
21579
21738
  throw new Error(`JS invalid: ${message}`);
@@ -21594,7 +21753,7 @@ async function storePlugin(metadata, directory, source) {
21594
21753
  ...metadata,
21595
21754
  name,
21596
21755
  version,
21597
- hash: hash2,
21756
+ hash,
21598
21757
  description
21599
21758
  };
21600
21759
  if (iconFileName) {
@@ -21606,7 +21765,7 @@ async function storePlugin(metadata, directory, source) {
21606
21765
  source
21607
21766
  };
21608
21767
  }
21609
- const write2 = async () => {
21768
+ const write = async () => {
21610
21769
  const response = await db.put(doc);
21611
21770
  await events_exports.plugin.imported(doc);
21612
21771
  return {
@@ -21615,21 +21774,21 @@ async function storePlugin(metadata, directory, source) {
21615
21774
  };
21616
21775
  };
21617
21776
  if (!rev) {
21618
- return await addPlugin(write2);
21777
+ return await addPlugin(write);
21619
21778
  } else {
21620
- return await write2();
21779
+ return await write();
21621
21780
  }
21622
21781
  }
21623
- async function deletePlugin(pluginId) {
21624
- const db = tenancy.getGlobalDB();
21782
+ async function deletePlugin(pluginId2) {
21783
+ const db2 = tenancy.getGlobalDB();
21625
21784
  try {
21626
- const plugin = await db.get(pluginId);
21627
- const bucketPath = objectStore_exports2.getPluginS3Dir(plugin.name);
21785
+ const plugin = await db2.get(pluginId2);
21786
+ const bucketPath2 = objectStore_exports2.getPluginS3Dir(plugin.name);
21628
21787
  await objectStore_exports2.deleteFolder(
21629
21788
  objectStore_exports2.ObjectStoreBuckets.PLUGINS,
21630
- bucketPath
21789
+ bucketPath2
21631
21790
  );
21632
- await db.remove(pluginId, plugin._rev);
21791
+ await db2.remove(pluginId2, plugin._rev);
21633
21792
  await events_exports.plugin.deleted(plugin);
21634
21793
  await removePlugin();
21635
21794
  } catch (err) {
@@ -21638,9 +21797,9 @@ async function deletePlugin(pluginId) {
21638
21797
  }
21639
21798
  }
21640
21799
  async function checkPluginQuotas() {
21641
- const db = tenancy.getGlobalDB();
21800
+ const db2 = tenancy.getGlobalDB();
21642
21801
  try {
21643
- const allPlugins = await db.allDocs(db_exports.getPluginParams());
21802
+ const allPlugins = await db2.allDocs(db_exports.getPluginParams());
21644
21803
  const pluginCount = allPlugins.rows.length;
21645
21804
  console.log(`Syncing plugin count: ${pluginCount}`);
21646
21805
  await updatePluginCount(pluginCount);
@@ -21666,12 +21825,12 @@ function isEncryptionKeyAvailable() {
21666
21825
  return !!environment_default2.ENCRYPTION_KEY;
21667
21826
  }
21668
21827
  async function fetch13() {
21669
- const doc = await environmentVariables_exports.get();
21670
- return Object.keys(doc.variables);
21828
+ const doc2 = await environmentVariables_exports.get();
21829
+ return Object.keys(doc2.variables);
21671
21830
  }
21672
21831
  async function fetchValues(environment3) {
21673
- const doc = await environmentVariables_exports.get();
21674
- const decrypted = doc.variables;
21832
+ const doc2 = await environmentVariables_exports.get();
21833
+ const decrypted = doc2.variables;
21675
21834
  const output = {};
21676
21835
  for (let [key, value] of Object.entries(decrypted)) {
21677
21836
  switch (environment3) {
@@ -21693,9 +21852,9 @@ async function changeValues(cb) {
21693
21852
  "User does not have access to environment variables feature."
21694
21853
  );
21695
21854
  }
21696
- const doc = await environmentVariables_exports.get();
21697
- doc.variables = cb(doc.variables);
21698
- await environmentVariables_exports.update(doc);
21855
+ const doc2 = await environmentVariables_exports.get();
21856
+ doc2.variables = cb(doc2.variables);
21857
+ await environmentVariables_exports.update(doc2);
21699
21858
  }
21700
21859
  async function update2(varName, value) {
21701
21860
  const checkName = isValid(varName);
@@ -21724,7 +21883,7 @@ __export(auditLogs_exports2, {
21724
21883
  definitions: () => definitions,
21725
21884
  download: () => download,
21726
21885
  fetch: () => fetch14,
21727
- write: () => write
21886
+ write: () => write2
21728
21887
  });
21729
21888
 
21730
21889
  // ../pro/packages/pro/src/sdk/auditLogs/auditLogs.ts
@@ -21736,15 +21895,15 @@ var MemoryStream2 = require("memorystream");
21736
21895
  function generateAuditLogID(timestamp) {
21737
21896
  return `${"al" /* AUDIT_LOG */}${SEPARATOR}${timestamp}${SEPARATOR}${utils_exports2.newid()}`;
21738
21897
  }
21739
- async function save5(doc) {
21740
- if (!doc._id) {
21741
- doc._id = generateAuditLogID(doc.timestamp);
21898
+ async function save5(doc2) {
21899
+ if (!doc2._id) {
21900
+ doc2._id = generateAuditLogID(doc2.timestamp);
21742
21901
  }
21743
21902
  try {
21744
- const db = context_exports.getAuditLogsDB();
21745
- const response = await db.put(doc);
21903
+ const db2 = context_exports.getAuditLogsDB();
21904
+ const response = await db2.put(doc2);
21746
21905
  return {
21747
- ...doc,
21906
+ ...doc2,
21748
21907
  _rev: response.rev
21749
21908
  };
21750
21909
  } catch (err) {
@@ -21769,12 +21928,12 @@ async function search(search3, bookmark) {
21769
21928
  );
21770
21929
  }
21771
21930
  function dump(params2) {
21772
- const db = context_exports.getAuditLogsDB();
21931
+ const db2 = context_exports.getAuditLogsDB();
21773
21932
  const stream3 = new MemoryStream2();
21774
- const promise = db.dump(stream3, {
21775
- filter: (doc) => {
21933
+ const promise = db2.dump(stream3, {
21934
+ filter: (doc2) => {
21776
21935
  var _a;
21777
- const auditLog = doc;
21936
+ const auditLog = doc2;
21778
21937
  if (!((_a = auditLog._id) == null ? void 0 : _a.startsWith("al" /* AUDIT_LOG */))) {
21779
21938
  return false;
21780
21939
  }
@@ -21792,7 +21951,7 @@ function dump(params2) {
21792
21951
  allMatched = allMatched && auditLog.timestamp >= params2.startDate && auditLog.timestamp <= params2.endDate;
21793
21952
  }
21794
21953
  if (params2.fullSearch) {
21795
- const json = JSON.stringify(doc);
21954
+ const json = JSON.stringify(doc2);
21796
21955
  allMatched = allMatched && json.includes(params2.fullSearch);
21797
21956
  }
21798
21957
  return allMatched;
@@ -21803,8 +21962,8 @@ function dump(params2) {
21803
21962
  const json = JSON.parse(Buffer.from(data).toString());
21804
21963
  if (Array.isArray(json.docs)) {
21805
21964
  let str = "";
21806
- for (let doc of json.docs) {
21807
- str += JSON.stringify(doc) + "\n";
21965
+ for (let doc2 of json.docs) {
21966
+ str += JSON.stringify(doc2) + "\n";
21808
21967
  }
21809
21968
  returnStream.write(str);
21810
21969
  }
@@ -21910,12 +22069,12 @@ async function auditLogsEnabled() {
21910
22069
  const license = await licensing_exports.cache.getCachedLicense();
21911
22070
  return license.features.includes("auditLogs" /* AUDIT_LOGS */);
21912
22071
  }
21913
- function getEventFriendlyName(event, metadata) {
22072
+ function getEventFriendlyName(event, metadata2) {
21914
22073
  const friendly = AuditedEventFriendlyName[event];
21915
22074
  if (!friendly) {
21916
22075
  throw new Error("No friendly name found.");
21917
22076
  }
21918
- let processed = processStringSync(friendly, metadata);
22077
+ let processed = processStringSync(friendly, metadata2);
21919
22078
  if (processed.includes(`""`)) {
21920
22079
  processed = removeTemplateStrings(friendly);
21921
22080
  }
@@ -21923,29 +22082,29 @@ function getEventFriendlyName(event, metadata) {
21923
22082
  }
21924
22083
 
21925
22084
  // ../pro/packages/pro/src/sdk/auditLogs/auditLogs.ts
21926
- async function write(event, metadata, opts) {
22085
+ async function write2(event, metadata2, opts) {
21927
22086
  if (!await auditLogsEnabled() || !utils_exports2.isAudited(event)) {
21928
22087
  return;
21929
22088
  }
21930
- const friendly = getEventFriendlyName(event, metadata);
22089
+ const friendly = getEventFriendlyName(event, metadata2);
21931
22090
  let date = /* @__PURE__ */ new Date();
21932
22091
  if (opts == null ? void 0 : opts.timestamp) {
21933
22092
  date = new Date(opts.timestamp);
21934
22093
  }
21935
- const doc = {
22094
+ const doc2 = {
21936
22095
  timestamp: date.toISOString(),
21937
22096
  event,
21938
22097
  name: friendly,
21939
22098
  userId: (opts == null ? void 0 : opts.userId) || AuditLogSystemUser,
21940
22099
  metadata: {
21941
- ...metadata,
22100
+ ...metadata2,
21942
22101
  ...opts == null ? void 0 : opts.hostInfo
21943
22102
  }
21944
22103
  };
21945
22104
  const fallback = {};
21946
22105
  try {
21947
22106
  if (opts == null ? void 0 : opts.appId) {
21948
- doc.appId = db_exports.getProdAppID(opts.appId);
22107
+ doc2.appId = db_exports.getProdAppID(opts.appId);
21949
22108
  const appMetadata = await cache_exports.app.getAppMetadata(opts.appId);
21950
22109
  fallback.appName = appMetadata.name;
21951
22110
  }
@@ -21959,8 +22118,8 @@ async function write(event, metadata, opts) {
21959
22118
  err
21960
22119
  );
21961
22120
  }
21962
- doc.fallback = fallback;
21963
- return await save5(doc);
22121
+ doc2.fallback = fallback;
22122
+ return await save5(doc2);
21964
22123
  }
21965
22124
  async function enrich(logs) {
21966
22125
  const allUserIds = logs.map((log) => log.userId);
@@ -22031,8 +22190,8 @@ function getBackupQueue() {
22031
22190
  }
22032
22191
 
22033
22192
  // ../pro/packages/pro/src/sdk/backups/backup.ts
22034
- async function storeAppBackupMetadata2(metadata, opts = {}) {
22035
- return backups_exports.storeAppBackupMetadata(metadata, opts);
22193
+ async function storeAppBackupMetadata2(metadata2, opts = {}) {
22194
+ return backups_exports.storeAppBackupMetadata(metadata2, opts);
22036
22195
  }
22037
22196
  function getTimestamps(status2) {
22038
22197
  const timestamp = (/* @__PURE__ */ new Date()).toISOString();
@@ -22046,7 +22205,7 @@ function getTimestamps(status2) {
22046
22205
  return { timestamp, createdAt: timestamp };
22047
22206
  }
22048
22207
  }
22049
- async function updateBackupStatus(id, rev, status2, contents, filename) {
22208
+ async function updateBackupStatus(id, rev2, status2, contents, filename) {
22050
22209
  const backup = await getAppBackup(id);
22051
22210
  return await backups_exports.storeAppBackupMetadata(
22052
22211
  {
@@ -22056,10 +22215,10 @@ async function updateBackupStatus(id, rev, status2, contents, filename) {
22056
22215
  status: status2,
22057
22216
  type: "backup" /* BACKUP */
22058
22217
  },
22059
- { filename, docId: id, docRev: rev }
22218
+ { filename, docId: id, docRev: rev2 }
22060
22219
  );
22061
22220
  }
22062
- async function updateRestoreStatus(id, rev, status2) {
22221
+ async function updateRestoreStatus(id, rev2, status2) {
22063
22222
  const restore = await getAppBackup(id);
22064
22223
  return await backups_exports.storeAppBackupMetadata(
22065
22224
  {
@@ -22069,7 +22228,7 @@ async function updateRestoreStatus(id, rev, status2) {
22069
22228
  type: "restore" /* RESTORE */,
22070
22229
  trigger: "manual" /* MANUAL */
22071
22230
  },
22072
- { docId: id, docRev: rev }
22231
+ { docId: id, docRev: rev2 }
22073
22232
  );
22074
22233
  }
22075
22234
  async function getAppBackup(backupId) {
@@ -22079,11 +22238,11 @@ async function updateAppBackup(backupId, backupName) {
22079
22238
  return backups_exports.updateAppBackupMetadata(backupId, backupName);
22080
22239
  }
22081
22240
  async function deleteAppBackup(backupId) {
22082
- const metadata = await backups_exports.getAppBackupMetadata(backupId);
22083
- if (metadata.filename) {
22241
+ const metadata2 = await backups_exports.getAppBackupMetadata(backupId);
22242
+ if (metadata2.filename) {
22084
22243
  await objectStore_exports2.deleteFile(
22085
22244
  objectStore_exports2.ObjectStoreBuckets.BACKUPS,
22086
- metadata.filename
22245
+ metadata2.filename
22087
22246
  );
22088
22247
  }
22089
22248
  return backups_exports.deleteAppBackupMetadata(backupId);
@@ -22092,15 +22251,15 @@ async function fetchAppBackups2(appId, opts) {
22092
22251
  return backups_exports.fetchAppBackups(appId, opts);
22093
22252
  }
22094
22253
  async function downloadAppBackup(backupId) {
22095
- const metadata = await backups_exports.getAppBackupMetadata(backupId);
22096
- if (!metadata.filename) {
22254
+ const metadata2 = await backups_exports.getAppBackupMetadata(backupId);
22255
+ if (!metadata2.filename) {
22097
22256
  throw new Error("Backup incomplete - cannot download.");
22098
22257
  }
22099
22258
  const path2 = await objectStore_exports2.retrieveToTmp(
22100
22259
  objectStore_exports2.ObjectStoreBuckets.BACKUPS,
22101
- metadata.filename
22260
+ metadata2.filename
22102
22261
  );
22103
- return { metadata, path: path2 };
22262
+ return { metadata: metadata2, path: path2 };
22104
22263
  }
22105
22264
  async function triggerAppBackup(appId, trigger, opts = {}) {
22106
22265
  let backup;
@@ -22139,7 +22298,7 @@ async function triggerAppBackup(appId, trigger, opts = {}) {
22139
22298
  return backup.id;
22140
22299
  }
22141
22300
  async function triggerAppRestore(appId, backupId, nameForBackup, createdBy) {
22142
- const metadata = await getAppBackup(backupId);
22301
+ const metadata2 = await getAppBackup(backupId);
22143
22302
  let restore;
22144
22303
  try {
22145
22304
  restore = await storeAppBackupMetadata2({
@@ -22166,7 +22325,7 @@ async function triggerAppRestore(appId, backupId, nameForBackup, createdBy) {
22166
22325
  createdBy
22167
22326
  }
22168
22327
  });
22169
- return { restoreId: restore.id, metadata };
22328
+ return { restoreId: restore.id, metadata: metadata2 };
22170
22329
  }
22171
22330
  var pkg = {
22172
22331
  isEnabled: isBackupsEnabled,
@@ -22189,7 +22348,7 @@ __export(processing_exports, {
22189
22348
  init: () => init12
22190
22349
  });
22191
22350
  init_src();
22192
- var import_fs11 = __toESM(require("fs"));
22351
+ var import_fs12 = __toESM(require("fs"));
22193
22352
  async function init12(opts) {
22194
22353
  await getBackupQueue().process(async (job) => {
22195
22354
  const data = job.data;
@@ -22257,8 +22416,8 @@ async function runBackup(trigger, tenantId, appId, opts) {
22257
22416
  }
22258
22417
  });
22259
22418
  await updateMetadata("complete" /* COMPLETE */, { filename, contents });
22260
- if (import_fs11.default.existsSync(tarPath)) {
22261
- import_fs11.default.rmSync(tarPath);
22419
+ if (import_fs12.default.existsSync(tarPath)) {
22420
+ import_fs12.default.rmSync(tarPath);
22262
22421
  }
22263
22422
  } catch (err) {
22264
22423
  logging_exports.logAlert("App backup error", err);
@@ -22271,7 +22430,7 @@ async function importProcessor(job, opts) {
22271
22430
  const tenantId = tenancy.getTenantIDFromAppID(appId);
22272
22431
  return tenancy.doInTenant(tenantId, async () => {
22273
22432
  const devAppId = db_exports.getDevAppID(appId);
22274
- const { rev } = await backup_default2.updateRestoreStatus(
22433
+ const { rev: rev2 } = await backup_default2.updateRestoreStatus(
22275
22434
  data.docId,
22276
22435
  data.docRev,
22277
22436
  "started" /* STARTED */
@@ -22296,23 +22455,23 @@ async function importProcessor(job, opts) {
22296
22455
  logging_exports.logAlert("App restore error", err);
22297
22456
  status2 = "failed" /* FAILED */;
22298
22457
  }
22299
- await backup_default2.updateRestoreStatus(data.docId, rev, status2);
22458
+ await backup_default2.updateRestoreStatus(data.docId, rev2, status2);
22300
22459
  });
22301
22460
  }
22302
22461
  async function exportProcessor(job, opts) {
22303
22462
  const data = job.data;
22304
- const appId = data.appId, trigger = data.export.trigger, name = data.export.name;
22463
+ const appId = data.appId, trigger = data.export.trigger, name2 = data.export.name;
22305
22464
  const tenantId = tenancy.getTenantIDFromAppID(appId);
22306
22465
  await tenancy.doInTenant(tenantId, async () => {
22307
- const { rev } = await backup_default2.updateBackupStatus(
22466
+ const { rev: rev2 } = await backup_default2.updateBackupStatus(
22308
22467
  data.docId,
22309
22468
  data.docRev,
22310
22469
  "started" /* STARTED */
22311
22470
  );
22312
22471
  return runBackup(trigger, tenantId, appId, {
22313
22472
  processing: opts,
22314
- doc: { id: data.docId, rev },
22315
- name
22473
+ doc: { id: data.docId, rev: rev2 },
22474
+ name: name2
22316
22475
  });
22317
22476
  });
22318
22477
  }
@@ -22359,8 +22518,8 @@ var ScimUserService = class {
22359
22518
  constructor(config) {
22360
22519
  this.get = async (params2) => {
22361
22520
  var _a;
22362
- const db = tenancy.getGlobalDB();
22363
- const builder2 = new db_exports.QueryBuilder(db.name, "user" /* USER */);
22521
+ const db2 = tenancy.getGlobalDB();
22522
+ const builder2 = new db_exports.QueryBuilder(db2.name, "user" /* USER */);
22364
22523
  builder2.setIndexBuilder(db_exports.searchIndexes.createUserIndex);
22365
22524
  builder2.setLimit(params2.pageSize);
22366
22525
  builder2.addEqual("scimInfo.isSync", true);
@@ -22496,9 +22655,9 @@ var fetch15 = async (ctx) => {
22496
22655
  ctx.body = { data: await fetch12() };
22497
22656
  };
22498
22657
  var destroy4 = async (ctx) => {
22499
- const { id, rev } = ctx.params;
22658
+ const { id, rev: rev2 } = ctx.params;
22500
22659
  try {
22501
- await remove2(id, rev);
22660
+ await remove2(id, rev2);
22502
22661
  ctx.body = { message: "Group deleted successfully" };
22503
22662
  } catch (err) {
22504
22663
  ctx.throw(err.status, err);
@@ -22543,13 +22702,13 @@ async function fetch16(ctx) {
22543
22702
  };
22544
22703
  }
22545
22704
  async function create3(ctx) {
22546
- const { name, production, development } = ctx.request.body;
22547
- await environmentVariables_exports2.update(name, { production, development });
22705
+ const { name: name2, production, development } = ctx.request.body;
22706
+ await environmentVariables_exports2.update(name2, { production, development });
22548
22707
  const environments = ["production" /* PRODUCTION */];
22549
22708
  if (production !== development) {
22550
22709
  environments.push("development" /* DEVELOPMENT */);
22551
22710
  }
22552
- await events_exports.environmentVariable.created(name, environments);
22711
+ await events_exports.environmentVariable.created(name2, environments);
22553
22712
  ctx.status = 200;
22554
22713
  }
22555
22714
  async function update4(ctx) {
@@ -22711,7 +22870,7 @@ router3.post(
22711
22870
 
22712
22871
  // ../pro/packages/pro/src/api/controllers/apps/backups.ts
22713
22872
  init_src();
22714
- var import_fs12 = __toESM(require("fs"));
22873
+ var import_fs13 = __toESM(require("fs"));
22715
22874
  async function checkAppID(ctx, appId) {
22716
22875
  if (!await utils_exports5.appExists(appId)) {
22717
22876
  ctx.throw(400, `Provided app ID: ${appId} - is invalid.`);
@@ -22795,9 +22954,9 @@ async function downloadBackup(ctx) {
22795
22954
  const appId = ctx.params.appId;
22796
22955
  await checkAppID(ctx, appId);
22797
22956
  const backupId = ctx.params.backupId;
22798
- const { metadata, path: path2 } = await backups_default2.downloadAppBackup(backupId);
22799
- ctx.attachment(`backup-${metadata.timestamp}.tar.gz`);
22800
- ctx.body = import_fs12.default.createReadStream(path2);
22957
+ const { metadata: metadata2, path: path2 } = await backups_default2.downloadAppBackup(backupId);
22958
+ ctx.attachment(`backup-${metadata2.timestamp}.tar.gz`);
22959
+ ctx.body = import_fs13.default.createReadStream(path2);
22801
22960
  }
22802
22961
 
22803
22962
  // ../pro/packages/pro/src/api/routes/apps/backups.ts
@@ -22912,8 +23071,8 @@ var import_router6 = __toESM(require("@koa/router"));
22912
23071
 
22913
23072
  // ../pro/packages/pro/src/api/controllers/global/scim/users.ts
22914
23073
  var import_scim_patch = require("scim-patch");
22915
- function tryGetQueryAsNumber(ctx, name) {
22916
- const value = ctx.request.query[name];
23074
+ function tryGetQueryAsNumber(ctx, name2) {
23075
+ const value = ctx.request.query[name2];
22917
23076
  if (value === void 0) {
22918
23077
  return void 0;
22919
23078
  }
@@ -23459,11 +23618,11 @@ var datasources_default = {
23459
23618
  };
23460
23619
 
23461
23620
  // src/sdk/app/tables/index.ts
23462
- async function getAllInternalTables(db) {
23463
- if (!db) {
23464
- db = context_exports.getAppDB();
23621
+ async function getAllInternalTables(db2) {
23622
+ if (!db2) {
23623
+ db2 = context_exports.getAppDB();
23465
23624
  }
23466
- const internalTables = await db.allDocs(
23625
+ const internalTables = await db2.allDocs(
23467
23626
  getTableParams(null, {
23468
23627
  include_docs: true
23469
23628
  })
@@ -23475,7 +23634,7 @@ async function getAllInternalTables(db) {
23475
23634
  }));
23476
23635
  }
23477
23636
  async function getAllExternalTables(datasourceId) {
23478
- const db = context_exports.getAppDB();
23637
+ const db2 = context_exports.getAppDB();
23479
23638
  const datasource2 = await datasources_default.get(datasourceId, { enriched: true });
23480
23639
  if (!datasource2 || !datasource2.entities) {
23481
23640
  throw "Datasource is not configured fully.";
@@ -23487,14 +23646,14 @@ async function getExternalTable(datasourceId, tableName) {
23487
23646
  return entities[tableName];
23488
23647
  }
23489
23648
  async function getTable(tableId) {
23490
- const db = context_exports.getAppDB();
23649
+ const db2 = context_exports.getAppDB();
23491
23650
  if (isExternalTable(tableId)) {
23492
23651
  let { datasourceId, tableName } = breakExternalTableId(tableId);
23493
23652
  const datasource2 = await datasources_default.get(datasourceId);
23494
23653
  const table = await getExternalTable(datasourceId, tableName);
23495
23654
  return { ...table, sql: isSQL(datasource2) };
23496
23655
  } else {
23497
- return db.get(tableId);
23656
+ return db2.get(tableId);
23498
23657
  }
23499
23658
  }
23500
23659
  var tables_default = {
@@ -23514,10 +23673,10 @@ __export(webhook_exports, {
23514
23673
  function isWebhookID(id) {
23515
23674
  return id.startsWith(db_exports.DocumentType.WEBHOOK);
23516
23675
  }
23517
- function newDoc(name, type, target) {
23676
+ function newDoc(name2, type, target) {
23518
23677
  return {
23519
23678
  live: true,
23520
- name,
23679
+ name: name2,
23521
23680
  action: {
23522
23681
  type,
23523
23682
  target
@@ -23525,22 +23684,22 @@ function newDoc(name, type, target) {
23525
23684
  };
23526
23685
  }
23527
23686
  async function save7(webhook) {
23528
- const db = context_exports.getAppDB();
23687
+ const db2 = context_exports.getAppDB();
23529
23688
  if (webhook._id && isWebhookID(webhook._id)) {
23530
- await db.get(webhook._id);
23689
+ await db2.get(webhook._id);
23531
23690
  } else {
23532
23691
  webhook._id = generateWebhookID();
23533
23692
  }
23534
- const response = await db.put(webhook);
23693
+ const response = await db2.put(webhook);
23535
23694
  webhook._rev = response.rev;
23536
23695
  return webhook;
23537
23696
  }
23538
- async function destroy6(id, rev) {
23539
- const db = context_exports.getAppDB();
23697
+ async function destroy6(id, rev2) {
23698
+ const db2 = context_exports.getAppDB();
23540
23699
  if (!id || !isWebhookID(id)) {
23541
23700
  throw new Error("Provided webhook ID is not valid.");
23542
23701
  }
23543
- return await db.remove(id, rev);
23702
+ return await db2.remove(id, rev2);
23544
23703
  }
23545
23704
 
23546
23705
  // src/sdk/app/automations/utils.ts
@@ -23620,14 +23779,14 @@ async function processUser(user, opts = {}) {
23620
23779
  }
23621
23780
  async function getGlobalUsers(userIds, opts) {
23622
23781
  const appId = context_exports.getAppId();
23623
- const db = tenancy.getGlobalDB();
23782
+ const db2 = tenancy.getGlobalDB();
23624
23783
  let globalUsers;
23625
23784
  if (userIds) {
23626
- globalUsers = (await db.allDocs(getMultiIDParams(userIds))).rows.map(
23785
+ globalUsers = (await db2.allDocs(getMultiIDParams(userIds))).rows.map(
23627
23786
  (row) => row.doc
23628
23787
  );
23629
23788
  } else {
23630
- globalUsers = (await db.allDocs(
23789
+ globalUsers = (await db2.allDocs(
23631
23790
  db_exports.getGlobalUserParams(null, {
23632
23791
  include_docs: true
23633
23792
  })
@@ -23654,7 +23813,7 @@ async function syncUsersToApp(appId, users2, groups) {
23654
23813
  return;
23655
23814
  }
23656
23815
  await context_exports.doInAppContext(appId, async () => {
23657
- const db = context_exports.getAppDB();
23816
+ const db2 = context_exports.getAppDB();
23658
23817
  for (let user of users2) {
23659
23818
  let ctxUser = user;
23660
23819
  let deletedUser = false;
@@ -23669,9 +23828,9 @@ async function syncUsersToApp(appId, users2, groups) {
23669
23828
  if (roleId === roles_exports.BUILTIN_ROLE_IDS.PUBLIC) {
23670
23829
  roleId = void 0;
23671
23830
  }
23672
- let metadata;
23831
+ let metadata2;
23673
23832
  try {
23674
- metadata = await db.get(metadataId);
23833
+ metadata2 = await db2.get(metadataId);
23675
23834
  } catch (err) {
23676
23835
  if (err.status !== 404) {
23677
23836
  throw err;
@@ -23679,21 +23838,21 @@ async function syncUsersToApp(appId, users2, groups) {
23679
23838
  if (!roleId) {
23680
23839
  continue;
23681
23840
  } else if (!deletedUser) {
23682
- metadata = {
23841
+ metadata2 = {
23683
23842
  tableId: InternalTables.USER_METADATA
23684
23843
  };
23685
23844
  }
23686
23845
  }
23687
23846
  if (deletedUser || !roleId) {
23688
- await db.remove(metadata);
23847
+ await db2.remove(metadata2);
23689
23848
  continue;
23690
23849
  }
23691
23850
  if (roleId) {
23692
- metadata.roleId = roleId;
23851
+ metadata2.roleId = roleId;
23693
23852
  }
23694
- let combined = sdk_default.users.combineMetadataAndUser(ctxUser, metadata);
23853
+ let combined = sdk_default.users.combineMetadataAndUser(ctxUser, metadata2);
23695
23854
  if (combined) {
23696
- await db.put(combined);
23855
+ await db2.put(combined);
23697
23856
  }
23698
23857
  }
23699
23858
  });
@@ -23748,7 +23907,7 @@ async function syncApp(appId, opts) {
23748
23907
  try {
23749
23908
  const replOpts = replication.appReplicateOpts();
23750
23909
  if (opts == null ? void 0 : opts.automationOnly) {
23751
- replOpts.filter = (doc) => doc._id.startsWith(db_exports.DocumentType.AUTOMATION);
23910
+ replOpts.filter = (doc2) => doc2._id.startsWith(db_exports.DocumentType.AUTOMATION);
23752
23911
  }
23753
23912
  await replication.replicate(replOpts);
23754
23913
  } catch (err) {
@@ -23861,7 +24020,7 @@ function generateAttachmentFindParams(tableId, attachmentCols, bookmark) {
23861
24020
  return params2;
23862
24021
  }
23863
24022
  async function getRowsWithAttachments(appId, table) {
23864
- const db = db_exports.getDB(appId);
24023
+ const db2 = db_exports.getDB(appId);
23865
24024
  const attachmentCols = [];
23866
24025
  for (let [key, column] of Object.entries(table.schema)) {
23867
24026
  if (column.type === "attachment" /* ATTACHMENT */) {
@@ -23878,7 +24037,7 @@ async function getRowsWithAttachments(appId, table) {
23878
24037
  attachmentCols,
23879
24038
  bookmark
23880
24039
  );
23881
- const resp = await db_exports.directCouchFind(db.name, params2);
24040
+ const resp = await db_exports.directCouchFind(db2.name, params2);
23882
24041
  bookmark = resp.bookmark;
23883
24042
  rowsLength = resp.rows.length;
23884
24043
  const rows2 = resp.rows;
@@ -23893,13 +24052,13 @@ __export(rows_exports, {
23893
24052
  getAllInternalRows: () => getAllInternalRows
23894
24053
  });
23895
24054
  async function getAllInternalRows(appId) {
23896
- let db;
24055
+ let db2;
23897
24056
  if (appId) {
23898
- db = db_exports.getDB(appId);
24057
+ db2 = db_exports.getDB(appId);
23899
24058
  } else {
23900
- db = context_exports.getAppDB();
24059
+ db2 = context_exports.getAppDB();
23901
24060
  }
23902
- const response = await db.allDocs(
24061
+ const response = await db2.allDocs(
23903
24062
  getRowParams2(null, null, {
23904
24063
  include_docs: true
23905
24064
  })
@@ -23921,9 +24080,9 @@ __export(utils_exports8, {
23921
24080
  syncGlobalUsers: () => syncGlobalUsers
23922
24081
  });
23923
24082
  var import_lodash5 = require("lodash");
23924
- function combineMetadataAndUser(user, metadata) {
24083
+ function combineMetadataAndUser(user, metadata2) {
23925
24084
  const metadataId = generateUserMetadataID2(user._id);
23926
- const found = Array.isArray(metadata) ? metadata.find((doc) => doc._id === metadataId) : metadata;
24085
+ const found = Array.isArray(metadata2) ? metadata2.find((doc2) => doc2._id === metadataId) : metadata2;
23927
24086
  if (user.roleId == null || user.roleId === roles_exports.BUILTIN_ROLE_IDS.PUBLIC) {
23928
24087
  if (found == null ? void 0 : found._id) {
23929
24088
  return { ...found, _deleted: true };
@@ -23950,11 +24109,11 @@ function combineMetadataAndUser(user, metadata) {
23950
24109
  }
23951
24110
  return null;
23952
24111
  }
23953
- async function rawUserMetadata(db) {
23954
- if (!db) {
23955
- db = context_exports.getAppDB();
24112
+ async function rawUserMetadata(db2) {
24113
+ if (!db2) {
24114
+ db2 = context_exports.getAppDB();
23956
24115
  }
23957
- return (await db.allDocs(
24116
+ return (await db2.allDocs(
23958
24117
  getUserMetadataParams2(null, {
23959
24118
  include_docs: true
23960
24119
  })
@@ -23962,22 +24121,22 @@ async function rawUserMetadata(db) {
23962
24121
  }
23963
24122
  async function syncGlobalUsers() {
23964
24123
  const dbs = [context_exports.getDevAppDB(), context_exports.getProdAppDB()];
23965
- for (let db of dbs) {
23966
- if (!await db.exists()) {
24124
+ for (let db2 of dbs) {
24125
+ if (!await db2.exists()) {
23967
24126
  continue;
23968
24127
  }
23969
- const resp = await Promise.all([getGlobalUsers(), rawUserMetadata(db)]);
24128
+ const resp = await Promise.all([getGlobalUsers(), rawUserMetadata(db2)]);
23970
24129
  const users2 = resp[0];
23971
- const metadata = resp[1];
24130
+ const metadata2 = resp[1];
23972
24131
  const toWrite = [];
23973
24132
  for (let user of users2) {
23974
- const combined = combineMetadataAndUser(user, metadata);
24133
+ const combined = combineMetadataAndUser(user, metadata2);
23975
24134
  if (combined) {
23976
24135
  toWrite.push(combined);
23977
24136
  }
23978
24137
  }
23979
24138
  let foundEmails = [];
23980
- for (let data of metadata) {
24139
+ for (let data of metadata2) {
23981
24140
  if (!data._id) {
23982
24141
  continue;
23983
24142
  }
@@ -23990,7 +24149,7 @@ async function syncGlobalUsers() {
23990
24149
  foundEmails.push(data.email);
23991
24150
  }
23992
24151
  }
23993
- await db.bulkDocs(toWrite);
24152
+ await db2.bulkDocs(toWrite);
23994
24153
  }
23995
24154
  }
23996
24155
 
@@ -24051,8 +24210,8 @@ var clientAppSocket;
24051
24210
 
24052
24211
  // src/sdk/plugins/plugins.ts
24053
24212
  async function fetch17(type) {
24054
- const db = tenancy.getGlobalDB();
24055
- const response = await db.allDocs(
24213
+ const db2 = tenancy.getGlobalDB();
24214
+ const response = await db2.allDocs(
24056
24215
  db_exports.getPluginParams(null, {
24057
24216
  include_docs: true
24058
24217
  })
@@ -24068,16 +24227,16 @@ async function fetch17(type) {
24068
24227
  return plugins2;
24069
24228
  }
24070
24229
  }
24071
- async function processUploaded(plugin, source) {
24230
+ async function processUploaded(plugin, source2) {
24072
24231
  var _a, _b;
24073
- const { metadata, directory } = await fileUpload(plugin);
24074
- plugin_exports.validate(metadata == null ? void 0 : metadata.schema);
24075
- if (!environment_default.SELF_HOSTED && ((_a = metadata == null ? void 0 : metadata.schema) == null ? void 0 : _a.type) !== "component" /* COMPONENT */) {
24232
+ const { metadata: metadata2, directory: directory2 } = await fileUpload(plugin);
24233
+ plugin_exports.validate(metadata2 == null ? void 0 : metadata2.schema);
24234
+ if (!environment_default.SELF_HOSTED && ((_a = metadata2 == null ? void 0 : metadata2.schema) == null ? void 0 : _a.type) !== "component" /* COMPONENT */) {
24076
24235
  throw new Error("Only component plugins are supported outside of self-host");
24077
24236
  }
24078
- const doc = await sdk_exports.plugins.storePlugin(metadata, directory, source);
24079
- (_b = clientAppSocket) == null ? void 0 : _b.emit("plugin-update", { name: doc.name, hash: doc.hash });
24080
- return doc;
24237
+ const doc2 = await sdk_exports.plugins.storePlugin(metadata2, directory2, source2);
24238
+ (_b = clientAppSocket) == null ? void 0 : _b.emit("plugin-update", { name: doc2.name, hash: doc2.hash });
24239
+ return doc2;
24081
24240
  }
24082
24241
 
24083
24242
  // src/sdk/plugins/index.ts
@@ -24141,13 +24300,13 @@ if (process.arch && !process.arch.startsWith("arm") && oracle_default.integratio
24141
24300
  DEFINITIONS2["ORACLE" /* ORACLE */] = oracle_default.schema;
24142
24301
  INTEGRATIONS["ORACLE" /* ORACLE */] = oracle_default.integration;
24143
24302
  }
24144
- async function getDefinition(source) {
24145
- const definition = DEFINITIONS2[source];
24303
+ async function getDefinition(source2) {
24304
+ const definition = DEFINITIONS2[source2];
24146
24305
  if (definition) {
24147
24306
  return definition;
24148
24307
  }
24149
24308
  const allDefinitions = await getDefinitions();
24150
- return allDefinitions[source];
24309
+ return allDefinitions[source2];
24151
24310
  }
24152
24311
  async function getDefinitions() {
24153
24312
  const pluginSchemas = {};
@@ -24350,8 +24509,8 @@ var QueryRunner = class {
24350
24509
  return { rows: rows2, keys: keys2, info, extra, pagination: pagination3 };
24351
24510
  }
24352
24511
  async runAnotherQuery(queryId, parameters) {
24353
- const db = context_exports.getAppDB();
24354
- const query = await db.get(queryId);
24512
+ const db2 = context_exports.getAppDB();
24513
+ const query = await db2.get(queryId);
24355
24514
  const datasource2 = await sdk_default.datasources.get(query.datasourceId, {
24356
24515
  enriched: true
24357
24516
  });
@@ -24393,14 +24552,14 @@ var QueryRunner = class {
24393
24552
  }
24394
24553
  async getDynamicVariable(variable) {
24395
24554
  let { parameters } = this;
24396
- const queryId = variable.queryId, name = variable.name;
24397
- let value = await utils_default.checkCacheForDynamicVariable(queryId, name);
24555
+ const queryId = variable.queryId, name2 = variable.name;
24556
+ let value = await utils_default.checkCacheForDynamicVariable(queryId, name2);
24398
24557
  if (!value) {
24399
24558
  value = this.queryResponse[queryId] ? this.queryResponse[queryId] : await this.runAnotherQuery(queryId, parameters);
24400
24559
  this.queryResponse[queryId] = value;
24401
- await utils_default.storeDynamicVariable(queryId, name, value);
24560
+ await utils_default.storeDynamicVariable(queryId, name2, value);
24402
24561
  } else {
24403
- this.cachedVariables.push({ queryId, name });
24562
+ this.cachedVariables.push({ queryId, name: name2 });
24404
24563
  }
24405
24564
  return value;
24406
24565
  }