@corva/ui 3.75.0-8 → 3.75.0-9

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.
@@ -1,2 +1,2 @@
1
- "use strict";var e=require("@babel/runtime/helpers/defineProperty"),r=require("@babel/runtime/helpers/slicedToArray"),t=require("@babel/runtime/helpers/asyncToGenerator"),n=require("@babel/runtime/regenerator"),u=require("react"),i=require("./utils.js"),c=require("../clients/jsonApi/index.js");function a(e){return e&&"object"==typeof e&&"default"in e?e:{default:e}}var o=a(e),s=a(r),f=a(t),p=a(n);function l(e,r){var t=Object.keys(e);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);r&&(n=n.filter((function(r){return Object.getOwnPropertyDescriptor(e,r).enumerable}))),t.push.apply(t,n)}return t}function b(e){for(var r=1;r<arguments.length;r++){var t=null!=arguments[r]?arguments[r]:{};r%2?l(Object(t),!0).forEach((function(r){o.default(e,r,t[r])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(t)):l(Object(t)).forEach((function(r){Object.defineProperty(e,r,Object.getOwnPropertyDescriptor(t,r))}))}return e}function d(e){return h.apply(this,arguments)}function h(){return(h=f.default(p.default.mark((function e(r){return p.default.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return e.prev=0,e.next=3,c.getPermissionCheck(r);case 3:return e.abrupt("return",e.sent);case 6:return e.prev=6,e.t0=e.catch(0),console.error(e.t0),e.abrupt("return",{active:!1});case 10:case"end":return e.stop()}}),e,null,[[0,6]])})))).apply(this,arguments)}module.exports=function(){var e=u.useState({}),r=s.default(e,2),t=r[0],n=r[1],c=u.useRef(new Set);function a(){return(a=f.default(p.default.mark((function e(r){var u,a;return p.default.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:if((u=r.filter((function(e){return!(e in t)&&!c.current.has(e)}))).length){e.next=3;break}return e.abrupt("return");case 3:return e.next=5,Promise.all(u.map((function(e){return c.current.add(e),d(i.parsePermission(e))})));case 5:a=e.sent,n((function(e){var r=b({},e);return u.forEach((function(e,t){c.current.delete(e),r[e]=b({loading:!1},a[t])})),r}));case 7:case"end":return e.stop()}}),e)})))).apply(this,arguments)}return window[Symbol.for("resetPermissionsCache")]=function(){return n({})},{permissions:t,fetchPermissions:function(e){return a.apply(this,arguments)}}};
1
+ "use strict";var e=require("@babel/runtime/helpers/defineProperty"),r=require("@babel/runtime/helpers/slicedToArray"),t=require("@babel/runtime/helpers/asyncToGenerator"),n=require("@babel/runtime/regenerator"),u=require("react"),i=require("./utils.js"),c=require("../clients/jsonApi/index.js");function s(e){return e&&"object"==typeof e&&"default"in e?e:{default:e}}var a=s(e),o=s(r),f=s(t),p=s(n);function l(e,r){var t=Object.keys(e);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);r&&(n=n.filter((function(r){return Object.getOwnPropertyDescriptor(e,r).enumerable}))),t.push.apply(t,n)}return t}function b(e){for(var r=1;r<arguments.length;r++){var t=null!=arguments[r]?arguments[r]:{};r%2?l(Object(t),!0).forEach((function(r){a.default(e,r,t[r])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(t)):l(Object(t)).forEach((function(r){Object.defineProperty(e,r,Object.getOwnPropertyDescriptor(t,r))}))}return e}function d(e){return h.apply(this,arguments)}function h(){return(h=f.default(p.default.mark((function e(r){return p.default.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return e.prev=0,e.next=3,c.getPermissionCheck(r);case 3:return e.abrupt("return",e.sent);case 6:return e.prev=6,e.t0=e.catch(0),console.error(e.t0),e.abrupt("return",{active:!1});case 10:case"end":return e.stop()}}),e,null,[[0,6]])})))).apply(this,arguments)}module.exports=function(){var e=u.useState({}),r=o.default(e,2),t=r[0],n=r[1],c=u.useRef({}),s=u.useRef(new Set);function a(){return(a=f.default(p.default.mark((function e(r){var t,u,a;return p.default.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:if((t=r.filter((function(e){return!(e in c.current)&&!s.current.has(e)}))).length){e.next=3;break}return e.abrupt("return");case 3:return e.next=5,Promise.all(t.map((function(e){return s.current.add(e),d(i.parsePermission(e))})));case 5:u=e.sent,a=b({},c.current),t.forEach((function(e,r){s.current.delete(e),a[e]=b({loading:!1},u[r])})),c.current=a,n(a);case 10:case"end":return e.stop()}}),e)})))).apply(this,arguments)}return window[Symbol.for("resetPermissionsCache")]=function(){c.current={},n({})},{permissions:t,fetchPermissions:function(e){return a.apply(this,arguments)}}};
2
2
  //# sourceMappingURL=useProvidePermissions.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"useProvidePermissions.js","sources":["../../../src/permissions/useProvidePermissions.js"],"sourcesContent":["import { useRef, useState } from 'react';\n\nimport { parsePermission } from './utils';\n\nimport { getPermissionCheck } from '~/clients/jsonApi';\n\nasync function fetchPermissionCheck(requestOptions) {\n try {\n return await getPermissionCheck(requestOptions);\n } catch (e) {\n console.error(e);\n // NOTE: Return false by default\n return { active: false };\n }\n}\n\nfunction useProvidePermissions() {\n const [permissions, setPermissions] = useState({});\n // NOTE: Store pending requests to prevent duplicate requests\n const pendingRequests = useRef(new Set());\n\n // NOTE: Called in finishLogIn redux action\n window[Symbol.for('resetPermissionsCache')] = () => setPermissions({});\n\n async function fetchPermissions(permissionKeys) {\n const permissionsToFetch = permissionKeys.filter(\n // NOTE: Send check request ONLY for new permission\n pKey => !(pKey in permissions) && !pendingRequests.current.has(pKey)\n );\n if (!permissionsToFetch.length) return;\n\n const response = await Promise.all(\n permissionsToFetch.map(pKey => {\n // NOTE: Add permission to pending requests and send check request\n pendingRequests.current.add(pKey);\n\n return fetchPermissionCheck(parsePermission(pKey));\n })\n );\n\n setPermissions(prevPermissions => {\n const nextPermissions = { ...prevPermissions };\n\n permissionsToFetch.forEach((pKey, pIndex) => {\n // NOTE: Delete permission from pending request\n pendingRequests.current.delete(pKey);\n nextPermissions[pKey] = { loading: false, ...response[pIndex] };\n });\n return nextPermissions;\n });\n }\n\n return { permissions, fetchPermissions };\n}\n\nexport default useProvidePermissions;\n"],"names":["fetchPermissionCheck","_x","_fetchPermissionCheck","apply","this","arguments","_asyncToGenerator","_regeneratorRuntime","mark","requestOptions","wrap","_context2","prev","next","getPermissionCheck","abrupt","sent","t0","console","error","active","stop","_callee2","_useState","useState","_useState2","_slicedToArray","permissions","setPermissions","pendingRequests","useRef","Set","_fetchPermissions","permissionKeys","permissionsToFetch","response","_context","filter","pKey","current","has","length","Promise","all","map","add","parsePermission","prevPermissions","nextPermissions","forEach","pIndex","delete","_objectSpread","loading","_callee","window","Symbol","for","fetchPermissions","_x2"],"mappings":"s9BAIuD,SAExCA,EAAoBC,GAAA,OAAAC,EAAAC,MAAAC,KAAAC,UAAA,CAAA,SAAAH,IAQlC,OARkCA,EAAAI,EAAA,QAAAC,EAAA,QAAAC,MAAnC,WAAoCC,GAAc,OAAAF,UAAAG,MAAA,SAAAC,GAAA,OAAA,OAAAA,EAAAC,KAAAD,EAAAE,MAAA,KAAA,EAAA,OAAAF,EAAAC,KAAA,EAAAD,EAAAE,KAAA,EAEjCC,EAAAA,mBAAmBL,GAAe,KAAA,EAAA,OAAAE,EAAAI,OAAA,SAAAJ,EAAAK,MAAA,KAAA,EAG/C,OAH+CL,EAAAC,KAAA,EAAAD,EAAAM,GAAAN,EAAA,MAAA,GAE/CO,QAAQC,MAAQR,EAAAM,IAETN,EAAAI,OAAA,SAAA,CAAEK,QAAQ,IAAO,KAAA,GAAA,IAAA,MAAA,OAAAT,EAAAU,OAAA,GAAAC,EAAA,KAAA,CAAA,CAAA,EAAA,IAE3B,MAAAnB,MAAAC,KAAAC,UAAA,gBAED,WACE,IAAAkB,EAAsCC,EAAQA,SAAC,IAAGC,EAAAC,EAAAA,QAAAH,EAAA,GAA3CI,EAAWF,EAAA,GAAEG,EAAcH,EAAA,GAE5BI,EAAkBC,EAAAA,OAAO,IAAIC,KAKJ,SAAAC,IA0B9B,OA1B8BA,EAAA1B,EAAA,QAAAC,EAAA,QAAAC,MAA/B,WAAgCyB,GAAc,IAAAC,EAAAC,EAAA,OAAA5B,UAAAG,MAAA,SAAA0B,GAAA,OAAA,OAAAA,EAAAxB,KAAAwB,EAAAvB,MAAA,KAAA,EAI3C,IAHKqB,EAAqBD,EAAeI,QAExC,SAAAC,GAAI,QAAMA,KAAQX,KAAiBE,EAAgBU,QAAQC,IAAIF,OAEzCG,OAAM,CAAAL,EAAAvB,KAAA,EAAA,KAAA,CAAA,OAAAuB,EAAArB,OAAA,UAAA,KAAA,EAAA,OAAAqB,EAAAvB,KAAA,EAEP6B,QAAQC,IAC7BT,EAAmBU,KAAI,SAAAN,GAIrB,OAFAT,EAAgBU,QAAQM,IAAIP,GAErBtC,EAAqB8C,EAAAA,gBAAgBR,GAC7C,KACF,KAAA,EAPKH,EAAQC,EAAApB,KASdY,GAAe,SAAAmB,GACb,IAAMC,EAAuBD,EAAAA,CAAAA,EAAAA,GAO7B,OALAb,EAAmBe,SAAQ,SAACX,EAAMY,GAEhCrB,EAAgBU,QAAQY,OAAOb,GAC/BU,EAAgBV,GAAKc,EAAA,CAAKC,SAAS,GAAUlB,EAASe,GACxD,IACOF,CACT,IAAG,KAAA,EAAA,IAAA,MAAA,OAAAZ,EAAAf,OAAA,GAAAiC,EACJ,MAAAnD,MAAAC,KAAAC,UAAA,CAED,OA9BAkD,OAAOC,OAAOC,IAAI,0BAA4B,WAAA,OAAM7B,EAAe,CAAA,EAAG,EA8B/D,CAAED,YAAAA,EAAa+B,iBA9BiD,SAExCC,GAAA,OAAA3B,EAAA7B,MAAAC,KAAAC,UAAA,EA6BjC"}
