@budibase/backend-core 2.13.13 → 2.13.15

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 +355 -24
  2. package/dist/index.js.map +4 -4
  3. package/dist/index.js.meta.json +1 -1
  4. package/dist/package.json +4 -4
  5. package/dist/src/auth/auth.js.map +1 -1
  6. package/dist/src/configs/configs.js +3 -4
  7. package/dist/src/configs/configs.js.map +1 -1
  8. package/dist/src/constants/db.js.map +1 -1
  9. package/dist/src/db/utils.js.map +1 -1
  10. package/dist/src/docIds/conversions.js.map +1 -1
  11. package/dist/src/events/processors/posthog/index.js.map +1 -1
  12. package/dist/src/features/index.js.map +1 -1
  13. package/dist/src/index.js.map +1 -1
  14. package/dist/src/installation.js +2 -3
  15. package/dist/src/installation.js.map +1 -1
  16. package/dist/src/logging/correlation/correlation.js.map +1 -1
  17. package/dist/src/logging/correlation/middleware.js.map +1 -1
  18. package/dist/src/logging/pino/middleware.js.map +1 -1
  19. package/dist/src/middleware/index.js.map +1 -1
  20. package/dist/src/middleware/passport/sso/google.js.map +1 -1
  21. package/dist/src/objectStore/objectStore.js.map +1 -1
  22. package/dist/src/security/roles.js +1 -2
  23. package/dist/src/security/roles.js.map +1 -1
  24. package/dist/src/security/sessions.js.map +1 -1
  25. package/dist/src/users/db.d.ts +5 -0
  26. package/dist/src/users/db.js +28 -2
  27. package/dist/src/users/db.js.map +1 -1
  28. package/dist/src/users/users.d.ts +12 -11
  29. package/dist/src/users/users.js +175 -144
  30. package/dist/src/users/users.js.map +1 -1
  31. package/dist/src/utils/hashing.js.map +1 -1
  32. package/dist/src/utils/utils.js.map +1 -1
  33. package/dist/tests/core/utilities/mocks/alerts.js.map +1 -1
  34. package/dist/tests/core/utilities/mocks/index.js.map +1 -1
  35. package/dist/tests/core/utilities/structures/generator.js.map +1 -1
  36. package/dist/tests/jestSetup.js.map +1 -1
  37. package/package.json +4 -4
  38. package/src/auth/auth.ts +2 -0
  39. package/src/configs/configs.ts +3 -4
  40. package/src/constants/db.ts +1 -0
  41. package/src/db/utils.ts +1 -0
  42. package/src/docIds/conversions.ts +1 -0
  43. package/src/events/processors/posthog/index.ts +1 -0
  44. package/src/events/processors/posthog/tests/PosthogProcessor.spec.ts +2 -0
  45. package/src/features/index.ts +1 -0
  46. package/src/index.ts +1 -0
  47. package/src/installation.ts +1 -2
  48. package/src/logging/correlation/correlation.ts +1 -0
  49. package/src/logging/correlation/middleware.ts +1 -0
  50. package/src/logging/pino/middleware.ts +3 -0
  51. package/src/middleware/index.ts +1 -0
  52. package/src/middleware/passport/sso/google.ts +1 -0
  53. package/src/middleware/passport/sso/tests/google.spec.ts +1 -0
  54. package/src/middleware/passport/sso/tests/sso.spec.ts +1 -0
  55. package/src/middleware/tests/builder.spec.ts +1 -0
  56. package/src/objectStore/objectStore.ts +1 -0
  57. package/src/security/roles.ts +7 -2
  58. package/src/security/sessions.ts +1 -0
  59. package/src/users/db.ts +33 -5
  60. package/src/users/users.ts +28 -16
  61. package/src/utils/hashing.ts +1 -0
  62. package/src/utils/utils.ts +1 -0
  63. package/tests/core/utilities/mocks/alerts.ts +1 -0
  64. package/tests/core/utilities/mocks/index.ts +1 -0
  65. package/tests/core/utilities/structures/generator.ts +1 -0
  66. package/tests/jestSetup.ts +1 -0
