@budibase/backend-core 2.30.2 → 2.30.4

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.
Files changed (66) hide show
  1. package/dist/index.js +371 -169
  2. package/dist/index.js.map +3 -3
  3. package/dist/index.js.meta.json +1 -1
  4. package/dist/package.json +5 -5
  5. package/dist/plugins.js +1 -0
  6. package/dist/plugins.js.map +2 -2
  7. package/dist/plugins.js.meta.json +1 -1
  8. package/dist/src/context/mainContext.d.ts +2 -0
  9. package/dist/src/context/mainContext.js +19 -0
  10. package/dist/src/context/mainContext.js.map +1 -1
  11. package/dist/src/context/types.d.ts +3 -0
  12. package/dist/src/environment.d.ts +4 -0
  13. package/dist/src/environment.js +27 -1
  14. package/dist/src/environment.js.map +1 -1
  15. package/dist/src/events/processors/posthog/PosthogProcessor.d.ts +1 -1
  16. package/dist/src/events/processors/posthog/PosthogProcessor.js +2 -2
  17. package/dist/src/events/processors/posthog/PosthogProcessor.js.map +1 -1
  18. package/dist/src/features/index.d.ts +30 -28
  19. package/dist/src/features/index.js +200 -79
  20. package/dist/src/features/index.js.map +1 -1
  21. package/dist/src/index.d.ts +3 -1
  22. package/dist/src/index.js +3 -1
  23. package/dist/src/index.js.map +1 -1
  24. package/dist/src/redis/redis.d.ts +1 -0
  25. package/dist/src/redis/redis.js +4 -0
  26. package/dist/src/redis/redis.js.map +1 -1
  27. package/dist/src/security/auth.js +1 -1
  28. package/dist/src/security/auth.js.map +1 -1
  29. package/dist/src/sql/sqlTable.js +23 -8
  30. package/dist/src/sql/sqlTable.js.map +1 -1
  31. package/dist/tests/core/utilities/mocks/index.d.ts +0 -2
  32. package/dist/tests/core/utilities/mocks/index.js +1 -7
  33. package/dist/tests/core/utilities/mocks/index.js.map +1 -1
  34. package/dist/tests/core/utilities/structures/users.js +1 -1
  35. package/dist/tests/core/utilities/structures/users.js.map +1 -1
  36. package/dist/tests/jestSetup.js +7 -2
  37. package/dist/tests/jestSetup.js.map +1 -1
  38. package/package.json +5 -5
  39. package/src/context/mainContext.ts +19 -0
  40. package/src/context/tests/index.spec.ts +1 -1
  41. package/src/context/types.ts +3 -0
  42. package/src/environment.ts +29 -0
  43. package/src/events/processors/posthog/PosthogProcessor.ts +1 -1
  44. package/src/events/processors/posthog/tests/PosthogProcessor.spec.ts +16 -22
  45. package/src/features/index.ts +242 -80
  46. package/src/features/tests/features.spec.ts +209 -63
  47. package/src/index.ts +1 -1
  48. package/src/middleware/passport/sso/tests/oidc.spec.ts +4 -12
  49. package/src/middleware/passport/sso/tests/sso.spec.ts +10 -12
  50. package/src/plugin/tests/validation.spec.ts +168 -42
  51. package/src/redis/redis.ts +4 -0
  52. package/src/redis/tests/redis.spec.ts +6 -3
  53. package/src/security/auth.ts +1 -1
  54. package/src/security/tests/auth.spec.ts +2 -2
  55. package/src/sql/sqlTable.ts +21 -7
  56. package/tests/core/utilities/mocks/index.ts +0 -2
  57. package/tests/core/utilities/structures/users.ts +1 -1
  58. package/tests/jestSetup.ts +10 -3
  59. package/dist/tests/core/utilities/mocks/fetch.d.ts +0 -32
  60. package/dist/tests/core/utilities/mocks/fetch.js +0 -15
  61. package/dist/tests/core/utilities/mocks/fetch.js.map +0 -1
  62. package/dist/tests/core/utilities/mocks/posthog.d.ts +0 -0
  63. package/dist/tests/core/utilities/mocks/posthog.js +0 -9
  64. package/dist/tests/core/utilities/mocks/posthog.js.map +0 -1
  65. package/tests/core/utilities/mocks/fetch.ts +0 -17
  66. package/tests/core/utilities/mocks/posthog.ts +0 -7
