@react-protected/react-router 0.2.0-beta.2 → 0.2.0-beta.3

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/dist/index.cjs CHANGED
@@ -1,4 +1,4 @@
1
- "use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const ee=require("react"),y=require("@react-protected/react"),m=require("react-router-dom"),ae=require("@react-protected/core");var G={exports:{}},N={};/**
1
+ "use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const te=require("react"),N=require("@react-protected/react"),v=require("react-router-dom"),se=require("@react-protected/core");var z={exports:{}},Y={};/**
2
2
  * @license React
3
3
  * react-jsx-runtime.production.js
4
4
  *
@@ -6,7 +6,7 @@
6
6
  *
7
7
  * This source code is licensed under the MIT license found in the
8
8
  * LICENSE file in the root directory of this source tree.
9
- */var Q;function se(){if(Q)return N;Q=1;var r=Symbol.for("react.transitional.element"),n=Symbol.for("react.fragment");function u(c,a,o){var s=null;if(o!==void 0&&(s=""+o),a.key!==void 0&&(s=""+a.key),"key"in a){o={};for(var d in a)d!=="key"&&(o[d]=a[d])}else o=a;return a=o.ref,{$$typeof:r,type:c,key:s,ref:a!==void 0?a:null,props:o}}return N.Fragment=n,N.jsx=u,N.jsxs=u,N}var C={};/**
9
+ */var K;function ue(){if(K)return Y;K=1;var r=Symbol.for("react.transitional.element"),a=Symbol.for("react.fragment");function n(s,u,o){var i=null;if(o!==void 0&&(i=""+o),u.key!==void 0&&(i=""+u.key),"key"in u){o={};for(var m in u)m!=="key"&&(o[m]=u[m])}else o=u;return u=o.ref,{$$typeof:r,type:s,key:i,ref:u!==void 0?u:null,props:o}}return Y.Fragment=a,Y.jsx=n,Y.jsxs=n,Y}var x={};/**
10
10
  * @license React
11
11
  * react-jsx-runtime.development.js
12
12
  *
@@ -14,9 +14,9 @@
14
14
  *
15
15
  * This source code is licensed under the MIT license found in the
16
16
  * LICENSE file in the root directory of this source tree.
17
- */var K;function ue(){return K||(K=1,process.env.NODE_ENV!=="production"&&function(){function r(e){if(e==null)return null;if(typeof e=="function")return e.$$typeof===te?null:e.displayName||e.name||null;if(typeof e=="string")return e;switch(e){case T:return"Fragment";case O:return"Profiler";case k:return"StrictMode";case S:return"Suspense";case x:return"SuspenseList";case L:return"Activity"}if(typeof e=="object")switch(typeof e.tag=="number"&&console.error("Received an unexpected object in getComponentNameFromType(). This is likely a bug in React. Please file an issue."),e.$$typeof){case R:return"Portal";case $:return e.displayName||"Context";case w:return(e._context.displayName||"Context")+".Consumer";case U:var t=e.render;return e=e.displayName,e||(e=t.displayName||t.name||"",e=e!==""?"ForwardRef("+e+")":"ForwardRef"),e;case z:return t=e.displayName||null,t!==null?t:r(e.type)||"Memo";case A:t=e._payload,e=e._init;try{return r(e(t))}catch{}}return null}function n(e){return""+e}function u(e){try{n(e);var t=!1}catch{t=!0}if(t){t=console;var i=t.error,l=typeof Symbol=="function"&&Symbol.toStringTag&&e[Symbol.toStringTag]||e.constructor.name||"Object";return i.call(t,"The provided key is an unsupported type %s. This value must be coerced to a string before using it here.",l),n(e)}}function c(e){if(e===T)return"<>";if(typeof e=="object"&&e!==null&&e.$$typeof===A)return"<...>";try{var t=r(e);return t?"<"+t+">":"<...>"}catch{return"<...>"}}function a(){var e=D.A;return e===null?null:e.getOwner()}function o(){return Error("react-stack-top-frame")}function s(e){if(V.call(e,"key")){var t=Object.getOwnPropertyDescriptor(e,"key").get;if(t&&t.isReactWarning)return!1}return e.key!==void 0}function d(e,t){function i(){H||(H=!0,console.error("%s: `key` is not a prop. Trying to access it will result in `undefined` being returned. If you need to access the same value within the child component, you should pass it as a different prop. (https://react.dev/link/special-props)",t))}i.isReactWarning=!0,Object.defineProperty(e,"key",{get:i,configurable:!0})}function g(){var e=r(this.type);return J[e]||(J[e]=!0,console.error("Accessing element.ref was removed in React 19. ref is now a regular prop. It will be removed from the JSX Element type in a future release.")),e=this.props.ref,e!==void 0?e:null}function b(e,t,i,l,Y,M){var f=i.ref;return e={$$typeof:h,type:e,key:t,props:i,_owner:l},(f!==void 0?f:null)!==null?Object.defineProperty(e,"ref",{enumerable:!1,get:g}):Object.defineProperty(e,"ref",{enumerable:!1,value:null}),e._store={},Object.defineProperty(e._store,"validated",{configurable:!1,enumerable:!1,writable:!0,value:0}),Object.defineProperty(e,"_debugInfo",{configurable:!1,enumerable:!1,writable:!0,value:null}),Object.defineProperty(e,"_debugStack",{configurable:!1,enumerable:!1,writable:!0,value:Y}),Object.defineProperty(e,"_debugTask",{configurable:!1,enumerable:!1,writable:!0,value:M}),Object.freeze&&(Object.freeze(e.props),Object.freeze(e)),e}function v(e,t,i,l,Y,M){var f=t.children;if(f!==void 0)if(l)if(ne(f)){for(l=0;l<f.length;l++)P(f[l]);Object.freeze&&Object.freeze(f)}else console.error("React.jsx: Static children should always be an array. You are likely explicitly calling React.jsxs or React.jsxDEV. Use the Babel transform instead.");else P(f);if(V.call(t,"key")){f=r(e);var j=Object.keys(t).filter(function(oe){return oe!=="key"});l=0<j.length?"{key: someKey, "+j.join(": ..., ")+": ...}":"{key: someKey}",Z[f+l]||(j=0<j.length?"{"+j.join(": ..., ")+": ...}":"{}",console.error(`A props object containing a "key" prop is being spread into JSX:
17
+ */var ee;function ce(){return ee||(ee=1,process.env.NODE_ENV!=="production"&&function(){function r(e){if(e==null)return null;if(typeof e=="function")return e.$$typeof===h?null:e.displayName||e.name||null;if(typeof e=="string")return e;switch(e){case A:return"Fragment";case O:return"Profiler";case I:return"StrictMode";case L:return"Suspense";case $:return"SuspenseList";case k:return"Activity"}if(typeof e=="object")switch(typeof e.tag=="number"&&console.error("Received an unexpected object in getComponentNameFromType(). This is likely a bug in React. Please file an issue."),e.$$typeof){case T:return"Portal";case C:return e.displayName||"Context";case j:return(e._context.displayName||"Context")+".Consumer";case F:var t=e.render;return e=e.displayName,e||(e=t.displayName||t.name||"",e=e!==""?"ForwardRef("+e+")":"ForwardRef"),e;case D:return t=e.displayName||null,t!==null?t:r(e.type)||"Memo";case y:t=e._payload,e=e._init;try{return r(e(t))}catch{}}return null}function a(e){return""+e}function n(e){try{a(e);var t=!1}catch{t=!0}if(t){t=console;var c=t.error,l=typeof Symbol=="function"&&Symbol.toStringTag&&e[Symbol.toStringTag]||e.constructor.name||"Object";return c.call(t,"The provided key is an unsupported type %s. This value must be coerced to a string before using it here.",l),a(e)}}function s(e){if(e===A)return"<>";if(typeof e=="object"&&e!==null&&e.$$typeof===y)return"<...>";try{var t=r(e);return t?"<"+t+">":"<...>"}catch{return"<...>"}}function u(){var e=U.A;return e===null?null:e.getOwner()}function o(){return Error("react-stack-top-frame")}function i(e){if(H.call(e,"key")){var t=Object.getOwnPropertyDescriptor(e,"key").get;if(t&&t.isReactWarning)return!1}return e.key!==void 0}function m(e,t){function c(){J||(J=!0,console.error("%s: `key` is not a prop. Trying to access it will result in `undefined` being returned. If you need to access the same value within the child component, you should pass it as a different prop. (https://react.dev/link/special-props)",t))}c.isReactWarning=!0,Object.defineProperty(e,"key",{get:c,configurable:!0})}function P(){var e=r(this.type);return B[e]||(B[e]=!0,console.error("Accessing element.ref was removed in React 19. ref is now a regular prop. It will be removed from the JSX Element type in a future release.")),e=this.props.ref,e!==void 0?e:null}function R(e,t,c,l,G,q){var f=c.ref;return e={$$typeof:_,type:e,key:t,props:c,_owner:l},(f!==void 0?f:null)!==null?Object.defineProperty(e,"ref",{enumerable:!1,get:P}):Object.defineProperty(e,"ref",{enumerable:!1,value:null}),e._store={},Object.defineProperty(e._store,"validated",{configurable:!1,enumerable:!1,writable:!0,value:0}),Object.defineProperty(e,"_debugInfo",{configurable:!1,enumerable:!1,writable:!0,value:null}),Object.defineProperty(e,"_debugStack",{configurable:!1,enumerable:!1,writable:!0,value:G}),Object.defineProperty(e,"_debugTask",{configurable:!1,enumerable:!1,writable:!0,value:q}),Object.freeze&&(Object.freeze(e.props),Object.freeze(e)),e}function d(e,t,c,l,G,q){var f=t.children;if(f!==void 0)if(l)if(oe(f)){for(l=0;l<f.length;l++)E(f[l]);Object.freeze&&Object.freeze(f)}else console.error("React.jsx: Static children should always be an array. You are likely explicitly calling React.jsxs or React.jsxDEV. Use the Babel transform instead.");else E(f);if(H.call(t,"key")){f=r(e);var w=Object.keys(t).filter(function(ae){return ae!=="key"});l=0<w.length?"{key: someKey, "+w.join(": ..., ")+": ...}":"{key: someKey}",Q[f+l]||(w=0<w.length?"{"+w.join(": ..., ")+": ...}":"{}",console.error(`A props object containing a "key" prop is being spread into JSX:
18
18
  let props = %s;
19
19
  <%s {...props} />
20
20
  React keys must be passed directly to JSX without using spread:
21
21
  let props = %s;
22
- <%s key={someKey} {...props} />`,l,f,j,f),Z[f+l]=!0)}if(f=null,i!==void 0&&(u(i),f=""+i),s(t)&&(u(t.key),f=""+t.key),"key"in t){i={};for(var q in t)q!=="key"&&(i[q]=t[q])}else i=t;return f&&d(i,typeof e=="function"?e.displayName||e.name||"Unknown":e),b(e,f,i,a(),Y,M)}function P(e){E(e)?e._store&&(e._store.validated=1):typeof e=="object"&&e!==null&&e.$$typeof===A&&(e._payload.status==="fulfilled"?E(e._payload.value)&&e._payload.value._store&&(e._payload.value._store.validated=1):e._store&&(e._store.validated=1))}function E(e){return typeof e=="object"&&e!==null&&e.$$typeof===h}var p=ee,h=Symbol.for("react.transitional.element"),R=Symbol.for("react.portal"),T=Symbol.for("react.fragment"),k=Symbol.for("react.strict_mode"),O=Symbol.for("react.profiler"),w=Symbol.for("react.consumer"),$=Symbol.for("react.context"),U=Symbol.for("react.forward_ref"),S=Symbol.for("react.suspense"),x=Symbol.for("react.suspense_list"),z=Symbol.for("react.memo"),A=Symbol.for("react.lazy"),L=Symbol.for("react.activity"),te=Symbol.for("react.client.reference"),D=p.__CLIENT_INTERNALS_DO_NOT_USE_OR_WARN_USERS_THEY_CANNOT_UPGRADE,V=Object.prototype.hasOwnProperty,ne=Array.isArray,F=console.createTask?console.createTask:function(){return null};p={react_stack_bottom_frame:function(e){return e()}};var H,J={},B=p.react_stack_bottom_frame.bind(p,o)(),X=F(c(o)),Z={};C.Fragment=T,C.jsx=function(e,t,i){var l=1e4>D.recentlyCreatedOwnerStacks++;return v(e,t,i,!1,l?Error("react-stack-top-frame"):B,l?F(c(e)):X)},C.jsxs=function(e,t,i){var l=1e4>D.recentlyCreatedOwnerStacks++;return v(e,t,i,!0,l?Error("react-stack-top-frame"):B,l?F(c(e)):X)}}()),C}process.env.NODE_ENV==="production"?G.exports=se():G.exports=ue();var _=G.exports;function ce(r){const{guard:n}=y.useAccess();return n.check(r)}const ie=ee.memo(({access:r,roles:n,permissions:u,meta:c,children:a})=>{const{guard:o,loginPath:s,forbiddenPath:d,defaultPath:g,callbackUrlParam:b,shouldAddCallbackUrl:v}=y.useAccess(),P=m.useLocation();if(r==="guest-only"){const p=o.options.getUser();return o.options.isAuthenticated(p)?_.jsx(m.Navigate,{to:g,replace:!0}):a??_.jsx(m.Outlet,{})}const E=o.check({access:r,roles:n,permissions:u,meta:c});if(!E.allowed){if(E.reason==="unauthenticated"){const p=`${P.pathname}${P.search}${P.hash}`,R=b&&((v==null?void 0:v())??!0)?`${s}?${b}=${encodeURIComponent(p)}`:s;return _.jsx(m.Navigate,{to:R,replace:!0})}return _.jsx(m.Navigate,{to:d,replace:!0})}return a??_.jsx(m.Outlet,{})});function re(r,n,u,c,a,o,s){return r==="unauthenticated"?o&&((s==null?void 0:s())??!0)?`${u}?${o}=${encodeURIComponent(n)}`:u:r==="forbidden"?c:a}function le({access:r,roles:n,permissions:u,meta:c,guard:a,routeElement:o,RouteComponent:s,loginPath:d,forbiddenPath:g,defaultPath:b,callbackUrlParam:v,shouldAddCallbackUrl:P}){const E=m.useLocation(),p=`${E.pathname}${E.search}${E.hash}`;if(r==="guest-only"){const R=a.options.getUser();return a.options.isAuthenticated(R)?_.jsx(m.Navigate,{to:b,replace:!0}):s?_.jsx(s,{}):o??_.jsx(m.Outlet,{})}const h=a.check({access:r,roles:n,permissions:u,meta:c});if(!h.allowed){const R=re(h.reason,p,d,g,b,v,P);return _.jsx(m.Navigate,{to:R,replace:!0})}return s?_.jsx(s,{}):o??_.jsx(m.Outlet,{})}function W(r,n,u){return _.jsx(le,{access:r.protection.access,roles:r.protection.roles,permissions:r.protection.permissions,meta:r.protection.meta,guard:r.guard,routeElement:n,RouteComponent:u??null,loginPath:r.loginPath,forbiddenPath:r.forbiddenPath,defaultPath:r.defaultPath,callbackUrlParam:r.callbackUrlParam,shouldAddCallbackUrl:r.shouldAddCallbackUrl})}function I(r,n){return r===void 0||typeof r=="boolean"?r:u=>{const c=new URL(u.request.url),a=`${c.pathname}${c.search}`;if(n.protection.access==="guest-only"){const s=n.guard.options.getUser();return n.guard.options.isAuthenticated(s)?m.redirect(n.defaultPath):r(u)}const o=n.guard.check(n.protection);if(!o.allowed){const s=re(o.reason,a,n.loginPath,n.forbiddenPath,n.defaultPath,n.callbackUrlParam,n.shouldAddCallbackUrl);return m.redirect(s)}return r(u)}}async function fe(r){const n=await Promise.all(Object.entries(r).map(async([u,c])=>[u,await(c==null?void 0:c())]));return Object.fromEntries(n)}function de(r,n){if(!r)return;const u=typeof r=="function"?r:()=>fe(r);return async()=>{const c=await u();if(!c)return n.hasStaticUi?{}:{element:W(n)};const{element:a,Component:o,loader:s,action:d,...g}=c,b={...g,loader:I(s,n),action:I(d,n)};return n.hasStaticUi||(b.element=W(n,a,o??null)),b}}function me(r,n,u){const{loginPath:c="/login",forbiddenPath:a="/403",defaultPath:o="/",callbackUrlParam:s,shouldAddCallbackUrl:d,...g}=n,b=ae.createGuard(g),v=P=>P.map(E=>{const{access:p,roles:h,permissions:R,meta:T,children:k,element:O,Component:w,loader:$,action:U,lazy:S,...x}=E;if(!(p!==void 0||!!(h!=null&&h.length)||!!(R!=null&&R.length)||T!==void 0))return{...x,element:O,Component:w,loader:$,action:U,lazy:S,children:k?v(k):void 0};const A={guard:b,protection:{access:p,roles:h,permissions:R,meta:T},hasStaticUi:O!=null||w!=null,loginPath:c,forbiddenPath:a,defaultPath:o,callbackUrlParam:s,shouldAddCallbackUrl:d},L=A.hasStaticUi||!S?W(A,O,w??null):void 0;return{...x,element:L,Component:void 0,loader:I($,A),action:I(U,A),lazy:de(S,A),children:k?v(k):void 0}});return m.createBrowserRouter(v(r),u)}Object.defineProperty(exports,"AccessProvider",{enumerable:!0,get:()=>y.AccessProvider});Object.defineProperty(exports,"HasAccess",{enumerable:!0,get:()=>y.HasAccess});Object.defineProperty(exports,"useAccess",{enumerable:!0,get:()=>y.useAccess});Object.defineProperty(exports,"useHasAccess",{enumerable:!0,get:()=>y.useHasAccess});exports.AccessRoute=ie;exports.createAccessRouter=me;exports.useRouteAccess=ce;
22
+ <%s key={someKey} {...props} />`,l,f,w,f),Q[f+l]=!0)}if(f=null,c!==void 0&&(n(c),f=""+c),i(t)&&(n(t.key),f=""+t.key),"key"in t){c={};for(var W in t)W!=="key"&&(c[W]=t[W])}else c=t;return f&&m(c,typeof e=="function"?e.displayName||e.name||"Unknown":e),R(e,f,c,u(),G,q)}function E(e){p(e)?e._store&&(e._store.validated=1):typeof e=="object"&&e!==null&&e.$$typeof===y&&(e._payload.status==="fulfilled"?p(e._payload.value)&&e._payload.value._store&&(e._payload.value._store.validated=1):e._store&&(e._store.validated=1))}function p(e){return typeof e=="object"&&e!==null&&e.$$typeof===_}var b=te,_=Symbol.for("react.transitional.element"),T=Symbol.for("react.portal"),A=Symbol.for("react.fragment"),I=Symbol.for("react.strict_mode"),O=Symbol.for("react.profiler"),j=Symbol.for("react.consumer"),C=Symbol.for("react.context"),F=Symbol.for("react.forward_ref"),L=Symbol.for("react.suspense"),$=Symbol.for("react.suspense_list"),D=Symbol.for("react.memo"),y=Symbol.for("react.lazy"),k=Symbol.for("react.activity"),h=Symbol.for("react.client.reference"),U=b.__CLIENT_INTERNALS_DO_NOT_USE_OR_WARN_USERS_THEY_CANNOT_UPGRADE,H=Object.prototype.hasOwnProperty,oe=Array.isArray,M=console.createTask?console.createTask:function(){return null};b={react_stack_bottom_frame:function(e){return e()}};var J,B={},X=b.react_stack_bottom_frame.bind(b,o)(),Z=M(s(o)),Q={};x.Fragment=A,x.jsx=function(e,t,c){var l=1e4>U.recentlyCreatedOwnerStacks++;return d(e,t,c,!1,l?Error("react-stack-top-frame"):X,l?M(s(e)):Z)},x.jsxs=function(e,t,c){var l=1e4>U.recentlyCreatedOwnerStacks++;return d(e,t,c,!0,l?Error("react-stack-top-frame"):X,l?M(s(e)):Z)}}()),x}process.env.NODE_ENV==="production"?z.exports=ue():z.exports=ce();var g=z.exports;function ie(r){const{guard:a}=N.useAccess();return a.check(r)}const le=te.memo(({access:r,roles:a,permissions:n,meta:s,children:u})=>{const{guard:o,loginPath:i,forbiddenPath:m,defaultPath:P,callbackUrlParam:R,shouldAddCallbackUrl:d}=N.useAccess(),E=v.useLocation();if(r==="guest-only"){const b=o.options.getUser();return o.options.isAuthenticated(b)?g.jsx(v.Navigate,{to:P,replace:!0}):u??g.jsx(v.Outlet,{})}const p=o.check({access:r,roles:a,permissions:n,meta:s});if(!p.allowed){if(p.reason==="unauthenticated"){const b=`${E.pathname}${E.search}${E.hash}`,T=R&&((d==null?void 0:d())??!0)?`${i}?${R}=${encodeURIComponent(b)}`:i;return g.jsx(v.Navigate,{to:T,replace:!0})}return g.jsx(v.Navigate,{to:m,replace:!0})}return u??g.jsx(v.Outlet,{})});function fe(r,a,n,s,u,o,i){return r==="unauthenticated"?o&&((i==null?void 0:i())??!0)?`${n}?${o}=${encodeURIComponent(a)}`:n:r==="forbidden"?s:u}function ne(r,a){if(r.protection.access==="guest-only"){const s=r.guard.options.getUser();return r.guard.options.isAuthenticated(s)?r.defaultPath:null}const n=r.guard.check(r.protection);return n.allowed?null:fe(n.reason,a,r.loginPath,r.forbiddenPath,r.defaultPath,r.callbackUrlParam,r.shouldAddCallbackUrl)}function de(r,a){return r.reduce((n,s)=>n??ne(s,a),null)}function me({access:r,roles:a,permissions:n,meta:s,guard:u,routeElement:o,RouteComponent:i,loginPath:m,forbiddenPath:P,defaultPath:R,callbackUrlParam:d,shouldAddCallbackUrl:E}){const p=v.useLocation(),b=`${p.pathname}${p.search}${p.hash}`,_=ne({guard:u,protection:{access:r,roles:a,permissions:n,meta:s},loginPath:m,forbiddenPath:P,defaultPath:R,callbackUrlParam:d,shouldAddCallbackUrl:E},b);return _?g.jsx(v.Navigate,{to:_,replace:!0}):i?g.jsx(i,{}):o??g.jsx(v.Outlet,{})}function V(r,a,n){return g.jsx(me,{access:r.protection.access,roles:r.protection.roles,permissions:r.protection.permissions,meta:r.protection.meta,guard:r.guard,routeElement:a,RouteComponent:n??null,loginPath:r.loginPath,forbiddenPath:r.forbiddenPath,defaultPath:r.defaultPath,callbackUrlParam:r.callbackUrlParam,shouldAddCallbackUrl:r.shouldAddCallbackUrl})}function S(r,a){return r===void 0||typeof r=="boolean"||a.length===0?r:n=>{const s=new URL(n.request.url),u=`${s.pathname}${s.search}`,o=de(a,u);return o?v.redirect(o):r(n)}}async function pe(r){const a=await Promise.all(Object.entries(r).map(async([n,s])=>[n,await(s==null?void 0:s())]));return Object.fromEntries(a)}function re(r,a,n){if(!r)return;const s=typeof r=="function"?r:()=>pe(r);return async()=>{const u=await s();if(!u)return n?n.hasStaticUi?{}:{element:V(n)}:{};const{element:o,Component:i,loader:m,action:P,...R}=u,d={...R,loader:S(m,a),action:S(P,a)};return n?(n.hasStaticUi||(d.element=V(n,o,i??null)),d):(d.element=o,d.Component=i,d)}}function be(r,a,n){const{loginPath:s="/login",forbiddenPath:u="/403",defaultPath:o="/",callbackUrlParam:i,shouldAddCallbackUrl:m,...P}=a,R=se.createGuard(P),d=(E,p=[])=>E.map(b=>{const{access:_,roles:T,permissions:A,meta:I,children:O,element:j,Component:C,loader:F,action:L,lazy:$,...D}=b,y=_!==void 0||!!(T!=null&&T.length)||!!(A!=null&&A.length)||I!==void 0,k=y?{guard:R,protection:{access:_,roles:T,permissions:A,meta:I},hasStaticUi:j!=null||C!=null,loginPath:s,forbiddenPath:u,defaultPath:o,callbackUrlParam:i,shouldAddCallbackUrl:m}:void 0,h=k?[...p,k]:p;if(!y)return{...D,element:j,Component:C,loader:S(F,h),action:S(L,h),lazy:re($,h),children:O?d(O,h):void 0};if(!k)throw new Error("Guard context must exist for guarded routes");const U=k.hasStaticUi||!$?V(k,j,C??null):void 0;return{...D,element:U,Component:void 0,loader:S(F,h),action:S(L,h),lazy:re($,h,k),children:O?d(O,h):void 0}});return v.createBrowserRouter(d(r),n)}Object.defineProperty(exports,"AccessProvider",{enumerable:!0,get:()=>N.AccessProvider});Object.defineProperty(exports,"HasAccess",{enumerable:!0,get:()=>N.HasAccess});Object.defineProperty(exports,"useAccess",{enumerable:!0,get:()=>N.useAccess});Object.defineProperty(exports,"useHasAccess",{enumerable:!0,get:()=>N.useHasAccess});exports.AccessRoute=le;exports.createAccessRouter=be;exports.useRouteAccess=ie;
package/dist/index.js CHANGED
@@ -1,9 +1,9 @@
1
1
  import ue, { memo as ce } from "react";
