Andreas Thomas b4a3854c26
cloudflare (#1)
* build: remove rome

* build: remove rome

* cf

* cf

* wip
2023-03-23 00:22:37 +01:00

21 lines
66 KiB
JSON

{
"title": "@chronark/access",
"description": "A minimal library for access control. It is designed to be used together with opaque access tokens by providing a simple interface to define roles with different access permissions and verifying requests to resources.",
"date": "2022-11-13T00:00:00.000Z",
"repository": "chronark/access",
"body": {
"raw": "A minimal library for access control. It is designed to be used together with opaque access tokens by providing a simple interface to define roles with different access permissions and verifying requests to resources.\n\n- Fully typed\n- Zero dependencies\n- Serializable to store in a database\n\n## Install\n\n```sh-session\nnpm i @chronark/access\n```\n\n## Usage\n\n```ts\nimport { AccessControl, Role } from \"@chronark/access\";\n\n/**\n * Define all your resources and their access patterns\n *\n * key => resource\n * value => array of access types\n */\ntype Statements = {\n user: [\"read\", \"write\", \"dance\"];\n team: [\"read\", \"write\"];\n};\n\n/**\n * Create an access control instance and pass the Statements type to enjoy full\n * type safety\n */\nconst ac = new AccessControl<Statements>();\n\n/**\n * Now you can define one or more roles by specifying the access permissions\n *\n * This is already fully typed and typescript will let you know if you try to\n * use anything, that is not defined in the Statements type.\n */\nconst role = ac.newRole({\n user: [\"read\", \"write\"],\n team: [\"read\"],\n});\n\n/**\n * Simulate storing and retrieving the role in a database\n *\n * The idea here is, that you can store permissions alongside an API token.\n * Now, when you verify the token, you can also verify the access permissions.\n */\nconst serialized = role.toString();\n\n/**\n * Note how you can pass in the Statements type again, to get full type safety\n */\nconst recovered = Role.fromString<Statements>(serialized);\n\n/**\n * Validate the role by specifying the resource and the required access\n *\n * everything is fully typed\n */\nconst res = recovered.authorize({\"team\", [\"read\"]});\n\n// res.success => boolean\n// res.error => string | undefined provides a reason for failure\n```",
"code": "var Component=(()=>{var cn=Object.create;var S=Object.defineProperty;var bn=Object.getOwnPropertyDescriptor;var ln=Object.getOwnPropertyNames;var mn=Object.getPrototypeOf,un=Object.prototype.hasOwnProperty;var z=(i,e)=>()=>(e||i((e={exports:{}}).exports,e),e.exports),fn=(i,e)=>{for(var _ in e)S(i,_,{get:e[_],enumerable:!0})},xe=(i,e,_,k)=>{if(e&&typeof e==\"object\"||typeof e==\"function\")for(let y of ln(e))!un.call(i,y)&&y!==_&&S(i,y,{get:()=>e[y],enumerable:!(k=bn(e,y))||k.enumerable});return i};var hn=(i,e,_)=>(_=i!=null?cn(mn(i)):{},xe(e||!i||!i.__esModule?S(_,\"default\",{value:i,enumerable:!0}):_,i)),_n=i=>xe(S({},\"__esModule\",{value:!0}),i);var Ee=z((gn,ge)=>{ge.exports=React});var je=z(G=>{\"use strict\";(function(){\"use strict\";var i=Ee(),e=Symbol.for(\"react.element\"),_=Symbol.for(\"react.portal\"),k=Symbol.for(\"react.fragment\"),y=Symbol.for(\"react.strict_mode\"),X=Symbol.for(\"react.profiler\"),K=Symbol.for(\"react.provider\"),H=Symbol.for(\"react.context\"),F=Symbol.for(\"react.forward_ref\"),O=Symbol.for(\"react.suspense\"),P=Symbol.for(\"react.suspense_list\"),R=Symbol.for(\"react.memo\"),B=Symbol.for(\"react.lazy\"),Re=Symbol.for(\"react.offscreen\"),Z=Symbol.iterator,Ce=\"@@iterator\";function De(n){if(n===null||typeof n!=\"object\")return null;var a=Z&&n[Z]||n[Ce];return typeof a==\"function\"?a:null}var g=i.__SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED;function u(n){{for(var a=arguments.length,t=new Array(a>1?a-1:0),o=1;o<a;o++)t[o-1]=arguments[o];we(\"error\",n,t)}}function we(n,a,t){{var o=g.ReactDebugCurrentFrame,c=o.getStackAddendum();c!==\"\"&&(a+=\"%s\",t=t.concat([c]));var b=t.map(function(d){return String(d)});b.unshift(\"Warning: \"+a),Function.prototype.apply.call(console[n],console,b)}}var Te=!1,Ae=!1,Se=!1,Oe=!1,Pe=!1,J;J=Symbol.for(\"react.module.reference\");function Be(n){return!!(typeof n==\"string\"||typeof n==\"function\"||n===k||n===X||Pe||n===y||n===O||n===P||Oe||n===Re||Te||Ae||Se||typeof n==\"object\"&&n!==null&&(n.$$typeof===B||n.$$typeof===R||n.$$typeof===K||n.$$typeof===H||n.$$typeof===F||n.$$typeof===J||n.getModuleId!==void 0))}function Ie(n,a,t){var o=n.displayName;if(o)return o;var c=a.displayName||a.name||\"\";return c!==\"\"?t+\"(\"+c+\")\":t}function Q(n){return n.displayName||\"Context\"}function p(n){if(n==null)return null;if(typeof n.tag==\"number\"&&u(\"Received an unexpected object in getComponentNameFromType(). This is likely a bug in React. Please file an issue.\"),typeof n==\"function\")return n.displayName||n.name||null;if(typeof n==\"string\")return n;switch(n){case k:return\"Fragment\";case _:return\"Portal\";case X:return\"Profiler\";case y:return\"StrictMode\";case O:return\"Suspense\";case P:return\"SuspenseList\"}if(typeof n==\"object\")switch(n.$$typeof){case H:var a=n;return Q(a)+\".Consumer\";case K:var t=n;return Q(t._context)+\".Provider\";case F:return Ie(n,n.render,\"ForwardRef\");case R:var o=n.displayName||null;return o!==null?o:p(n.type)||\"Memo\";case B:{var c=n,b=c._payload,d=c._init;try{return p(d(b))}catch{return null}}}return null}var x=Object.assign,U=0,ee,ne,re,ae,te,oe,se;function de(){}de.__reactDisabledLog=!0;function Ye(){{if(U===0){ee=console.log,ne=console.info,re=console.warn,ae=console.error,te=console.group,oe=console.groupCollapsed,se=console.groupEnd;var n={configurable:!0,enumerable:!0,value:de,writable:!0};Object.defineProperties(console,{info:n,log:n,warn:n,error:n,group:n,groupCollapsed:n,groupEnd:n})}U++}}function $e(){{if(U--,U===0){var n={configurable:!0,enumerable:!0,writable:!0};Object.defineProperties(console,{log:x({},n,{value:ee}),info:x({},n,{value:ne}),warn:x({},n,{value:re}),error:x({},n,{value:ae}),group:x({},n,{value:te}),groupCollapsed:x({},n,{value:oe}),groupEnd:x({},n,{value:se})})}U<0&&u(\"disabledDepth fell below zero. This is a bug in React. Please file an issue.\")}}var I=g.ReactCurrentDispatcher,Y;function C(n,a,t){{if(Y===void 0)try{throw Error()}catch(c){var o=c.stack.trim().match(/\\n( *(at )?)/);Y=o&&o[1]||\"\"}return`\n`+Y+n}}var $=!1,D;{var We=typeof WeakMap==\"function\"?WeakMap:Map;D=new We}function ce(n,a){if(!n||$)return\"\";{var t=D.get(n);if(t!==void 0)return t}var o;$=!0;var c=Error.prepareStackTrace;Error.prepareStackTrace=void 0;var b;b=I.current,I.current=null,Ye();try{if(a){var d=function(){throw Error()};if(Object.defineProperty(d.prototype,\"props\",{set:function(){throw Error()}}),typeof Reflect==\"object\"&&Reflect.construct){try{Reflect.construct(d,[])}catch(N){o=N}Reflect.construct(n,[],d)}else{try{d.call()}catch(N){o=N}n.call(d.prototype)}}else{try{throw Error()}catch(N){o=N}n()}}catch(N){if(N&&o&&typeof N.stack==\"string\"){for(var s=N.stack.split(`\n`),f=o.stack.split(`\n`),l=s.length-1,m=f.length-1;l>=1&&m>=0&&s[l]!==f[m];)m--;for(;l>=1&&m>=0;l--,m--)if(s[l]!==f[m]){if(l!==1||m!==1)do if(l--,m--,m<0||s[l]!==f[m]){var h=`\n`+s[l].replace(\" at new \",\" at \");return n.displayName&&h.includes(\"<anonymous>\")&&(h=h.replace(\"<anonymous>\",n.displayName)),typeof n==\"function\"&&D.set(n,h),h}while(l>=1&&m>=0);break}}}finally{$=!1,I.current=b,$e(),Error.prepareStackTrace=c}var j=n?n.displayName||n.name:\"\",ke=j?C(j):\"\";return typeof n==\"function\"&&D.set(n,ke),ke}function Ve(n,a,t){return ce(n,!1)}function Me(n){var a=n.prototype;return!!(a&&a.isReactComponent)}function w(n,a,t){if(n==null)return\"\";if(typeof n==\"function\")return ce(n,Me(n));if(typeof n==\"string\")return C(n);switch(n){case O:return C(\"Suspense\");case P:return C(\"SuspenseList\")}if(typeof n==\"object\")switch(n.$$typeof){case F:return Ve(n.render);case R:return w(n.type,a,t);case B:{var o=n,c=o._payload,b=o._init;try{return w(b(c),a,t)}catch{}}}return\"\"}var T=Object.prototype.hasOwnProperty,be={},ie=g.ReactDebugCurrentFrame;function A(n){if(n){var a=n._owner,t=w(n.type,n._source,a?a.type:null);ie.setExtraStackFrame(t)}else ie.setExtraStackFrame(null)}function Le(n,a,t,o,c){{var b=Function.call.bind(T);for(var d in n)if(b(n,d)){var s=void 0;try{if(typeof n[d]!=\"function\"){var f=Error((o||\"React class\")+\": \"+t+\" type `\"+d+\"` is invalid; it must be a function, usually from the `prop-types` package, but received `\"+typeof n[d]+\"`.This often happens because of typos such as `PropTypes.function` instead of `PropTypes.func`.\");throw f.name=\"Invariant Violation\",f}s=n[d](a,d,o,t,null,\"SECRET_DO_NOT_PASS_THIS_OR_YOU_WILL_BE_FIRED\")}catch(l){s=l}s&&!(s instanceof Error)&&(A(c),u(\"%s: type specification of %s `%s` is invalid; the type checker function must return `null` or an `Error` but returned a %s. You may have forgotten to pass an argument to the type checker creator (arrayOf, instanceOf, objectOf, oneOf, oneOfType, and shape all require an argument).\",o||\"React class\",t,d,typeof s),A(null)),s instanceof Error&&!(s.message in be)&&(be[s.message]=!0,A(c),u(\"Failed %s type: %s\",t,s.message),A(null))}}}var qe=Array.isArray;function W(n){return qe(n)}function ze(n){{var a=typeof Symbol==\"function\"&&Symbol.toStringTag,t=a&&n[Symbol.toStringTag]||n.constructor.name||\"Object\";return t}}function Ge(n){try{return le(n),!1}catch{return!0}}function le(n){return\"\"+n}function me(n){if(Ge(n))return u(\"The provided key is an unsupported type %s. This value must be coerced to a string before before using it here.\",ze(n)),le(n)}var v=g.ReactCurrentOwner,Xe={key:!0,ref:!0,__self:!0,__source:!0},ue,fe,V;V={};function Ke(n){if(T.call(n,\"ref\")){var a=Object.getOwnPropertyDescriptor(n,\"ref\").get;if(a&&a.isReactWarning)return!1}return n.ref!==void 0}function He(n){if(T.call(n,\"key\")){var a=Object.getOwnPropertyDescriptor(n,\"key\").get;if(a&&a.isReactWarning)return!1}return n.key!==void 0}function Ze(n,a){if(typeof n.ref==\"string\"&&v.current&&a&&v.current.stateNode!==a){var t=p(v.current.type);V[t]||(u('Component \"%s\" contains the string ref \"%s\". Support for string refs will be removed in a future major release. This case cannot be automatically converted to an arrow function. We ask you to manually fix this case by using useRef() or createRef() instead. Learn more about using refs safely here: https://reactjs.org/link/strict-mode-string-ref',p(v.current.type),n.ref),V[t]=!0)}}function Je(n,a){{var t=function(){ue||(ue=!0,u(\"%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://reactjs.org/link/special-props)\",a))};t.isReactWarning=!0,Object.defineProperty(n,\"key\",{get:t,configurable:!0})}}function Qe(n,a){{var t=function(){fe||(fe=!0,u(\"%s: `ref` 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://reactjs.org/link/special-props)\",a))};t.isReactWarning=!0,Object.defineProperty(n,\"ref\",{get:t,configurable:!0})}}var en=function(n,a,t,o,c,b,d){var s={$$typeof:e,type:n,key:a,ref:t,props:d,_owner:b};return s._store={},Object.defineProperty(s._store,\"validated\",{configurable:!1,enumerable:!1,writable:!0,value:!1}),Object.defineProperty(s,\"_self\",{configurable:!1,enumerable:!1,writable:!1,value:o}),Object.defineProperty(s,\"_source\",{configurable:!1,enumerable:!1,writable:!1,value:c}),Object.freeze&&(Object.freeze(s.props),Object.freeze(s)),s};function nn(n,a,t,o,c){{var b,d={},s=null,f=null;t!==void 0&&(me(t),s=\"\"+t),He(a)&&(me(a.key),s=\"\"+a.key),Ke(a)&&(f=a.ref,Ze(a,c));for(b in a)T.call(a,b)&&!Xe.hasOwnProperty(b)&&(d[b]=a[b]);if(n&&n.defaultProps){var l=n.defaultProps;for(b in l)d[b]===void 0&&(d[b]=l[b])}if(s||f){var m=typeof n==\"function\"?n.displayName||n.name||\"Unknown\":n;s&&Je(d,m),f&&Qe(d,m)}return en(n,s,f,c,o,v.current,d)}}var M=g.ReactCurrentOwner,he=g.ReactDebugCurrentFrame;function E(n){if(n){var a=n._owner,t=w(n.type,n._source,a?a.type:null);he.setExtraStackFrame(t)}else he.setExtraStackFrame(null)}var L;L=!1;function q(n){return typeof n==\"object\"&&n!==null&&n.$$typeof===e}function _e(){{if(M.current){var n=p(M.current.type);if(n)return`\n\nCheck the render method of \\``+n+\"`.\"}return\"\"}}function rn(n){{if(n!==void 0){var a=n.fileName.replace(/^.*[\\\\\\/]/,\"\"),t=n.lineNumber;return`\n\nCheck your code at `+a+\":\"+t+\".\"}return\"\"}}var pe={};function an(n){{var a=_e();if(!a){var t=typeof n==\"string\"?n:n.displayName||n.name;t&&(a=`\n\nCheck the top-level render call using <`+t+\">.\")}return a}}function Ne(n,a){{if(!n._store||n._store.validated||n.key!=null)return;n._store.validated=!0;var t=an(a);if(pe[t])return;pe[t]=!0;var o=\"\";n&&n._owner&&n._owner!==M.current&&(o=\" It was passed a child from \"+p(n._owner.type)+\".\"),E(n),u('Each child in a list should have a unique \"key\" prop.%s%s See https://reactjs.org/link/warning-keys for more information.',t,o),E(null)}}function ye(n,a){{if(typeof n!=\"object\")return;if(W(n))for(var t=0;t<n.length;t++){var o=n[t];q(o)&&Ne(o,a)}else if(q(n))n._store&&(n._store.validated=!0);else if(n){var c=De(n);if(typeof c==\"function\"&&c!==n.entries)for(var b=c.call(n),d;!(d=b.next()).done;)q(d.value)&&Ne(d.value,a)}}}function tn(n){{var a=n.type;if(a==null||typeof a==\"string\")return;var t;if(typeof a==\"function\")t=a.propTypes;else if(typeof a==\"object\"&&(a.$$typeof===F||a.$$typeof===R))t=a.propTypes;else return;if(t){var o=p(a);Le(t,n.props,\"prop\",o,n)}else if(a.PropTypes!==void 0&&!L){L=!0;var c=p(a);u(\"Component %s declared `PropTypes` instead of `propTypes`. Did you misspell the property assignment?\",c||\"Unknown\")}typeof a.getDefaultProps==\"function\"&&!a.getDefaultProps.isReactClassApproved&&u(\"getDefaultProps is only used on classic React.createClass definitions. Use a static property named `defaultProps` instead.\")}}function on(n){{for(var a=Object.keys(n.props),t=0;t<a.length;t++){var o=a[t];if(o!==\"children\"&&o!==\"key\"){E(n),u(\"Invalid prop `%s` supplied to `React.Fragment`. React.Fragment can only have `key` and `children` props.\",o),E(null);break}}n.ref!==null&&(E(n),u(\"Invalid attribute `ref` supplied to `React.Fragment`.\"),E(null))}}function sn(n,a,t,o,c,b){{var d=Be(n);if(!d){var s=\"\";(n===void 0||typeof n==\"object\"&&n!==null&&Object.keys(n).length===0)&&(s+=\" You likely forgot to export your component from the file it's defined in, or you might have mixed up default and named imports.\");var f=rn(c);f?s+=f:s+=_e();var l;n===null?l=\"null\":W(n)?l=\"array\":n!==void 0&&n.$$typeof===e?(l=\"<\"+(p(n.type)||\"Unknown\")+\" />\",s=\" Did you accidentally export a JSX literal instead of a component?\"):l=typeof n,u(\"React.jsx: type is invalid -- expected a string (for built-in components) or a class/function (for composite components) but got: %s.%s\",l,s)}var m=nn(n,a,t,c,b);if(m==null)return m;if(d){var h=a.children;if(h!==void 0)if(o)if(W(h)){for(var j=0;j<h.length;j++)ye(h[j],n);Object.freeze&&Object.freeze(h)}else u(\"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 ye(h,n)}return n===k?on(m):tn(m),m}}var dn=sn;G.Fragment=k,G.jsxDEV=dn})()});var ve=z((jn,Ue)=>{\"use strict\";Ue.exports=je()});var kn={};fn(kn,{default:()=>yn,frontmatter:()=>pn});var r=hn(ve()),pn={title:\"@chronark/access\",description:\"A minimal library for access control. It is designed to be used together with opaque access tokens by providing a simple interface to define roles with different access permissions and verifying requests to resources.\",repository:\"chronark/access\",date:\"2022-11-13\"};function Fe(i){let e=Object.assign({p:\"p\",ul:\"ul\",li:\"li\",h2:\"h2\",a:\"a\",span:\"span\",div:\"div\",pre:\"pre\",code:\"code\"},i.components);return(0,r.jsxDEV)(r.Fragment,{children:[(0,r.jsxDEV)(e.p,{children:\"A minimal library for access control. It is designed to be used together with opaque access tokens by providing a simple interface to define roles with different access permissions and verifying requests to resources.\"},void 0,!1,{fileName:\"/Users/andreasthomas/github/chronark/chronark.com/content/projects/_mdx_bundler_entry_point-6ad71b92-85b6-42db-903f-a6ab9fb0c9bd.mdx\",lineNumber:8,columnNumber:1},this),`\n`,(0,r.jsxDEV)(e.ul,{children:[`\n`,(0,r.jsxDEV)(e.li,{children:\"Fully typed\"},void 0,!1,{fileName:\"/Users/andreasthomas/github/chronark/chronark.com/content/projects/_mdx_bundler_entry_point-6ad71b92-85b6-42db-903f-a6ab9fb0c9bd.mdx\",lineNumber:10,columnNumber:1},this),`\n`,(0,r.jsxDEV)(e.li,{children:\"Zero dependencies\"},void 0,!1,{fileName:\"/Users/andreasthomas/github/chronark/chronark.com/content/projects/_mdx_bundler_entry_point-6ad71b92-85b6-42db-903f-a6ab9fb0c9bd.mdx\",lineNumber:11,columnNumber:1},this),`\n`,(0,r.jsxDEV)(e.li,{children:\"Serializable to store in a database\"},void 0,!1,{fileName:\"/Users/andreasthomas/github/chronark/chronark.com/content/projects/_mdx_bundler_entry_point-6ad71b92-85b6-42db-903f-a6ab9fb0c9bd.mdx\",lineNumber:12,columnNumber:1},this),`\n`]},void 0,!0,{fileName:\"/Users/andreasthomas/github/chronark/chronark.com/content/projects/_mdx_bundler_entry_point-6ad71b92-85b6-42db-903f-a6ab9fb0c9bd.mdx\",lineNumber:10,columnNumber:1},this),`\n`,(0,r.jsxDEV)(e.h2,{id:\"install\",children:[(0,r.jsxDEV)(e.a,{className:\"subheading-anchor\",\"aria-label\":\"Link to section\",href:\"#install\",children:(0,r.jsxDEV)(e.span,{className:\"icon icon-link\"},void 0,!1,{fileName:\"/Users/andreasthomas/github/chronark/chronark.com/content/projects/_mdx_bundler_entry_point-6ad71b92-85b6-42db-903f-a6ab9fb0c9bd.mdx\"},this)},void 0,!1,{fileName:\"/Users/andreasthomas/github/chronark/chronark.com/content/projects/_mdx_bundler_entry_point-6ad71b92-85b6-42db-903f-a6ab9fb0c9bd.mdx\"},this),\"Install\"]},void 0,!0,{fileName:\"/Users/andreasthomas/github/chronark/chronark.com/content/projects/_mdx_bundler_entry_point-6ad71b92-85b6-42db-903f-a6ab9fb0c9bd.mdx\",lineNumber:14,columnNumber:1},this),`\n`,(0,r.jsxDEV)(e.div,{\"data-rehype-pretty-code-fragment\":\"\",children:(0,r.jsxDEV)(e.pre,{\"data-language\":\"sh-session\",\"data-theme\":\"default\",children:(0,r.jsxDEV)(e.code,{\"data-language\":\"sh-session\",\"data-theme\":\"default\",children:(0,r.jsxDEV)(e.span,{className:\"line\",children:(0,r.jsxDEV)(e.span,{style:{color:\"#e1e4e8\"},children:\"npm i @chronark/access\"},void 0,!1,{fileName:\"/Users/andreasthomas/github/chronark/chronark.com/content/projects/_mdx_bundler_entry_point-6ad71b92-85b6-42db-903f-a6ab9fb0c9bd.mdx\",lineNumber:1,columnNumber:104},this)},void 0,!1,{fileName:\"/Users/andreasthomas/github/chronark/chronark.com/content/projects/_mdx_bundler_entry_point-6ad71b92-85b6-42db-903f-a6ab9fb0c9bd.mdx\",lineNumber:1,columnNumber:85},this)},void 0,!1,{fileName:\"/Users/andreasthomas/github/chronark/chronark.com/content/projects/_mdx_bundler_entry_point-6ad71b92-85b6-42db-903f-a6ab9fb0c9bd.mdx\",lineNumber:1,columnNumber:79},this)},void 0,!1,{fileName:\"/Users/andreasthomas/github/chronark/chronark.com/content/projects/_mdx_bundler_entry_point-6ad71b92-85b6-42db-903f-a6ab9fb0c9bd.mdx\",lineNumber:1,columnNumber:1},this)},void 0,!1,{fileName:\"/Users/andreasthomas/github/chronark/chronark.com/content/projects/_mdx_bundler_entry_point-6ad71b92-85b6-42db-903f-a6ab9fb0c9bd.mdx\",lineNumber:16,columnNumber:1},this),`\n`,(0,r.jsxDEV)(e.h2,{id:\"usage\",children:[(0,r.jsxDEV)(e.a,{className:\"subheading-anchor\",\"aria-label\":\"Link to section\",href:\"#usage\",children:(0,r.jsxDEV)(e.span,{className:\"icon icon-link\"},void 0,!1,{fileName:\"/Users/andreasthomas/github/chronark/chronark.com/content/projects/_mdx_bundler_entry_point-6ad71b92-85b6-42db-903f-a6ab9fb0c9bd.mdx\"},this)},void 0,!1,{fileName:\"/Users/andreasthomas/github/chronark/chronark.com/content/projects/_mdx_bundler_entry_point-6ad71b92-85b6-42db-903f-a6ab9fb0c9bd.mdx\"},this),\"Usage\"]},void 0,!0,{fileName:\"/Users/andreasthomas/github/chronark/chronark.com/content/projects/_mdx_bundler_entry_point-6ad71b92-85b6-42db-903f-a6ab9fb0c9bd.mdx\",lineNumber:20,columnNumber:1},this),`\n`,(0,r.jsxDEV)(e.div,{\"data-rehype-pretty-code-fragment\":\"\",children:(0,r.jsxDEV)(e.pre,{\"data-language\":\"ts\",\"data-theme\":\"default\",children:(0,r.jsxDEV)(e.code,{\"data-language\":\"ts\",\"data-theme\":\"default\",children:[(0,r.jsxDEV)(e.span,{className:\"line\",children:[(0,r.jsxDEV)(e.span,{style:{color:\"#F97583\"},children:\"import\"},void 0,!1,{fileName:\"/Users/andreasthomas/github/chronark/chronark.com/content/projects/_mdx_bundler_entry_point-6ad71b92-85b6-42db-903f-a6ab9fb0c9bd.mdx\",lineNumber:1,columnNumber:104},this),(0,r.jsxDEV)(e.span,{style:{color:\"#E1E4E8\"},children:\" { AccessControl, Role } \"},void 0,!1,{fileName:\"/Users/andreasthomas/github/chronark/chronark.com/content/projects/_mdx_bundler_entry_point-6ad71b92-85b6-42db-903f-a6ab9fb0c9bd.mdx\",lineNumber:1,columnNumber:146},this),(0,r.jsxDEV)(e.span,{style:{color:\"#F97583\"},children:\"from\"},void 0,!1,{fileName:\"/Users/andreasthomas/github/chronark/chronark.com/content/projects/_mdx_bundler_entry_point-6ad71b92-85b6-42db-903f-a6ab9fb0c9bd.mdx\",lineNumber:1,columnNumber:207},this),(0,r.jsxDEV)(e.span,{style:{color:\"#E1E4E8\"},children:\" \"},void 0,!1,{fileName:\"/Users/andreasthomas/github/chronark/chronark.com/content/projects/_mdx_bundler_entry_point-6ad71b92-85b6-42db-903f-a6ab9fb0c9bd.mdx\",lineNumber:1,columnNumber:247},this),(0,r.jsxDEV)(e.span,{style:{color:\"#9ECBFF\"},children:'\"@chronark/access\"'},void 0,!1,{fileName:\"/Users/andreasthomas/github/chronark/chronark.com/content/projects/_mdx_bundler_entry_point-6ad71b92-85b6-42db-903f-a6ab9fb0c9bd.mdx\",lineNumber:1,columnNumber:284},this),(0,r.jsxDEV)(e.span,{style:{color:\"#E1E4E8\"},children:\";\"},void 0,!1,{fileName:\"/Users/andreasthomas/github/chronark/chronark.com/content/projects/_mdx_bundler_entry_point-6ad71b92-85b6-42db-903f-a6ab9fb0c9bd.mdx\",lineNumber:1,columnNumber:348},this)]},void 0,!0,{fileName:\"/Users/andreasthomas/github/chronark/chronark.com/content/projects/_mdx_bundler_entry_point-6ad71b92-85b6-42db-903f-a6ab9fb0c9bd.mdx\",lineNumber:1,columnNumber:85},this),`\n`,(0,r.jsxDEV)(e.span,{className:\"line\",children:\" \"},void 0,!1,{fileName:\"/Users/andreasthomas/github/chronark/chronark.com/content/projects/_mdx_bundler_entry_point-6ad71b92-85b6-42db-903f-a6ab9fb0c9bd.mdx\",lineNumber:2,columnNumber:1},this),`\n`,(0,r.jsxDEV)(e.span,{className:\"line\",children:(0,r.jsxDEV)(e.span,{style:{color:\"#6A737D\"},children:\"/**\"},void 0,!1,{fileName:\"/Users/andreasthomas/github/chronark/chronark.com/content/projects/_mdx_bundler_entry_point-6ad71b92-85b6-42db-903f-a6ab9fb0c9bd.mdx\",lineNumber:3,columnNumber:20},this)},void 0,!1,{fileName:\"/Users/andreasthomas/github/chronark/chronark.com/content/projects/_mdx_bundler_entry_point-6ad71b92-85b6-42db-903f-a6ab9fb0c9bd.mdx\",lineNumber:3,columnNumber:1},this),`\n`,(0,r.jsxDEV)(e.span,{className:\"line\",children:(0,r.jsxDEV)(e.span,{style:{color:\"#6A737D\"},children:\" * Define all your resources and their access patterns\"},void 0,!1,{fileName:\"/Users/andreasthomas/github/chronark/chronark.com/content/projects/_mdx_bundler_entry_point-6ad71b92-85b6-42db-903f-a6ab9fb0c9bd.mdx\",lineNumber:4,columnNumber:20},this)},void 0,!1,{fileName:\"/Users/andreasthomas/github/chronark/chronark.com/content/projects/_mdx_bundler_entry_point-6ad71b92-85b6-42db-903f-a6ab9fb0c9bd.mdx\",lineNumber:4,columnNumber:1},this),`\n`,(0,r.jsxDEV)(e.span,{className:\"line\",children:(0,r.jsxDEV)(e.span,{style:{color:\"#6A737D\"},children:\" *\"},void 0,!1,{fileName:\"/Users/andreasthomas/github/chronark/chronark.com/content/projects/_mdx_bundler_entry_point-6ad71b92-85b6-42db-903f-a6ab9fb0c9bd.mdx\",lineNumber:5,columnNumber:20},this)},void 0,!1,{fileName:\"/Users/andreasthomas/github/chronark/chronark.com/content/projects/_mdx_bundler_entry_point-6ad71b92-85b6-42db-903f-a6ab9fb0c9bd.mdx\",lineNumber:5,columnNumber:1},this),`\n`,(0,r.jsxDEV)(e.span,{className:\"line\",children:(0,r.jsxDEV)(e.span,{style:{color:\"#6A737D\"},children:\" * key => resource\"},void 0,!1,{fileName:\"/Users/andreasthomas/github/chronark/chronark.com/content/projects/_mdx_bundler_entry_point-6ad71b92-85b6-42db-903f-a6ab9fb0c9bd.mdx\",lineNumber:6,columnNumber:20},this)},void 0,!1,{fileName:\"/Users/andreasthomas/github/chronark/chronark.com/content/projects/_mdx_bundler_entry_point-6ad71b92-85b6-42db-903f-a6ab9fb0c9bd.mdx\",lineNumber:6,columnNumber:1},this),`\n`,(0,r.jsxDEV)(e.span,{className:\"line\",children:(0,r.jsxDEV)(e.span,{style:{color:\"#6A737D\"},children:\" * value => array of access types\"},void 0,!1,{fileName:\"/Users/andreasthomas/github/chronark/chronark.com/content/projects/_mdx_bundler_entry_point-6ad71b92-85b6-42db-903f-a6ab9fb0c9bd.mdx\",lineNumber:7,columnNumber:20},this)},void 0,!1,{fileName:\"/Users/andreasthomas/github/chronark/chronark.com/content/projects/_mdx_bundler_entry_point-6ad71b92-85b6-42db-903f-a6ab9fb0c9bd.mdx\",lineNumber:7,columnNumber:1},this),`\n`,(0,r.jsxDEV)(e.span,{className:\"line\",children:(0,r.jsxDEV)(e.span,{style:{color:\"#6A737D\"},children:\" */\"},void 0,!1,{fileName:\"/Users/andreasthomas/github/chronark/chronark.com/content/projects/_mdx_bundler_entry_point-6ad71b92-85b6-42db-903f-a6ab9fb0c9bd.mdx\",lineNumber:8,columnNumber:20},this)},void 0,!1,{fileName:\"/Users/andreasthomas/github/chronark/chronark.com/content/projects/_mdx_bundler_entry_point-6ad71b92-85b6-42db-903f-a6ab9fb0c9bd.mdx\",lineNumber:8,columnNumber:1},this),`\n`,(0,r.jsxDEV)(e.span,{className:\"line\",children:[(0,r.jsxDEV)(e.span,{style:{color:\"#F97583\"},children:\"type\"},void 0,!1,{fileName:\"/Users/andreasthomas/github/chronark/chronark.com/content/projects/_mdx_bundler_entry_point-6ad71b92-85b6-42db-903f-a6ab9fb0c9bd.mdx\",lineNumber:9,columnNumber:20},this),(0,r.jsxDEV)(e.span,{style:{color:\"#E1E4E8\"},children:\" \"},void 0,!1,{fileName:\"/Users/andreasthomas/github/chronark/chronark.com/content/projects/_mdx_bundler_entry_point-6ad71b92-85b6-42db-903f-a6ab9fb0c9bd.mdx\",lineNumber:9,columnNumber:60},this),(0,r.jsxDEV)(e.span,{style:{color:\"#B392F0\"},children:\"Statements\"},void 0,!1,{fileName:\"/Users/andreasthomas/github/chronark/chronark.com/content/projects/_mdx_bundler_entry_point-6ad71b92-85b6-42db-903f-a6ab9fb0c9bd.mdx\",lineNumber:9,columnNumber:97},this),(0,r.jsxDEV)(e.span,{style:{color:\"#E1E4E8\"},children:\" \"},void 0,!1,{fileName:\"/Users/andreasthomas/github/chronark/chronark.com/content/projects/_mdx_bundler_entry_point-6ad71b92-85b6-42db-903f-a6ab9fb0c9bd.mdx\",lineNumber:9,columnNumber:143},this),(0,r.jsxDEV)(e.span,{style:{color:\"#F97583\"},children:\"=\"},void 0,!1,{fileName:\"/Users/andreasthomas/github/chronark/chronark.com/content/projects/_mdx_bundler_entry_point-6ad71b92-85b6-42db-903f-a6ab9fb0c9bd.mdx\",lineNumber:9,columnNumber:180},this),(0,r.jsxDEV)(e.span,{style:{color:\"#E1E4E8\"},children:\" {\"},void 0,!1,{fileName:\"/Users/andreasthomas/github/chronark/chronark.com/content/projects/_mdx_bundler_entry_point-6ad71b92-85b6-42db-903f-a6ab9fb0c9bd.mdx\",lineNumber:9,columnNumber:217},this)]},void 0,!0,{fileName:\"/Users/andreasthomas/github/chronark/chronark.com/content/projects/_mdx_bundler_entry_point-6ad71b92-85b6-42db-903f-a6ab9fb0c9bd.mdx\",lineNumber:9,columnNumber:1},this),`\n`,(0,r.jsxDEV)(e.span,{className:\"line\",children:[(0,r.jsxDEV)(e.span,{style:{color:\"#E1E4E8\"},children:\" \"},void 0,!1,{fileName:\"/Users/andreasthomas/github/chronark/chronark.com/content/projects/_mdx_bundler_entry_point-6ad71b92-85b6-42db-903f-a6ab9fb0c9bd.mdx\",lineNumber:10,columnNumber:20},this),(0,r.jsxDEV)(e.span,{style:{color:\"#FFAB70\"},children:\"user\"},void 0,!1,{fileName:\"/Users/andreasthomas/github/chronark/chronark.com/content/projects/_mdx_bundler_entry_point-6ad71b92-85b6-42db-903f-a6ab9fb0c9bd.mdx\",lineNumber:10,columnNumber:58},this),(0,r.jsxDEV)(e.span,{style:{color:\"#F97583\"},children:\":\"},void 0,!1,{fileName:\"/Users/andreasthomas/github/chronark/chronark.com/content/projects/_mdx_bundler_entry_point-6ad71b92-85b6-42db-903f-a6ab9fb0c9bd.mdx\",lineNumber:10,columnNumber:98},this),(0,r.jsxDEV)(e.span,{style:{color:\"#E1E4E8\"},children:\" [\"},void 0,!1,{fileName:\"/Users/andreasthomas/github/chronark/chronark.com/content/projects/_mdx_bundler_entry_point-6ad71b92-85b6-42db-903f-a6ab9fb0c9bd.mdx\",lineNumber:10,columnNumber:135},this),(0,r.jsxDEV)(e.span,{style:{color:\"#9ECBFF\"},children:'\"read\"'},void 0,!1,{fileName:\"/Users/andreasthomas/github/chronark/chronark.com/content/projects/_mdx_bundler_entry_point-6ad71b92-85b6-42db-903f-a6ab9fb0c9bd.mdx\",lineNumber:10,columnNumber:173},this),(0,r.jsxDEV)(e.span,{style:{color:\"#E1E4E8\"},children:\", \"},void 0,!1,{fileName:\"/Users/andreasthomas/github/chronark/chronark.com/content/projects/_mdx_bundler_entry_point-6ad71b92-85b6-42db-903f-a6ab9fb0c9bd.mdx\",lineNumber:10,columnNumber:225},this),(0,r.jsxDEV)(e.span,{style:{color:\"#9ECBFF\"},children:'\"write\"'},void 0,!1,{fileName:\"/Users/andreasthomas/github/chronark/chronark.com/content/projects/_mdx_bundler_entry_point-6ad71b92-85b6-42db-903f-a6ab9fb0c9bd.mdx\",lineNumber:10,columnNumber:263},this),(0,r.jsxDEV)(e.span,{style:{color:\"#E1E4E8\"},children:\", \"},void 0,!1,{fileName:\"/Users/andreasthomas/github/chronark/chronark.com/content/projects/_mdx_bundler_entry_point-6ad71b92-85b6-42db-903f-a6ab9fb0c9bd.mdx\",lineNumber:10,columnNumber:316},this),(0,r.jsxDEV)(e.span,{style:{color:\"#9ECBFF\"},children:'\"dance\"'},void 0,!1,{fileName:\"/Users/andreasthomas/github/chronark/chronark.com/content/projects/_mdx_bundler_entry_point-6ad71b92-85b6-42db-903f-a6ab9fb0c9bd.mdx\",lineNumber:10,columnNumber:354},this),(0,r.jsxDEV)(e.span,{style:{color:\"#E1E4E8\"},children:\"];\"},void 0,!1,{fileName:\"/Users/andreasthomas/github/chronark/chronark.com/content/projects/_mdx_bundler_entry_point-6ad71b92-85b6-42db-903f-a6ab9fb0c9bd.mdx\",lineNumber:10,columnNumber:407},this)]},void 0,!0,{fileName:\"/Users/andreasthomas/github/chronark/chronark.com/content/projects/_mdx_bundler_entry_point-6ad71b92-85b6-42db-903f-a6ab9fb0c9bd.mdx\",lineNumber:10,columnNumber:1},this),`\n`,(0,r.jsxDEV)(e.span,{className:\"line\",children:[(0,r.jsxDEV)(e.span,{style:{color:\"#E1E4E8\"},children:\" \"},void 0,!1,{fileName:\"/Users/andreasthomas/github/chronark/chronark.com/content/projects/_mdx_bundler_entry_point-6ad71b92-85b6-42db-903f-a6ab9fb0c9bd.mdx\",lineNumber:11,columnNumber:20},this),(0,r.jsxDEV)(e.span,{style:{color:\"#FFAB70\"},children:\"team\"},void 0,!1,{fileName:\"/Users/andreasthomas/github/chronark/chronark.com/content/projects/_mdx_bundler_entry_point-6ad71b92-85b6-42db-903f-a6ab9fb0c9bd.mdx\",lineNumber:11,columnNumber:58},this),(0,r.jsxDEV)(e.span,{style:{color:\"#F97583\"},children:\":\"},void 0,!1,{fileName:\"/Users/andreasthomas/github/chronark/chronark.com/content/projects/_mdx_bundler_entry_point-6ad71b92-85b6-42db-903f-a6ab9fb0c9bd.mdx\",lineNumber:11,columnNumber:98},this),(0,r.jsxDEV)(e.span,{style:{color:\"#E1E4E8\"},children:\" [\"},void 0,!1,{fileName:\"/Users/andreasthomas/github/chronark/chronark.com/content/projects/_mdx_bundler_entry_point-6ad71b92-85b6-42db-903f-a6ab9fb0c9bd.mdx\",lineNumber:11,columnNumber:135},this),(0,r.jsxDEV)(e.span,{style:{color:\"#9ECBFF\"},children:'\"read\"'},void 0,!1,{fileName:\"/Users/andreasthomas/github/chronark/chronark.com/content/projects/_mdx_bundler_entry_point-6ad71b92-85b6-42db-903f-a6ab9fb0c9bd.mdx\",lineNumber:11,columnNumber:173},this),(0,r.jsxDEV)(e.span,{style:{color:\"#E1E4E8\"},children:\", \"},void 0,!1,{fileName:\"/Users/andreasthomas/github/chronark/chronark.com/content/projects/_mdx_bundler_entry_point-6ad71b92-85b6-42db-903f-a6ab9fb0c9bd.mdx\",lineNumber:11,columnNumber:225},this),(0,r.jsxDEV)(e.span,{style:{color:\"#9ECBFF\"},children:'\"write\"'},void 0,!1,{fileName:\"/Users/andreasthomas/github/chronark/chronark.com/content/projects/_mdx_bundler_entry_point-6ad71b92-85b6-42db-903f-a6ab9fb0c9bd.mdx\",lineNumber:11,columnNumber:263},this),(0,r.jsxDEV)(e.span,{style:{color:\"#E1E4E8\"},children:\"];\"},void 0,!1,{fileName:\"/Users/andreasthomas/github/chronark/chronark.com/content/projects/_mdx_bundler_entry_point-6ad71b92-85b6-42db-903f-a6ab9fb0c9bd.mdx\",lineNumber:11,columnNumber:316},this)]},void 0,!0,{fileName:\"/Users/andreasthomas/github/chronark/chronark.com/content/projects/_mdx_bundler_entry_point-6ad71b92-85b6-42db-903f-a6ab9fb0c9bd.mdx\",lineNumber:11,columnNumber:1},this),`\n`,(0,r.jsxDEV)(e.span,{className:\"line\",children:(0,r.jsxDEV)(e.span,{style:{color:\"#E1E4E8\"},children:\"};\"},void 0,!1,{fileName:\"/Users/andreasthomas/github/chronark/chronark.com/content/projects/_mdx_bundler_entry_point-6ad71b92-85b6-42db-903f-a6ab9fb0c9bd.mdx\",lineNumber:12,columnNumber:20},this)},void 0,!1,{fileName:\"/Users/andreasthomas/github/chronark/chronark.com/content/projects/_mdx_bundler_entry_point-6ad71b92-85b6-42db-903f-a6ab9fb0c9bd.mdx\",lineNumber:12,columnNumber:1},this),`\n`,(0,r.jsxDEV)(e.span,{className:\"line\",children:\" \"},void 0,!1,{fileName:\"/Users/andreasthomas/github/chronark/chronark.com/content/projects/_mdx_bundler_entry_point-6ad71b92-85b6-42db-903f-a6ab9fb0c9bd.mdx\",lineNumber:13,columnNumber:1},this),`\n`,(0,r.jsxDEV)(e.span,{className:\"line\",children:(0,r.jsxDEV)(e.span,{style:{color:\"#6A737D\"},children:\"/**\"},void 0,!1,{fileName:\"/Users/andreasthomas/github/chronark/chronark.com/content/projects/_mdx_bundler_entry_point-6ad71b92-85b6-42db-903f-a6ab9fb0c9bd.mdx\",lineNumber:14,columnNumber:20},this)},void 0,!1,{fileName:\"/Users/andreasthomas/github/chronark/chronark.com/content/projects/_mdx_bundler_entry_point-6ad71b92-85b6-42db-903f-a6ab9fb0c9bd.mdx\",lineNumber:14,columnNumber:1},this),`\n`,(0,r.jsxDEV)(e.span,{className:\"line\",children:(0,r.jsxDEV)(e.span,{style:{color:\"#6A737D\"},children:\" * Create an access control instance and pass the Statements type to enjoy full\"},void 0,!1,{fileName:\"/Users/andreasthomas/github/chronark/chronark.com/content/projects/_mdx_bundler_entry_point-6ad71b92-85b6-42db-903f-a6ab9fb0c9bd.mdx\",lineNumber:15,columnNumber:20},this)},void 0,!1,{fileName:\"/Users/andreasthomas/github/chronark/chronark.com/content/projects/_mdx_bundler_entry_point-6ad71b92-85b6-42db-903f-a6ab9fb0c9bd.mdx\",lineNumber:15,columnNumber:1},this),`\n`,(0,r.jsxDEV)(e.span,{className:\"line\",children:(0,r.jsxDEV)(e.span,{style:{color:\"#6A737D\"},children:\" * type safety\"},void 0,!1,{fileName:\"/Users/andreasthomas/github/chronark/chronark.com/content/projects/_mdx_bundler_entry_point-6ad71b92-85b6-42db-903f-a6ab9fb0c9bd.mdx\",lineNumber:16,columnNumber:20},this)},void 0,!1,{fileName:\"/Users/andreasthomas/github/chronark/chronark.com/content/projects/_mdx_bundler_entry_point-6ad71b92-85b6-42db-903f-a6ab9fb0c9bd.mdx\",lineNumber:16,columnNumber:1},this),`\n`,(0,r.jsxDEV)(e.span,{className:\"line\",children:(0,r.jsxDEV)(e.span,{style:{color:\"#6A737D\"},children:\" */\"},void 0,!1,{fileName:\"/Users/andreasthomas/github/chronark/chronark.com/content/projects/_mdx_bundler_entry_point-6ad71b92-85b6-42db-903f-a6ab9fb0c9bd.mdx\",lineNumber:17,columnNumber:20},this)},void 0,!1,{fileName:\"/Users/andreasthomas/github/chronark/chronark.com/content/projects/_mdx_bundler_entry_point-6ad71b92-85b6-42db-903f-a6ab9fb0c9bd.mdx\",lineNumber:17,columnNumber:1},this),`\n`,(0,r.jsxDEV)(e.span,{className:\"line\",children:[(0,r.jsxDEV)(e.span,{style:{color:\"#F97583\"},children:\"const\"},void 0,!1,{fileName:\"/Users/andreasthomas/github/chronark/chronark.com/content/projects/_mdx_bundler_entry_point-6ad71b92-85b6-42db-903f-a6ab9fb0c9bd.mdx\",lineNumber:18,columnNumber:20},this),(0,r.jsxDEV)(e.span,{style:{color:\"#E1E4E8\"},children:\" \"},void 0,!1,{fileName:\"/Users/andreasthomas/github/chronark/chronark.com/content/projects/_mdx_bundler_entry_point-6ad71b92-85b6-42db-903f-a6ab9fb0c9bd.mdx\",lineNumber:18,columnNumber:61},this),(0,r.jsxDEV)(e.span,{style:{color:\"#79B8FF\"},children:\"ac\"},void 0,!1,{fileName:\"/Users/andreasthomas/github/chronark/chronark.com/content/projects/_mdx_bundler_entry_point-6ad71b92-85b6-42db-903f-a6ab9fb0c9bd.mdx\",lineNumber:18,columnNumber:98},this),(0,r.jsxDEV)(e.span,{style:{color:\"#E1E4E8\"},children:\" \"},void 0,!1,{fileName:\"/Users/andreasthomas/github/chronark/chronark.com/content/projects/_mdx_bundler_entry_point-6ad71b92-85b6-42db-903f-a6ab9fb0c9bd.mdx\",lineNumber:18,columnNumber:136},this),(0,r.jsxDEV)(e.span,{style:{color:\"#F97583\"},children:\"=\"},void 0,!1,{fileName:\"/Users/andreasthomas/github/chronark/chronark.com/content/projects/_mdx_bundler_entry_point-6ad71b92-85b6-42db-903f-a6ab9fb0c9bd.mdx\",lineNumber:18,columnNumber:173},this),(0,r.jsxDEV)(e.span,{style:{color:\"#E1E4E8\"},children:\" \"},void 0,!1,{fileName:\"/Users/andreasthomas/github/chronark/chronark.com/content/projects/_mdx_bundler_entry_point-6ad71b92-85b6-42db-903f-a6ab9fb0c9bd.mdx\",lineNumber:18,columnNumber:210},this),(0,r.jsxDEV)(e.span,{style:{color:\"#F97583\"},children:\"new\"},void 0,!1,{fileName:\"/Users/andreasthomas/github/chronark/chronark.com/content/projects/_mdx_bundler_entry_point-6ad71b92-85b6-42db-903f-a6ab9fb0c9bd.mdx\",lineNumber:18,columnNumber:247},this),(0,r.jsxDEV)(e.span,{style:{color:\"#E1E4E8\"},children:\" \"},void 0,!1,{fileName:\"/Users/andreasthomas/github/chronark/chronark.com/content/projects/_mdx_bundler_entry_point-6ad71b92-85b6-42db-903f-a6ab9fb0c9bd.mdx\",lineNumber:18,columnNumber:286},this),(0,r.jsxDEV)(e.span,{style:{color:\"#B392F0\"},children:\"AccessControl\"},void 0,!1,{fileName:\"/Users/andreasthomas/github/chronark/chronark.com/content/projects/_mdx_bundler_entry_point-6ad71b92-85b6-42db-903f-a6ab9fb0c9bd.mdx\",lineNumber:18,columnNumber:323},this),(0,r.jsxDEV)(e.span,{style:{color:\"#E1E4E8\"},children:\"<\"},void 0,!1,{fileName:\"/Users/andreasthomas/github/chronark/chronark.com/content/projects/_mdx_bundler_entry_point-6ad71b92-85b6-42db-903f-a6ab9fb0c9bd.mdx\",lineNumber:18,columnNumber:372},this),(0,r.jsxDEV)(e.span,{style:{color:\"#B392F0\"},children:\"Statements\"},void 0,!1,{fileName:\"/Users/andreasthomas/github/chronark/chronark.com/content/projects/_mdx_bundler_entry_point-6ad71b92-85b6-42db-903f-a6ab9fb0c9bd.mdx\",lineNumber:18,columnNumber:412},this),(0,r.jsxDEV)(e.span,{style:{color:\"#E1E4E8\"},children:\">();\"},void 0,!1,{fileName:\"/Users/andreasthomas/github/chronark/chronark.com/content/projects/_mdx_bundler_entry_point-6ad71b92-85b6-42db-903f-a6ab9fb0c9bd.mdx\",lineNumber:18,columnNumber:458},this)]},void 0,!0,{fileName:\"/Users/andreasthomas/github/chronark/chronark.com/content/projects/_mdx_bundler_entry_point-6ad71b92-85b6-42db-903f-a6ab9fb0c9bd.mdx\",lineNumber:18,columnNumber:1},this),`\n`,(0,r.jsxDEV)(e.span,{className:\"line\",children:\" \"},void 0,!1,{fileName:\"/Users/andreasthomas/github/chronark/chronark.com/content/projects/_mdx_bundler_entry_point-6ad71b92-85b6-42db-903f-a6ab9fb0c9bd.mdx\",lineNumber:19,columnNumber:1},this),`\n`,(0,r.jsxDEV)(e.span,{className:\"line\",children:(0,r.jsxDEV)(e.span,{style:{color:\"#6A737D\"},children:\"/**\"},void 0,!1,{fileName:\"/Users/andreasthomas/github/chronark/chronark.com/content/projects/_mdx_bundler_entry_point-6ad71b92-85b6-42db-903f-a6ab9fb0c9bd.mdx\",lineNumber:20,columnNumber:20},this)},void 0,!1,{fileName:\"/Users/andreasthomas/github/chronark/chronark.com/content/projects/_mdx_bundler_entry_point-6ad71b92-85b6-42db-903f-a6ab9fb0c9bd.mdx\",lineNumber:20,columnNumber:1},this),`\n`,(0,r.jsxDEV)(e.span,{className:\"line\",children:(0,r.jsxDEV)(e.span,{style:{color:\"#6A737D\"},children:\" * Now you can define one or more roles by specifying the access permissions\"},void 0,!1,{fileName:\"/Users/andreasthomas/github/chronark/chronark.com/content/projects/_mdx_bundler_entry_point-6ad71b92-85b6-42db-903f-a6ab9fb0c9bd.mdx\",lineNumber:21,columnNumber:20},this)},void 0,!1,{fileName:\"/Users/andreasthomas/github/chronark/chronark.com/content/projects/_mdx_bundler_entry_point-6ad71b92-85b6-42db-903f-a6ab9fb0c9bd.mdx\",lineNumber:21,columnNumber:1},this),`\n`,(0,r.jsxDEV)(e.span,{className:\"line\",children:(0,r.jsxDEV)(e.span,{style:{color:\"#6A737D\"},children:\" *\"},void 0,!1,{fileName:\"/Users/andreasthomas/github/chronark/chronark.com/content/projects/_mdx_bundler_entry_point-6ad71b92-85b6-42db-903f-a6ab9fb0c9bd.mdx\",lineNumber:22,columnNumber:20},this)},void 0,!1,{fileName:\"/Users/andreasthomas/github/chronark/chronark.com/content/projects/_mdx_bundler_entry_point-6ad71b92-85b6-42db-903f-a6ab9fb0c9bd.mdx\",lineNumber:22,columnNumber:1},this),`\n`,(0,r.jsxDEV)(e.span,{className:\"line\",children:(0,r.jsxDEV)(e.span,{style:{color:\"#6A737D\"},children:\" * This is already fully typed and typescript will let you know if you try to\"},void 0,!1,{fileName:\"/Users/andreasthomas/github/chronark/chronark.com/content/projects/_mdx_bundler_entry_point-6ad71b92-85b6-42db-903f-a6ab9fb0c9bd.mdx\",lineNumber:23,columnNumber:20},this)},void 0,!1,{fileName:\"/Users/andreasthomas/github/chronark/chronark.com/content/projects/_mdx_bundler_entry_point-6ad71b92-85b6-42db-903f-a6ab9fb0c9bd.mdx\",lineNumber:23,columnNumber:1},this),`\n`,(0,r.jsxDEV)(e.span,{className:\"line\",children:(0,r.jsxDEV)(e.span,{style:{color:\"#6A737D\"},children:\" * use anything, that is not defined in the Statements type.\"},void 0,!1,{fileName:\"/Users/andreasthomas/github/chronark/chronark.com/content/projects/_mdx_bundler_entry_point-6ad71b92-85b6-42db-903f-a6ab9fb0c9bd.mdx\",lineNumber:24,columnNumber:20},this)},void 0,!1,{fileName:\"/Users/andreasthomas/github/chronark/chronark.com/content/projects/_mdx_bundler_entry_point-6ad71b92-85b6-42db-903f-a6ab9fb0c9bd.mdx\",lineNumber:24,columnNumber:1},this),`\n`,(0,r.jsxDEV)(e.span,{className:\"line\",children:(0,r.jsxDEV)(e.span,{style:{color:\"#6A737D\"},children:\" */\"},void 0,!1,{fileName:\"/Users/andreasthomas/github/chronark/chronark.com/content/projects/_mdx_bundler_entry_point-6ad71b92-85b6-42db-903f-a6ab9fb0c9bd.mdx\",lineNumber:25,columnNumber:20},this)},void 0,!1,{fileName:\"/Users/andreasthomas/github/chronark/chronark.com/content/projects/_mdx_bundler_entry_point-6ad71b92-85b6-42db-903f-a6ab9fb0c9bd.mdx\",lineNumber:25,columnNumber:1},this),`\n`,(0,r.jsxDEV)(e.span,{className:\"line\",children:[(0,r.jsxDEV)(e.span,{style:{color:\"#F97583\"},children:\"const\"},void 0,!1,{fileName:\"/Users/andreasthomas/github/chronark/chronark.com/content/projects/_mdx_bundler_entry_point-6ad71b92-85b6-42db-903f-a6ab9fb0c9bd.mdx\",lineNumber:26,columnNumber:20},this),(0,r.jsxDEV)(e.span,{style:{color:\"#E1E4E8\"},children:\" \"},void 0,!1,{fileName:\"/Users/andreasthomas/github/chronark/chronark.com/content/projects/_mdx_bundler_entry_point-6ad71b92-85b6-42db-903f-a6ab9fb0c9bd.mdx\",lineNumber:26,columnNumber:61},this),(0,r.jsxDEV)(e.span,{style:{color:\"#79B8FF\"},children:\"role\"},void 0,!1,{fileName:\"/Users/andreasthomas/github/chronark/chronark.com/content/projects/_mdx_bundler_entry_point-6ad71b92-85b6-42db-903f-a6ab9fb0c9bd.mdx\",lineNumber:26,columnNumber:98},this),(0,r.jsxDEV)(e.span,{style:{color:\"#E1E4E8\"},children:\" \"},void 0,!1,{fileName:\"/Users/andreasthomas/github/chronark/chronark.com/content/projects/_mdx_bundler_entry_point-6ad71b92-85b6-42db-903f-a6ab9fb0c9bd.mdx\",lineNumber:26,columnNumber:138},this),(0,r.jsxDEV)(e.span,{style:{color:\"#F97583\"},children:\"=\"},void 0,!1,{fileName:\"/Users/andreasthomas/github/chronark/chronark.com/content/projects/_mdx_bundler_entry_point-6ad71b92-85b6-42db-903f-a6ab9fb0c9bd.mdx\",lineNumber:26,columnNumber:175},this),(0,r.jsxDEV)(e.span,{style:{color:\"#E1E4E8\"},children:\" ac.\"},void 0,!1,{fileName:\"/Users/andreasthomas/github/chronark/chronark.com/content/projects/_mdx_bundler_entry_point-6ad71b92-85b6-42db-903f-a6ab9fb0c9bd.mdx\",lineNumber:26,columnNumber:212},this),(0,r.jsxDEV)(e.span,{style:{color:\"#B392F0\"},children:\"newRole\"},void 0,!1,{fileName:\"/Users/andreasthomas/github/chronark/chronark.com/content/projects/_mdx_bundler_entry_point-6ad71b92-85b6-42db-903f-a6ab9fb0c9bd.mdx\",lineNumber:26,columnNumber:252},this),(0,r.jsxDEV)(e.span,{style:{color:\"#E1E4E8\"},children:\"({\"},void 0,!1,{fileName:\"/Users/andreasthomas/github/chronark/chronark.com/content/projects/_mdx_bundler_entry_point-6ad71b92-85b6-42db-903f-a6ab9fb0c9bd.mdx\",lineNumber:26,columnNumber:295},this)]},void 0,!0,{fileName:\"/Users/andreasthomas/github/chronark/chronark.com/content/projects/_mdx_bundler_entry_point-6ad71b92-85b6-42db-903f-a6ab9fb0c9bd.mdx\",lineNumber:26,columnNumber:1},this),`\n`,(0,r.jsxDEV)(e.span,{className:\"line\",children:[(0,r.jsxDEV)(e.span,{style:{color:\"#E1E4E8\"},children:\" user: [\"},void 0,!1,{fileName:\"/Users/andreasthomas/github/chronark/chronark.com/content/projects/_mdx_bundler_entry_point-6ad71b92-85b6-42db-903f-a6ab9fb0c9bd.mdx\",lineNumber:27,columnNumber:20},this),(0,r.jsxDEV)(e.span,{style:{color:\"#9ECBFF\"},children:'\"read\"'},void 0,!1,{fileName:\"/Users/andreasthomas/github/chronark/chronark.com/content/projects/_mdx_bundler_entry_point-6ad71b92-85b6-42db-903f-a6ab9fb0c9bd.mdx\",lineNumber:27,columnNumber:65},this),(0,r.jsxDEV)(e.span,{style:{color:\"#E1E4E8\"},children:\", \"},void 0,!1,{fileName:\"/Users/andreasthomas/github/chronark/chronark.com/content/projects/_mdx_bundler_entry_point-6ad71b92-85b6-42db-903f-a6ab9fb0c9bd.mdx\",lineNumber:27,columnNumber:117},this),(0,r.jsxDEV)(e.span,{style:{color:\"#9ECBFF\"},children:'\"write\"'},void 0,!1,{fileName:\"/Users/andreasthomas/github/chronark/chronark.com/content/projects/_mdx_bundler_entry_point-6ad71b92-85b6-42db-903f-a6ab9fb0c9bd.mdx\",lineNumber:27,columnNumber:155},this),(0,r.jsxDEV)(e.span,{style:{color:\"#E1E4E8\"},children:\"],\"},void 0,!1,{fileName:\"/Users/andreasthomas/github/chronark/chronark.com/content/projects/_mdx_bundler_entry_point-6ad71b92-85b6-42db-903f-a6ab9fb0c9bd.mdx\",lineNumber:27,columnNumber:208},this)]},void 0,!0,{fileName:\"/Users/andreasthomas/github/chronark/chronark.com/content/projects/_mdx_bundler_entry_point-6ad71b92-85b6-42db-903f-a6ab9fb0c9bd.mdx\",lineNumber:27,columnNumber:1},this),`\n`,(0,r.jsxDEV)(e.span,{className:\"line\",children:[(0,r.jsxDEV)(e.span,{style:{color:\"#E1E4E8\"},children:\" team: [\"},void 0,!1,{fileName:\"/Users/andreasthomas/github/chronark/chronark.com/content/projects/_mdx_bundler_entry_point-6ad71b92-85b6-42db-903f-a6ab9fb0c9bd.mdx\",lineNumber:28,columnNumber:20},this),(0,r.jsxDEV)(e.span,{style:{color:\"#9ECBFF\"},children:'\"read\"'},void 0,!1,{fileName:\"/Users/andreasthomas/github/chronark/chronark.com/content/projects/_mdx_bundler_entry_point-6ad71b92-85b6-42db-903f-a6ab9fb0c9bd.mdx\",lineNumber:28,columnNumber:65},this),(0,r.jsxDEV)(e.span,{style:{color:\"#E1E4E8\"},children:\"],\"},void 0,!1,{fileName:\"/Users/andreasthomas/github/chronark/chronark.com/content/projects/_mdx_bundler_entry_point-6ad71b92-85b6-42db-903f-a6ab9fb0c9bd.mdx\",lineNumber:28,columnNumber:117},this)]},void 0,!0,{fileName:\"/Users/andreasthomas/github/chronark/chronark.com/content/projects/_mdx_bundler_entry_point-6ad71b92-85b6-42db-903f-a6ab9fb0c9bd.mdx\",lineNumber:28,columnNumber:1},this),`\n`,(0,r.jsxDEV)(e.span,{className:\"line\",children:(0,r.jsxDEV)(e.span,{style:{color:\"#E1E4E8\"},children:\"});\"},void 0,!1,{fileName:\"/Users/andreasthomas/github/chronark/chronark.com/content/projects/_mdx_bundler_entry_point-6ad71b92-85b6-42db-903f-a6ab9fb0c9bd.mdx\",lineNumber:29,columnNumber:20},this)},void 0,!1,{fileName:\"/Users/andreasthomas/github/chronark/chronark.com/content/projects/_mdx_bundler_entry_point-6ad71b92-85b6-42db-903f-a6ab9fb0c9bd.mdx\",lineNumber:29,columnNumber:1},this),`\n`,(0,r.jsxDEV)(e.span,{className:\"line\",children:\" \"},void 0,!1,{fileName:\"/Users/andreasthomas/github/chronark/chronark.com/content/projects/_mdx_bundler_entry_point-6ad71b92-85b6-42db-903f-a6ab9fb0c9bd.mdx\",lineNumber:30,columnNumber:1},this),`\n`,(0,r.jsxDEV)(e.span,{className:\"line\",children:(0,r.jsxDEV)(e.span,{style:{color:\"#6A737D\"},children:\"/**\"},void 0,!1,{fileName:\"/Users/andreasthomas/github/chronark/chronark.com/content/projects/_mdx_bundler_entry_point-6ad71b92-85b6-42db-903f-a6ab9fb0c9bd.mdx\",lineNumber:31,columnNumber:20},this)},void 0,!1,{fileName:\"/Users/andreasthomas/github/chronark/chronark.com/content/projects/_mdx_bundler_entry_point-6ad71b92-85b6-42db-903f-a6ab9fb0c9bd.mdx\",lineNumber:31,columnNumber:1},this),`\n`,(0,r.jsxDEV)(e.span,{className:\"line\",children:(0,r.jsxDEV)(e.span,{style:{color:\"#6A737D\"},children:\" * Simulate storing and retrieving the role in a database\"},void 0,!1,{fileName:\"/Users/andreasthomas/github/chronark/chronark.com/content/projects/_mdx_bundler_entry_point-6ad71b92-85b6-42db-903f-a6ab9fb0c9bd.mdx\",lineNumber:32,columnNumber:20},this)},void 0,!1,{fileName:\"/Users/andreasthomas/github/chronark/chronark.com/content/projects/_mdx_bundler_entry_point-6ad71b92-85b6-42db-903f-a6ab9fb0c9bd.mdx\",lineNumber:32,columnNumber:1},this),`\n`,(0,r.jsxDEV)(e.span,{className:\"line\",children:(0,r.jsxDEV)(e.span,{style:{color:\"#6A737D\"},children:\" *\"},void 0,!1,{fileName:\"/Users/andreasthomas/github/chronark/chronark.com/content/projects/_mdx_bundler_entry_point-6ad71b92-85b6-42db-903f-a6ab9fb0c9bd.mdx\",lineNumber:33,columnNumber:20},this)},void 0,!1,{fileName:\"/Users/andreasthomas/github/chronark/chronark.com/content/projects/_mdx_bundler_entry_point-6ad71b92-85b6-42db-903f-a6ab9fb0c9bd.mdx\",lineNumber:33,columnNumber:1},this),`\n`,(0,r.jsxDEV)(e.span,{className:\"line\",children:(0,r.jsxDEV)(e.span,{style:{color:\"#6A737D\"},children:\" * The idea here is, that you can store permissions alongside an API token.\"},void 0,!1,{fileName:\"/Users/andreasthomas/github/chronark/chronark.com/content/projects/_mdx_bundler_entry_point-6ad71b92-85b6-42db-903f-a6ab9fb0c9bd.mdx\",lineNumber:34,columnNumber:20},this)},void 0,!1,{fileName:\"/Users/andreasthomas/github/chronark/chronark.com/content/projects/_mdx_bundler_entry_point-6ad71b92-85b6-42db-903f-a6ab9fb0c9bd.mdx\",lineNumber:34,columnNumber:1},this),`\n`,(0,r.jsxDEV)(e.span,{className:\"line\",children:(0,r.jsxDEV)(e.span,{style:{color:\"#6A737D\"},children:\" * Now, when you verify the token, you can also verify the access permissions.\"},void 0,!1,{fileName:\"/Users/andreasthomas/github/chronark/chronark.com/content/projects/_mdx_bundler_entry_point-6ad71b92-85b6-42db-903f-a6ab9fb0c9bd.mdx\",lineNumber:35,columnNumber:20},this)},void 0,!1,{fileName:\"/Users/andreasthomas/github/chronark/chronark.com/content/projects/_mdx_bundler_entry_point-6ad71b92-85b6-42db-903f-a6ab9fb0c9bd.mdx\",lineNumber:35,columnNumber:1},this),`\n`,(0,r.jsxDEV)(e.span,{className:\"line\",children:(0,r.jsxDEV)(e.span,{style:{color:\"#6A737D\"},children:\" */\"},void 0,!1,{fileName:\"/Users/andreasthomas/github/chronark/chronark.com/content/projects/_mdx_bundler_entry_point-6ad71b92-85b6-42db-903f-a6ab9fb0c9bd.mdx\",lineNumber:36,columnNumber:20},this)},void 0,!1,{fileName:\"/Users/andreasthomas/github/chronark/chronark.com/content/projects/_mdx_bundler_entry_point-6ad71b92-85b6-42db-903f-a6ab9fb0c9bd.mdx\",lineNumber:36,columnNumber:1},this),`\n`,(0,r.jsxDEV)(e.span,{className:\"line\",children:[(0,r.jsxDEV)(e.span,{style:{color:\"#F97583\"},children:\"const\"},void 0,!1,{fileName:\"/Users/andreasthomas/github/chronark/chronark.com/content/projects/_mdx_bundler_entry_point-6ad71b92-85b6-42db-903f-a6ab9fb0c9bd.mdx\",lineNumber:37,columnNumber:20},this),(0,r.jsxDEV)(e.span,{style:{color:\"#E1E4E8\"},children:\" \"},void 0,!1,{fileName:\"/Users/andreasthomas/github/chronark/chronark.com/content/projects/_mdx_bundler_entry_point-6ad71b92-85b6-42db-903f-a6ab9fb0c9bd.mdx\",lineNumber:37,columnNumber:61},this),(0,r.jsxDEV)(e.span,{style:{color:\"#79B8FF\"},children:\"serialized\"},void 0,!1,{fileName:\"/Users/andreasthomas/github/chronark/chronark.com/content/projects/_mdx_bundler_entry_point-6ad71b92-85b6-42db-903f-a6ab9fb0c9bd.mdx\",lineNumber:37,columnNumber:98},this),(0,r.jsxDEV)(e.span,{style:{color:\"#E1E4E8\"},children:\" \"},void 0,!1,{fileName:\"/Users/andreasthomas/github/chronark/chronark.com/content/projects/_mdx_bundler_entry_point-6ad71b92-85b6-42db-903f-a6ab9fb0c9bd.mdx\",lineNumber:37,columnNumber:144},this),(0,r.jsxDEV)(e.span,{style:{color:\"#F97583\"},children:\"=\"},void 0,!1,{fileName:\"/Users/andreasthomas/github/chronark/chronark.com/content/projects/_mdx_bundler_entry_point-6ad71b92-85b6-42db-903f-a6ab9fb0c9bd.mdx\",lineNumber:37,columnNumber:181},this),(0,r.jsxDEV)(e.span,{style:{color:\"#E1E4E8\"},children:\" role.\"},void 0,!1,{fileName:\"/Users/andreasthomas/github/chronark/chronark.com/content/projects/_mdx_bundler_entry_point-6ad71b92-85b6-42db-903f-a6ab9fb0c9bd.mdx\",lineNumber:37,columnNumber:218},this),(0,r.jsxDEV)(e.span,{style:{color:\"#B392F0\"},children:\"toString\"},void 0,!1,{fileName:\"/Users/andreasthomas/github/chronark/chronark.com/content/projects/_mdx_bundler_entry_point-6ad71b92-85b6-42db-903f-a6ab9fb0c9bd.mdx\",lineNumber:37,columnNumber:260},this),(0,r.jsxDEV)(e.span,{style:{color:\"#E1E4E8\"},children:\"();\"},void 0,!1,{fileName:\"/Users/andreasthomas/github/chronark/chronark.com/content/projects/_mdx_bundler_entry_point-6ad71b92-85b6-42db-903f-a6ab9fb0c9bd.mdx\",lineNumber:37,columnNumber:304},this)]},void 0,!0,{fileName:\"/Users/andreasthomas/github/chronark/chronark.com/content/projects/_mdx_bundler_entry_point-6ad71b92-85b6-42db-903f-a6ab9fb0c9bd.mdx\",lineNumber:37,columnNumber:1},this),`\n`,(0,r.jsxDEV)(e.span,{className:\"line\",children:\" \"},void 0,!1,{fileName:\"/Users/andreasthomas/github/chronark/chronark.com/content/projects/_mdx_bundler_entry_point-6ad71b92-85b6-42db-903f-a6ab9fb0c9bd.mdx\",lineNumber:38,columnNumber:1},this),`\n`,(0,r.jsxDEV)(e.span,{className:\"line\",children:(0,r.jsxDEV)(e.span,{style:{color:\"#6A737D\"},children:\"/**\"},void 0,!1,{fileName:\"/Users/andreasthomas/github/chronark/chronark.com/content/projects/_mdx_bundler_entry_point-6ad71b92-85b6-42db-903f-a6ab9fb0c9bd.mdx\",lineNumber:39,columnNumber:20},this)},void 0,!1,{fileName:\"/Users/andreasthomas/github/chronark/chronark.com/content/projects/_mdx_bundler_entry_point-6ad71b92-85b6-42db-903f-a6ab9fb0c9bd.mdx\",lineNumber:39,columnNumber:1},this),`\n`,(0,r.jsxDEV)(e.span,{className:\"line\",children:(0,r.jsxDEV)(e.span,{style:{color:\"#6A737D\"},children:\" * Note how you can pass in the Statements type again, to get full type safety\"},void 0,!1,{fileName:\"/Users/andreasthomas/github/chronark/chronark.com/content/projects/_mdx_bundler_entry_point-6ad71b92-85b6-42db-903f-a6ab9fb0c9bd.mdx\",lineNumber:40,columnNumber:20},this)},void 0,!1,{fileName:\"/Users/andreasthomas/github/chronark/chronark.com/content/projects/_mdx_bundler_entry_point-6ad71b92-85b6-42db-903f-a6ab9fb0c9bd.mdx\",lineNumber:40,columnNumber:1},this),`\n`,(0,r.jsxDEV)(e.span,{className:\"line\",children:(0,r.jsxDEV)(e.span,{style:{color:\"#6A737D\"},children:\" */\"},void 0,!1,{fileName:\"/Users/andreasthomas/github/chronark/chronark.com/content/projects/_mdx_bundler_entry_point-6ad71b92-85b6-42db-903f-a6ab9fb0c9bd.mdx\",lineNumber:41,columnNumber:20},this)},void 0,!1,{fileName:\"/Users/andreasthomas/github/chronark/chronark.com/content/projects/_mdx_bundler_entry_point-6ad71b92-85b6-42db-903f-a6ab9fb0c9bd.mdx\",lineNumber:41,columnNumber:1},this),`\n`,(0,r.jsxDEV)(e.span,{className:\"line\",children:[(0,r.jsxDEV)(e.span,{style:{color:\"#F97583\"},children:\"const\"},void 0,!1,{fileName:\"/Users/andreasthomas/github/chronark/chronark.com/content/projects/_mdx_bundler_entry_point-6ad71b92-85b6-42db-903f-a6ab9fb0c9bd.mdx\",lineNumber:42,columnNumber:20},this),(0,r.jsxDEV)(e.span,{style:{color:\"#E1E4E8\"},children:\" \"},void 0,!1,{fileName:\"/Users/andreasthomas/github/chronark/chronark.com/content/projects/_mdx_bundler_entry_point-6ad71b92-85b6-42db-903f-a6ab9fb0c9bd.mdx\",lineNumber:42,columnNumber:61},this),(0,r.jsxDEV)(e.span,{style:{color:\"#79B8FF\"},children:\"recovered\"},void 0,!1,{fileName:\"/Users/andreasthomas/github/chronark/chronark.com/content/projects/_mdx_bundler_entry_point-6ad71b92-85b6-42db-903f-a6ab9fb0c9bd.mdx\",lineNumber:42,columnNumber:98},this),(0,r.jsxDEV)(e.span,{style:{color:\"#E1E4E8\"},children:\" \"},void 0,!1,{fileName:\"/Users/andreasthomas/github/chronark/chronark.com/content/projects/_mdx_bundler_entry_point-6ad71b92-85b6-42db-903f-a6ab9fb0c9bd.mdx\",lineNumber:42,columnNumber:143},this),(0,r.jsxDEV)(e.span,{style:{color:\"#F97583\"},children:\"=\"},void 0,!1,{fileName:\"/Users/andreasthomas/github/chronark/chronark.com/content/projects/_mdx_bundler_entry_point-6ad71b92-85b6-42db-903f-a6ab9fb0c9bd.mdx\",lineNumber:42,columnNumber:180},this),(0,r.jsxDEV)(e.span,{style:{color:\"#E1E4E8\"},children:\" Role.\"},void 0,!1,{fileName:\"/Users/andreasthomas/github/chronark/chronark.com/content/projects/_mdx_bundler_entry_point-6ad71b92-85b6-42db-903f-a6ab9fb0c9bd.mdx\",lineNumber:42,columnNumber:217},this),(0,r.jsxDEV)(e.span,{style:{color:\"#B392F0\"},children:\"fromString\"},void 0,!1,{fileName:\"/Users/andreasthomas/github/chronark/chronark.com/content/projects/_mdx_bundler_entry_point-6ad71b92-85b6-42db-903f-a6ab9fb0c9bd.mdx\",lineNumber:42,columnNumber:259},this),(0,r.jsxDEV)(e.span,{style:{color:\"#E1E4E8\"},children:\"<\"},void 0,!1,{fileName:\"/Users/andreasthomas/github/chronark/chronark.com/content/projects/_mdx_bundler_entry_point-6ad71b92-85b6-42db-903f-a6ab9fb0c9bd.mdx\",lineNumber:42,columnNumber:305},this),(0,r.jsxDEV)(e.span,{style:{color:\"#B392F0\"},children:\"Statements\"},void 0,!1,{fileName:\"/Users/andreasthomas/github/chronark/chronark.com/content/projects/_mdx_bundler_entry_point-6ad71b92-85b6-42db-903f-a6ab9fb0c9bd.mdx\",lineNumber:42,columnNumber:345},this),(0,r.jsxDEV)(e.span,{style:{color:\"#E1E4E8\"},children:\">(serialized);\"},void 0,!1,{fileName:\"/Users/andreasthomas/github/chronark/chronark.com/content/projects/_mdx_bundler_entry_point-6ad71b92-85b6-42db-903f-a6ab9fb0c9bd.mdx\",lineNumber:42,columnNumber:391},this)]},void 0,!0,{fileName:\"/Users/andreasthomas/github/chronark/chronark.com/content/projects/_mdx_bundler_entry_point-6ad71b92-85b6-42db-903f-a6ab9fb0c9bd.mdx\",lineNumber:42,columnNumber:1},this),`\n`,(0,r.jsxDEV)(e.span,{className:\"line\",children:\" \"},void 0,!1,{fileName:\"/Users/andreasthomas/github/chronark/chronark.com/content/projects/_mdx_bundler_entry_point-6ad71b92-85b6-42db-903f-a6ab9fb0c9bd.mdx\",lineNumber:43,columnNumber:1},this),`\n`,(0,r.jsxDEV)(e.span,{className:\"line\",children:(0,r.jsxDEV)(e.span,{style:{color:\"#6A737D\"},children:\"/**\"},void 0,!1,{fileName:\"/Users/andreasthomas/github/chronark/chronark.com/content/projects/_mdx_bundler_entry_point-6ad71b92-85b6-42db-903f-a6ab9fb0c9bd.mdx\",lineNumber:44,columnNumber:20},this)},void 0,!1,{fileName:\"/Users/andreasthomas/github/chronark/chronark.com/content/projects/_mdx_bundler_entry_point-6ad71b92-85b6-42db-903f-a6ab9fb0c9bd.mdx\",lineNumber:44,columnNumber:1},this),`\n`,(0,r.jsxDEV)(e.span,{className:\"line\",children:(0,r.jsxDEV)(e.span,{style:{color:\"#6A737D\"},children:\" * Validate the role by specifying the resource and the required access\"},void 0,!1,{fileName:\"/Users/andreasthomas/github/chronark/chronark.com/content/projects/_mdx_bundler_entry_point-6ad71b92-85b6-42db-903f-a6ab9fb0c9bd.mdx\",lineNumber:45,columnNumber:20},this)},void 0,!1,{fileName:\"/Users/andreasthomas/github/chronark/chronark.com/content/projects/_mdx_bundler_entry_point-6ad71b92-85b6-42db-903f-a6ab9fb0c9bd.mdx\",lineNumber:45,columnNumber:1},this),`\n`,(0,r.jsxDEV)(e.span,{className:\"line\",children:(0,r.jsxDEV)(e.span,{style:{color:\"#6A737D\"},children:\" *\"},void 0,!1,{fileName:\"/Users/andreasthomas/github/chronark/chronark.com/content/projects/_mdx_bundler_entry_point-6ad71b92-85b6-42db-903f-a6ab9fb0c9bd.mdx\",lineNumber:46,columnNumber:20},this)},void 0,!1,{fileName:\"/Users/andreasthomas/github/chronark/chronark.com/content/projects/_mdx_bundler_entry_point-6ad71b92-85b6-42db-903f-a6ab9fb0c9bd.mdx\",lineNumber:46,columnNumber:1},this),`\n`,(0,r.jsxDEV)(e.span,{className:\"line\",children:(0,r.jsxDEV)(e.span,{style:{color:\"#6A737D\"},children:\" * everything is fully typed\"},void 0,!1,{fileName:\"/Users/andreasthomas/github/chronark/chronark.com/content/projects/_mdx_bundler_entry_point-6ad71b92-85b6-42db-903f-a6ab9fb0c9bd.mdx\",lineNumber:47,columnNumber:20},this)},void 0,!1,{fileName:\"/Users/andreasthomas/github/chronark/chronark.com/content/projects/_mdx_bundler_entry_point-6ad71b92-85b6-42db-903f-a6ab9fb0c9bd.mdx\",lineNumber:47,columnNumber:1},this),`\n`,(0,r.jsxDEV)(e.span,{className:\"line\",children:(0,r.jsxDEV)(e.span,{style:{color:\"#6A737D\"},children:\" */\"},void 0,!1,{fileName:\"/Users/andreasthomas/github/chronark/chronark.com/content/projects/_mdx_bundler_entry_point-6ad71b92-85b6-42db-903f-a6ab9fb0c9bd.mdx\",lineNumber:48,columnNumber:20},this)},void 0,!1,{fileName:\"/Users/andreasthomas/github/chronark/chronark.com/content/projects/_mdx_bundler_entry_point-6ad71b92-85b6-42db-903f-a6ab9fb0c9bd.mdx\",lineNumber:48,columnNumber:1},this),`\n`,(0,r.jsxDEV)(e.span,{className:\"line\",children:[(0,r.jsxDEV)(e.span,{style:{color:\"#F97583\"},children:\"const\"},void 0,!1,{fileName:\"/Users/andreasthomas/github/chronark/chronark.com/content/projects/_mdx_bundler_entry_point-6ad71b92-85b6-42db-903f-a6ab9fb0c9bd.mdx\",lineNumber:49,columnNumber:20},this),(0,r.jsxDEV)(e.span,{style:{color:\"#E1E4E8\"},children:\" \"},void 0,!1,{fileName:\"/Users/andreasthomas/github/chronark/chronark.com/content/projects/_mdx_bundler_entry_point-6ad71b92-85b6-42db-903f-a6ab9fb0c9bd.mdx\",lineNumber:49,columnNumber:61},this),(0,r.jsxDEV)(e.span,{style:{color:\"#79B8FF\"},children:\"res\"},void 0,!1,{fileName:\"/Users/andreasthomas/github/chronark/chronark.com/content/projects/_mdx_bundler_entry_point-6ad71b92-85b6-42db-903f-a6ab9fb0c9bd.mdx\",lineNumber:49,columnNumber:98},this),(0,r.jsxDEV)(e.span,{style:{color:\"#E1E4E8\"},children:\" \"},void 0,!1,{fileName:\"/Users/andreasthomas/github/chronark/chronark.com/content/projects/_mdx_bundler_entry_point-6ad71b92-85b6-42db-903f-a6ab9fb0c9bd.mdx\",lineNumber:49,columnNumber:137},this),(0,r.jsxDEV)(e.span,{style:{color:\"#F97583\"},children:\"=\"},void 0,!1,{fileName:\"/Users/andreasthomas/github/chronark/chronark.com/content/projects/_mdx_bundler_entry_point-6ad71b92-85b6-42db-903f-a6ab9fb0c9bd.mdx\",lineNumber:49,columnNumber:174},this),(0,r.jsxDEV)(e.span,{style:{color:\"#E1E4E8\"},children:\" recovered.\"},void 0,!1,{fileName:\"/Users/andreasthomas/github/chronark/chronark.com/content/projects/_mdx_bundler_entry_point-6ad71b92-85b6-42db-903f-a6ab9fb0c9bd.mdx\",lineNumber:49,columnNumber:211},this),(0,r.jsxDEV)(e.span,{style:{color:\"#B392F0\"},children:\"authorize\"},void 0,!1,{fileName:\"/Users/andreasthomas/github/chronark/chronark.com/content/projects/_mdx_bundler_entry_point-6ad71b92-85b6-42db-903f-a6ab9fb0c9bd.mdx\",lineNumber:49,columnNumber:258},this),(0,r.jsxDEV)(e.span,{style:{color:\"#E1E4E8\"},children:\"({\"},void 0,!1,{fileName:\"/Users/andreasthomas/github/chronark/chronark.com/content/projects/_mdx_bundler_entry_point-6ad71b92-85b6-42db-903f-a6ab9fb0c9bd.mdx\",lineNumber:49,columnNumber:303},this),(0,r.jsxDEV)(e.span,{style:{color:\"#9ECBFF\"},children:'\"team\"'},void 0,!1,{fileName:\"/Users/andreasthomas/github/chronark/chronark.com/content/projects/_mdx_bundler_entry_point-6ad71b92-85b6-42db-903f-a6ab9fb0c9bd.mdx\",lineNumber:49,columnNumber:341},this),(0,r.jsxDEV)(e.span,{style:{color:\"#E1E4E8\"},children:\", [\"},void 0,!1,{fileName:\"/Users/andreasthomas/github/chronark/chronark.com/content/projects/_mdx_bundler_entry_point-6ad71b92-85b6-42db-903f-a6ab9fb0c9bd.mdx\",lineNumber:49,columnNumber:393},this),(0,r.jsxDEV)(e.span,{style:{color:\"#9ECBFF\"},children:'\"read\"'},void 0,!1,{fileName:\"/Users/andreasthomas/github/chronark/chronark.com/content/projects/_mdx_bundler_entry_point-6ad71b92-85b6-42db-903f-a6ab9fb0c9bd.mdx\",lineNumber:49,columnNumber:432},this),(0,r.jsxDEV)(e.span,{style:{color:\"#E1E4E8\"},children:\"]});\"},void 0,!1,{fileName:\"/Users/andreasthomas/github/chronark/chronark.com/content/projects/_mdx_bundler_entry_point-6ad71b92-85b6-42db-903f-a6ab9fb0c9bd.mdx\",lineNumber:49,columnNumber:484},this)]},void 0,!0,{fileName:\"/Users/andreasthomas/github/chronark/chronark.com/content/projects/_mdx_bundler_entry_point-6ad71b92-85b6-42db-903f-a6ab9fb0c9bd.mdx\",lineNumber:49,columnNumber:1},this),`\n`,(0,r.jsxDEV)(e.span,{className:\"line\",children:\" \"},void 0,!1,{fileName:\"/Users/andreasthomas/github/chronark/chronark.com/content/projects/_mdx_bundler_entry_point-6ad71b92-85b6-42db-903f-a6ab9fb0c9bd.mdx\",lineNumber:50,columnNumber:1},this),`\n`,(0,r.jsxDEV)(e.span,{className:\"line\",children:(0,r.jsxDEV)(e.span,{style:{color:\"#6A737D\"},children:\"// res.success => boolean\"},void 0,!1,{fileName:\"/Users/andreasthomas/github/chronark/chronark.com/content/projects/_mdx_bundler_entry_point-6ad71b92-85b6-42db-903f-a6ab9fb0c9bd.mdx\",lineNumber:51,columnNumber:20},this)},void 0,!1,{fileName:\"/Users/andreasthomas/github/chronark/chronark.com/content/projects/_mdx_bundler_entry_point-6ad71b92-85b6-42db-903f-a6ab9fb0c9bd.mdx\",lineNumber:51,columnNumber:1},this),`\n`,(0,r.jsxDEV)(e.span,{className:\"line\",children:(0,r.jsxDEV)(e.span,{style:{color:\"#6A737D\"},children:\"// res.error => string | undefined provides a reason for failure\"},void 0,!1,{fileName:\"/Users/andreasthomas/github/chronark/chronark.com/content/projects/_mdx_bundler_entry_point-6ad71b92-85b6-42db-903f-a6ab9fb0c9bd.mdx\",lineNumber:52,columnNumber:20},this)},void 0,!1,{fileName:\"/Users/andreasthomas/github/chronark/chronark.com/content/projects/_mdx_bundler_entry_point-6ad71b92-85b6-42db-903f-a6ab9fb0c9bd.mdx\",lineNumber:52,columnNumber:1},this)]},void 0,!0,{fileName:\"/Users/andreasthomas/github/chronark/chronark.com/content/projects/_mdx_bundler_entry_point-6ad71b92-85b6-42db-903f-a6ab9fb0c9bd.mdx\",lineNumber:1,columnNumber:79},this)},void 0,!1,{fileName:\"/Users/andreasthomas/github/chronark/chronark.com/content/projects/_mdx_bundler_entry_point-6ad71b92-85b6-42db-903f-a6ab9fb0c9bd.mdx\",lineNumber:1,columnNumber:1},this)},void 0,!1,{fileName:\"/Users/andreasthomas/github/chronark/chronark.com/content/projects/_mdx_bundler_entry_point-6ad71b92-85b6-42db-903f-a6ab9fb0c9bd.mdx\",lineNumber:22,columnNumber:1},this)]},void 0,!0,{fileName:\"/Users/andreasthomas/github/chronark/chronark.com/content/projects/_mdx_bundler_entry_point-6ad71b92-85b6-42db-903f-a6ab9fb0c9bd.mdx\",lineNumber:1,columnNumber:1},this)}function Nn(i={}){let{wrapper:e}=i.components||{};return e?(0,r.jsxDEV)(e,Object.assign({},i,{children:(0,r.jsxDEV)(Fe,i,void 0,!1,{fileName:\"/Users/andreasthomas/github/chronark/chronark.com/content/projects/_mdx_bundler_entry_point-6ad71b92-85b6-42db-903f-a6ab9fb0c9bd.mdx\"},this)}),void 0,!1,{fileName:\"/Users/andreasthomas/github/chronark/chronark.com/content/projects/_mdx_bundler_entry_point-6ad71b92-85b6-42db-903f-a6ab9fb0c9bd.mdx\"},this):Fe(i)}var yn=Nn;return _n(kn);})();\n/*! Bundled license information:\n\nreact/cjs/react-jsx-dev-runtime.development.js:\n (**\n * @license React\n * react-jsx-dev-runtime.development.js\n *\n * Copyright (c) Facebook, Inc. and its affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n *)\n*/\n;return Component;"
},
"_id": "projects/access.mdx",
"_raw": {
"sourceFilePath": "projects/access.mdx",
"sourceFileName": "access.mdx",
"sourceFileDir": "projects",
"contentType": "mdx",
"flattenedPath": "projects/access"
},
"type": "Project",
"path": "/projects/access",
"slug": "access"
}