1
+ {"version":3,"file":"useProvidePermissions.js","sources":["../../../src/permissions/useProvidePermissions.js"],"sourcesContent":["import { useRef, useState } from 'react';\n\nimport { parsePermission } from './utils';\n\nimport { getPermissionCheck } from '~/clients/jsonApi';\n\nasync function fetchPermissionCheck(requestOptions) {\n try {\n return await getPermissionCheck(requestOptions);\n } catch (e) {\n console.error(e);\n // NOTE: Return false by default\n return { active: false };\n }\n}\n\nfunction useProvidePermissions() {\n const [permissions, setPermissions] = useState({});\n // NOTE: Latest permissions. fetchPermissions reads from this ref instead of the `permissions`\n // state, because a consumer may call a fetchPermissions closure created by an earlier render.\n const permissionsRef = useRef({});\n // NOTE: Store pending requests to prevent duplicate requests\n const pendingRequests = useRef(new Set());\n\n // NOTE: Called in finishLogIn redux action\n window[Symbol.for('resetPermissionsCache')] = () => {\n permissionsRef.current = {};\n setPermissions({});\n };\n\n async function fetchPermissions(permissionKeys) {\n const permissionsToFetch = permissionKeys.filter(\n // NOTE: Send check request ONLY for new permission\n pKey => !(pKey in permissionsRef.current) && !pendingRequests.current.has(pKey)\n );\n if (!permissionsToFetch.length) return;\n\n const response = await Promise.all(\n permissionsToFetch.map(pKey => {\n // NOTE: Add permission to pending requests and send check request\n pendingRequests.current.add(pKey);\n\n return fetchPermissionCheck(parsePermission(pKey));\n })\n );\n\n // NOTE: Update the cache and the pending set together, so a permission is never\n // \"not cached and not pending\" in between (that gap caused duplicate requests)\n const nextPermissions = { ...permissionsRef.current };\n permissionsToFetch.forEach((pKey, pIndex) => {\n pendingRequests.current.delete(pKey);\n nextPermissions[pKey] = { loading: false, ...response[pIndex] };\n });\n permissionsRef.current = nextPermissions;\n setPermissions(nextPermissions);\n }\n\n return { permissions, fetchPermissions };\n}\n\nexport default useProvidePermissions;\n"],"names":["fetchPermissionCheck","_x","_fetchPermissionCheck","apply","this","arguments","_asyncToGenerator","_regeneratorRuntime","mark","requestOptions","wrap","_context2","prev","next","getPermissionCheck","abrupt","sent","t0","console","error","active","stop","_callee2","_useState","useState","_useState2","_slicedToArray","permissions","setPermissions","permissionsRef","useRef","pendingRequests","Set","_fetchPermissions","permissionKeys","permissionsToFetch","response","nextPermissions","_context","filter","pKey","current","has","length","Promise","all","map","add","parsePermission","_objectSpread","forEach","pIndex","delete","loading","_callee","window","Symbol","for","fetchPermissions","_x2"],"mappings":"s9BAIuD,SAExCA,EAAoBC,GAAA,OAAAC,EAAAC,MAAAC,KAAAC,UAAA,CAAA,SAAAH,IAQlC,OARkCA,EAAAI,EAAA,QAAAC,EAAA,QAAAC,MAAnC,WAAoCC,GAAc,OAAAF,UAAAG,MAAA,SAAAC,GAAA,OAAA,OAAAA,EAAAC,KAAAD,EAAAE,MAAA,KAAA,EAAA,OAAAF,EAAAC,KAAA,EAAAD,EAAAE,KAAA,EAEjCC,EAAAA,mBAAmBL,GAAe,KAAA,EAAA,OAAAE,EAAAI,OAAA,SAAAJ,EAAAK,MAAA,KAAA,EAG/C,OAH+CL,EAAAC,KAAA,EAAAD,EAAAM,GAAAN,EAAA,MAAA,GAE/CO,QAAQC,MAAQR,EAAAM,IAETN,EAAAI,OAAA,SAAA,CAAEK,QAAQ,IAAO,KAAA,GAAA,IAAA,MAAA,OAAAT,EAAAU,OAAA,GAAAC,EAAA,KAAA,CAAA,CAAA,EAAA,IAE3B,MAAAnB,MAAAC,KAAAC,UAAA,gBAED,WACE,IAAAkB,EAAsCC,EAAQA,SAAC,IAAGC,EAAAC,EAAAA,QAAAH,EAAA,GAA3CI,EAAWF,EAAA,GAAEG,EAAcH,EAAA,GAG5BI,EAAiBC,SAAO,CAAA,GAExBC,EAAkBD,EAAAA,OAAO,IAAIE,KAQJ,SAAAC,IAyB9B,OAzB8BA,EAAA3B,EAAA,QAAAC,EAAA,QAAAC,MAA/B,WAAgC0B,GAAc,IAAAC,EAAAC,EAAAC,EAAA,OAAA9B,UAAAG,MAAA,SAAA4B,GAAA,OAAA,OAAAA,EAAA1B,KAAA0B,EAAAzB,MAAA,KAAA,EAI3C,IAHKsB,EAAqBD,EAAeK,QAExC,SAAAC,GAAI,QAAMA,KAAQX,EAAeY,WAAaV,EAAgBU,QAAQC,IAAIF,OAEpDG,OAAM,CAAAL,EAAAzB,KAAA,EAAA,KAAA,CAAA,OAAAyB,EAAAvB,OAAA,UAAA,KAAA,EAAA,OAAAuB,EAAAzB,KAAA,EAEP+B,QAAQC,IAC7BV,EAAmBW,KAAI,SAAAN,GAIrB,OAFAT,EAAgBU,QAAQM,IAAIP,GAErBxC,EAAqBgD,EAAAA,gBAAgBR,GAC7C,KACF,KAAA,EAPKJ,EAAQE,EAAAtB,KAWRqB,EAAeY,EAAA,CAAA,EAAQpB,EAAeY,SAC5CN,EAAmBe,SAAQ,SAACV,EAAMW,GAChCpB,EAAgBU,QAAQW,OAAOZ,GAC/BH,EAAgBG,GAAKS,EAAA,CAAKI,SAAS,GAAUjB,EAASe,GACxD,IACAtB,EAAeY,QAAUJ,EACzBT,EAAeS,GAAiB,KAAA,GAAA,IAAA,MAAA,OAAAC,EAAAjB,OAAA,GAAAiC,EACjC,MAAAnD,MAAAC,KAAAC,UAAA,CAED,OAhCAkD,OAAOC,OAAOC,IAAI,0BAA4B,WAC5C5B,EAAeY,QAAU,GACzBb,EAAe,CAAE,IA8BZ,CAAED,YAAAA,EAAa+B,iBA7BpB,SAE6BC,GAAA,OAAA1B,EAAA9B,MAAAC,KAAAC,UAAA,EA4BjC"}
@@ -248,7 +248,7 @@ const validateDsn = dsn => {
248
248
 
249
249
  const MCP_SERVER_VERSION = '1.4.1';
250
250
 
251
- var version = "3.75.0-8";
251
+ var version = "3.75.0-9";
252
252
 
253
253
  const CORVA_UI_VERSION = version;
254
254
 
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@corva/ui",
3
- "version": "3.75.0-8",
3
+ "version": "3.75.0-9",
4
4
  "license": "UNLICENSED",
5
5
  "description": "Shared components/utils for Corva ui projects",
6
6
  "repository": {
@@ -1 +1 @@
1
- {"version":3,"file":"useProvidePermissions.d.ts","sourceRoot":"","sources":["../../src/permissions/useProvidePermissions.js"],"names":[],"mappings":"AAgBA,iBAAS,qBAAqB;;;EAqC7B;eAEc,qBAAqB"}
1
+ {"version":3,"file":"useProvidePermissions.d.ts","sourceRoot":"","sources":["../../src/permissions/useProvidePermissions.js"],"names":[],"mappings":"AAgBA,iBAAS,qBAAqB;;;EA0C7B;eAEc,qBAAqB"}
@@ -1,2 +1,2 @@
1
- import r from"@babel/runtime/helpers/defineProperty";import e from"@babel/runtime/helpers/slicedToArray";import t from"@babel/runtime/helpers/asyncToGenerator";import n from"@babel/runtime/regenerator";import{useState as o,useRef as i}from"react";import{parsePermission as c}from"./utils.js";import{getPermissionCheck as u}from"../clients/jsonApi/index.js";function s(r,e){var t=Object.keys(r);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(r);e&&(n=n.filter((function(e){return Object.getOwnPropertyDescriptor(r,e).enumerable}))),t.push.apply(t,n)}return t}function a(e){for(var t=1;t<arguments.length;t++){var n=null!=arguments[t]?arguments[t]:{};t%2?s(Object(n),!0).forEach((function(t){r(e,t,n[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(n)):s(Object(n)).forEach((function(r){Object.defineProperty(e,r,Object.getOwnPropertyDescriptor(n,r))}))}return e}function p(r){return f.apply(this,arguments)}function f(){return(f=t(n.mark((function r(e){return n.wrap((function(r){for(;;)switch(r.prev=r.next){case 0:return r.prev=0,r.next=3,u(e);case 3:return r.abrupt("return",r.sent);case 6:return r.prev=6,r.t0=r.catch(0),console.error(r.t0),r.abrupt("return",{active:!1});case 10:case"end":return r.stop()}}),r,null,[[0,6]])})))).apply(this,arguments)}function l(){var r=o({}),u=e(r,2),s=u[0],f=u[1],l=i(new Set);function m(){return(m=t(n.mark((function r(e){var t,o;return n.wrap((function(r){for(;;)switch(r.prev=r.next){case 0:if((t=e.filter((function(r){return!(r in s)&&!l.current.has(r)}))).length){r.next=3;break}return r.abrupt("return");case 3:return r.next=5,Promise.all(t.map((function(r){return l.current.add(r),p(c(r))})));case 5:o=r.sent,f((function(r){var e=a({},r);return t.forEach((function(r,t){l.current.delete(r),e[r]=a({loading:!1},o[t])})),e}));case 7:case"end":return r.stop()}}),r)})))).apply(this,arguments)}return window[Symbol.for("resetPermissionsCache")]=function(){return f({})},{permissions:s,fetchPermissions:function(r){return m.apply(this,arguments)}}}export{l as default};
1
+ import r from"@babel/runtime/helpers/defineProperty";import e from"@babel/runtime/helpers/slicedToArray";import t from"@babel/runtime/helpers/asyncToGenerator";import n from"@babel/runtime/regenerator";import{useState as o,useRef as c}from"react";import{parsePermission as i}from"./utils.js";import{getPermissionCheck as u}from"../clients/jsonApi/index.js";function s(r,e){var t=Object.keys(r);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(r);e&&(n=n.filter((function(e){return Object.getOwnPropertyDescriptor(r,e).enumerable}))),t.push.apply(t,n)}return t}function a(e){for(var t=1;t<arguments.length;t++){var n=null!=arguments[t]?arguments[t]:{};t%2?s(Object(n),!0).forEach((function(t){r(e,t,n[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(n)):s(Object(n)).forEach((function(r){Object.defineProperty(e,r,Object.getOwnPropertyDescriptor(n,r))}))}return e}function p(r){return f.apply(this,arguments)}function f(){return(f=t(n.mark((function r(e){return n.wrap((function(r){for(;;)switch(r.prev=r.next){case 0:return r.prev=0,r.next=3,u(e);case 3:return r.abrupt("return",r.sent);case 6:return r.prev=6,r.t0=r.catch(0),console.error(r.t0),r.abrupt("return",{active:!1});case 10:case"end":return r.stop()}}),r,null,[[0,6]])})))).apply(this,arguments)}function l(){var r=o({}),u=e(r,2),s=u[0],f=u[1],l=c({}),m=c(new Set);function b(){return(b=t(n.mark((function r(e){var t,o,c;return n.wrap((function(r){for(;;)switch(r.prev=r.next){case 0:if((t=e.filter((function(r){return!(r in l.current)&&!m.current.has(r)}))).length){r.next=3;break}return r.abrupt("return");case 3:return r.next=5,Promise.all(t.map((function(r){return m.current.add(r),p(i(r))})));case 5:o=r.sent,c=a({},l.current),t.forEach((function(r,e){m.current.delete(r),c[r]=a({loading:!1},o[e])})),l.current=c,f(c);case 10:case"end":return r.stop()}}),r)})))).apply(this,arguments)}return window[Symbol.for("resetPermissionsCache")]=function(){l.current={},f({})},{permissions:s,fetchPermissions:function(r){return b.apply(this,arguments)}}}export{l as default};
2
2
  //# sourceMappingURL=useProvidePermissions.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"useProvidePermissions.js","sources":["../../src/permissions/useProvidePermissions.js"],"sourcesContent":["import { useRef, useState } from 'react';\n\nimport { parsePermission } from './utils';\n\nimport { getPermissionCheck } from '~/clients/jsonApi';\n\nasync function fetchPermissionCheck(requestOptions) {\n try {\n return await getPermissionCheck(requestOptions);\n } catch (e) {\n console.error(e);\n // NOTE: Return false by default\n return { active: false };\n }\n}\n\nfunction useProvidePermissions() {\n const [permissions, setPermissions] = useState({});\n // NOTE: Store pending requests to prevent duplicate requests\n const pendingRequests = useRef(new Set());\n\n // NOTE: Called in finishLogIn redux action\n window[Symbol.for('resetPermissionsCache')] = () => setPermissions({});\n\n async function fetchPermissions(permissionKeys) {\n const permissionsToFetch = permissionKeys.filter(\n // NOTE: Send check request ONLY for new permission\n pKey => !(pKey in permissions) && !pendingRequests.current.has(pKey)\n );\n if (!permissionsToFetch.length) return;\n\n const response = await Promise.all(\n permissionsToFetch.map(pKey => {\n // NOTE: Add permission to pending requests and send check request\n pendingRequests.current.add(pKey);\n\n return fetchPermissionCheck(parsePermission(pKey));\n })\n );\n\n setPermissions(prevPermissions => {\n const nextPermissions = { ...prevPermissions };\n\n permissionsToFetch.forEach((pKey, pIndex) => {\n // NOTE: Delete permission from pending request\n pendingRequests.current.delete(pKey);\n nextPermissions[pKey] = { loading: false, ...response[pIndex] };\n });\n return nextPermissions;\n });\n }\n\n return { permissions, fetchPermissions };\n}\n\nexport default useProvidePermissions;\n"],"names":["fetchPermissionCheck","_x","_fetchPermissionCheck","apply","this","arguments","_asyncToGenerator","_regeneratorRuntime","mark","requestOptions","wrap","_context2","prev","next","getPermissionCheck","abrupt","sent","t0","console","error","active","stop","_callee2","useProvidePermissions","_useState","useState","_useState2","_slicedToArray","permissions","setPermissions","pendingRequests","useRef","Set","_fetchPermissions","permissionKeys","permissionsToFetch","response","_context","filter","pKey","current","has","length","Promise","all","map","add","parsePermission","prevPermissions","nextPermissions","forEach","pIndex","delete","_objectSpread","loading","_callee","window","Symbol","for","fetchPermissions","_x2"],"mappings":"o6BAIuD,SAExCA,EAAoBC,GAAA,OAAAC,EAAAC,MAAAC,KAAAC,UAAA,CAAA,SAAAH,IAQlC,OARkCA,EAAAI,EAAAC,EAAAC,MAAnC,WAAoCC,GAAc,OAAAF,EAAAG,MAAA,SAAAC,GAAA,OAAA,OAAAA,EAAAC,KAAAD,EAAAE,MAAA,KAAA,EAAA,OAAAF,EAAAC,KAAA,EAAAD,EAAAE,KAAA,EAEjCC,EAAmBL,GAAe,KAAA,EAAA,OAAAE,EAAAI,OAAA,SAAAJ,EAAAK,MAAA,KAAA,EAG/C,OAH+CL,EAAAC,KAAA,EAAAD,EAAAM,GAAAN,EAAA,MAAA,GAE/CO,QAAQC,MAAQR,EAAAM,IAETN,EAAAI,OAAA,SAAA,CAAEK,QAAQ,IAAO,KAAA,GAAA,IAAA,MAAA,OAAAT,EAAAU,OAAA,GAAAC,EAAA,KAAA,CAAA,CAAA,EAAA,IAE3B,MAAAnB,MAAAC,KAAAC,UAAA,CAED,SAASkB,IACP,IAAAC,EAAsCC,EAAS,IAAGC,EAAAC,EAAAH,EAAA,GAA3CI,EAAWF,EAAA,GAAEG,EAAcH,EAAA,GAE5BI,EAAkBC,EAAO,IAAIC,KAKJ,SAAAC,IA0B9B,OA1B8BA,EAAA3B,EAAAC,EAAAC,MAA/B,WAAgC0B,GAAc,IAAAC,EAAAC,EAAA,OAAA7B,EAAAG,MAAA,SAAA2B,GAAA,OAAA,OAAAA,EAAAzB,KAAAyB,EAAAxB,MAAA,KAAA,EAI3C,IAHKsB,EAAqBD,EAAeI,QAExC,SAAAC,GAAI,QAAMA,KAAQX,KAAiBE,EAAgBU,QAAQC,IAAIF,OAEzCG,OAAM,CAAAL,EAAAxB,KAAA,EAAA,KAAA,CAAA,OAAAwB,EAAAtB,OAAA,UAAA,KAAA,EAAA,OAAAsB,EAAAxB,KAAA,EAEP8B,QAAQC,IAC7BT,EAAmBU,KAAI,SAAAN,GAIrB,OAFAT,EAAgBU,QAAQM,IAAIP,GAErBvC,EAAqB+C,EAAgBR,GAC7C,KACF,KAAA,EAPKH,EAAQC,EAAArB,KASda,GAAe,SAAAmB,GACb,IAAMC,EAAuBD,EAAAA,CAAAA,EAAAA,GAO7B,OALAb,EAAmBe,SAAQ,SAACX,EAAMY,GAEhCrB,EAAgBU,QAAQY,OAAOb,GAC/BU,EAAgBV,GAAKc,EAAA,CAAKC,SAAS,GAAUlB,EAASe,GACxD,IACOF,CACT,IAAG,KAAA,EAAA,IAAA,MAAA,OAAAZ,EAAAhB,OAAA,GAAAkC,EACJ,MAAApD,MAAAC,KAAAC,UAAA,CAED,OA9BAmD,OAAOC,OAAOC,IAAI,0BAA4B,WAAA,OAAM7B,EAAe,CAAA,EAAG,EA8B/D,CAAED,YAAAA,EAAa+B,iBA9BiD,SAExCC,GAAA,OAAA3B,EAAA9B,MAAAC,KAAAC,UAAA,EA6BjC"}
1
+ {"version":3,"file":"useProvidePermissions.js","sources":["../../src/permissions/useProvidePermissions.js"],"sourcesContent":["import { useRef, useState } from 'react';\n\nimport { parsePermission } from './utils';\n\nimport { getPermissionCheck } from '~/clients/jsonApi';\n\nasync function fetchPermissionCheck(requestOptions) {\n try {\n return await getPermissionCheck(requestOptions);\n } catch (e) {\n console.error(e);\n // NOTE: Return false by default\n return { active: false };\n }\n}\n\nfunction useProvidePermissions() {\n const [permissions, setPermissions] = useState({});\n // NOTE: Latest permissions. fetchPermissions reads from this ref instead of the `permissions`\n // state, because a consumer may call a fetchPermissions closure created by an earlier render.\n const permissionsRef = useRef({});\n // NOTE: Store pending requests to prevent duplicate requests\n const pendingRequests = useRef(new Set());\n\n // NOTE: Called in finishLogIn redux action\n window[Symbol.for('resetPermissionsCache')] = () => {\n permissionsRef.current = {};\n setPermissions({});\n };\n\n async function fetchPermissions(permissionKeys) {\n const permissionsToFetch = permissionKeys.filter(\n // NOTE: Send check request ONLY for new permission\n pKey => !(pKey in permissionsRef.current) && !pendingRequests.current.has(pKey)\n );\n if (!permissionsToFetch.length) return;\n\n const response = await Promise.all(\n permissionsToFetch.map(pKey => {\n // NOTE: Add permission to pending requests and send check request\n pendingRequests.current.add(pKey);\n\n return fetchPermissionCheck(parsePermission(pKey));\n })\n );\n\n // NOTE: Update the cache and the pending set together, so a permission is never\n // \"not cached and not pending\" in between (that gap caused duplicate requests)\n const nextPermissions = { ...permissionsRef.current };\n permissionsToFetch.forEach((pKey, pIndex) => {\n pendingRequests.current.delete(pKey);\n nextPermissions[pKey] = { loading: false, ...response[pIndex] };\n });\n permissionsRef.current = nextPermissions;\n setPermissions(nextPermissions);\n }\n\n return { permissions, fetchPermissions };\n}\n\nexport default useProvidePermissions;\n"],"names":["fetchPermissionCheck","_x","_fetchPermissionCheck","apply","this","arguments","_asyncToGenerator","_regeneratorRuntime","mark","requestOptions","wrap","_context2","prev","next","getPermissionCheck","abrupt","sent","t0","console","error","active","stop","_callee2","useProvidePermissions","_useState","useState","_useState2","_slicedToArray","permissions","setPermissions","permissionsRef","useRef","pendingRequests","Set","_fetchPermissions","permissionKeys","permissionsToFetch","response","nextPermissions","_context","filter","pKey","current","has","length","Promise","all","map","add","parsePermission","_objectSpread","forEach","pIndex","delete","loading","_callee","window","Symbol","for","fetchPermissions","_x2"],"mappings":"o6BAIuD,SAExCA,EAAoBC,GAAA,OAAAC,EAAAC,MAAAC,KAAAC,UAAA,CAAA,SAAAH,IAQlC,OARkCA,EAAAI,EAAAC,EAAAC,MAAnC,WAAoCC,GAAc,OAAAF,EAAAG,MAAA,SAAAC,GAAA,OAAA,OAAAA,EAAAC,KAAAD,EAAAE,MAAA,KAAA,EAAA,OAAAF,EAAAC,KAAA,EAAAD,EAAAE,KAAA,EAEjCC,EAAmBL,GAAe,KAAA,EAAA,OAAAE,EAAAI,OAAA,SAAAJ,EAAAK,MAAA,KAAA,EAG/C,OAH+CL,EAAAC,KAAA,EAAAD,EAAAM,GAAAN,EAAA,MAAA,GAE/CO,QAAQC,MAAQR,EAAAM,IAETN,EAAAI,OAAA,SAAA,CAAEK,QAAQ,IAAO,KAAA,GAAA,IAAA,MAAA,OAAAT,EAAAU,OAAA,GAAAC,EAAA,KAAA,CAAA,CAAA,EAAA,IAE3B,MAAAnB,MAAAC,KAAAC,UAAA,CAED,SAASkB,IACP,IAAAC,EAAsCC,EAAS,IAAGC,EAAAC,EAAAH,EAAA,GAA3CI,EAAWF,EAAA,GAAEG,EAAcH,EAAA,GAG5BI,EAAiBC,EAAO,CAAA,GAExBC,EAAkBD,EAAO,IAAIE,KAQJ,SAAAC,IAyB9B,OAzB8BA,EAAA5B,EAAAC,EAAAC,MAA/B,WAAgC2B,GAAc,IAAAC,EAAAC,EAAAC,EAAA,OAAA/B,EAAAG,MAAA,SAAA6B,GAAA,OAAA,OAAAA,EAAA3B,KAAA2B,EAAA1B,MAAA,KAAA,EAI3C,IAHKuB,EAAqBD,EAAeK,QAExC,SAAAC,GAAI,QAAMA,KAAQX,EAAeY,WAAaV,EAAgBU,QAAQC,IAAIF,OAEpDG,OAAM,CAAAL,EAAA1B,KAAA,EAAA,KAAA,CAAA,OAAA0B,EAAAxB,OAAA,UAAA,KAAA,EAAA,OAAAwB,EAAA1B,KAAA,EAEPgC,QAAQC,IAC7BV,EAAmBW,KAAI,SAAAN,GAIrB,OAFAT,EAAgBU,QAAQM,IAAIP,GAErBzC,EAAqBiD,EAAgBR,GAC7C,KACF,KAAA,EAPKJ,EAAQE,EAAAvB,KAWRsB,EAAeY,EAAA,CAAA,EAAQpB,EAAeY,SAC5CN,EAAmBe,SAAQ,SAACV,EAAMW,GAChCpB,EAAgBU,QAAQW,OAAOZ,GAC/BH,EAAgBG,GAAKS,EAAA,CAAKI,SAAS,GAAUjB,EAASe,GACxD,IACAtB,EAAeY,QAAUJ,EACzBT,EAAeS,GAAiB,KAAA,GAAA,IAAA,MAAA,OAAAC,EAAAlB,OAAA,GAAAkC,EACjC,MAAApD,MAAAC,KAAAC,UAAA,CAED,OAhCAmD,OAAOC,OAAOC,IAAI,0BAA4B,WAC5C5B,EAAeY,QAAU,GACzBb,EAAe,CAAE,IA8BZ,CAAED,YAAAA,EAAa+B,iBA7BpB,SAE6BC,GAAA,OAAA1B,EAAA/B,MAAAC,KAAAC,UAAA,EA4BjC"}