2
- import { useAccess as re } from "@react-protected/react";
3
- import { AccessProvider as ge, HasAccess as je, useAccess as we, useHasAccess as Oe } from "@react-protected/react";
4
- import { useLocation as te, Navigate as C, Outlet as Y, createBrowserRouter as ie, redirect as Q } from "react-router-dom";
5
- import { createGuard as le } from "@react-protected/core";
6
- var W = { exports: {} }, y = {};
2
+ import { useAccess as te } from "@react-protected/react";
3
+ import { AccessProvider as Oe, HasAccess as je, useAccess as ye, useHasAccess as Se } from "@react-protected/react";
4
+ import { useLocation as ne, Navigate as D, Outlet as z, createBrowserRouter as ie, redirect as le } from "react-router-dom";
5
+ import { createGuard as fe } from "@react-protected/core";
6
+ var V = { exports: {} }, N = {};
7
7
  /**
8
8
  * @license React
9
9
  * react-jsx-runtime.production.js
@@ -14,28 +14,28 @@ var W = { exports: {} }, y = {};
14
14
  * LICENSE file in the root directory of this source tree.
15
15
  */
16
16
  var K;
17
- function fe() {
18
- if (K) return y;
17
+ function de() {
18
+ if (K) return N;
19
19
  K = 1;
20
- var r = Symbol.for("react.transitional.element"), n = Symbol.for("react.fragment");
21
- function u(c, a, o) {
22
- var s = null;
23
- if (o !== void 0 && (s = "" + o), a.key !== void 0 && (s = "" + a.key), "key" in a) {
20
+ var r = Symbol.for("react.transitional.element"), a = Symbol.for("react.fragment");
21
+ function n(s, u, o) {
22
+ var i = null;
23
+ if (o !== void 0 && (i = "" + o), u.key !== void 0 && (i = "" + u.key), "key" in u) {
24
24
  o = {};
25
- for (var d in a)
26
- d !== "key" && (o[d] = a[d]);
27
- } else o = a;
28
- return a = o.ref, {
25
+ for (var m in u)
26
+ m !== "key" && (o[m] = u[m]);
27
+ } else o = u;
28
+ return u = o.ref, {
29
29
  $$typeof: r,
30
- type: c,
31
- key: s,
32
- ref: a !== void 0 ? a : null,
30
+ type: s,
31
+ key: i,
32
+ ref: u !== void 0 ? u : null,
33
33
  props: o
34
34
  };
35
35
  }
36
- return y.Fragment = n, y.jsx = u, y.jsxs = u, y;
36
+ return N.Fragment = a, N.jsx = n, N.jsxs = n, N;
37
37
  }
38
- var S = {};
38
+ var U = {};
39
39
  /**
40
40
  * @license React
41
41
  * react-jsx-runtime.development.js
@@ -46,43 +46,43 @@ var S = {};
46
46
  * LICENSE file in the root directory of this source tree.
47
47
  */
48
48
  var ee;
49
- function de() {
49
+ function me() {
50
50
  return ee || (ee = 1, process.env.NODE_ENV !== "production" && function() {
51
51
  function r(e) {
52
52
  if (e == null) return null;
53
53
  if (typeof e == "function")
54
- return e.$$typeof === oe ? null : e.displayName || e.name || null;
54
+ return e.$$typeof === _ ? null : e.displayName || e.name || null;
55
55
  if (typeof e == "string") return e;
56
56
  switch (e) {
57
- case k:
58
- return "Fragment";
59
57
  case g:
60
- return "Profiler";
58
+ return "Fragment";
61
59
  case A:
60
+ return "Profiler";
61
+ case x:
62
62
  return "StrictMode";
63
- case O:
63
+ case I:
64
64
  return "Suspense";
65
- case U:
65
+ case C:
66
66
  return "SuspenseList";
67
- case F:
67
+ case k:
68
68
  return "Activity";
69
69
  }
70
70
  if (typeof e == "object")
71
71
  switch (typeof e.tag == "number" && console.error(
72
72
  "Received an unexpected object in getComponentNameFromType(). This is likely a bug in React. Please file an issue."
73
73
  ), e.$$typeof) {
74
- case v:
74
+ case T:
75
75
  return "Portal";
76
- case $:
76
+ case S:
77
77
  return e.displayName || "Context";
78
78
  case w:
79
79
  return (e._context.displayName || "Context") + ".Consumer";
80
- case N:
80
+ case Y:
81
81
  var t = e.render;
82
82
  return e = e.displayName, e || (e = t.displayName || t.name || "", e = e !== "" ? "ForwardRef(" + e + ")" : "ForwardRef"), e;
83
- case V:
83
+ case F:
84
84
  return t = e.displayName || null, t !== null ? t : r(e.type) || "Memo";
85
- case T:
85
+ case O:
86
86
  t = e._payload, e = e._init;
87
87
  try {
88
88
  return r(e(t));
@@ -91,29 +91,29 @@ function de() {
91
91
  }
92
92
  return null;
93
93
  }
94
- function n(e) {
94
+ function a(e) {
95
95
  return "" + e;
96
96
  }
97
- function u(e) {
97
+ function n(e) {
98
98
  try {
99
- n(e);
99
+ a(e);
100
100
  var t = !1;
101
101
  } catch {
102
102
  t = !0;
103
103
  }
104
104
  if (t) {
105
105
  t = console;
106
- var i = t.error, l = typeof Symbol == "function" && Symbol.toStringTag && e[Symbol.toStringTag] || e.constructor.name || "Object";
107
- return i.call(
106
+ var c = t.error, l = typeof Symbol == "function" && Symbol.toStringTag && e[Symbol.toStringTag] || e.constructor.name || "Object";
107
+ return c.call(
108
108
  t,
109
109
  "The provided key is an unsupported type %s. This value must be coerced to a string before using it here.",
110
110
  l
111
- ), n(e);
111
+ ), a(e);
112
112
  }
113
113
  }
114
- function c(e) {
115
- if (e === k) return "<>";
116
- if (typeof e == "object" && e !== null && e.$$typeof === T)
114
+ function s(e) {
115
+ if (e === g) return "<>";
116
+ if (typeof e == "object" && e !== null && e.$$typeof === O)
117
117
  return "<...>";
118
118
  try {
119
119
  var t = r(e);
@@ -122,49 +122,49 @@ function de() {
122
122
  return "<...>";
123
123
  }
124
124
  }
125
- function a() {
126
- var e = L.A;
125
+ function u() {
126
+ var e = $.A;
127
127
  return e === null ? null : e.getOwner();
128
128
  }
129
129
  function o() {
130
130
  return Error("react-stack-top-frame");
131
131
  }
132
- function s(e) {
133
- if (q.call(e, "key")) {
132
+ function i(e) {
133
+ if (J.call(e, "key")) {
134
134
  var t = Object.getOwnPropertyDescriptor(e, "key").get;
135
135
  if (t && t.isReactWarning) return !1;
136
136
  }
137
137
  return e.key !== void 0;
138
138
  }
139
- function d(e, t) {
140
- function i() {
141
- J || (J = !0, console.error(
139
+ function m(e, t) {
140
+ function c() {
141
+ B || (B = !0, console.error(
142
142
  "%s: `key` is not a prop. Trying to access it will result in `undefined` being returned. If you need to access the same value within the child component, you should pass it as a different prop. (https://react.dev/link/special-props)",
143
143
  t
144
144
  ));
145
145
  }
146
- i.isReactWarning = !0, Object.defineProperty(e, "key", {
147
- get: i,
146
+ c.isReactWarning = !0, Object.defineProperty(e, "key", {
147
+ get: c,
148
148
  configurable: !0
149
149
  });
150
150
  }
151
- function P() {
151
+ function h() {
152
152
  var e = r(this.type);
153
- return B[e] || (B[e] = !0, console.error(
153
+ return X[e] || (X[e] = !0, console.error(
154
154
  "Accessing element.ref was removed in React 19. ref is now a regular prop. It will be removed from the JSX Element type in a future release."
155
155
  )), e = this.props.ref, e !== void 0 ? e : null;
156
156
  }
157
- function p(e, t, i, l, x, G) {
158
- var f = i.ref;
157
+ function E(e, t, c, l, L, M) {
158
+ var f = c.ref;
159
159
  return e = {
160
- $$typeof: h,
160
+ $$typeof: R,
161
161
  type: e,
162
162
  key: t,
163
- props: i,
163
+ props: c,
164
164
  _owner: l
165
165
  }, (f !== void 0 ? f : null) !== null ? Object.defineProperty(e, "ref", {
166
166
  enumerable: !1,
167
- get: P
167
+ get: h
168
168
  }) : Object.defineProperty(e, "ref", { enumerable: !1, value: null }), e._store = {}, Object.defineProperty(e._store, "validated", {
169
169
  configurable: !1,
170
170
  enumerable: !1,
@@ -179,33 +179,33 @@ function de() {
179
179
  configurable: !1,
180
180
  enumerable: !1,
181
181
  writable: !0,
182
- value: x
182
+ value: L
183
183
  }), Object.defineProperty(e, "_debugTask", {
184
184
  configurable: !1,
185
185
  enumerable: !1,
186
186
  writable: !0,
187
- value: G
187
+ value: M
188
188
  }), Object.freeze && (Object.freeze(e.props), Object.freeze(e)), e;
189
189
  }
190
- function b(e, t, i, l, x, G) {
190
+ function d(e, t, c, l, L, M) {
191
191
  var f = t.children;
192
192
  if (f !== void 0)
193
193
  if (l)
194
194
  if (ae(f)) {
195
195
  for (l = 0; l < f.length; l++)
196
- R(f[l]);
196
+ v(f[l]);
197
197
  Object.freeze && Object.freeze(f);
198
198
  } else
199
199
  console.error(
200
200
  "React.jsx: Static children should always be an array. You are likely explicitly calling React.jsxs or React.jsxDEV. Use the Babel transform instead."
201
201
  );
202
- else R(f);
203
- if (q.call(t, "key")) {
202
+ else v(f);
203
+ if (J.call(t, "key")) {
204
204
  f = r(e);
205
205
  var j = Object.keys(t).filter(function(se) {
206
206
  return se !== "key";
207
207
  });
208
- l = 0 < j.length ? "{key: someKey, " + j.join(": ..., ") + ": ...}" : "{key: someKey}", Z[f + l] || (j = 0 < j.length ? "{" + j.join(": ..., ") + ": ...}" : "{}", console.error(
208
+ l = 0 < j.length ? "{key: someKey, " + j.join(": ..., ") + ": ...}" : "{key: someKey}", Q[f + l] || (j = 0 < j.length ? "{" + j.join(": ..., ") + ": ...}" : "{}", console.error(
209
209
  `A props object containing a "key" prop is being spread into JSX:
210
210
  let props = %s;
211
211
  <%s {...props} />
@@ -216,142 +216,158 @@ React keys must be passed directly to JSX without using spread:
216
216
  f,
217
217
  j,
218
218
  f
219
- ), Z[f + l] = !0);
219
+ ), Q[f + l] = !0);
220
220
  }
221
- if (f = null, i !== void 0 && (u(i), f = "" + i), s(t) && (u(t.key), f = "" + t.key), "key" in t) {
222
- i = {};
223
- for (var M in t)
224
- M !== "key" && (i[M] = t[M]);
225
- } else i = t;
226
- return f && d(
227
- i,
221
+ if (f = null, c !== void 0 && (n(c), f = "" + c), i(t) && (n(t.key), f = "" + t.key), "key" in t) {
222
+ c = {};
223
+ for (var W in t)
224
+ W !== "key" && (c[W] = t[W]);
225
+ } else c = t;
226
+ return f && m(
227
+ c,
228
228
  typeof e == "function" ? e.displayName || e.name || "Unknown" : e
229
- ), p(
229
+ ), E(
230
230
  e,
231
231
  f,
232
- i,
233
- a(),
234
- x,
235
- G
232
+ c,
233
+ u(),
234
+ L,
235
+ M
236
236
  );
237
237
  }
238
- function R(e) {
239
- E(e) ? e._store && (e._store.validated = 1) : typeof e == "object" && e !== null && e.$$typeof === T && (e._payload.status === "fulfilled" ? E(e._payload.value) && e._payload.value._store && (e._payload.value._store.validated = 1) : e._store && (e._store.validated = 1));
238
+ function v(e) {
239
+ p(e) ? e._store && (e._store.validated = 1) : typeof e == "object" && e !== null && e.$$typeof === O && (e._payload.status === "fulfilled" ? p(e._payload.value) && e._payload.value._store && (e._payload.value._store.validated = 1) : e._store && (e._store.validated = 1));
240
240
  }
241
- function E(e) {
242
- return typeof e == "object" && e !== null && e.$$typeof === h;
241
+ function p(e) {
242
+ return typeof e == "object" && e !== null && e.$$typeof === R;
243
243
  }
244
- var m = ue, h = Symbol.for("react.transitional.element"), v = Symbol.for("react.portal"), k = Symbol.for("react.fragment"), A = Symbol.for("react.strict_mode"), g = Symbol.for("react.profiler"), w = Symbol.for("react.consumer"), $ = Symbol.for("react.context"), N = Symbol.for("react.forward_ref"), O = Symbol.for("react.suspense"), U = Symbol.for("react.suspense_list"), V = Symbol.for("react.memo"), T = Symbol.for("react.lazy"), F = Symbol.for("react.activity"), oe = Symbol.for("react.client.reference"), L = m.__CLIENT_INTERNALS_DO_NOT_USE_OR_WARN_USERS_THEY_CANNOT_UPGRADE, q = Object.prototype.hasOwnProperty, ae = Array.isArray, D = console.createTask ? console.createTask : function() {
244
+ var b = ue, R = Symbol.for("react.transitional.element"), T = Symbol.for("react.portal"), g = Symbol.for("react.fragment"), x = Symbol.for("react.strict_mode"), A = Symbol.for("react.profiler"), w = Symbol.for("react.consumer"), S = Symbol.for("react.context"), Y = Symbol.for("react.forward_ref"), I = Symbol.for("react.suspense"), C = Symbol.for("react.suspense_list"), F = Symbol.for("react.memo"), O = Symbol.for("react.lazy"), k = Symbol.for("react.activity"), _ = Symbol.for("react.client.reference"), $ = b.__CLIENT_INTERNALS_DO_NOT_USE_OR_WARN_USERS_THEY_CANNOT_UPGRADE, J = Object.prototype.hasOwnProperty, ae = Array.isArray, G = console.createTask ? console.createTask : function() {
245
245
  return null;
246
246
  };
247
- m = {
247
+ b = {
248
248
  react_stack_bottom_frame: function(e) {
249
249
  return e();
250
250
  }
251
251
  };
252
- var J, B = {}, X = m.react_stack_bottom_frame.bind(
253
- m,
252
+ var B, X = {}, H = b.react_stack_bottom_frame.bind(
253
+ b,
254
254
  o
255
- )(), H = D(c(o)), Z = {};
256
- S.Fragment = k, S.jsx = function(e, t, i) {
257
- var l = 1e4 > L.recentlyCreatedOwnerStacks++;
258
- return b(
255
+ )(), Z = G(s(o)), Q = {};
256
+ U.Fragment = g, U.jsx = function(e, t, c) {
257
+ var l = 1e4 > $.recentlyCreatedOwnerStacks++;
258
+ return d(
259
259
  e,
260
260
  t,
261
- i,
261
+ c,
262
262
  !1,
263
- l ? Error("react-stack-top-frame") : X,
264
- l ? D(c(e)) : H
263
+ l ? Error("react-stack-top-frame") : H,
264
+ l ? G(s(e)) : Z
265
265
  );
266
- }, S.jsxs = function(e, t, i) {
267
- var l = 1e4 > L.recentlyCreatedOwnerStacks++;
268
- return b(
266
+ }, U.jsxs = function(e, t, c) {
267
+ var l = 1e4 > $.recentlyCreatedOwnerStacks++;
268
+ return d(
269
269
  e,
270
270
  t,
271
- i,
271
+ c,
272
272
  !0,
273
- l ? Error("react-stack-top-frame") : X,
274
- l ? D(c(e)) : H
273
+ l ? Error("react-stack-top-frame") : H,
274
+ l ? G(s(e)) : Z
275
275
  );
276
276
  };
277
- }()), S;
277
+ }()), U;
278
278
  }
279
- process.env.NODE_ENV === "production" ? W.exports = fe() : W.exports = de();
280
- var _ = W.exports;
281
- function Re(r) {
282
- const { guard: n } = re();
283
- return n.check(r);
279
+ process.env.NODE_ENV === "production" ? V.exports = de() : V.exports = me();
280
+ var P = V.exports;
281
+ function Te(r) {
282
+ const { guard: a } = te();
283
+ return a.check(r);
284
284
  }
285
- const Pe = ce(({
285
+ const ge = ce(({
286
286
  access: r,
287
- roles: n,
288
- permissions: u,
289
- meta: c,
290
- children: a
287
+ roles: a,
288
+ permissions: n,
289
+ meta: s,
290
+ children: u
291
291
  }) => {
292
- const { guard: o, loginPath: s, forbiddenPath: d, defaultPath: P, callbackUrlParam: p, shouldAddCallbackUrl: b } = re(), R = te();
292
+ const { guard: o, loginPath: i, forbiddenPath: m, defaultPath: h, callbackUrlParam: E, shouldAddCallbackUrl: d } = te(), v = ne();
293
293
  if (r === "guest-only") {
294
- const m = o.options.getUser();
295
- return o.options.isAuthenticated(m) ? /* @__PURE__ */ _.jsx(C, { to: P, replace: !0 }) : a ?? /* @__PURE__ */ _.jsx(Y, {});
294
+ const b = o.options.getUser();
295
+ return o.options.isAuthenticated(b) ? /* @__PURE__ */ P.jsx(D, { to: h, replace: !0 }) : u ?? /* @__PURE__ */ P.jsx(z, {});
296
296
  }
297
- const E = o.check({ access: r, roles: n, permissions: u, meta: c });
298
- if (!E.allowed) {
299
- if (E.reason === "unauthenticated") {
300
- const m = `${R.pathname}${R.search}${R.hash}`, v = p && ((b == null ? void 0 : b()) ?? !0) ? `${s}?${p}=${encodeURIComponent(m)}` : s;
301
- return /* @__PURE__ */ _.jsx(C, { to: v, replace: !0 });
297
+ const p = o.check({ access: r, roles: a, permissions: n, meta: s });
298
+ if (!p.allowed) {
299
+ if (p.reason === "unauthenticated") {
300
+ const b = `${v.pathname}${v.search}${v.hash}`, T = E && ((d == null ? void 0 : d()) ?? !0) ? `${i}?${E}=${encodeURIComponent(b)}` : i;
301
+ return /* @__PURE__ */ P.jsx(D, { to: T, replace: !0 });
302
302
  }
303
- return /* @__PURE__ */ _.jsx(C, { to: d, replace: !0 });
303
+ return /* @__PURE__ */ P.jsx(D, { to: m, replace: !0 });
304
304
  }
305
- return a ?? /* @__PURE__ */ _.jsx(Y, {});
305
+ return u ?? /* @__PURE__ */ P.jsx(z, {});
306
306
  });
307
- function ne(r, n, u, c, a, o, s) {
308
- return r === "unauthenticated" ? o && ((s == null ? void 0 : s()) ?? !0) ? `${u}?${o}=${encodeURIComponent(n)}` : u : r === "forbidden" ? c : a;
307
+ function pe(r, a, n, s, u, o, i) {
308
+ return r === "unauthenticated" ? o && ((i == null ? void 0 : i()) ?? !0) ? `${n}?${o}=${encodeURIComponent(a)}` : n : r === "forbidden" ? s : u;
309
309
  }
310
- function me({
310
+ function oe(r, a) {
311
+ if (r.protection.access === "guest-only") {
312
+ const s = r.guard.options.getUser();
313
+ return r.guard.options.isAuthenticated(s) ? r.defaultPath : null;
314
+ }
315
+ const n = r.guard.check(r.protection);
316
+ return n.allowed ? null : pe(
317
+ n.reason,
318
+ a,
319
+ r.loginPath,
320
+ r.forbiddenPath,
321
+ r.defaultPath,
322
+ r.callbackUrlParam,
323
+ r.shouldAddCallbackUrl
324
+ );
325
+ }
326
+ function be(r, a) {
327
+ return r.reduce(
328
+ (n, s) => n ?? oe(s, a),
329
+ null
330
+ );
331
+ }
332
+ function Ee({
311
333
  access: r,
312
- roles: n,
313
- permissions: u,
314
- meta: c,
315
- guard: a,
334
+ roles: a,
335
+ permissions: n,
336
+ meta: s,
337
+ guard: u,
316
338
  routeElement: o,
317
- RouteComponent: s,
318
- loginPath: d,
319
- forbiddenPath: P,
320
- defaultPath: p,
321
- callbackUrlParam: b,
322
- shouldAddCallbackUrl: R
339
+ RouteComponent: i,
340
+ loginPath: m,
341
+ forbiddenPath: h,
342
+ defaultPath: E,
343
+ callbackUrlParam: d,
344
+ shouldAddCallbackUrl: v
323
345
  }) {
324
- const E = te(), m = `${E.pathname}${E.search}${E.hash}`;
325
- if (r === "guest-only") {
326
- const v = a.options.getUser();
327
- return a.options.isAuthenticated(v) ? /* @__PURE__ */ _.jsx(C, { to: p, replace: !0 }) : s ? /* @__PURE__ */ _.jsx(s, {}) : o ?? /* @__PURE__ */ _.jsx(Y, {});
328
- }
329
- const h = a.check({ access: r, roles: n, permissions: u, meta: c });
330
- if (!h.allowed) {
331
- const v = ne(
332
- h.reason,
333
- m,
334
- d,
335
- P,
336
- p,
337
- b,
338
- R
339
- );
340
- return /* @__PURE__ */ _.jsx(C, { to: v, replace: !0 });
341
- }
342
- return s ? /* @__PURE__ */ _.jsx(s, {}) : o ?? /* @__PURE__ */ _.jsx(Y, {});
346
+ const p = ne(), b = `${p.pathname}${p.search}${p.hash}`, R = oe(
347
+ {
348
+ guard: u,
349
+ protection: { access: r, roles: a, permissions: n, meta: s },
350
+ loginPath: m,
351
+ forbiddenPath: h,
352
+ defaultPath: E,
353
+ callbackUrlParam: d,
354
+ shouldAddCallbackUrl: v
355
+ },
356
+ b
357
+ );
358
+ return R ? /* @__PURE__ */ P.jsx(D, { to: R, replace: !0 }) : i ? /* @__PURE__ */ P.jsx(i, {}) : o ?? /* @__PURE__ */ P.jsx(z, {});
343
359
  }
344
- function z(r, n, u) {
345
- return /* @__PURE__ */ _.jsx(
346
- me,
360
+ function q(r, a, n) {
361
+ return /* @__PURE__ */ P.jsx(
362
+ Ee,
347
363
  {
348
364
  access: r.protection.access,
349
365
  roles: r.protection.roles,
350
366
  permissions: r.protection.permissions,
351
367
  meta: r.protection.meta,
352
368
  guard: r.guard,
353
- routeElement: n,
354
- RouteComponent: u ?? null,
369
+ routeElement: a,
370
+ RouteComponent: n ?? null,
355
371
  loginPath: r.loginPath,
356
372
  forbiddenPath: r.forbiddenPath,
357
373
  defaultPath: r.defaultPath,
@@ -360,110 +376,95 @@ function z(r, n, u) {
360
376
  }
361
377
  );
362
378
  }
363
- function I(r, n) {
364
- return r === void 0 || typeof r == "boolean" ? r : (u) => {
365
- const c = new URL(u.request.url), a = `${c.pathname}${c.search}`;
366
- if (n.protection.access === "guest-only") {
367
- const s = n.guard.options.getUser();
368
- return n.guard.options.isAuthenticated(s) ? Q(n.defaultPath) : r(u);
369
- }
370
- const o = n.guard.check(n.protection);
371
- if (!o.allowed) {
372
- const s = ne(
373
- o.reason,
374
- a,
375
- n.loginPath,
376
- n.forbiddenPath,
377
- n.defaultPath,
378
- n.callbackUrlParam,
379
- n.shouldAddCallbackUrl
380
- );
381
- return Q(s);
382
- }
383
- return r(u);
379
+ function y(r, a) {
380
+ return r === void 0 || typeof r == "boolean" || a.length === 0 ? r : (n) => {
381
+ const s = new URL(n.request.url), u = `${s.pathname}${s.search}`, o = be(a, u);
382
+ return o ? le(o) : r(n);
384
383
  };
385
384
  }
386
- async function pe(r) {
387
- const n = await Promise.all(
388
- Object.entries(r).map(async ([u, c]) => [u, await (c == null ? void 0 : c())])
385
+ async function ve(r) {
386
+ const a = await Promise.all(
387
+ Object.entries(r).map(async ([n, s]) => [n, await (s == null ? void 0 : s())])
389
388
  );
390
- return Object.fromEntries(n);
389
+ return Object.fromEntries(a);
391
390
  }
392
- function be(r, n) {
391
+ function re(r, a, n) {
393
392
  if (!r) return;
394
- const u = typeof r == "function" ? r : () => pe(r);
393
+ const s = typeof r == "function" ? r : () => ve(r);
395
394
  return async () => {
396
- const c = await u();
397
- if (!c)
398
- return n.hasStaticUi ? {} : { element: z(n) };
399
- const { element: a, Component: o, loader: s, action: d, ...P } = c, p = {
400
- ...P,
401
- loader: I(s, n),
402
- action: I(d, n)
395
+ const u = await s();
396
+ if (!u)
397
+ return n ? n.hasStaticUi ? {} : { element: q(n) } : {};
398
+ const { element: o, Component: i, loader: m, action: h, ...E } = u, d = {
399
+ ...E,
400
+ loader: y(m, a),
401
+ action: y(h, a)
403
402
  };
404
- return n.hasStaticUi || (p.element = z(n, a, o ?? null)), p;
403
+ return n ? (n.hasStaticUi || (d.element = q(n, o, i ?? null)), d) : (d.element = o, d.Component = i, d);
405
404
  };
406
405
  }
407
- function Te(r, n, u) {
406
+ function ke(r, a, n) {
408
407
  const {
409
- loginPath: c = "/login",
410
- forbiddenPath: a = "/403",
408
+ loginPath: s = "/login",
409
+ forbiddenPath: u = "/403",
411
410
  defaultPath: o = "/",
412
- callbackUrlParam: s,
413
- shouldAddCallbackUrl: d,
414
- ...P
415
- } = n, p = le(P), b = (R) => R.map((E) => {
411
+ callbackUrlParam: i,
412
+ shouldAddCallbackUrl: m,
413
+ ...h
414
+ } = a, E = fe(h), d = (v, p = []) => v.map((b) => {
416
415
  const {
417
- access: m,
418
- roles: h,
419
- permissions: v,
420
- meta: k,
416
+ access: R,
417
+ roles: T,
418
+ permissions: g,
419
+ meta: x,
421
420
  children: A,
422
- element: g,
423
- Component: w,
424
- loader: $,
425
- action: N,
426
- lazy: O,
427
- ...U
428
- } = E;
429
- if (!(m !== void 0 || !!(h != null && h.length) || !!(v != null && v.length) || k !== void 0))
421
+ element: w,
422
+ Component: S,
423
+ loader: Y,
424
+ action: I,
425
+ lazy: C,
426
+ ...F
427
+ } = b, O = R !== void 0 || !!(T != null && T.length) || !!(g != null && g.length) || x !== void 0, k = O ? {
428
+ guard: E,
429
+ protection: { access: R, roles: T, permissions: g, meta: x },
430
+ hasStaticUi: w != null || S != null,
431
+ loginPath: s,
432
+ forbiddenPath: u,
433
+ defaultPath: o,
434
+ callbackUrlParam: i,
435
+ shouldAddCallbackUrl: m
436
+ } : void 0, _ = k ? [...p, k] : p;
437
+ if (!O)
430
438
  return {
431
- ...U,
432
- element: g,
433
- Component: w,
434
- loader: $,
435
- action: N,
436
- lazy: O,
437
- children: A ? b(A) : void 0
439
+ ...F,
440
+ element: w,
441
+ Component: S,
442
+ loader: y(Y, _),
443
+ action: y(I, _),
444
+ lazy: re(C, _),
445
+ children: A ? d(A, _) : void 0
438
446
  };
439
- const T = {
440
- guard: p,
441
- protection: { access: m, roles: h, permissions: v, meta: k },
442
- hasStaticUi: g != null || w != null,
443
- loginPath: c,
444
- forbiddenPath: a,
445
- defaultPath: o,
446
- callbackUrlParam: s,
447
- shouldAddCallbackUrl: d
448
- }, F = T.hasStaticUi || !O ? z(T, g, w ?? null) : void 0;
447
+ if (!k)
448
+ throw new Error("Guard context must exist for guarded routes");
449
+ const $ = k.hasStaticUi || !C ? q(k, w, S ?? null) : void 0;
449
450
  return {
450
- ...U,
451
- element: F,
451
+ ...F,
452
+ element: $,
452
453
  Component: void 0,
453
- loader: I($, T),
454
- action: I(N, T),
455
- lazy: be(O, T),
456
- children: A ? b(A) : void 0
454
+ loader: y(Y, _),
455
+ action: y(I, _),
456
+ lazy: re(C, _, k),
457
+ children: A ? d(A, _) : void 0
457
458
  };
458
459
  });
459
- return ie(b(r), u);
460
+ return ie(d(r), n);
460
461
  }
461
462
  export {
462
- ge as AccessProvider,
463
- Pe as AccessRoute,
463
+ Oe as AccessProvider,
464
+ ge as AccessRoute,
464
465
  je as HasAccess,
465
- Te as createAccessRouter,
466
- we as useAccess,
467
- Oe as useHasAccess,
468
- Re as useRouteAccess
466
+ ke as createAccessRouter,
467
+ ye as useAccess,
468
+ Se as useHasAccess,
469
+ Te as useRouteAccess
469
470
  };
@@ -0,0 +1 @@
1
+ "use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const e=require("@react-protected/react/testing");Object.defineProperty(exports,"MockAccessProvider",{enumerable:!0,get:()=>e.MockAccessProvider});
@@ -0,0 +1,2 @@
1
+ export type { MockAccessProviderProps } from '@react-protected/react/testing';
2
+ export { MockAccessProvider } from '@react-protected/react/testing';
@@ -0,0 +1,4 @@
1
+ import { MockAccessProvider as c } from "@react-protected/react/testing";
2
+ export {
3
+ c as MockAccessProvider
4
+ };
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@react-protected/react-router",
3
- "version": "0.2.0-beta.2",
3
+ "version": "0.2.0-beta.3",
4
4
  "license": "MIT",
5
5
  "description": "React Router data router adapter for react-protected",
6
6
  "main": "./dist/index.cjs",
@@ -19,14 +19,19 @@
19
19
  "import": "./dist/index.js",
20
20
  "require": "./dist/index.cjs",
21
21
  "types": "./dist/index.d.ts"
22
+ },
23
+ "./testing": {
24
+ "import": "./dist/testing.js",
25
+ "require": "./dist/testing.cjs",
26
+ "types": "./dist/testing.d.ts"
22
27
  }
23
28
  },
24
29
  "files": [
25
30
  "dist"
26
31
  ],
27
32
  "dependencies": {
28
- "@react-protected/core": "0.2.0-beta.2",
29
- "@react-protected/react": "0.2.0-beta.2"
33
+ "@react-protected/react": "0.2.0-beta.2",
34
+ "@react-protected/core": "0.2.0-beta.2"
30
35
  },
31
36
  "peerDependencies": {
32
37
  "react": ">=18.0.0",