package/dist/index.js CHANGED
@@ -4190,7 +4190,7 @@ var require_lib3 = __commonJS({
4190
4190
  var require_utils = __commonJS({
4191
4191
  "../../node_modules/@techpass/passport-openidconnect/lib/utils.js"(exports) {
4192
4192
  "use strict";
4193
- var crypto2 = require("crypto");
4193
+ var crypto3 = require("crypto");
4194
4194
  exports.originalURL = function(req, options2) {
4195
4195
  options2 = options2 || {};
4196
4196
  var app = req.app;
@@ -4210,7 +4210,7 @@ var require_utils = __commonJS({
4210
4210
  return a;
4211
4211
  };
4212
4212
  exports.uid = function(len) {
4213
- return crypto2.randomBytes(Math.ceil(len * 3 / 4)).toString("base64").slice(0, len);
4213
+ return crypto3.randomBytes(Math.ceil(len * 3 / 4)).toString("base64").slice(0, len);
4214
4214
  };
4215
4215
  }
4216
4216
  });
@@ -4381,7 +4381,7 @@ var require_utils2 = __commonJS({
4381
4381
  var require_oauth = __commonJS({
4382
4382
  "../../node_modules/oauth/lib/oauth.js"(exports) {
4383
4383
  "use strict";
4384
- var crypto2 = require("crypto");
4384
+ var crypto3 = require("crypto");
4385
4385
  var sha1 = require_sha1();
4386
4386
  var http = require("http");
4387
4387
  var https = require("https");
@@ -4553,10 +4553,10 @@ var require_oauth = __commonJS({
4553
4553
  hash2 = key;
4554
4554
  } else if (this._signatureMethod == "RSA-SHA1") {
4555
4555
  key = this._privateKey || "";
4556
- hash2 = crypto2.createSign("RSA-SHA1").update(signatureBase).sign(key, "base64");
4556
+ hash2 = crypto3.createSign("RSA-SHA1").update(signatureBase).sign(key, "base64");
4557
4557
  } else {
4558
- if (crypto2.Hmac) {
4559
- hash2 = crypto2.createHmac("sha1", key).update(signatureBase).digest("base64");
4558
+ if (crypto3.Hmac) {
4559
+ hash2 = crypto3.createHmac("sha1", key).update(signatureBase).digest("base64");
4560
4560
  } else {
4561
4561
  hash2 = sha1.HMACSHA1(key, signatureBase);
4562
4562
  }
@@ -4910,7 +4910,7 @@ var require_oauth2 = __commonJS({
4910
4910
  "../../node_modules/oauth/lib/oauth2.js"(exports) {
4911
4911
  "use strict";
4912
4912
  var querystring = require("querystring");
4913
- var crypto2 = require("crypto");
4913
+ var crypto3 = require("crypto");
4914
4914
  var https = require("https");
4915
4915
  var http = require("http");
4916
4916
  var URL2 = require("url");
@@ -16326,7 +16326,7 @@ var require_helpers = __commonJS({
16326
16326
  "../../node_modules/request/lib/helpers.js"(exports) {
16327
16327
  "use strict";
16328
16328
  var jsonSafeStringify = require_stringify();
16329
- var crypto2 = require("crypto");
16329
+ var crypto3 = require("crypto");
16330
16330
  var Buffer2 = require_safe_buffer().Buffer;
16331
16331
  var defer = typeof setImmediate === "undefined" ? process.nextTick : setImmediate;
16332
16332
  function paramsHaveRequestBody(params2) {
@@ -16342,7 +16342,7 @@ var require_helpers = __commonJS({
16342
16342
  return ret;
16343
16343
  }
16344
16344
  function md5(str) {
16345
- return crypto2.createHash("md5").update(str).digest("hex");
16345
+ return crypto3.createHash("md5").update(str).digest("hex");
16346
16346
  }
16347
16347
  function isReadStream(rs) {
16348
16348
  return rs.readable && rs.path && rs.mode;
@@ -16380,7 +16380,7 @@ var require_helpers = __commonJS({
16380
16380
  var require_aws_sign2 = __commonJS({
16381
16381
  "../../node_modules/aws-sign2/index.js"(exports, module2) {
16382
16382
  "use strict";
16383
- var crypto2 = require("crypto");
16383
+ var crypto3 = require("crypto");
16384
16384
  var parse = require("url").parse;
16385
16385
  var keys2 = [
16386
16386
  "acl",
@@ -16404,7 +16404,7 @@ var require_aws_sign2 = __commonJS({
16404
16404
  module2.exports = authorization;
16405
16405
  module2.exports.authorization = authorization;
16406
16406
  function hmacSha1(options2) {
16407
- return crypto2.createHmac("sha1", options2.secret).update(options2.message).digest("base64");
16407
+ return crypto3.createHmac("sha1", options2.secret).update(options2.message).digest("base64");
16408
16408
  }
16409
16409
  module2.exports.hmacSha1 = hmacSha1;
16410
16410
  function sign(options2) {
@@ -16560,14 +16560,14 @@ var require_aws4 = __commonJS({
16560
16560
  var aws4 = exports;
16561
16561
  var url = require("url");
16562
16562
  var querystring = require("querystring");
16563
- var crypto2 = require("crypto");
16563
+ var crypto3 = require("crypto");
16564
16564
  var lru = require_lru();
16565
16565
  var credentialsCache = lru(1e3);
16566
16566
  function hmac(key, string, encoding) {
16567
- return crypto2.createHmac("sha256", key).update(string, "utf8").digest(encoding);
16567
+ return crypto3.createHmac("sha256", key).update(string, "utf8").digest(encoding);
16568
16568
  }
16569
16569
  function hash2(string, encoding) {
16570
- return crypto2.createHash("sha256").update(string, "utf8").digest(encoding);
16570
+ return crypto3.createHash("sha256").update(string, "utf8").digest(encoding);
16571
16571
  }
16572
16572
  function encodeRfc3986(urlEncodedString) {
16573
16573
  return urlEncodedString.replace(/[!'()*]/g, function(c) {
@@ -19623,11 +19623,11 @@ var require_nacl_fast = __commonJS({
19623
19623
  "use strict";
19624
19624
  (function(nacl) {
19625
19625
  "use strict";
19626
- var gf = function(init10) {
19626
+ var gf = function(init11) {
19627
19627
  var i, r = new Float64Array(16);
19628
- if (init10)
19629
- for (i = 0; i < init10.length; i++)
19630
- r[i] = init10[i];
19628
+ if (init11)
19629
+ for (i = 0; i < init11.length; i++)
19630
+ r[i] = init11[i];
19631
19631
  return r;
19632
19632
  };
19633
19633
  var randombytes = function() {
@@ -21887,23 +21887,23 @@ var require_nacl_fast = __commonJS({
21887
21887
  randombytes = fn;
21888
21888
  };
21889
21889
  (function() {
21890
- var crypto2 = typeof self !== "undefined" ? self.crypto || self.msCrypto : null;
21891
- if (crypto2 && crypto2.getRandomValues) {
21890
+ var crypto3 = typeof self !== "undefined" ? self.crypto || self.msCrypto : null;
21891
+ if (crypto3 && crypto3.getRandomValues) {
21892
21892
  var QUOTA = 65536;
21893
21893
  nacl.setPRNG(function(x, n) {
21894
21894
  var i, v = new Uint8Array(n);
21895
21895
  for (i = 0; i < n; i += QUOTA) {
21896
- crypto2.getRandomValues(v.subarray(i, i + Math.min(n - i, QUOTA)));
21896
+ crypto3.getRandomValues(v.subarray(i, i + Math.min(n - i, QUOTA)));
21897
21897
  }
21898
21898
  for (i = 0; i < n; i++)
21899
21899
  x[i] = v[i];
21900
21900
  cleanup3(v);
21901
21901
  });
21902
21902
  } else if (typeof require !== "undefined") {
21903
- crypto2 = require("crypto");
21904
- if (crypto2 && crypto2.randomBytes) {
21903
+ crypto3 = require("crypto");
21904
+ if (crypto3 && crypto3.randomBytes) {
21905
21905
  nacl.setPRNG(function(x, n) {
21906
- var i, v = crypto2.randomBytes(n);
21906
+ var i, v = crypto3.randomBytes(n);
21907
21907
  for (i = 0; i < n; i++)
21908
21908
  x[i] = v[i];
21909
21909
  cleanup3(v);
@@ -21943,7 +21943,7 @@ var require_utils3 = __commonJS({
21943
21943
  var Buffer2 = require_safer().Buffer;
21944
21944
  var PrivateKey = require_private_key();
21945
21945
  var Key = require_key();
21946
- var crypto2 = require("crypto");
21946
+ var crypto3 = require("crypto");
21947
21947
  var algs = require_algs();
21948
21948
  var asn1 = require_lib4();
21949
21949
  var ec = require_ec();
@@ -22027,7 +22027,7 @@ var require_utils3 = __commonJS({
22027
22027
  bufs.push(salt);
22028
22028
  D = Buffer2.concat(bufs);
22029
22029
  for (var j = 0; j < count; ++j)
22030
- D = crypto2.createHash("md5").update(D).digest();
22030
+ D = crypto3.createHash("md5").update(D).digest();
22031
22031
  material = Buffer2.concat([material, D]);
22032
22032
  D_prev = D;
22033
22033
  }
@@ -22049,13 +22049,13 @@ var require_utils3 = __commonJS({
22049
22049
  return Buffer2.concat(ts).slice(0, size);
22050
22050
  function T(I) {
22051
22051
  hkey.writeUInt32BE(I, hkey.length - 4);
22052
- var hmac = crypto2.createHmac(hashAlg, passphrase);
22052
+ var hmac = crypto3.createHmac(hashAlg, passphrase);
22053
22053
  hmac.update(hkey);
22054
22054
  var Ti = hmac.digest();
22055
22055
  var Uc = Ti;
22056
22056
  var c = 1;
22057
22057
  while (c++ < iterations) {
22058
- hmac = crypto2.createHmac(hashAlg, passphrase);
22058
+ hmac = crypto3.createHmac(hashAlg, passphrase);
22059
22059
  hmac.update(Uc);
22060
22060
  Uc = hmac.digest();
22061
22061
  for (var x = 0; x < Ti.length; ++x)
@@ -22426,7 +22426,7 @@ var require_signature = __commonJS({
22426
22426
  var assert = require_assert();
22427
22427
  var Buffer2 = require_safer().Buffer;
22428
22428
  var algs = require_algs();
22429
- var crypto2 = require("crypto");
22429
+ var crypto3 = require("crypto");
22430
22430
  var errs = require_errors();
22431
22431
  var utils = require_utils3();
22432
22432
  var asn1 = require_lib4();
@@ -22806,7 +22806,7 @@ var require_sec = __commonJS({
22806
22806
  var require_ecc_jsbn = __commonJS({
22807
22807
  "../../node_modules/ecc-jsbn/index.js"(exports) {
22808
22808
  "use strict";
22809
- var crypto2 = require("crypto");
22809
+ var crypto3 = require("crypto");
22810
22810
  var BigInteger = require_jsbn().BigInteger;
22811
22811
  var ECPointFp = require_ec().ECPointFp;
22812
22812
  var Buffer2 = require_safer().Buffer;
@@ -22830,7 +22830,7 @@ var require_ecc_jsbn = __commonJS({
22830
22830
  }
22831
22831
  } else {
22832
22832
  var n1 = n.subtract(BigInteger.ONE);
22833
- var r = new BigInteger(crypto2.randomBytes(n.bitLength()));
22833
+ var r = new BigInteger(crypto3.randomBytes(n.bitLength()));
22834
22834
  priv = r.mod(n1).add(BigInteger.ONE);
22835
22835
  this.P = c.getG().multiply(priv);
22836
22836
  }
@@ -22860,14 +22860,14 @@ var require_dhe = __commonJS({
22860
22860
  generateED25519
22861
22861
  };
22862
22862
  var assert = require_assert();
22863
- var crypto2 = require("crypto");
22863
+ var crypto3 = require("crypto");
22864
22864
  var Buffer2 = require_safer().Buffer;
22865
22865
  var algs = require_algs();
22866
22866
  var utils = require_utils3();
22867
22867
  var nacl = require_nacl_fast();
22868
22868
  var Key = require_key();
22869
22869
  var PrivateKey = require_private_key();
22870
- var CRYPTO_HAVE_ECDH = crypto2.createECDH !== void 0;
22870
+ var CRYPTO_HAVE_ECDH = crypto3.createECDH !== void 0;
22871
22871
  var ecdh = require_ecc_jsbn();
22872
22872
  var ec = require_ec();
22873
22873
  var jsbn = require_jsbn().BigInteger;
@@ -22881,7 +22881,7 @@ var require_dhe = __commonJS({
22881
22881
  if (!CRYPTO_HAVE_ECDH) {
22882
22882
  throw new Error("Due to bugs in the node 0.10 crypto API, node 0.12.x or later is required to use DH");
22883
22883
  }
22884
- this._dh = crypto2.createDiffieHellman(
22884
+ this._dh = crypto3.createDiffieHellman(
22885
22885
  key.part.p.data,
22886
22886
  void 0,
22887
22887
  key.part.g.data,
@@ -22908,7 +22908,7 @@ var require_dhe = __commonJS({
22908
22908
  "nistp384": "secp384r1",
22909
22909
  "nistp521": "secp521r1"
22910
22910
  }[key.curve];
22911
- this._dh = crypto2.createECDH(curve);
22911
+ this._dh = crypto3.createECDH(curve);
22912
22912
  if (typeof this._dh !== "object" || typeof this._dh.setPrivateKey !== "function") {
22913
22913
  CRYPTO_HAVE_ECDH = false;
22914
22914
  DiffieHellman.call(this, key);
@@ -23060,7 +23060,7 @@ var require_dhe = __commonJS({
23060
23060
  return this._key;
23061
23061
  } else {
23062
23062
  var n = this._ecParams.getN();
23063
- var r = new jsbn(crypto2.randomBytes(n.bitLength()));
23063
+ var r = new jsbn(crypto3.randomBytes(n.bitLength()));
23064
23064
  var n1 = n.subtract(jsbn.ONE);
23065
23065
  priv = r.mod(n1).add(jsbn.ONE);
23066
23066
  pub = this._ecParams.getG().multiply(priv);
@@ -23166,7 +23166,7 @@ var require_dhe = __commonJS({
23166
23166
  "nistp384": "secp384r1",
23167
23167
  "nistp521": "secp521r1"
23168
23168
  }[curve];
23169
- var dh = crypto2.createECDH(osCurve);
23169
+ var dh = crypto3.createECDH(osCurve);
23170
23170
  dh.generateKeys();
23171
23171
  parts.push({
23172
23172
  name: "curve",
@@ -23184,7 +23184,7 @@ var require_dhe = __commonJS({
23184
23184
  var ecParams = new X9ECParameters(curve);
23185
23185
  var n = ecParams.getN();
23186
23186
  var cByteLen = Math.ceil((n.bitLength() + 64) / 8);
23187
- var c = new jsbn(crypto2.randomBytes(cByteLen));
23187
+ var c = new jsbn(crypto3.randomBytes(cByteLen));
23188
23188
  var n1 = n.subtract(jsbn.ONE);
23189
23189
  var priv = c.mod(n1).add(jsbn.ONE);
23190
23190
  var pub = ecParams.getG().multiply(priv);
@@ -25521,7 +25521,7 @@ var require_ssh_private = __commonJS({
25521
25521
  var Buffer2 = require_safer().Buffer;
25522
25522
  var algs = require_algs();
25523
25523
  var utils = require_utils3();
25524
- var crypto2 = require("crypto");
25524
+ var crypto3 = require("crypto");
25525
25525
  var Key = require_key();
25526
25526
  var PrivateKey = require_private_key();
25527
25527
  var pem = require_pem();
@@ -25595,7 +25595,7 @@ var require_ssh_private = __commonJS({
25595
25595
  out = Buffer2.from(out);
25596
25596
  var ckey = out.slice(0, cinf.keySize);
25597
25597
  var iv = out.slice(cinf.keySize, cinf.keySize + cinf.blockSize);
25598
- var cipherStream = crypto2.createDecipheriv(
25598
+ var cipherStream = crypto3.createDecipheriv(
25599
25599
  cinf.opensslName,
25600
25600
  ckey,
25601
25601
  iv
@@ -25660,7 +25660,7 @@ var require_ssh_private = __commonJS({
25660
25660
  var privBuf;
25661
25661
  if (PrivateKey.isPrivateKey(key)) {
25662
25662
  privBuf = new SSHBuffer({});
25663
- var checkInt = crypto2.randomBytes(4).readUInt32BE(0);
25663
+ var checkInt = crypto3.randomBytes(4).readUInt32BE(0);
25664
25664
  privBuf.writeInt(checkInt);
25665
25665
  privBuf.writeInt(checkInt);
25666
25666
  privBuf.write(key.toBuffer("rfc4253"));
@@ -25674,7 +25674,7 @@ var require_ssh_private = __commonJS({
25674
25674
  case "none":
25675
25675
  break;
25676
25676
  case "bcrypt":
25677
- var salt = crypto2.randomBytes(16);
25677
+ var salt = crypto3.randomBytes(16);
25678
25678
  var rounds = 16;
25679
25679
  var kdfssh = new SSHBuffer({});
25680
25680
  kdfssh.writeBuffer(salt);
@@ -25701,7 +25701,7 @@ var require_ssh_private = __commonJS({
25701
25701
  out = Buffer2.from(out);
25702
25702
  var ckey = out.slice(0, cinf.keySize);
25703
25703
  var iv = out.slice(cinf.keySize, cinf.keySize + cinf.blockSize);
25704
- var cipherStream = crypto2.createCipheriv(
25704
+ var cipherStream = crypto3.createCipheriv(
25705
25705
  cinf.opensslName,
25706
25706
  ckey,
25707
25707
  iv
@@ -25764,7 +25764,7 @@ var require_pem = __commonJS({
25764
25764
  };
25765
25765
  var assert = require_assert();
25766
25766
  var asn1 = require_lib4();
25767
- var crypto2 = require("crypto");
25767
+ var crypto3 = require("crypto");
25768
25768
  var Buffer2 = require_safer().Buffer;
25769
25769
  var algs = require_algs();
25770
25770
  var utils = require_utils3();
@@ -25932,7 +25932,7 @@ var require_pem = __commonJS({
25932
25932
  alg = void 0;
25933
25933
  }
25934
25934
  if (cipher && key && iv) {
25935
- var cipherStream = crypto2.createDecipheriv(cipher, key, iv);
25935
+ var cipherStream = crypto3.createDecipheriv(cipher, key, iv);
25936
25936
  var chunk, chunks = [];
25937
25937
  cipherStream.once("error", function(e) {
25938
25938
  if (e.toString().indexOf("bad decrypt") !== -1) {
@@ -26360,7 +26360,7 @@ var require_putty = __commonJS({
26360
26360
  var rfc4253 = require_rfc4253();
26361
26361
  var Key = require_key();
26362
26362
  var SSHBuffer = require_ssh_buffer();
26363
- var crypto2 = require("crypto");
26363
+ var crypto3 = require("crypto");
26364
26364
  var PrivateKey = require_private_key();
26365
26365
  var errors = require_errors();
26366
26366
  function read(buf, options2) {
@@ -26430,7 +26430,7 @@ var require_putty = __commonJS({
26430
26430
  );
26431
26431
  }
26432
26432
  var iv = Buffer2.alloc(16, 0);
26433
- var decipher = crypto2.createDecipheriv(
26433
+ var decipher = crypto3.createDecipheriv(
26434
26434
  "aes-256-cbc",
26435
26435
  derivePPK2EncryptionKey(options2.passphrase),
26436
26436
  iv
@@ -26481,11 +26481,11 @@ var require_putty = __commonJS({
26481
26481
  return key;
26482
26482
  }
26483
26483
  function derivePPK2EncryptionKey(passphrase) {
26484
- var hash1 = crypto2.createHash("sha1").update(Buffer2.concat([
26484
+ var hash1 = crypto3.createHash("sha1").update(Buffer2.concat([
26485
26485
  Buffer2.from([0, 0, 0, 0]),
26486
26486
  Buffer2.from(passphrase)
26487
26487
  ])).digest();
26488
- var hash2 = crypto2.createHash("sha1").update(Buffer2.concat([
26488
+ var hash2 = crypto3.createHash("sha1").update(Buffer2.concat([
26489
26489
  Buffer2.from([0, 0, 0, 1]),
26490
26490
  Buffer2.from(passphrase)
26491
26491
  ])).digest();
@@ -26641,7 +26641,7 @@ var require_private_key = __commonJS({
26641
26641
  var assert = require_assert();
26642
26642
  var Buffer2 = require_safer().Buffer;
26643
26643
  var algs = require_algs();
26644
- var crypto2 = require("crypto");
26644
+ var crypto3 = require("crypto");
26645
26645
  var Fingerprint = require_fingerprint();
26646
26646
  var Signature = require_signature();
26647
26647
  var errs = require_errors();
@@ -26752,14 +26752,14 @@ var require_private_key = __commonJS({
26752
26752
  var v, nm, err;
26753
26753
  try {
26754
26754
  nm = hashAlgo.toUpperCase();
26755
- v = crypto2.createSign(nm);
26755
+ v = crypto3.createSign(nm);
26756
26756
  } catch (e) {
26757
26757
  err = e;
26758
26758
  }
26759
26759
  if (v === void 0 || err instanceof Error && err.message.match(/Unknown message digest/)) {
26760
26760
  nm = "RSA-";
26761
26761
  nm += hashAlgo.toUpperCase();
26762
- v = crypto2.createSign(nm);
26762
+ v = crypto3.createSign(nm);
26763
26763
  }
26764
26764
  assert.ok(v, "failed to create verifier");
26765
26765
  var oldSign = v.sign.bind(v);
@@ -26845,7 +26845,7 @@ var require_identity = __commonJS({
26845
26845
  module2.exports = Identity6;
26846
26846
  var assert = require_assert();
26847
26847
  var algs = require_algs();
26848
- var crypto2 = require("crypto");
26848
+ var crypto3 = require("crypto");
26849
26849
  var Fingerprint = require_fingerprint();
26850
26850
  var Signature = require_signature();
26851
26851
  var errs = require_errors();
@@ -27163,7 +27163,7 @@ var require_openssh_cert = __commonJS({
27163
27163
  };
27164
27164
  var assert = require_assert();
27165
27165
  var SSHBuffer = require_ssh_buffer();
27166
- var crypto2 = require("crypto");
27166
+ var crypto3 = require("crypto");
27167
27167
  var Buffer2 = require_safer().Buffer;
27168
27168
  var algs = require_algs();
27169
27169
  var Key = require_key();
@@ -27352,7 +27352,7 @@ var require_openssh_cert = __commonJS({
27352
27352
  assert.object(cert.signatures.openssh, "signature for openssh format");
27353
27353
  var sig = cert.signatures.openssh;
27354
27354
  if (sig.nonce === void 0)
27355
- sig.nonce = crypto2.randomBytes(16);
27355
+ sig.nonce = crypto3.randomBytes(16);
27356
27356
  var buf = new SSHBuffer({});
27357
27357
  buf.writeString(getCertType(cert.subjectKey));
27358
27358
  buf.writeBuffer(sig.nonce);
@@ -28158,7 +28158,7 @@ var require_certificate = __commonJS({
28158
28158
  var assert = require_assert();
28159
28159
  var Buffer2 = require_safer().Buffer;
28160
28160
  var algs = require_algs();
28161
- var crypto2 = require("crypto");
28161
+ var crypto3 = require("crypto");
28162
28162
  var Fingerprint = require_fingerprint();
28163
28163
  var Signature = require_signature();
28164
28164
  var errs = require_errors();
@@ -28245,7 +28245,7 @@ var require_certificate = __commonJS({
28245
28245
  throw new InvalidAlgorithmError(algo);
28246
28246
  if (this._hashCache[algo])
28247
28247
  return this._hashCache[algo];
28248
- var hash2 = crypto2.createHash(algo).update(this.toBuffer("x509")).digest();
28248
+ var hash2 = crypto3.createHash(algo).update(this.toBuffer("x509")).digest();
28249
28249
  this._hashCache[algo] = hash2;
28250
28250
  return hash2;
28251
28251
  };
@@ -28516,7 +28516,7 @@ var require_fingerprint = __commonJS({
28516
28516
  var assert = require_assert();
28517
28517
  var Buffer2 = require_safer().Buffer;
28518
28518
  var algs = require_algs();
28519
- var crypto2 = require("crypto");
28519
+ var crypto3 = require("crypto");
28520
28520
  var errs = require_errors();
28521
28521
  var Key = require_key();
28522
28522
  var PrivateKey = require_private_key();
@@ -28583,9 +28583,9 @@ var require_fingerprint = __commonJS({
28583
28583
  );
28584
28584
  }
28585
28585
  var theirHash = other.hash(this.algorithm, this.hashType);
28586
- var theirHash2 = crypto2.createHash(this.algorithm).update(theirHash).digest("base64");
28586
+ var theirHash2 = crypto3.createHash(this.algorithm).update(theirHash).digest("base64");
28587
28587
  if (this.hash2 === void 0)
28588
- this.hash2 = crypto2.createHash(this.algorithm).update(this.hash).digest("base64");
28588
+ this.hash2 = crypto3.createHash(this.algorithm).update(this.hash).digest("base64");
28589
28589
  return this.hash2 === theirHash2;
28590
28590
  };
28591
28591
  var base64RE = /^[A-Za-z0-9+\/=]+$/;
@@ -28711,7 +28711,7 @@ var require_key = __commonJS({
28711
28711
  module2.exports = Key;
28712
28712
  var assert = require_assert();
28713
28713
  var algs = require_algs();
28714
- var crypto2 = require("crypto");
28714
+ var crypto3 = require("crypto");
28715
28715
  var Fingerprint = require_fingerprint();
28716
28716
  var Signature = require_signature();
28717
28717
  var DiffieHellman = require_dhe().DiffieHellman;
@@ -28809,7 +28809,7 @@ var require_key = __commonJS({
28809
28809
  } else {
28810
28810
  throw new Error("Hash type " + type + " not supported");
28811
28811
  }
28812
- var hash2 = crypto2.createHash(algo).update(buf).digest();
28812
+ var hash2 = crypto3.createHash(algo).update(buf).digest();
28813
28813
  this._hashCache[cacheKey] = hash2;
28814
28814
  return hash2;
28815
28815
  };
@@ -28857,14 +28857,14 @@ var require_key = __commonJS({
28857
28857
  var v, nm, err;
28858
28858
  try {
28859
28859
  nm = hashAlgo.toUpperCase();
28860
- v = crypto2.createVerify(nm);
28860
+ v = crypto3.createVerify(nm);
28861
28861
  } catch (e) {
28862
28862
  err = e;
28863
28863
  }
28864
28864
  if (v === void 0 || err instanceof Error && err.message.match(/Unknown message digest/)) {
28865
28865
  nm = "RSA-";
28866
28866
  nm += hashAlgo.toUpperCase();
28867
- v = crypto2.createVerify(nm);
28867
+ v = crypto3.createVerify(nm);
28868
28868
  }
28869
28869
  assert.ok(v, "failed to create verifier");
28870
28870
  var oldVerify = v.verify.bind(v);
@@ -29351,7 +29351,7 @@ var require_extsprintf = __commonJS({
29351
29351
  ].join("");
29352
29352
  var re = new RegExp(regex);
29353
29353
  var args = Array.prototype.slice.call(arguments, 1);
29354
- var flags, width, precision, conversion2;
29354
+ var flags2, width, precision, conversion2;
29355
29355
  var left, pad, sign, arg, match;
29356
29356
  var ret = "";
29357
29357
  var argn = 1;
@@ -29359,7 +29359,7 @@ var require_extsprintf = __commonJS({
29359
29359
  while ((match = re.exec(fmt)) !== null) {
29360
29360
  ret += match[1];
29361
29361
  fmt = fmt.substring(match[0].length);
29362
- flags = match[2] || "";
29362
+ flags2 = match[2] || "";
29363
29363
  width = match[3] || 0;
29364
29364
  precision = match[4] || "";
29365
29365
  conversion2 = match[6];
@@ -29374,19 +29374,19 @@ var require_extsprintf = __commonJS({
29374
29374
  throw new Error("too few args to sprintf");
29375
29375
  arg = args.shift();
29376
29376
  argn++;
29377
- if (flags.match(/[\' #]/))
29377
+ if (flags2.match(/[\' #]/))
29378
29378
  throw new Error(
29379
- "unsupported flags: " + flags
29379
+ "unsupported flags: " + flags2
29380
29380
  );
29381
29381
  if (precision.length > 0)
29382
29382
  throw new Error(
29383
29383
  "non-zero precision not supported"
29384
29384
  );
29385
- if (flags.match(/-/))
29385
+ if (flags2.match(/-/))
29386
29386
  left = true;
29387
- if (flags.match(/0/))
29387
+ if (flags2.match(/0/))
29388
29388
  pad = "0";
29389
- if (flags.match(/\+/))
29389
+ if (flags2.match(/\+/))
29390
29390
  sign = true;
29391
29391
  switch (conversion2) {
29392
29392
  case "s":
@@ -29487,7 +29487,7 @@ var require_extsprintf2 = __commonJS({
29487
29487
  var re = new RegExp(regex);
29488
29488
  var args = Array.prototype.slice.call(arguments, 1);
29489
29489
  var fmt = ofmt;
29490
- var flags, width, precision, conversion2;
29490
+ var flags2, width, precision, conversion2;
29491
29491
  var left, pad, sign, arg, match;
29492
29492
  var ret = "";
29493
29493
  var argn = 1;
@@ -29505,7 +29505,7 @@ var require_extsprintf2 = __commonJS({
29505
29505
  curconv = match[0].substring(match[1].length);
29506
29506
  convposn = posn + match[1].length + 1;
29507
29507
  posn += match[0].length;
29508
- flags = match[2] || "";
29508
+ flags2 = match[2] || "";
29509
29509
  width = match[3] || 0;
29510
29510
  precision = match[4] || "";
29511
29511
  conversion2 = match[6];
@@ -29526,7 +29526,7 @@ var require_extsprintf2 = __commonJS({
29526
29526
  }
29527
29527
  arg = args.shift();
29528
29528
  argn++;
29529
- if (flags.match(/[\' #]/)) {
29529
+ if (flags2.match(/[\' #]/)) {
29530
29530
  throw jsError(
29531
29531
  ofmt,
29532
29532
  convposn,
@@ -29542,11 +29542,11 @@ var require_extsprintf2 = __commonJS({
29542
29542
  "uses non-zero precision (not supported)"
29543
29543
  );
29544
29544
  }
29545
- if (flags.match(/-/))
29545
+ if (flags2.match(/-/))
29546
29546
  left = true;
29547
- if (flags.match(/0/))
29547
+ if (flags2.match(/0/))
29548
29548
  pad = "0";
29549
- if (flags.match(/\+/))
29549
+ if (flags2.match(/\+/))
29550
29550
  sign = true;
29551
29551
  switch (conversion2) {
29552
29552
  case "s":
@@ -30669,7 +30669,7 @@ var require_signer = __commonJS({
30669
30669
  "../../node_modules/http-signature/lib/signer.js"(exports, module2) {
30670
30670
  "use strict";
30671
30671
  var assert = require_assert();
30672
- var crypto2 = require("crypto");
30672
+ var crypto3 = require("crypto");
30673
30673
  var http = require("http");
30674
30674
  var util = require("util");
30675
30675
  var sshpk = require_lib5();
@@ -30706,7 +30706,7 @@ var require_signer = __commonJS({
30706
30706
  this.rs_keyId = options2.keyId;
30707
30707
  if (typeof options2.key !== "string" && !Buffer.isBuffer(options2.key))
30708
30708
  throw new TypeError("options.key for HMAC must be a string or Buffer");
30709
- this.rs_signer = crypto2.createHmac(alg[1].toUpperCase(), options2.key);
30709
+ this.rs_signer = crypto3.createHmac(alg[1].toUpperCase(), options2.key);
30710
30710
  this.rs_signer.sign = function() {
30711
30711
  var digest = this.digest("base64");
30712
30712
  return {
@@ -30924,7 +30924,7 @@ var require_signer = __commonJS({
30924
30924
  if (alg[0] === "hmac") {
30925
30925
  if (typeof options2.key !== "string" && !Buffer.isBuffer(options2.key))
30926
30926
  throw new TypeError("options.key must be a string or Buffer");
30927
- var hmac = crypto2.createHmac(alg[1].toUpperCase(), options2.key);
30927
+ var hmac = crypto3.createHmac(alg[1].toUpperCase(), options2.key);
30928
30928
  hmac.update(stringToSign);
30929
30929
  signature = hmac.digest("base64");
30930
30930
  } else {
@@ -30970,7 +30970,7 @@ var require_verify = __commonJS({
30970
30970
  "../../node_modules/http-signature/lib/verify.js"(exports, module2) {
30971
30971
  "use strict";
30972
30972
  var assert = require_assert();
30973
- var crypto2 = require("crypto");
30973
+ var crypto3 = require("crypto");
30974
30974
  var sshpk = require_lib5();
30975
30975
  var utils = require_utils4();
30976
30976
  var HASH_ALGOS = utils.HASH_ALGOS;
@@ -31018,12 +31018,12 @@ var require_verify = __commonJS({
31018
31018
  if (alg[0] !== "hmac")
31019
31019
  return false;
31020
31020
  var hashAlg = alg[1].toUpperCase();
31021
- var hmac = crypto2.createHmac(hashAlg, secret);
31021
+ var hmac = crypto3.createHmac(hashAlg, secret);
31022
31022
  hmac.update(parsedSignature.signingString);
31023
- var h1 = crypto2.createHmac(hashAlg, secret);
31023
+ var h1 = crypto3.createHmac(hashAlg, secret);
31024
31024
  h1.update(hmac.digest());
31025
31025
  h1 = h1.digest();
31026
- var h2 = crypto2.createHmac(hashAlg, secret);
31026
+ var h2 = crypto3.createHmac(hashAlg, secret);
31027
31027
  h2.update(new Buffer(parsedSignature.params.signature, "base64"));
31028
31028
  h2 = h2.digest();
31029
31029
  if (typeof h1 === "string")
@@ -48976,12 +48976,12 @@ var require_auth = __commonJS({
48976
48976
  var require_oauth_sign = __commonJS({
48977
48977
  "../../node_modules/oauth-sign/index.js"(exports) {
48978
48978
  "use strict";
48979
- var crypto2 = require("crypto");
48979
+ var crypto3 = require("crypto");
48980
48980
  function sha(key, body2, algorithm) {
48981
- return crypto2.createHmac(algorithm, key).update(body2).digest("base64");
48981
+ return crypto3.createHmac(algorithm, key).update(body2).digest("base64");
48982
48982
  }
48983
48983
  function rsa(key, body2) {
48984
- return crypto2.createSign("RSA-SHA1").update(body2).sign(key, "base64");
48984
+ return crypto3.createSign("RSA-SHA1").update(body2).sign(key, "base64");
48985
48985
  }
48986
48986
  function rfc3986(str) {
48987
48987
  return encodeURIComponent(str).replace(/!/g, "%21").replace(/\*/g, "%2A").replace(/\(/g, "%28").replace(/\)/g, "%29").replace(/'/g, "%27");
@@ -49088,7 +49088,7 @@ var require_oauth4 = __commonJS({
49088
49088
  var caseless = require_caseless();
49089
49089
  var uuid2 = require("uuid/v4");
49090
49090
  var oauth = require_oauth_sign();
49091
- var crypto2 = require("crypto");
49091
+ var crypto3 = require("crypto");
49092
49092
  var Buffer2 = require_safe_buffer().Buffer;
49093
49093
  function OAuth(request) {
49094
49094
  this.request = request;
@@ -49140,7 +49140,7 @@ var require_oauth4 = __commonJS({
49140
49140
  if (["HMAC-SHA1", "RSA-SHA1"].indexOf(_oauth.signature_method || "HMAC-SHA1") < 0) {
49141
49141
  this.request.emit("error", new Error("oauth: " + _oauth.signature_method + " signature_method not supported with body_hash signing."));
49142
49142
  }
49143
- var shasum = crypto2.createHash("sha1");
49143
+ var shasum = crypto3.createHash("sha1");
49144
49144
  shasum.update(body2 || "");
49145
49145
  var sha1 = shasum.digest("hex");
49146
49146
  return Buffer2.from(sha1, "hex").toString("base64");
@@ -49209,15 +49209,15 @@ var require_oauth4 = __commonJS({
49209
49209
  var require_hawk = __commonJS({
49210
49210
  "../../node_modules/request/lib/hawk.js"(exports) {
49211
49211
  "use strict";
49212
- var crypto2 = require("crypto");
49212
+ var crypto3 = require("crypto");
49213
49213
  function randomString(size) {
49214
49214
  var bits = (size + 1) * 6;
49215
- var buffer = crypto2.randomBytes(Math.ceil(bits / 8));
49215
+ var buffer = crypto3.randomBytes(Math.ceil(bits / 8));
49216
49216
  var string = buffer.toString("base64").replace(/\+/g, "-").replace(/\//g, "_").replace(/=/g, "");
49217
49217
  return string.slice(0, size);
49218
49218
  }
49219
49219
  function calculatePayloadHash(payload, algorithm, contentType) {
49220
- var hash2 = crypto2.createHash(algorithm);
49220
+ var hash2 = crypto3.createHash(algorithm);
49221
49221
  hash2.update("hawk.1.payload\n");
49222
49222
  hash2.update((contentType ? contentType.split(";")[0].trim().toLowerCase() : "") + "\n");
49223
49223
  hash2.update(payload || "");
@@ -49233,7 +49233,7 @@ var require_hawk = __commonJS({
49233
49233
  if (opts.app) {
49234
49234
  normalized = normalized + opts.app + "\n" + (opts.dlg || "") + "\n";
49235
49235
  }
49236
- var hmac = crypto2.createHmac(credentials.algorithm, credentials.key).update(normalized);
49236
+ var hmac = crypto3.createHmac(credentials.algorithm, credentials.key).update(normalized);
49237
49237
  var digest = hmac.digest("base64");
49238
49238
  return digest;
49239
49239
  };
@@ -53654,7 +53654,7 @@ var require_strategy2 = __commonJS({
53654
53654
  var OAuth2 = require_oauth3().OAuth2;
53655
53655
  var SessionStateStore = require_session();
53656
53656
  var InternalOAuthError = require_internaloautherror();
53657
- var crypto2 = require("crypto");
53657
+ var crypto3 = require("crypto");
53658
53658
  var base64url = require_base64url2();
53659
53659
  var AuthorizationError = require_authorizationerror();
53660
53660
  function Strategy(options2, verify) {
@@ -54043,11 +54043,11 @@ var require_strategy2 = __commonJS({
54043
54043
  delete meta[param];
54044
54044
  }
54045
54045
  if (config.pkce) {
54046
- var verifier = base64url(crypto2.pseudoRandomBytes(32));
54046
+ var verifier = base64url(crypto3.pseudoRandomBytes(32));
54047
54047
  switch (config.pkce) {
54048
54048
  case "S256":
54049
54049
  params2.code_challenge = base64url(
54050
- crypto2.createHash("sha256").update(verifier).digest()
54050
+ crypto3.createHash("sha256").update(verifier).digest()
54051
54051
  );
54052
54052
  break;
54053
54053
  case "plain":
@@ -54197,7 +54197,7 @@ __export(src_exports, {
54197
54197
  events: () => events_exports,
54198
54198
  features: () => features_exports,
54199
54199
  getPublicError: () => getPublicError,
54200
- init: () => init9,
54200
+ init: () => init10,
54201
54201
  installation: () => installation_exports,
54202
54202
  locks: () => redlockImpl_exports,
54203
54203
  logging: () => logging_exports,
@@ -54212,12 +54212,14 @@ __export(src_exports, {
54212
54212
  roles: () => roles_exports,
54213
54213
  security: () => security_exports,
54214
54214
  sessions: () => sessions_exports,
54215
+ setEnv: () => setEnv,
54215
54216
  sql: () => sql_exports,
54216
54217
  tenancy: () => tenancy,
54217
54218
  timers: () => timers_exports,
54218
54219
  userUtils: () => utils_exports5,
54219
54220
  users: () => users_exports3,
54220
- utils: () => utils_exports4
54221
+ utils: () => utils_exports4,
54222
+ withEnv: () => withEnv
54221
54223
  });
54222
54224
  module.exports = __toCommonJS(src_exports);
54223
54225
 
@@ -54596,6 +54598,7 @@ var AutomationActionStepId = /* @__PURE__ */ ((AutomationActionStepId2) => {
54596
54598
  AutomationActionStepId2["COLLECT"] = "COLLECT";
54597
54599
  AutomationActionStepId2["OPENAI"] = "OPENAI";
54598
54600
  AutomationActionStepId2["TRIGGER_AUTOMATION_RUN"] = "TRIGGER_AUTOMATION_RUN";
54601
+ AutomationActionStepId2["BRANCH"] = "BRANCH";
54599
54602
  AutomationActionStepId2["discord"] = "discord";
54600
54603
  AutomationActionStepId2["slack"] = "slack";
54601
54604
  AutomationActionStepId2["zapier"] = "zapier";
@@ -55311,7 +55314,7 @@ var search = (docs, query) => {
55311
55314
  }
55312
55315
  return response;
55313
55316
  };
55314
- var runQuery = (docs, query) => {
55317
+ var runQuery = (docs, query, findInDoc = deepGet) => {
55315
55318
  if (!docs || !Array.isArray(docs)) {
55316
55319
  return [];
55317
55320
  }
@@ -55325,7 +55328,7 @@ var runQuery = (docs, query) => {
55325
55328
  }
55326
55329
  const match = (type, test) => (doc) => {
55327
55330
  for (const [key, testValue] of Object.entries(query[type] || {})) {
55328
- const valueToCheck = isLogicalSearchOperator(type) ? doc : deepGet(doc, removeKeyNumbering(key));
55331
+ const valueToCheck = isLogicalSearchOperator(type) ? doc : findInDoc(doc, removeKeyNumbering(key));
55329
55332
  const result = test(valueToCheck, testValue);
55330
55333
  if (query.allOr && result) {
55331
55334
  return true;
@@ -55864,6 +55867,27 @@ var allowSortColumnByType = {
55864
55867
  ["bb_reference" /* BB_REFERENCE */]: false,
55865
55868
  ["bb_reference_single" /* BB_REFERENCE_SINGLE */]: false
55866
55869
  };
55870
+ var allowDefaultColumnByType = {
55871
+ ["number" /* NUMBER */]: true,
55872
+ ["json" /* JSON */]: true,
55873
+ ["datetime" /* DATETIME */]: true,
55874
+ ["longform" /* LONGFORM */]: true,
55875
+ ["string" /* STRING */]: true,
55876
+ ["options" /* OPTIONS */]: false,
55877
+ ["auto" /* AUTO */]: false,
55878
+ ["internal" /* INTERNAL */]: false,
55879
+ ["barcodeqr" /* BARCODEQR */]: false,
55880
+ ["bigint" /* BIGINT */]: false,
55881
+ ["boolean" /* BOOLEAN */]: false,
55882
+ ["formula" /* FORMULA */]: false,
55883
+ ["attachment" /* ATTACHMENTS */]: false,
55884
+ ["attachment_single" /* ATTACHMENT_SINGLE */]: false,
55885
+ ["signature_single" /* SIGNATURE_SINGLE */]: false,
55886
+ ["array" /* ARRAY */]: false,
55887
+ ["link" /* LINK */]: false,
55888
+ ["bb_reference" /* BB_REFERENCE */]: false,
55889
+ ["bb_reference_single" /* BB_REFERENCE_SINGLE */]: false
55890
+ };
55867
55891
 
55868
55892
  // src/constants/db.ts
55869
55893
  var AutomationViewMode = /* @__PURE__ */ ((AutomationViewMode2) => {
@@ -56017,6 +56041,7 @@ __export(context_exports, {
56017
56041
  getCurrentContext: () => getCurrentContext,
56018
56042
  getDevAppDB: () => getDevAppDB,
56019
56043
  getEnvironmentVariables: () => getEnvironmentVariables,
56044
+ getFeatureFlags: () => getFeatureFlags,
56020
56045
  getGlobalDB: () => getGlobalDB,
56021
56046
  getGlobalDBName: () => getGlobalDBName,
56022
56047
  getIdentity: () => getIdentity,
@@ -56030,7 +56055,8 @@ __export(context_exports, {
56030
56055
  isMultiTenant: () => isMultiTenant,
56031
56056
  isScim: () => isScim,
56032
56057
  isTenancyEnabled: () => isTenancyEnabled,
56033
- isTenantIdSet: () => isTenantIdSet
56058
+ isTenantIdSet: () => isTenantIdSet,
56059
+ setFeatureFlags: () => setFeatureFlags
56034
56060
  });
56035
56061
 
56036
56062
  // src/context/identity.ts
@@ -56084,6 +56110,7 @@ function getAccountUserId(account) {
56084
56110
 
56085
56111
  // src/environment.ts
56086
56112
  var import_fs = require("fs");
56113
+ var import_lodash2 = require("lodash");
56087
56114
  function isTest() {
56088
56115
  return isJest();
56089
56116
  }
@@ -56194,6 +56221,8 @@ var environment = {
56194
56221
  COOKIE_DOMAIN: process.env.COOKIE_DOMAIN,
56195
56222
  PLATFORM_URL: process.env.PLATFORM_URL || "",
56196
56223
  POSTHOG_TOKEN: process.env.POSTHOG_TOKEN,
56224
+ POSTHOG_PERSONAL_TOKEN: process.env.POSTHOG_PERSONAL_TOKEN,
56225
+ POSTHOG_API_HOST: process.env.POSTHOG_API_HOST || "https://us.i.posthog.com",
56197
56226
  ENABLE_ANALYTICS: process.env.ENABLE_ANALYTICS,
56198
56227
  TENANT_FEATURE_FLAGS: process.env.TENANT_FEATURE_FLAGS,
56199
56228
  CLOUDFRONT_CDN: process.env.CLOUDFRONT_CDN,
@@ -56249,6 +56278,28 @@ var environment = {
56249
56278
  BB_ADMIN_USER_PASSWORD: process.env.BB_ADMIN_USER_PASSWORD,
56250
56279
  OPENAI_API_KEY: process.env.OPENAI_API_KEY
56251
56280
  };
56281
+ function setEnv(newEnvVars) {
56282
+ const oldEnv = (0, import_lodash2.cloneDeep)(environment);
56283
+ let key;
56284
+ for (key in newEnvVars) {
56285
+ environment._set(key, newEnvVars[key]);
56286
+ }
56287
+ return () => {
56288
+ for (const [key2, value] of Object.entries(oldEnv)) {
56289
+ environment._set(key2, value);
56290
+ }
56291
+ };
56292
+ }
56293
+ function withEnv(envVars, f) {
56294
+ const cleanup3 = setEnv(envVars);
56295
+ const result = f();
56296
+ if (result instanceof Promise) {
56297
+ return result.finally(cleanup3);
56298
+ } else {
56299
+ cleanup3();
56300
+ return result;
56301
+ }
56302
+ }
56252
56303
  var SECRETS = [
56253
56304
  "API_ENCRYPTION_KEY",
56254
56305
  "BB_ADMIN_USER_PASSWORD",
@@ -60303,6 +60354,21 @@ function getCurrentContext() {
60303
60354
  return void 0;
60304
60355
  }
60305
60356
  }
60357
+ function getFeatureFlags(key) {
60358
+ const context = getCurrentContext();
60359
+ if (!context) {
60360
+ return void 0;
60361
+ }
60362
+ return context.featureFlagCache?.[key];
60363
+ }
60364
+ function setFeatureFlags(key, value) {
60365
+ const context = getCurrentContext();
60366
+ if (!context) {
60367
+ return;
60368
+ }
60369
+ context.featureFlagCache ??= {};
60370
+ context.featureFlagCache[key] = value;
60371
+ }
60306
60372
 
60307
60373
  // src/cache/base/index.ts
60308
60374
  function generateTenantKey(key) {
@@ -62058,7 +62124,7 @@ var enabled = async () => {
62058
62124
  };
62059
62125
 
62060
62126
  // src/events/processors/posthog/PosthogProcessor.ts
62061
- var import_posthog_node = __toESM(require("posthog-node"));
62127
+ var import_posthog_node = require("posthog-node");
62062
62128
 
62063
62129
  // src/events/processors/posthog/rateLimiting.ts
62064
62130
  var isRateLimited = (event) => {
@@ -62142,7 +62208,7 @@ var PosthogProcessor = class {
62142
62208
  if (!token) {
62143
62209
  throw new Error("Posthog token is not defined");
62144
62210
  }
62145
- this.posthog = new import_posthog_node.default(token);
62211
+ this.posthog = new import_posthog_node.PostHog(token);
62146
62212
  }
62147
62213
  async processEvent(event, identity, properties, timestamp) {
62148
62214
  if (EXCLUDED_EVENTS.includes(event)) {
@@ -64667,7 +64733,7 @@ __export(security_exports, {
64667
64733
  });
64668
64734
 
64669
64735
  // src/security/auth.ts
64670
- var PASSWORD_MIN_LENGTH = +(environment_default.PASSWORD_MIN_LENGTH || 8);
64736
+ var PASSWORD_MIN_LENGTH = +(environment_default.PASSWORD_MIN_LENGTH || 12);
64671
64737
  var PASSWORD_MAX_LENGTH = +(environment_default.PASSWORD_MAX_LENGTH || 512);
64672
64738
  function validatePassword(password) {
64673
64739
  if (!password || password.length < PASSWORD_MIN_LENGTH) {
@@ -65977,70 +66043,194 @@ var DEFINITIONS = [
65977
66043
  // src/features/index.ts
65978
66044
  var features_exports = {};
65979
66045
  __export(features_exports, {
65980
- defaultFlags: () => defaultFlags,
65981
- fetch: () => fetch6,
65982
- get: () => get4,
65983
- isEnabled: () => isEnabled
66046
+ Flag: () => Flag,
66047
+ FlagSet: () => FlagSet,
66048
+ flags: () => flags,
66049
+ init: () => init8,
66050
+ shutdown: () => shutdown5
65984
66051
  });
65985
- var import_lodash2 = require("lodash");
65986
- var Flag = class _Flag {
66052
+ var import_posthog_node2 = require("posthog-node");
66053
+ var import_dd_trace3 = __toESM(require("dd-trace"));
66054
+ var posthog;
66055
+ function init8(opts) {
66056
+ if (environment_default.POSTHOG_TOKEN && environment_default.POSTHOG_API_HOST) {
66057
+ console.log("initializing posthog client...");
66058
+ posthog = new import_posthog_node2.PostHog(environment_default.POSTHOG_TOKEN, {
66059
+ host: environment_default.POSTHOG_API_HOST,
66060
+ personalApiKey: environment_default.POSTHOG_PERSONAL_TOKEN,
66061
+ ...opts
66062
+ });
66063
+ } else {
66064
+ console.log("posthog disabled");
66065
+ }
66066
+ }
66067
+ function shutdown5() {
66068
+ posthog?.shutdown();
66069
+ }
66070
+ var Flag = class {
65987
66071
  constructor(defaultValue) {
65988
66072
  this.defaultValue = defaultValue;
65989
66073
  }
65990
- static withDefault(value) {
65991
- return new _Flag(value);
66074
+ static boolean(defaultValue) {
66075
+ return new BooleanFlag(defaultValue);
66076
+ }
66077
+ static string(defaultValue) {
66078
+ return new StringFlag(defaultValue);
66079
+ }
66080
+ static number(defaultValue) {
66081
+ return new NumberFlag(defaultValue);
65992
66082
  }
65993
66083
  };
65994
- var FLAGS = {
65995
- LICENSING: Flag.withDefault(false),
65996
- GOOGLE_SHEETS: Flag.withDefault(false),
65997
- USER_GROUPS: Flag.withDefault(false),
65998
- ONBOARDING_TOUR: Flag.withDefault(false)
66084
+ var BooleanFlag = class extends Flag {
66085
+ parse(value) {
66086
+ if (typeof value === "string") {
66087
+ return ["true", "t", "1"].includes(value.toLowerCase());
66088
+ }
66089
+ if (typeof value === "boolean") {
66090
+ return value;
66091
+ }
66092
+ throw new Error(`could not parse value "${value}" as boolean`);
66093
+ }
65999
66094
  };
66000
- var DEFAULTS = Object.keys(FLAGS).reduce((acc, key) => {
66001
- const typedKey = key;
66002
- acc[typedKey] = FLAGS[typedKey].defaultValue;
66003
- return acc;
66004
- }, {});
66005
- function defaultFlags() {
66006
- return (0, import_lodash2.cloneDeep)(DEFAULTS);
66007
- }
66008
- function isFlagName(name) {
66009
- return FLAGS[name] !== void 0;
66010
- }
66011
- async function fetch6() {
66012
- const currentTenantId = getTenantId();
66013
- const flags = defaultFlags();
66014
- const split = (environment_default.TENANT_FEATURE_FLAGS || "").split(",").map((x) => x.split(":"));
66015
- for (const [tenantId, ...features] of split) {
66016
- if (!tenantId || tenantId !== "*" && tenantId !== currentTenantId) {
66017
- continue;
66095
+ var StringFlag = class extends Flag {
66096
+ parse(value) {
66097
+ if (typeof value === "string") {
66098
+ return value;
66018
66099
  }
66019
- for (let feature of features) {
66020
- let value = true;
66021
- if (feature.startsWith("!")) {
66022
- feature = feature.slice(1);
66023
- value = false;
66100
+ throw new Error(`could not parse value "${value}" as string`);
66101
+ }
66102
+ };
66103
+ var NumberFlag = class extends Flag {
66104
+ parse(value) {
66105
+ if (typeof value === "number") {
66106
+ return value;
66107
+ }
66108
+ if (typeof value === "string") {
66109
+ const parsed = parseFloat(value);
66110
+ if (!isNaN(parsed)) {
66111
+ return parsed;
66024
66112
  }
66025
- if (!isFlagName(feature)) {
66026
- throw new Error(`Feature: ${feature} is not an allowed option`);
66113
+ }
66114
+ throw new Error(`could not parse value "${value}" as number`);
66115
+ }
66116
+ };
66117
+ var FlagSet = class {
66118
+ constructor(flagSchema) {
66119
+ this.flagSchema = flagSchema;
66120
+ this.setId = crypto.randomUUID();
66121
+ }
66122
+ defaults() {
66123
+ return Object.keys(this.flagSchema).reduce((acc, key) => {
66124
+ const typedKey = key;
66125
+ acc[typedKey] = this.flagSchema[key].defaultValue;
66126
+ return acc;
66127
+ }, {});
66128
+ }
66129
+ isFlagName(name) {
66130
+ return this.flagSchema[name] !== void 0;
66131
+ }
66132
+ async get(key, ctx) {
66133
+ const flags2 = await this.fetch(ctx);
66134
+ return flags2[key];
66135
+ }
66136
+ async isEnabled(key, ctx) {
66137
+ const flags2 = await this.fetch(ctx);
66138
+ return flags2[key];
66139
+ }
66140
+ async fetch(ctx) {
66141
+ return await import_dd_trace3.default.trace("features.fetch", async (span) => {
66142
+ const cachedFlags = getFeatureFlags(this.setId);
66143
+ if (cachedFlags) {
66144
+ span?.addTags({ fromCache: true });
66145
+ return cachedFlags;
66146
+ }
66147
+ const tags = {};
66148
+ const flagValues = this.defaults();
66149
+ const currentTenantId = getTenantId();
66150
+ const specificallySetFalse = /* @__PURE__ */ new Set();
66151
+ const split = (environment_default.TENANT_FEATURE_FLAGS || "").split(",").map((x) => x.split(":"));
66152
+ for (const [tenantId, ...features] of split) {
66153
+ if (!tenantId || tenantId !== "*" && tenantId !== currentTenantId) {
66154
+ continue;
66155
+ }
66156
+ tags[`readFromEnvironmentVars`] = true;
66157
+ for (let feature of features) {
66158
+ let value = true;
66159
+ if (feature.startsWith("!")) {
66160
+ feature = feature.slice(1);
66161
+ value = false;
66162
+ specificallySetFalse.add(feature);
66163
+ }
66164
+ if (!this.isFlagName(feature)) {
66165
+ continue;
66166
+ }
66167
+ if (typeof flagValues[feature] !== "boolean") {
66168
+ throw new Error(`Feature: ${feature} is not a boolean`);
66169
+ }
66170
+ flagValues[feature] = value;
66171
+ tags[`flags.${feature}.source`] = "environment";
66172
+ }
66027
66173
  }
66028
- if (typeof flags[feature] !== "boolean") {
66029
- throw new Error(`Feature: ${feature} is not a boolean`);
66174
+ const license = ctx?.user?.license;
66175
+ if (license) {
66176
+ tags[`readFromLicense`] = true;
66177
+ for (const feature of license.features) {
66178
+ if (!this.isFlagName(feature)) {
66179
+ continue;
66180
+ }
66181
+ if (flagValues[feature] === true || specificallySetFalse.has(feature)) {
66182
+ continue;
66183
+ }
66184
+ flagValues[feature] = true;
66185
+ tags[`flags.${feature}.source`] = "license";
66186
+ }
66030
66187
  }
66031
- flags[feature] = value;
66032
- }
66188
+ const identity = getIdentity();
66189
+ tags[`identity.type`] = identity?.type;
66190
+ tags[`identity.tenantId`] = identity?.tenantId;
66191
+ tags[`identity._id`] = identity?._id;
66192
+ if (posthog && identity?.type === "user" /* USER */) {
66193
+ tags[`readFromPostHog`] = true;
66194
+ const personProperties = {};
66195
+ if (identity.tenantId) {
66196
+ personProperties.tenantId = identity.tenantId;
66197
+ }
66198
+ const posthogFlags = await posthog.getAllFlagsAndPayloads(
66199
+ identity._id,
66200
+ {
66201
+ personProperties
66202
+ }
66203
+ );
66204
+ for (const [name, value] of Object.entries(posthogFlags.featureFlags)) {
66205
+ if (!this.isFlagName(name)) {
66206
+ console.warn(`Unexpected posthog flag "${name}": ${value}`);
66207
+ continue;
66208
+ }
66209
+ if (flagValues[name] === true || specificallySetFalse.has(name)) {
66210
+ continue;
66211
+ }
66212
+ const payload = posthogFlags.featureFlagPayloads?.[name];
66213
+ const flag = this.flagSchema[name];
66214
+ try {
66215
+ flagValues[name] = flag.parse(payload || value);
66216
+ tags[`flags.${name}.source`] = "posthog";
66217
+ } catch (err) {
66218
+ console.warn(`Error parsing posthog flag "${name}": ${value}`, err);
66219
+ }
66220
+ }
66221
+ }
66222
+ setFeatureFlags(this.setId, flagValues);
66223
+ for (const [key, value] of Object.entries(flagValues)) {
66224
+ tags[`flags.${key}.value`] = value;
66225
+ }
66226
+ span?.addTags(tags);
66227
+ return flagValues;
66228
+ });
66033
66229
  }
66034
- return flags;
66035
- }
66036
- async function get4(name) {
66037
- const flags = await fetch6();
66038
- return flags[name];
66039
- }
66040
- async function isEnabled(name) {
66041
- const flags = await fetch6();
66042
- return flags[name];
66043
- }
66230
+ };
66231
+ var flags = new FlagSet({
66232
+ DEFAULT_VALUES: Flag.boolean(false)
66233
+ });
66044
66234
 
66045
66235
  // src/auth/index.ts
66046
66236
  var auth_exports = {};
@@ -66657,7 +66847,7 @@ function readBytes(stream3, length) {
66657
66847
  }
66658
66848
 
66659
66849
  // src/middleware/authenticated.ts
66660
- var import_dd_trace3 = __toESM(require("dd-trace"));
66850
+ var import_dd_trace4 = __toESM(require("dd-trace"));
66661
66851
  var ONE_MINUTE = environment_default.SESSION_UPDATE_PERIOD ? parseInt(environment_default.SESSION_UPDATE_PERIOD) : 60 * 1e3;
66662
66852
  function timeMinusOneMinute() {
66663
66853
  return new Date(Date.now() - ONE_MINUTE).toISOString();
@@ -66771,7 +66961,7 @@ function authenticated_default(noAuthPatterns = [], opts = {
66771
66961
  return user2 && user2.email;
66772
66962
  };
66773
66963
  if (isUser(user)) {
66774
- import_dd_trace3.default.setUser({
66964
+ import_dd_trace4.default.setUser({
66775
66965
  id: user._id,
66776
66966
  tenantId: user.tenantId,
66777
66967
  budibaseAccess: user.budibaseAccess,
@@ -67415,7 +67605,7 @@ async function isBlacklisted(address) {
67415
67605
  // src/docUpdates/index.ts
67416
67606
  var docUpdates_exports = {};
67417
67607
  __export(docUpdates_exports, {
67418
- init: () => init8
67608
+ init: () => init9
67419
67609
  });
67420
67610
 
67421
67611
  // src/events/documentId.ts
@@ -67473,7 +67663,7 @@ var DocumentUpdateProcessor = class {
67473
67663
  // src/docUpdates/index.ts
67474
67664
  var processingPromise;
67475
67665
  var documentProcessor;
67476
- function init8(processors2) {
67666
+ function init9(processors2) {
67477
67667
  if (!asyncEventQueue) {
67478
67668
  init5();
67479
67669
  }
@@ -67507,21 +67697,27 @@ function isIgnoredType(type) {
67507
67697
  return ignored.indexOf(type) !== -1;
67508
67698
  }
67509
67699
  function generateSchema(schema, table, tables, oldTable = null, renamed) {
67510
- let primaryKey = table && table.primary ? table.primary[0] : null;
67700
+ let primaryKeys = table && table.primary ? table.primary : [];
67511
67701
  const columns = Object.values(table.schema);
67512
67702
  let metaCols = columns.filter((col) => col.meta);
67513
67703
  let isJunction = metaCols.length === columns.length;
67514
- if (primaryKey && !oldTable && !isJunction) {
67515
- schema.increments(primaryKey).primary();
67516
- } else if (!oldTable && isJunction) {
67517
- schema.primary(metaCols.map((col) => col.name));
67704
+ let columnTypeSet = [];
67705
+ if (!oldTable) {
67706
+ if (isJunction) {
67707
+ schema.primary(metaCols.map((col) => col.name));
67708
+ } else if (primaryKeys.length === 1) {
67709
+ schema.increments(primaryKeys[0]).primary();
67710
+ columnTypeSet.push(primaryKeys[0]);
67711
+ } else {
67712
+ schema.primary(primaryKeys);
67713
+ }
67518
67714
  }
67519
67715
  const foreignKeys = Object.values(table.schema).map(
67520
67716
  (col) => col.foreignKey
67521
67717
  );
67522
67718
  for (let [key, column] of Object.entries(table.schema)) {
67523
67719
  const oldColumn = oldTable ? oldTable.schema[key] : null;
67524
- if (oldColumn && oldColumn.type || primaryKey === key && !isJunction || renamed?.updated === key) {
67720
+ if (oldColumn && oldColumn.type || columnTypeSet.includes(key) || renamed?.updated === key) {
67525
67721
  continue;
67526
67722
  }
67527
67723
  const columnType = column.type;
@@ -67531,7 +67727,11 @@ function generateSchema(schema, table, tables, oldTable = null, renamed) {
67531
67727
  case "longform" /* LONGFORM */:
67532
67728
  case "barcodeqr" /* BARCODEQR */:
67533
67729
  case "bb_reference_single" /* BB_REFERENCE_SINGLE */:
67534
- schema.text(key);
67730
+ if (primaryKeys.includes(key)) {
67731
+ schema.string(key, 255);
67732
+ } else {
67733
+ schema.text(key);
67734
+ }
67535
67735
  break;
67536
67736
  case "number" /* NUMBER */:
67537
67737
  if (column.meta && column.meta.toKey && column.meta.toTable) {
@@ -68663,7 +68863,7 @@ var tenancy = {
68663
68863
  ...tenancy_exports,
68664
68864
  ...context_exports
68665
68865
  };
68666
- var init9 = (opts = {}) => {
68866
+ var init10 = (opts = {}) => {
68667
68867
  init(opts.db);
68668
68868
  };
68669
68869
  // Annotate the CommonJS export names for ESM import in node:
@@ -68738,12 +68938,14 @@ var init9 = (opts = {}) => {
68738
68938
  roles,
68739
68939
  security,
68740
68940
  sessions,
68941
+ setEnv,
68741
68942
  sql,
68742
68943
  tenancy,
68743
68944
  timers,
68744
68945
  userUtils,
68745
68946
  users,
68746
- utils
68947
+ utils,
68948
+ withEnv
68747
68949
  });
68748
68950
  /*! Bundled license information:
68749
68951