package/dist/index.js CHANGED
@@ -8,6 +8,9 @@ var __hasOwnProp = Object.prototype.hasOwnProperty;
8
8
  var __esm = (fn, res) => function __init() {
9
9
  return fn && (res = (0, fn[__getOwnPropNames(fn)[0]])(fn = 0)), res;
10
10
  };
11
+ var __commonJS = (cb, mod) => function __require() {
12
+ return mod || (0, cb[__getOwnPropNames(cb)[0]])((mod = { exports: {} }).exports, mod), mod.exports;
13
+ };
11
14
  var __export = (target, all) => {
12
15
  for (var name in all)
13
16
  __defProp(target, name, { get: all[name], enumerable: true });
@@ -5601,6 +5604,301 @@ var init_logging = __esm({
5601
5604
  }
5602
5605
  });
5603
5606
 
5607
+ // ../../node_modules/dayjs/dayjs.min.js
5608
+ var require_dayjs_min = __commonJS({
5609
+ "../../node_modules/dayjs/dayjs.min.js"(exports, module2) {
5610
+ "use strict";
5611
+ !function(t, e) {
5612
+ "object" == typeof exports && "undefined" != typeof module2 ? module2.exports = e() : "function" == typeof define && define.amd ? define(e) : (t = "undefined" != typeof globalThis ? globalThis : t || self).dayjs = e();
5613
+ }(exports, function() {
5614
+ "use strict";
5615
+ var t = 1e3, e = 6e4, n = 36e5, r = "millisecond", i = "second", s = "minute", u = "hour", a = "day", o = "week", c = "month", f = "quarter", h = "year", d = "date", l = "Invalid Date", $ = /^(\d{4})[-/]?(\d{1,2})?[-/]?(\d{0,2})[Tt\s]*(\d{1,2})?:?(\d{1,2})?:?(\d{1,2})?[.:]?(\d+)?$/, y = /\[([^\]]+)]|Y{1,4}|M{1,4}|D{1,2}|d{1,4}|H{1,2}|h{1,2}|a|A|m{1,2}|s{1,2}|Z{1,2}|SSS/g, M = { name: "en", weekdays: "Sunday_Monday_Tuesday_Wednesday_Thursday_Friday_Saturday".split("_"), months: "January_February_March_April_May_June_July_August_September_October_November_December".split("_"), ordinal: function(t2) {
5616
+ var e2 = ["th", "st", "nd", "rd"], n2 = t2 % 100;
5617
+ return "[" + t2 + (e2[(n2 - 20) % 10] || e2[n2] || e2[0]) + "]";
5618
+ } }, m = function(t2, e2, n2) {
5619
+ var r2 = String(t2);
5620
+ return !r2 || r2.length >= e2 ? t2 : "" + Array(e2 + 1 - r2.length).join(n2) + t2;
5621
+ }, v = { s: m, z: function(t2) {
5622
+ var e2 = -t2.utcOffset(), n2 = Math.abs(e2), r2 = Math.floor(n2 / 60), i2 = n2 % 60;
5623
+ return (e2 <= 0 ? "+" : "-") + m(r2, 2, "0") + ":" + m(i2, 2, "0");
5624
+ }, m: function t2(e2, n2) {
5625
+ if (e2.date() < n2.date())
5626
+ return -t2(n2, e2);
5627
+ var r2 = 12 * (n2.year() - e2.year()) + (n2.month() - e2.month()), i2 = e2.clone().add(r2, c), s2 = n2 - i2 < 0, u2 = e2.clone().add(r2 + (s2 ? -1 : 1), c);
5628
+ return +(-(r2 + (n2 - i2) / (s2 ? i2 - u2 : u2 - i2)) || 0);
5629
+ }, a: function(t2) {
5630
+ return t2 < 0 ? Math.ceil(t2) || 0 : Math.floor(t2);
5631
+ }, p: function(t2) {
5632
+ return { M: c, y: h, w: o, d: a, D: d, h: u, m: s, s: i, ms: r, Q: f }[t2] || String(t2 || "").toLowerCase().replace(/s$/, "");
5633
+ }, u: function(t2) {
5634
+ return void 0 === t2;
5635
+ } }, g = "en", D = {};
5636
+ D[g] = M;
5637
+ var p = function(t2) {
5638
+ return t2 instanceof b;
5639
+ }, S = function t2(e2, n2, r2) {
5640
+ var i2;
5641
+ if (!e2)
5642
+ return g;
5643
+ if ("string" == typeof e2) {
5644
+ var s2 = e2.toLowerCase();
5645
+ D[s2] && (i2 = s2), n2 && (D[s2] = n2, i2 = s2);
5646
+ var u2 = e2.split("-");
5647
+ if (!i2 && u2.length > 1)
5648
+ return t2(u2[0]);
5649
+ } else {
5650
+ var a2 = e2.name;
5651
+ D[a2] = e2, i2 = a2;
5652
+ }
5653
+ return !r2 && i2 && (g = i2), i2 || !r2 && g;
5654
+ }, w = function(t2, e2) {
5655
+ if (p(t2))
5656
+ return t2.clone();
5657
+ var n2 = "object" == typeof e2 ? e2 : {};
5658
+ return n2.date = t2, n2.args = arguments, new b(n2);
5659
+ }, O = v;
5660
+ O.l = S, O.i = p, O.w = function(t2, e2) {
5661
+ return w(t2, { locale: e2.$L, utc: e2.$u, x: e2.$x, $offset: e2.$offset });
5662
+ };
5663
+ var b = function() {
5664
+ function M2(t2) {
5665
+ this.$L = S(t2.locale, null, true), this.parse(t2);
5666
+ }
5667
+ var m2 = M2.prototype;
5668
+ return m2.parse = function(t2) {
5669
+ this.$d = function(t3) {
5670
+ var e2 = t3.date, n2 = t3.utc;
5671
+ if (null === e2)
5672
+ return /* @__PURE__ */ new Date(NaN);
5673
+ if (O.u(e2))
5674
+ return /* @__PURE__ */ new Date();
5675
+ if (e2 instanceof Date)
5676
+ return new Date(e2);
5677
+ if ("string" == typeof e2 && !/Z$/i.test(e2)) {
5678
+ var r2 = e2.match($);
5679
+ if (r2) {
5680
+ var i2 = r2[2] - 1 || 0, s2 = (r2[7] || "0").substring(0, 3);
5681
+ return n2 ? new Date(Date.UTC(r2[1], i2, r2[3] || 1, r2[4] || 0, r2[5] || 0, r2[6] || 0, s2)) : new Date(r2[1], i2, r2[3] || 1, r2[4] || 0, r2[5] || 0, r2[6] || 0, s2);
5682
+ }
5683
+ }
5684
+ return new Date(e2);
5685
+ }(t2), this.$x = t2.x || {}, this.init();
5686
+ }, m2.init = function() {
5687
+ var t2 = this.$d;
5688
+ this.$y = t2.getFullYear(), this.$M = t2.getMonth(), this.$D = t2.getDate(), this.$W = t2.getDay(), this.$H = t2.getHours(), this.$m = t2.getMinutes(), this.$s = t2.getSeconds(), this.$ms = t2.getMilliseconds();
5689
+ }, m2.$utils = function() {
5690
+ return O;
5691
+ }, m2.isValid = function() {
5692
+ return !(this.$d.toString() === l);
5693
+ }, m2.isSame = function(t2, e2) {
5694
+ var n2 = w(t2);
5695
+ return this.startOf(e2) <= n2 && n2 <= this.endOf(e2);
5696
+ }, m2.isAfter = function(t2, e2) {
5697
+ return w(t2) < this.startOf(e2);
5698
+ }, m2.isBefore = function(t2, e2) {
5699
+ return this.endOf(e2) < w(t2);
5700
+ }, m2.$g = function(t2, e2, n2) {
5701
+ return O.u(t2) ? this[e2] : this.set(n2, t2);
5702
+ }, m2.unix = function() {
5703
+ return Math.floor(this.valueOf() / 1e3);
5704
+ }, m2.valueOf = function() {
5705
+ return this.$d.getTime();
5706
+ }, m2.startOf = function(t2, e2) {
5707
+ var n2 = this, r2 = !!O.u(e2) || e2, f2 = O.p(t2), l2 = function(t3, e3) {
5708
+ var i2 = O.w(n2.$u ? Date.UTC(n2.$y, e3, t3) : new Date(n2.$y, e3, t3), n2);
5709
+ return r2 ? i2 : i2.endOf(a);
5710
+ }, $2 = function(t3, e3) {
5711
+ return O.w(n2.toDate()[t3].apply(n2.toDate("s"), (r2 ? [0, 0, 0, 0] : [23, 59, 59, 999]).slice(e3)), n2);
5712
+ }, y2 = this.$W, M3 = this.$M, m3 = this.$D, v2 = "set" + (this.$u ? "UTC" : "");
5713
+ switch (f2) {
5714
+ case h:
5715
+ return r2 ? l2(1, 0) : l2(31, 11);
5716
+ case c:
5717
+ return r2 ? l2(1, M3) : l2(0, M3 + 1);
5718
+ case o:
5719
+ var g2 = this.$locale().weekStart || 0, D2 = (y2 < g2 ? y2 + 7 : y2) - g2;
5720
+ return l2(r2 ? m3 - D2 : m3 + (6 - D2), M3);
5721
+ case a:
5722
+ case d:
5723
+ return $2(v2 + "Hours", 0);
5724
+ case u:
5725
+ return $2(v2 + "Minutes", 1);
5726
+ case s:
5727
+ return $2(v2 + "Seconds", 2);
5728
+ case i:
5729
+ return $2(v2 + "Milliseconds", 3);
5730
+ default:
5731
+ return this.clone();
5732
+ }
5733
+ }, m2.endOf = function(t2) {
5734
+ return this.startOf(t2, false);
5735
+ }, m2.$set = function(t2, e2) {
5736
+ var n2, o2 = O.p(t2), f2 = "set" + (this.$u ? "UTC" : ""), l2 = (n2 = {}, n2[a] = f2 + "Date", n2[d] = f2 + "Date", n2[c] = f2 + "Month", n2[h] = f2 + "FullYear", n2[u] = f2 + "Hours", n2[s] = f2 + "Minutes", n2[i] = f2 + "Seconds", n2[r] = f2 + "Milliseconds", n2)[o2], $2 = o2 === a ? this.$D + (e2 - this.$W) : e2;
5737
+ if (o2 === c || o2 === h) {
5738
+ var y2 = this.clone().set(d, 1);
5739
+ y2.$d[l2]($2), y2.init(), this.$d = y2.set(d, Math.min(this.$D, y2.daysInMonth())).$d;
5740
+ } else
5741
+ l2 && this.$d[l2]($2);
5742
+ return this.init(), this;
5743
+ }, m2.set = function(t2, e2) {
5744
+ return this.clone().$set(t2, e2);
5745
+ }, m2.get = function(t2) {
5746
+ return this[O.p(t2)]();
5747
+ }, m2.add = function(r2, f2) {
5748
+ var d2, l2 = this;
5749
+ r2 = Number(r2);
5750
+ var $2 = O.p(f2), y2 = function(t2) {
5751
+ var e2 = w(l2);
5752
+ return O.w(e2.date(e2.date() + Math.round(t2 * r2)), l2);
5753
+ };
5754
+ if ($2 === c)
5755
+ return this.set(c, this.$M + r2);
5756
+ if ($2 === h)
5757
+ return this.set(h, this.$y + r2);
5758
+ if ($2 === a)
5759
+ return y2(1);
5760
+ if ($2 === o)
5761
+ return y2(7);
5762
+ var M3 = (d2 = {}, d2[s] = e, d2[u] = n, d2[i] = t, d2)[$2] || 1, m3 = this.$d.getTime() + r2 * M3;
5763
+ return O.w(m3, this);
5764
+ }, m2.subtract = function(t2, e2) {
5765
+ return this.add(-1 * t2, e2);
5766
+ }, m2.format = function(t2) {
5767
+ var e2 = this, n2 = this.$locale();
5768
+ if (!this.isValid())
5769
+ return n2.invalidDate || l;
5770
+ var r2 = t2 || "YYYY-MM-DDTHH:mm:ssZ", i2 = O.z(this), s2 = this.$H, u2 = this.$m, a2 = this.$M, o2 = n2.weekdays, c2 = n2.months, f2 = n2.meridiem, h2 = function(t3, n3, i3, s3) {
5771
+ return t3 && (t3[n3] || t3(e2, r2)) || i3[n3].slice(0, s3);
5772
+ }, d2 = function(t3) {
5773
+ return O.s(s2 % 12 || 12, t3, "0");
5774
+ }, $2 = f2 || function(t3, e3, n3) {
5775
+ var r3 = t3 < 12 ? "AM" : "PM";
5776
+ return n3 ? r3.toLowerCase() : r3;
5777
+ };
5778
+ return r2.replace(y, function(t3, r3) {
5779
+ return r3 || function(t4) {
5780
+ switch (t4) {
5781
+ case "YY":
5782
+ return String(e2.$y).slice(-2);
5783
+ case "YYYY":
5784
+ return O.s(e2.$y, 4, "0");
5785
+ case "M":
5786
+ return a2 + 1;
5787
+ case "MM":
5788
+ return O.s(a2 + 1, 2, "0");
5789
+ case "MMM":
5790
+ return h2(n2.monthsShort, a2, c2, 3);
5791
+ case "MMMM":
5792
+ return h2(c2, a2);
5793
+ case "D":
5794
+ return e2.$D;
5795
+ case "DD":
5796
+ return O.s(e2.$D, 2, "0");
5797
+ case "d":
5798
+ return String(e2.$W);
5799
+ case "dd":
5800
+ return h2(n2.weekdaysMin, e2.$W, o2, 2);
5801
+ case "ddd":
5802
+ return h2(n2.weekdaysShort, e2.$W, o2, 3);
5803
+ case "dddd":
5804
+ return o2[e2.$W];
5805
+ case "H":
5806
+ return String(s2);
5807
+ case "HH":
5808
+ return O.s(s2, 2, "0");
5809
+ case "h":
5810
+ return d2(1);
5811
+ case "hh":
5812
+ return d2(2);
5813
+ case "a":
5814
+ return $2(s2, u2, true);
5815
+ case "A":
5816
+ return $2(s2, u2, false);
5817
+ case "m":
5818
+ return String(u2);
5819
+ case "mm":
5820
+ return O.s(u2, 2, "0");
5821
+ case "s":
5822
+ return String(e2.$s);
5823
+ case "ss":
5824
+ return O.s(e2.$s, 2, "0");
5825
+ case "SSS":
5826
+ return O.s(e2.$ms, 3, "0");
5827
+ case "Z":
5828
+ return i2;
5829
+ }
5830
+ return null;
5831
+ }(t3) || i2.replace(":", "");
5832
+ });
5833
+ }, m2.utcOffset = function() {
5834
+ return 15 * -Math.round(this.$d.getTimezoneOffset() / 15);
5835
+ }, m2.diff = function(r2, d2, l2) {
5836
+ var $2, y2 = this, M3 = O.p(d2), m3 = w(r2), v2 = (m3.utcOffset() - this.utcOffset()) * e, g2 = this - m3, D2 = function() {
5837
+ return O.m(y2, m3);
5838
+ };
5839
+ switch (M3) {
5840
+ case h:
5841
+ $2 = D2() / 12;
5842
+ break;
5843
+ case c:
5844
+ $2 = D2();
5845
+ break;
5846
+ case f:
5847
+ $2 = D2() / 3;
5848
+ break;
5849
+ case o:
5850
+ $2 = (g2 - v2) / 6048e5;
5851
+ break;
5852
+ case a:
5853
+ $2 = (g2 - v2) / 864e5;
5854
+ break;
5855
+ case u:
5856
+ $2 = g2 / n;
5857
+ break;
5858
+ case s:
5859
+ $2 = g2 / e;
5860
+ break;
5861
+ case i:
5862
+ $2 = g2 / t;
5863
+ break;
5864
+ default:
5865
+ $2 = g2;
5866
+ }
5867
+ return l2 ? $2 : O.a($2);
5868
+ }, m2.daysInMonth = function() {
5869
+ return this.endOf(c).$D;
5870
+ }, m2.$locale = function() {
5871
+ return D[this.$L];
5872
+ }, m2.locale = function(t2, e2) {
5873
+ if (!t2)
5874
+ return this.$L;
5875
+ var n2 = this.clone(), r2 = S(t2, e2, true);
5876
+ return r2 && (n2.$L = r2), n2;
5877
+ }, m2.clone = function() {
5878
+ return O.w(this.$d, this);
5879
+ }, m2.toDate = function() {
5880
+ return new Date(this.valueOf());
5881
+ }, m2.toJSON = function() {
5882
+ return this.isValid() ? this.toISOString() : null;
5883
+ }, m2.toISOString = function() {
5884
+ return this.$d.toISOString();
5885
+ }, m2.toString = function() {
5886
+ return this.$d.toUTCString();
5887
+ }, M2;
5888
+ }(), _2 = b.prototype;
5889
+ return w.prototype = _2, [["$ms", r], ["$s", i], ["$m", s], ["$H", u], ["$W", a], ["$M", c], ["$y", h], ["$D", d]].forEach(function(t2) {
5890
+ _2[t2[1]] = function(e2) {
5891
+ return this.$g(e2, t2[0], t2[1]);
5892
+ };
5893
+ }), w.extend = function(t2, e2) {
5894
+ return t2.$i || (t2(e2, b, w), t2.$i = true), w;
5895
+ }, w.locale = S, w.isDayjs = p, w.unix = function(t2) {
5896
+ return w(1e3 * t2);
5897
+ }, w.en = D[g], w.Ls = D, w.p = {}, w;
5898
+ });
5899
+ }
5900
+ });
5901
+
5604
5902
  // src/index.ts
