@feedmepos/mf-common 1.8.39 → 1.9.0

Sign up to get free protection for your applications and to get access to all the features.
package/dist/app.js CHANGED
@@ -485,6 +485,9 @@ FeedMeAuth._token = null;
485
485
  FeedMeAuth.authStateChangeCallBackId = 1;
486
486
  window.FeedMeAuthGlobal = FeedMeAuth;
487
487
  var commonjsGlobal = typeof globalThis !== "undefined" ? globalThis : typeof window !== "undefined" ? window : typeof global !== "undefined" ? global : typeof self !== "undefined" ? self : {};
488
+ function getDefaultExportFromCjs(x) {
489
+ return x && x.__esModule && Object.prototype.hasOwnProperty.call(x, "default") ? x["default"] : x;
490
+ }
488
491
  function getAugmentedNamespace(n) {
489
492
  if (n.__esModule)
490
493
  return n;
@@ -44878,14 +44881,14 @@ var __importDefault = commonjsGlobal && commonjsGlobal.__importDefault || functi
44878
44881
  return mod && mod.__esModule ? mod : { "default": mod };
44879
44882
  };
44880
44883
  Object.defineProperty(utils$3, "__esModule", { value: true });
44881
- utils$3.clone = clone;
44884
+ utils$3.clone = clone$1;
44882
44885
  utils$3.randomString = randomString;
44883
44886
  utils$3.encode = encode$2;
44884
44887
  utils$3.decode = decode;
44885
44888
  utils$3.hexStringToBase64 = hexStringToBase64;
44886
44889
  utils$3.base64ToHexString = base64ToHexString;
44887
44890
  const fn_1 = __importDefault(fn$1);
44888
- function clone(param) {
44891
+ function clone$1(param) {
44889
44892
  return JSON.parse(JSON.stringify(param));
44890
44893
  }
44891
44894
  function randomString(length = 10) {
@@ -47561,6 +47564,7 @@ class FmpUser {
47561
47564
  __publicField(this, "photoURL");
47562
47565
  __publicField(this, "displayName");
47563
47566
  __publicField(this, "phoneNumber");
47567
+ __publicField(this, "_role");
47564
47568
  __publicField(this, "role");
47565
47569
  __publicField(this, "_adminPermissions", []);
47566
47570
  __publicField(this, "_permissions", []);
@@ -47569,6 +47573,7 @@ class FmpUser {
47569
47573
  this.photoURL = user2.photoURL;
47570
47574
  this.displayName = user2.displayName;
47571
47575
  this.phoneNumber = user2.phoneNumber;
47576
+ this._role = role;
47572
47577
  this.role = {
47573
47578
  isAdmin: role === "admin",
47574
47579
  isStaff: role === "staff",
@@ -47611,12 +47616,15 @@ const coreStore = defineStore("portal-core", () => {
47611
47616
  throw new Error("User already logged in");
47612
47617
  }
47613
47618
  await new Promise((resolve) => {
47614
- const unsubscribe = FeedMeAuth.onAuthStateChanged(async (user2) => {
47615
- if (!user2)
47616
- return;
47617
- unsubscribe();
47618
- await setUser(user2);
47619
- resolve(user2);
47619
+ FeedMeAuth.onAuthStateChanged(async (user2) => {
47620
+ if (sessionUser.value && !user2) {
47621
+ window.location.reload();
47622
+ } else if (!sessionUser.value && user2) {
47623
+ await setUser(user2);
47624
+ resolve(user2);
47625
+ } else if (user2) {
47626
+ await setUser(user2);
47627
+ }
47620
47628
  });
47621
47629
  FeedMeAuth.signIn({ waitForInitialAuthState: true });
47622
47630
  });
@@ -47627,7 +47635,6 @@ const coreStore = defineStore("portal-core", () => {
47627
47635
  }
47628
47636
  async function signOut() {
47629
47637
  FeedMeAuth.signOut();
47630
- await setUser(null);
47631
47638
  }
47632
47639
  async function setUser(user2) {
47633
47640
  if (user2) {
@@ -47636,31 +47643,29 @@ const coreStore = defineStore("portal-core", () => {
47636
47643
  }
47637
47644
  const { customClaims } = await FeedMeAuth.getUserClaims();
47638
47645
  const agents = await readAvailableAgents();
47639
- sessionUser.value = new FmpUser(user2, customClaims ?? {}, agents);
47646
+ const _sessionUser = new FmpUser(user2, customClaims ?? {}, agents);
47640
47647
  await readBusinesses();
47641
- await fetchUserAdminPermissions();
47642
- await fetchUserPermissions();
47648
+ await Promise.all([fetchUserAdminPermissions(_sessionUser), fetchUserPermissions(_sessionUser)]);
47649
+ sessionUser.value = _sessionUser;
47643
47650
  } else {
47644
47651
  sessionUser.value = null;
47645
47652
  businesses.value = [];
47646
47653
  changeBusiness(void 0);
47647
47654
  }
47648
47655
  }
47649
- async function fetchUserAdminPermissions() {
47650
- const user2 = sessionUser.value;
47656
+ async function fetchUserAdminPermissions(_sessionUser) {
47657
+ const user2 = _sessionUser || sessionUser.value;
47651
47658
  if (!user2)
47652
47659
  return;
47653
47660
  const adminPermissions = await readUserAdminPermission();
47654
47661
  user2.setAdminPermisssions(adminPermissions);
47655
- sessionUser.value = user2;
47656
47662
  }
47657
- async function fetchUserPermissions() {
47658
- const user2 = sessionUser.value;
47663
+ async function fetchUserPermissions(_sessionUser) {
47664
+ const user2 = _sessionUser || sessionUser.value;
47659
47665
  if (!user2 || !currentBusiness.value)
47660
47666
  return;
47661
47667
  const businessPermissions = await readUserBusinessPermission(currentBusiness.value._id);
47662
47668
  user2.setPermissions(businessPermissions);
47663
- sessionUser.value = user2;
47664
47669
  }
47665
47670
  const namespace = ref("dev");
47666
47671
  function setNamespace(ns) {
@@ -49856,10 +49861,7 @@ const _sfc_main$5 = /* @__PURE__ */ defineComponent({
49856
49861
  const _component_fm_button = resolveComponent("fm-button");
49857
49862
  const _component_FmIcon = resolveComponent("FmIcon");
49858
49863
  const _component_FmButton = resolveComponent("FmButton");
49859
- return openBlock(), createBlock(Teleport, {
49860
- defer: "",
49861
- to: "#portal-bottom-bar"
49862
- }, [
49864
+ return openBlock(), createBlock(Teleport, { to: "body" }, [
49863
49865
  createVNode(Transition, { name: "fade" }, {
49864
49866
  default: withCtx(() => [
49865
49867
  unref(_dropdownOpened) ? (openBlock(), createBlock(_component_fm_overlay, { key: 0 })) : createCommentVNode("", true)
@@ -50024,8 +50026,8 @@ const _sfc_main$5 = /* @__PURE__ */ defineComponent({
50024
50026
  };
50025
50027
  }
50026
50028
  });
50027
- const PortalTablet_vue_vue_type_style_index_0_scoped_39ba7604_lang = "";
50028
- const PortalTablet = /* @__PURE__ */ _export_sfc(_sfc_main$5, [["__scopeId", "data-v-39ba7604"]]);
50029
+ const PortalTablet_vue_vue_type_style_index_0_scoped_31675795_lang = "";
50030
+ const PortalTablet = /* @__PURE__ */ _export_sfc(_sfc_main$5, [["__scopeId", "data-v-31675795"]]);
50029
50031
  const _hoisted_1$2 = { class: "flex h-dvh w-screen flex-col bg-fm-color-neutral-white" };
50030
50032
  const _hoisted_2$1 = { class: "flex items-center justify-between px-16 pb-8 pt-16" };
50031
50033
  const _hoisted_3$1 = { class: "p-16" };
@@ -50397,10 +50399,7 @@ const _sfc_main$3 = /* @__PURE__ */ defineComponent({
50397
50399
  modelValue: openAccountManagementDialog.value,
50398
50400
  "onUpdate:modelValue": _cache[1] || (_cache[1] = ($event) => openAccountManagementDialog.value = $event)
50399
50401
  }, null, 8, ["modelValue"]),
50400
- (openBlock(), createBlock(Teleport, {
50401
- defer: "",
50402
- to: "#portal-bottom-bar"
50403
- }, [
50402
+ (openBlock(), createBlock(Teleport, { to: "body" }, [
50404
50403
  createVNode(Transition, { name: "fade" }, {
50405
50404
  default: withCtx(() => [
50406
50405
  unref(_dropdownOpened) ? (openBlock(), createBlock(_component_fm_overlay, {
@@ -50731,8 +50730,8 @@ const _sfc_main$3 = /* @__PURE__ */ defineComponent({
50731
50730
  };
50732
50731
  }
50733
50732
  });
50734
- const PortalMobile_vue_vue_type_style_index_0_scoped_589eebcb_lang = "";
50735
- const PortalMobile = /* @__PURE__ */ _export_sfc(_sfc_main$3, [["__scopeId", "data-v-589eebcb"]]);
50733
+ const PortalMobile_vue_vue_type_style_index_0_scoped_03c872a8_lang = "";
50734
+ const PortalMobile = /* @__PURE__ */ _export_sfc(_sfc_main$3, [["__scopeId", "data-v-03c872a8"]]);
50736
50735
  const _sfc_main$2 = /* @__PURE__ */ defineComponent({
50737
50736
  __name: "PortalSidebar",
50738
50737
  setup(__props) {
@@ -50816,8 +50815,7 @@ const _sfc_main$1 = /* @__PURE__ */ defineComponent({
50816
50815
  createElementVNode("div", _hoisted_1, [
50817
50816
  renderSlot(_ctx.$slots, "default")
50818
50817
  ])
50819
- ], 2),
50820
- _cache[8] || (_cache[8] = createElementVNode("div", { id: "portal-bottom-bar" }, null, -1))
50818
+ ], 2)
50821
50819
  ])
50822
50820
  ], 64);
50823
50821
  };
@@ -50857,9 +50855,6 @@ const _sfc_main = /* @__PURE__ */ defineComponent({
50857
50855
  }
50858
50856
  async function logout() {
50859
50857
  await coreStore2.signOut();
50860
- window.location.replace(
50861
- `${FeedMeAuth.baseUrl}/login?fm_redirect=${encodeURIComponent(window.location.href)}`
50862
- );
50863
50858
  }
50864
50859
  async function gotoPortalV2() {
50865
50860
  const isDev = coreStore2.namespace.value === "dev";
@@ -50867,16 +50862,6 @@ const _sfc_main = /* @__PURE__ */ defineComponent({
50867
50862
  }
50868
50863
  const dropdownOpened = ref(false);
50869
50864
  const router = useRouter();
50870
- onMounted(async () => {
50871
- FeedMeAuth.onAuthStateChanged(async (user22) => {
50872
- var _a;
50873
- if (((_a = coreStore2.sessionUser.value) == null ? void 0 : _a.id) === (user22 == null ? void 0 : user22.id))
50874
- return;
50875
- await coreStore2.setUser(user22);
50876
- });
50877
- if (!coreStore2.sessionUser.value)
50878
- signIn();
50879
- });
50880
50865
  function onSelectApp(app) {
50881
50866
  if (app.external) {
50882
50867
  window.location.href = app.path;
@@ -50918,6 +50903,964 @@ const _sfc_main = /* @__PURE__ */ defineComponent({
50918
50903
  };
50919
50904
  }
50920
50905
  });
50906
+ var sift_csp_min = { exports: {} };
50907
+ (function(module, exports) {
50908
+ !function(n, t) {
50909
+ module.exports = t();
50910
+ }(commonjsGlobal, function() {
50911
+ return function(n) {
50912
+ var t = {};
50913
+ function r(e) {
50914
+ if (t[e])
50915
+ return t[e].exports;
50916
+ var o = t[e] = { i: e, l: false, exports: {} };
50917
+ return n[e].call(o.exports, o, o.exports, r), o.l = true, o.exports;
50918
+ }
50919
+ return r.m = n, r.c = t, r.d = function(n2, t2, e) {
50920
+ r.o(n2, t2) || Object.defineProperty(n2, t2, { enumerable: true, get: e });
50921
+ }, r.r = function(n2) {
50922
+ "undefined" != typeof Symbol && Symbol.toStringTag && Object.defineProperty(n2, Symbol.toStringTag, { value: "Module" }), Object.defineProperty(n2, "__esModule", { value: true });
50923
+ }, r.t = function(n2, t2) {
50924
+ if (1 & t2 && (n2 = r(n2)), 8 & t2)
50925
+ return n2;
50926
+ if (4 & t2 && "object" == typeof n2 && n2 && n2.__esModule)
50927
+ return n2;
50928
+ var e = /* @__PURE__ */ Object.create(null);
50929
+ if (r.r(e), Object.defineProperty(e, "default", { enumerable: true, value: n2 }), 2 & t2 && "string" != typeof n2)
50930
+ for (var o in n2)
50931
+ r.d(
50932
+ e,
50933
+ o,
50934
+ (function(t3) {
50935
+ return n2[t3];
50936
+ }).bind(null, o)
50937
+ );
50938
+ return e;
50939
+ }, r.n = function(n2) {
50940
+ var t2 = n2 && n2.__esModule ? function() {
50941
+ return n2.default;
50942
+ } : function() {
50943
+ return n2;
50944
+ };
50945
+ return r.d(t2, "a", t2), t2;
50946
+ }, r.o = function(n2, t2) {
50947
+ return Object.prototype.hasOwnProperty.call(n2, t2);
50948
+ }, r.p = "", r(r.s = 0);
50949
+ }([
50950
+ function(n, t, r) {
50951
+ n.exports = r(1);
50952
+ },
50953
+ function(n, t, r) {
50954
+ function e(n2) {
50955
+ return (e = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function(n3) {
50956
+ return typeof n3;
50957
+ } : function(n3) {
50958
+ return n3 && "function" == typeof Symbol && n3.constructor === Symbol && n3 !== Symbol.prototype ? "symbol" : typeof n3;
50959
+ })(n2);
50960
+ }
50961
+ function o(n2) {
50962
+ var t2 = "[object " + n2 + "]";
50963
+ return function(n3) {
50964
+ return Object.prototype.toString.call(n3) === t2;
50965
+ };
50966
+ }
50967
+ r.r(t), r.d(t, "default", function() {
50968
+ return m;
50969
+ }), r.d(t, "compare", function() {
50970
+ return j;
50971
+ }), r.d(t, "comparable", function() {
50972
+ return O;
50973
+ });
50974
+ var u = o("Array"), i = o("Object"), f = o("Function");
50975
+ function c(n2, t2) {
50976
+ return f(n2.get) ? n2.get(t2) : n2[t2];
50977
+ }
50978
+ function a(n2) {
50979
+ return function(t2, r2) {
50980
+ if (!u(r2) || !r2.length)
50981
+ return n2(t2, r2);
50982
+ for (var e2 = 0, o2 = r2.length; e2 < o2; e2++)
50983
+ if (n2(t2, c(r2, e2)))
50984
+ return true;
50985
+ return false;
50986
+ };
50987
+ }
50988
+ function l(n2) {
50989
+ return function(t2, r2) {
50990
+ if (!u(r2) || !r2.length)
50991
+ return n2(t2, r2);
50992
+ for (var e2 = 0, o2 = r2.length; e2 < o2; e2++)
50993
+ if (!n2(t2, c(r2, e2)))
50994
+ return false;
50995
+ return true;
50996
+ };
50997
+ }
50998
+ function p(n2, t2, r2, e2) {
50999
+ return n2.validate(n2.options, t2, r2, e2);
51000
+ }
51001
+ var s = {
51002
+ $eq: a(function(n2, t2) {
51003
+ return n2(t2);
51004
+ }),
51005
+ $ne: l(function(n2, t2) {
51006
+ return n2(t2);
51007
+ }),
51008
+ $gt: a(function(n2, t2) {
51009
+ return n2(t2);
51010
+ }),
51011
+ $gte: a(function(n2, t2) {
51012
+ return n2(t2);
51013
+ }),
51014
+ $lt: a(function(n2, t2) {
51015
+ return n2(t2);
51016
+ }),
51017
+ $lte: a(function(n2, t2) {
51018
+ return n2(t2);
51019
+ }),
51020
+ $mod: a(function(n2, t2) {
51021
+ return n2(t2);
51022
+ }),
51023
+ $in: function(n2, t2) {
51024
+ return n2(t2);
51025
+ },
51026
+ $nin: function(n2, t2) {
51027
+ return n2(t2);
51028
+ },
51029
+ $not: function(n2, t2, r2, e2) {
51030
+ return n2(t2, r2, e2);
51031
+ },
51032
+ $type: function(n2, t2) {
51033
+ return n2(t2);
51034
+ },
51035
+ $all: function(n2, t2, r2, e2) {
51036
+ return s.$and(n2, t2, r2, e2);
51037
+ },
51038
+ $size: function(n2, t2) {
51039
+ return !!t2 && n2 === t2.length;
51040
+ },
51041
+ $or: function(n2, t2, r2, e2) {
51042
+ for (var o2 = 0, u2 = n2.length; o2 < u2; o2++)
51043
+ if (p(c(n2, o2), t2, r2, e2))
51044
+ return true;
51045
+ return false;
51046
+ },
51047
+ $nor: function(n2, t2, r2, e2) {
51048
+ return !s.$or(n2, t2, r2, e2);
51049
+ },
51050
+ $and: function(n2, t2, r2, e2) {
51051
+ for (var o2 = 0, u2 = n2.length; o2 < u2; o2++)
51052
+ if (!p(c(n2, o2), t2, r2, e2))
51053
+ return false;
51054
+ return true;
51055
+ },
51056
+ $regex: a(function(n2, t2) {
51057
+ return "string" == typeof t2 && n2.test(t2);
51058
+ }),
51059
+ $where: function(n2, t2, r2, e2) {
51060
+ return n2.call(t2, t2, r2, e2);
51061
+ },
51062
+ $elemMatch: function(n2, t2, r2, e2) {
51063
+ return u(t2) ? !!~function(n3, t3) {
51064
+ for (var r3 = 0; r3 < n3.length; r3++) {
51065
+ c(n3, r3);
51066
+ if (p(t3, c(n3, r3)))
51067
+ return r3;
51068
+ }
51069
+ return -1;
51070
+ }(t2, n2) : p(n2, t2, r2, e2);
51071
+ },
51072
+ $exists: function(n2, t2, r2, e2) {
51073
+ return e2.hasOwnProperty(r2) === n2;
51074
+ }
51075
+ }, g = {
51076
+ $eq: function(n2, t2, r2) {
51077
+ var e2 = r2.comparable, o2 = r2.compare;
51078
+ return n2 instanceof RegExp ? a(function(t3) {
51079
+ return "string" == typeof t3 && n2.test(t3);
51080
+ }) : n2 instanceof Function ? a(n2) : u(n2) && !n2.length ? a(function(n3) {
51081
+ return u(n3) && !n3.length;
51082
+ }) : a(
51083
+ null === n2 ? function(n3) {
51084
+ return null == n3;
51085
+ } : function(t3) {
51086
+ return 0 === o2(e2(t3), e2(n2));
51087
+ }
51088
+ );
51089
+ },
51090
+ $gt: function(n2, t2, r2) {
51091
+ var e2 = r2.comparable, o2 = r2.compare;
51092
+ return function(t3) {
51093
+ return o2(e2(t3), e2(n2)) > 0;
51094
+ };
51095
+ },
51096
+ $gte: function(n2, t2, r2) {
51097
+ var e2 = r2.comparable, o2 = r2.compare;
51098
+ return function(t3) {
51099
+ return o2(e2(t3), e2(n2)) >= 0;
51100
+ };
51101
+ },
51102
+ $lt: function(n2, t2, r2) {
51103
+ var e2 = r2.comparable, o2 = r2.compare;
51104
+ return function(t3) {
51105
+ return o2(e2(t3), e2(n2)) < 0;
51106
+ };
51107
+ },
51108
+ $lte: function(n2, t2, r2) {
51109
+ var e2 = r2.comparable, o2 = r2.compare;
51110
+ return function(t3) {
51111
+ return o2(e2(t3), e2(n2)) <= 0;
51112
+ };
51113
+ },
51114
+ $in: function(n2, t2, r2) {
51115
+ var o2 = r2.comparable;
51116
+ return function(t3) {
51117
+ if (!(t3 instanceof Array)) {
51118
+ var u2 = o2(t3);
51119
+ if (u2 === t3 && "object" === e(t3)) {
51120
+ for (f2 = n2.length; f2--; )
51121
+ if (String(n2[f2]) === String(t3) && "[object Object]" !== String(t3))
51122
+ return true;
51123
+ }
51124
+ if (void 0 === u2) {
51125
+ for (f2 = n2.length; f2--; )
51126
+ if (null == n2[f2])
51127
+ return true;
51128
+ }
51129
+ for (f2 = n2.length; f2--; ) {
51130
+ var i2 = p(h(c(n2, f2), r2), u2, f2, n2);
51131
+ if (i2 && "[object Object]" !== String(i2) && "[object Object]" !== String(u2))
51132
+ return true;
51133
+ }
51134
+ return !!~n2.indexOf(u2);
51135
+ }
51136
+ for (var f2 = t3.length; f2--; )
51137
+ if (~n2.indexOf(o2(c(t3, f2))))
51138
+ return true;
51139
+ return false;
51140
+ };
51141
+ },
51142
+ $nin: function(n2, t2, r2) {
51143
+ var e2 = g.$in(n2, t2, r2);
51144
+ return function(n3, t3, r3, o2) {
51145
+ return !e2(n3, t3, r3, o2);
51146
+ };
51147
+ },
51148
+ $mod: function(n2) {
51149
+ return function(t2) {
51150
+ return t2 % n2[0] == n2[1];
51151
+ };
51152
+ },
51153
+ $ne: function(n2, t2, r2) {
51154
+ var e2 = g.$eq(n2, t2, r2);
51155
+ return l(function(n3, t3, r3, o2) {
51156
+ return !e2(n3, t3, r3, o2);
51157
+ });
51158
+ },
51159
+ $and: function(n2, t2, r2) {
51160
+ return n2.map(d(r2));
51161
+ },
51162
+ $all: function(n2, t2, r2) {
51163
+ return g.$and(n2, t2, r2);
51164
+ },
51165
+ $or: function(n2, t2, r2) {
51166
+ return n2.map(d(r2));
51167
+ },
51168
+ $nor: function(n2, t2, r2) {
51169
+ return n2.map(d(r2));
51170
+ },
51171
+ $not: function(n2, t2, r2) {
51172
+ var e2 = d(r2)(n2);
51173
+ return function(n3, t3, r3) {
51174
+ return !p(e2, n3, t3, r3);
51175
+ };
51176
+ },
51177
+ $type: function(n2) {
51178
+ return function(t2, r2, e2) {
51179
+ return null != t2 && (t2 instanceof n2 || t2.constructor == n2);
51180
+ };
51181
+ },
51182
+ $regex: function(n2, t2) {
51183
+ return new RegExp(n2, t2.$options);
51184
+ },
51185
+ $where: function(n2) {
51186
+ if ("function" == typeof n2)
51187
+ return n2;
51188
+ throw new Error(
51189
+ 'In CSP mode, sift does not support strings in "$where" condition'
51190
+ );
51191
+ },
51192
+ $elemMatch: function(n2, t2, r2) {
51193
+ return d(r2)(n2);
51194
+ },
51195
+ $exists: function(n2) {
51196
+ return !!n2;
51197
+ }
51198
+ };
51199
+ function v(n2, t2) {
51200
+ return { options: n2, validate: t2 };
51201
+ }
51202
+ function $(n2, t2) {
51203
+ var r2 = n2.keyPath, e2 = n2.child, o2 = n2.query, i2 = [];
51204
+ if (function n3(t3, r3, e3, o3, i3) {
51205
+ if (e3 === r3.length || null == t3)
51206
+ return void i3.push([t3, r3[e3 - 1], o3]);
51207
+ var f3 = c(r3, e3);
51208
+ if (u(t3) && isNaN(Number(f3)))
51209
+ for (var a3 = 0, l3 = t3.length; a3 < l3; a3++)
51210
+ n3(c(t3, a3), r3, e3, t3, i3);
51211
+ else
51212
+ n3(c(t3, f3), r3, e3 + 1, t3, i3);
51213
+ }(t2, r2, 0, t2, i2), 1 === i2.length) {
51214
+ var f2 = i2[0];
51215
+ return p(e2, f2[0], f2[1], f2[2]);
51216
+ }
51217
+ for (var a2 = o2 && void 0 !== o2.$ne, l2 = a2, s2 = 0; s2 < i2.length; s2++) {
51218
+ var g2 = i2[s2], v2 = p(e2, g2[0], g2[1], g2[2]);
51219
+ a2 ? l2 &= v2 : l2 |= v2;
51220
+ }
51221
+ return l2;
51222
+ }
51223
+ function b(n2, t2, r2) {
51224
+ return v({ keyPath: n2, child: t2, query: r2 }, $);
51225
+ }
51226
+ function d(n2) {
51227
+ var t2 = n2.comparable, r2 = n2.expressions, e2 = function(n3) {
51228
+ var t3;
51229
+ return (!n3 || (!(t3 = n3) || t3.constructor !== Object && t3.constructor !== Array && "function Object() { [native code] }" !== t3.constructor.toString() && "function Array() { [native code] }" !== t3.constructor.toString() || t3.toJSON)) && (n3 = { $eq: n3 }), n3;
51230
+ }, o2 = function(e3) {
51231
+ e3 = t2(e3);
51232
+ var o3 = [];
51233
+ for (var i2 in e3) {
51234
+ var f2 = e3[i2];
51235
+ if ("$options" !== i2) {
51236
+ var c2 = s[i2] || n2 && r2 && r2[i2];
51237
+ if (c2)
51238
+ g[i2] && (f2 = g[i2](f2, e3, n2)), o3.push(v(t2(f2), c2));
51239
+ else {
51240
+ if (36 === i2.charCodeAt(0))
51241
+ throw new Error("Unknown operation " + i2);
51242
+ var a2 = i2.split(".");
51243
+ o3.push(b(a2, u2(f2), f2));
51244
+ }
51245
+ }
51246
+ }
51247
+ return 1 === o3.length ? o3[0] : v(o3, s.$and);
51248
+ }, u2 = function(n3) {
51249
+ return n3 = e2(n3), -1 === function n4(t3, r3) {
51250
+ if (!i(t3))
51251
+ return r3;
51252
+ for (var e3 in t3)
51253
+ r3.push(e3), n4(t3[e3], r3);
51254
+ return r3;
51255
+ }(n3, []).join(",").search(/[$.]/) ? v(n3, y) : o2(n3);
51256
+ };
51257
+ return function(n3) {
51258
+ return o2(e2(n3));
51259
+ };
51260
+ }
51261
+ function y(n2, t2) {
51262
+ if (Object.prototype.toString.call(n2) !== Object.prototype.toString.call(t2))
51263
+ return false;
51264
+ if (i(n2)) {
51265
+ if (Object.keys(n2).length !== Object.keys(t2).length)
51266
+ return false;
51267
+ for (var r2 in n2)
51268
+ if (!y(n2[r2], t2[r2]))
51269
+ return false;
51270
+ return true;
51271
+ }
51272
+ if (u(n2)) {
51273
+ if (n2.length !== t2.length)
51274
+ return false;
51275
+ for (var e2 = 0, o2 = n2.length; e2 < o2; e2++)
51276
+ if (!y(n2[e2], t2[e2]))
51277
+ return false;
51278
+ return true;
51279
+ }
51280
+ return n2 === t2;
51281
+ }
51282
+ function h(n2, t2) {
51283
+ var r2 = d(t2)(n2);
51284
+ return t2 && t2.select && (r2 = {
51285
+ options: r2,
51286
+ validate: function(n3, r3, e2, o2) {
51287
+ return p(n3, r3 && t2.select(r3), e2, o2);
51288
+ }
51289
+ }), r2;
51290
+ }
51291
+ function m(n2, t2) {
51292
+ var r2 = h(n2, t2 = Object.assign({ compare: j, comparable: O }, t2));
51293
+ return function(n3, t3, e2) {
51294
+ return p(r2, n3, t3, e2);
51295
+ };
51296
+ }
51297
+ function j(n2, t2) {
51298
+ if (y(n2, t2))
51299
+ return 0;
51300
+ if (e(n2) === e(t2)) {
51301
+ if (n2 > t2)
51302
+ return 1;
51303
+ if (n2 < t2)
51304
+ return -1;
51305
+ }
51306
+ }
51307
+ function O(n2) {
51308
+ return n2 instanceof Date ? n2.getTime() : u(n2) ? n2.map(O) : n2 && "function" == typeof n2.toJSON ? n2.toJSON() : n2;
51309
+ }
51310
+ }
51311
+ ]);
51312
+ });
51313
+ })(sift_csp_min);
51314
+ var sift_csp_minExports = sift_csp_min.exports;
51315
+ const sift = /* @__PURE__ */ getDefaultExportFromCjs(sift_csp_minExports);
51316
+ function _defineProperties(target, props) {
51317
+ for (var i = 0; i < props.length; i++) {
51318
+ var descriptor = props[i];
51319
+ descriptor.enumerable = descriptor.enumerable || false;
51320
+ descriptor.configurable = true;
51321
+ if ("value" in descriptor)
51322
+ descriptor.writable = true;
51323
+ Object.defineProperty(target, descriptor.key, descriptor);
51324
+ }
51325
+ }
51326
+ function _createClass(Constructor, protoProps, staticProps) {
51327
+ if (protoProps)
51328
+ _defineProperties(Constructor.prototype, protoProps);
51329
+ if (staticProps)
51330
+ _defineProperties(Constructor, staticProps);
51331
+ return Constructor;
51332
+ }
51333
+ function _inheritsLoose(subClass, superClass) {
51334
+ subClass.prototype = Object.create(superClass.prototype);
51335
+ subClass.prototype.constructor = subClass;
51336
+ subClass.__proto__ = superClass;
51337
+ }
51338
+ function _getPrototypeOf(o) {
51339
+ _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf2(o2) {
51340
+ return o2.__proto__ || Object.getPrototypeOf(o2);
51341
+ };
51342
+ return _getPrototypeOf(o);
51343
+ }
51344
+ function _setPrototypeOf(o, p) {
51345
+ _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf2(o2, p2) {
51346
+ o2.__proto__ = p2;
51347
+ return o2;
51348
+ };
51349
+ return _setPrototypeOf(o, p);
51350
+ }
51351
+ function isNativeReflectConstruct() {
51352
+ if (typeof Reflect === "undefined" || !Reflect.construct)
51353
+ return false;
51354
+ if (Reflect.construct.sham)
51355
+ return false;
51356
+ if (typeof Proxy === "function")
51357
+ return true;
51358
+ try {
51359
+ Date.prototype.toString.call(Reflect.construct(Date, [], function() {
51360
+ }));
51361
+ return true;
51362
+ } catch (e) {
51363
+ return false;
51364
+ }
51365
+ }
51366
+ function _construct(Parent, args, Class) {
51367
+ if (isNativeReflectConstruct()) {
51368
+ _construct = Reflect.construct;
51369
+ } else {
51370
+ _construct = function _construct2(Parent2, args2, Class2) {
51371
+ var a = [null];
51372
+ a.push.apply(a, args2);
51373
+ var Constructor = Function.bind.apply(Parent2, a);
51374
+ var instance = new Constructor();
51375
+ if (Class2)
51376
+ _setPrototypeOf(instance, Class2.prototype);
51377
+ return instance;
51378
+ };
51379
+ }
51380
+ return _construct.apply(null, arguments);
51381
+ }
51382
+ function _isNativeFunction(fn2) {
51383
+ return Function.toString.call(fn2).indexOf("[native code]") !== -1;
51384
+ }
51385
+ function _wrapNativeSuper(Class) {
51386
+ var _cache = typeof Map === "function" ? /* @__PURE__ */ new Map() : void 0;
51387
+ _wrapNativeSuper = function _wrapNativeSuper2(Class2) {
51388
+ if (Class2 === null || !_isNativeFunction(Class2))
51389
+ return Class2;
51390
+ if (typeof Class2 !== "function") {
51391
+ throw new TypeError("Super expression must either be null or a function");
51392
+ }
51393
+ if (typeof _cache !== "undefined") {
51394
+ if (_cache.has(Class2))
51395
+ return _cache.get(Class2);
51396
+ _cache.set(Class2, Wrapper);
51397
+ }
51398
+ function Wrapper() {
51399
+ return _construct(Class2, arguments, _getPrototypeOf(this).constructor);
51400
+ }
51401
+ Wrapper.prototype = Object.create(Class2.prototype, {
51402
+ constructor: {
51403
+ value: Wrapper,
51404
+ enumerable: false,
51405
+ writable: true,
51406
+ configurable: true
51407
+ }
51408
+ });
51409
+ return _setPrototypeOf(Wrapper, Class2);
51410
+ };
51411
+ return _wrapNativeSuper(Class);
51412
+ }
51413
+ function _assertThisInitialized(self2) {
51414
+ if (self2 === void 0) {
51415
+ throw new ReferenceError("this hasn't been initialised - super() hasn't been called");
51416
+ }
51417
+ return self2;
51418
+ }
51419
+ var getDefaultMessage = function getDefaultMessage2(error) {
51420
+ return 'Cannot execute "' + error.action + '" on "' + error.subjectName + '"';
51421
+ };
51422
+ var defaultErrorMessage = getDefaultMessage;
51423
+ var ForbiddenError = /* @__PURE__ */ function(_Error) {
51424
+ _inheritsLoose(ForbiddenError2, _Error);
51425
+ ForbiddenError2.setDefaultMessage = function setDefaultMessage(messageOrFn) {
51426
+ if (messageOrFn === null) {
51427
+ defaultErrorMessage = getDefaultMessage;
51428
+ } else {
51429
+ defaultErrorMessage = typeof messageOrFn === "string" ? function() {
51430
+ return messageOrFn;
51431
+ } : messageOrFn;
51432
+ }
51433
+ };
51434
+ ForbiddenError2.from = function from(ability) {
51435
+ var error = new this("");
51436
+ Object.defineProperty(error, "ability", {
51437
+ value: ability
51438
+ });
51439
+ return error;
51440
+ };
51441
+ function ForbiddenError2(message, options) {
51442
+ var _this;
51443
+ if (options === void 0) {
51444
+ options = {};
51445
+ }
51446
+ _this = _Error.call(this, message) || this;
51447
+ _this._setMetadata(options);
51448
+ _this.message = message || defaultErrorMessage(_assertThisInitialized(_this));
51449
+ _this._customMessage = null;
51450
+ if (typeof Error.captureStackTrace === "function") {
51451
+ _this.name = _this.constructor.name;
51452
+ Error.captureStackTrace(_assertThisInitialized(_this), _this.constructor);
51453
+ }
51454
+ return _this;
51455
+ }
51456
+ var _proto = ForbiddenError2.prototype;
51457
+ _proto.setMessage = function setMessage(message) {
51458
+ this._customMessage = message;
51459
+ return this;
51460
+ };
51461
+ _proto.throwUnlessCan = function throwUnlessCan(action, subject, field) {
51462
+ if (!this.ability) {
51463
+ throw new ReferenceError("Cannot throw FordiddenError without respective ability instance");
51464
+ }
51465
+ var rule = this.ability.relevantRuleFor(action, subject, field);
51466
+ if (rule && !rule.inverted) {
51467
+ return;
51468
+ }
51469
+ this._setMetadata({
51470
+ action,
51471
+ subject,
51472
+ field,
51473
+ subjectName: this.ability.subjectName(subject)
51474
+ });
51475
+ var reason = rule ? rule.reason : "";
51476
+ this.message = this._customMessage || reason || defaultErrorMessage(this);
51477
+ throw this;
51478
+ };
51479
+ _proto._setMetadata = function _setMetadata(options) {
51480
+ this.subject = options.subject;
51481
+ this.subjectName = options.subjectName;
51482
+ this.action = options.action;
51483
+ this.field = options.field;
51484
+ };
51485
+ return ForbiddenError2;
51486
+ }(_wrapNativeSuper(Error));
51487
+ function wrapArray(value) {
51488
+ return Array.isArray(value) ? value : [value];
51489
+ }
51490
+ function getSubjectName(subject) {
51491
+ if (!subject || typeof subject === "string") {
51492
+ return subject;
51493
+ }
51494
+ var Type = typeof subject === "object" ? subject.constructor : subject;
51495
+ return Type.modelName || Type.name;
51496
+ }
51497
+ function clone(object) {
51498
+ return JSON.parse(JSON.stringify(object));
51499
+ }
51500
+ var REGEXP_SPECIAL_CHARS = /[-/\\^$+?.()|[\]{}]/g;
51501
+ var REGEXP_ANY = /\.?\*+\.?/g;
51502
+ var REGEXP_STARS = /\*+/;
51503
+ var REGEXP_DOT = /\./g;
51504
+ function detectRegexpPattern(match, index, string) {
51505
+ var quantifier = string[0] === "*" || match[0] === "." && match[match.length - 1] === "." ? "+" : "*";
51506
+ var matcher = match.indexOf("**") === -1 ? "[^.]" : ".";
51507
+ var pattern = match.replace(REGEXP_DOT, "\\$&").replace(REGEXP_STARS, matcher + quantifier);
51508
+ return index + match.length === string.length ? "(?:" + pattern + ")?" : pattern;
51509
+ }
51510
+ function escapeRegexp(match, index, string) {
51511
+ if (match === "." && (string[index - 1] === "*" || string[index + 1] === "*")) {
51512
+ return match;
51513
+ }
51514
+ return "\\" + match;
51515
+ }
51516
+ function createPattern(fields) {
51517
+ var patterns = fields.map(function(field) {
51518
+ return field.replace(REGEXP_SPECIAL_CHARS, escapeRegexp).replace(REGEXP_ANY, detectRegexpPattern);
51519
+ });
51520
+ var pattern = patterns.length > 1 ? "(?:" + patterns.join("|") + ")" : patterns[0];
51521
+ return new RegExp("^" + pattern + "$");
51522
+ }
51523
+ var Rule = /* @__PURE__ */ function() {
51524
+ function Rule2(params) {
51525
+ this.actions = params.actions || params.action;
51526
+ this.subject = params.subject;
51527
+ this.fields = !params.fields || params.fields.length === 0 ? void 0 : wrapArray(params.fields);
51528
+ Object.defineProperty(this, "_fieldsPattern", {
51529
+ writable: true
51530
+ });
51531
+ this.inverted = !!params.inverted;
51532
+ this.conditions = params.conditions;
51533
+ Object.defineProperty(this, "_matches", {
51534
+ writable: true,
51535
+ value: this.conditions ? sift(this.conditions) : void 0
51536
+ });
51537
+ this.reason = params.reason;
51538
+ }
51539
+ var _proto = Rule2.prototype;
51540
+ _proto.matches = function matches(object) {
51541
+ if (!this._matches) {
51542
+ return true;
51543
+ }
51544
+ if (typeof object === "string") {
51545
+ return !this.inverted;
51546
+ }
51547
+ return this._matches(object);
51548
+ };
51549
+ _proto.isRelevantFor = function isRelevantFor(object, field) {
51550
+ if (!this.fields) {
51551
+ return true;
51552
+ }
51553
+ if (!field) {
51554
+ return !this.inverted;
51555
+ }
51556
+ return this.matchesField(field);
51557
+ };
51558
+ _proto.matchesField = function matchesField(field) {
51559
+ if (typeof this._fieldsPattern === "undefined") {
51560
+ this._fieldsPattern = this.fields.join("").indexOf("*") === -1 ? null : createPattern(this.fields);
51561
+ }
51562
+ if (this._fieldsPattern === null || field.indexOf("*") !== -1) {
51563
+ return this.fields.indexOf(field) !== -1;
51564
+ }
51565
+ return this._fieldsPattern.test(field);
51566
+ };
51567
+ return Rule2;
51568
+ }();
51569
+ var PRIVATE_FIELD = typeof Symbol !== "undefined" ? Symbol("private") : "__" + Date.now();
51570
+ var DEFAULT_ALIASES = {
51571
+ crud: ["create", "read", "update", "delete"]
51572
+ };
51573
+ function hasAction(action, actions) {
51574
+ return action === actions || Array.isArray(actions) && actions.indexOf(action) !== -1;
51575
+ }
51576
+ var Ability = /* @__PURE__ */ function() {
51577
+ Ability2.addAlias = function addAlias(alias, actions) {
51578
+ if (alias === "manage" || hasAction("manage", actions)) {
51579
+ throw new Error('Cannot add alias for "manage" action because it represents any action');
51580
+ }
51581
+ if (hasAction(alias, actions)) {
51582
+ throw new Error("Attempt to alias action to itself: " + alias + " -> " + actions.toString());
51583
+ }
51584
+ DEFAULT_ALIASES[alias] = actions;
51585
+ return this;
51586
+ };
51587
+ function Ability2(rules, options) {
51588
+ if (options === void 0) {
51589
+ options = {};
51590
+ }
51591
+ Object.defineProperty(this, "subjectName", {
51592
+ value: options.subjectName || getSubjectName
51593
+ });
51594
+ this[PRIVATE_FIELD] = {
51595
+ RuleType: options.RuleType || Rule,
51596
+ originalRules: rules || [],
51597
+ hasPerFieldRules: false,
51598
+ indexedRules: /* @__PURE__ */ Object.create(null),
51599
+ mergedRules: /* @__PURE__ */ Object.create(null),
51600
+ events: {},
51601
+ aliases: clone(DEFAULT_ALIASES)
51602
+ };
51603
+ this.update(rules);
51604
+ }
51605
+ var _proto = Ability2.prototype;
51606
+ _proto.update = function update(rules) {
51607
+ if (!Array.isArray(rules)) {
51608
+ return this;
51609
+ }
51610
+ var payload = {
51611
+ rules,
51612
+ ability: this
51613
+ };
51614
+ this.emit("update", payload);
51615
+ this[PRIVATE_FIELD].originalRules = rules.slice(0);
51616
+ this[PRIVATE_FIELD].mergedRules = /* @__PURE__ */ Object.create(null);
51617
+ var index = this.buildIndexFor(rules);
51618
+ if (process.env.NODE_ENV !== "production" && index.isAllInverted && rules.length) {
51619
+ console.warn("[casl]: Ability contains only inverted rules. That means user will not be able to do any actions. This will be changed to Error throw in the next major version");
51620
+ }
51621
+ this[PRIVATE_FIELD].indexedRules = index.rules;
51622
+ this[PRIVATE_FIELD].hasPerFieldRules = index.hasPerFieldRules;
51623
+ this.emit("updated", payload);
51624
+ return this;
51625
+ };
51626
+ _proto.buildIndexFor = function buildIndexFor(rules) {
51627
+ var indexedRules = /* @__PURE__ */ Object.create(null);
51628
+ var RuleType = this[PRIVATE_FIELD].RuleType;
51629
+ var isAllInverted = true;
51630
+ var hasPerFieldRules = false;
51631
+ for (var i = 0; i < rules.length; i++) {
51632
+ var rule = new RuleType(rules[i]);
51633
+ var actions = this.expandActions(rule.actions);
51634
+ var subjects = wrapArray(rule.subject);
51635
+ var priority = rules.length - i - 1;
51636
+ isAllInverted = !!(isAllInverted && rule.inverted);
51637
+ if (!hasPerFieldRules && rule.fields) {
51638
+ hasPerFieldRules = true;
51639
+ }
51640
+ for (var k = 0; k < subjects.length; k++) {
51641
+ var subject = subjects[k];
51642
+ indexedRules[subject] = indexedRules[subject] || /* @__PURE__ */ Object.create(null);
51643
+ for (var j = 0; j < actions.length; j++) {
51644
+ var action = actions[j];
51645
+ indexedRules[subject][action] = indexedRules[subject][action] || /* @__PURE__ */ Object.create(null);
51646
+ indexedRules[subject][action][priority] = rule;
51647
+ }
51648
+ }
51649
+ }
51650
+ return {
51651
+ isAllInverted,
51652
+ hasPerFieldRules,
51653
+ rules: indexedRules
51654
+ };
51655
+ };
51656
+ _proto.expandActions = function expandActions(rawActions) {
51657
+ var aliases = this[PRIVATE_FIELD].aliases;
51658
+ var actions = wrapArray(rawActions);
51659
+ var i = 0;
51660
+ while (i < actions.length) {
51661
+ var action = actions[i++];
51662
+ if (aliases.hasOwnProperty(action)) {
51663
+ actions = actions.concat(aliases[action]);
51664
+ }
51665
+ }
51666
+ return actions;
51667
+ };
51668
+ _proto.can = function can(action, subject, field) {
51669
+ if (field && typeof field !== "string") {
51670
+ throw new Error("Ability.can expects 3rd parameter to be a string. See https://stalniy.github.io/casl/abilities/2017/07/21/check-abilities.html#checking-fields for details");
51671
+ }
51672
+ var rule = this.relevantRuleFor(action, subject, field);
51673
+ return !!rule && !rule.inverted;
51674
+ };
51675
+ _proto.relevantRuleFor = function relevantRuleFor(action, subject, field) {
51676
+ var rules = this.rulesFor(action, subject, field);
51677
+ for (var i = 0; i < rules.length; i++) {
51678
+ if (rules[i].matches(subject)) {
51679
+ return rules[i];
51680
+ }
51681
+ }
51682
+ return null;
51683
+ };
51684
+ _proto.possibleRulesFor = function possibleRulesFor(action, subject) {
51685
+ var subjectName = this.subjectName(subject);
51686
+ var mergedRules = this[PRIVATE_FIELD].mergedRules;
51687
+ var key = subjectName + "_" + action;
51688
+ if (!mergedRules[key]) {
51689
+ mergedRules[key] = this.mergeRulesFor(action, subjectName);
51690
+ }
51691
+ return mergedRules[key];
51692
+ };
51693
+ _proto.mergeRulesFor = function mergeRulesFor(action, subjectName) {
51694
+ var indexedRules = this[PRIVATE_FIELD].indexedRules;
51695
+ var mergedRules = [subjectName, "all"].reduce(function(rules, subjectType) {
51696
+ var subjectRules = indexedRules[subjectType];
51697
+ if (!subjectRules) {
51698
+ return rules;
51699
+ }
51700
+ return Object.assign(rules, subjectRules[action], subjectRules.manage);
51701
+ }, []);
51702
+ return mergedRules.filter(Boolean);
51703
+ };
51704
+ _proto.rulesFor = function rulesFor(action, subject, field) {
51705
+ var rules = this.possibleRulesFor(action, subject);
51706
+ if (!this[PRIVATE_FIELD].hasPerFieldRules) {
51707
+ return rules;
51708
+ }
51709
+ return rules.filter(function(rule) {
51710
+ return rule.isRelevantFor(subject, field);
51711
+ });
51712
+ };
51713
+ _proto.cannot = function cannot() {
51714
+ return !this.can.apply(this, arguments);
51715
+ };
51716
+ _proto.throwUnlessCan = function throwUnlessCan() {
51717
+ var _ForbiddenError$from;
51718
+ console.warn('\n Ability.throwUnlessCan is deprecated and will be removed in 4.x version.\n Please use "ForbiddenError.from(ability).throwUnlessCan(...)" instead.\n '.trim());
51719
+ (_ForbiddenError$from = ForbiddenError.from(this)).throwUnlessCan.apply(_ForbiddenError$from, arguments);
51720
+ };
51721
+ _proto.on = function on(event, handler) {
51722
+ var events = this[PRIVATE_FIELD].events;
51723
+ var isAttached = true;
51724
+ if (!events[event]) {
51725
+ events[event] = [];
51726
+ }
51727
+ events[event].push(handler);
51728
+ return function() {
51729
+ if (isAttached) {
51730
+ var index = events[event].indexOf(handler);
51731
+ events[event].splice(index, 1);
51732
+ isAttached = false;
51733
+ }
51734
+ };
51735
+ };
51736
+ _proto.emit = function emit(event, payload) {
51737
+ var handlers = this[PRIVATE_FIELD].events[event];
51738
+ if (handlers) {
51739
+ handlers.slice(0).forEach(function(handler) {
51740
+ return handler(payload);
51741
+ });
51742
+ }
51743
+ };
51744
+ _createClass(Ability2, [{
51745
+ key: "rules",
51746
+ get: function get() {
51747
+ return this[PRIVATE_FIELD].originalRules;
51748
+ }
51749
+ }]);
51750
+ return Ability2;
51751
+ }();
51752
+ var Permission;
51753
+ ((Permission2) => {
51754
+ ((Level2) => {
51755
+ Level2[Level2["feedMe"] = 0] = "feedMe";
51756
+ Level2[Level2["business"] = 1] = "business";
51757
+ Level2[Level2["restaurant"] = 2] = "restaurant";
51758
+ })(Permission2.Level || (Permission2.Level = {}));
51759
+ ((Action2) => {
51760
+ Action2["manage"] = "manage";
51761
+ Action2["create"] = "create";
51762
+ Action2["read"] = "read";
51763
+ Action2["update"] = "update";
51764
+ Action2["delete"] = "delete";
51765
+ })(Permission2.Action || (Permission2.Action = {}));
51766
+ })(Permission || (Permission = {}));
51767
+ ((Permission2) => {
51768
+ ((Subject2) => {
51769
+ ((Feedme2) => {
51770
+ Feedme2["all"] = "all";
51771
+ Feedme2["restaurant"] = "restaurant";
51772
+ Feedme2["business"] = "business";
51773
+ Feedme2["delivery"] = "delivery";
51774
+ Feedme2["agent"] = "agent";
51775
+ })(Subject2.Feedme || (Subject2.Feedme = {}));
51776
+ ((FeedmeBusinessField2) => {
51777
+ FeedmeBusinessField2["quota"] = "quota";
51778
+ FeedmeBusinessField2["owner"] = "owner";
51779
+ })(Subject2.FeedmeBusinessField || (Subject2.FeedmeBusinessField = {}));
51780
+ ((Business2) => {
51781
+ Business2["profile"] = "business::profile";
51782
+ Business2["restaurant"] = "business::restaurant";
51783
+ Business2["menu"] = "business::menu";
51784
+ Business2["promotion"] = "business::promotion";
51785
+ Business2["voucher"] = "business::voucher";
51786
+ Business2["membership"] = "business::membership";
51787
+ Business2["stock"] = "business::stock";
51788
+ Business2["permission"] = "business::permission";
51789
+ Business2["role"] = "business::role";
51790
+ })(Subject2.Business || (Subject2.Business = {}));
51791
+ ((Restaurant2) => {
51792
+ Restaurant2["restaurant"] = "restaurant";
51793
+ })(Subject2.Restaurant || (Subject2.Restaurant = {}));
51794
+ })(Permission2.Subject || (Permission2.Subject = {}));
51795
+ })(Permission || (Permission = {}));
51796
+ async function validate(params) {
51797
+ const { sessionUser, validationManifest } = params;
51798
+ const { requiredRoles, requiredCaslPermissions, customValidationFunction } = validationManifest;
51799
+ if (!sessionUser) {
51800
+ return { canAccess: false };
51801
+ }
51802
+ if (requiredRoles && requiredRoles.length > 0) {
51803
+ if (!requiredRoles.includes(sessionUser._role || "")) {
51804
+ return Promise.resolve({
51805
+ canAccess: false,
51806
+ message: "User does not have permission to access"
51807
+ });
51808
+ }
51809
+ }
51810
+ if (requiredCaslPermissions && requiredCaslPermissions.length > 0) {
51811
+ const ability = new Ability(sessionUser.permissions);
51812
+ if (requiredCaslPermissions.every(
51813
+ (permission) => !ability.can(permission.action, permission.subject, permission.field)
51814
+ )) {
51815
+ return Promise.resolve({
51816
+ canAccess: false,
51817
+ message: "User does not have permission to access"
51818
+ });
51819
+ }
51820
+ }
51821
+ if (customValidationFunction) {
51822
+ const customValidationResult = await customValidationFunction();
51823
+ if (!customValidationResult.canAccess) {
51824
+ return customValidationResult;
51825
+ }
51826
+ }
51827
+ return Promise.resolve({ canAccess: true });
51828
+ }
51829
+ const ACCESS_DENIED_ROUTE = "access-denied";
51830
+ async function validateRoute(route) {
51831
+ for (const matched of route.matched) {
51832
+ if (matched.meta.validationManifest) {
51833
+ const validationResult = await validate({
51834
+ sessionUser: useCoreStore().sessionUser.value,
51835
+ validationManifest: matched.meta.validationManifest
51836
+ });
51837
+ if (!validationResult.canAccess) {
51838
+ return {
51839
+ canAccess: false,
51840
+ message: validationResult.message,
51841
+ redirectTo: ACCESS_DENIED_ROUTE
51842
+ };
51843
+ }
51844
+ }
51845
+ }
51846
+ return {
51847
+ canAccess: true
51848
+ };
51849
+ }
51850
+ function installRouteValidation(router) {
51851
+ router.beforeEach(async (to, _, next) => {
51852
+ const validationResult = await validateRoute(to);
51853
+ if (!validationResult.canAccess) {
51854
+ if (validationResult.redirectTo) {
51855
+ next({ name: validationResult.redirectTo });
51856
+ } else {
51857
+ next({ name: ACCESS_DENIED_ROUTE });
51858
+ }
51859
+ } else {
51860
+ next();
51861
+ }
51862
+ });
51863
+ }
50921
51864
  function initialize(clientId, namespace) {
50922
51865
  namespace && useCoreStore().setNamespace(namespace);
50923
51866
  const DEBUG_ACCOUNT_URL = "DEBUG_ACCOUNT_URL";
@@ -50926,14 +51869,21 @@ function initialize(clientId, namespace) {
50926
51869
  FeedMeAuth.setBaseUrl(debugAccountUrl);
50927
51870
  }
50928
51871
  FeedMeAuth.initialize({ clientId, loginMode: "iframe", oneTapMode: "full_screen" });
51872
+ const coreStore2 = useCoreStore();
51873
+ if (!coreStore2.sessionUser.value) {
51874
+ coreStore2.signIn();
51875
+ }
50929
51876
  }
50930
51877
  const onAuthStateChanged = FeedMeAuth.onAuthStateChanged;
50931
51878
  export {
50932
51879
  CountryOptions,
50933
51880
  FeedMeAuth,
50934
51881
  _sfc_main as FmNavBar,
51882
+ FmpUser,
51883
+ Permission,
50935
51884
  baseClientInstance,
50936
51885
  initialize,
51886
+ installRouteValidation,
50937
51887
  onAuthStateChanged,
50938
51888
  useCoreStore
50939
51889
  };