5605
5903
  var src_exports = {};
5606
5904
  __export(src_exports, {
@@ -6377,6 +6675,7 @@ __export(users_exports3, {
6377
6675
  bulkGetGlobalUsersById: () => bulkGetGlobalUsersById,
6378
6676
  bulkUpdateGlobalUsers: () => bulkUpdateGlobalUsers,
6379
6677
  cleanseUserObject: () => cleanseUserObject,
6678
+ doesUserExist: () => doesUserExist,
6380
6679
  getAccountHolderFromUserIds: () => getAccountHolderFromUserIds,
6381
6680
  getAllUserIds: () => getAllUserIds,
6382
6681
  getById: () => getById,
@@ -6949,6 +7248,7 @@ var OperatorOptions = {
6949
7248
 
6950
7249
  // ../shared-core/src/filters.ts
6951
7250
  init_src();
7251
+ var import_dayjs = __toESM(require_dayjs_min());
6952
7252
 
6953
7253
  // ../shared-core/src/helpers/integrations.ts
6954
7254
  init_src();
@@ -7193,7 +7493,7 @@ function removeUserPassword(users) {
7193
7493
  }
7194
7494
  return users;
7195
7495
  }
7196
- var isSupportedUserSearch = (query) => {
7496
+ function isSupportedUserSearch(query) {
7197
7497
  const allowed = [
7198
7498
  { op: "string" /* STRING */, key: "email" },
7199
7499
  { op: "equal" /* EQUAL */, key: "_id" }
@@ -7214,8 +7514,8 @@ var isSupportedUserSearch = (query) => {
7214
7514
  }
7215
7515
  }
7216
7516
  return true;
7217
- };
7218
- var bulkGetGlobalUsersById = async (userIds, opts) => {
7517
+ }
7518
+ async function bulkGetGlobalUsersById(userIds, opts) {
7219
7519
  const db = getGlobalDB();
7220
7520
  let users = (await db.allDocs({
7221
7521
  keys: userIds,
@@ -7225,8 +7525,8 @@ var bulkGetGlobalUsersById = async (userIds, opts) => {
7225
7525
  users = removeUserPassword(users);
7226
7526
  }
7227
7527
  return users;
7228
- };
7229
- var getAllUserIds = async () => {
7528
+ }
7529
+ async function getAllUserIds() {
7230
7530
  const db = getGlobalDB();
7231
7531
  const startKey = `${"us" /* USER */}${SEPARATOR}`;
7232
7532
  const response = await db.allDocs({
@@ -7234,11 +7534,11 @@ var getAllUserIds = async () => {
7234
7534
  endkey: `${startKey}${UNICODE_MAX}`
7235
7535
  });
7236
7536
  return response.rows.map((row) => row.id);
7237
- };
7238
- var bulkUpdateGlobalUsers = async (users) => {
7537
+ }
7538
+ async function bulkUpdateGlobalUsers(users) {
7239
7539
  const db = getGlobalDB();
7240
7540
  return await db.bulkDocs(users);
7241
- };
7541
+ }
7242
7542
  async function getById(id, opts) {
7243
7543
  const db = getGlobalDB();
7244
7544
  let user = await db.get(id);
@@ -7247,7 +7547,7 @@ async function getById(id, opts) {
7247
7547
  }
7248
7548
  return user;
7249
7549
  }
7250
- var getGlobalUserByEmail = async (email, opts) => {
7550
+ async function getGlobalUserByEmail(email, opts) {
7251
7551
  if (email == null) {
7252
7552
  throw "Must supply an email address to view";
7253
7553
  }
@@ -7263,8 +7563,19 @@ var getGlobalUserByEmail = async (email, opts) => {
7263
7563
  user = removeUserPassword(user);
7264
7564
  }
7265
7565
  return user;
7266
- };
7267
- var searchGlobalUsersByApp = async (appId, opts, getOpts) => {
7566
+ }
7567
+ async function doesUserExist(email) {
7568
+ try {
7569
+ const user = await getGlobalUserByEmail(email);
7570
+ if (Array.isArray(user) || user != null) {
7571
+ return true;
7572
+ }
7573
+ } catch (err) {
7574
+ return false;
7575
+ }
7576
+ return false;
7577
+ }
7578
+ async function searchGlobalUsersByApp(appId, opts, getOpts) {
7268
7579
  if (typeof appId !== "string") {
7269
7580
  throw new Error("Must provide a string based app ID");
7270
7581
  }
@@ -7281,8 +7592,8 @@ var searchGlobalUsersByApp = async (appId, opts, getOpts) => {
7281
7592
  users = removeUserPassword(users);
7282
7593
  }
7283
7594
  return users;
7284
- };
7285
- var searchGlobalUsersByAppAccess = async (appId, opts) => {
7595
+ }
7596
+ async function searchGlobalUsersByAppAccess(appId, opts) {
7286
7597
  const roleSelector = `roles.${appId}`;
7287
7598
  let orQuery = [
7288
7599
  {
@@ -7311,14 +7622,14 @@ var searchGlobalUsersByAppAccess = async (appId, opts) => {
7311
7622
  };
7312
7623
  const resp = await directCouchFind(getGlobalDBName(), searchOptions);
7313
7624
  return resp.rows;
7314
- };
7315
- var getGlobalUserByAppPage = (appId, user) => {
7625
+ }
7626
+ function getGlobalUserByAppPage(appId, user) {
7316
7627
  if (!user) {
7317
7628
  return;
7318
7629
  }
7319
7630
  return generateAppUserID(getProdAppID(appId), user._id);
7320
- };
7321
- var searchGlobalUsersByEmail = async (email, opts, getOpts) => {
7631
+ }
7632
+ async function searchGlobalUsersByEmail(email, opts, getOpts) {
7322
7633
  if (typeof email !== "string") {
7323
7634
  throw new Error("Must provide a string to search by");
7324
7635
  }
@@ -7337,14 +7648,14 @@ var searchGlobalUsersByEmail = async (email, opts, getOpts) => {
7337
7648
  users = removeUserPassword(users);
7338
7649
  }
7339
7650
  return users;
7340
- };
7651
+ }
7341
7652
  var PAGE_LIMIT = 8;
7342
- var paginatedUsers = async ({
7653
+ async function paginatedUsers({
7343
7654
  bookmark,
7344
7655
  query,
7345
7656
  appId,
7346
7657
  limit
7347
- } = {}) => {
7658
+ } = {}) {
7348
7659
  const db = getGlobalDB();
7349
7660
  const pageSize = limit ?? PAGE_LIMIT;
7350
7661
  const pageLimit = pageSize + 1;
@@ -7373,7 +7684,7 @@ var paginatedUsers = async ({
7373
7684
  property,
7374
7685
  getKey
7375
7686
  });
7376
- };
7687
+ }
7377
7688
  async function getUserCount() {
7378
7689
  const response = await queryGlobalViewRaw("by_email2" /* USER_BY_EMAIL */, {
7379
7690
  limit: 0,
@@ -8126,7 +8437,6 @@ __export(installation_exports, {
8126
8437
  getInstallFromDB: () => getInstallFromDB
8127
8438
  });
8128
8439
  init_db4();
8129
- init_db4();
8130
8440
  init_src();
8131
8441
  init_context2();
8132
8442
  var import_semver = __toESM(require("semver"));
@@ -10398,6 +10708,29 @@ var UserDB = class _UserDB {
10398
10708
  await user_exports.invalidateUser(userId);
10399
10709
  await invalidateSessions(userId, { reason: "deletion" });
10400
10710
  }
10711
+ static async createAdminUser(email, password, tenantId, opts) {
10712
+ const user = {
10713
+ email,
10714
+ password,
10715
+ createdAt: Date.now(),
10716
+ roles: {},
10717
+ builder: {
10718
+ global: true
10719
+ },
10720
+ admin: {
10721
+ global: true
10722
+ },
10723
+ tenantId
10724
+ };
10725
+ if (opts?.ssoId) {
10726
+ user.ssoId = opts.ssoId;
10727
+ }
10728
+ await bustCache("checklist" /* CHECKLIST */);
10729
+ return await _UserDB.save(user, {
10730
+ hashPassword: opts?.hashPassword,
10731
+ requirePassword: opts?.requirePassword
10732
+ });
10733
+ }
10401
10734
  static async getGroups(groupIds) {
10402
10735
  return await this.groups.getBulk(groupIds);
10403
10736
  }
@@ -10635,7 +10968,6 @@ async function getCode2(code) {
10635
10968
  // src/configs/configs.ts
10636
10969
  init_context2();
10637
10970
  init_environment2();
10638
- init_environment2();
10639
10971
  function generateConfigID(type) {
10640
10972
  return `${"config" /* CONFIG */}${SEPARATOR}${type}`;
10641
10973
  }
@@ -11147,7 +11479,6 @@ var GLOBAL_BUILDER = "globalBuilder" /* GLOBAL_BUILDER */;
11147
11479
  // src/security/roles.ts
11148
11480
  init_db4();
11149
11481
  init_context2();
11150
- init_db4();
11151
11482
  var import_cloneDeep2 = __toESM(require("lodash/fp/cloneDeep"));
11152
11483
  var BUILTIN_ROLE_IDS = {
11153
11484
  ADMIN: "ADMIN",