mirror of
https://github.com/AderKonstantin/aderktech-chronark.com-.git
synced 2025-06-08 13:48:42 +03:00
418 lines
588 KiB
JSON
418 lines
588 KiB
JSON
{
|
|
"cacheItemsMap": {
|
|
"projects/access.mdx": {
|
|
"document": {
|
|
"published": true,
|
|
"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 sn=Object.create;var S=Object.defineProperty;var ln=Object.getOwnPropertyDescriptor;var mn=Object.getOwnPropertyNames;var un=Object.getPrototypeOf,fn=Object.prototype.hasOwnProperty;var z=(l,e)=>()=>(e||l((e={exports:{}}).exports,e),e.exports),hn=(l,e)=>{for(var _ in e)S(l,_,{get:e[_],enumerable:!0})},xe=(l,e,_,k)=>{if(e&&typeof e==\"object\"||typeof e==\"function\")for(let y of mn(e))!fn.call(l,y)&&y!==_&&S(l,y,{get:()=>e[y],enumerable:!(k=ln(e,y))||k.enumerable});return l};var bn=(l,e,_)=>(_=l!=null?sn(un(l)):{},xe(e||!l||!l.__esModule?S(_,\"default\",{value:l,enumerable:!0}):_,l)),_n=l=>xe(S({},\"__esModule\",{value:!0}),l);var Ee=z((gn,ge)=>{ge.exports=React});var je=z(G=>{\"use strict\";(function(){\"use strict\";var l=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=l.__SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED;function f(n){{for(var a=arguments.length,d=new Array(a>1?a-1:0),c=1;c<a;c++)d[c-1]=arguments[c];we(\"error\",n,d)}}function we(n,a,d){{var c=g.ReactDebugCurrentFrame,s=c.getStackAddendum();s!==\"\"&&(a+=\"%s\",d=d.concat([s]));var i=d.map(function(o){return String(o)});i.unshift(\"Warning: \"+a),Function.prototype.apply.call(console[n],console,i)}}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,d){var c=n.displayName;if(c)return c;var s=a.displayName||a.name||\"\";return s!==\"\"?d+\"(\"+s+\")\":d}function Q(n){return n.displayName||\"Context\"}function p(n){if(n==null)return null;if(typeof n.tag==\"number\"&&f(\"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 d=n;return Q(d._context)+\".Provider\";case F:return Ie(n,n.render,\"ForwardRef\");case R:var c=n.displayName||null;return c!==null?c:p(n.type)||\"Memo\";case B:{var s=n,i=s._payload,o=s._init;try{return p(o(i))}catch{return null}}}return null}var x=Object.assign,U=0,ee,ne,re,ae,de,ce,te;function oe(){}oe.__reactDisabledLog=!0;function Ye(){{if(U===0){ee=console.log,ne=console.info,re=console.warn,ae=console.error,de=console.group,ce=console.groupCollapsed,te=console.groupEnd;var n={configurable:!0,enumerable:!0,value:oe,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:de}),groupCollapsed:x({},n,{value:ce}),groupEnd:x({},n,{value:te})})}U<0&&f(\"disabledDepth fell below zero. This is a bug in React. Please file an issue.\")}}var I=g.ReactCurrentDispatcher,Y;function C(n,a,d){{if(Y===void 0)try{throw Error()}catch(s){var c=s.stack.trim().match(/\\n( *(at )?)/);Y=c&&c[1]||\"\"}return`\n`+Y+n}}var $=!1,D;{var We=typeof WeakMap==\"function\"?WeakMap:Map;D=new We}function se(n,a){if(!n||$)return\"\";{var d=D.get(n);if(d!==void 0)return d}var c;$=!0;var s=Error.prepareStackTrace;Error.prepareStackTrace=void 0;var i;i=I.current,I.current=null,Ye();try{if(a){var o=function(){throw Error()};if(Object.defineProperty(o.prototype,\"props\",{set:function(){throw Error()}}),typeof Reflect==\"object\"&&Reflect.construct){try{Reflect.construct(o,[])}catch(N){c=N}Reflect.construct(n,[],o)}else{try{o.call()}catch(N){c=N}n.call(o.prototype)}}else{try{throw Error()}catch(N){c=N}n()}}catch(N){if(N&&c&&typeof N.stack==\"string\"){for(var t=N.stack.split(`\n`),h=c.stack.split(`\n`),m=t.length-1,u=h.length-1;m>=1&&u>=0&&t[m]!==h[u];)u--;for(;m>=1&&u>=0;m--,u--)if(t[m]!==h[u]){if(m!==1||u!==1)do if(m--,u--,u<0||t[m]!==h[u]){var b=`\n`+t[m].replace(\" at new \",\" at \");return n.displayName&&b.includes(\"<anonymous>\")&&(b=b.replace(\"<anonymous>\",n.displayName)),typeof n==\"function\"&&D.set(n,b),b}while(m>=1&&u>=0);break}}}finally{$=!1,I.current=i,$e(),Error.prepareStackTrace=s}var j=n?n.displayName||n.name:\"\",ke=j?C(j):\"\";return typeof n==\"function\"&&D.set(n,ke),ke}function Ve(n,a,d){return se(n,!1)}function Me(n){var a=n.prototype;return!!(a&&a.isReactComponent)}function w(n,a,d){if(n==null)return\"\";if(typeof n==\"function\")return se(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,d);case B:{var c=n,s=c._payload,i=c._init;try{return w(i(s),a,d)}catch{}}}return\"\"}var T=Object.prototype.hasOwnProperty,ie={},le=g.ReactDebugCurrentFrame;function A(n){if(n){var a=n._owner,d=w(n.type,n._source,a?a.type:null);le.setExtraStackFrame(d)}else le.setExtraStackFrame(null)}function Le(n,a,d,c,s){{var i=Function.call.bind(T);for(var o in n)if(i(n,o)){var t=void 0;try{if(typeof n[o]!=\"function\"){var h=Error((c||\"React class\")+\": \"+d+\" type `\"+o+\"` is invalid; it must be a function, usually from the `prop-types` package, but received `\"+typeof n[o]+\"`.This often happens because of typos such as `PropTypes.function` instead of `PropTypes.func`.\");throw h.name=\"Invariant Violation\",h}t=n[o](a,o,c,d,null,\"SECRET_DO_NOT_PASS_THIS_OR_YOU_WILL_BE_FIRED\")}catch(m){t=m}t&&!(t instanceof Error)&&(A(s),f(\"%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).\",c||\"React class\",d,o,typeof t),A(null)),t instanceof Error&&!(t.message in ie)&&(ie[t.message]=!0,A(s),f(\"Failed %s type: %s\",d,t.message),A(null))}}}var qe=Array.isArray;function W(n){return qe(n)}function ze(n){{var a=typeof Symbol==\"function\"&&Symbol.toStringTag,d=a&&n[Symbol.toStringTag]||n.constructor.name||\"Object\";return d}}function Ge(n){try{return me(n),!1}catch{return!0}}function me(n){return\"\"+n}function ue(n){if(Ge(n))return f(\"The provided key is an unsupported type %s. This value must be coerced to a string before before using it here.\",ze(n)),me(n)}var v=g.ReactCurrentOwner,Xe={key:!0,ref:!0,__self:!0,__source:!0},fe,he,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 d=p(v.current.type);V[d]||(f('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[d]=!0)}}function Je(n,a){{var d=function(){fe||(fe=!0,f(\"%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))};d.isReactWarning=!0,Object.defineProperty(n,\"key\",{get:d,configurable:!0})}}function Qe(n,a){{var d=function(){he||(he=!0,f(\"%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))};d.isReactWarning=!0,Object.defineProperty(n,\"ref\",{get:d,configurable:!0})}}var en=function(n,a,d,c,s,i,o){var t={$$typeof:e,type:n,key:a,ref:d,props:o,_owner:i};return t._store={},Object.defineProperty(t._store,\"validated\",{configurable:!1,enumerable:!1,writable:!0,value:!1}),Object.defineProperty(t,\"_self\",{configurable:!1,enumerable:!1,writable:!1,value:c}),Object.defineProperty(t,\"_source\",{configurable:!1,enumerable:!1,writable:!1,value:s}),Object.freeze&&(Object.freeze(t.props),Object.freeze(t)),t};function nn(n,a,d,c,s){{var i,o={},t=null,h=null;d!==void 0&&(ue(d),t=\"\"+d),He(a)&&(ue(a.key),t=\"\"+a.key),Ke(a)&&(h=a.ref,Ze(a,s));for(i in a)T.call(a,i)&&!Xe.hasOwnProperty(i)&&(o[i]=a[i]);if(n&&n.defaultProps){var m=n.defaultProps;for(i in m)o[i]===void 0&&(o[i]=m[i])}if(t||h){var u=typeof n==\"function\"?n.displayName||n.name||\"Unknown\":n;t&&Je(o,u),h&&Qe(o,u)}return en(n,t,h,s,c,v.current,o)}}var M=g.ReactCurrentOwner,be=g.ReactDebugCurrentFrame;function E(n){if(n){var a=n._owner,d=w(n.type,n._source,a?a.type:null);be.setExtraStackFrame(d)}else be.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(/^.*[\\\\\\/]/,\"\"),d=n.lineNumber;return`\n\nCheck your code at `+a+\":\"+d+\".\"}return\"\"}}var pe={};function an(n){{var a=_e();if(!a){var d=typeof n==\"string\"?n:n.displayName||n.name;d&&(a=`\n\nCheck the top-level render call using <`+d+\">.\")}return a}}function Ne(n,a){{if(!n._store||n._store.validated||n.key!=null)return;n._store.validated=!0;var d=an(a);if(pe[d])return;pe[d]=!0;var c=\"\";n&&n._owner&&n._owner!==M.current&&(c=\" It was passed a child from \"+p(n._owner.type)+\".\"),E(n),f('Each child in a list should have a unique \"key\" prop.%s%s See https://reactjs.org/link/warning-keys for more information.',d,c),E(null)}}function ye(n,a){{if(typeof n!=\"object\")return;if(W(n))for(var d=0;d<n.length;d++){var c=n[d];q(c)&&Ne(c,a)}else if(q(n))n._store&&(n._store.validated=!0);else if(n){var s=De(n);if(typeof s==\"function\"&&s!==n.entries)for(var i=s.call(n),o;!(o=i.next()).done;)q(o.value)&&Ne(o.value,a)}}}function dn(n){{var a=n.type;if(a==null||typeof a==\"string\")return;var d;if(typeof a==\"function\")d=a.propTypes;else if(typeof a==\"object\"&&(a.$$typeof===F||a.$$typeof===R))d=a.propTypes;else return;if(d){var c=p(a);Le(d,n.props,\"prop\",c,n)}else if(a.PropTypes!==void 0&&!L){L=!0;var s=p(a);f(\"Component %s declared `PropTypes` instead of `propTypes`. Did you misspell the property assignment?\",s||\"Unknown\")}typeof a.getDefaultProps==\"function\"&&!a.getDefaultProps.isReactClassApproved&&f(\"getDefaultProps is only used on classic React.createClass definitions. Use a static property named `defaultProps` instead.\")}}function cn(n){{for(var a=Object.keys(n.props),d=0;d<a.length;d++){var c=a[d];if(c!==\"children\"&&c!==\"key\"){E(n),f(\"Invalid prop `%s` supplied to `React.Fragment`. React.Fragment can only have `key` and `children` props.\",c),E(null);break}}n.ref!==null&&(E(n),f(\"Invalid attribute `ref` supplied to `React.Fragment`.\"),E(null))}}function tn(n,a,d,c,s,i){{var o=Be(n);if(!o){var t=\"\";(n===void 0||typeof n==\"object\"&&n!==null&&Object.keys(n).length===0)&&(t+=\" 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 h=rn(s);h?t+=h:t+=_e();var m;n===null?m=\"null\":W(n)?m=\"array\":n!==void 0&&n.$$typeof===e?(m=\"<\"+(p(n.type)||\"Unknown\")+\" />\",t=\" Did you accidentally export a JSX literal instead of a component?\"):m=typeof n,f(\"React.jsx: type is invalid -- expected a string (for built-in components) or a class/function (for composite components) but got: %s.%s\",m,t)}var u=nn(n,a,d,s,i);if(u==null)return u;if(o){var b=a.children;if(b!==void 0)if(c)if(W(b)){for(var j=0;j<b.length;j++)ye(b[j],n);Object.freeze&&Object.freeze(b)}else f(\"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(b,n)}return n===k?cn(u):dn(u),u}}var on=tn;G.Fragment=k,G.jsxDEV=on})()});var ve=z((jn,Ue)=>{\"use strict\";Ue.exports=je()});var kn={};hn(kn,{default:()=>yn,frontmatter:()=>pn});var r=bn(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\",published:!0};function Fe(l){let e=Object.assign({p:\"p\",ul:\"ul\",li:\"li\",h2:\"h2\",a:\"a\",span:\"span\",div:\"div\",pre:\"pre\",code:\"code\"},l.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-675c5a23-2c19-43e7-afcf-8bdd7ed1d19d.mdx\",lineNumber:9,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-675c5a23-2c19-43e7-afcf-8bdd7ed1d19d.mdx\",lineNumber:11,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-675c5a23-2c19-43e7-afcf-8bdd7ed1d19d.mdx\",lineNumber:12,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-675c5a23-2c19-43e7-afcf-8bdd7ed1d19d.mdx\",lineNumber:13,columnNumber:1},this),`\n`]},void 0,!0,{fileName:\"/Users/andreasthomas/github/chronark/chronark.com/content/projects/_mdx_bundler_entry_point-675c5a23-2c19-43e7-afcf-8bdd7ed1d19d.mdx\",lineNumber:11,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-675c5a23-2c19-43e7-afcf-8bdd7ed1d19d.mdx\"},this)},void 0,!1,{fileName:\"/Users/andreasthomas/github/chronark/chronark.com/content/projects/_mdx_bundler_entry_point-675c5a23-2c19-43e7-afcf-8bdd7ed1d19d.mdx\"},this),\"Install\"]},void 0,!0,{fileName:\"/Users/andreasthomas/github/chronark/chronark.com/content/projects/_mdx_bundler_entry_point-675c5a23-2c19-43e7-afcf-8bdd7ed1d19d.mdx\",lineNumber:15,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-675c5a23-2c19-43e7-afcf-8bdd7ed1d19d.mdx\",lineNumber:1,columnNumber:104},this)},void 0,!1,{fileName:\"/Users/andreasthomas/github/chronark/chronark.com/content/projects/_mdx_bundler_entry_point-675c5a23-2c19-43e7-afcf-8bdd7ed1d19d.mdx\",lineNumber:1,columnNumber:85},this)},void 0,!1,{fileName:\"/Users/andreasthomas/github/chronark/chronark.com/content/projects/_mdx_bundler_entry_point-675c5a23-2c19-43e7-afcf-8bdd7ed1d19d.mdx\",lineNumber:1,columnNumber:79},this)},void 0,!1,{fileName:\"/Users/andreasthomas/github/chronark/chronark.com/content/projects/_mdx_bundler_entry_point-675c5a23-2c19-43e7-afcf-8bdd7ed1d19d.mdx\",lineNumber:1,columnNumber:1},this)},void 0,!1,{fileName:\"/Users/andreasthomas/github/chronark/chronark.com/content/projects/_mdx_bundler_entry_point-675c5a23-2c19-43e7-afcf-8bdd7ed1d19d.mdx\",lineNumber:17,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-675c5a23-2c19-43e7-afcf-8bdd7ed1d19d.mdx\"},this)},void 0,!1,{fileName:\"/Users/andreasthomas/github/chronark/chronark.com/content/projects/_mdx_bundler_entry_point-675c5a23-2c19-43e7-afcf-8bdd7ed1d19d.mdx\"},this),\"Usage\"]},void 0,!0,{fileName:\"/Users/andreasthomas/github/chronark/chronark.com/content/projects/_mdx_bundler_entry_point-675c5a23-2c19-43e7-afcf-8bdd7ed1d19d.mdx\",lineNumber:21,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-675c5a23-2c19-43e7-afcf-8bdd7ed1d19d.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-675c5a23-2c19-43e7-afcf-8bdd7ed1d19d.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-675c5a23-2c19-43e7-afcf-8bdd7ed1d19d.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-675c5a23-2c19-43e7-afcf-8bdd7ed1d19d.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-675c5a23-2c19-43e7-afcf-8bdd7ed1d19d.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-675c5a23-2c19-43e7-afcf-8bdd7ed1d19d.mdx\",lineNumber:1,columnNumber:348},this)]},void 0,!0,{fileName:\"/Users/andreasthomas/github/chronark/chronark.com/content/projects/_mdx_bundler_entry_point-675c5a23-2c19-43e7-afcf-8bdd7ed1d19d.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-675c5a23-2c19-43e7-afcf-8bdd7ed1d19d.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-675c5a23-2c19-43e7-afcf-8bdd7ed1d19d.mdx\",lineNumber:3,columnNumber:20},this)},void 0,!1,{fileName:\"/Users/andreasthomas/github/chronark/chronark.com/content/projects/_mdx_bundler_entry_point-675c5a23-2c19-43e7-afcf-8bdd7ed1d19d.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-675c5a23-2c19-43e7-afcf-8bdd7ed1d19d.mdx\",lineNumber:4,columnNumber:20},this)},void 0,!1,{fileName:\"/Users/andreasthomas/github/chronark/chronark.com/content/projects/_mdx_bundler_entry_point-675c5a23-2c19-43e7-afcf-8bdd7ed1d19d.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-675c5a23-2c19-43e7-afcf-8bdd7ed1d19d.mdx\",lineNumber:5,columnNumber:20},this)},void 0,!1,{fileName:\"/Users/andreasthomas/github/chronark/chronark.com/content/projects/_mdx_bundler_entry_point-675c5a23-2c19-43e7-afcf-8bdd7ed1d19d.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-675c5a23-2c19-43e7-afcf-8bdd7ed1d19d.mdx\",lineNumber:6,columnNumber:20},this)},void 0,!1,{fileName:\"/Users/andreasthomas/github/chronark/chronark.com/content/projects/_mdx_bundler_entry_point-675c5a23-2c19-43e7-afcf-8bdd7ed1d19d.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-675c5a23-2c19-43e7-afcf-8bdd7ed1d19d.mdx\",lineNumber:7,columnNumber:20},this)},void 0,!1,{fileName:\"/Users/andreasthomas/github/chronark/chronark.com/content/projects/_mdx_bundler_entry_point-675c5a23-2c19-43e7-afcf-8bdd7ed1d19d.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-675c5a23-2c19-43e7-afcf-8bdd7ed1d19d.mdx\",lineNumber:8,columnNumber:20},this)},void 0,!1,{fileName:\"/Users/andreasthomas/github/chronark/chronark.com/content/projects/_mdx_bundler_entry_point-675c5a23-2c19-43e7-afcf-8bdd7ed1d19d.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-675c5a23-2c19-43e7-afcf-8bdd7ed1d19d.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-675c5a23-2c19-43e7-afcf-8bdd7ed1d19d.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-675c5a23-2c19-43e7-afcf-8bdd7ed1d19d.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-675c5a23-2c19-43e7-afcf-8bdd7ed1d19d.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-675c5a23-2c19-43e7-afcf-8bdd7ed1d19d.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-675c5a23-2c19-43e7-afcf-8bdd7ed1d19d.mdx\",lineNumber:9,columnNumber:217},this)]},void 0,!0,{fileName:\"/Users/andreasthomas/github/chronark/chronark.com/content/projects/_mdx_bundler_entry_point-675c5a23-2c19-43e7-afcf-8bdd7ed1d19d.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-675c5a23-2c19-43e7-afcf-8bdd7ed1d19d.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-675c5a23-2c19-43e7-afcf-8bdd7ed1d19d.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-675c5a23-2c19-43e7-afcf-8bdd7ed1d19d.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-675c5a23-2c19-43e7-afcf-8bdd7ed1d19d.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-675c5a23-2c19-43e7-afcf-8bdd7ed1d19d.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-675c5a23-2c19-43e7-afcf-8bdd7ed1d19d.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-675c5a23-2c19-43e7-afcf-8bdd7ed1d19d.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-675c5a23-2c19-43e7-afcf-8bdd7ed1d19d.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-675c5a23-2c19-43e7-afcf-8bdd7ed1d19d.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-675c5a23-2c19-43e7-afcf-8bdd7ed1d19d.mdx\",lineNumber:10,columnNumber:407},this)]},void 0,!0,{fileName:\"/Users/andreasthomas/github/chronark/chronark.com/content/projects/_mdx_bundler_entry_point-675c5a23-2c19-43e7-afcf-8bdd7ed1d19d.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-675c5a23-2c19-43e7-afcf-8bdd7ed1d19d.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-675c5a23-2c19-43e7-afcf-8bdd7ed1d19d.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-675c5a23-2c19-43e7-afcf-8bdd7ed1d19d.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-675c5a23-2c19-43e7-afcf-8bdd7ed1d19d.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-675c5a23-2c19-43e7-afcf-8bdd7ed1d19d.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-675c5a23-2c19-43e7-afcf-8bdd7ed1d19d.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-675c5a23-2c19-43e7-afcf-8bdd7ed1d19d.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-675c5a23-2c19-43e7-afcf-8bdd7ed1d19d.mdx\",lineNumber:11,columnNumber:316},this)]},void 0,!0,{fileName:\"/Users/andreasthomas/github/chronark/chronark.com/content/projects/_mdx_bundler_entry_point-675c5a23-2c19-43e7-afcf-8bdd7ed1d19d.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-675c5a23-2c19-43e7-afcf-8bdd7ed1d19d.mdx\",lineNumber:12,columnNumber:20},this)},void 0,!1,{fileName:\"/Users/andreasthomas/github/chronark/chronark.com/content/projects/_mdx_bundler_entry_point-675c5a23-2c19-43e7-afcf-8bdd7ed1d19d.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-675c5a23-2c19-43e7-afcf-8bdd7ed1d19d.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-675c5a23-2c19-43e7-afcf-8bdd7ed1d19d.mdx\",lineNumber:14,columnNumber:20},this)},void 0,!1,{fileName:\"/Users/andreasthomas/github/chronark/chronark.com/content/projects/_mdx_bundler_entry_point-675c5a23-2c19-43e7-afcf-8bdd7ed1d19d.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-675c5a23-2c19-43e7-afcf-8bdd7ed1d19d.mdx\",lineNumber:15,columnNumber:20},this)},void 0,!1,{fileName:\"/Users/andreasthomas/github/chronark/chronark.com/content/projects/_mdx_bundler_entry_point-675c5a23-2c19-43e7-afcf-8bdd7ed1d19d.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-675c5a23-2c19-43e7-afcf-8bdd7ed1d19d.mdx\",lineNumber:16,columnNumber:20},this)},void 0,!1,{fileName:\"/Users/andreasthomas/github/chronark/chronark.com/content/projects/_mdx_bundler_entry_point-675c5a23-2c19-43e7-afcf-8bdd7ed1d19d.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-675c5a23-2c19-43e7-afcf-8bdd7ed1d19d.mdx\",lineNumber:17,columnNumber:20},this)},void 0,!1,{fileName:\"/Users/andreasthomas/github/chronark/chronark.com/content/projects/_mdx_bundler_entry_point-675c5a23-2c19-43e7-afcf-8bdd7ed1d19d.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-675c5a23-2c19-43e7-afcf-8bdd7ed1d19d.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-675c5a23-2c19-43e7-afcf-8bdd7ed1d19d.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-675c5a23-2c19-43e7-afcf-8bdd7ed1d19d.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-675c5a23-2c19-43e7-afcf-8bdd7ed1d19d.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-675c5a23-2c19-43e7-afcf-8bdd7ed1d19d.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-675c5a23-2c19-43e7-afcf-8bdd7ed1d19d.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-675c5a23-2c19-43e7-afcf-8bdd7ed1d19d.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-675c5a23-2c19-43e7-afcf-8bdd7ed1d19d.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-675c5a23-2c19-43e7-afcf-8bdd7ed1d19d.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-675c5a23-2c19-43e7-afcf-8bdd7ed1d19d.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-675c5a23-2c19-43e7-afcf-8bdd7ed1d19d.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-675c5a23-2c19-43e7-afcf-8bdd7ed1d19d.mdx\",lineNumber:18,columnNumber:458},this)]},void 0,!0,{fileName:\"/Users/andreasthomas/github/chronark/chronark.com/content/projects/_mdx_bundler_entry_point-675c5a23-2c19-43e7-afcf-8bdd7ed1d19d.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-675c5a23-2c19-43e7-afcf-8bdd7ed1d19d.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-675c5a23-2c19-43e7-afcf-8bdd7ed1d19d.mdx\",lineNumber:20,columnNumber:20},this)},void 0,!1,{fileName:\"/Users/andreasthomas/github/chronark/chronark.com/content/projects/_mdx_bundler_entry_point-675c5a23-2c19-43e7-afcf-8bdd7ed1d19d.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-675c5a23-2c19-43e7-afcf-8bdd7ed1d19d.mdx\",lineNumber:21,columnNumber:20},this)},void 0,!1,{fileName:\"/Users/andreasthomas/github/chronark/chronark.com/content/projects/_mdx_bundler_entry_point-675c5a23-2c19-43e7-afcf-8bdd7ed1d19d.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-675c5a23-2c19-43e7-afcf-8bdd7ed1d19d.mdx\",lineNumber:22,columnNumber:20},this)},void 0,!1,{fileName:\"/Users/andreasthomas/github/chronark/chronark.com/content/projects/_mdx_bundler_entry_point-675c5a23-2c19-43e7-afcf-8bdd7ed1d19d.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-675c5a23-2c19-43e7-afcf-8bdd7ed1d19d.mdx\",lineNumber:23,columnNumber:20},this)},void 0,!1,{fileName:\"/Users/andreasthomas/github/chronark/chronark.com/content/projects/_mdx_bundler_entry_point-675c5a23-2c19-43e7-afcf-8bdd7ed1d19d.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-675c5a23-2c19-43e7-afcf-8bdd7ed1d19d.mdx\",lineNumber:24,columnNumber:20},this)},void 0,!1,{fileName:\"/Users/andreasthomas/github/chronark/chronark.com/content/projects/_mdx_bundler_entry_point-675c5a23-2c19-43e7-afcf-8bdd7ed1d19d.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-675c5a23-2c19-43e7-afcf-8bdd7ed1d19d.mdx\",lineNumber:25,columnNumber:20},this)},void 0,!1,{fileName:\"/Users/andreasthomas/github/chronark/chronark.com/content/projects/_mdx_bundler_entry_point-675c5a23-2c19-43e7-afcf-8bdd7ed1d19d.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-675c5a23-2c19-43e7-afcf-8bdd7ed1d19d.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-675c5a23-2c19-43e7-afcf-8bdd7ed1d19d.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-675c5a23-2c19-43e7-afcf-8bdd7ed1d19d.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-675c5a23-2c19-43e7-afcf-8bdd7ed1d19d.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-675c5a23-2c19-43e7-afcf-8bdd7ed1d19d.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-675c5a23-2c19-43e7-afcf-8bdd7ed1d19d.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-675c5a23-2c19-43e7-afcf-8bdd7ed1d19d.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-675c5a23-2c19-43e7-afcf-8bdd7ed1d19d.mdx\",lineNumber:26,columnNumber:295},this)]},void 0,!0,{fileName:\"/Users/andreasthomas/github/chronark/chronark.com/content/projects/_mdx_bundler_entry_point-675c5a23-2c19-43e7-afcf-8bdd7ed1d19d.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-675c5a23-2c19-43e7-afcf-8bdd7ed1d19d.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-675c5a23-2c19-43e7-afcf-8bdd7ed1d19d.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-675c5a23-2c19-43e7-afcf-8bdd7ed1d19d.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-675c5a23-2c19-43e7-afcf-8bdd7ed1d19d.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-675c5a23-2c19-43e7-afcf-8bdd7ed1d19d.mdx\",lineNumber:27,columnNumber:208},this)]},void 0,!0,{fileName:\"/Users/andreasthomas/github/chronark/chronark.com/content/projects/_mdx_bundler_entry_point-675c5a23-2c19-43e7-afcf-8bdd7ed1d19d.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-675c5a23-2c19-43e7-afcf-8bdd7ed1d19d.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-675c5a23-2c19-43e7-afcf-8bdd7ed1d19d.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-675c5a23-2c19-43e7-afcf-8bdd7ed1d19d.mdx\",lineNumber:28,columnNumber:117},this)]},void 0,!0,{fileName:\"/Users/andreasthomas/github/chronark/chronark.com/content/projects/_mdx_bundler_entry_point-675c5a23-2c19-43e7-afcf-8bdd7ed1d19d.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-675c5a23-2c19-43e7-afcf-8bdd7ed1d19d.mdx\",lineNumber:29,columnNumber:20},this)},void 0,!1,{fileName:\"/Users/andreasthomas/github/chronark/chronark.com/content/projects/_mdx_bundler_entry_point-675c5a23-2c19-43e7-afcf-8bdd7ed1d19d.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-675c5a23-2c19-43e7-afcf-8bdd7ed1d19d.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-675c5a23-2c19-43e7-afcf-8bdd7ed1d19d.mdx\",lineNumber:31,columnNumber:20},this)},void 0,!1,{fileName:\"/Users/andreasthomas/github/chronark/chronark.com/content/projects/_mdx_bundler_entry_point-675c5a23-2c19-43e7-afcf-8bdd7ed1d19d.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-675c5a23-2c19-43e7-afcf-8bdd7ed1d19d.mdx\",lineNumber:32,columnNumber:20},this)},void 0,!1,{fileName:\"/Users/andreasthomas/github/chronark/chronark.com/content/projects/_mdx_bundler_entry_point-675c5a23-2c19-43e7-afcf-8bdd7ed1d19d.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-675c5a23-2c19-43e7-afcf-8bdd7ed1d19d.mdx\",lineNumber:33,columnNumber:20},this)},void 0,!1,{fileName:\"/Users/andreasthomas/github/chronark/chronark.com/content/projects/_mdx_bundler_entry_point-675c5a23-2c19-43e7-afcf-8bdd7ed1d19d.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-675c5a23-2c19-43e7-afcf-8bdd7ed1d19d.mdx\",lineNumber:34,columnNumber:20},this)},void 0,!1,{fileName:\"/Users/andreasthomas/github/chronark/chronark.com/content/projects/_mdx_bundler_entry_point-675c5a23-2c19-43e7-afcf-8bdd7ed1d19d.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-675c5a23-2c19-43e7-afcf-8bdd7ed1d19d.mdx\",lineNumber:35,columnNumber:20},this)},void 0,!1,{fileName:\"/Users/andreasthomas/github/chronark/chronark.com/content/projects/_mdx_bundler_entry_point-675c5a23-2c19-43e7-afcf-8bdd7ed1d19d.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-675c5a23-2c19-43e7-afcf-8bdd7ed1d19d.mdx\",lineNumber:36,columnNumber:20},this)},void 0,!1,{fileName:\"/Users/andreasthomas/github/chronark/chronark.com/content/projects/_mdx_bundler_entry_point-675c5a23-2c19-43e7-afcf-8bdd7ed1d19d.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-675c5a23-2c19-43e7-afcf-8bdd7ed1d19d.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-675c5a23-2c19-43e7-afcf-8bdd7ed1d19d.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-675c5a23-2c19-43e7-afcf-8bdd7ed1d19d.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-675c5a23-2c19-43e7-afcf-8bdd7ed1d19d.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-675c5a23-2c19-43e7-afcf-8bdd7ed1d19d.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-675c5a23-2c19-43e7-afcf-8bdd7ed1d19d.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-675c5a23-2c19-43e7-afcf-8bdd7ed1d19d.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-675c5a23-2c19-43e7-afcf-8bdd7ed1d19d.mdx\",lineNumber:37,columnNumber:304},this)]},void 0,!0,{fileName:\"/Users/andreasthomas/github/chronark/chronark.com/content/projects/_mdx_bundler_entry_point-675c5a23-2c19-43e7-afcf-8bdd7ed1d19d.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-675c5a23-2c19-43e7-afcf-8bdd7ed1d19d.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-675c5a23-2c19-43e7-afcf-8bdd7ed1d19d.mdx\",lineNumber:39,columnNumber:20},this)},void 0,!1,{fileName:\"/Users/andreasthomas/github/chronark/chronark.com/content/projects/_mdx_bundler_entry_point-675c5a23-2c19-43e7-afcf-8bdd7ed1d19d.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-675c5a23-2c19-43e7-afcf-8bdd7ed1d19d.mdx\",lineNumber:40,columnNumber:20},this)},void 0,!1,{fileName:\"/Users/andreasthomas/github/chronark/chronark.com/content/projects/_mdx_bundler_entry_point-675c5a23-2c19-43e7-afcf-8bdd7ed1d19d.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-675c5a23-2c19-43e7-afcf-8bdd7ed1d19d.mdx\",lineNumber:41,columnNumber:20},this)},void 0,!1,{fileName:\"/Users/andreasthomas/github/chronark/chronark.com/content/projects/_mdx_bundler_entry_point-675c5a23-2c19-43e7-afcf-8bdd7ed1d19d.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-675c5a23-2c19-43e7-afcf-8bdd7ed1d19d.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-675c5a23-2c19-43e7-afcf-8bdd7ed1d19d.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-675c5a23-2c19-43e7-afcf-8bdd7ed1d19d.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-675c5a23-2c19-43e7-afcf-8bdd7ed1d19d.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-675c5a23-2c19-43e7-afcf-8bdd7ed1d19d.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-675c5a23-2c19-43e7-afcf-8bdd7ed1d19d.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-675c5a23-2c19-43e7-afcf-8bdd7ed1d19d.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-675c5a23-2c19-43e7-afcf-8bdd7ed1d19d.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-675c5a23-2c19-43e7-afcf-8bdd7ed1d19d.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-675c5a23-2c19-43e7-afcf-8bdd7ed1d19d.mdx\",lineNumber:42,columnNumber:391},this)]},void 0,!0,{fileName:\"/Users/andreasthomas/github/chronark/chronark.com/content/projects/_mdx_bundler_entry_point-675c5a23-2c19-43e7-afcf-8bdd7ed1d19d.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-675c5a23-2c19-43e7-afcf-8bdd7ed1d19d.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-675c5a23-2c19-43e7-afcf-8bdd7ed1d19d.mdx\",lineNumber:44,columnNumber:20},this)},void 0,!1,{fileName:\"/Users/andreasthomas/github/chronark/chronark.com/content/projects/_mdx_bundler_entry_point-675c5a23-2c19-43e7-afcf-8bdd7ed1d19d.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-675c5a23-2c19-43e7-afcf-8bdd7ed1d19d.mdx\",lineNumber:45,columnNumber:20},this)},void 0,!1,{fileName:\"/Users/andreasthomas/github/chronark/chronark.com/content/projects/_mdx_bundler_entry_point-675c5a23-2c19-43e7-afcf-8bdd7ed1d19d.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-675c5a23-2c19-43e7-afcf-8bdd7ed1d19d.mdx\",lineNumber:46,columnNumber:20},this)},void 0,!1,{fileName:\"/Users/andreasthomas/github/chronark/chronark.com/content/projects/_mdx_bundler_entry_point-675c5a23-2c19-43e7-afcf-8bdd7ed1d19d.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-675c5a23-2c19-43e7-afcf-8bdd7ed1d19d.mdx\",lineNumber:47,columnNumber:20},this)},void 0,!1,{fileName:\"/Users/andreasthomas/github/chronark/chronark.com/content/projects/_mdx_bundler_entry_point-675c5a23-2c19-43e7-afcf-8bdd7ed1d19d.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-675c5a23-2c19-43e7-afcf-8bdd7ed1d19d.mdx\",lineNumber:48,columnNumber:20},this)},void 0,!1,{fileName:\"/Users/andreasthomas/github/chronark/chronark.com/content/projects/_mdx_bundler_entry_point-675c5a23-2c19-43e7-afcf-8bdd7ed1d19d.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-675c5a23-2c19-43e7-afcf-8bdd7ed1d19d.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-675c5a23-2c19-43e7-afcf-8bdd7ed1d19d.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-675c5a23-2c19-43e7-afcf-8bdd7ed1d19d.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-675c5a23-2c19-43e7-afcf-8bdd7ed1d19d.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-675c5a23-2c19-43e7-afcf-8bdd7ed1d19d.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-675c5a23-2c19-43e7-afcf-8bdd7ed1d19d.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-675c5a23-2c19-43e7-afcf-8bdd7ed1d19d.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-675c5a23-2c19-43e7-afcf-8bdd7ed1d19d.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-675c5a23-2c19-43e7-afcf-8bdd7ed1d19d.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-675c5a23-2c19-43e7-afcf-8bdd7ed1d19d.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-675c5a23-2c19-43e7-afcf-8bdd7ed1d19d.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-675c5a23-2c19-43e7-afcf-8bdd7ed1d19d.mdx\",lineNumber:49,columnNumber:484},this)]},void 0,!0,{fileName:\"/Users/andreasthomas/github/chronark/chronark.com/content/projects/_mdx_bundler_entry_point-675c5a23-2c19-43e7-afcf-8bdd7ed1d19d.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-675c5a23-2c19-43e7-afcf-8bdd7ed1d19d.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-675c5a23-2c19-43e7-afcf-8bdd7ed1d19d.mdx\",lineNumber:51,columnNumber:20},this)},void 0,!1,{fileName:\"/Users/andreasthomas/github/chronark/chronark.com/content/projects/_mdx_bundler_entry_point-675c5a23-2c19-43e7-afcf-8bdd7ed1d19d.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-675c5a23-2c19-43e7-afcf-8bdd7ed1d19d.mdx\",lineNumber:52,columnNumber:20},this)},void 0,!1,{fileName:\"/Users/andreasthomas/github/chronark/chronark.com/content/projects/_mdx_bundler_entry_point-675c5a23-2c19-43e7-afcf-8bdd7ed1d19d.mdx\",lineNumber:52,columnNumber:1},this)]},void 0,!0,{fileName:\"/Users/andreasthomas/github/chronark/chronark.com/content/projects/_mdx_bundler_entry_point-675c5a23-2c19-43e7-afcf-8bdd7ed1d19d.mdx\",lineNumber:1,columnNumber:79},this)},void 0,!1,{fileName:\"/Users/andreasthomas/github/chronark/chronark.com/content/projects/_mdx_bundler_entry_point-675c5a23-2c19-43e7-afcf-8bdd7ed1d19d.mdx\",lineNumber:1,columnNumber:1},this)},void 0,!1,{fileName:\"/Users/andreasthomas/github/chronark/chronark.com/content/projects/_mdx_bundler_entry_point-675c5a23-2c19-43e7-afcf-8bdd7ed1d19d.mdx\",lineNumber:23,columnNumber:1},this)]},void 0,!0,{fileName:\"/Users/andreasthomas/github/chronark/chronark.com/content/projects/_mdx_bundler_entry_point-675c5a23-2c19-43e7-afcf-8bdd7ed1d19d.mdx\",lineNumber:1,columnNumber:1},this)}function Nn(l={}){let{wrapper:e}=l.components||{};return e?(0,r.jsxDEV)(e,Object.assign({},l,{children:(0,r.jsxDEV)(Fe,l,void 0,!1,{fileName:\"/Users/andreasthomas/github/chronark/chronark.com/content/projects/_mdx_bundler_entry_point-675c5a23-2c19-43e7-afcf-8bdd7ed1d19d.mdx\"},this)}),void 0,!1,{fileName:\"/Users/andreasthomas/github/chronark/chronark.com/content/projects/_mdx_bundler_entry_point-675c5a23-2c19-43e7-afcf-8bdd7ed1d19d.mdx\"},this):Fe(l)}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"
|
|
},
|
|
"documentHash": "1679819558148",
|
|
"hasWarnings": false,
|
|
"documentTypeName": "Project"
|
|
},
|
|
"projects/envshare.mdx": {
|
|
"document": {
|
|
"published": true,
|
|
"title": "envshare.dev",
|
|
"description": "EnvShare is a simple tool to share environment variables securely. It uses AES-GCM to encrypt your data before sending it to the server. The encryption key never leaves your browser.",
|
|
"date": "2023-01-16T00:00:00.000Z",
|
|
"url": "https://envshare.dev",
|
|
"repository": "chronark/envshare",
|
|
"body": {
|
|
"raw": "\nEnvShare is a simple tool to share environment variables securely. It uses\n**AES-GCM** to encrypt your data before sending it to the server. The encryption\nkey never leaves your browser.\n\n## Features\n\n- **Shareable Links:** Share your environment variables securely by sending a\n link\n- **End-to-End Encryption:** AES-GCM encryption is used to encrypt your data\n before sending it to the server\n- **Limit number of reads:** Limit the number of times a link can be read\n- **Auto Expire:** Automatically expire links and delete data after a certain\n time\n\n\n\n\n\n## Built with\n\n- [Next.js](https://nextjs.org)\n- [tailwindcss](https://tailwindcss.com)\n- Deployed on [Vercel](https://vercel.com?utm_source=envshare)\n- Data stored on [Upstash](https://upstash.com?utm_source=envshare)\n\n## Deploy your own\n\nDetailed instructions can be found [here](https://envshare.dev/deploy)\n\nAll you need is a Redis database on Upstash and a Vercel account. Click the\nbutton below to clone and deploy:\n\n[](https://vercel.com/new/clone?demo-title=EnvShare&demo-description=Simple%20Next.js%20%2B%20Upstash%20app%20to%20share%20environment%20variables%20securely%20using%20AES-GCM%20encryption.&demo-url=https%3A%2F%2Fenvshare.dev%2F&demo-image=%2F%2Fimages.ctfassets.net%2Fe5382hct74si%2F5SaFBHXp5FBFJbsTzVqIJ3%2Ff0f8382369b7642fd8103debb9025c11%2Fenvshare.png&project-name=EnvShare&repository-name=envshare&repository-url=https%3A%2F%2Fgithub.com%2Fchronark%2Fenvshare&from=templates&integration-ids=oac_V3R1GIpkoJorr6fqyiwdhl17)\n\n\n\n## Configuration\n\n### Environment Variables\n\n`ENABLE_VERCEL_ANALYTICS` Any truthy value will enable Vercel Analytics. This is turned off by default\n\n## Contributing\n\nThis repository uses `pnpm` to manage dependencies. Install it using\n`npm install -g pnpm`\n\nPlease run `pnpm fmt` before committing to format the code.\n\n## Docs\n\nDocs in the README are temporary and will be moved to the website soon.\n\n### API\n\n#### Store a secret\n\n**PLEASE NEVER EVER UPLOAD UNENCRYPTED SECRETS.**\n\nThis endpoint is only meant to store **already encrypted** secrets. The\nencrypted secrets are stored in plain text.\n\n```sh-session\n$ curl -XPOST -s https://envshare.dev/api/v1/secret -d \"already-encrypted-secret\"\n```\n\nYou can add optional headers to configure the ttl and number of reads.\n\n```sh-session\n$ curl -XPOST -s https://envshare.dev/api/v1/secret -d \"already-encrypted-secret\" -H \"envshare-ttl: 3600\" -H \"envshare-reads: 10\"\n```\n\n- Omitting the `envshare-ttl` header will set a default of 30 days. Disable the\n ttl by setting it to 0. (`envshare-ttl: 0`)\n- Omitting the `envshare-reads` header will simply disable it and allow reading\n for an unlimited number of times.\n\nThis endpoint returns a JSON response with the secret id:\n\n```json\n{\n \"data\": {\n \"id\": \"HdPbXgpvUvNk43oxSdK97u\",\n \"ttl\": 86400,\n \"reads\": 2,\n \"expiresAt\": \"2023-01-19T20:47:28.383Z\",\n \"url\": \"http://envshare.dev/api/v1/secret/HdPbXgpvUvNk43oxSdK97u\"\n }\n}\n```\n\n#### Retrieve a secret\n\nYou need an id to retrieve a secret. The id is returned when you store a secret.\n\n```sh-session\n$ curl -s https://envshare.dev/api/v1/secret/HdPbXgpvUvNk43oxSdK97u\n```\n\n```json\n{\n \"data\": {\n \"secret\": \"Hello\",\n \"remainingReads\": 1\n }\n}\n```",
|
|
"code": "var Component=(()=>{var ln=Object.create;var O=Object.defineProperty;var dn=Object.getOwnPropertyDescriptor;var un=Object.getOwnPropertyNames;var mn=Object.getPrototypeOf,bn=Object.prototype.hasOwnProperty;var X=(d,n)=>()=>(n||d((n={exports:{}}).exports,n),n.exports),hn=(d,n)=>{for(var _ in n)O(d,_,{get:n[_],enumerable:!0})},ye=(d,n,_,x)=>{if(n&&typeof n==\"object\"||typeof n==\"function\")for(let k of un(n))!bn.call(d,k)&&k!==_&&O(d,k,{get:()=>n[k],enumerable:!(x=dn(n,k))||x.enumerable});return d};var fn=(d,n,_)=>(_=d!=null?ln(mn(d)):{},ye(n||!d||!d.__esModule?O(_,\"default\",{value:d,enumerable:!0}):_,d)),_n=d=>ye(O({},\"__esModule\",{value:!0}),d);var ve=X((gn,ge)=>{ge.exports=React});var Ee=X(H=>{\"use strict\";(function(){\"use strict\";var d=ve(),n=Symbol.for(\"react.element\"),_=Symbol.for(\"react.portal\"),x=Symbol.for(\"react.fragment\"),k=Symbol.for(\"react.strict_mode\"),q=Symbol.for(\"react.profiler\"),K=Symbol.for(\"react.provider\"),z=Symbol.for(\"react.context\"),R=Symbol.for(\"react.forward_ref\"),A=Symbol.for(\"react.suspense\"),D=Symbol.for(\"react.suspense_list\"),F=Symbol.for(\"react.memo\"),L=Symbol.for(\"react.lazy\"),Fe=Symbol.for(\"react.offscreen\"),J=Symbol.iterator,Te=\"@@iterator\";function we(e){if(e===null||typeof e!=\"object\")return null;var t=J&&e[J]||e[Te];return typeof t==\"function\"?t:null}var g=d.__SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED;function b(e){{for(var t=arguments.length,a=new Array(t>1?t-1:0),o=1;o<t;o++)a[o-1]=arguments[o];Se(\"error\",e,a)}}function Se(e,t,a){{var o=g.ReactDebugCurrentFrame,c=o.getStackAddendum();c!==\"\"&&(t+=\"%s\",a=a.concat([c]));var l=a.map(function(i){return String(i)});l.unshift(\"Warning: \"+t),Function.prototype.apply.call(console[e],console,l)}}var Ce=!1,Pe=!1,Oe=!1,Ae=!1,De=!1,Z;Z=Symbol.for(\"react.module.reference\");function Le(e){return!!(typeof e==\"string\"||typeof e==\"function\"||e===x||e===q||De||e===k||e===A||e===D||Ae||e===Fe||Ce||Pe||Oe||typeof e==\"object\"&&e!==null&&(e.$$typeof===L||e.$$typeof===F||e.$$typeof===K||e.$$typeof===z||e.$$typeof===R||e.$$typeof===Z||e.getModuleId!==void 0))}function Ie(e,t,a){var o=e.displayName;if(o)return o;var c=t.displayName||t.name||\"\";return c!==\"\"?a+\"(\"+c+\")\":a}function Q(e){return e.displayName||\"Context\"}function p(e){if(e==null)return null;if(typeof e.tag==\"number\"&&b(\"Received an unexpected object in getComponentNameFromType(). This is likely a bug in React. Please file an issue.\"),typeof e==\"function\")return e.displayName||e.name||null;if(typeof e==\"string\")return e;switch(e){case x:return\"Fragment\";case _:return\"Portal\";case q:return\"Profiler\";case k:return\"StrictMode\";case A:return\"Suspense\";case D:return\"SuspenseList\"}if(typeof e==\"object\")switch(e.$$typeof){case z:var t=e;return Q(t)+\".Consumer\";case K:var a=e;return Q(a._context)+\".Provider\";case R:return Ie(e,e.render,\"ForwardRef\");case F:var o=e.displayName||null;return o!==null?o:p(e.type)||\"Memo\";case L:{var c=e,l=c._payload,i=c._init;try{return p(i(l))}catch{return null}}}return null}var y=Object.assign,j=0,ee,ne,re,te,ae,oe,se;function ie(){}ie.__reactDisabledLog=!0;function Be(){{if(j===0){ee=console.log,ne=console.info,re=console.warn,te=console.error,ae=console.group,oe=console.groupCollapsed,se=console.groupEnd;var e={configurable:!0,enumerable:!0,value:ie,writable:!0};Object.defineProperties(console,{info:e,log:e,warn:e,error:e,group:e,groupCollapsed:e,groupEnd:e})}j++}}function Ve(){{if(j--,j===0){var e={configurable:!0,enumerable:!0,writable:!0};Object.defineProperties(console,{log:y({},e,{value:ee}),info:y({},e,{value:ne}),warn:y({},e,{value:re}),error:y({},e,{value:te}),group:y({},e,{value:ae}),groupCollapsed:y({},e,{value:oe}),groupEnd:y({},e,{value:se})})}j<0&&b(\"disabledDepth fell below zero. This is a bug in React. Please file an issue.\")}}var I=g.ReactCurrentDispatcher,B;function T(e,t,a){{if(B===void 0)try{throw Error()}catch(c){var o=c.stack.trim().match(/\\n( *(at )?)/);B=o&&o[1]||\"\"}return`\n`+B+e}}var V=!1,w;{var Ye=typeof WeakMap==\"function\"?WeakMap:Map;w=new Ye}function ce(e,t){if(!e||V)return\"\";{var a=w.get(e);if(a!==void 0)return a}var o;V=!0;var c=Error.prepareStackTrace;Error.prepareStackTrace=void 0;var l;l=I.current,I.current=null,Be();try{if(t){var i=function(){throw Error()};if(Object.defineProperty(i.prototype,\"props\",{set:function(){throw Error()}}),typeof Reflect==\"object\"&&Reflect.construct){try{Reflect.construct(i,[])}catch(N){o=N}Reflect.construct(e,[],i)}else{try{i.call()}catch(N){o=N}e.call(i.prototype)}}else{try{throw Error()}catch(N){o=N}e()}}catch(N){if(N&&o&&typeof N.stack==\"string\"){for(var s=N.stack.split(`\n`),h=o.stack.split(`\n`),u=s.length-1,m=h.length-1;u>=1&&m>=0&&s[u]!==h[m];)m--;for(;u>=1&&m>=0;u--,m--)if(s[u]!==h[m]){if(u!==1||m!==1)do if(u--,m--,m<0||s[u]!==h[m]){var f=`\n`+s[u].replace(\" at new \",\" at \");return e.displayName&&f.includes(\"<anonymous>\")&&(f=f.replace(\"<anonymous>\",e.displayName)),typeof e==\"function\"&&w.set(e,f),f}while(u>=1&&m>=0);break}}}finally{V=!1,I.current=l,Ve(),Error.prepareStackTrace=c}var E=e?e.displayName||e.name:\"\",xe=E?T(E):\"\";return typeof e==\"function\"&&w.set(e,xe),xe}function $e(e,t,a){return ce(e,!1)}function Me(e){var t=e.prototype;return!!(t&&t.isReactComponent)}function S(e,t,a){if(e==null)return\"\";if(typeof e==\"function\")return ce(e,Me(e));if(typeof e==\"string\")return T(e);switch(e){case A:return T(\"Suspense\");case D:return T(\"SuspenseList\")}if(typeof e==\"object\")switch(e.$$typeof){case R:return $e(e.render);case F:return S(e.type,t,a);case L:{var o=e,c=o._payload,l=o._init;try{return S(l(c),t,a)}catch{}}}return\"\"}var C=Object.prototype.hasOwnProperty,le={},de=g.ReactDebugCurrentFrame;function P(e){if(e){var t=e._owner,a=S(e.type,e._source,t?t.type:null);de.setExtraStackFrame(a)}else de.setExtraStackFrame(null)}function We(e,t,a,o,c){{var l=Function.call.bind(C);for(var i in e)if(l(e,i)){var s=void 0;try{if(typeof e[i]!=\"function\"){var h=Error((o||\"React class\")+\": \"+a+\" type `\"+i+\"` is invalid; it must be a function, usually from the `prop-types` package, but received `\"+typeof e[i]+\"`.This often happens because of typos such as `PropTypes.function` instead of `PropTypes.func`.\");throw h.name=\"Invariant Violation\",h}s=e[i](t,i,o,a,null,\"SECRET_DO_NOT_PASS_THIS_OR_YOU_WILL_BE_FIRED\")}catch(u){s=u}s&&!(s instanceof Error)&&(P(c),b(\"%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\",a,i,typeof s),P(null)),s instanceof Error&&!(s.message in le)&&(le[s.message]=!0,P(c),b(\"Failed %s type: %s\",a,s.message),P(null))}}}var Ge=Array.isArray;function Y(e){return Ge(e)}function Xe(e){{var t=typeof Symbol==\"function\"&&Symbol.toStringTag,a=t&&e[Symbol.toStringTag]||e.constructor.name||\"Object\";return a}}function He(e){try{return ue(e),!1}catch{return!0}}function ue(e){return\"\"+e}function me(e){if(He(e))return b(\"The provided key is an unsupported type %s. This value must be coerced to a string before before using it here.\",Xe(e)),ue(e)}var U=g.ReactCurrentOwner,qe={key:!0,ref:!0,__self:!0,__source:!0},be,he,$;$={};function Ke(e){if(C.call(e,\"ref\")){var t=Object.getOwnPropertyDescriptor(e,\"ref\").get;if(t&&t.isReactWarning)return!1}return e.ref!==void 0}function ze(e){if(C.call(e,\"key\")){var t=Object.getOwnPropertyDescriptor(e,\"key\").get;if(t&&t.isReactWarning)return!1}return e.key!==void 0}function Je(e,t){if(typeof e.ref==\"string\"&&U.current&&t&&U.current.stateNode!==t){var a=p(U.current.type);$[a]||(b('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(U.current.type),e.ref),$[a]=!0)}}function Ze(e,t){{var a=function(){be||(be=!0,b(\"%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)\",t))};a.isReactWarning=!0,Object.defineProperty(e,\"key\",{get:a,configurable:!0})}}function Qe(e,t){{var a=function(){he||(he=!0,b(\"%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)\",t))};a.isReactWarning=!0,Object.defineProperty(e,\"ref\",{get:a,configurable:!0})}}var en=function(e,t,a,o,c,l,i){var s={$$typeof:n,type:e,key:t,ref:a,props:i,_owner:l};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(e,t,a,o,c){{var l,i={},s=null,h=null;a!==void 0&&(me(a),s=\"\"+a),ze(t)&&(me(t.key),s=\"\"+t.key),Ke(t)&&(h=t.ref,Je(t,c));for(l in t)C.call(t,l)&&!qe.hasOwnProperty(l)&&(i[l]=t[l]);if(e&&e.defaultProps){var u=e.defaultProps;for(l in u)i[l]===void 0&&(i[l]=u[l])}if(s||h){var m=typeof e==\"function\"?e.displayName||e.name||\"Unknown\":e;s&&Ze(i,m),h&&Qe(i,m)}return en(e,s,h,c,o,U.current,i)}}var M=g.ReactCurrentOwner,fe=g.ReactDebugCurrentFrame;function v(e){if(e){var t=e._owner,a=S(e.type,e._source,t?t.type:null);fe.setExtraStackFrame(a)}else fe.setExtraStackFrame(null)}var W;W=!1;function G(e){return typeof e==\"object\"&&e!==null&&e.$$typeof===n}function _e(){{if(M.current){var e=p(M.current.type);if(e)return`\n\nCheck the render method of \\``+e+\"`.\"}return\"\"}}function rn(e){{if(e!==void 0){var t=e.fileName.replace(/^.*[\\\\\\/]/,\"\"),a=e.lineNumber;return`\n\nCheck your code at `+t+\":\"+a+\".\"}return\"\"}}var pe={};function tn(e){{var t=_e();if(!t){var a=typeof e==\"string\"?e:e.displayName||e.name;a&&(t=`\n\nCheck the top-level render call using <`+a+\">.\")}return t}}function Ne(e,t){{if(!e._store||e._store.validated||e.key!=null)return;e._store.validated=!0;var a=tn(t);if(pe[a])return;pe[a]=!0;var o=\"\";e&&e._owner&&e._owner!==M.current&&(o=\" It was passed a child from \"+p(e._owner.type)+\".\"),v(e),b('Each child in a list should have a unique \"key\" prop.%s%s See https://reactjs.org/link/warning-keys for more information.',a,o),v(null)}}function ke(e,t){{if(typeof e!=\"object\")return;if(Y(e))for(var a=0;a<e.length;a++){var o=e[a];G(o)&&Ne(o,t)}else if(G(e))e._store&&(e._store.validated=!0);else if(e){var c=we(e);if(typeof c==\"function\"&&c!==e.entries)for(var l=c.call(e),i;!(i=l.next()).done;)G(i.value)&&Ne(i.value,t)}}}function an(e){{var t=e.type;if(t==null||typeof t==\"string\")return;var a;if(typeof t==\"function\")a=t.propTypes;else if(typeof t==\"object\"&&(t.$$typeof===R||t.$$typeof===F))a=t.propTypes;else return;if(a){var o=p(t);We(a,e.props,\"prop\",o,e)}else if(t.PropTypes!==void 0&&!W){W=!0;var c=p(t);b(\"Component %s declared `PropTypes` instead of `propTypes`. Did you misspell the property assignment?\",c||\"Unknown\")}typeof t.getDefaultProps==\"function\"&&!t.getDefaultProps.isReactClassApproved&&b(\"getDefaultProps is only used on classic React.createClass definitions. Use a static property named `defaultProps` instead.\")}}function on(e){{for(var t=Object.keys(e.props),a=0;a<t.length;a++){var o=t[a];if(o!==\"children\"&&o!==\"key\"){v(e),b(\"Invalid prop `%s` supplied to `React.Fragment`. React.Fragment can only have `key` and `children` props.\",o),v(null);break}}e.ref!==null&&(v(e),b(\"Invalid attribute `ref` supplied to `React.Fragment`.\"),v(null))}}function sn(e,t,a,o,c,l){{var i=Le(e);if(!i){var s=\"\";(e===void 0||typeof e==\"object\"&&e!==null&&Object.keys(e).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 h=rn(c);h?s+=h:s+=_e();var u;e===null?u=\"null\":Y(e)?u=\"array\":e!==void 0&&e.$$typeof===n?(u=\"<\"+(p(e.type)||\"Unknown\")+\" />\",s=\" Did you accidentally export a JSX literal instead of a component?\"):u=typeof e,b(\"React.jsx: type is invalid -- expected a string (for built-in components) or a class/function (for composite components) but got: %s.%s\",u,s)}var m=nn(e,t,a,c,l);if(m==null)return m;if(i){var f=t.children;if(f!==void 0)if(o)if(Y(f)){for(var E=0;E<f.length;E++)ke(f[E],e);Object.freeze&&Object.freeze(f)}else b(\"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 ke(f,e)}return e===x?on(m):an(m),m}}var cn=sn;H.Fragment=x,H.jsxDEV=cn})()});var Ue=X((En,je)=>{\"use strict\";je.exports=Ee()});var xn={};hn(xn,{default:()=>kn,frontmatter:()=>pn});var r=fn(Ue()),pn={title:\"envshare.dev\",description:\"EnvShare is a simple tool to share environment variables securely. It uses AES-GCM to encrypt your data before sending it to the server. The encryption key never leaves your browser.\",date:\"2023-01-16\",url:\"https://envshare.dev\",repository:\"chronark/envshare\",published:!0};function Re(d){let n=Object.assign({p:\"p\",strong:\"strong\",h2:\"h2\",a:\"a\",span:\"span\",ul:\"ul\",li:\"li\",img:\"img\",h3:\"h3\",code:\"code\",h4:\"h4\",div:\"div\",pre:\"pre\"},d.components);return(0,r.jsxDEV)(r.Fragment,{children:[(0,r.jsxDEV)(n.p,{children:[`EnvShare is a simple tool to share environment variables securely. It uses\n`,(0,r.jsxDEV)(n.strong,{children:\"AES-GCM\"},void 0,!1,{fileName:\"/Users/andreasthomas/github/chronark/chronark.com/content/projects/_mdx_bundler_entry_point-9f80b318-b24e-4507-94a3-cb5b48624568.mdx\",lineNumber:11,columnNumber:1},this),` to encrypt your data before sending it to the server. The encryption\nkey never leaves your browser.`]},void 0,!0,{fileName:\"/Users/andreasthomas/github/chronark/chronark.com/content/projects/_mdx_bundler_entry_point-9f80b318-b24e-4507-94a3-cb5b48624568.mdx\",lineNumber:10,columnNumber:1},this),`\n`,(0,r.jsxDEV)(n.h2,{id:\"features\",children:[(0,r.jsxDEV)(n.a,{className:\"subheading-anchor\",\"aria-label\":\"Link to section\",href:\"#features\",children:(0,r.jsxDEV)(n.span,{className:\"icon icon-link\"},void 0,!1,{fileName:\"/Users/andreasthomas/github/chronark/chronark.com/content/projects/_mdx_bundler_entry_point-9f80b318-b24e-4507-94a3-cb5b48624568.mdx\"},this)},void 0,!1,{fileName:\"/Users/andreasthomas/github/chronark/chronark.com/content/projects/_mdx_bundler_entry_point-9f80b318-b24e-4507-94a3-cb5b48624568.mdx\"},this),\"Features\"]},void 0,!0,{fileName:\"/Users/andreasthomas/github/chronark/chronark.com/content/projects/_mdx_bundler_entry_point-9f80b318-b24e-4507-94a3-cb5b48624568.mdx\",lineNumber:14,columnNumber:1},this),`\n`,(0,r.jsxDEV)(n.ul,{children:[`\n`,(0,r.jsxDEV)(n.li,{children:[(0,r.jsxDEV)(n.strong,{children:\"Shareable Links:\"},void 0,!1,{fileName:\"/Users/andreasthomas/github/chronark/chronark.com/content/projects/_mdx_bundler_entry_point-9f80b318-b24e-4507-94a3-cb5b48624568.mdx\",lineNumber:16,columnNumber:3},this),` Share your environment variables securely by sending a\nlink`]},void 0,!0,{fileName:\"/Users/andreasthomas/github/chronark/chronark.com/content/projects/_mdx_bundler_entry_point-9f80b318-b24e-4507-94a3-cb5b48624568.mdx\",lineNumber:16,columnNumber:1},this),`\n`,(0,r.jsxDEV)(n.li,{children:[(0,r.jsxDEV)(n.strong,{children:\"End-to-End Encryption:\"},void 0,!1,{fileName:\"/Users/andreasthomas/github/chronark/chronark.com/content/projects/_mdx_bundler_entry_point-9f80b318-b24e-4507-94a3-cb5b48624568.mdx\",lineNumber:18,columnNumber:3},this),` AES-GCM encryption is used to encrypt your data\nbefore sending it to the server`]},void 0,!0,{fileName:\"/Users/andreasthomas/github/chronark/chronark.com/content/projects/_mdx_bundler_entry_point-9f80b318-b24e-4507-94a3-cb5b48624568.mdx\",lineNumber:18,columnNumber:1},this),`\n`,(0,r.jsxDEV)(n.li,{children:[(0,r.jsxDEV)(n.strong,{children:\"Limit number of reads:\"},void 0,!1,{fileName:\"/Users/andreasthomas/github/chronark/chronark.com/content/projects/_mdx_bundler_entry_point-9f80b318-b24e-4507-94a3-cb5b48624568.mdx\",lineNumber:20,columnNumber:3},this),\" Limit the number of times a link can be read\"]},void 0,!0,{fileName:\"/Users/andreasthomas/github/chronark/chronark.com/content/projects/_mdx_bundler_entry_point-9f80b318-b24e-4507-94a3-cb5b48624568.mdx\",lineNumber:20,columnNumber:1},this),`\n`,(0,r.jsxDEV)(n.li,{children:[(0,r.jsxDEV)(n.strong,{children:\"Auto Expire:\"},void 0,!1,{fileName:\"/Users/andreasthomas/github/chronark/chronark.com/content/projects/_mdx_bundler_entry_point-9f80b318-b24e-4507-94a3-cb5b48624568.mdx\",lineNumber:21,columnNumber:3},this),` Automatically expire links and delete data after a certain\ntime`]},void 0,!0,{fileName:\"/Users/andreasthomas/github/chronark/chronark.com/content/projects/_mdx_bundler_entry_point-9f80b318-b24e-4507-94a3-cb5b48624568.mdx\",lineNumber:21,columnNumber:1},this),`\n`]},void 0,!0,{fileName:\"/Users/andreasthomas/github/chronark/chronark.com/content/projects/_mdx_bundler_entry_point-9f80b318-b24e-4507-94a3-cb5b48624568.mdx\",lineNumber:16,columnNumber:1},this),`\n`,(0,r.jsxDEV)(n.p,{children:(0,r.jsxDEV)(n.img,{src:\"https://github.com/chronark/envshare/raw/main/img/envshare.png\",alt:\"\"},void 0,!1,{fileName:\"/Users/andreasthomas/github/chronark/chronark.com/content/projects/_mdx_bundler_entry_point-9f80b318-b24e-4507-94a3-cb5b48624568.mdx\",lineNumber:26,columnNumber:1},this)},void 0,!1,{fileName:\"/Users/andreasthomas/github/chronark/chronark.com/content/projects/_mdx_bundler_entry_point-9f80b318-b24e-4507-94a3-cb5b48624568.mdx\",lineNumber:26,columnNumber:1},this),`\n`,(0,r.jsxDEV)(n.h2,{id:\"built-with\",children:[(0,r.jsxDEV)(n.a,{className:\"subheading-anchor\",\"aria-label\":\"Link to section\",href:\"#built-with\",children:(0,r.jsxDEV)(n.span,{className:\"icon icon-link\"},void 0,!1,{fileName:\"/Users/andreasthomas/github/chronark/chronark.com/content/projects/_mdx_bundler_entry_point-9f80b318-b24e-4507-94a3-cb5b48624568.mdx\"},this)},void 0,!1,{fileName:\"/Users/andreasthomas/github/chronark/chronark.com/content/projects/_mdx_bundler_entry_point-9f80b318-b24e-4507-94a3-cb5b48624568.mdx\"},this),\"Built with\"]},void 0,!0,{fileName:\"/Users/andreasthomas/github/chronark/chronark.com/content/projects/_mdx_bundler_entry_point-9f80b318-b24e-4507-94a3-cb5b48624568.mdx\",lineNumber:28,columnNumber:1},this),`\n`,(0,r.jsxDEV)(n.ul,{children:[`\n`,(0,r.jsxDEV)(n.li,{children:(0,r.jsxDEV)(n.a,{href:\"https://nextjs.org\",children:\"Next.js\"},void 0,!1,{fileName:\"/Users/andreasthomas/github/chronark/chronark.com/content/projects/_mdx_bundler_entry_point-9f80b318-b24e-4507-94a3-cb5b48624568.mdx\",lineNumber:30,columnNumber:3},this)},void 0,!1,{fileName:\"/Users/andreasthomas/github/chronark/chronark.com/content/projects/_mdx_bundler_entry_point-9f80b318-b24e-4507-94a3-cb5b48624568.mdx\",lineNumber:30,columnNumber:1},this),`\n`,(0,r.jsxDEV)(n.li,{children:(0,r.jsxDEV)(n.a,{href:\"https://tailwindcss.com\",children:\"tailwindcss\"},void 0,!1,{fileName:\"/Users/andreasthomas/github/chronark/chronark.com/content/projects/_mdx_bundler_entry_point-9f80b318-b24e-4507-94a3-cb5b48624568.mdx\",lineNumber:31,columnNumber:3},this)},void 0,!1,{fileName:\"/Users/andreasthomas/github/chronark/chronark.com/content/projects/_mdx_bundler_entry_point-9f80b318-b24e-4507-94a3-cb5b48624568.mdx\",lineNumber:31,columnNumber:1},this),`\n`,(0,r.jsxDEV)(n.li,{children:[\"Deployed on \",(0,r.jsxDEV)(n.a,{href:\"https://vercel.com?utm_source=envshare\",children:\"Vercel\"},void 0,!1,{fileName:\"/Users/andreasthomas/github/chronark/chronark.com/content/projects/_mdx_bundler_entry_point-9f80b318-b24e-4507-94a3-cb5b48624568.mdx\",lineNumber:32,columnNumber:15},this)]},void 0,!0,{fileName:\"/Users/andreasthomas/github/chronark/chronark.com/content/projects/_mdx_bundler_entry_point-9f80b318-b24e-4507-94a3-cb5b48624568.mdx\",lineNumber:32,columnNumber:1},this),`\n`,(0,r.jsxDEV)(n.li,{children:[\"Data stored on \",(0,r.jsxDEV)(n.a,{href:\"https://upstash.com?utm_source=envshare\",children:\"Upstash\"},void 0,!1,{fileName:\"/Users/andreasthomas/github/chronark/chronark.com/content/projects/_mdx_bundler_entry_point-9f80b318-b24e-4507-94a3-cb5b48624568.mdx\",lineNumber:33,columnNumber:18},this)]},void 0,!0,{fileName:\"/Users/andreasthomas/github/chronark/chronark.com/content/projects/_mdx_bundler_entry_point-9f80b318-b24e-4507-94a3-cb5b48624568.mdx\",lineNumber:33,columnNumber:1},this),`\n`]},void 0,!0,{fileName:\"/Users/andreasthomas/github/chronark/chronark.com/content/projects/_mdx_bundler_entry_point-9f80b318-b24e-4507-94a3-cb5b48624568.mdx\",lineNumber:30,columnNumber:1},this),`\n`,(0,r.jsxDEV)(n.h2,{id:\"deploy-your-own\",children:[(0,r.jsxDEV)(n.a,{className:\"subheading-anchor\",\"aria-label\":\"Link to section\",href:\"#deploy-your-own\",children:(0,r.jsxDEV)(n.span,{className:\"icon icon-link\"},void 0,!1,{fileName:\"/Users/andreasthomas/github/chronark/chronark.com/content/projects/_mdx_bundler_entry_point-9f80b318-b24e-4507-94a3-cb5b48624568.mdx\"},this)},void 0,!1,{fileName:\"/Users/andreasthomas/github/chronark/chronark.com/content/projects/_mdx_bundler_entry_point-9f80b318-b24e-4507-94a3-cb5b48624568.mdx\"},this),\"Deploy your own\"]},void 0,!0,{fileName:\"/Users/andreasthomas/github/chronark/chronark.com/content/projects/_mdx_bundler_entry_point-9f80b318-b24e-4507-94a3-cb5b48624568.mdx\",lineNumber:35,columnNumber:1},this),`\n`,(0,r.jsxDEV)(n.p,{children:[\"Detailed instructions can be found \",(0,r.jsxDEV)(n.a,{href:\"https://envshare.dev/deploy\",children:\"here\"},void 0,!1,{fileName:\"/Users/andreasthomas/github/chronark/chronark.com/content/projects/_mdx_bundler_entry_point-9f80b318-b24e-4507-94a3-cb5b48624568.mdx\",lineNumber:37,columnNumber:36},this)]},void 0,!0,{fileName:\"/Users/andreasthomas/github/chronark/chronark.com/content/projects/_mdx_bundler_entry_point-9f80b318-b24e-4507-94a3-cb5b48624568.mdx\",lineNumber:37,columnNumber:1},this),`\n`,(0,r.jsxDEV)(n.p,{children:`All you need is a Redis database on Upstash and a Vercel account. Click the\nbutton below to clone and deploy:`},void 0,!1,{fileName:\"/Users/andreasthomas/github/chronark/chronark.com/content/projects/_mdx_bundler_entry_point-9f80b318-b24e-4507-94a3-cb5b48624568.mdx\",lineNumber:39,columnNumber:1},this),`\n`,(0,r.jsxDEV)(n.p,{children:(0,r.jsxDEV)(n.a,{href:\"https://vercel.com/new/clone?demo-title=EnvShare&demo-description=Simple%20Next.js%20%2B%20Upstash%20app%20to%20share%20environment%20variables%20securely%20using%20AES-GCM%20encryption.&demo-url=https%3A%2F%2Fenvshare.dev%2F&demo-image=%2F%2Fimages.ctfassets.net%2Fe5382hct74si%2F5SaFBHXp5FBFJbsTzVqIJ3%2Ff0f8382369b7642fd8103debb9025c11%2Fenvshare.png&project-name=EnvShare&repository-name=envshare&repository-url=https%3A%2F%2Fgithub.com%2Fchronark%2Fenvshare&from=templates&integration-ids=oac_V3R1GIpkoJorr6fqyiwdhl17\",children:(0,r.jsxDEV)(n.img,{src:\"https://vercel.com/button\",alt:\"Deploy with Vercel\"},void 0,!1,{fileName:\"/Users/andreasthomas/github/chronark/chronark.com/content/projects/_mdx_bundler_entry_point-9f80b318-b24e-4507-94a3-cb5b48624568.mdx\",lineNumber:42,columnNumber:2},this)},void 0,!1,{fileName:\"/Users/andreasthomas/github/chronark/chronark.com/content/projects/_mdx_bundler_entry_point-9f80b318-b24e-4507-94a3-cb5b48624568.mdx\",lineNumber:42,columnNumber:1},this)},void 0,!1,{fileName:\"/Users/andreasthomas/github/chronark/chronark.com/content/projects/_mdx_bundler_entry_point-9f80b318-b24e-4507-94a3-cb5b48624568.mdx\",lineNumber:42,columnNumber:1},this),`\n`,(0,r.jsxDEV)(n.h2,{id:\"configuration\",children:[(0,r.jsxDEV)(n.a,{className:\"subheading-anchor\",\"aria-label\":\"Link to section\",href:\"#configuration\",children:(0,r.jsxDEV)(n.span,{className:\"icon icon-link\"},void 0,!1,{fileName:\"/Users/andreasthomas/github/chronark/chronark.com/content/projects/_mdx_bundler_entry_point-9f80b318-b24e-4507-94a3-cb5b48624568.mdx\"},this)},void 0,!1,{fileName:\"/Users/andreasthomas/github/chronark/chronark.com/content/projects/_mdx_bundler_entry_point-9f80b318-b24e-4507-94a3-cb5b48624568.mdx\"},this),\"Configuration\"]},void 0,!0,{fileName:\"/Users/andreasthomas/github/chronark/chronark.com/content/projects/_mdx_bundler_entry_point-9f80b318-b24e-4507-94a3-cb5b48624568.mdx\",lineNumber:46,columnNumber:1},this),`\n`,(0,r.jsxDEV)(n.h3,{id:\"environment-variables\",children:[(0,r.jsxDEV)(n.a,{className:\"subheading-anchor\",\"aria-label\":\"Link to section\",href:\"#environment-variables\",children:(0,r.jsxDEV)(n.span,{className:\"icon icon-link\"},void 0,!1,{fileName:\"/Users/andreasthomas/github/chronark/chronark.com/content/projects/_mdx_bundler_entry_point-9f80b318-b24e-4507-94a3-cb5b48624568.mdx\"},this)},void 0,!1,{fileName:\"/Users/andreasthomas/github/chronark/chronark.com/content/projects/_mdx_bundler_entry_point-9f80b318-b24e-4507-94a3-cb5b48624568.mdx\"},this),\"Environment Variables\"]},void 0,!0,{fileName:\"/Users/andreasthomas/github/chronark/chronark.com/content/projects/_mdx_bundler_entry_point-9f80b318-b24e-4507-94a3-cb5b48624568.mdx\",lineNumber:48,columnNumber:1},this),`\n`,(0,r.jsxDEV)(n.p,{children:[(0,r.jsxDEV)(n.code,{children:\"ENABLE_VERCEL_ANALYTICS\"},void 0,!1,{fileName:\"/Users/andreasthomas/github/chronark/chronark.com/content/projects/_mdx_bundler_entry_point-9f80b318-b24e-4507-94a3-cb5b48624568.mdx\",lineNumber:50,columnNumber:1},this),\" Any truthy value will enable Vercel Analytics. This is turned off by default\"]},void 0,!0,{fileName:\"/Users/andreasthomas/github/chronark/chronark.com/content/projects/_mdx_bundler_entry_point-9f80b318-b24e-4507-94a3-cb5b48624568.mdx\",lineNumber:50,columnNumber:1},this),`\n`,(0,r.jsxDEV)(n.h2,{id:\"contributing\",children:[(0,r.jsxDEV)(n.a,{className:\"subheading-anchor\",\"aria-label\":\"Link to section\",href:\"#contributing\",children:(0,r.jsxDEV)(n.span,{className:\"icon icon-link\"},void 0,!1,{fileName:\"/Users/andreasthomas/github/chronark/chronark.com/content/projects/_mdx_bundler_entry_point-9f80b318-b24e-4507-94a3-cb5b48624568.mdx\"},this)},void 0,!1,{fileName:\"/Users/andreasthomas/github/chronark/chronark.com/content/projects/_mdx_bundler_entry_point-9f80b318-b24e-4507-94a3-cb5b48624568.mdx\"},this),\"Contributing\"]},void 0,!0,{fileName:\"/Users/andreasthomas/github/chronark/chronark.com/content/projects/_mdx_bundler_entry_point-9f80b318-b24e-4507-94a3-cb5b48624568.mdx\",lineNumber:52,columnNumber:1},this),`\n`,(0,r.jsxDEV)(n.p,{children:[\"This repository uses \",(0,r.jsxDEV)(n.code,{children:\"pnpm\"},void 0,!1,{fileName:\"/Users/andreasthomas/github/chronark/chronark.com/content/projects/_mdx_bundler_entry_point-9f80b318-b24e-4507-94a3-cb5b48624568.mdx\",lineNumber:54,columnNumber:22},this),` to manage dependencies. Install it using\n`,(0,r.jsxDEV)(n.code,{children:\"npm install -g pnpm\"},void 0,!1,{fileName:\"/Users/andreasthomas/github/chronark/chronark.com/content/projects/_mdx_bundler_entry_point-9f80b318-b24e-4507-94a3-cb5b48624568.mdx\",lineNumber:55,columnNumber:1},this)]},void 0,!0,{fileName:\"/Users/andreasthomas/github/chronark/chronark.com/content/projects/_mdx_bundler_entry_point-9f80b318-b24e-4507-94a3-cb5b48624568.mdx\",lineNumber:54,columnNumber:1},this),`\n`,(0,r.jsxDEV)(n.p,{children:[\"Please run \",(0,r.jsxDEV)(n.code,{children:\"pnpm fmt\"},void 0,!1,{fileName:\"/Users/andreasthomas/github/chronark/chronark.com/content/projects/_mdx_bundler_entry_point-9f80b318-b24e-4507-94a3-cb5b48624568.mdx\",lineNumber:57,columnNumber:12},this),\" before committing to format the code.\"]},void 0,!0,{fileName:\"/Users/andreasthomas/github/chronark/chronark.com/content/projects/_mdx_bundler_entry_point-9f80b318-b24e-4507-94a3-cb5b48624568.mdx\",lineNumber:57,columnNumber:1},this),`\n`,(0,r.jsxDEV)(n.h2,{id:\"docs\",children:[(0,r.jsxDEV)(n.a,{className:\"subheading-anchor\",\"aria-label\":\"Link to section\",href:\"#docs\",children:(0,r.jsxDEV)(n.span,{className:\"icon icon-link\"},void 0,!1,{fileName:\"/Users/andreasthomas/github/chronark/chronark.com/content/projects/_mdx_bundler_entry_point-9f80b318-b24e-4507-94a3-cb5b48624568.mdx\"},this)},void 0,!1,{fileName:\"/Users/andreasthomas/github/chronark/chronark.com/content/projects/_mdx_bundler_entry_point-9f80b318-b24e-4507-94a3-cb5b48624568.mdx\"},this),\"Docs\"]},void 0,!0,{fileName:\"/Users/andreasthomas/github/chronark/chronark.com/content/projects/_mdx_bundler_entry_point-9f80b318-b24e-4507-94a3-cb5b48624568.mdx\",lineNumber:59,columnNumber:1},this),`\n`,(0,r.jsxDEV)(n.p,{children:\"Docs in the README are temporary and will be moved to the website soon.\"},void 0,!1,{fileName:\"/Users/andreasthomas/github/chronark/chronark.com/content/projects/_mdx_bundler_entry_point-9f80b318-b24e-4507-94a3-cb5b48624568.mdx\",lineNumber:61,columnNumber:1},this),`\n`,(0,r.jsxDEV)(n.h3,{id:\"api\",children:[(0,r.jsxDEV)(n.a,{className:\"subheading-anchor\",\"aria-label\":\"Link to section\",href:\"#api\",children:(0,r.jsxDEV)(n.span,{className:\"icon icon-link\"},void 0,!1,{fileName:\"/Users/andreasthomas/github/chronark/chronark.com/content/projects/_mdx_bundler_entry_point-9f80b318-b24e-4507-94a3-cb5b48624568.mdx\"},this)},void 0,!1,{fileName:\"/Users/andreasthomas/github/chronark/chronark.com/content/projects/_mdx_bundler_entry_point-9f80b318-b24e-4507-94a3-cb5b48624568.mdx\"},this),\"API\"]},void 0,!0,{fileName:\"/Users/andreasthomas/github/chronark/chronark.com/content/projects/_mdx_bundler_entry_point-9f80b318-b24e-4507-94a3-cb5b48624568.mdx\",lineNumber:63,columnNumber:1},this),`\n`,(0,r.jsxDEV)(n.h4,{id:\"store-a-secret\",children:[(0,r.jsxDEV)(n.a,{className:\"subheading-anchor\",\"aria-label\":\"Link to section\",href:\"#store-a-secret\",children:(0,r.jsxDEV)(n.span,{className:\"icon icon-link\"},void 0,!1,{fileName:\"/Users/andreasthomas/github/chronark/chronark.com/content/projects/_mdx_bundler_entry_point-9f80b318-b24e-4507-94a3-cb5b48624568.mdx\"},this)},void 0,!1,{fileName:\"/Users/andreasthomas/github/chronark/chronark.com/content/projects/_mdx_bundler_entry_point-9f80b318-b24e-4507-94a3-cb5b48624568.mdx\"},this),\"Store a secret\"]},void 0,!0,{fileName:\"/Users/andreasthomas/github/chronark/chronark.com/content/projects/_mdx_bundler_entry_point-9f80b318-b24e-4507-94a3-cb5b48624568.mdx\",lineNumber:65,columnNumber:1},this),`\n`,(0,r.jsxDEV)(n.p,{children:(0,r.jsxDEV)(n.strong,{children:\"PLEASE NEVER EVER UPLOAD UNENCRYPTED SECRETS.\"},void 0,!1,{fileName:\"/Users/andreasthomas/github/chronark/chronark.com/content/projects/_mdx_bundler_entry_point-9f80b318-b24e-4507-94a3-cb5b48624568.mdx\",lineNumber:67,columnNumber:1},this)},void 0,!1,{fileName:\"/Users/andreasthomas/github/chronark/chronark.com/content/projects/_mdx_bundler_entry_point-9f80b318-b24e-4507-94a3-cb5b48624568.mdx\",lineNumber:67,columnNumber:1},this),`\n`,(0,r.jsxDEV)(n.p,{children:[\"This endpoint is only meant to store \",(0,r.jsxDEV)(n.strong,{children:\"already encrypted\"},void 0,!1,{fileName:\"/Users/andreasthomas/github/chronark/chronark.com/content/projects/_mdx_bundler_entry_point-9f80b318-b24e-4507-94a3-cb5b48624568.mdx\",lineNumber:69,columnNumber:38},this),` secrets. The\nencrypted secrets are stored in plain text.`]},void 0,!0,{fileName:\"/Users/andreasthomas/github/chronark/chronark.com/content/projects/_mdx_bundler_entry_point-9f80b318-b24e-4507-94a3-cb5b48624568.mdx\",lineNumber:69,columnNumber:1},this),`\n`,(0,r.jsxDEV)(n.div,{\"data-rehype-pretty-code-fragment\":\"\",children:(0,r.jsxDEV)(n.pre,{\"data-language\":\"sh-session\",\"data-theme\":\"default\",children:(0,r.jsxDEV)(n.code,{\"data-language\":\"sh-session\",\"data-theme\":\"default\",children:(0,r.jsxDEV)(n.span,{className:\"line\",children:(0,r.jsxDEV)(n.span,{style:{color:\"#e1e4e8\"},children:'$ curl -XPOST -s https://envshare.dev/api/v1/secret -d \"already-encrypted-secret\"'},void 0,!1,{fileName:\"/Users/andreasthomas/github/chronark/chronark.com/content/projects/_mdx_bundler_entry_point-9f80b318-b24e-4507-94a3-cb5b48624568.mdx\",lineNumber:1,columnNumber:104},this)},void 0,!1,{fileName:\"/Users/andreasthomas/github/chronark/chronark.com/content/projects/_mdx_bundler_entry_point-9f80b318-b24e-4507-94a3-cb5b48624568.mdx\",lineNumber:1,columnNumber:85},this)},void 0,!1,{fileName:\"/Users/andreasthomas/github/chronark/chronark.com/content/projects/_mdx_bundler_entry_point-9f80b318-b24e-4507-94a3-cb5b48624568.mdx\",lineNumber:1,columnNumber:79},this)},void 0,!1,{fileName:\"/Users/andreasthomas/github/chronark/chronark.com/content/projects/_mdx_bundler_entry_point-9f80b318-b24e-4507-94a3-cb5b48624568.mdx\",lineNumber:1,columnNumber:1},this)},void 0,!1,{fileName:\"/Users/andreasthomas/github/chronark/chronark.com/content/projects/_mdx_bundler_entry_point-9f80b318-b24e-4507-94a3-cb5b48624568.mdx\",lineNumber:72,columnNumber:1},this),`\n`,(0,r.jsxDEV)(n.p,{children:\"You can add optional headers to configure the ttl and number of reads.\"},void 0,!1,{fileName:\"/Users/andreasthomas/github/chronark/chronark.com/content/projects/_mdx_bundler_entry_point-9f80b318-b24e-4507-94a3-cb5b48624568.mdx\",lineNumber:76,columnNumber:1},this),`\n`,(0,r.jsxDEV)(n.div,{\"data-rehype-pretty-code-fragment\":\"\",children:(0,r.jsxDEV)(n.pre,{\"data-language\":\"sh-session\",\"data-theme\":\"default\",children:(0,r.jsxDEV)(n.code,{\"data-language\":\"sh-session\",\"data-theme\":\"default\",children:(0,r.jsxDEV)(n.span,{className:\"line\",children:(0,r.jsxDEV)(n.span,{style:{color:\"#e1e4e8\"},children:'$ curl -XPOST -s https://envshare.dev/api/v1/secret -d \"already-encrypted-secret\" -H \"envshare-ttl: 3600\" -H \"envshare-reads: 10\"'},void 0,!1,{fileName:\"/Users/andreasthomas/github/chronark/chronark.com/content/projects/_mdx_bundler_entry_point-9f80b318-b24e-4507-94a3-cb5b48624568.mdx\",lineNumber:1,columnNumber:104},this)},void 0,!1,{fileName:\"/Users/andreasthomas/github/chronark/chronark.com/content/projects/_mdx_bundler_entry_point-9f80b318-b24e-4507-94a3-cb5b48624568.mdx\",lineNumber:1,columnNumber:85},this)},void 0,!1,{fileName:\"/Users/andreasthomas/github/chronark/chronark.com/content/projects/_mdx_bundler_entry_point-9f80b318-b24e-4507-94a3-cb5b48624568.mdx\",lineNumber:1,columnNumber:79},this)},void 0,!1,{fileName:\"/Users/andreasthomas/github/chronark/chronark.com/content/projects/_mdx_bundler_entry_point-9f80b318-b24e-4507-94a3-cb5b48624568.mdx\",lineNumber:1,columnNumber:1},this)},void 0,!1,{fileName:\"/Users/andreasthomas/github/chronark/chronark.com/content/projects/_mdx_bundler_entry_point-9f80b318-b24e-4507-94a3-cb5b48624568.mdx\",lineNumber:78,columnNumber:1},this),`\n`,(0,r.jsxDEV)(n.ul,{children:[`\n`,(0,r.jsxDEV)(n.li,{children:[\"Omitting the \",(0,r.jsxDEV)(n.code,{children:\"envshare-ttl\"},void 0,!1,{fileName:\"/Users/andreasthomas/github/chronark/chronark.com/content/projects/_mdx_bundler_entry_point-9f80b318-b24e-4507-94a3-cb5b48624568.mdx\",lineNumber:82,columnNumber:16},this),` header will set a default of 30 days. Disable the\nttl by setting it to 0. (`,(0,r.jsxDEV)(n.code,{children:\"envshare-ttl: 0\"},void 0,!1,{fileName:\"/Users/andreasthomas/github/chronark/chronark.com/content/projects/_mdx_bundler_entry_point-9f80b318-b24e-4507-94a3-cb5b48624568.mdx\",lineNumber:83,columnNumber:28},this),\")\"]},void 0,!0,{fileName:\"/Users/andreasthomas/github/chronark/chronark.com/content/projects/_mdx_bundler_entry_point-9f80b318-b24e-4507-94a3-cb5b48624568.mdx\",lineNumber:82,columnNumber:1},this),`\n`,(0,r.jsxDEV)(n.li,{children:[\"Omitting the \",(0,r.jsxDEV)(n.code,{children:\"envshare-reads\"},void 0,!1,{fileName:\"/Users/andreasthomas/github/chronark/chronark.com/content/projects/_mdx_bundler_entry_point-9f80b318-b24e-4507-94a3-cb5b48624568.mdx\",lineNumber:84,columnNumber:16},this),` header will simply disable it and allow reading\nfor an unlimited number of times.`]},void 0,!0,{fileName:\"/Users/andreasthomas/github/chronark/chronark.com/content/projects/_mdx_bundler_entry_point-9f80b318-b24e-4507-94a3-cb5b48624568.mdx\",lineNumber:84,columnNumber:1},this),`\n`]},void 0,!0,{fileName:\"/Users/andreasthomas/github/chronark/chronark.com/content/projects/_mdx_bundler_entry_point-9f80b318-b24e-4507-94a3-cb5b48624568.mdx\",lineNumber:82,columnNumber:1},this),`\n`,(0,r.jsxDEV)(n.p,{children:\"This endpoint returns a JSON response with the secret id:\"},void 0,!1,{fileName:\"/Users/andreasthomas/github/chronark/chronark.com/content/projects/_mdx_bundler_entry_point-9f80b318-b24e-4507-94a3-cb5b48624568.mdx\",lineNumber:87,columnNumber:1},this),`\n`,(0,r.jsxDEV)(n.div,{\"data-rehype-pretty-code-fragment\":\"\",children:(0,r.jsxDEV)(n.pre,{\"data-language\":\"json\",\"data-theme\":\"default\",children:(0,r.jsxDEV)(n.code,{\"data-language\":\"json\",\"data-theme\":\"default\",children:[(0,r.jsxDEV)(n.span,{className:\"line\",children:(0,r.jsxDEV)(n.span,{style:{color:\"#E1E4E8\"},children:\"{\"},void 0,!1,{fileName:\"/Users/andreasthomas/github/chronark/chronark.com/content/projects/_mdx_bundler_entry_point-9f80b318-b24e-4507-94a3-cb5b48624568.mdx\",lineNumber:1,columnNumber:104},this)},void 0,!1,{fileName:\"/Users/andreasthomas/github/chronark/chronark.com/content/projects/_mdx_bundler_entry_point-9f80b318-b24e-4507-94a3-cb5b48624568.mdx\",lineNumber:1,columnNumber:85},this),`\n`,(0,r.jsxDEV)(n.span,{className:\"line\",children:[(0,r.jsxDEV)(n.span,{style:{color:\"#E1E4E8\"},children:\" \"},void 0,!1,{fileName:\"/Users/andreasthomas/github/chronark/chronark.com/content/projects/_mdx_bundler_entry_point-9f80b318-b24e-4507-94a3-cb5b48624568.mdx\",lineNumber:2,columnNumber:20},this),(0,r.jsxDEV)(n.span,{style:{color:\"#79B8FF\"},children:'\"data\"'},void 0,!1,{fileName:\"/Users/andreasthomas/github/chronark/chronark.com/content/projects/_mdx_bundler_entry_point-9f80b318-b24e-4507-94a3-cb5b48624568.mdx\",lineNumber:2,columnNumber:58},this),(0,r.jsxDEV)(n.span,{style:{color:\"#E1E4E8\"},children:\": {\"},void 0,!1,{fileName:\"/Users/andreasthomas/github/chronark/chronark.com/content/projects/_mdx_bundler_entry_point-9f80b318-b24e-4507-94a3-cb5b48624568.mdx\",lineNumber:2,columnNumber:110},this)]},void 0,!0,{fileName:\"/Users/andreasthomas/github/chronark/chronark.com/content/projects/_mdx_bundler_entry_point-9f80b318-b24e-4507-94a3-cb5b48624568.mdx\",lineNumber:2,columnNumber:1},this),`\n`,(0,r.jsxDEV)(n.span,{className:\"line\",children:[(0,r.jsxDEV)(n.span,{style:{color:\"#E1E4E8\"},children:\" \"},void 0,!1,{fileName:\"/Users/andreasthomas/github/chronark/chronark.com/content/projects/_mdx_bundler_entry_point-9f80b318-b24e-4507-94a3-cb5b48624568.mdx\",lineNumber:3,columnNumber:20},this),(0,r.jsxDEV)(n.span,{style:{color:\"#79B8FF\"},children:'\"id\"'},void 0,!1,{fileName:\"/Users/andreasthomas/github/chronark/chronark.com/content/projects/_mdx_bundler_entry_point-9f80b318-b24e-4507-94a3-cb5b48624568.mdx\",lineNumber:3,columnNumber:60},this),(0,r.jsxDEV)(n.span,{style:{color:\"#E1E4E8\"},children:\": \"},void 0,!1,{fileName:\"/Users/andreasthomas/github/chronark/chronark.com/content/projects/_mdx_bundler_entry_point-9f80b318-b24e-4507-94a3-cb5b48624568.mdx\",lineNumber:3,columnNumber:110},this),(0,r.jsxDEV)(n.span,{style:{color:\"#9ECBFF\"},children:'\"HdPbXgpvUvNk43oxSdK97u\"'},void 0,!1,{fileName:\"/Users/andreasthomas/github/chronark/chronark.com/content/projects/_mdx_bundler_entry_point-9f80b318-b24e-4507-94a3-cb5b48624568.mdx\",lineNumber:3,columnNumber:148},this),(0,r.jsxDEV)(n.span,{style:{color:\"#E1E4E8\"},children:\",\"},void 0,!1,{fileName:\"/Users/andreasthomas/github/chronark/chronark.com/content/projects/_mdx_bundler_entry_point-9f80b318-b24e-4507-94a3-cb5b48624568.mdx\",lineNumber:3,columnNumber:218},this)]},void 0,!0,{fileName:\"/Users/andreasthomas/github/chronark/chronark.com/content/projects/_mdx_bundler_entry_point-9f80b318-b24e-4507-94a3-cb5b48624568.mdx\",lineNumber:3,columnNumber:1},this),`\n`,(0,r.jsxDEV)(n.span,{className:\"line\",children:[(0,r.jsxDEV)(n.span,{style:{color:\"#E1E4E8\"},children:\" \"},void 0,!1,{fileName:\"/Users/andreasthomas/github/chronark/chronark.com/content/projects/_mdx_bundler_entry_point-9f80b318-b24e-4507-94a3-cb5b48624568.mdx\",lineNumber:4,columnNumber:20},this),(0,r.jsxDEV)(n.span,{style:{color:\"#79B8FF\"},children:'\"ttl\"'},void 0,!1,{fileName:\"/Users/andreasthomas/github/chronark/chronark.com/content/projects/_mdx_bundler_entry_point-9f80b318-b24e-4507-94a3-cb5b48624568.mdx\",lineNumber:4,columnNumber:60},this),(0,r.jsxDEV)(n.span,{style:{color:\"#E1E4E8\"},children:\": \"},void 0,!1,{fileName:\"/Users/andreasthomas/github/chronark/chronark.com/content/projects/_mdx_bundler_entry_point-9f80b318-b24e-4507-94a3-cb5b48624568.mdx\",lineNumber:4,columnNumber:111},this),(0,r.jsxDEV)(n.span,{style:{color:\"#79B8FF\"},children:\"86400\"},void 0,!1,{fileName:\"/Users/andreasthomas/github/chronark/chronark.com/content/projects/_mdx_bundler_entry_point-9f80b318-b24e-4507-94a3-cb5b48624568.mdx\",lineNumber:4,columnNumber:149},this),(0,r.jsxDEV)(n.span,{style:{color:\"#E1E4E8\"},children:\",\"},void 0,!1,{fileName:\"/Users/andreasthomas/github/chronark/chronark.com/content/projects/_mdx_bundler_entry_point-9f80b318-b24e-4507-94a3-cb5b48624568.mdx\",lineNumber:4,columnNumber:190},this)]},void 0,!0,{fileName:\"/Users/andreasthomas/github/chronark/chronark.com/content/projects/_mdx_bundler_entry_point-9f80b318-b24e-4507-94a3-cb5b48624568.mdx\",lineNumber:4,columnNumber:1},this),`\n`,(0,r.jsxDEV)(n.span,{className:\"line\",children:[(0,r.jsxDEV)(n.span,{style:{color:\"#E1E4E8\"},children:\" \"},void 0,!1,{fileName:\"/Users/andreasthomas/github/chronark/chronark.com/content/projects/_mdx_bundler_entry_point-9f80b318-b24e-4507-94a3-cb5b48624568.mdx\",lineNumber:5,columnNumber:20},this),(0,r.jsxDEV)(n.span,{style:{color:\"#79B8FF\"},children:'\"reads\"'},void 0,!1,{fileName:\"/Users/andreasthomas/github/chronark/chronark.com/content/projects/_mdx_bundler_entry_point-9f80b318-b24e-4507-94a3-cb5b48624568.mdx\",lineNumber:5,columnNumber:60},this),(0,r.jsxDEV)(n.span,{style:{color:\"#E1E4E8\"},children:\": \"},void 0,!1,{fileName:\"/Users/andreasthomas/github/chronark/chronark.com/content/projects/_mdx_bundler_entry_point-9f80b318-b24e-4507-94a3-cb5b48624568.mdx\",lineNumber:5,columnNumber:113},this),(0,r.jsxDEV)(n.span,{style:{color:\"#79B8FF\"},children:\"2\"},void 0,!1,{fileName:\"/Users/andreasthomas/github/chronark/chronark.com/content/projects/_mdx_bundler_entry_point-9f80b318-b24e-4507-94a3-cb5b48624568.mdx\",lineNumber:5,columnNumber:151},this),(0,r.jsxDEV)(n.span,{style:{color:\"#E1E4E8\"},children:\",\"},void 0,!1,{fileName:\"/Users/andreasthomas/github/chronark/chronark.com/content/projects/_mdx_bundler_entry_point-9f80b318-b24e-4507-94a3-cb5b48624568.mdx\",lineNumber:5,columnNumber:188},this)]},void 0,!0,{fileName:\"/Users/andreasthomas/github/chronark/chronark.com/content/projects/_mdx_bundler_entry_point-9f80b318-b24e-4507-94a3-cb5b48624568.mdx\",lineNumber:5,columnNumber:1},this),`\n`,(0,r.jsxDEV)(n.span,{className:\"line\",children:[(0,r.jsxDEV)(n.span,{style:{color:\"#E1E4E8\"},children:\" \"},void 0,!1,{fileName:\"/Users/andreasthomas/github/chronark/chronark.com/content/projects/_mdx_bundler_entry_point-9f80b318-b24e-4507-94a3-cb5b48624568.mdx\",lineNumber:6,columnNumber:20},this),(0,r.jsxDEV)(n.span,{style:{color:\"#79B8FF\"},children:'\"expiresAt\"'},void 0,!1,{fileName:\"/Users/andreasthomas/github/chronark/chronark.com/content/projects/_mdx_bundler_entry_point-9f80b318-b24e-4507-94a3-cb5b48624568.mdx\",lineNumber:6,columnNumber:60},this),(0,r.jsxDEV)(n.span,{style:{color:\"#E1E4E8\"},children:\": \"},void 0,!1,{fileName:\"/Users/andreasthomas/github/chronark/chronark.com/content/projects/_mdx_bundler_entry_point-9f80b318-b24e-4507-94a3-cb5b48624568.mdx\",lineNumber:6,columnNumber:117},this),(0,r.jsxDEV)(n.span,{style:{color:\"#9ECBFF\"},children:'\"2023-01-19T20:47:28.383Z\"'},void 0,!1,{fileName:\"/Users/andreasthomas/github/chronark/chronark.com/content/projects/_mdx_bundler_entry_point-9f80b318-b24e-4507-94a3-cb5b48624568.mdx\",lineNumber:6,columnNumber:155},this),(0,r.jsxDEV)(n.span,{style:{color:\"#E1E4E8\"},children:\",\"},void 0,!1,{fileName:\"/Users/andreasthomas/github/chronark/chronark.com/content/projects/_mdx_bundler_entry_point-9f80b318-b24e-4507-94a3-cb5b48624568.mdx\",lineNumber:6,columnNumber:227},this)]},void 0,!0,{fileName:\"/Users/andreasthomas/github/chronark/chronark.com/content/projects/_mdx_bundler_entry_point-9f80b318-b24e-4507-94a3-cb5b48624568.mdx\",lineNumber:6,columnNumber:1},this),`\n`,(0,r.jsxDEV)(n.span,{className:\"line\",children:[(0,r.jsxDEV)(n.span,{style:{color:\"#E1E4E8\"},children:\" \"},void 0,!1,{fileName:\"/Users/andreasthomas/github/chronark/chronark.com/content/projects/_mdx_bundler_entry_point-9f80b318-b24e-4507-94a3-cb5b48624568.mdx\",lineNumber:7,columnNumber:20},this),(0,r.jsxDEV)(n.span,{style:{color:\"#79B8FF\"},children:'\"url\"'},void 0,!1,{fileName:\"/Users/andreasthomas/github/chronark/chronark.com/content/projects/_mdx_bundler_entry_point-9f80b318-b24e-4507-94a3-cb5b48624568.mdx\",lineNumber:7,columnNumber:60},this),(0,r.jsxDEV)(n.span,{style:{color:\"#E1E4E8\"},children:\": \"},void 0,!1,{fileName:\"/Users/andreasthomas/github/chronark/chronark.com/content/projects/_mdx_bundler_entry_point-9f80b318-b24e-4507-94a3-cb5b48624568.mdx\",lineNumber:7,columnNumber:111},this),(0,r.jsxDEV)(n.span,{style:{color:\"#9ECBFF\"},children:'\"http://envshare.dev/api/v1/secret/HdPbXgpvUvNk43oxSdK97u\"'},void 0,!1,{fileName:\"/Users/andreasthomas/github/chronark/chronark.com/content/projects/_mdx_bundler_entry_point-9f80b318-b24e-4507-94a3-cb5b48624568.mdx\",lineNumber:7,columnNumber:149},this)]},void 0,!0,{fileName:\"/Users/andreasthomas/github/chronark/chronark.com/content/projects/_mdx_bundler_entry_point-9f80b318-b24e-4507-94a3-cb5b48624568.mdx\",lineNumber:7,columnNumber:1},this),`\n`,(0,r.jsxDEV)(n.span,{className:\"line\",children:(0,r.jsxDEV)(n.span,{style:{color:\"#E1E4E8\"},children:\" }\"},void 0,!1,{fileName:\"/Users/andreasthomas/github/chronark/chronark.com/content/projects/_mdx_bundler_entry_point-9f80b318-b24e-4507-94a3-cb5b48624568.mdx\",lineNumber:8,columnNumber:20},this)},void 0,!1,{fileName:\"/Users/andreasthomas/github/chronark/chronark.com/content/projects/_mdx_bundler_entry_point-9f80b318-b24e-4507-94a3-cb5b48624568.mdx\",lineNumber:8,columnNumber:1},this),`\n`,(0,r.jsxDEV)(n.span,{className:\"line\",children:(0,r.jsxDEV)(n.span,{style:{color:\"#E1E4E8\"},children:\"}\"},void 0,!1,{fileName:\"/Users/andreasthomas/github/chronark/chronark.com/content/projects/_mdx_bundler_entry_point-9f80b318-b24e-4507-94a3-cb5b48624568.mdx\",lineNumber:9,columnNumber:20},this)},void 0,!1,{fileName:\"/Users/andreasthomas/github/chronark/chronark.com/content/projects/_mdx_bundler_entry_point-9f80b318-b24e-4507-94a3-cb5b48624568.mdx\",lineNumber:9,columnNumber:1},this)]},void 0,!0,{fileName:\"/Users/andreasthomas/github/chronark/chronark.com/content/projects/_mdx_bundler_entry_point-9f80b318-b24e-4507-94a3-cb5b48624568.mdx\",lineNumber:1,columnNumber:79},this)},void 0,!1,{fileName:\"/Users/andreasthomas/github/chronark/chronark.com/content/projects/_mdx_bundler_entry_point-9f80b318-b24e-4507-94a3-cb5b48624568.mdx\",lineNumber:1,columnNumber:1},this)},void 0,!1,{fileName:\"/Users/andreasthomas/github/chronark/chronark.com/content/projects/_mdx_bundler_entry_point-9f80b318-b24e-4507-94a3-cb5b48624568.mdx\",lineNumber:89,columnNumber:1},this),`\n`,(0,r.jsxDEV)(n.h4,{id:\"retrieve-a-secret\",children:[(0,r.jsxDEV)(n.a,{className:\"subheading-anchor\",\"aria-label\":\"Link to section\",href:\"#retrieve-a-secret\",children:(0,r.jsxDEV)(n.span,{className:\"icon icon-link\"},void 0,!1,{fileName:\"/Users/andreasthomas/github/chronark/chronark.com/content/projects/_mdx_bundler_entry_point-9f80b318-b24e-4507-94a3-cb5b48624568.mdx\"},this)},void 0,!1,{fileName:\"/Users/andreasthomas/github/chronark/chronark.com/content/projects/_mdx_bundler_entry_point-9f80b318-b24e-4507-94a3-cb5b48624568.mdx\"},this),\"Retrieve a secret\"]},void 0,!0,{fileName:\"/Users/andreasthomas/github/chronark/chronark.com/content/projects/_mdx_bundler_entry_point-9f80b318-b24e-4507-94a3-cb5b48624568.mdx\",lineNumber:101,columnNumber:1},this),`\n`,(0,r.jsxDEV)(n.p,{children:\"You need an id to retrieve a secret. The id is returned when you store a secret.\"},void 0,!1,{fileName:\"/Users/andreasthomas/github/chronark/chronark.com/content/projects/_mdx_bundler_entry_point-9f80b318-b24e-4507-94a3-cb5b48624568.mdx\",lineNumber:103,columnNumber:1},this),`\n`,(0,r.jsxDEV)(n.div,{\"data-rehype-pretty-code-fragment\":\"\",children:(0,r.jsxDEV)(n.pre,{\"data-language\":\"sh-session\",\"data-theme\":\"default\",children:(0,r.jsxDEV)(n.code,{\"data-language\":\"sh-session\",\"data-theme\":\"default\",children:(0,r.jsxDEV)(n.span,{className:\"line\",children:(0,r.jsxDEV)(n.span,{style:{color:\"#e1e4e8\"},children:\"$ curl -s https://envshare.dev/api/v1/secret/HdPbXgpvUvNk43oxSdK97u\"},void 0,!1,{fileName:\"/Users/andreasthomas/github/chronark/chronark.com/content/projects/_mdx_bundler_entry_point-9f80b318-b24e-4507-94a3-cb5b48624568.mdx\",lineNumber:1,columnNumber:104},this)},void 0,!1,{fileName:\"/Users/andreasthomas/github/chronark/chronark.com/content/projects/_mdx_bundler_entry_point-9f80b318-b24e-4507-94a3-cb5b48624568.mdx\",lineNumber:1,columnNumber:85},this)},void 0,!1,{fileName:\"/Users/andreasthomas/github/chronark/chronark.com/content/projects/_mdx_bundler_entry_point-9f80b318-b24e-4507-94a3-cb5b48624568.mdx\",lineNumber:1,columnNumber:79},this)},void 0,!1,{fileName:\"/Users/andreasthomas/github/chronark/chronark.com/content/projects/_mdx_bundler_entry_point-9f80b318-b24e-4507-94a3-cb5b48624568.mdx\",lineNumber:1,columnNumber:1},this)},void 0,!1,{fileName:\"/Users/andreasthomas/github/chronark/chronark.com/content/projects/_mdx_bundler_entry_point-9f80b318-b24e-4507-94a3-cb5b48624568.mdx\",lineNumber:105,columnNumber:1},this),`\n`,(0,r.jsxDEV)(n.div,{\"data-rehype-pretty-code-fragment\":\"\",children:(0,r.jsxDEV)(n.pre,{\"data-language\":\"json\",\"data-theme\":\"default\",children:(0,r.jsxDEV)(n.code,{\"data-language\":\"json\",\"data-theme\":\"default\",children:[(0,r.jsxDEV)(n.span,{className:\"line\",children:(0,r.jsxDEV)(n.span,{style:{color:\"#E1E4E8\"},children:\"{\"},void 0,!1,{fileName:\"/Users/andreasthomas/github/chronark/chronark.com/content/projects/_mdx_bundler_entry_point-9f80b318-b24e-4507-94a3-cb5b48624568.mdx\",lineNumber:1,columnNumber:104},this)},void 0,!1,{fileName:\"/Users/andreasthomas/github/chronark/chronark.com/content/projects/_mdx_bundler_entry_point-9f80b318-b24e-4507-94a3-cb5b48624568.mdx\",lineNumber:1,columnNumber:85},this),`\n`,(0,r.jsxDEV)(n.span,{className:\"line\",children:[(0,r.jsxDEV)(n.span,{style:{color:\"#E1E4E8\"},children:\" \"},void 0,!1,{fileName:\"/Users/andreasthomas/github/chronark/chronark.com/content/projects/_mdx_bundler_entry_point-9f80b318-b24e-4507-94a3-cb5b48624568.mdx\",lineNumber:2,columnNumber:20},this),(0,r.jsxDEV)(n.span,{style:{color:\"#79B8FF\"},children:'\"data\"'},void 0,!1,{fileName:\"/Users/andreasthomas/github/chronark/chronark.com/content/projects/_mdx_bundler_entry_point-9f80b318-b24e-4507-94a3-cb5b48624568.mdx\",lineNumber:2,columnNumber:58},this),(0,r.jsxDEV)(n.span,{style:{color:\"#E1E4E8\"},children:\": {\"},void 0,!1,{fileName:\"/Users/andreasthomas/github/chronark/chronark.com/content/projects/_mdx_bundler_entry_point-9f80b318-b24e-4507-94a3-cb5b48624568.mdx\",lineNumber:2,columnNumber:110},this)]},void 0,!0,{fileName:\"/Users/andreasthomas/github/chronark/chronark.com/content/projects/_mdx_bundler_entry_point-9f80b318-b24e-4507-94a3-cb5b48624568.mdx\",lineNumber:2,columnNumber:1},this),`\n`,(0,r.jsxDEV)(n.span,{className:\"line\",children:[(0,r.jsxDEV)(n.span,{style:{color:\"#E1E4E8\"},children:\" \"},void 0,!1,{fileName:\"/Users/andreasthomas/github/chronark/chronark.com/content/projects/_mdx_bundler_entry_point-9f80b318-b24e-4507-94a3-cb5b48624568.mdx\",lineNumber:3,columnNumber:20},this),(0,r.jsxDEV)(n.span,{style:{color:\"#79B8FF\"},children:'\"secret\"'},void 0,!1,{fileName:\"/Users/andreasthomas/github/chronark/chronark.com/content/projects/_mdx_bundler_entry_point-9f80b318-b24e-4507-94a3-cb5b48624568.mdx\",lineNumber:3,columnNumber:60},this),(0,r.jsxDEV)(n.span,{style:{color:\"#E1E4E8\"},children:\": \"},void 0,!1,{fileName:\"/Users/andreasthomas/github/chronark/chronark.com/content/projects/_mdx_bundler_entry_point-9f80b318-b24e-4507-94a3-cb5b48624568.mdx\",lineNumber:3,columnNumber:114},this),(0,r.jsxDEV)(n.span,{style:{color:\"#9ECBFF\"},children:'\"Hello\"'},void 0,!1,{fileName:\"/Users/andreasthomas/github/chronark/chronark.com/content/projects/_mdx_bundler_entry_point-9f80b318-b24e-4507-94a3-cb5b48624568.mdx\",lineNumber:3,columnNumber:152},this),(0,r.jsxDEV)(n.span,{style:{color:\"#E1E4E8\"},children:\",\"},void 0,!1,{fileName:\"/Users/andreasthomas/github/chronark/chronark.com/content/projects/_mdx_bundler_entry_point-9f80b318-b24e-4507-94a3-cb5b48624568.mdx\",lineNumber:3,columnNumber:205},this)]},void 0,!0,{fileName:\"/Users/andreasthomas/github/chronark/chronark.com/content/projects/_mdx_bundler_entry_point-9f80b318-b24e-4507-94a3-cb5b48624568.mdx\",lineNumber:3,columnNumber:1},this),`\n`,(0,r.jsxDEV)(n.span,{className:\"line\",children:[(0,r.jsxDEV)(n.span,{style:{color:\"#E1E4E8\"},children:\" \"},void 0,!1,{fileName:\"/Users/andreasthomas/github/chronark/chronark.com/content/projects/_mdx_bundler_entry_point-9f80b318-b24e-4507-94a3-cb5b48624568.mdx\",lineNumber:4,columnNumber:20},this),(0,r.jsxDEV)(n.span,{style:{color:\"#79B8FF\"},children:'\"remainingReads\"'},void 0,!1,{fileName:\"/Users/andreasthomas/github/chronark/chronark.com/content/projects/_mdx_bundler_entry_point-9f80b318-b24e-4507-94a3-cb5b48624568.mdx\",lineNumber:4,columnNumber:60},this),(0,r.jsxDEV)(n.span,{style:{color:\"#E1E4E8\"},children:\": \"},void 0,!1,{fileName:\"/Users/andreasthomas/github/chronark/chronark.com/content/projects/_mdx_bundler_entry_point-9f80b318-b24e-4507-94a3-cb5b48624568.mdx\",lineNumber:4,columnNumber:122},this),(0,r.jsxDEV)(n.span,{style:{color:\"#79B8FF\"},children:\"1\"},void 0,!1,{fileName:\"/Users/andreasthomas/github/chronark/chronark.com/content/projects/_mdx_bundler_entry_point-9f80b318-b24e-4507-94a3-cb5b48624568.mdx\",lineNumber:4,columnNumber:160},this)]},void 0,!0,{fileName:\"/Users/andreasthomas/github/chronark/chronark.com/content/projects/_mdx_bundler_entry_point-9f80b318-b24e-4507-94a3-cb5b48624568.mdx\",lineNumber:4,columnNumber:1},this),`\n`,(0,r.jsxDEV)(n.span,{className:\"line\",children:(0,r.jsxDEV)(n.span,{style:{color:\"#E1E4E8\"},children:\" }\"},void 0,!1,{fileName:\"/Users/andreasthomas/github/chronark/chronark.com/content/projects/_mdx_bundler_entry_point-9f80b318-b24e-4507-94a3-cb5b48624568.mdx\",lineNumber:5,columnNumber:20},this)},void 0,!1,{fileName:\"/Users/andreasthomas/github/chronark/chronark.com/content/projects/_mdx_bundler_entry_point-9f80b318-b24e-4507-94a3-cb5b48624568.mdx\",lineNumber:5,columnNumber:1},this),`\n`,(0,r.jsxDEV)(n.span,{className:\"line\",children:(0,r.jsxDEV)(n.span,{style:{color:\"#E1E4E8\"},children:\"}\"},void 0,!1,{fileName:\"/Users/andreasthomas/github/chronark/chronark.com/content/projects/_mdx_bundler_entry_point-9f80b318-b24e-4507-94a3-cb5b48624568.mdx\",lineNumber:6,columnNumber:20},this)},void 0,!1,{fileName:\"/Users/andreasthomas/github/chronark/chronark.com/content/projects/_mdx_bundler_entry_point-9f80b318-b24e-4507-94a3-cb5b48624568.mdx\",lineNumber:6,columnNumber:1},this)]},void 0,!0,{fileName:\"/Users/andreasthomas/github/chronark/chronark.com/content/projects/_mdx_bundler_entry_point-9f80b318-b24e-4507-94a3-cb5b48624568.mdx\",lineNumber:1,columnNumber:79},this)},void 0,!1,{fileName:\"/Users/andreasthomas/github/chronark/chronark.com/content/projects/_mdx_bundler_entry_point-9f80b318-b24e-4507-94a3-cb5b48624568.mdx\",lineNumber:1,columnNumber:1},this)},void 0,!1,{fileName:\"/Users/andreasthomas/github/chronark/chronark.com/content/projects/_mdx_bundler_entry_point-9f80b318-b24e-4507-94a3-cb5b48624568.mdx\",lineNumber:109,columnNumber:1},this)]},void 0,!0,{fileName:\"/Users/andreasthomas/github/chronark/chronark.com/content/projects/_mdx_bundler_entry_point-9f80b318-b24e-4507-94a3-cb5b48624568.mdx\",lineNumber:1,columnNumber:1},this)}function Nn(d={}){let{wrapper:n}=d.components||{};return n?(0,r.jsxDEV)(n,Object.assign({},d,{children:(0,r.jsxDEV)(Re,d,void 0,!1,{fileName:\"/Users/andreasthomas/github/chronark/chronark.com/content/projects/_mdx_bundler_entry_point-9f80b318-b24e-4507-94a3-cb5b48624568.mdx\"},this)}),void 0,!1,{fileName:\"/Users/andreasthomas/github/chronark/chronark.com/content/projects/_mdx_bundler_entry_point-9f80b318-b24e-4507-94a3-cb5b48624568.mdx\"},this):Re(d)}var kn=Nn;return _n(xn);})();\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/envshare.mdx",
|
|
"_raw": {
|
|
"sourceFilePath": "projects/envshare.mdx",
|
|
"sourceFileName": "envshare.mdx",
|
|
"sourceFileDir": "projects",
|
|
"contentType": "mdx",
|
|
"flattenedPath": "projects/envshare"
|
|
},
|
|
"type": "Project",
|
|
"path": "/projects/envshare",
|
|
"slug": "envshare"
|
|
},
|
|
"documentHash": "1679819564284",
|
|
"hasWarnings": false,
|
|
"documentTypeName": "Project"
|
|
},
|
|
"projects/planetfall.mdx": {
|
|
"document": {
|
|
"published": true,
|
|
"title": "planetfall.io",
|
|
"description": "I'm building a SAAS providing global latency monitoring for your APIs and websites from edge locations around the world. Have you ever wondered how fast your API is in any part of the world? Planetfall allows you to find out and monitor it continuously.",
|
|
"date": "2023-04-01T00:00:00.000Z",
|
|
"url": "https://planetfall.io",
|
|
"body": {
|
|
"raw": "\n\nPlanetfall is a SaaS platform that provides global latency monitoring and synthetic monitoring for APIs. With over 60 regions to monitor from, customers can gain insights into the true performance of their API by checking latency from around the world. \nPlanetfall offers custom timeouts, threshold notifications, and real-time alerts for potential performance issues. Additionally, customers can create custom status pages to share with their customers, which can display availability and latency for every region. Planetfall offers a free tier that includes 100k checks per month and scales as customers grow. Overall, Planetfall helps customers stay in control of their API's performance, improve communication with their customers, and build trust.",
|
|
"code": "var Component=(()=>{var sr=Object.create;var D=Object.defineProperty;var lr=Object.getOwnPropertyDescriptor;var fr=Object.getOwnPropertyNames;var cr=Object.getPrototypeOf,dr=Object.prototype.hasOwnProperty;var q=(s,l)=>()=>(l||s((l={exports:{}}).exports,l),l.exports),vr=(s,l)=>{for(var h in l)D(s,h,{get:l[h],enumerable:!0})},_e=(s,l,h,y)=>{if(l&&typeof l==\"object\"||typeof l==\"function\")for(let b of fr(l))!dr.call(s,b)&&b!==h&&D(s,b,{get:()=>l[b],enumerable:!(y=lr(l,b))||y.enumerable});return s};var pr=(s,l,h)=>(h=s!=null?sr(cr(s)):{},_e(l||!s||!s.__esModule?D(h,\"default\",{value:s,enumerable:!0}):h,s)),hr=s=>_e(D({},\"__esModule\",{value:!0}),s);var Te=q((_r,Re)=>{Re.exports=React});var we=q(z=>{\"use strict\";(function(){\"use strict\";var s=Te(),l=Symbol.for(\"react.element\"),h=Symbol.for(\"react.portal\"),y=Symbol.for(\"react.fragment\"),b=Symbol.for(\"react.strict_mode\"),X=Symbol.for(\"react.profiler\"),H=Symbol.for(\"react.provider\"),K=Symbol.for(\"react.context\"),C=Symbol.for(\"react.forward_ref\"),I=Symbol.for(\"react.suspense\"),W=Symbol.for(\"react.suspense_list\"),O=Symbol.for(\"react.memo\"),Y=Symbol.for(\"react.lazy\"),Se=Symbol.for(\"react.offscreen\"),J=Symbol.iterator,je=\"@@iterator\";function ke(e){if(e===null||typeof e!=\"object\")return null;var r=J&&e[J]||e[je];return typeof r==\"function\"?r:null}var _=s.__SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED;function d(e){{for(var r=arguments.length,t=new Array(r>1?r-1:0),n=1;n<r;n++)t[n-1]=arguments[n];xe(\"error\",e,t)}}function xe(e,r,t){{var n=_.ReactDebugCurrentFrame,i=n.getStackAddendum();i!==\"\"&&(r+=\"%s\",t=t.concat([i]));var u=t.map(function(o){return String(o)});u.unshift(\"Warning: \"+r),Function.prototype.apply.call(console[e],console,u)}}var Ae=!1,De=!1,Fe=!1,Ie=!1,We=!1,Z;Z=Symbol.for(\"react.module.reference\");function Ye(e){return!!(typeof e==\"string\"||typeof e==\"function\"||e===y||e===X||We||e===b||e===I||e===W||Ie||e===Se||Ae||De||Fe||typeof e==\"object\"&&e!==null&&(e.$$typeof===Y||e.$$typeof===O||e.$$typeof===H||e.$$typeof===K||e.$$typeof===C||e.$$typeof===Z||e.getModuleId!==void 0))}function $e(e,r,t){var n=e.displayName;if(n)return n;var i=r.displayName||r.name||\"\";return i!==\"\"?t+\"(\"+i+\")\":t}function Q(e){return e.displayName||\"Context\"}function m(e){if(e==null)return null;if(typeof e.tag==\"number\"&&d(\"Received an unexpected object in getComponentNameFromType(). This is likely a bug in React. Please file an issue.\"),typeof e==\"function\")return e.displayName||e.name||null;if(typeof e==\"string\")return e;switch(e){case y:return\"Fragment\";case h:return\"Portal\";case X:return\"Profiler\";case b:return\"StrictMode\";case I:return\"Suspense\";case W:return\"SuspenseList\"}if(typeof e==\"object\")switch(e.$$typeof){case K:var r=e;return Q(r)+\".Consumer\";case H:var t=e;return Q(t._context)+\".Provider\";case C:return $e(e,e.render,\"ForwardRef\");case O:var n=e.displayName||null;return n!==null?n:m(e.type)||\"Memo\";case Y:{var i=e,u=i._payload,o=i._init;try{return m(o(u))}catch{return null}}}return null}var E=Object.assign,w=0,ee,re,te,ne,ae,oe,ie;function ue(){}ue.__reactDisabledLog=!0;function Ne(){{if(w===0){ee=console.log,re=console.info,te=console.warn,ne=console.error,ae=console.group,oe=console.groupCollapsed,ie=console.groupEnd;var e={configurable:!0,enumerable:!0,value:ue,writable:!0};Object.defineProperties(console,{info:e,log:e,warn:e,error:e,group:e,groupCollapsed:e,groupEnd:e})}w++}}function Me(){{if(w--,w===0){var e={configurable:!0,enumerable:!0,writable:!0};Object.defineProperties(console,{log:E({},e,{value:ee}),info:E({},e,{value:re}),warn:E({},e,{value:te}),error:E({},e,{value:ne}),group:E({},e,{value:ae}),groupCollapsed:E({},e,{value:oe}),groupEnd:E({},e,{value:ie})})}w<0&&d(\"disabledDepth fell below zero. This is a bug in React. Please file an issue.\")}}var $=_.ReactCurrentDispatcher,N;function S(e,r,t){{if(N===void 0)try{throw Error()}catch(i){var n=i.stack.trim().match(/\\n( *(at )?)/);N=n&&n[1]||\"\"}return`\n`+N+e}}var M=!1,j;{var Ve=typeof WeakMap==\"function\"?WeakMap:Map;j=new Ve}function se(e,r){if(!e||M)return\"\";{var t=j.get(e);if(t!==void 0)return t}var n;M=!0;var i=Error.prepareStackTrace;Error.prepareStackTrace=void 0;var u;u=$.current,$.current=null,Ne();try{if(r){var o=function(){throw Error()};if(Object.defineProperty(o.prototype,\"props\",{set:function(){throw Error()}}),typeof Reflect==\"object\"&&Reflect.construct){try{Reflect.construct(o,[])}catch(g){n=g}Reflect.construct(e,[],o)}else{try{o.call()}catch(g){n=g}e.call(o.prototype)}}else{try{throw Error()}catch(g){n=g}e()}}catch(g){if(g&&n&&typeof g.stack==\"string\"){for(var a=g.stack.split(`\n`),v=n.stack.split(`\n`),f=a.length-1,c=v.length-1;f>=1&&c>=0&&a[f]!==v[c];)c--;for(;f>=1&&c>=0;f--,c--)if(a[f]!==v[c]){if(f!==1||c!==1)do if(f--,c--,c<0||a[f]!==v[c]){var p=`\n`+a[f].replace(\" at new \",\" at \");return e.displayName&&p.includes(\"<anonymous>\")&&(p=p.replace(\"<anonymous>\",e.displayName)),typeof e==\"function\"&&j.set(e,p),p}while(f>=1&&c>=0);break}}}finally{M=!1,$.current=u,Me(),Error.prepareStackTrace=i}var T=e?e.displayName||e.name:\"\",Ee=T?S(T):\"\";return typeof e==\"function\"&&j.set(e,Ee),Ee}function Ue(e,r,t){return se(e,!1)}function Le(e){var r=e.prototype;return!!(r&&r.isReactComponent)}function k(e,r,t){if(e==null)return\"\";if(typeof e==\"function\")return se(e,Le(e));if(typeof e==\"string\")return S(e);switch(e){case I:return S(\"Suspense\");case W:return S(\"SuspenseList\")}if(typeof e==\"object\")switch(e.$$typeof){case C:return Ue(e.render);case O:return k(e.type,r,t);case Y:{var n=e,i=n._payload,u=n._init;try{return k(u(i),r,t)}catch{}}}return\"\"}var x=Object.prototype.hasOwnProperty,le={},fe=_.ReactDebugCurrentFrame;function A(e){if(e){var r=e._owner,t=k(e.type,e._source,r?r.type:null);fe.setExtraStackFrame(t)}else fe.setExtraStackFrame(null)}function Be(e,r,t,n,i){{var u=Function.call.bind(x);for(var o in e)if(u(e,o)){var a=void 0;try{if(typeof e[o]!=\"function\"){var v=Error((n||\"React class\")+\": \"+t+\" type `\"+o+\"` is invalid; it must be a function, usually from the `prop-types` package, but received `\"+typeof e[o]+\"`.This often happens because of typos such as `PropTypes.function` instead of `PropTypes.func`.\");throw v.name=\"Invariant Violation\",v}a=e[o](r,o,n,t,null,\"SECRET_DO_NOT_PASS_THIS_OR_YOU_WILL_BE_FIRED\")}catch(f){a=f}a&&!(a instanceof Error)&&(A(i),d(\"%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).\",n||\"React class\",t,o,typeof a),A(null)),a instanceof Error&&!(a.message in le)&&(le[a.message]=!0,A(i),d(\"Failed %s type: %s\",t,a.message),A(null))}}}var Ge=Array.isArray;function V(e){return Ge(e)}function qe(e){{var r=typeof Symbol==\"function\"&&Symbol.toStringTag,t=r&&e[Symbol.toStringTag]||e.constructor.name||\"Object\";return t}}function ze(e){try{return ce(e),!1}catch{return!0}}function ce(e){return\"\"+e}function de(e){if(ze(e))return d(\"The provided key is an unsupported type %s. This value must be coerced to a string before before using it here.\",qe(e)),ce(e)}var P=_.ReactCurrentOwner,Xe={key:!0,ref:!0,__self:!0,__source:!0},ve,pe,U;U={};function He(e){if(x.call(e,\"ref\")){var r=Object.getOwnPropertyDescriptor(e,\"ref\").get;if(r&&r.isReactWarning)return!1}return e.ref!==void 0}function Ke(e){if(x.call(e,\"key\")){var r=Object.getOwnPropertyDescriptor(e,\"key\").get;if(r&&r.isReactWarning)return!1}return e.key!==void 0}function Je(e,r){if(typeof e.ref==\"string\"&&P.current&&r&&P.current.stateNode!==r){var t=m(P.current.type);U[t]||(d('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',m(P.current.type),e.ref),U[t]=!0)}}function Ze(e,r){{var t=function(){ve||(ve=!0,d(\"%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)\",r))};t.isReactWarning=!0,Object.defineProperty(e,\"key\",{get:t,configurable:!0})}}function Qe(e,r){{var t=function(){pe||(pe=!0,d(\"%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)\",r))};t.isReactWarning=!0,Object.defineProperty(e,\"ref\",{get:t,configurable:!0})}}var er=function(e,r,t,n,i,u,o){var a={$$typeof:l,type:e,key:r,ref:t,props:o,_owner:u};return a._store={},Object.defineProperty(a._store,\"validated\",{configurable:!1,enumerable:!1,writable:!0,value:!1}),Object.defineProperty(a,\"_self\",{configurable:!1,enumerable:!1,writable:!1,value:n}),Object.defineProperty(a,\"_source\",{configurable:!1,enumerable:!1,writable:!1,value:i}),Object.freeze&&(Object.freeze(a.props),Object.freeze(a)),a};function rr(e,r,t,n,i){{var u,o={},a=null,v=null;t!==void 0&&(de(t),a=\"\"+t),Ke(r)&&(de(r.key),a=\"\"+r.key),He(r)&&(v=r.ref,Je(r,i));for(u in r)x.call(r,u)&&!Xe.hasOwnProperty(u)&&(o[u]=r[u]);if(e&&e.defaultProps){var f=e.defaultProps;for(u in f)o[u]===void 0&&(o[u]=f[u])}if(a||v){var c=typeof e==\"function\"?e.displayName||e.name||\"Unknown\":e;a&&Ze(o,c),v&&Qe(o,c)}return er(e,a,v,i,n,P.current,o)}}var L=_.ReactCurrentOwner,he=_.ReactDebugCurrentFrame;function R(e){if(e){var r=e._owner,t=k(e.type,e._source,r?r.type:null);he.setExtraStackFrame(t)}else he.setExtraStackFrame(null)}var B;B=!1;function G(e){return typeof e==\"object\"&&e!==null&&e.$$typeof===l}function me(){{if(L.current){var e=m(L.current.type);if(e)return`\n\nCheck the render method of \\``+e+\"`.\"}return\"\"}}function tr(e){{if(e!==void 0){var r=e.fileName.replace(/^.*[\\\\\\/]/,\"\"),t=e.lineNumber;return`\n\nCheck your code at `+r+\":\"+t+\".\"}return\"\"}}var ge={};function nr(e){{var r=me();if(!r){var t=typeof e==\"string\"?e:e.displayName||e.name;t&&(r=`\n\nCheck the top-level render call using <`+t+\">.\")}return r}}function be(e,r){{if(!e._store||e._store.validated||e.key!=null)return;e._store.validated=!0;var t=nr(r);if(ge[t])return;ge[t]=!0;var n=\"\";e&&e._owner&&e._owner!==L.current&&(n=\" It was passed a child from \"+m(e._owner.type)+\".\"),R(e),d('Each child in a list should have a unique \"key\" prop.%s%s See https://reactjs.org/link/warning-keys for more information.',t,n),R(null)}}function ye(e,r){{if(typeof e!=\"object\")return;if(V(e))for(var t=0;t<e.length;t++){var n=e[t];G(n)&&be(n,r)}else if(G(e))e._store&&(e._store.validated=!0);else if(e){var i=ke(e);if(typeof i==\"function\"&&i!==e.entries)for(var u=i.call(e),o;!(o=u.next()).done;)G(o.value)&&be(o.value,r)}}}function ar(e){{var r=e.type;if(r==null||typeof r==\"string\")return;var t;if(typeof r==\"function\")t=r.propTypes;else if(typeof r==\"object\"&&(r.$$typeof===C||r.$$typeof===O))t=r.propTypes;else return;if(t){var n=m(r);Be(t,e.props,\"prop\",n,e)}else if(r.PropTypes!==void 0&&!B){B=!0;var i=m(r);d(\"Component %s declared `PropTypes` instead of `propTypes`. Did you misspell the property assignment?\",i||\"Unknown\")}typeof r.getDefaultProps==\"function\"&&!r.getDefaultProps.isReactClassApproved&&d(\"getDefaultProps is only used on classic React.createClass definitions. Use a static property named `defaultProps` instead.\")}}function or(e){{for(var r=Object.keys(e.props),t=0;t<r.length;t++){var n=r[t];if(n!==\"children\"&&n!==\"key\"){R(e),d(\"Invalid prop `%s` supplied to `React.Fragment`. React.Fragment can only have `key` and `children` props.\",n),R(null);break}}e.ref!==null&&(R(e),d(\"Invalid attribute `ref` supplied to `React.Fragment`.\"),R(null))}}function ir(e,r,t,n,i,u){{var o=Ye(e);if(!o){var a=\"\";(e===void 0||typeof e==\"object\"&&e!==null&&Object.keys(e).length===0)&&(a+=\" 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 v=tr(i);v?a+=v:a+=me();var f;e===null?f=\"null\":V(e)?f=\"array\":e!==void 0&&e.$$typeof===l?(f=\"<\"+(m(e.type)||\"Unknown\")+\" />\",a=\" Did you accidentally export a JSX literal instead of a component?\"):f=typeof e,d(\"React.jsx: type is invalid -- expected a string (for built-in components) or a class/function (for composite components) but got: %s.%s\",f,a)}var c=rr(e,r,t,i,u);if(c==null)return c;if(o){var p=r.children;if(p!==void 0)if(n)if(V(p)){for(var T=0;T<p.length;T++)ye(p[T],e);Object.freeze&&Object.freeze(p)}else d(\"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(p,e)}return e===y?or(c):ar(c),c}}var ur=ir;z.Fragment=y,z.jsxDEV=ur})()});var Ce=q((Tr,Pe)=>{\"use strict\";Pe.exports=we()});var yr={};vr(yr,{default:()=>br,frontmatter:()=>mr});var F=pr(Ce()),mr={title:\"planetfall.io\",description:\"I'm building a SAAS providing global latency monitoring for your APIs and websites from edge locations around the world. Have you ever wondered how fast your API is in any part of the world? Planetfall allows you to find out and monitor it continuously.\",date:\"2023-04-01\",url:\"https://planetfall.io\",published:!0};function Oe(s){let l=Object.assign({p:\"p\"},s.components);return(0,F.jsxDEV)(l.p,{children:`Planetfall is a SaaS platform that provides global latency monitoring and synthetic monitoring for APIs. With over 60 regions to monitor from, customers can gain insights into the true performance of their API by checking latency from around the world.\nPlanetfall offers custom timeouts, threshold notifications, and real-time alerts for potential performance issues. Additionally, customers can create custom status pages to share with their customers, which can display availability and latency for every region. Planetfall offers a free tier that includes 100k checks per month and scales as customers grow. Overall, Planetfall helps customers stay in control of their API's performance, improve communication with their customers, and build trust.`},void 0,!1,{fileName:\"/Users/andreasthomas/github/chronark/chronark.com/content/projects/_mdx_bundler_entry_point-e9522400-f185-40ad-8df0-2d91f99fdbba.mdx\",lineNumber:11,columnNumber:1},this)}function gr(s={}){let{wrapper:l}=s.components||{};return l?(0,F.jsxDEV)(l,Object.assign({},s,{children:(0,F.jsxDEV)(Oe,s,void 0,!1,{fileName:\"/Users/andreasthomas/github/chronark/chronark.com/content/projects/_mdx_bundler_entry_point-e9522400-f185-40ad-8df0-2d91f99fdbba.mdx\"},this)}),void 0,!1,{fileName:\"/Users/andreasthomas/github/chronark/chronark.com/content/projects/_mdx_bundler_entry_point-e9522400-f185-40ad-8df0-2d91f99fdbba.mdx\"},this):Oe(s)}var br=gr;return hr(yr);})();\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/planetfall.mdx",
|
|
"_raw": {
|
|
"sourceFilePath": "projects/planetfall.mdx",
|
|
"sourceFileName": "planetfall.mdx",
|
|
"sourceFileDir": "projects",
|
|
"contentType": "mdx",
|
|
"flattenedPath": "projects/planetfall"
|
|
},
|
|
"type": "Project",
|
|
"path": "/projects/planetfall",
|
|
"slug": "planetfall"
|
|
},
|
|
"documentHash": "1679826085197",
|
|
"hasWarnings": false,
|
|
"documentTypeName": "Project"
|
|
},
|
|
"projects/qstash.mdx": {
|
|
"document": {
|
|
"published": true,
|
|
"title": "QStash",
|
|
"description": "QStash is a fully managed serverless queue and messaging service designed for the serverless era.",
|
|
"date": "2022-07-18T00:00:00.000Z",
|
|
"url": "https://upstash.com/qstash",
|
|
"body": {
|
|
"raw": "\nQStash is an HTTP based messaging and scheduling solution for the serverless and edge runtimes.\n\n- 100% serverless, no stateful connections required. Messages are pushed to your API.\n- At-least-once delivery guaranteed to any public API\n- Pubsub via topics\n- Delay message delivery\n- Message deduplication\n- Scheduling via CRON\n\n\nFormally, QStash is a message queue and task scheduler designed for serverless runtimes. Informally, QStash is a glue for your serverless functions.\n\nThere was a perception serverless was only good for simple tasks. Not anymore. People build powerful systems with serverless stack. Powerful systems are composed of multiple components. Communication among those components is a big engineering problem. There are already great solutions for this problem. But we think existing solutions do not fit in serverless space. Either they are too complex or not designed to work with stateless runtimes. So we want a solution which (is):\n\n- Works anywhere including serverless and edge.\n- Messaging as a service with no backend for users to run.\n- Lightweight, easy to understand, requires nothing to learn.\n- Price scales to zero.\n\nLet's talk about a real world example. We have an e-commerce app and we want to send an informational email after each purchase. We have a service (an API route) for new purchases (newPurchase) and a second service for sending emails and notifications (sendEmail). We can call the sendEmail service from the newPurchase service. But what if the call fails? Should we wait for the response and retry? What if too many calls congest the sendEmail service and the service does not respond on time? You need to handle all these cases in your newPurchase service. Moreover, when you change the contract of sendEmail service; you have to update your newPurchase service too.\n\nIf you use QStash in the above example, you simply send a request to QStash from the newPurchase service. QStash will queue the request and call the sendEmail service. If the service does not respond, QStash will retry with a backoff strategy. The latency of sendEmail service will not affect the newPurchase service, because it will not wait for a response from the sendEmail service. QStash decouples the newPurchase and sendEmail services. You can update both services independently as long as you keep the message format compatible.\n\nWith QStash, you can add delays to the requests. Send an email 3 days after the shipment to remind the customer to add a review. You can also schedule tasks. You can send the requests with a CRON expression, so it will be run repetitively.\n\n\nTo learn more about QStash, visit [upstash.com/qstash](upstash.com/qstash).",
|
|
"code": "var Component=(()=>{var ur=Object.create;var F=Object.defineProperty;var cr=Object.getOwnPropertyDescriptor;var lr=Object.getOwnPropertyNames;var fr=Object.getPrototypeOf,dr=Object.prototype.hasOwnProperty;var B=(l,t)=>()=>(t||l((t={exports:{}}).exports,t),t.exports),hr=(l,t)=>{for(var v in t)F(l,v,{get:t[v],enumerable:!0})},Ee=(l,t,v,y)=>{if(t&&typeof t==\"object\"||typeof t==\"function\")for(let g of lr(t))!dr.call(l,g)&&g!==v&&F(l,g,{get:()=>t[g],enumerable:!(y=cr(t,g))||y.enumerable});return l};var mr=(l,t,v)=>(v=l!=null?ur(fr(l)):{},Ee(t||!l||!l.__esModule?F(v,\"default\",{value:l,enumerable:!0}):v,l)),br=l=>Ee(F({},\"__esModule\",{value:!0}),l);var we=B((Er,ke)=>{ke.exports=React});var xe=B(z=>{\"use strict\";(function(){\"use strict\";var l=we(),t=Symbol.for(\"react.element\"),v=Symbol.for(\"react.portal\"),y=Symbol.for(\"react.fragment\"),g=Symbol.for(\"react.strict_mode\"),G=Symbol.for(\"react.profiler\"),X=Symbol.for(\"react.provider\"),H=Symbol.for(\"react.context\"),T=Symbol.for(\"react.forward_ref\"),U=Symbol.for(\"react.suspense\"),A=Symbol.for(\"react.suspense_list\"),j=Symbol.for(\"react.memo\"),I=Symbol.for(\"react.lazy\"),je=Symbol.for(\"react.offscreen\"),K=Symbol.iterator,Pe=\"@@iterator\";function Se(e){if(e===null||typeof e!=\"object\")return null;var r=K&&e[K]||e[Pe];return typeof r==\"function\"?r:null}var k=l.__SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED;function h(e){{for(var r=arguments.length,n=new Array(r>1?r-1:0),a=1;a<r;a++)n[a-1]=arguments[a];Ce(\"error\",e,n)}}function Ce(e,r,n){{var a=k.ReactDebugCurrentFrame,s=a.getStackAddendum();s!==\"\"&&(r+=\"%s\",n=n.concat([s]));var u=n.map(function(i){return String(i)});u.unshift(\"Warning: \"+r),Function.prototype.apply.call(console[e],console,u)}}var Oe=!1,De=!1,Fe=!1,Ue=!1,Ae=!1,J;J=Symbol.for(\"react.module.reference\");function Ie(e){return!!(typeof e==\"string\"||typeof e==\"function\"||e===y||e===G||Ae||e===g||e===U||e===A||Ue||e===je||Oe||De||Fe||typeof e==\"object\"&&e!==null&&(e.$$typeof===I||e.$$typeof===j||e.$$typeof===X||e.$$typeof===H||e.$$typeof===T||e.$$typeof===J||e.getModuleId!==void 0))}function We(e,r,n){var a=e.displayName;if(a)return a;var s=r.displayName||r.name||\"\";return s!==\"\"?n+\"(\"+s+\")\":n}function Z(e){return e.displayName||\"Context\"}function p(e){if(e==null)return null;if(typeof e.tag==\"number\"&&h(\"Received an unexpected object in getComponentNameFromType(). This is likely a bug in React. Please file an issue.\"),typeof e==\"function\")return e.displayName||e.name||null;if(typeof e==\"string\")return e;switch(e){case y:return\"Fragment\";case v:return\"Portal\";case G:return\"Profiler\";case g:return\"StrictMode\";case U:return\"Suspense\";case A:return\"SuspenseList\"}if(typeof e==\"object\")switch(e.$$typeof){case H:var r=e;return Z(r)+\".Consumer\";case X:var n=e;return Z(n._context)+\".Provider\";case T:return We(e,e.render,\"ForwardRef\");case j:var a=e.displayName||null;return a!==null?a:p(e.type)||\"Memo\";case I:{var s=e,u=s._payload,i=s._init;try{return p(i(u))}catch{return null}}}return null}var E=Object.assign,R=0,ee,re,ne,ae,te,oe,ie;function se(){}se.__reactDisabledLog=!0;function Ye(){{if(R===0){ee=console.log,re=console.info,ne=console.warn,ae=console.error,te=console.group,oe=console.groupCollapsed,ie=console.groupEnd;var e={configurable:!0,enumerable:!0,value:se,writable:!0};Object.defineProperties(console,{info:e,log:e,warn:e,error:e,group:e,groupCollapsed:e,groupEnd:e})}R++}}function Me(){{if(R--,R===0){var e={configurable:!0,enumerable:!0,writable:!0};Object.defineProperties(console,{log:E({},e,{value:ee}),info:E({},e,{value:re}),warn:E({},e,{value:ne}),error:E({},e,{value:ae}),group:E({},e,{value:te}),groupCollapsed:E({},e,{value:oe}),groupEnd:E({},e,{value:ie})})}R<0&&h(\"disabledDepth fell below zero. This is a bug in React. Please file an issue.\")}}var W=k.ReactCurrentDispatcher,Y;function P(e,r,n){{if(Y===void 0)try{throw Error()}catch(s){var a=s.stack.trim().match(/\\n( *(at )?)/);Y=a&&a[1]||\"\"}return`\n`+Y+e}}var M=!1,S;{var $e=typeof WeakMap==\"function\"?WeakMap:Map;S=new $e}function ue(e,r){if(!e||M)return\"\";{var n=S.get(e);if(n!==void 0)return n}var a;M=!0;var s=Error.prepareStackTrace;Error.prepareStackTrace=void 0;var u;u=W.current,W.current=null,Ye();try{if(r){var i=function(){throw Error()};if(Object.defineProperty(i.prototype,\"props\",{set:function(){throw Error()}}),typeof Reflect==\"object\"&&Reflect.construct){try{Reflect.construct(i,[])}catch(_){a=_}Reflect.construct(e,[],i)}else{try{i.call()}catch(_){a=_}e.call(i.prototype)}}else{try{throw Error()}catch(_){a=_}e()}}catch(_){if(_&&a&&typeof _.stack==\"string\"){for(var o=_.stack.split(`\n`),m=a.stack.split(`\n`),f=o.length-1,d=m.length-1;f>=1&&d>=0&&o[f]!==m[d];)d--;for(;f>=1&&d>=0;f--,d--)if(o[f]!==m[d]){if(f!==1||d!==1)do if(f--,d--,d<0||o[f]!==m[d]){var b=`\n`+o[f].replace(\" at new \",\" at \");return e.displayName&&b.includes(\"<anonymous>\")&&(b=b.replace(\"<anonymous>\",e.displayName)),typeof e==\"function\"&&S.set(e,b),b}while(f>=1&&d>=0);break}}}finally{M=!1,W.current=u,Me(),Error.prepareStackTrace=s}var x=e?e.displayName||e.name:\"\",ye=x?P(x):\"\";return typeof e==\"function\"&&S.set(e,ye),ye}function Ve(e,r,n){return ue(e,!1)}function Le(e){var r=e.prototype;return!!(r&&r.isReactComponent)}function C(e,r,n){if(e==null)return\"\";if(typeof e==\"function\")return ue(e,Le(e));if(typeof e==\"string\")return P(e);switch(e){case U:return P(\"Suspense\");case A:return P(\"SuspenseList\")}if(typeof e==\"object\")switch(e.$$typeof){case T:return Ve(e.render);case j:return C(e.type,r,n);case I:{var a=e,s=a._payload,u=a._init;try{return C(u(s),r,n)}catch{}}}return\"\"}var O=Object.prototype.hasOwnProperty,ce={},le=k.ReactDebugCurrentFrame;function D(e){if(e){var r=e._owner,n=C(e.type,e._source,r?r.type:null);le.setExtraStackFrame(n)}else le.setExtraStackFrame(null)}function qe(e,r,n,a,s){{var u=Function.call.bind(O);for(var i in e)if(u(e,i)){var o=void 0;try{if(typeof e[i]!=\"function\"){var m=Error((a||\"React class\")+\": \"+n+\" type `\"+i+\"` is invalid; it must be a function, usually from the `prop-types` package, but received `\"+typeof e[i]+\"`.This often happens because of typos such as `PropTypes.function` instead of `PropTypes.func`.\");throw m.name=\"Invariant Violation\",m}o=e[i](r,i,a,n,null,\"SECRET_DO_NOT_PASS_THIS_OR_YOU_WILL_BE_FIRED\")}catch(f){o=f}o&&!(o instanceof Error)&&(D(s),h(\"%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).\",a||\"React class\",n,i,typeof o),D(null)),o instanceof Error&&!(o.message in ce)&&(ce[o.message]=!0,D(s),h(\"Failed %s type: %s\",n,o.message),D(null))}}}var Qe=Array.isArray;function $(e){return Qe(e)}function Be(e){{var r=typeof Symbol==\"function\"&&Symbol.toStringTag,n=r&&e[Symbol.toStringTag]||e.constructor.name||\"Object\";return n}}function ze(e){try{return fe(e),!1}catch{return!0}}function fe(e){return\"\"+e}function de(e){if(ze(e))return h(\"The provided key is an unsupported type %s. This value must be coerced to a string before before using it here.\",Be(e)),fe(e)}var N=k.ReactCurrentOwner,Ge={key:!0,ref:!0,__self:!0,__source:!0},he,me,V;V={};function Xe(e){if(O.call(e,\"ref\")){var r=Object.getOwnPropertyDescriptor(e,\"ref\").get;if(r&&r.isReactWarning)return!1}return e.ref!==void 0}function He(e){if(O.call(e,\"key\")){var r=Object.getOwnPropertyDescriptor(e,\"key\").get;if(r&&r.isReactWarning)return!1}return e.key!==void 0}function Ke(e,r){if(typeof e.ref==\"string\"&&N.current&&r&&N.current.stateNode!==r){var n=p(N.current.type);V[n]||(h('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(N.current.type),e.ref),V[n]=!0)}}function Je(e,r){{var n=function(){he||(he=!0,h(\"%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)\",r))};n.isReactWarning=!0,Object.defineProperty(e,\"key\",{get:n,configurable:!0})}}function Ze(e,r){{var n=function(){me||(me=!0,h(\"%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)\",r))};n.isReactWarning=!0,Object.defineProperty(e,\"ref\",{get:n,configurable:!0})}}var er=function(e,r,n,a,s,u,i){var o={$$typeof:t,type:e,key:r,ref:n,props:i,_owner:u};return o._store={},Object.defineProperty(o._store,\"validated\",{configurable:!1,enumerable:!1,writable:!0,value:!1}),Object.defineProperty(o,\"_self\",{configurable:!1,enumerable:!1,writable:!1,value:a}),Object.defineProperty(o,\"_source\",{configurable:!1,enumerable:!1,writable:!1,value:s}),Object.freeze&&(Object.freeze(o.props),Object.freeze(o)),o};function rr(e,r,n,a,s){{var u,i={},o=null,m=null;n!==void 0&&(de(n),o=\"\"+n),He(r)&&(de(r.key),o=\"\"+r.key),Xe(r)&&(m=r.ref,Ke(r,s));for(u in r)O.call(r,u)&&!Ge.hasOwnProperty(u)&&(i[u]=r[u]);if(e&&e.defaultProps){var f=e.defaultProps;for(u in f)i[u]===void 0&&(i[u]=f[u])}if(o||m){var d=typeof e==\"function\"?e.displayName||e.name||\"Unknown\":e;o&&Je(i,d),m&&Ze(i,d)}return er(e,o,m,s,a,N.current,i)}}var L=k.ReactCurrentOwner,be=k.ReactDebugCurrentFrame;function w(e){if(e){var r=e._owner,n=C(e.type,e._source,r?r.type:null);be.setExtraStackFrame(n)}else be.setExtraStackFrame(null)}var q;q=!1;function Q(e){return typeof e==\"object\"&&e!==null&&e.$$typeof===t}function ve(){{if(L.current){var e=p(L.current.type);if(e)return`\n\nCheck the render method of \\``+e+\"`.\"}return\"\"}}function nr(e){{if(e!==void 0){var r=e.fileName.replace(/^.*[\\\\\\/]/,\"\"),n=e.lineNumber;return`\n\nCheck your code at `+r+\":\"+n+\".\"}return\"\"}}var pe={};function ar(e){{var r=ve();if(!r){var n=typeof e==\"string\"?e:e.displayName||e.name;n&&(r=`\n\nCheck the top-level render call using <`+n+\">.\")}return r}}function _e(e,r){{if(!e._store||e._store.validated||e.key!=null)return;e._store.validated=!0;var n=ar(r);if(pe[n])return;pe[n]=!0;var a=\"\";e&&e._owner&&e._owner!==L.current&&(a=\" It was passed a child from \"+p(e._owner.type)+\".\"),w(e),h('Each child in a list should have a unique \"key\" prop.%s%s See https://reactjs.org/link/warning-keys for more information.',n,a),w(null)}}function ge(e,r){{if(typeof e!=\"object\")return;if($(e))for(var n=0;n<e.length;n++){var a=e[n];Q(a)&&_e(a,r)}else if(Q(e))e._store&&(e._store.validated=!0);else if(e){var s=Se(e);if(typeof s==\"function\"&&s!==e.entries)for(var u=s.call(e),i;!(i=u.next()).done;)Q(i.value)&&_e(i.value,r)}}}function tr(e){{var r=e.type;if(r==null||typeof r==\"string\")return;var n;if(typeof r==\"function\")n=r.propTypes;else if(typeof r==\"object\"&&(r.$$typeof===T||r.$$typeof===j))n=r.propTypes;else return;if(n){var a=p(r);qe(n,e.props,\"prop\",a,e)}else if(r.PropTypes!==void 0&&!q){q=!0;var s=p(r);h(\"Component %s declared `PropTypes` instead of `propTypes`. Did you misspell the property assignment?\",s||\"Unknown\")}typeof r.getDefaultProps==\"function\"&&!r.getDefaultProps.isReactClassApproved&&h(\"getDefaultProps is only used on classic React.createClass definitions. Use a static property named `defaultProps` instead.\")}}function or(e){{for(var r=Object.keys(e.props),n=0;n<r.length;n++){var a=r[n];if(a!==\"children\"&&a!==\"key\"){w(e),h(\"Invalid prop `%s` supplied to `React.Fragment`. React.Fragment can only have `key` and `children` props.\",a),w(null);break}}e.ref!==null&&(w(e),h(\"Invalid attribute `ref` supplied to `React.Fragment`.\"),w(null))}}function ir(e,r,n,a,s,u){{var i=Ie(e);if(!i){var o=\"\";(e===void 0||typeof e==\"object\"&&e!==null&&Object.keys(e).length===0)&&(o+=\" 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 m=nr(s);m?o+=m:o+=ve();var f;e===null?f=\"null\":$(e)?f=\"array\":e!==void 0&&e.$$typeof===t?(f=\"<\"+(p(e.type)||\"Unknown\")+\" />\",o=\" Did you accidentally export a JSX literal instead of a component?\"):f=typeof e,h(\"React.jsx: type is invalid -- expected a string (for built-in components) or a class/function (for composite components) but got: %s.%s\",f,o)}var d=rr(e,r,n,s,u);if(d==null)return d;if(i){var b=r.children;if(b!==void 0)if(a)if($(b)){for(var x=0;x<b.length;x++)ge(b[x],e);Object.freeze&&Object.freeze(b)}else h(\"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 ge(b,e)}return e===y?or(d):tr(d),d}}var sr=ir;z.Fragment=y,z.jsxDEV=sr})()});var Ne=B((wr,Re)=>{\"use strict\";Re.exports=xe()});var gr={};hr(gr,{default:()=>_r,frontmatter:()=>vr});var c=mr(Ne()),vr={title:\"QStash\",description:\"QStash is a fully managed serverless queue and messaging service designed for the serverless era.\",date:\"2022-07-18\",url:\"https://upstash.com/qstash\",published:!0};function Te(l){let t=Object.assign({p:\"p\",ul:\"ul\",li:\"li\",a:\"a\"},l.components);return(0,c.jsxDEV)(c.Fragment,{children:[(0,c.jsxDEV)(t.p,{children:\"QStash is an HTTP based messaging and scheduling solution for the serverless and edge runtimes.\"},void 0,!1,{fileName:\"/Users/andreasthomas/github/chronark/chronark.com/content/projects/_mdx_bundler_entry_point-174140f5-c063-4967-845a-79db15aa866f.mdx\",lineNumber:10,columnNumber:1},this),`\n`,(0,c.jsxDEV)(t.ul,{children:[`\n`,(0,c.jsxDEV)(t.li,{children:\"100% serverless, no stateful connections required. Messages are pushed to your API.\"},void 0,!1,{fileName:\"/Users/andreasthomas/github/chronark/chronark.com/content/projects/_mdx_bundler_entry_point-174140f5-c063-4967-845a-79db15aa866f.mdx\",lineNumber:12,columnNumber:1},this),`\n`,(0,c.jsxDEV)(t.li,{children:\"At-least-once delivery guaranteed to any public API\"},void 0,!1,{fileName:\"/Users/andreasthomas/github/chronark/chronark.com/content/projects/_mdx_bundler_entry_point-174140f5-c063-4967-845a-79db15aa866f.mdx\",lineNumber:13,columnNumber:1},this),`\n`,(0,c.jsxDEV)(t.li,{children:\"Pubsub via topics\"},void 0,!1,{fileName:\"/Users/andreasthomas/github/chronark/chronark.com/content/projects/_mdx_bundler_entry_point-174140f5-c063-4967-845a-79db15aa866f.mdx\",lineNumber:14,columnNumber:1},this),`\n`,(0,c.jsxDEV)(t.li,{children:\"Delay message delivery\"},void 0,!1,{fileName:\"/Users/andreasthomas/github/chronark/chronark.com/content/projects/_mdx_bundler_entry_point-174140f5-c063-4967-845a-79db15aa866f.mdx\",lineNumber:15,columnNumber:1},this),`\n`,(0,c.jsxDEV)(t.li,{children:\"Message deduplication\"},void 0,!1,{fileName:\"/Users/andreasthomas/github/chronark/chronark.com/content/projects/_mdx_bundler_entry_point-174140f5-c063-4967-845a-79db15aa866f.mdx\",lineNumber:16,columnNumber:1},this),`\n`,(0,c.jsxDEV)(t.li,{children:\"Scheduling via CRON\"},void 0,!1,{fileName:\"/Users/andreasthomas/github/chronark/chronark.com/content/projects/_mdx_bundler_entry_point-174140f5-c063-4967-845a-79db15aa866f.mdx\",lineNumber:17,columnNumber:1},this),`\n`]},void 0,!0,{fileName:\"/Users/andreasthomas/github/chronark/chronark.com/content/projects/_mdx_bundler_entry_point-174140f5-c063-4967-845a-79db15aa866f.mdx\",lineNumber:12,columnNumber:1},this),`\n`,(0,c.jsxDEV)(t.p,{children:\"Formally, QStash is a message queue and task scheduler designed for serverless runtimes. Informally, QStash is a glue for your serverless functions.\"},void 0,!1,{fileName:\"/Users/andreasthomas/github/chronark/chronark.com/content/projects/_mdx_bundler_entry_point-174140f5-c063-4967-845a-79db15aa866f.mdx\",lineNumber:20,columnNumber:1},this),`\n`,(0,c.jsxDEV)(t.p,{children:\"There was a perception serverless was only good for simple tasks. Not anymore. People build powerful systems with serverless stack. Powerful systems are composed of multiple components. Communication among those components is a big engineering problem. There are already great solutions for this problem. But we think existing solutions do not fit in serverless space. Either they are too complex or not designed to work with stateless runtimes. So we want a solution which (is):\"},void 0,!1,{fileName:\"/Users/andreasthomas/github/chronark/chronark.com/content/projects/_mdx_bundler_entry_point-174140f5-c063-4967-845a-79db15aa866f.mdx\",lineNumber:22,columnNumber:1},this),`\n`,(0,c.jsxDEV)(t.ul,{children:[`\n`,(0,c.jsxDEV)(t.li,{children:\"Works anywhere including serverless and edge.\"},void 0,!1,{fileName:\"/Users/andreasthomas/github/chronark/chronark.com/content/projects/_mdx_bundler_entry_point-174140f5-c063-4967-845a-79db15aa866f.mdx\",lineNumber:24,columnNumber:1},this),`\n`,(0,c.jsxDEV)(t.li,{children:\"Messaging as a service with no backend for users to run.\"},void 0,!1,{fileName:\"/Users/andreasthomas/github/chronark/chronark.com/content/projects/_mdx_bundler_entry_point-174140f5-c063-4967-845a-79db15aa866f.mdx\",lineNumber:25,columnNumber:1},this),`\n`,(0,c.jsxDEV)(t.li,{children:\"Lightweight, easy to understand, requires nothing to learn.\"},void 0,!1,{fileName:\"/Users/andreasthomas/github/chronark/chronark.com/content/projects/_mdx_bundler_entry_point-174140f5-c063-4967-845a-79db15aa866f.mdx\",lineNumber:26,columnNumber:1},this),`\n`,(0,c.jsxDEV)(t.li,{children:\"Price scales to zero.\"},void 0,!1,{fileName:\"/Users/andreasthomas/github/chronark/chronark.com/content/projects/_mdx_bundler_entry_point-174140f5-c063-4967-845a-79db15aa866f.mdx\",lineNumber:27,columnNumber:1},this),`\n`]},void 0,!0,{fileName:\"/Users/andreasthomas/github/chronark/chronark.com/content/projects/_mdx_bundler_entry_point-174140f5-c063-4967-845a-79db15aa866f.mdx\",lineNumber:24,columnNumber:1},this),`\n`,(0,c.jsxDEV)(t.p,{children:\"Let's talk about a real world example. We have an e-commerce app and we want to send an informational email after each purchase. We have a service (an API route) for new purchases (newPurchase) and a second service for sending emails and notifications (sendEmail). We can call the sendEmail service from the newPurchase service. But what if the call fails? Should we wait for the response and retry? What if too many calls congest the sendEmail service and the service does not respond on time? You need to handle all these cases in your newPurchase service. Moreover, when you change the contract of sendEmail service; you have to update your newPurchase service too.\"},void 0,!1,{fileName:\"/Users/andreasthomas/github/chronark/chronark.com/content/projects/_mdx_bundler_entry_point-174140f5-c063-4967-845a-79db15aa866f.mdx\",lineNumber:29,columnNumber:1},this),`\n`,(0,c.jsxDEV)(t.p,{children:\"If you use QStash in the above example, you simply send a request to QStash from the newPurchase service. QStash will queue the request and call the sendEmail service. If the service does not respond, QStash will retry with a backoff strategy. The latency of sendEmail service will not affect the newPurchase service, because it will not wait for a response from the sendEmail service. QStash decouples the newPurchase and sendEmail services. You can update both services independently as long as you keep the message format compatible.\"},void 0,!1,{fileName:\"/Users/andreasthomas/github/chronark/chronark.com/content/projects/_mdx_bundler_entry_point-174140f5-c063-4967-845a-79db15aa866f.mdx\",lineNumber:31,columnNumber:1},this),`\n`,(0,c.jsxDEV)(t.p,{children:\"With QStash, you can add delays to the requests. Send an email 3 days after the shipment to remind the customer to add a review. You can also schedule tasks. You can send the requests with a CRON expression, so it will be run repetitively.\"},void 0,!1,{fileName:\"/Users/andreasthomas/github/chronark/chronark.com/content/projects/_mdx_bundler_entry_point-174140f5-c063-4967-845a-79db15aa866f.mdx\",lineNumber:33,columnNumber:1},this),`\n`,(0,c.jsxDEV)(t.p,{children:[\"To learn more about QStash, visit \",(0,c.jsxDEV)(t.a,{href:\"upstash.com/qstash\",children:\"upstash.com/qstash\"},void 0,!1,{fileName:\"/Users/andreasthomas/github/chronark/chronark.com/content/projects/_mdx_bundler_entry_point-174140f5-c063-4967-845a-79db15aa866f.mdx\",lineNumber:36,columnNumber:35},this),\".\"]},void 0,!0,{fileName:\"/Users/andreasthomas/github/chronark/chronark.com/content/projects/_mdx_bundler_entry_point-174140f5-c063-4967-845a-79db15aa866f.mdx\",lineNumber:36,columnNumber:1},this)]},void 0,!0,{fileName:\"/Users/andreasthomas/github/chronark/chronark.com/content/projects/_mdx_bundler_entry_point-174140f5-c063-4967-845a-79db15aa866f.mdx\",lineNumber:1,columnNumber:1},this)}function pr(l={}){let{wrapper:t}=l.components||{};return t?(0,c.jsxDEV)(t,Object.assign({},l,{children:(0,c.jsxDEV)(Te,l,void 0,!1,{fileName:\"/Users/andreasthomas/github/chronark/chronark.com/content/projects/_mdx_bundler_entry_point-174140f5-c063-4967-845a-79db15aa866f.mdx\"},this)}),void 0,!1,{fileName:\"/Users/andreasthomas/github/chronark/chronark.com/content/projects/_mdx_bundler_entry_point-174140f5-c063-4967-845a-79db15aa866f.mdx\"},this):Te(l)}var _r=pr;return br(gr);})();\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/qstash.mdx",
|
|
"_raw": {
|
|
"sourceFilePath": "projects/qstash.mdx",
|
|
"sourceFileName": "qstash.mdx",
|
|
"sourceFileDir": "projects",
|
|
"contentType": "mdx",
|
|
"flattenedPath": "projects/qstash"
|
|
},
|
|
"type": "Project",
|
|
"path": "/projects/qstash",
|
|
"slug": "qstash"
|
|
},
|
|
"documentHash": "1679819571089",
|
|
"hasWarnings": false,
|
|
"documentTypeName": "Project"
|
|
},
|
|
"projects/terraform-provider-vercel.mdx": {
|
|
"document": {
|
|
"published": true,
|
|
"title": "Vercel Terraform Provider",
|
|
"description": "A Terraform provider for Vercel. It has been deprecated it when Vercel rolled out their official provider.",
|
|
"date": "2021-03-16T00:00:00.000Z",
|
|
"url": "https://registry.terraform.io/providers/chronark/vercel/latest",
|
|
"repository": "chronark/terraform-provider-vercel",
|
|
"body": {
|
|
"raw": "\n\n\nBack in the day when Vercel didn't have an official Terraform provider, I wrote one. \nI needed to manage my Vercel projects and especially sync environment variables from different cloud providers.\nTerraform was great to provision some postgres databases on digital ocean, but there was no way to sync the credentials with Vercel.\n\n```hcl\nterraform {\n required_providers {\n vercel = {\n source = \"registry.terraform.io/chronark/vercel\"\n version = \">=0.10.3\"\n }\n }\n}\n\nprovider \"vercel\" {\n token = \"<YOUR_TOKEN>\"\n}\n\nresource \"vercel_project\" \"my_project\" {\n name = \"project-via-terraform\"\n git_repository {\n type = \"github\"\n repo = \"chronark/terraform-provider-vercel\"\n }\n}\n```\n\nIt was a fun project and I learned a lot about Terraform and Vercel's API. \nIt gave me the opportunity to contribute to the Terraform ecosystem and my appreciation for the work that the Terraform team does is immense.\n\nThere have been quite a few individuals and teams that have used this provider and I am happy that it has been useful to you.\n\nNow that Vercel have stepped in, I have decided to [deprecate](https://twitter.com/chronark_/status/1517759708983177218) this one on April 23rd 2022. \n\nPlease use the [official provider](https://registry.terraform.io/providers/vercel/vercel/latest) instead.",
|
|
"code": "var Component=(()=>{var ir=Object.create;var S=Object.defineProperty;var lr=Object.getOwnPropertyDescriptor;var ur=Object.getOwnPropertyNames;var dr=Object.getPrototypeOf,mr=Object.prototype.hasOwnProperty;var G=(u,r)=>()=>(r||u((r={exports:{}}).exports,r),r.exports),hr=(u,r)=>{for(var _ in r)S(u,_,{get:r[_],enumerable:!0})},ve=(u,r,_,k)=>{if(r&&typeof r==\"object\"||typeof r==\"function\")for(let y of ur(r))!mr.call(u,y)&&y!==_&&S(u,y,{get:()=>r[y],enumerable:!(k=lr(r,y))||k.enumerable});return u};var fr=(u,r,_)=>(_=u!=null?ir(dr(u)):{},ve(r||!u||!u.__esModule?S(_,\"default\",{value:u,enumerable:!0}):_,u)),br=u=>ve(S({},\"__esModule\",{value:!0}),u);var ge=G((vr,xe)=>{xe.exports=React});var Ee=G(z=>{\"use strict\";(function(){\"use strict\";var u=ge(),r=Symbol.for(\"react.element\"),_=Symbol.for(\"react.portal\"),k=Symbol.for(\"react.fragment\"),y=Symbol.for(\"react.strict_mode\"),K=Symbol.for(\"react.profiler\"),X=Symbol.for(\"react.provider\"),H=Symbol.for(\"react.context\"),R=Symbol.for(\"react.forward_ref\"),A=Symbol.for(\"react.suspense\"),D=Symbol.for(\"react.suspense_list\"),F=Symbol.for(\"react.memo\"),B=Symbol.for(\"react.lazy\"),Fe=Symbol.for(\"react.offscreen\"),J=Symbol.iterator,Te=\"@@iterator\";function we(e){if(e===null||typeof e!=\"object\")return null;var a=J&&e[J]||e[Te];return typeof a==\"function\"?a:null}var x=u.__SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED;function h(e){{for(var a=arguments.length,t=new Array(a>1?a-1:0),c=1;c<a;c++)t[c-1]=arguments[c];Ce(\"error\",e,t)}}function Ce(e,a,t){{var c=x.ReactDebugCurrentFrame,i=c.getStackAddendum();i!==\"\"&&(a+=\"%s\",t=t.concat([i]));var l=t.map(function(s){return String(s)});l.unshift(\"Warning: \"+a),Function.prototype.apply.call(console[e],console,l)}}var Oe=!1,Pe=!1,Se=!1,Ae=!1,De=!1,Z;Z=Symbol.for(\"react.module.reference\");function Be(e){return!!(typeof e==\"string\"||typeof e==\"function\"||e===k||e===K||De||e===y||e===A||e===D||Ae||e===Fe||Oe||Pe||Se||typeof e==\"object\"&&e!==null&&(e.$$typeof===B||e.$$typeof===F||e.$$typeof===X||e.$$typeof===H||e.$$typeof===R||e.$$typeof===Z||e.getModuleId!==void 0))}function Ie(e,a,t){var c=e.displayName;if(c)return c;var i=a.displayName||a.name||\"\";return i!==\"\"?t+\"(\"+i+\")\":t}function Q(e){return e.displayName||\"Context\"}function p(e){if(e==null)return null;if(typeof e.tag==\"number\"&&h(\"Received an unexpected object in getComponentNameFromType(). This is likely a bug in React. Please file an issue.\"),typeof e==\"function\")return e.displayName||e.name||null;if(typeof e==\"string\")return e;switch(e){case k:return\"Fragment\";case _:return\"Portal\";case K:return\"Profiler\";case y:return\"StrictMode\";case A:return\"Suspense\";case D:return\"SuspenseList\"}if(typeof e==\"object\")switch(e.$$typeof){case H:var a=e;return Q(a)+\".Consumer\";case X:var t=e;return Q(t._context)+\".Provider\";case R:return Ie(e,e.render,\"ForwardRef\");case F:var c=e.displayName||null;return c!==null?c:p(e.type)||\"Memo\";case B:{var i=e,l=i._payload,s=i._init;try{return p(s(l))}catch{return null}}}return null}var v=Object.assign,j=0,ee,re,ne,ae,te,ce,oe;function se(){}se.__reactDisabledLog=!0;function Ve(){{if(j===0){ee=console.log,re=console.info,ne=console.warn,ae=console.error,te=console.group,ce=console.groupCollapsed,oe=console.groupEnd;var e={configurable:!0,enumerable:!0,value:se,writable:!0};Object.defineProperties(console,{info:e,log:e,warn:e,error:e,group:e,groupCollapsed:e,groupEnd:e})}j++}}function Ye(){{if(j--,j===0){var e={configurable:!0,enumerable:!0,writable:!0};Object.defineProperties(console,{log:v({},e,{value:ee}),info:v({},e,{value:re}),warn:v({},e,{value:ne}),error:v({},e,{value:ae}),group:v({},e,{value:te}),groupCollapsed:v({},e,{value:ce}),groupEnd:v({},e,{value:oe})})}j<0&&h(\"disabledDepth fell below zero. This is a bug in React. Please file an issue.\")}}var I=x.ReactCurrentDispatcher,V;function T(e,a,t){{if(V===void 0)try{throw Error()}catch(i){var c=i.stack.trim().match(/\\n( *(at )?)/);V=c&&c[1]||\"\"}return`\n`+V+e}}var Y=!1,w;{var $e=typeof WeakMap==\"function\"?WeakMap:Map;w=new $e}function ie(e,a){if(!e||Y)return\"\";{var t=w.get(e);if(t!==void 0)return t}var c;Y=!0;var i=Error.prepareStackTrace;Error.prepareStackTrace=void 0;var l;l=I.current,I.current=null,Ve();try{if(a){var s=function(){throw Error()};if(Object.defineProperty(s.prototype,\"props\",{set:function(){throw Error()}}),typeof Reflect==\"object\"&&Reflect.construct){try{Reflect.construct(s,[])}catch(N){c=N}Reflect.construct(e,[],s)}else{try{s.call()}catch(N){c=N}e.call(s.prototype)}}else{try{throw Error()}catch(N){c=N}e()}}catch(N){if(N&&c&&typeof N.stack==\"string\"){for(var o=N.stack.split(`\n`),f=c.stack.split(`\n`),d=o.length-1,m=f.length-1;d>=1&&m>=0&&o[d]!==f[m];)m--;for(;d>=1&&m>=0;d--,m--)if(o[d]!==f[m]){if(d!==1||m!==1)do if(d--,m--,m<0||o[d]!==f[m]){var b=`\n`+o[d].replace(\" at new \",\" at \");return e.displayName&&b.includes(\"<anonymous>\")&&(b=b.replace(\"<anonymous>\",e.displayName)),typeof e==\"function\"&&w.set(e,b),b}while(d>=1&&m>=0);break}}}finally{Y=!1,I.current=l,Ye(),Error.prepareStackTrace=i}var E=e?e.displayName||e.name:\"\",ke=E?T(E):\"\";return typeof e==\"function\"&&w.set(e,ke),ke}function We(e,a,t){return ie(e,!1)}function Me(e){var a=e.prototype;return!!(a&&a.isReactComponent)}function C(e,a,t){if(e==null)return\"\";if(typeof e==\"function\")return ie(e,Me(e));if(typeof e==\"string\")return T(e);switch(e){case A:return T(\"Suspense\");case D:return T(\"SuspenseList\")}if(typeof e==\"object\")switch(e.$$typeof){case R:return We(e.render);case F:return C(e.type,a,t);case B:{var c=e,i=c._payload,l=c._init;try{return C(l(i),a,t)}catch{}}}return\"\"}var O=Object.prototype.hasOwnProperty,le={},ue=x.ReactDebugCurrentFrame;function P(e){if(e){var a=e._owner,t=C(e.type,e._source,a?a.type:null);ue.setExtraStackFrame(t)}else ue.setExtraStackFrame(null)}function Le(e,a,t,c,i){{var l=Function.call.bind(O);for(var s in e)if(l(e,s)){var o=void 0;try{if(typeof e[s]!=\"function\"){var f=Error((c||\"React class\")+\": \"+t+\" type `\"+s+\"` is invalid; it must be a function, usually from the `prop-types` package, but received `\"+typeof e[s]+\"`.This often happens because of typos such as `PropTypes.function` instead of `PropTypes.func`.\");throw f.name=\"Invariant Violation\",f}o=e[s](a,s,c,t,null,\"SECRET_DO_NOT_PASS_THIS_OR_YOU_WILL_BE_FIRED\")}catch(d){o=d}o&&!(o instanceof Error)&&(P(i),h(\"%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).\",c||\"React class\",t,s,typeof o),P(null)),o instanceof Error&&!(o.message in le)&&(le[o.message]=!0,P(i),h(\"Failed %s type: %s\",t,o.message),P(null))}}}var qe=Array.isArray;function $(e){return qe(e)}function Ge(e){{var a=typeof Symbol==\"function\"&&Symbol.toStringTag,t=a&&e[Symbol.toStringTag]||e.constructor.name||\"Object\";return t}}function ze(e){try{return de(e),!1}catch{return!0}}function de(e){return\"\"+e}function me(e){if(ze(e))return h(\"The provided key is an unsupported type %s. This value must be coerced to a string before before using it here.\",Ge(e)),de(e)}var U=x.ReactCurrentOwner,Ke={key:!0,ref:!0,__self:!0,__source:!0},he,fe,W;W={};function Xe(e){if(O.call(e,\"ref\")){var a=Object.getOwnPropertyDescriptor(e,\"ref\").get;if(a&&a.isReactWarning)return!1}return e.ref!==void 0}function He(e){if(O.call(e,\"key\")){var a=Object.getOwnPropertyDescriptor(e,\"key\").get;if(a&&a.isReactWarning)return!1}return e.key!==void 0}function Je(e,a){if(typeof e.ref==\"string\"&&U.current&&a&&U.current.stateNode!==a){var t=p(U.current.type);W[t]||(h('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(U.current.type),e.ref),W[t]=!0)}}function Ze(e,a){{var t=function(){he||(he=!0,h(\"%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(e,\"key\",{get:t,configurable:!0})}}function Qe(e,a){{var t=function(){fe||(fe=!0,h(\"%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(e,\"ref\",{get:t,configurable:!0})}}var er=function(e,a,t,c,i,l,s){var o={$$typeof:r,type:e,key:a,ref:t,props:s,_owner:l};return o._store={},Object.defineProperty(o._store,\"validated\",{configurable:!1,enumerable:!1,writable:!0,value:!1}),Object.defineProperty(o,\"_self\",{configurable:!1,enumerable:!1,writable:!1,value:c}),Object.defineProperty(o,\"_source\",{configurable:!1,enumerable:!1,writable:!1,value:i}),Object.freeze&&(Object.freeze(o.props),Object.freeze(o)),o};function rr(e,a,t,c,i){{var l,s={},o=null,f=null;t!==void 0&&(me(t),o=\"\"+t),He(a)&&(me(a.key),o=\"\"+a.key),Xe(a)&&(f=a.ref,Je(a,i));for(l in a)O.call(a,l)&&!Ke.hasOwnProperty(l)&&(s[l]=a[l]);if(e&&e.defaultProps){var d=e.defaultProps;for(l in d)s[l]===void 0&&(s[l]=d[l])}if(o||f){var m=typeof e==\"function\"?e.displayName||e.name||\"Unknown\":e;o&&Ze(s,m),f&&Qe(s,m)}return er(e,o,f,i,c,U.current,s)}}var M=x.ReactCurrentOwner,be=x.ReactDebugCurrentFrame;function g(e){if(e){var a=e._owner,t=C(e.type,e._source,a?a.type:null);be.setExtraStackFrame(t)}else be.setExtraStackFrame(null)}var L;L=!1;function q(e){return typeof e==\"object\"&&e!==null&&e.$$typeof===r}function _e(){{if(M.current){var e=p(M.current.type);if(e)return`\n\nCheck the render method of \\``+e+\"`.\"}return\"\"}}function nr(e){{if(e!==void 0){var a=e.fileName.replace(/^.*[\\\\\\/]/,\"\"),t=e.lineNumber;return`\n\nCheck your code at `+a+\":\"+t+\".\"}return\"\"}}var pe={};function ar(e){{var a=_e();if(!a){var t=typeof e==\"string\"?e:e.displayName||e.name;t&&(a=`\n\nCheck the top-level render call using <`+t+\">.\")}return a}}function Ne(e,a){{if(!e._store||e._store.validated||e.key!=null)return;e._store.validated=!0;var t=ar(a);if(pe[t])return;pe[t]=!0;var c=\"\";e&&e._owner&&e._owner!==M.current&&(c=\" It was passed a child from \"+p(e._owner.type)+\".\"),g(e),h('Each child in a list should have a unique \"key\" prop.%s%s See https://reactjs.org/link/warning-keys for more information.',t,c),g(null)}}function ye(e,a){{if(typeof e!=\"object\")return;if($(e))for(var t=0;t<e.length;t++){var c=e[t];q(c)&&Ne(c,a)}else if(q(e))e._store&&(e._store.validated=!0);else if(e){var i=we(e);if(typeof i==\"function\"&&i!==e.entries)for(var l=i.call(e),s;!(s=l.next()).done;)q(s.value)&&Ne(s.value,a)}}}function tr(e){{var a=e.type;if(a==null||typeof a==\"string\")return;var t;if(typeof a==\"function\")t=a.propTypes;else if(typeof a==\"object\"&&(a.$$typeof===R||a.$$typeof===F))t=a.propTypes;else return;if(t){var c=p(a);Le(t,e.props,\"prop\",c,e)}else if(a.PropTypes!==void 0&&!L){L=!0;var i=p(a);h(\"Component %s declared `PropTypes` instead of `propTypes`. Did you misspell the property assignment?\",i||\"Unknown\")}typeof a.getDefaultProps==\"function\"&&!a.getDefaultProps.isReactClassApproved&&h(\"getDefaultProps is only used on classic React.createClass definitions. Use a static property named `defaultProps` instead.\")}}function cr(e){{for(var a=Object.keys(e.props),t=0;t<a.length;t++){var c=a[t];if(c!==\"children\"&&c!==\"key\"){g(e),h(\"Invalid prop `%s` supplied to `React.Fragment`. React.Fragment can only have `key` and `children` props.\",c),g(null);break}}e.ref!==null&&(g(e),h(\"Invalid attribute `ref` supplied to `React.Fragment`.\"),g(null))}}function or(e,a,t,c,i,l){{var s=Be(e);if(!s){var o=\"\";(e===void 0||typeof e==\"object\"&&e!==null&&Object.keys(e).length===0)&&(o+=\" 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=nr(i);f?o+=f:o+=_e();var d;e===null?d=\"null\":$(e)?d=\"array\":e!==void 0&&e.$$typeof===r?(d=\"<\"+(p(e.type)||\"Unknown\")+\" />\",o=\" Did you accidentally export a JSX literal instead of a component?\"):d=typeof e,h(\"React.jsx: type is invalid -- expected a string (for built-in components) or a class/function (for composite components) but got: %s.%s\",d,o)}var m=rr(e,a,t,i,l);if(m==null)return m;if(s){var b=a.children;if(b!==void 0)if(c)if($(b)){for(var E=0;E<b.length;E++)ye(b[E],e);Object.freeze&&Object.freeze(b)}else h(\"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(b,e)}return e===k?cr(m):tr(m),m}}var sr=or;z.Fragment=k,z.jsxDEV=sr})()});var Ue=G((gr,je)=>{\"use strict\";je.exports=Ee()});var yr={};hr(yr,{default:()=>Nr,frontmatter:()=>_r});var n=fr(Ue()),_r={title:\"Vercel Terraform Provider\",description:\"A Terraform provider for Vercel. It has been deprecated it when Vercel rolled out their official provider.\",date:\"2021-03-16\",repository:\"chronark/terraform-provider-vercel\",url:\"https://registry.terraform.io/providers/chronark/vercel/latest\",published:!0};function Re(u){let r=Object.assign({p:\"p\",div:\"div\",pre:\"pre\",code:\"code\",span:\"span\",a:\"a\"},u.components);return(0,n.jsxDEV)(n.Fragment,{children:[(0,n.jsxDEV)(r.p,{children:`Back in the day when Vercel didn't have an official Terraform provider, I wrote one.\nI needed to manage my Vercel projects and especially sync environment variables from different cloud providers.\nTerraform was great to provision some postgres databases on digital ocean, but there was no way to sync the credentials with Vercel.`},void 0,!1,{fileName:\"/Users/andreasthomas/github/chronark/chronark.com/content/projects/_mdx_bundler_entry_point-43707aa1-1582-45e9-9dc6-bac749aca4c9.mdx\",lineNumber:12,columnNumber:1},this),`\n`,(0,n.jsxDEV)(r.div,{\"data-rehype-pretty-code-fragment\":\"\",children:(0,n.jsxDEV)(r.pre,{\"data-language\":\"hcl\",\"data-theme\":\"default\",children:(0,n.jsxDEV)(r.code,{\"data-language\":\"hcl\",\"data-theme\":\"default\",children:[(0,n.jsxDEV)(r.span,{className:\"line\",children:[(0,n.jsxDEV)(r.span,{style:{color:\"#B392F0\"},children:\"terraform\"},void 0,!1,{fileName:\"/Users/andreasthomas/github/chronark/chronark.com/content/projects/_mdx_bundler_entry_point-43707aa1-1582-45e9-9dc6-bac749aca4c9.mdx\",lineNumber:1,columnNumber:104},this),(0,n.jsxDEV)(r.span,{style:{color:\"#E1E4E8\"},children:\" {\"},void 0,!1,{fileName:\"/Users/andreasthomas/github/chronark/chronark.com/content/projects/_mdx_bundler_entry_point-43707aa1-1582-45e9-9dc6-bac749aca4c9.mdx\",lineNumber:1,columnNumber:149},this)]},void 0,!0,{fileName:\"/Users/andreasthomas/github/chronark/chronark.com/content/projects/_mdx_bundler_entry_point-43707aa1-1582-45e9-9dc6-bac749aca4c9.mdx\",lineNumber:1,columnNumber:85},this),`\n`,(0,n.jsxDEV)(r.span,{className:\"line\",children:[(0,n.jsxDEV)(r.span,{style:{color:\"#E1E4E8\"},children:\" \"},void 0,!1,{fileName:\"/Users/andreasthomas/github/chronark/chronark.com/content/projects/_mdx_bundler_entry_point-43707aa1-1582-45e9-9dc6-bac749aca4c9.mdx\",lineNumber:2,columnNumber:20},this),(0,n.jsxDEV)(r.span,{style:{color:\"#B392F0\"},children:\"required_providers\"},void 0,!1,{fileName:\"/Users/andreasthomas/github/chronark/chronark.com/content/projects/_mdx_bundler_entry_point-43707aa1-1582-45e9-9dc6-bac749aca4c9.mdx\",lineNumber:2,columnNumber:58},this),(0,n.jsxDEV)(r.span,{style:{color:\"#E1E4E8\"},children:\" {\"},void 0,!1,{fileName:\"/Users/andreasthomas/github/chronark/chronark.com/content/projects/_mdx_bundler_entry_point-43707aa1-1582-45e9-9dc6-bac749aca4c9.mdx\",lineNumber:2,columnNumber:112},this)]},void 0,!0,{fileName:\"/Users/andreasthomas/github/chronark/chronark.com/content/projects/_mdx_bundler_entry_point-43707aa1-1582-45e9-9dc6-bac749aca4c9.mdx\",lineNumber:2,columnNumber:1},this),`\n`,(0,n.jsxDEV)(r.span,{className:\"line\",children:[(0,n.jsxDEV)(r.span,{style:{color:\"#E1E4E8\"},children:\" vercel\"},void 0,!1,{fileName:\"/Users/andreasthomas/github/chronark/chronark.com/content/projects/_mdx_bundler_entry_point-43707aa1-1582-45e9-9dc6-bac749aca4c9.mdx\",lineNumber:3,columnNumber:20},this),(0,n.jsxDEV)(r.span,{style:{color:\"#FFAB70\"},children:\" \"},void 0,!1,{fileName:\"/Users/andreasthomas/github/chronark/chronark.com/content/projects/_mdx_bundler_entry_point-43707aa1-1582-45e9-9dc6-bac749aca4c9.mdx\",lineNumber:3,columnNumber:66},this),(0,n.jsxDEV)(r.span,{style:{color:\"#F97583\"},children:\"=\"},void 0,!1,{fileName:\"/Users/andreasthomas/github/chronark/chronark.com/content/projects/_mdx_bundler_entry_point-43707aa1-1582-45e9-9dc6-bac749aca4c9.mdx\",lineNumber:3,columnNumber:103},this),(0,n.jsxDEV)(r.span,{style:{color:\"#FFAB70\"},children:\" \"},void 0,!1,{fileName:\"/Users/andreasthomas/github/chronark/chronark.com/content/projects/_mdx_bundler_entry_point-43707aa1-1582-45e9-9dc6-bac749aca4c9.mdx\",lineNumber:3,columnNumber:140},this),(0,n.jsxDEV)(r.span,{style:{color:\"#E1E4E8\"},children:\"{\"},void 0,!1,{fileName:\"/Users/andreasthomas/github/chronark/chronark.com/content/projects/_mdx_bundler_entry_point-43707aa1-1582-45e9-9dc6-bac749aca4c9.mdx\",lineNumber:3,columnNumber:177},this)]},void 0,!0,{fileName:\"/Users/andreasthomas/github/chronark/chronark.com/content/projects/_mdx_bundler_entry_point-43707aa1-1582-45e9-9dc6-bac749aca4c9.mdx\",lineNumber:3,columnNumber:1},this),`\n`,(0,n.jsxDEV)(r.span,{className:\"line\",children:[(0,n.jsxDEV)(r.span,{style:{color:\"#E1E4E8\"},children:\" source \"},void 0,!1,{fileName:\"/Users/andreasthomas/github/chronark/chronark.com/content/projects/_mdx_bundler_entry_point-43707aa1-1582-45e9-9dc6-bac749aca4c9.mdx\",lineNumber:4,columnNumber:20},this),(0,n.jsxDEV)(r.span,{style:{color:\"#F97583\"},children:\"=\"},void 0,!1,{fileName:\"/Users/andreasthomas/github/chronark/chronark.com/content/projects/_mdx_bundler_entry_point-43707aa1-1582-45e9-9dc6-bac749aca4c9.mdx\",lineNumber:4,columnNumber:70},this),(0,n.jsxDEV)(r.span,{style:{color:\"#E1E4E8\"},children:\" \"},void 0,!1,{fileName:\"/Users/andreasthomas/github/chronark/chronark.com/content/projects/_mdx_bundler_entry_point-43707aa1-1582-45e9-9dc6-bac749aca4c9.mdx\",lineNumber:4,columnNumber:107},this),(0,n.jsxDEV)(r.span,{style:{color:\"#9ECBFF\"},children:'\"registry.terraform.io/chronark/vercel\"'},void 0,!1,{fileName:\"/Users/andreasthomas/github/chronark/chronark.com/content/projects/_mdx_bundler_entry_point-43707aa1-1582-45e9-9dc6-bac749aca4c9.mdx\",lineNumber:4,columnNumber:144},this)]},void 0,!0,{fileName:\"/Users/andreasthomas/github/chronark/chronark.com/content/projects/_mdx_bundler_entry_point-43707aa1-1582-45e9-9dc6-bac749aca4c9.mdx\",lineNumber:4,columnNumber:1},this),`\n`,(0,n.jsxDEV)(r.span,{className:\"line\",children:[(0,n.jsxDEV)(r.span,{style:{color:\"#E1E4E8\"},children:\" version \"},void 0,!1,{fileName:\"/Users/andreasthomas/github/chronark/chronark.com/content/projects/_mdx_bundler_entry_point-43707aa1-1582-45e9-9dc6-bac749aca4c9.mdx\",lineNumber:5,columnNumber:20},this),(0,n.jsxDEV)(r.span,{style:{color:\"#F97583\"},children:\"=\"},void 0,!1,{fileName:\"/Users/andreasthomas/github/chronark/chronark.com/content/projects/_mdx_bundler_entry_point-43707aa1-1582-45e9-9dc6-bac749aca4c9.mdx\",lineNumber:5,columnNumber:70},this),(0,n.jsxDEV)(r.span,{style:{color:\"#E1E4E8\"},children:\" \"},void 0,!1,{fileName:\"/Users/andreasthomas/github/chronark/chronark.com/content/projects/_mdx_bundler_entry_point-43707aa1-1582-45e9-9dc6-bac749aca4c9.mdx\",lineNumber:5,columnNumber:107},this),(0,n.jsxDEV)(r.span,{style:{color:\"#9ECBFF\"},children:'\">=0.10.3\"'},void 0,!1,{fileName:\"/Users/andreasthomas/github/chronark/chronark.com/content/projects/_mdx_bundler_entry_point-43707aa1-1582-45e9-9dc6-bac749aca4c9.mdx\",lineNumber:5,columnNumber:144},this)]},void 0,!0,{fileName:\"/Users/andreasthomas/github/chronark/chronark.com/content/projects/_mdx_bundler_entry_point-43707aa1-1582-45e9-9dc6-bac749aca4c9.mdx\",lineNumber:5,columnNumber:1},this),`\n`,(0,n.jsxDEV)(r.span,{className:\"line\",children:(0,n.jsxDEV)(r.span,{style:{color:\"#E1E4E8\"},children:\" }\"},void 0,!1,{fileName:\"/Users/andreasthomas/github/chronark/chronark.com/content/projects/_mdx_bundler_entry_point-43707aa1-1582-45e9-9dc6-bac749aca4c9.mdx\",lineNumber:6,columnNumber:20},this)},void 0,!1,{fileName:\"/Users/andreasthomas/github/chronark/chronark.com/content/projects/_mdx_bundler_entry_point-43707aa1-1582-45e9-9dc6-bac749aca4c9.mdx\",lineNumber:6,columnNumber:1},this),`\n`,(0,n.jsxDEV)(r.span,{className:\"line\",children:(0,n.jsxDEV)(r.span,{style:{color:\"#E1E4E8\"},children:\" }\"},void 0,!1,{fileName:\"/Users/andreasthomas/github/chronark/chronark.com/content/projects/_mdx_bundler_entry_point-43707aa1-1582-45e9-9dc6-bac749aca4c9.mdx\",lineNumber:7,columnNumber:20},this)},void 0,!1,{fileName:\"/Users/andreasthomas/github/chronark/chronark.com/content/projects/_mdx_bundler_entry_point-43707aa1-1582-45e9-9dc6-bac749aca4c9.mdx\",lineNumber:7,columnNumber:1},this),`\n`,(0,n.jsxDEV)(r.span,{className:\"line\",children:(0,n.jsxDEV)(r.span,{style:{color:\"#E1E4E8\"},children:\"}\"},void 0,!1,{fileName:\"/Users/andreasthomas/github/chronark/chronark.com/content/projects/_mdx_bundler_entry_point-43707aa1-1582-45e9-9dc6-bac749aca4c9.mdx\",lineNumber:8,columnNumber:20},this)},void 0,!1,{fileName:\"/Users/andreasthomas/github/chronark/chronark.com/content/projects/_mdx_bundler_entry_point-43707aa1-1582-45e9-9dc6-bac749aca4c9.mdx\",lineNumber:8,columnNumber:1},this),`\n`,(0,n.jsxDEV)(r.span,{className:\"line\",children:\" \"},void 0,!1,{fileName:\"/Users/andreasthomas/github/chronark/chronark.com/content/projects/_mdx_bundler_entry_point-43707aa1-1582-45e9-9dc6-bac749aca4c9.mdx\",lineNumber:9,columnNumber:1},this),`\n`,(0,n.jsxDEV)(r.span,{className:\"line\",children:[(0,n.jsxDEV)(r.span,{style:{color:\"#B392F0\"},children:\"provider\"},void 0,!1,{fileName:\"/Users/andreasthomas/github/chronark/chronark.com/content/projects/_mdx_bundler_entry_point-43707aa1-1582-45e9-9dc6-bac749aca4c9.mdx\",lineNumber:10,columnNumber:20},this),(0,n.jsxDEV)(r.span,{style:{color:\"#E1E4E8\"},children:\" \"},void 0,!1,{fileName:\"/Users/andreasthomas/github/chronark/chronark.com/content/projects/_mdx_bundler_entry_point-43707aa1-1582-45e9-9dc6-bac749aca4c9.mdx\",lineNumber:10,columnNumber:64},this),(0,n.jsxDEV)(r.span,{style:{color:\"#79B8FF\"},children:'\"vercel\"'},void 0,!1,{fileName:\"/Users/andreasthomas/github/chronark/chronark.com/content/projects/_mdx_bundler_entry_point-43707aa1-1582-45e9-9dc6-bac749aca4c9.mdx\",lineNumber:10,columnNumber:101},this),(0,n.jsxDEV)(r.span,{style:{color:\"#E1E4E8\"},children:\" {\"},void 0,!1,{fileName:\"/Users/andreasthomas/github/chronark/chronark.com/content/projects/_mdx_bundler_entry_point-43707aa1-1582-45e9-9dc6-bac749aca4c9.mdx\",lineNumber:10,columnNumber:155},this)]},void 0,!0,{fileName:\"/Users/andreasthomas/github/chronark/chronark.com/content/projects/_mdx_bundler_entry_point-43707aa1-1582-45e9-9dc6-bac749aca4c9.mdx\",lineNumber:10,columnNumber:1},this),`\n`,(0,n.jsxDEV)(r.span,{className:\"line\",children:[(0,n.jsxDEV)(r.span,{style:{color:\"#E1E4E8\"},children:\" token\"},void 0,!1,{fileName:\"/Users/andreasthomas/github/chronark/chronark.com/content/projects/_mdx_bundler_entry_point-43707aa1-1582-45e9-9dc6-bac749aca4c9.mdx\",lineNumber:11,columnNumber:20},this),(0,n.jsxDEV)(r.span,{style:{color:\"#FFAB70\"},children:\" \"},void 0,!1,{fileName:\"/Users/andreasthomas/github/chronark/chronark.com/content/projects/_mdx_bundler_entry_point-43707aa1-1582-45e9-9dc6-bac749aca4c9.mdx\",lineNumber:11,columnNumber:63},this),(0,n.jsxDEV)(r.span,{style:{color:\"#F97583\"},children:\"=\"},void 0,!1,{fileName:\"/Users/andreasthomas/github/chronark/chronark.com/content/projects/_mdx_bundler_entry_point-43707aa1-1582-45e9-9dc6-bac749aca4c9.mdx\",lineNumber:11,columnNumber:100},this),(0,n.jsxDEV)(r.span,{style:{color:\"#FFAB70\"},children:\" \"},void 0,!1,{fileName:\"/Users/andreasthomas/github/chronark/chronark.com/content/projects/_mdx_bundler_entry_point-43707aa1-1582-45e9-9dc6-bac749aca4c9.mdx\",lineNumber:11,columnNumber:137},this),(0,n.jsxDEV)(r.span,{style:{color:\"#9ECBFF\"},children:'\"<YOUR_TOKEN>\"'},void 0,!1,{fileName:\"/Users/andreasthomas/github/chronark/chronark.com/content/projects/_mdx_bundler_entry_point-43707aa1-1582-45e9-9dc6-bac749aca4c9.mdx\",lineNumber:11,columnNumber:174},this)]},void 0,!0,{fileName:\"/Users/andreasthomas/github/chronark/chronark.com/content/projects/_mdx_bundler_entry_point-43707aa1-1582-45e9-9dc6-bac749aca4c9.mdx\",lineNumber:11,columnNumber:1},this),`\n`,(0,n.jsxDEV)(r.span,{className:\"line\",children:(0,n.jsxDEV)(r.span,{style:{color:\"#E1E4E8\"},children:\"}\"},void 0,!1,{fileName:\"/Users/andreasthomas/github/chronark/chronark.com/content/projects/_mdx_bundler_entry_point-43707aa1-1582-45e9-9dc6-bac749aca4c9.mdx\",lineNumber:12,columnNumber:20},this)},void 0,!1,{fileName:\"/Users/andreasthomas/github/chronark/chronark.com/content/projects/_mdx_bundler_entry_point-43707aa1-1582-45e9-9dc6-bac749aca4c9.mdx\",lineNumber:12,columnNumber:1},this),`\n`,(0,n.jsxDEV)(r.span,{className:\"line\",children:\" \"},void 0,!1,{fileName:\"/Users/andreasthomas/github/chronark/chronark.com/content/projects/_mdx_bundler_entry_point-43707aa1-1582-45e9-9dc6-bac749aca4c9.mdx\",lineNumber:13,columnNumber:1},this),`\n`,(0,n.jsxDEV)(r.span,{className:\"line\",children:[(0,n.jsxDEV)(r.span,{style:{color:\"#B392F0\"},children:\"resource\"},void 0,!1,{fileName:\"/Users/andreasthomas/github/chronark/chronark.com/content/projects/_mdx_bundler_entry_point-43707aa1-1582-45e9-9dc6-bac749aca4c9.mdx\",lineNumber:14,columnNumber:20},this),(0,n.jsxDEV)(r.span,{style:{color:\"#E1E4E8\"},children:\" \"},void 0,!1,{fileName:\"/Users/andreasthomas/github/chronark/chronark.com/content/projects/_mdx_bundler_entry_point-43707aa1-1582-45e9-9dc6-bac749aca4c9.mdx\",lineNumber:14,columnNumber:64},this),(0,n.jsxDEV)(r.span,{style:{color:\"#79B8FF\"},children:'\"vercel_project\"'},void 0,!1,{fileName:\"/Users/andreasthomas/github/chronark/chronark.com/content/projects/_mdx_bundler_entry_point-43707aa1-1582-45e9-9dc6-bac749aca4c9.mdx\",lineNumber:14,columnNumber:101},this),(0,n.jsxDEV)(r.span,{style:{color:\"#E1E4E8\"},children:\" \"},void 0,!1,{fileName:\"/Users/andreasthomas/github/chronark/chronark.com/content/projects/_mdx_bundler_entry_point-43707aa1-1582-45e9-9dc6-bac749aca4c9.mdx\",lineNumber:14,columnNumber:163},this),(0,n.jsxDEV)(r.span,{style:{color:\"#79B8FF\"},children:'\"my_project\"'},void 0,!1,{fileName:\"/Users/andreasthomas/github/chronark/chronark.com/content/projects/_mdx_bundler_entry_point-43707aa1-1582-45e9-9dc6-bac749aca4c9.mdx\",lineNumber:14,columnNumber:200},this),(0,n.jsxDEV)(r.span,{style:{color:\"#E1E4E8\"},children:\" {\"},void 0,!1,{fileName:\"/Users/andreasthomas/github/chronark/chronark.com/content/projects/_mdx_bundler_entry_point-43707aa1-1582-45e9-9dc6-bac749aca4c9.mdx\",lineNumber:14,columnNumber:258},this)]},void 0,!0,{fileName:\"/Users/andreasthomas/github/chronark/chronark.com/content/projects/_mdx_bundler_entry_point-43707aa1-1582-45e9-9dc6-bac749aca4c9.mdx\",lineNumber:14,columnNumber:1},this),`\n`,(0,n.jsxDEV)(r.span,{className:\"line\",children:[(0,n.jsxDEV)(r.span,{style:{color:\"#E1E4E8\"},children:\" name\"},void 0,!1,{fileName:\"/Users/andreasthomas/github/chronark/chronark.com/content/projects/_mdx_bundler_entry_point-43707aa1-1582-45e9-9dc6-bac749aca4c9.mdx\",lineNumber:15,columnNumber:20},this),(0,n.jsxDEV)(r.span,{style:{color:\"#FFAB70\"},children:\" \"},void 0,!1,{fileName:\"/Users/andreasthomas/github/chronark/chronark.com/content/projects/_mdx_bundler_entry_point-43707aa1-1582-45e9-9dc6-bac749aca4c9.mdx\",lineNumber:15,columnNumber:62},this),(0,n.jsxDEV)(r.span,{style:{color:\"#F97583\"},children:\"=\"},void 0,!1,{fileName:\"/Users/andreasthomas/github/chronark/chronark.com/content/projects/_mdx_bundler_entry_point-43707aa1-1582-45e9-9dc6-bac749aca4c9.mdx\",lineNumber:15,columnNumber:99},this),(0,n.jsxDEV)(r.span,{style:{color:\"#FFAB70\"},children:\" \"},void 0,!1,{fileName:\"/Users/andreasthomas/github/chronark/chronark.com/content/projects/_mdx_bundler_entry_point-43707aa1-1582-45e9-9dc6-bac749aca4c9.mdx\",lineNumber:15,columnNumber:136},this),(0,n.jsxDEV)(r.span,{style:{color:\"#9ECBFF\"},children:'\"project-via-terraform\"'},void 0,!1,{fileName:\"/Users/andreasthomas/github/chronark/chronark.com/content/projects/_mdx_bundler_entry_point-43707aa1-1582-45e9-9dc6-bac749aca4c9.mdx\",lineNumber:15,columnNumber:173},this)]},void 0,!0,{fileName:\"/Users/andreasthomas/github/chronark/chronark.com/content/projects/_mdx_bundler_entry_point-43707aa1-1582-45e9-9dc6-bac749aca4c9.mdx\",lineNumber:15,columnNumber:1},this),`\n`,(0,n.jsxDEV)(r.span,{className:\"line\",children:[(0,n.jsxDEV)(r.span,{style:{color:\"#E1E4E8\"},children:\" \"},void 0,!1,{fileName:\"/Users/andreasthomas/github/chronark/chronark.com/content/projects/_mdx_bundler_entry_point-43707aa1-1582-45e9-9dc6-bac749aca4c9.mdx\",lineNumber:16,columnNumber:20},this),(0,n.jsxDEV)(r.span,{style:{color:\"#B392F0\"},children:\"git_repository\"},void 0,!1,{fileName:\"/Users/andreasthomas/github/chronark/chronark.com/content/projects/_mdx_bundler_entry_point-43707aa1-1582-45e9-9dc6-bac749aca4c9.mdx\",lineNumber:16,columnNumber:58},this),(0,n.jsxDEV)(r.span,{style:{color:\"#E1E4E8\"},children:\" {\"},void 0,!1,{fileName:\"/Users/andreasthomas/github/chronark/chronark.com/content/projects/_mdx_bundler_entry_point-43707aa1-1582-45e9-9dc6-bac749aca4c9.mdx\",lineNumber:16,columnNumber:108},this)]},void 0,!0,{fileName:\"/Users/andreasthomas/github/chronark/chronark.com/content/projects/_mdx_bundler_entry_point-43707aa1-1582-45e9-9dc6-bac749aca4c9.mdx\",lineNumber:16,columnNumber:1},this),`\n`,(0,n.jsxDEV)(r.span,{className:\"line\",children:[(0,n.jsxDEV)(r.span,{style:{color:\"#E1E4E8\"},children:\" type\"},void 0,!1,{fileName:\"/Users/andreasthomas/github/chronark/chronark.com/content/projects/_mdx_bundler_entry_point-43707aa1-1582-45e9-9dc6-bac749aca4c9.mdx\",lineNumber:17,columnNumber:20},this),(0,n.jsxDEV)(r.span,{style:{color:\"#FFAB70\"},children:\" \"},void 0,!1,{fileName:\"/Users/andreasthomas/github/chronark/chronark.com/content/projects/_mdx_bundler_entry_point-43707aa1-1582-45e9-9dc6-bac749aca4c9.mdx\",lineNumber:17,columnNumber:64},this),(0,n.jsxDEV)(r.span,{style:{color:\"#F97583\"},children:\"=\"},void 0,!1,{fileName:\"/Users/andreasthomas/github/chronark/chronark.com/content/projects/_mdx_bundler_entry_point-43707aa1-1582-45e9-9dc6-bac749aca4c9.mdx\",lineNumber:17,columnNumber:101},this),(0,n.jsxDEV)(r.span,{style:{color:\"#FFAB70\"},children:\" \"},void 0,!1,{fileName:\"/Users/andreasthomas/github/chronark/chronark.com/content/projects/_mdx_bundler_entry_point-43707aa1-1582-45e9-9dc6-bac749aca4c9.mdx\",lineNumber:17,columnNumber:138},this),(0,n.jsxDEV)(r.span,{style:{color:\"#9ECBFF\"},children:'\"github\"'},void 0,!1,{fileName:\"/Users/andreasthomas/github/chronark/chronark.com/content/projects/_mdx_bundler_entry_point-43707aa1-1582-45e9-9dc6-bac749aca4c9.mdx\",lineNumber:17,columnNumber:175},this)]},void 0,!0,{fileName:\"/Users/andreasthomas/github/chronark/chronark.com/content/projects/_mdx_bundler_entry_point-43707aa1-1582-45e9-9dc6-bac749aca4c9.mdx\",lineNumber:17,columnNumber:1},this),`\n`,(0,n.jsxDEV)(r.span,{className:\"line\",children:[(0,n.jsxDEV)(r.span,{style:{color:\"#E1E4E8\"},children:\" repo\"},void 0,!1,{fileName:\"/Users/andreasthomas/github/chronark/chronark.com/content/projects/_mdx_bundler_entry_point-43707aa1-1582-45e9-9dc6-bac749aca4c9.mdx\",lineNumber:18,columnNumber:20},this),(0,n.jsxDEV)(r.span,{style:{color:\"#FFAB70\"},children:\" \"},void 0,!1,{fileName:\"/Users/andreasthomas/github/chronark/chronark.com/content/projects/_mdx_bundler_entry_point-43707aa1-1582-45e9-9dc6-bac749aca4c9.mdx\",lineNumber:18,columnNumber:64},this),(0,n.jsxDEV)(r.span,{style:{color:\"#F97583\"},children:\"=\"},void 0,!1,{fileName:\"/Users/andreasthomas/github/chronark/chronark.com/content/projects/_mdx_bundler_entry_point-43707aa1-1582-45e9-9dc6-bac749aca4c9.mdx\",lineNumber:18,columnNumber:101},this),(0,n.jsxDEV)(r.span,{style:{color:\"#FFAB70\"},children:\" \"},void 0,!1,{fileName:\"/Users/andreasthomas/github/chronark/chronark.com/content/projects/_mdx_bundler_entry_point-43707aa1-1582-45e9-9dc6-bac749aca4c9.mdx\",lineNumber:18,columnNumber:138},this),(0,n.jsxDEV)(r.span,{style:{color:\"#9ECBFF\"},children:'\"chronark/terraform-provider-vercel\"'},void 0,!1,{fileName:\"/Users/andreasthomas/github/chronark/chronark.com/content/projects/_mdx_bundler_entry_point-43707aa1-1582-45e9-9dc6-bac749aca4c9.mdx\",lineNumber:18,columnNumber:175},this)]},void 0,!0,{fileName:\"/Users/andreasthomas/github/chronark/chronark.com/content/projects/_mdx_bundler_entry_point-43707aa1-1582-45e9-9dc6-bac749aca4c9.mdx\",lineNumber:18,columnNumber:1},this),`\n`,(0,n.jsxDEV)(r.span,{className:\"line\",children:(0,n.jsxDEV)(r.span,{style:{color:\"#E1E4E8\"},children:\" }\"},void 0,!1,{fileName:\"/Users/andreasthomas/github/chronark/chronark.com/content/projects/_mdx_bundler_entry_point-43707aa1-1582-45e9-9dc6-bac749aca4c9.mdx\",lineNumber:19,columnNumber:20},this)},void 0,!1,{fileName:\"/Users/andreasthomas/github/chronark/chronark.com/content/projects/_mdx_bundler_entry_point-43707aa1-1582-45e9-9dc6-bac749aca4c9.mdx\",lineNumber:19,columnNumber:1},this),`\n`,(0,n.jsxDEV)(r.span,{className:\"line\",children:(0,n.jsxDEV)(r.span,{style:{color:\"#E1E4E8\"},children:\"}\"},void 0,!1,{fileName:\"/Users/andreasthomas/github/chronark/chronark.com/content/projects/_mdx_bundler_entry_point-43707aa1-1582-45e9-9dc6-bac749aca4c9.mdx\",lineNumber:20,columnNumber:20},this)},void 0,!1,{fileName:\"/Users/andreasthomas/github/chronark/chronark.com/content/projects/_mdx_bundler_entry_point-43707aa1-1582-45e9-9dc6-bac749aca4c9.mdx\",lineNumber:20,columnNumber:1},this)]},void 0,!0,{fileName:\"/Users/andreasthomas/github/chronark/chronark.com/content/projects/_mdx_bundler_entry_point-43707aa1-1582-45e9-9dc6-bac749aca4c9.mdx\",lineNumber:1,columnNumber:79},this)},void 0,!1,{fileName:\"/Users/andreasthomas/github/chronark/chronark.com/content/projects/_mdx_bundler_entry_point-43707aa1-1582-45e9-9dc6-bac749aca4c9.mdx\",lineNumber:1,columnNumber:1},this)},void 0,!1,{fileName:\"/Users/andreasthomas/github/chronark/chronark.com/content/projects/_mdx_bundler_entry_point-43707aa1-1582-45e9-9dc6-bac749aca4c9.mdx\",lineNumber:16,columnNumber:1},this),`\n`,(0,n.jsxDEV)(r.p,{children:`It was a fun project and I learned a lot about Terraform and Vercel's API.\nIt gave me the opportunity to contribute to the Terraform ecosystem and my appreciation for the work that the Terraform team does is immense.`},void 0,!1,{fileName:\"/Users/andreasthomas/github/chronark/chronark.com/content/projects/_mdx_bundler_entry_point-43707aa1-1582-45e9-9dc6-bac749aca4c9.mdx\",lineNumber:39,columnNumber:1},this),`\n`,(0,n.jsxDEV)(r.p,{children:\"There have been quite a few individuals and teams that have used this provider and I am happy that it has been useful to you.\"},void 0,!1,{fileName:\"/Users/andreasthomas/github/chronark/chronark.com/content/projects/_mdx_bundler_entry_point-43707aa1-1582-45e9-9dc6-bac749aca4c9.mdx\",lineNumber:42,columnNumber:1},this),`\n`,(0,n.jsxDEV)(r.p,{children:[\"Now that Vercel have stepped in, I have decided to \",(0,n.jsxDEV)(r.a,{href:\"https://twitter.com/chronark_/status/1517759708983177218\",children:\"deprecate\"},void 0,!1,{fileName:\"/Users/andreasthomas/github/chronark/chronark.com/content/projects/_mdx_bundler_entry_point-43707aa1-1582-45e9-9dc6-bac749aca4c9.mdx\",lineNumber:44,columnNumber:52},this),\" this one on April 23rd 2022.\"]},void 0,!0,{fileName:\"/Users/andreasthomas/github/chronark/chronark.com/content/projects/_mdx_bundler_entry_point-43707aa1-1582-45e9-9dc6-bac749aca4c9.mdx\",lineNumber:44,columnNumber:1},this),`\n`,(0,n.jsxDEV)(r.p,{children:[\"Please use the \",(0,n.jsxDEV)(r.a,{href:\"https://registry.terraform.io/providers/vercel/vercel/latest\",children:\"official provider\"},void 0,!1,{fileName:\"/Users/andreasthomas/github/chronark/chronark.com/content/projects/_mdx_bundler_entry_point-43707aa1-1582-45e9-9dc6-bac749aca4c9.mdx\",lineNumber:46,columnNumber:16},this),\" instead.\"]},void 0,!0,{fileName:\"/Users/andreasthomas/github/chronark/chronark.com/content/projects/_mdx_bundler_entry_point-43707aa1-1582-45e9-9dc6-bac749aca4c9.mdx\",lineNumber:46,columnNumber:1},this)]},void 0,!0,{fileName:\"/Users/andreasthomas/github/chronark/chronark.com/content/projects/_mdx_bundler_entry_point-43707aa1-1582-45e9-9dc6-bac749aca4c9.mdx\",lineNumber:1,columnNumber:1},this)}function pr(u={}){let{wrapper:r}=u.components||{};return r?(0,n.jsxDEV)(r,Object.assign({},u,{children:(0,n.jsxDEV)(Re,u,void 0,!1,{fileName:\"/Users/andreasthomas/github/chronark/chronark.com/content/projects/_mdx_bundler_entry_point-43707aa1-1582-45e9-9dc6-bac749aca4c9.mdx\"},this)}),void 0,!1,{fileName:\"/Users/andreasthomas/github/chronark/chronark.com/content/projects/_mdx_bundler_entry_point-43707aa1-1582-45e9-9dc6-bac749aca4c9.mdx\"},this):Re(u)}var Nr=pr;return br(yr);})();\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/terraform-provider-vercel.mdx",
|
|
"_raw": {
|
|
"sourceFilePath": "projects/terraform-provider-vercel.mdx",
|
|
"sourceFileName": "terraform-provider-vercel.mdx",
|
|
"sourceFileDir": "projects",
|
|
"contentType": "mdx",
|
|
"flattenedPath": "projects/terraform-provider-vercel"
|
|
},
|
|
"type": "Project",
|
|
"path": "/projects/terraform-provider-vercel",
|
|
"slug": "terraform-provider-vercel"
|
|
},
|
|
"documentHash": "1679819574612",
|
|
"hasWarnings": false,
|
|
"documentTypeName": "Project"
|
|
},
|
|
"projects/upstash-auth-analytics.mdx": {
|
|
"document": {
|
|
"title": "Upstash Auth Analytics",
|
|
"description": "A library to record and analyse Auth.js user behaviour",
|
|
"url": "https://console.upstash.com/ratelimit",
|
|
"repository": "upstash/auth-analytics",
|
|
"body": {
|
|
"raw": "\nTODO:",
|
|
"code": "var Component=(()=>{var sr=Object.create;var A=Object.defineProperty;var fr=Object.getOwnPropertyDescriptor;var cr=Object.getOwnPropertyNames;var lr=Object.getPrototypeOf,dr=Object.prototype.hasOwnProperty;var q=(s,f)=>()=>(f||s((f={exports:{}}).exports,f),f.exports),vr=(s,f)=>{for(var h in f)A(s,h,{get:f[h],enumerable:!0})},_e=(s,f,h,E)=>{if(f&&typeof f==\"object\"||typeof f==\"function\")for(let m of cr(f))!dr.call(s,m)&&m!==h&&A(s,m,{get:()=>f[m],enumerable:!(E=fr(f,m))||E.enumerable});return s};var pr=(s,f,h)=>(h=s!=null?sr(lr(s)):{},_e(f||!s||!s.__esModule?A(h,\"default\",{value:s,enumerable:!0}):h,s)),hr=s=>_e(A({},\"__esModule\",{value:!0}),s);var Te=q((_r,Re)=>{Re.exports=React});var Ce=q(z=>{\"use strict\";(function(){\"use strict\";var s=Te(),f=Symbol.for(\"react.element\"),h=Symbol.for(\"react.portal\"),E=Symbol.for(\"react.fragment\"),m=Symbol.for(\"react.strict_mode\"),X=Symbol.for(\"react.profiler\"),K=Symbol.for(\"react.provider\"),H=Symbol.for(\"react.context\"),w=Symbol.for(\"react.forward_ref\"),I=Symbol.for(\"react.suspense\"),Y=Symbol.for(\"react.suspense_list\"),P=Symbol.for(\"react.memo\"),$=Symbol.for(\"react.lazy\"),Se=Symbol.for(\"react.offscreen\"),J=Symbol.iterator,je=\"@@iterator\";function xe(e){if(e===null||typeof e!=\"object\")return null;var r=J&&e[J]||e[je];return typeof r==\"function\"?r:null}var _=s.__SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED;function d(e){{for(var r=arguments.length,t=new Array(r>1?r-1:0),n=1;n<r;n++)t[n-1]=arguments[n];ke(\"error\",e,t)}}function ke(e,r,t){{var n=_.ReactDebugCurrentFrame,i=n.getStackAddendum();i!==\"\"&&(r+=\"%s\",t=t.concat([i]));var u=t.map(function(o){return String(o)});u.unshift(\"Warning: \"+r),Function.prototype.apply.call(console[e],console,u)}}var De=!1,Ae=!1,Fe=!1,Ie=!1,Ye=!1,Z;Z=Symbol.for(\"react.module.reference\");function $e(e){return!!(typeof e==\"string\"||typeof e==\"function\"||e===E||e===X||Ye||e===m||e===I||e===Y||Ie||e===Se||De||Ae||Fe||typeof e==\"object\"&&e!==null&&(e.$$typeof===$||e.$$typeof===P||e.$$typeof===K||e.$$typeof===H||e.$$typeof===w||e.$$typeof===Z||e.getModuleId!==void 0))}function We(e,r,t){var n=e.displayName;if(n)return n;var i=r.displayName||r.name||\"\";return i!==\"\"?t+\"(\"+i+\")\":t}function Q(e){return e.displayName||\"Context\"}function b(e){if(e==null)return null;if(typeof e.tag==\"number\"&&d(\"Received an unexpected object in getComponentNameFromType(). This is likely a bug in React. Please file an issue.\"),typeof e==\"function\")return e.displayName||e.name||null;if(typeof e==\"string\")return e;switch(e){case E:return\"Fragment\";case h:return\"Portal\";case X:return\"Profiler\";case m:return\"StrictMode\";case I:return\"Suspense\";case Y:return\"SuspenseList\"}if(typeof e==\"object\")switch(e.$$typeof){case H:var r=e;return Q(r)+\".Consumer\";case K:var t=e;return Q(t._context)+\".Provider\";case w:return We(e,e.render,\"ForwardRef\");case P:var n=e.displayName||null;return n!==null?n:b(e.type)||\"Memo\";case $:{var i=e,u=i._payload,o=i._init;try{return b(o(u))}catch{return null}}}return null}var y=Object.assign,C=0,ee,re,te,ne,ae,oe,ie;function ue(){}ue.__reactDisabledLog=!0;function Ne(){{if(C===0){ee=console.log,re=console.info,te=console.warn,ne=console.error,ae=console.group,oe=console.groupCollapsed,ie=console.groupEnd;var e={configurable:!0,enumerable:!0,value:ue,writable:!0};Object.defineProperties(console,{info:e,log:e,warn:e,error:e,group:e,groupCollapsed:e,groupEnd:e})}C++}}function Me(){{if(C--,C===0){var e={configurable:!0,enumerable:!0,writable:!0};Object.defineProperties(console,{log:y({},e,{value:ee}),info:y({},e,{value:re}),warn:y({},e,{value:te}),error:y({},e,{value:ne}),group:y({},e,{value:ae}),groupCollapsed:y({},e,{value:oe}),groupEnd:y({},e,{value:ie})})}C<0&&d(\"disabledDepth fell below zero. This is a bug in React. Please file an issue.\")}}var W=_.ReactCurrentDispatcher,N;function S(e,r,t){{if(N===void 0)try{throw Error()}catch(i){var n=i.stack.trim().match(/\\n( *(at )?)/);N=n&&n[1]||\"\"}return`\n`+N+e}}var M=!1,j;{var Ve=typeof WeakMap==\"function\"?WeakMap:Map;j=new Ve}function se(e,r){if(!e||M)return\"\";{var t=j.get(e);if(t!==void 0)return t}var n;M=!0;var i=Error.prepareStackTrace;Error.prepareStackTrace=void 0;var u;u=W.current,W.current=null,Ne();try{if(r){var o=function(){throw Error()};if(Object.defineProperty(o.prototype,\"props\",{set:function(){throw Error()}}),typeof Reflect==\"object\"&&Reflect.construct){try{Reflect.construct(o,[])}catch(g){n=g}Reflect.construct(e,[],o)}else{try{o.call()}catch(g){n=g}e.call(o.prototype)}}else{try{throw Error()}catch(g){n=g}e()}}catch(g){if(g&&n&&typeof g.stack==\"string\"){for(var a=g.stack.split(`\n`),v=n.stack.split(`\n`),c=a.length-1,l=v.length-1;c>=1&&l>=0&&a[c]!==v[l];)l--;for(;c>=1&&l>=0;c--,l--)if(a[c]!==v[l]){if(c!==1||l!==1)do if(c--,l--,l<0||a[c]!==v[l]){var p=`\n`+a[c].replace(\" at new \",\" at \");return e.displayName&&p.includes(\"<anonymous>\")&&(p=p.replace(\"<anonymous>\",e.displayName)),typeof e==\"function\"&&j.set(e,p),p}while(c>=1&&l>=0);break}}}finally{M=!1,W.current=u,Me(),Error.prepareStackTrace=i}var T=e?e.displayName||e.name:\"\",ye=T?S(T):\"\";return typeof e==\"function\"&&j.set(e,ye),ye}function Ue(e,r,t){return se(e,!1)}function Le(e){var r=e.prototype;return!!(r&&r.isReactComponent)}function x(e,r,t){if(e==null)return\"\";if(typeof e==\"function\")return se(e,Le(e));if(typeof e==\"string\")return S(e);switch(e){case I:return S(\"Suspense\");case Y:return S(\"SuspenseList\")}if(typeof e==\"object\")switch(e.$$typeof){case w:return Ue(e.render);case P:return x(e.type,r,t);case $:{var n=e,i=n._payload,u=n._init;try{return x(u(i),r,t)}catch{}}}return\"\"}var k=Object.prototype.hasOwnProperty,fe={},ce=_.ReactDebugCurrentFrame;function D(e){if(e){var r=e._owner,t=x(e.type,e._source,r?r.type:null);ce.setExtraStackFrame(t)}else ce.setExtraStackFrame(null)}function Be(e,r,t,n,i){{var u=Function.call.bind(k);for(var o in e)if(u(e,o)){var a=void 0;try{if(typeof e[o]!=\"function\"){var v=Error((n||\"React class\")+\": \"+t+\" type `\"+o+\"` is invalid; it must be a function, usually from the `prop-types` package, but received `\"+typeof e[o]+\"`.This often happens because of typos such as `PropTypes.function` instead of `PropTypes.func`.\");throw v.name=\"Invariant Violation\",v}a=e[o](r,o,n,t,null,\"SECRET_DO_NOT_PASS_THIS_OR_YOU_WILL_BE_FIRED\")}catch(c){a=c}a&&!(a instanceof Error)&&(D(i),d(\"%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).\",n||\"React class\",t,o,typeof a),D(null)),a instanceof Error&&!(a.message in fe)&&(fe[a.message]=!0,D(i),d(\"Failed %s type: %s\",t,a.message),D(null))}}}var Ge=Array.isArray;function V(e){return Ge(e)}function qe(e){{var r=typeof Symbol==\"function\"&&Symbol.toStringTag,t=r&&e[Symbol.toStringTag]||e.constructor.name||\"Object\";return t}}function ze(e){try{return le(e),!1}catch{return!0}}function le(e){return\"\"+e}function de(e){if(ze(e))return d(\"The provided key is an unsupported type %s. This value must be coerced to a string before before using it here.\",qe(e)),le(e)}var O=_.ReactCurrentOwner,Xe={key:!0,ref:!0,__self:!0,__source:!0},ve,pe,U;U={};function Ke(e){if(k.call(e,\"ref\")){var r=Object.getOwnPropertyDescriptor(e,\"ref\").get;if(r&&r.isReactWarning)return!1}return e.ref!==void 0}function He(e){if(k.call(e,\"key\")){var r=Object.getOwnPropertyDescriptor(e,\"key\").get;if(r&&r.isReactWarning)return!1}return e.key!==void 0}function Je(e,r){if(typeof e.ref==\"string\"&&O.current&&r&&O.current.stateNode!==r){var t=b(O.current.type);U[t]||(d('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',b(O.current.type),e.ref),U[t]=!0)}}function Ze(e,r){{var t=function(){ve||(ve=!0,d(\"%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)\",r))};t.isReactWarning=!0,Object.defineProperty(e,\"key\",{get:t,configurable:!0})}}function Qe(e,r){{var t=function(){pe||(pe=!0,d(\"%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)\",r))};t.isReactWarning=!0,Object.defineProperty(e,\"ref\",{get:t,configurable:!0})}}var er=function(e,r,t,n,i,u,o){var a={$$typeof:f,type:e,key:r,ref:t,props:o,_owner:u};return a._store={},Object.defineProperty(a._store,\"validated\",{configurable:!1,enumerable:!1,writable:!0,value:!1}),Object.defineProperty(a,\"_self\",{configurable:!1,enumerable:!1,writable:!1,value:n}),Object.defineProperty(a,\"_source\",{configurable:!1,enumerable:!1,writable:!1,value:i}),Object.freeze&&(Object.freeze(a.props),Object.freeze(a)),a};function rr(e,r,t,n,i){{var u,o={},a=null,v=null;t!==void 0&&(de(t),a=\"\"+t),He(r)&&(de(r.key),a=\"\"+r.key),Ke(r)&&(v=r.ref,Je(r,i));for(u in r)k.call(r,u)&&!Xe.hasOwnProperty(u)&&(o[u]=r[u]);if(e&&e.defaultProps){var c=e.defaultProps;for(u in c)o[u]===void 0&&(o[u]=c[u])}if(a||v){var l=typeof e==\"function\"?e.displayName||e.name||\"Unknown\":e;a&&Ze(o,l),v&&Qe(o,l)}return er(e,a,v,i,n,O.current,o)}}var L=_.ReactCurrentOwner,he=_.ReactDebugCurrentFrame;function R(e){if(e){var r=e._owner,t=x(e.type,e._source,r?r.type:null);he.setExtraStackFrame(t)}else he.setExtraStackFrame(null)}var B;B=!1;function G(e){return typeof e==\"object\"&&e!==null&&e.$$typeof===f}function be(){{if(L.current){var e=b(L.current.type);if(e)return`\n\nCheck the render method of \\``+e+\"`.\"}return\"\"}}function tr(e){{if(e!==void 0){var r=e.fileName.replace(/^.*[\\\\\\/]/,\"\"),t=e.lineNumber;return`\n\nCheck your code at `+r+\":\"+t+\".\"}return\"\"}}var ge={};function nr(e){{var r=be();if(!r){var t=typeof e==\"string\"?e:e.displayName||e.name;t&&(r=`\n\nCheck the top-level render call using <`+t+\">.\")}return r}}function me(e,r){{if(!e._store||e._store.validated||e.key!=null)return;e._store.validated=!0;var t=nr(r);if(ge[t])return;ge[t]=!0;var n=\"\";e&&e._owner&&e._owner!==L.current&&(n=\" It was passed a child from \"+b(e._owner.type)+\".\"),R(e),d('Each child in a list should have a unique \"key\" prop.%s%s See https://reactjs.org/link/warning-keys for more information.',t,n),R(null)}}function Ee(e,r){{if(typeof e!=\"object\")return;if(V(e))for(var t=0;t<e.length;t++){var n=e[t];G(n)&&me(n,r)}else if(G(e))e._store&&(e._store.validated=!0);else if(e){var i=xe(e);if(typeof i==\"function\"&&i!==e.entries)for(var u=i.call(e),o;!(o=u.next()).done;)G(o.value)&&me(o.value,r)}}}function ar(e){{var r=e.type;if(r==null||typeof r==\"string\")return;var t;if(typeof r==\"function\")t=r.propTypes;else if(typeof r==\"object\"&&(r.$$typeof===w||r.$$typeof===P))t=r.propTypes;else return;if(t){var n=b(r);Be(t,e.props,\"prop\",n,e)}else if(r.PropTypes!==void 0&&!B){B=!0;var i=b(r);d(\"Component %s declared `PropTypes` instead of `propTypes`. Did you misspell the property assignment?\",i||\"Unknown\")}typeof r.getDefaultProps==\"function\"&&!r.getDefaultProps.isReactClassApproved&&d(\"getDefaultProps is only used on classic React.createClass definitions. Use a static property named `defaultProps` instead.\")}}function or(e){{for(var r=Object.keys(e.props),t=0;t<r.length;t++){var n=r[t];if(n!==\"children\"&&n!==\"key\"){R(e),d(\"Invalid prop `%s` supplied to `React.Fragment`. React.Fragment can only have `key` and `children` props.\",n),R(null);break}}e.ref!==null&&(R(e),d(\"Invalid attribute `ref` supplied to `React.Fragment`.\"),R(null))}}function ir(e,r,t,n,i,u){{var o=$e(e);if(!o){var a=\"\";(e===void 0||typeof e==\"object\"&&e!==null&&Object.keys(e).length===0)&&(a+=\" 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 v=tr(i);v?a+=v:a+=be();var c;e===null?c=\"null\":V(e)?c=\"array\":e!==void 0&&e.$$typeof===f?(c=\"<\"+(b(e.type)||\"Unknown\")+\" />\",a=\" Did you accidentally export a JSX literal instead of a component?\"):c=typeof e,d(\"React.jsx: type is invalid -- expected a string (for built-in components) or a class/function (for composite components) but got: %s.%s\",c,a)}var l=rr(e,r,t,i,u);if(l==null)return l;if(o){var p=r.children;if(p!==void 0)if(n)if(V(p)){for(var T=0;T<p.length;T++)Ee(p[T],e);Object.freeze&&Object.freeze(p)}else d(\"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 Ee(p,e)}return e===E?or(l):ar(l),l}}var ur=ir;z.Fragment=E,z.jsxDEV=ur})()});var we=q((Tr,Oe)=>{\"use strict\";Oe.exports=Ce()});var Er={};vr(Er,{default:()=>mr,frontmatter:()=>br});var F=pr(we()),br={title:\"Upstash Auth Analytics\",description:\"A library to record and analyse Auth.js user behaviour\",url:\"https://console.upstash.com/ratelimit\",repository:\"upstash/auth-analytics\"};function Pe(s){let f=Object.assign({p:\"p\"},s.components);return(0,F.jsxDEV)(f.p,{children:\"TODO:\"},void 0,!1,{fileName:\"/Users/andreasthomas/github/chronark/chronark.com/content/projects/_mdx_bundler_entry_point-e491d153-3318-4404-b9cc-ddf66fe9f45f.mdx\",lineNumber:8,columnNumber:1},this)}function gr(s={}){let{wrapper:f}=s.components||{};return f?(0,F.jsxDEV)(f,Object.assign({},s,{children:(0,F.jsxDEV)(Pe,s,void 0,!1,{fileName:\"/Users/andreasthomas/github/chronark/chronark.com/content/projects/_mdx_bundler_entry_point-e491d153-3318-4404-b9cc-ddf66fe9f45f.mdx\"},this)}),void 0,!1,{fileName:\"/Users/andreasthomas/github/chronark/chronark.com/content/projects/_mdx_bundler_entry_point-e491d153-3318-4404-b9cc-ddf66fe9f45f.mdx\"},this):Pe(s)}var mr=gr;return hr(Er);})();\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/upstash-auth-analytics.mdx",
|
|
"_raw": {
|
|
"sourceFilePath": "projects/upstash-auth-analytics.mdx",
|
|
"sourceFileName": "upstash-auth-analytics.mdx",
|
|
"sourceFileDir": "projects",
|
|
"contentType": "mdx",
|
|
"flattenedPath": "projects/upstash-auth-analytics"
|
|
},
|
|
"type": "Project",
|
|
"path": "/projects/upstash-auth-analytics",
|
|
"slug": "upstash-auth-analytics"
|
|
},
|
|
"documentHash": "1679820070900",
|
|
"hasWarnings": false,
|
|
"documentTypeName": "Project"
|
|
},
|
|
"projects/upstash-cli.mdx": {
|
|
"document": {
|
|
"published": true,
|
|
"title": "@upstash/cli",
|
|
"description": "A CLI to provision and manage Upstash resources, including Redis and Kafka databases.",
|
|
"date": "2022-05-16T00:00:00.000Z",
|
|
"url": "https://upstash.com/cli",
|
|
"repository": "upstash/cli",
|
|
"body": {
|
|
"raw": "\n\nManage Upstash resources in your terminal or CI.\n\n\n\n\n[](https://npmjs.org/package/@upstash/cli)\n\n# Installation\n\n## npm\n\nYou can install upstash's cli directly from npm\n\n```bash\nnpm i -g @upstash/cli\n```\n\nIt will be added as `upstash` to your system's path.\n\n## Compiled binaries:\n\n`upstash` is also available from the\n[releases page](https://github.com/upstash/upstash-cli/releases/latest) compiled\nfor windows, linux and mac (both intel and m1).\n\n# Usage\n\n```bash\n> upstash\n\n Usage: upstash \n Version: development\n\n Description:\n\n Official cli for Upstash products\n\n Options:\n\n -h, --help - Show this help. \n -V, --version - Show the version number for this program. \n -c, --config <string> - Path to .upstash.json file\n\n Commands:\n\n auth - Login and logout \n redis - Manage redis database instances \n kafka - Manage kafka clusters and topics \n team - Manage your teams and their members\n\n Environment variables:\n\n UPSTASH_EMAIL <string> - The email you use on upstash\n UPSTASH_API_KEY <string> - The api key from upstash\n```\n\n## Authentication\n\nWhen running `upstash` for the first time, you should log in using\n`upstash auth login`. Provide your email and an api key.\n[See here for how to get a key.](https://docs.upstash.com/redis/howto/developerapi#api-development)\n\nAs an alternative to logging in, you can provide `UPSTASH_EMAIL` and\n`UPSTASH_API_KEY` as environment variables.\n\n## Usage\n\nLet's create a new redis database:\n\n```\n> upstash redis create --name=my-db --region=eu-west-1\n Database has been created\n\n database_id a3e25299-132a-45b9-b026-c73f5a807859\n database_name my-db\n database_type Pay as You Go\n region eu-west-1\n type paid\n port 37090\n creation_time 1652687630\n state active\n password 88ae6392a1084d1186a3da37fb5f5a30\n user_email andreas@upstash.com\n endpoint eu1-magnetic-lacewing-37090.upstash.io\n edge false\n multizone false\n rest_token AZDiASQgYTNlMjUyOTktMTMyYS00NWI5LWIwMjYtYzczZjVhODA3ODU5ODhhZTYzOTJhMTA4NGQxMTg2YTNkYTM3ZmI1ZjVhMzA=\n read_only_rest_token ApDiASQgYTNlMjUyOTktMTMyYS00NWI5LWIwMjYtYzczZjVhODA3ODU5O_InFjRVX1XHsaSjq1wSerFCugZ8t8O1aTfbF6Jhq1I=\n\n\n You can visit your database details page: https://console.upstash.com/redis/a3e25299-132a-45b9-b026-c73f5a807859\n\n Connect to your database with redis-cli: redis-cli -u redis://88ae6392a1084d1186a3da37fb5f5a30@eu1-magnetic-lacewing-37090.upstash.io:37090\n```\n\n## Output\n\nMost commands support the `--json` flag to return the raw api response as json,\nwhich you can parse and automate your system.\n\n```bash\n> upstash redis create --name=test2113 --region=us-central1 --json | jq '.endpoint'\n\n \"gusc1-clean-gelding-30208.upstash.io\"\n```\n",
|
|
"code": "var Component=(()=>{var d=Object.create;var c=Object.defineProperty;var E=Object.getOwnPropertyDescriptor;var p=Object.getOwnPropertyNames;var y=Object.getPrototypeOf,F=Object.prototype.hasOwnProperty;var m=(n,l)=>()=>(l||n((l={exports:{}}).exports,l),l.exports),u=(n,l)=>{for(var s in l)c(n,s,{get:l[s],enumerable:!0})},o=(n,l,s,r)=>{if(l&&typeof l==\"object\"||typeof l==\"function\")for(let a of p(l))!F.call(n,a)&&a!==s&&c(n,a,{get:()=>l[a],enumerable:!(r=E(l,a))||r.enumerable});return n};var B=(n,l,s)=>(s=n!=null?d(y(n)):{},o(l||!n||!n.__esModule?c(s,\"default\",{value:n,enumerable:!0}):s,n)),g=n=>o(c({},\"__esModule\",{value:!0}),n);var t=m((v,i)=>{i.exports=_jsx_runtime});var N={};u(N,{default:()=>f,frontmatter:()=>C});var e=B(t()),C={title:\"@upstash/cli\",description:\"A CLI to provision and manage Upstash resources, including Redis and Kafka databases.\",date:\"2022-05-16\",url:\"https://upstash.com/cli\",repository:\"upstash/cli\",published:!0};function h(n){let l=Object.assign({p:\"p\",img:\"img\",a:\"a\",h1:\"h1\",span:\"span\",h2:\"h2\",div:\"div\",pre:\"pre\",code:\"code\"},n.components);return(0,e.jsxs)(e.Fragment,{children:[(0,e.jsx)(l.p,{children:\"Manage Upstash resources in your terminal or CI.\"}),`\n`,(0,e.jsx)(l.p,{children:(0,e.jsx)(l.img,{src:\"https://raw.githubusercontent.com/upstash/cli/main/img/banner.svg\",alt:\"\"})}),`\n`,(0,e.jsxs)(l.p,{children:[(0,e.jsx)(l.img,{src:\"https://img.shields.io/github/v/release/upstash/cli\",alt:\"GitHub release (latest SemVer)\"}),`\n`,(0,e.jsx)(l.a,{href:\"https://npmjs.org/package/@upstash/cli\",children:(0,e.jsx)(l.img,{src:\"https://img.shields.io/npm/dw/lstr.svg\",alt:\"Downloads/week\"})})]}),`\n`,(0,e.jsxs)(l.h1,{id:\"installation\",children:[(0,e.jsx)(l.a,{className:\"subheading-anchor\",\"aria-label\":\"Link to section\",href:\"#installation\",children:(0,e.jsx)(l.span,{className:\"icon icon-link\"})}),\"Installation\"]}),`\n`,(0,e.jsxs)(l.h2,{id:\"npm\",children:[(0,e.jsx)(l.a,{className:\"subheading-anchor\",\"aria-label\":\"Link to section\",href:\"#npm\",children:(0,e.jsx)(l.span,{className:\"icon icon-link\"})}),\"npm\"]}),`\n`,(0,e.jsx)(l.p,{children:\"You can install upstash's cli directly from npm\"}),`\n`,(0,e.jsx)(l.div,{\"data-rehype-pretty-code-fragment\":\"\",children:(0,e.jsx)(l.pre,{\"data-language\":\"bash\",\"data-theme\":\"default\",children:(0,e.jsx)(l.code,{\"data-language\":\"bash\",\"data-theme\":\"default\",children:(0,e.jsxs)(l.span,{className:\"line\",children:[(0,e.jsx)(l.span,{style:{color:\"#B392F0\"},children:\"npm\"}),(0,e.jsx)(l.span,{style:{color:\"#E1E4E8\"},children:\" \"}),(0,e.jsx)(l.span,{style:{color:\"#9ECBFF\"},children:\"i\"}),(0,e.jsx)(l.span,{style:{color:\"#E1E4E8\"},children:\" \"}),(0,e.jsx)(l.span,{style:{color:\"#79B8FF\"},children:\"-g\"}),(0,e.jsx)(l.span,{style:{color:\"#E1E4E8\"},children:\" \"}),(0,e.jsx)(l.span,{style:{color:\"#9ECBFF\"},children:\"@upstash/cli\"})]})})})}),`\n`,(0,e.jsxs)(l.p,{children:[\"It will be added as \",(0,e.jsx)(l.code,{children:\"upstash\"}),\" to your system's path.\"]}),`\n`,(0,e.jsxs)(l.h2,{id:\"compiled-binaries\",children:[(0,e.jsx)(l.a,{className:\"subheading-anchor\",\"aria-label\":\"Link to section\",href:\"#compiled-binaries\",children:(0,e.jsx)(l.span,{className:\"icon icon-link\"})}),\"Compiled binaries:\"]}),`\n`,(0,e.jsxs)(l.p,{children:[(0,e.jsx)(l.code,{children:\"upstash\"}),` is also available from the\n`,(0,e.jsx)(l.a,{href:\"https://github.com/upstash/upstash-cli/releases/latest\",children:\"releases page\"}),` compiled\nfor windows, linux and mac (both intel and m1).`]}),`\n`,(0,e.jsxs)(l.h1,{id:\"usage\",children:[(0,e.jsx)(l.a,{className:\"subheading-anchor\",\"aria-label\":\"Link to section\",href:\"#usage\",children:(0,e.jsx)(l.span,{className:\"icon icon-link\"})}),\"Usage\"]}),`\n`,(0,e.jsx)(l.div,{\"data-rehype-pretty-code-fragment\":\"\",children:(0,e.jsx)(l.pre,{\"data-language\":\"bash\",\"data-theme\":\"default\",children:(0,e.jsxs)(l.code,{\"data-language\":\"bash\",\"data-theme\":\"default\",children:[(0,e.jsxs)(l.span,{className:\"line\",children:[(0,e.jsx)(l.span,{style:{color:\"#F97583\"},children:\">\"}),(0,e.jsx)(l.span,{style:{color:\"#E1E4E8\"},children:\" upstash\"})]}),`\n`,(0,e.jsx)(l.span,{className:\"line\",children:\" \"}),`\n`,(0,e.jsxs)(l.span,{className:\"line\",children:[(0,e.jsx)(l.span,{style:{color:\"#E1E4E8\"},children:\" \"}),(0,e.jsx)(l.span,{style:{color:\"#B392F0\"},children:\"Usage:\"}),(0,e.jsx)(l.span,{style:{color:\"#E1E4E8\"},children:\" \"}),(0,e.jsx)(l.span,{style:{color:\"#9ECBFF\"},children:\"upstash\"}),(0,e.jsx)(l.span,{style:{color:\"#E1E4E8\"},children:\" \"})]}),`\n`,(0,e.jsxs)(l.span,{className:\"line\",children:[(0,e.jsx)(l.span,{style:{color:\"#E1E4E8\"},children:\" \"}),(0,e.jsx)(l.span,{style:{color:\"#B392F0\"},children:\"Version:\"}),(0,e.jsx)(l.span,{style:{color:\"#E1E4E8\"},children:\" \"}),(0,e.jsx)(l.span,{style:{color:\"#9ECBFF\"},children:\"development\"})]}),`\n`,(0,e.jsx)(l.span,{className:\"line\",children:\" \"}),`\n`,(0,e.jsxs)(l.span,{className:\"line\",children:[(0,e.jsx)(l.span,{style:{color:\"#E1E4E8\"},children:\" \"}),(0,e.jsx)(l.span,{style:{color:\"#B392F0\"},children:\"Description:\"})]}),`\n`,(0,e.jsx)(l.span,{className:\"line\",children:\" \"}),`\n`,(0,e.jsxs)(l.span,{className:\"line\",children:[(0,e.jsx)(l.span,{style:{color:\"#E1E4E8\"},children:\" \"}),(0,e.jsx)(l.span,{style:{color:\"#B392F0\"},children:\"Official\"}),(0,e.jsx)(l.span,{style:{color:\"#E1E4E8\"},children:\" \"}),(0,e.jsx)(l.span,{style:{color:\"#9ECBFF\"},children:\"cli\"}),(0,e.jsx)(l.span,{style:{color:\"#E1E4E8\"},children:\" \"}),(0,e.jsx)(l.span,{style:{color:\"#9ECBFF\"},children:\"for\"}),(0,e.jsx)(l.span,{style:{color:\"#E1E4E8\"},children:\" \"}),(0,e.jsx)(l.span,{style:{color:\"#9ECBFF\"},children:\"Upstash\"}),(0,e.jsx)(l.span,{style:{color:\"#E1E4E8\"},children:\" \"}),(0,e.jsx)(l.span,{style:{color:\"#9ECBFF\"},children:\"products\"})]}),`\n`,(0,e.jsx)(l.span,{className:\"line\",children:\" \"}),`\n`,(0,e.jsxs)(l.span,{className:\"line\",children:[(0,e.jsx)(l.span,{style:{color:\"#E1E4E8\"},children:\" \"}),(0,e.jsx)(l.span,{style:{color:\"#B392F0\"},children:\"Options:\"})]}),`\n`,(0,e.jsx)(l.span,{className:\"line\",children:\" \"}),`\n`,(0,e.jsxs)(l.span,{className:\"line\",children:[(0,e.jsx)(l.span,{style:{color:\"#E1E4E8\"},children:\" \"}),(0,e.jsx)(l.span,{style:{color:\"#B392F0\"},children:\"-h,\"}),(0,e.jsx)(l.span,{style:{color:\"#E1E4E8\"},children:\" \"}),(0,e.jsx)(l.span,{style:{color:\"#79B8FF\"},children:\"--help\"}),(0,e.jsx)(l.span,{style:{color:\"#E1E4E8\"},children:\" \"}),(0,e.jsx)(l.span,{style:{color:\"#9ECBFF\"},children:\"-\"}),(0,e.jsx)(l.span,{style:{color:\"#E1E4E8\"},children:\" \"}),(0,e.jsx)(l.span,{style:{color:\"#9ECBFF\"},children:\"Show\"}),(0,e.jsx)(l.span,{style:{color:\"#E1E4E8\"},children:\" \"}),(0,e.jsx)(l.span,{style:{color:\"#9ECBFF\"},children:\"this\"}),(0,e.jsx)(l.span,{style:{color:\"#E1E4E8\"},children:\" \"}),(0,e.jsx)(l.span,{style:{color:\"#9ECBFF\"},children:\"help.\"}),(0,e.jsx)(l.span,{style:{color:\"#E1E4E8\"},children:\" \"})]}),`\n`,(0,e.jsxs)(l.span,{className:\"line\",children:[(0,e.jsx)(l.span,{style:{color:\"#E1E4E8\"},children:\" \"}),(0,e.jsx)(l.span,{style:{color:\"#B392F0\"},children:\"-V,\"}),(0,e.jsx)(l.span,{style:{color:\"#E1E4E8\"},children:\" \"}),(0,e.jsx)(l.span,{style:{color:\"#79B8FF\"},children:\"--version\"}),(0,e.jsx)(l.span,{style:{color:\"#E1E4E8\"},children:\" \"}),(0,e.jsx)(l.span,{style:{color:\"#9ECBFF\"},children:\"-\"}),(0,e.jsx)(l.span,{style:{color:\"#E1E4E8\"},children:\" \"}),(0,e.jsx)(l.span,{style:{color:\"#9ECBFF\"},children:\"Show\"}),(0,e.jsx)(l.span,{style:{color:\"#E1E4E8\"},children:\" \"}),(0,e.jsx)(l.span,{style:{color:\"#9ECBFF\"},children:\"the\"}),(0,e.jsx)(l.span,{style:{color:\"#E1E4E8\"},children:\" \"}),(0,e.jsx)(l.span,{style:{color:\"#9ECBFF\"},children:\"version\"}),(0,e.jsx)(l.span,{style:{color:\"#E1E4E8\"},children:\" \"}),(0,e.jsx)(l.span,{style:{color:\"#9ECBFF\"},children:\"number\"}),(0,e.jsx)(l.span,{style:{color:\"#E1E4E8\"},children:\" \"}),(0,e.jsx)(l.span,{style:{color:\"#9ECBFF\"},children:\"for\"}),(0,e.jsx)(l.span,{style:{color:\"#E1E4E8\"},children:\" \"}),(0,e.jsx)(l.span,{style:{color:\"#9ECBFF\"},children:\"this\"}),(0,e.jsx)(l.span,{style:{color:\"#E1E4E8\"},children:\" \"}),(0,e.jsx)(l.span,{style:{color:\"#9ECBFF\"},children:\"program.\"}),(0,e.jsx)(l.span,{style:{color:\"#E1E4E8\"},children:\" \"})]}),`\n`,(0,e.jsxs)(l.span,{className:\"line\",children:[(0,e.jsx)(l.span,{style:{color:\"#E1E4E8\"},children:\" \"}),(0,e.jsx)(l.span,{style:{color:\"#B392F0\"},children:\"-c,\"}),(0,e.jsx)(l.span,{style:{color:\"#E1E4E8\"},children:\" \"}),(0,e.jsx)(l.span,{style:{color:\"#79B8FF\"},children:\"--config\"}),(0,e.jsx)(l.span,{style:{color:\"#E1E4E8\"},children:\" \"}),(0,e.jsx)(l.span,{style:{color:\"#F97583\"},children:\"<\"}),(0,e.jsx)(l.span,{style:{color:\"#9ECBFF\"},children:\"strin\"}),(0,e.jsx)(l.span,{style:{color:\"#E1E4E8\"},children:\"g\"}),(0,e.jsx)(l.span,{style:{color:\"#F97583\"},children:\">\"}),(0,e.jsx)(l.span,{style:{color:\"#E1E4E8\"},children:\" \"}),(0,e.jsx)(l.span,{style:{color:\"#9ECBFF\"},children:\"-\"}),(0,e.jsx)(l.span,{style:{color:\"#E1E4E8\"},children:\" \"}),(0,e.jsx)(l.span,{style:{color:\"#9ECBFF\"},children:\"Path\"}),(0,e.jsx)(l.span,{style:{color:\"#E1E4E8\"},children:\" \"}),(0,e.jsx)(l.span,{style:{color:\"#9ECBFF\"},children:\"to\"}),(0,e.jsx)(l.span,{style:{color:\"#E1E4E8\"},children:\" \"}),(0,e.jsx)(l.span,{style:{color:\"#9ECBFF\"},children:\".upstash.json\"}),(0,e.jsx)(l.span,{style:{color:\"#E1E4E8\"},children:\" \"}),(0,e.jsx)(l.span,{style:{color:\"#9ECBFF\"},children:\"file\"})]}),`\n`,(0,e.jsx)(l.span,{className:\"line\",children:\" \"}),`\n`,(0,e.jsxs)(l.span,{className:\"line\",children:[(0,e.jsx)(l.span,{style:{color:\"#E1E4E8\"},children:\" \"}),(0,e.jsx)(l.span,{style:{color:\"#B392F0\"},children:\"Commands:\"})]}),`\n`,(0,e.jsx)(l.span,{className:\"line\",children:\" \"}),`\n`,(0,e.jsxs)(l.span,{className:\"line\",children:[(0,e.jsx)(l.span,{style:{color:\"#E1E4E8\"},children:\" \"}),(0,e.jsx)(l.span,{style:{color:\"#B392F0\"},children:\"auth\"}),(0,e.jsx)(l.span,{style:{color:\"#E1E4E8\"},children:\" \"}),(0,e.jsx)(l.span,{style:{color:\"#9ECBFF\"},children:\"-\"}),(0,e.jsx)(l.span,{style:{color:\"#E1E4E8\"},children:\" \"}),(0,e.jsx)(l.span,{style:{color:\"#9ECBFF\"},children:\"Login\"}),(0,e.jsx)(l.span,{style:{color:\"#E1E4E8\"},children:\" \"}),(0,e.jsx)(l.span,{style:{color:\"#9ECBFF\"},children:\"and\"}),(0,e.jsx)(l.span,{style:{color:\"#E1E4E8\"},children:\" \"}),(0,e.jsx)(l.span,{style:{color:\"#9ECBFF\"},children:\"logout\"}),(0,e.jsx)(l.span,{style:{color:\"#E1E4E8\"},children:\" \"})]}),`\n`,(0,e.jsxs)(l.span,{className:\"line\",children:[(0,e.jsx)(l.span,{style:{color:\"#E1E4E8\"},children:\" \"}),(0,e.jsx)(l.span,{style:{color:\"#B392F0\"},children:\"redis\"}),(0,e.jsx)(l.span,{style:{color:\"#E1E4E8\"},children:\" \"}),(0,e.jsx)(l.span,{style:{color:\"#9ECBFF\"},children:\"-\"}),(0,e.jsx)(l.span,{style:{color:\"#E1E4E8\"},children:\" \"}),(0,e.jsx)(l.span,{style:{color:\"#9ECBFF\"},children:\"Manage\"}),(0,e.jsx)(l.span,{style:{color:\"#E1E4E8\"},children:\" \"}),(0,e.jsx)(l.span,{style:{color:\"#9ECBFF\"},children:\"redis\"}),(0,e.jsx)(l.span,{style:{color:\"#E1E4E8\"},children:\" \"}),(0,e.jsx)(l.span,{style:{color:\"#9ECBFF\"},children:\"database\"}),(0,e.jsx)(l.span,{style:{color:\"#E1E4E8\"},children:\" \"}),(0,e.jsx)(l.span,{style:{color:\"#9ECBFF\"},children:\"instances\"}),(0,e.jsx)(l.span,{style:{color:\"#E1E4E8\"},children:\" \"})]}),`\n`,(0,e.jsxs)(l.span,{className:\"line\",children:[(0,e.jsx)(l.span,{style:{color:\"#E1E4E8\"},children:\" \"}),(0,e.jsx)(l.span,{style:{color:\"#B392F0\"},children:\"kafka\"}),(0,e.jsx)(l.span,{style:{color:\"#E1E4E8\"},children:\" \"}),(0,e.jsx)(l.span,{style:{color:\"#9ECBFF\"},children:\"-\"}),(0,e.jsx)(l.span,{style:{color:\"#E1E4E8\"},children:\" \"}),(0,e.jsx)(l.span,{style:{color:\"#9ECBFF\"},children:\"Manage\"}),(0,e.jsx)(l.span,{style:{color:\"#E1E4E8\"},children:\" \"}),(0,e.jsx)(l.span,{style:{color:\"#9ECBFF\"},children:\"kafka\"}),(0,e.jsx)(l.span,{style:{color:\"#E1E4E8\"},children:\" \"}),(0,e.jsx)(l.span,{style:{color:\"#9ECBFF\"},children:\"clusters\"}),(0,e.jsx)(l.span,{style:{color:\"#E1E4E8\"},children:\" \"}),(0,e.jsx)(l.span,{style:{color:\"#9ECBFF\"},children:\"and\"}),(0,e.jsx)(l.span,{style:{color:\"#E1E4E8\"},children:\" \"}),(0,e.jsx)(l.span,{style:{color:\"#9ECBFF\"},children:\"topics\"}),(0,e.jsx)(l.span,{style:{color:\"#E1E4E8\"},children:\" \"})]}),`\n`,(0,e.jsxs)(l.span,{className:\"line\",children:[(0,e.jsx)(l.span,{style:{color:\"#E1E4E8\"},children:\" \"}),(0,e.jsx)(l.span,{style:{color:\"#B392F0\"},children:\"team\"}),(0,e.jsx)(l.span,{style:{color:\"#E1E4E8\"},children:\" \"}),(0,e.jsx)(l.span,{style:{color:\"#9ECBFF\"},children:\"-\"}),(0,e.jsx)(l.span,{style:{color:\"#E1E4E8\"},children:\" \"}),(0,e.jsx)(l.span,{style:{color:\"#9ECBFF\"},children:\"Manage\"}),(0,e.jsx)(l.span,{style:{color:\"#E1E4E8\"},children:\" \"}),(0,e.jsx)(l.span,{style:{color:\"#9ECBFF\"},children:\"your\"}),(0,e.jsx)(l.span,{style:{color:\"#E1E4E8\"},children:\" \"}),(0,e.jsx)(l.span,{style:{color:\"#9ECBFF\"},children:\"teams\"}),(0,e.jsx)(l.span,{style:{color:\"#E1E4E8\"},children:\" \"}),(0,e.jsx)(l.span,{style:{color:\"#9ECBFF\"},children:\"and\"}),(0,e.jsx)(l.span,{style:{color:\"#E1E4E8\"},children:\" \"}),(0,e.jsx)(l.span,{style:{color:\"#9ECBFF\"},children:\"their\"}),(0,e.jsx)(l.span,{style:{color:\"#E1E4E8\"},children:\" \"}),(0,e.jsx)(l.span,{style:{color:\"#9ECBFF\"},children:\"members\"})]}),`\n`,(0,e.jsx)(l.span,{className:\"line\",children:\" \"}),`\n`,(0,e.jsxs)(l.span,{className:\"line\",children:[(0,e.jsx)(l.span,{style:{color:\"#E1E4E8\"},children:\" \"}),(0,e.jsx)(l.span,{style:{color:\"#B392F0\"},children:\"Environment\"}),(0,e.jsx)(l.span,{style:{color:\"#E1E4E8\"},children:\" \"}),(0,e.jsx)(l.span,{style:{color:\"#9ECBFF\"},children:\"variables:\"})]}),`\n`,(0,e.jsx)(l.span,{className:\"line\",children:\" \"}),`\n`,(0,e.jsxs)(l.span,{className:\"line\",children:[(0,e.jsx)(l.span,{style:{color:\"#E1E4E8\"},children:\" \"}),(0,e.jsx)(l.span,{style:{color:\"#B392F0\"},children:\"UPSTASH_EMAIL\"}),(0,e.jsx)(l.span,{style:{color:\"#E1E4E8\"},children:\" \"}),(0,e.jsx)(l.span,{style:{color:\"#F97583\"},children:\"<\"}),(0,e.jsx)(l.span,{style:{color:\"#9ECBFF\"},children:\"strin\"}),(0,e.jsx)(l.span,{style:{color:\"#E1E4E8\"},children:\"g\"}),(0,e.jsx)(l.span,{style:{color:\"#F97583\"},children:\">\"}),(0,e.jsx)(l.span,{style:{color:\"#E1E4E8\"},children:\" \"}),(0,e.jsx)(l.span,{style:{color:\"#9ECBFF\"},children:\"-\"}),(0,e.jsx)(l.span,{style:{color:\"#E1E4E8\"},children:\" \"}),(0,e.jsx)(l.span,{style:{color:\"#9ECBFF\"},children:\"The\"}),(0,e.jsx)(l.span,{style:{color:\"#E1E4E8\"},children:\" \"}),(0,e.jsx)(l.span,{style:{color:\"#9ECBFF\"},children:\"email\"}),(0,e.jsx)(l.span,{style:{color:\"#E1E4E8\"},children:\" \"}),(0,e.jsx)(l.span,{style:{color:\"#9ECBFF\"},children:\"you\"}),(0,e.jsx)(l.span,{style:{color:\"#E1E4E8\"},children:\" \"}),(0,e.jsx)(l.span,{style:{color:\"#9ECBFF\"},children:\"use\"}),(0,e.jsx)(l.span,{style:{color:\"#E1E4E8\"},children:\" \"}),(0,e.jsx)(l.span,{style:{color:\"#9ECBFF\"},children:\"on\"}),(0,e.jsx)(l.span,{style:{color:\"#E1E4E8\"},children:\" \"}),(0,e.jsx)(l.span,{style:{color:\"#9ECBFF\"},children:\"upstash\"})]}),`\n`,(0,e.jsxs)(l.span,{className:\"line\",children:[(0,e.jsx)(l.span,{style:{color:\"#E1E4E8\"},children:\" \"}),(0,e.jsx)(l.span,{style:{color:\"#B392F0\"},children:\"UPSTASH_API_KEY\"}),(0,e.jsx)(l.span,{style:{color:\"#E1E4E8\"},children:\" \"}),(0,e.jsx)(l.span,{style:{color:\"#F97583\"},children:\"<\"}),(0,e.jsx)(l.span,{style:{color:\"#9ECBFF\"},children:\"strin\"}),(0,e.jsx)(l.span,{style:{color:\"#E1E4E8\"},children:\"g\"}),(0,e.jsx)(l.span,{style:{color:\"#F97583\"},children:\">\"}),(0,e.jsx)(l.span,{style:{color:\"#E1E4E8\"},children:\" \"}),(0,e.jsx)(l.span,{style:{color:\"#9ECBFF\"},children:\"-\"}),(0,e.jsx)(l.span,{style:{color:\"#E1E4E8\"},children:\" \"}),(0,e.jsx)(l.span,{style:{color:\"#9ECBFF\"},children:\"The\"}),(0,e.jsx)(l.span,{style:{color:\"#E1E4E8\"},children:\" \"}),(0,e.jsx)(l.span,{style:{color:\"#9ECBFF\"},children:\"api\"}),(0,e.jsx)(l.span,{style:{color:\"#E1E4E8\"},children:\" \"}),(0,e.jsx)(l.span,{style:{color:\"#9ECBFF\"},children:\"key\"}),(0,e.jsx)(l.span,{style:{color:\"#E1E4E8\"},children:\" \"}),(0,e.jsx)(l.span,{style:{color:\"#9ECBFF\"},children:\"from\"}),(0,e.jsx)(l.span,{style:{color:\"#E1E4E8\"},children:\" \"}),(0,e.jsx)(l.span,{style:{color:\"#9ECBFF\"},children:\"upstash\"})]})]})})}),`\n`,(0,e.jsxs)(l.h2,{id:\"authentication\",children:[(0,e.jsx)(l.a,{className:\"subheading-anchor\",\"aria-label\":\"Link to section\",href:\"#authentication\",children:(0,e.jsx)(l.span,{className:\"icon icon-link\"})}),\"Authentication\"]}),`\n`,(0,e.jsxs)(l.p,{children:[\"When running \",(0,e.jsx)(l.code,{children:\"upstash\"}),` for the first time, you should log in using\n`,(0,e.jsx)(l.code,{children:\"upstash auth login\"}),`. Provide your email and an api key.\n`,(0,e.jsx)(l.a,{href:\"https://docs.upstash.com/redis/howto/developerapi#api-development\",children:\"See here for how to get a key.\"})]}),`\n`,(0,e.jsxs)(l.p,{children:[\"As an alternative to logging in, you can provide \",(0,e.jsx)(l.code,{children:\"UPSTASH_EMAIL\"}),` and\n`,(0,e.jsx)(l.code,{children:\"UPSTASH_API_KEY\"}),\" as environment variables.\"]}),`\n`,(0,e.jsxs)(l.h2,{id:\"usage-1\",children:[(0,e.jsx)(l.a,{className:\"subheading-anchor\",\"aria-label\":\"Link to section\",href:\"#usage-1\",children:(0,e.jsx)(l.span,{className:\"icon icon-link\"})}),\"Usage\"]}),`\n`,(0,e.jsx)(l.p,{children:\"Let's create a new redis database:\"}),`\n`,(0,e.jsx)(l.pre,{children:(0,e.jsx)(l.code,{children:`> upstash redis create --name=my-db --region=eu-west-1\n Database has been created\n\n database_id a3e25299-132a-45b9-b026-c73f5a807859\n database_name my-db\n database_type Pay as You Go\n region eu-west-1\n type paid\n port 37090\n creation_time 1652687630\n state active\n password 88ae6392a1084d1186a3da37fb5f5a30\n user_email andreas@upstash.com\n endpoint eu1-magnetic-lacewing-37090.upstash.io\n edge false\n multizone false\n rest_token AZDiASQgYTNlMjUyOTktMTMyYS00NWI5LWIwMjYtYzczZjVhODA3ODU5ODhhZTYzOTJhMTA4NGQxMTg2YTNkYTM3ZmI1ZjVhMzA=\n read_only_rest_token ApDiASQgYTNlMjUyOTktMTMyYS00NWI5LWIwMjYtYzczZjVhODA3ODU5O_InFjRVX1XHsaSjq1wSerFCugZ8t8O1aTfbF6Jhq1I=\n\n\n You can visit your database details page: https://console.upstash.com/redis/a3e25299-132a-45b9-b026-c73f5a807859\n\n Connect to your database with redis-cli: redis-cli -u redis://88ae6392a1084d1186a3da37fb5f5a30@eu1-magnetic-lacewing-37090.upstash.io:37090\n`})}),`\n`,(0,e.jsxs)(l.h2,{id:\"output\",children:[(0,e.jsx)(l.a,{className:\"subheading-anchor\",\"aria-label\":\"Link to section\",href:\"#output\",children:(0,e.jsx)(l.span,{className:\"icon icon-link\"})}),\"Output\"]}),`\n`,(0,e.jsxs)(l.p,{children:[\"Most commands support the \",(0,e.jsx)(l.code,{children:\"--json\"}),` flag to return the raw api response as json,\nwhich you can parse and automate your system.`]}),`\n`,(0,e.jsx)(l.div,{\"data-rehype-pretty-code-fragment\":\"\",children:(0,e.jsx)(l.pre,{\"data-language\":\"bash\",\"data-theme\":\"default\",children:(0,e.jsxs)(l.code,{\"data-language\":\"bash\",\"data-theme\":\"default\",children:[(0,e.jsxs)(l.span,{className:\"line\",children:[(0,e.jsx)(l.span,{style:{color:\"#F97583\"},children:\">\"}),(0,e.jsx)(l.span,{style:{color:\"#E1E4E8\"},children:\" upstash redis create --name\"}),(0,e.jsx)(l.span,{style:{color:\"#F97583\"},children:\"=\"}),(0,e.jsx)(l.span,{style:{color:\"#9ECBFF\"},children:\"test2113\"}),(0,e.jsx)(l.span,{style:{color:\"#E1E4E8\"},children:\" --region\"}),(0,e.jsx)(l.span,{style:{color:\"#F97583\"},children:\"=\"}),(0,e.jsx)(l.span,{style:{color:\"#9ECBFF\"},children:\"us-central1\"}),(0,e.jsx)(l.span,{style:{color:\"#E1E4E8\"},children:\" --json \"}),(0,e.jsx)(l.span,{style:{color:\"#F97583\"},children:\"|\"}),(0,e.jsx)(l.span,{style:{color:\"#E1E4E8\"},children:\" \"}),(0,e.jsx)(l.span,{style:{color:\"#B392F0\"},children:\"jq\"}),(0,e.jsx)(l.span,{style:{color:\"#E1E4E8\"},children:\" \"}),(0,e.jsx)(l.span,{style:{color:\"#9ECBFF\"},children:\"'.endpoint'\"})]}),`\n`,(0,e.jsx)(l.span,{className:\"line\",children:\" \"}),`\n`,(0,e.jsx)(l.span,{className:\"line\",children:(0,e.jsx)(l.span,{style:{color:\"#9ECBFF\"},children:' \"gusc1-clean-gelding-30208.upstash.io\"'})})]})})})]})}function b(n={}){let{wrapper:l}=n.components||{};return l?(0,e.jsx)(l,Object.assign({},n,{children:(0,e.jsx)(h,n)})):h(n)}var f=b;return g(N);})();\n;return Component;"
|
|
},
|
|
"_id": "projects/upstash-cli.mdx",
|
|
"_raw": {
|
|
"sourceFilePath": "projects/upstash-cli.mdx",
|
|
"sourceFileName": "upstash-cli.mdx",
|
|
"sourceFileDir": "projects",
|
|
"contentType": "mdx",
|
|
"flattenedPath": "projects/upstash-cli"
|
|
},
|
|
"type": "Project",
|
|
"path": "/projects/upstash-cli",
|
|
"slug": "upstash-cli"
|
|
},
|
|
"documentHash": "1679830227494",
|
|
"hasWarnings": false,
|
|
"documentTypeName": "Project"
|
|
},
|
|
"projects/upstash-core-analytics.mdx": {
|
|
"document": {
|
|
"published": true,
|
|
"title": "Upstash Core Analytics",
|
|
"description": "Low level utilities to build analytics tools on top of Redis.",
|
|
"date": "2023-02-13T00:00:00.000Z",
|
|
"url": "https://console.upstash.com/ratelimit",
|
|
"repository": "upstash/core-analytics",
|
|
"body": {
|
|
"raw": "\n\nThis library offers some low level building blocks to record and analyze custom events in Redis.\nIt's main purpose is to provide a simple way to record and query events in Redis without having to worry about the underlying data structure so we can build more advanced analytics features on top of it.\n\n## Quickstart\n\n\n1. Create a redis database\n\nGo to [console.upstash.com/redis](https://console.upstash.com/redis) and create\na new global database.\n\nAfter creating the db, copy the `UPSTASH_REDIS_REST_URL` and `UPSTASH_REDIS_REST_TOKEN` to your `.env` file.\n\n3. Install `@upstash/analytics` in your project\n\n```bash\nnpm install @upstash/analytics @upstash/redis\n```\n\n4. Create an analytics client\n\n```ts\nimport { Analytyics } from \"@upstash/analytics\";\nimport { Redis } from \"@upstash/redis\";\n\nconst analytics = new Analytics({\n redis: Redis.fromEnv(),\n window: \"1d\",\n});\n```\n\n\n5. Ingest some events\n\nAn event consists of a `time` field and any additional key-value pairs that you can use to record any information you want.\n\n```ts\nconst event = {\n time: Date.now() // optional (default: Date.now())\n userId: \"chronark\",\n page: \"/auth/login\",\n country: \"DE\",\n}\n\nawait analytics.ingest(\"pageviews\", event);\n```\n\n4. Query your events\n\n```ts\n\nconst result = await analytics.query(\"pageviews\");\n\n```\n\n## Development\n\nThis project uses `pnpm` for dependency management.\n\n#### Install dependencies\n\n```bash\npnpm install\n```\n\n#### Build\n\n```bash\npnpm build\n```\n\n\n## Database Schema\n\nAll metrics are stored in Redis `Hash` data types and sharded into buckets based on the `window` option.\n```\n@upstash/analytics:{TABLE}:{TIMESTAMP}\n```\n- `TABLE` is a namespace to group events together. ie for managing multiple projects int a single database\n- `TIMESTAMP` is the starting timestamp of each window\n\nThe field of each hash is a serialized JSON object with the user's event data and the value is the number of times this event has been recorded.\n\n```json\n{\n '{\"page\": \"/auth/login\",\"country\": \"DE\"}': 5,\n '{\"page\": \"/auth/login\",\"country\": \"US\"}': 2\n}\n```\n",
|
|
"code": "var Component=(()=>{var cn=Object.create;var P=Object.defineProperty;var ln=Object.getOwnPropertyDescriptor;var mn=Object.getOwnPropertyNames;var un=Object.getPrototypeOf,hn=Object.prototype.hasOwnProperty;var z=(l,e)=>()=>(e||l((e={exports:{}}).exports,e),e.exports),fn=(l,e)=>{for(var _ in e)P(l,_,{get:e[_],enumerable:!0})},xe=(l,e,_,y)=>{if(e&&typeof e==\"object\"||typeof e==\"function\")for(let k of mn(e))!hn.call(l,k)&&k!==_&&P(l,k,{get:()=>e[k],enumerable:!(y=ln(e,k))||y.enumerable});return l};var bn=(l,e,_)=>(_=l!=null?cn(un(l)):{},xe(e||!l||!l.__esModule?P(_,\"default\",{value:l,enumerable:!0}):_,l)),_n=l=>xe(P({},\"__esModule\",{value:!0}),l);var Ee=z((gn,ge)=>{ge.exports=React});var je=z(G=>{\"use strict\";(function(){\"use strict\";var l=Ee(),e=Symbol.for(\"react.element\"),_=Symbol.for(\"react.portal\"),y=Symbol.for(\"react.fragment\"),k=Symbol.for(\"react.strict_mode\"),H=Symbol.for(\"react.profiler\"),K=Symbol.for(\"react.provider\"),X=Symbol.for(\"react.context\"),F=Symbol.for(\"react.forward_ref\"),D=Symbol.for(\"react.suspense\"),A=Symbol.for(\"react.suspense_list\"),R=Symbol.for(\"react.memo\"),B=Symbol.for(\"react.lazy\"),Re=Symbol.for(\"react.offscreen\"),J=Symbol.iterator,Te=\"@@iterator\";function Ce(n){if(n===null||typeof n!=\"object\")return null;var a=J&&n[J]||n[Te];return typeof a==\"function\"?a:null}var g=l.__SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED;function h(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,i=o.getStackAddendum();i!==\"\"&&(a+=\"%s\",t=t.concat([i]));var c=t.map(function(d){return String(d)});c.unshift(\"Warning: \"+a),Function.prototype.apply.call(console[n],console,c)}}var Se=!1,Oe=!1,Pe=!1,De=!1,Ae=!1,Q;Q=Symbol.for(\"react.module.reference\");function Be(n){return!!(typeof n==\"string\"||typeof n==\"function\"||n===y||n===H||Ae||n===k||n===D||n===A||De||n===Re||Se||Oe||Pe||typeof n==\"object\"&&n!==null&&(n.$$typeof===B||n.$$typeof===R||n.$$typeof===K||n.$$typeof===X||n.$$typeof===F||n.$$typeof===Q||n.getModuleId!==void 0))}function Ie(n,a,t){var o=n.displayName;if(o)return o;var i=a.displayName||a.name||\"\";return i!==\"\"?t+\"(\"+i+\")\":t}function Z(n){return n.displayName||\"Context\"}function p(n){if(n==null)return null;if(typeof n.tag==\"number\"&&h(\"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 y:return\"Fragment\";case _:return\"Portal\";case H:return\"Profiler\";case k:return\"StrictMode\";case D:return\"Suspense\";case A:return\"SuspenseList\"}if(typeof n==\"object\")switch(n.$$typeof){case X:var a=n;return Z(a)+\".Consumer\";case K:var t=n;return Z(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 i=n,c=i._payload,d=i._init;try{return p(d(c))}catch{return null}}}return null}var x=Object.assign,U=0,ee,ne,re,ae,te,oe,se;function de(){}de.__reactDisabledLog=!0;function Le(){{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 Me(){{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&&h(\"disabledDepth fell below zero. This is a bug in React. Please file an issue.\")}}var I=g.ReactCurrentDispatcher,L;function T(n,a,t){{if(L===void 0)try{throw Error()}catch(i){var o=i.stack.trim().match(/\\n( *(at )?)/);L=o&&o[1]||\"\"}return`\n`+L+n}}var M=!1,C;{var Ye=typeof WeakMap==\"function\"?WeakMap:Map;C=new Ye}function ie(n,a){if(!n||M)return\"\";{var t=C.get(n);if(t!==void 0)return t}var o;M=!0;var i=Error.prepareStackTrace;Error.prepareStackTrace=void 0;var c;c=I.current,I.current=null,Le();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`),m=s.length-1,u=f.length-1;m>=1&&u>=0&&s[m]!==f[u];)u--;for(;m>=1&&u>=0;m--,u--)if(s[m]!==f[u]){if(m!==1||u!==1)do if(m--,u--,u<0||s[m]!==f[u]){var b=`\n`+s[m].replace(\" at new \",\" at \");return n.displayName&&b.includes(\"<anonymous>\")&&(b=b.replace(\"<anonymous>\",n.displayName)),typeof n==\"function\"&&C.set(n,b),b}while(m>=1&&u>=0);break}}}finally{M=!1,I.current=c,Me(),Error.prepareStackTrace=i}var j=n?n.displayName||n.name:\"\",ye=j?T(j):\"\";return typeof n==\"function\"&&C.set(n,ye),ye}function $e(n,a,t){return ie(n,!1)}function We(n){var a=n.prototype;return!!(a&&a.isReactComponent)}function w(n,a,t){if(n==null)return\"\";if(typeof n==\"function\")return ie(n,We(n));if(typeof n==\"string\")return T(n);switch(n){case D:return T(\"Suspense\");case A:return T(\"SuspenseList\")}if(typeof n==\"object\")switch(n.$$typeof){case F:return $e(n.render);case R:return w(n.type,a,t);case B:{var o=n,i=o._payload,c=o._init;try{return w(c(i),a,t)}catch{}}}return\"\"}var S=Object.prototype.hasOwnProperty,ce={},le=g.ReactDebugCurrentFrame;function O(n){if(n){var a=n._owner,t=w(n.type,n._source,a?a.type:null);le.setExtraStackFrame(t)}else le.setExtraStackFrame(null)}function Ve(n,a,t,o,i){{var c=Function.call.bind(S);for(var d in n)if(c(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(m){s=m}s&&!(s instanceof Error)&&(O(i),h(\"%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),O(null)),s instanceof Error&&!(s.message in ce)&&(ce[s.message]=!0,O(i),h(\"Failed %s type: %s\",t,s.message),O(null))}}}var qe=Array.isArray;function Y(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 me(n),!1}catch{return!0}}function me(n){return\"\"+n}function ue(n){if(Ge(n))return h(\"The provided key is an unsupported type %s. This value must be coerced to a string before before using it here.\",ze(n)),me(n)}var v=g.ReactCurrentOwner,He={key:!0,ref:!0,__self:!0,__source:!0},he,fe,$;$={};function Ke(n){if(S.call(n,\"ref\")){var a=Object.getOwnPropertyDescriptor(n,\"ref\").get;if(a&&a.isReactWarning)return!1}return n.ref!==void 0}function Xe(n){if(S.call(n,\"key\")){var a=Object.getOwnPropertyDescriptor(n,\"key\").get;if(a&&a.isReactWarning)return!1}return n.key!==void 0}function Je(n,a){if(typeof n.ref==\"string\"&&v.current&&a&&v.current.stateNode!==a){var t=p(v.current.type);$[t]||(h('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),$[t]=!0)}}function Qe(n,a){{var t=function(){he||(he=!0,h(\"%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 Ze(n,a){{var t=function(){fe||(fe=!0,h(\"%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,i,c,d){var s={$$typeof:e,type:n,key:a,ref:t,props:d,_owner:c};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:i}),Object.freeze&&(Object.freeze(s.props),Object.freeze(s)),s};function nn(n,a,t,o,i){{var c,d={},s=null,f=null;t!==void 0&&(ue(t),s=\"\"+t),Xe(a)&&(ue(a.key),s=\"\"+a.key),Ke(a)&&(f=a.ref,Je(a,i));for(c in a)S.call(a,c)&&!He.hasOwnProperty(c)&&(d[c]=a[c]);if(n&&n.defaultProps){var m=n.defaultProps;for(c in m)d[c]===void 0&&(d[c]=m[c])}if(s||f){var u=typeof n==\"function\"?n.displayName||n.name||\"Unknown\":n;s&&Qe(d,u),f&&Ze(d,u)}return en(n,s,f,i,o,v.current,d)}}var W=g.ReactCurrentOwner,be=g.ReactDebugCurrentFrame;function E(n){if(n){var a=n._owner,t=w(n.type,n._source,a?a.type:null);be.setExtraStackFrame(t)}else be.setExtraStackFrame(null)}var V;V=!1;function q(n){return typeof n==\"object\"&&n!==null&&n.$$typeof===e}function _e(){{if(W.current){var n=p(W.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!==W.current&&(o=\" It was passed a child from \"+p(n._owner.type)+\".\"),E(n),h('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 ke(n,a){{if(typeof n!=\"object\")return;if(Y(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 i=Ce(n);if(typeof i==\"function\"&&i!==n.entries)for(var c=i.call(n),d;!(d=c.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);Ve(t,n.props,\"prop\",o,n)}else if(a.PropTypes!==void 0&&!V){V=!0;var i=p(a);h(\"Component %s declared `PropTypes` instead of `propTypes`. Did you misspell the property assignment?\",i||\"Unknown\")}typeof a.getDefaultProps==\"function\"&&!a.getDefaultProps.isReactClassApproved&&h(\"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),h(\"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),h(\"Invalid attribute `ref` supplied to `React.Fragment`.\"),E(null))}}function sn(n,a,t,o,i,c){{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(i);f?s+=f:s+=_e();var m;n===null?m=\"null\":Y(n)?m=\"array\":n!==void 0&&n.$$typeof===e?(m=\"<\"+(p(n.type)||\"Unknown\")+\" />\",s=\" Did you accidentally export a JSX literal instead of a component?\"):m=typeof n,h(\"React.jsx: type is invalid -- expected a string (for built-in components) or a class/function (for composite components) but got: %s.%s\",m,s)}var u=nn(n,a,t,i,c);if(u==null)return u;if(d){var b=a.children;if(b!==void 0)if(o)if(Y(b)){for(var j=0;j<b.length;j++)ke(b[j],n);Object.freeze&&Object.freeze(b)}else h(\"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 ke(b,n)}return n===y?on(u):tn(u),u}}var dn=sn;G.Fragment=y,G.jsxDEV=dn})()});var ve=z((jn,Ue)=>{\"use strict\";Ue.exports=je()});var yn={};fn(yn,{default:()=>kn,frontmatter:()=>pn});var r=bn(ve()),pn={title:\"Upstash Core Analytics\",description:\"Low level utilities to build analytics tools on top of Redis.\",date:\"2023-02-13\",url:\"https://console.upstash.com/ratelimit\",repository:\"upstash/core-analytics\",published:!0};function Fe(l){let e=Object.assign({p:\"p\",h2:\"h2\",a:\"a\",span:\"span\",ol:\"ol\",li:\"li\",code:\"code\",div:\"div\",pre:\"pre\",h4:\"h4\",ul:\"ul\"},l.components);return(0,r.jsxDEV)(r.Fragment,{children:[(0,r.jsxDEV)(e.p,{children:`This library offers some low level building blocks to record and analyze custom events in Redis.\nIt's main purpose is to provide a simple way to record and query events in Redis without having to worry about the underlying data structure so we can build more advanced analytics features on top of it.`},void 0,!1,{fileName:\"/Users/andreasthomas/github/chronark/chronark.com/content/projects/_mdx_bundler_entry_point-95108577-d054-4fa4-9876-096009670ad0.mdx\",lineNumber:12,columnNumber:1},this),`\n`,(0,r.jsxDEV)(e.h2,{id:\"quickstart\",children:[(0,r.jsxDEV)(e.a,{className:\"subheading-anchor\",\"aria-label\":\"Link to section\",href:\"#quickstart\",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-95108577-d054-4fa4-9876-096009670ad0.mdx\"},this)},void 0,!1,{fileName:\"/Users/andreasthomas/github/chronark/chronark.com/content/projects/_mdx_bundler_entry_point-95108577-d054-4fa4-9876-096009670ad0.mdx\"},this),\"Quickstart\"]},void 0,!0,{fileName:\"/Users/andreasthomas/github/chronark/chronark.com/content/projects/_mdx_bundler_entry_point-95108577-d054-4fa4-9876-096009670ad0.mdx\",lineNumber:15,columnNumber:1},this),`\n`,(0,r.jsxDEV)(e.ol,{children:[`\n`,(0,r.jsxDEV)(e.li,{children:\"Create a redis database\"},void 0,!1,{fileName:\"/Users/andreasthomas/github/chronark/chronark.com/content/projects/_mdx_bundler_entry_point-95108577-d054-4fa4-9876-096009670ad0.mdx\",lineNumber:18,columnNumber:1},this),`\n`]},void 0,!0,{fileName:\"/Users/andreasthomas/github/chronark/chronark.com/content/projects/_mdx_bundler_entry_point-95108577-d054-4fa4-9876-096009670ad0.mdx\",lineNumber:18,columnNumber:1},this),`\n`,(0,r.jsxDEV)(e.p,{children:[\"Go to \",(0,r.jsxDEV)(e.a,{href:\"https://console.upstash.com/redis\",children:\"console.upstash.com/redis\"},void 0,!1,{fileName:\"/Users/andreasthomas/github/chronark/chronark.com/content/projects/_mdx_bundler_entry_point-95108577-d054-4fa4-9876-096009670ad0.mdx\",lineNumber:20,columnNumber:7},this),` and create\na new global database.`]},void 0,!0,{fileName:\"/Users/andreasthomas/github/chronark/chronark.com/content/projects/_mdx_bundler_entry_point-95108577-d054-4fa4-9876-096009670ad0.mdx\",lineNumber:20,columnNumber:1},this),`\n`,(0,r.jsxDEV)(e.p,{children:[\"After creating the db, copy the \",(0,r.jsxDEV)(e.code,{children:\"UPSTASH_REDIS_REST_URL\"},void 0,!1,{fileName:\"/Users/andreasthomas/github/chronark/chronark.com/content/projects/_mdx_bundler_entry_point-95108577-d054-4fa4-9876-096009670ad0.mdx\",lineNumber:23,columnNumber:33},this),\" and \",(0,r.jsxDEV)(e.code,{children:\"UPSTASH_REDIS_REST_TOKEN\"},void 0,!1,{fileName:\"/Users/andreasthomas/github/chronark/chronark.com/content/projects/_mdx_bundler_entry_point-95108577-d054-4fa4-9876-096009670ad0.mdx\",lineNumber:23,columnNumber:62},this),\" to your \",(0,r.jsxDEV)(e.code,{children:\".env\"},void 0,!1,{fileName:\"/Users/andreasthomas/github/chronark/chronark.com/content/projects/_mdx_bundler_entry_point-95108577-d054-4fa4-9876-096009670ad0.mdx\",lineNumber:23,columnNumber:97},this),\" file.\"]},void 0,!0,{fileName:\"/Users/andreasthomas/github/chronark/chronark.com/content/projects/_mdx_bundler_entry_point-95108577-d054-4fa4-9876-096009670ad0.mdx\",lineNumber:23,columnNumber:1},this),`\n`,(0,r.jsxDEV)(e.ol,{start:\"3\",children:[`\n`,(0,r.jsxDEV)(e.li,{children:[\"Install \",(0,r.jsxDEV)(e.code,{children:\"@upstash/analytics\"},void 0,!1,{fileName:\"/Users/andreasthomas/github/chronark/chronark.com/content/projects/_mdx_bundler_entry_point-95108577-d054-4fa4-9876-096009670ad0.mdx\",lineNumber:25,columnNumber:12},this),\" in your project\"]},void 0,!0,{fileName:\"/Users/andreasthomas/github/chronark/chronark.com/content/projects/_mdx_bundler_entry_point-95108577-d054-4fa4-9876-096009670ad0.mdx\",lineNumber:25,columnNumber:1},this),`\n`]},void 0,!0,{fileName:\"/Users/andreasthomas/github/chronark/chronark.com/content/projects/_mdx_bundler_entry_point-95108577-d054-4fa4-9876-096009670ad0.mdx\",lineNumber:25,columnNumber:1},this),`\n`,(0,r.jsxDEV)(e.div,{\"data-rehype-pretty-code-fragment\":\"\",children:(0,r.jsxDEV)(e.pre,{\"data-language\":\"bash\",\"data-theme\":\"default\",children:(0,r.jsxDEV)(e.code,{\"data-language\":\"bash\",\"data-theme\":\"default\",children:(0,r.jsxDEV)(e.span,{className:\"line\",children:[(0,r.jsxDEV)(e.span,{style:{color:\"#B392F0\"},children:\"npm\"},void 0,!1,{fileName:\"/Users/andreasthomas/github/chronark/chronark.com/content/projects/_mdx_bundler_entry_point-95108577-d054-4fa4-9876-096009670ad0.mdx\",lineNumber:1,columnNumber:104},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-95108577-d054-4fa4-9876-096009670ad0.mdx\",lineNumber:1,columnNumber:143},this),(0,r.jsxDEV)(e.span,{style:{color:\"#9ECBFF\"},children:\"install\"},void 0,!1,{fileName:\"/Users/andreasthomas/github/chronark/chronark.com/content/projects/_mdx_bundler_entry_point-95108577-d054-4fa4-9876-096009670ad0.mdx\",lineNumber:1,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-95108577-d054-4fa4-9876-096009670ad0.mdx\",lineNumber:1,columnNumber:223},this),(0,r.jsxDEV)(e.span,{style:{color:\"#9ECBFF\"},children:\"@upstash/analytics\"},void 0,!1,{fileName:\"/Users/andreasthomas/github/chronark/chronark.com/content/projects/_mdx_bundler_entry_point-95108577-d054-4fa4-9876-096009670ad0.mdx\",lineNumber:1,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-95108577-d054-4fa4-9876-096009670ad0.mdx\",lineNumber:1,columnNumber:314},this),(0,r.jsxDEV)(e.span,{style:{color:\"#9ECBFF\"},children:\"@upstash/redis\"},void 0,!1,{fileName:\"/Users/andreasthomas/github/chronark/chronark.com/content/projects/_mdx_bundler_entry_point-95108577-d054-4fa4-9876-096009670ad0.mdx\",lineNumber:1,columnNumber:351},this)]},void 0,!0,{fileName:\"/Users/andreasthomas/github/chronark/chronark.com/content/projects/_mdx_bundler_entry_point-95108577-d054-4fa4-9876-096009670ad0.mdx\",lineNumber:1,columnNumber:85},this)},void 0,!1,{fileName:\"/Users/andreasthomas/github/chronark/chronark.com/content/projects/_mdx_bundler_entry_point-95108577-d054-4fa4-9876-096009670ad0.mdx\",lineNumber:1,columnNumber:79},this)},void 0,!1,{fileName:\"/Users/andreasthomas/github/chronark/chronark.com/content/projects/_mdx_bundler_entry_point-95108577-d054-4fa4-9876-096009670ad0.mdx\",lineNumber:1,columnNumber:1},this)},void 0,!1,{fileName:\"/Users/andreasthomas/github/chronark/chronark.com/content/projects/_mdx_bundler_entry_point-95108577-d054-4fa4-9876-096009670ad0.mdx\",lineNumber:27,columnNumber:1},this),`\n`,(0,r.jsxDEV)(e.ol,{start:\"4\",children:[`\n`,(0,r.jsxDEV)(e.li,{children:\"Create an analytics client\"},void 0,!1,{fileName:\"/Users/andreasthomas/github/chronark/chronark.com/content/projects/_mdx_bundler_entry_point-95108577-d054-4fa4-9876-096009670ad0.mdx\",lineNumber:31,columnNumber:1},this),`\n`]},void 0,!0,{fileName:\"/Users/andreasthomas/github/chronark/chronark.com/content/projects/_mdx_bundler_entry_point-95108577-d054-4fa4-9876-096009670ad0.mdx\",lineNumber:31,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-95108577-d054-4fa4-9876-096009670ad0.mdx\",lineNumber:1,columnNumber:104},this),(0,r.jsxDEV)(e.span,{style:{color:\"#E1E4E8\"},children:\" { Analytyics } \"},void 0,!1,{fileName:\"/Users/andreasthomas/github/chronark/chronark.com/content/projects/_mdx_bundler_entry_point-95108577-d054-4fa4-9876-096009670ad0.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-95108577-d054-4fa4-9876-096009670ad0.mdx\",lineNumber:1,columnNumber:198},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-95108577-d054-4fa4-9876-096009670ad0.mdx\",lineNumber:1,columnNumber:238},this),(0,r.jsxDEV)(e.span,{style:{color:\"#9ECBFF\"},children:'\"@upstash/analytics\"'},void 0,!1,{fileName:\"/Users/andreasthomas/github/chronark/chronark.com/content/projects/_mdx_bundler_entry_point-95108577-d054-4fa4-9876-096009670ad0.mdx\",lineNumber:1,columnNumber:275},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-95108577-d054-4fa4-9876-096009670ad0.mdx\",lineNumber:1,columnNumber:341},this)]},void 0,!0,{fileName:\"/Users/andreasthomas/github/chronark/chronark.com/content/projects/_mdx_bundler_entry_point-95108577-d054-4fa4-9876-096009670ad0.mdx\",lineNumber:1,columnNumber:85},this),`\n`,(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-95108577-d054-4fa4-9876-096009670ad0.mdx\",lineNumber:2,columnNumber:20},this),(0,r.jsxDEV)(e.span,{style:{color:\"#E1E4E8\"},children:\" { Redis } \"},void 0,!1,{fileName:\"/Users/andreasthomas/github/chronark/chronark.com/content/projects/_mdx_bundler_entry_point-95108577-d054-4fa4-9876-096009670ad0.mdx\",lineNumber:2,columnNumber:62},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-95108577-d054-4fa4-9876-096009670ad0.mdx\",lineNumber:2,columnNumber:109},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-95108577-d054-4fa4-9876-096009670ad0.mdx\",lineNumber:2,columnNumber:149},this),(0,r.jsxDEV)(e.span,{style:{color:\"#9ECBFF\"},children:'\"@upstash/redis\"'},void 0,!1,{fileName:\"/Users/andreasthomas/github/chronark/chronark.com/content/projects/_mdx_bundler_entry_point-95108577-d054-4fa4-9876-096009670ad0.mdx\",lineNumber:2,columnNumber:186},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-95108577-d054-4fa4-9876-096009670ad0.mdx\",lineNumber:2,columnNumber:248},this)]},void 0,!0,{fileName:\"/Users/andreasthomas/github/chronark/chronark.com/content/projects/_mdx_bundler_entry_point-95108577-d054-4fa4-9876-096009670ad0.mdx\",lineNumber:2,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-95108577-d054-4fa4-9876-096009670ad0.mdx\",lineNumber:3,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-95108577-d054-4fa4-9876-096009670ad0.mdx\",lineNumber:4,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-95108577-d054-4fa4-9876-096009670ad0.mdx\",lineNumber:4,columnNumber:61},this),(0,r.jsxDEV)(e.span,{style:{color:\"#79B8FF\"},children:\"analytics\"},void 0,!1,{fileName:\"/Users/andreasthomas/github/chronark/chronark.com/content/projects/_mdx_bundler_entry_point-95108577-d054-4fa4-9876-096009670ad0.mdx\",lineNumber:4,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-95108577-d054-4fa4-9876-096009670ad0.mdx\",lineNumber:4,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-95108577-d054-4fa4-9876-096009670ad0.mdx\",lineNumber:4,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-95108577-d054-4fa4-9876-096009670ad0.mdx\",lineNumber:4,columnNumber:217},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-95108577-d054-4fa4-9876-096009670ad0.mdx\",lineNumber:4,columnNumber:254},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-95108577-d054-4fa4-9876-096009670ad0.mdx\",lineNumber:4,columnNumber:293},this),(0,r.jsxDEV)(e.span,{style:{color:\"#B392F0\"},children:\"Analytics\"},void 0,!1,{fileName:\"/Users/andreasthomas/github/chronark/chronark.com/content/projects/_mdx_bundler_entry_point-95108577-d054-4fa4-9876-096009670ad0.mdx\",lineNumber:4,columnNumber:330},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-95108577-d054-4fa4-9876-096009670ad0.mdx\",lineNumber:4,columnNumber:375},this)]},void 0,!0,{fileName:\"/Users/andreasthomas/github/chronark/chronark.com/content/projects/_mdx_bundler_entry_point-95108577-d054-4fa4-9876-096009670ad0.mdx\",lineNumber:4,columnNumber:1},this),`\n`,(0,r.jsxDEV)(e.span,{className:\"line\",children:[(0,r.jsxDEV)(e.span,{style:{color:\"#E1E4E8\"},children:\" redis: Redis.\"},void 0,!1,{fileName:\"/Users/andreasthomas/github/chronark/chronark.com/content/projects/_mdx_bundler_entry_point-95108577-d054-4fa4-9876-096009670ad0.mdx\",lineNumber:5,columnNumber:20},this),(0,r.jsxDEV)(e.span,{style:{color:\"#B392F0\"},children:\"fromEnv\"},void 0,!1,{fileName:\"/Users/andreasthomas/github/chronark/chronark.com/content/projects/_mdx_bundler_entry_point-95108577-d054-4fa4-9876-096009670ad0.mdx\",lineNumber:5,columnNumber:71},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-95108577-d054-4fa4-9876-096009670ad0.mdx\",lineNumber:5,columnNumber:114},this)]},void 0,!0,{fileName:\"/Users/andreasthomas/github/chronark/chronark.com/content/projects/_mdx_bundler_entry_point-95108577-d054-4fa4-9876-096009670ad0.mdx\",lineNumber:5,columnNumber:1},this),`\n`,(0,r.jsxDEV)(e.span,{className:\"line\",children:[(0,r.jsxDEV)(e.span,{style:{color:\"#E1E4E8\"},children:\" window: \"},void 0,!1,{fileName:\"/Users/andreasthomas/github/chronark/chronark.com/content/projects/_mdx_bundler_entry_point-95108577-d054-4fa4-9876-096009670ad0.mdx\",lineNumber:6,columnNumber:20},this),(0,r.jsxDEV)(e.span,{style:{color:\"#9ECBFF\"},children:'\"1d\"'},void 0,!1,{fileName:\"/Users/andreasthomas/github/chronark/chronark.com/content/projects/_mdx_bundler_entry_point-95108577-d054-4fa4-9876-096009670ad0.mdx\",lineNumber:6,columnNumber:66},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-95108577-d054-4fa4-9876-096009670ad0.mdx\",lineNumber:6,columnNumber:116},this)]},void 0,!0,{fileName:\"/Users/andreasthomas/github/chronark/chronark.com/content/projects/_mdx_bundler_entry_point-95108577-d054-4fa4-9876-096009670ad0.mdx\",lineNumber:6,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-95108577-d054-4fa4-9876-096009670ad0.mdx\",lineNumber:7,columnNumber:20},this)},void 0,!1,{fileName:\"/Users/andreasthomas/github/chronark/chronark.com/content/projects/_mdx_bundler_entry_point-95108577-d054-4fa4-9876-096009670ad0.mdx\",lineNumber:7,columnNumber:1},this)]},void 0,!0,{fileName:\"/Users/andreasthomas/github/chronark/chronark.com/content/projects/_mdx_bundler_entry_point-95108577-d054-4fa4-9876-096009670ad0.mdx\",lineNumber:1,columnNumber:79},this)},void 0,!1,{fileName:\"/Users/andreasthomas/github/chronark/chronark.com/content/projects/_mdx_bundler_entry_point-95108577-d054-4fa4-9876-096009670ad0.mdx\",lineNumber:1,columnNumber:1},this)},void 0,!1,{fileName:\"/Users/andreasthomas/github/chronark/chronark.com/content/projects/_mdx_bundler_entry_point-95108577-d054-4fa4-9876-096009670ad0.mdx\",lineNumber:33,columnNumber:1},this),`\n`,(0,r.jsxDEV)(e.ol,{start:\"5\",children:[`\n`,(0,r.jsxDEV)(e.li,{children:\"Ingest some events\"},void 0,!1,{fileName:\"/Users/andreasthomas/github/chronark/chronark.com/content/projects/_mdx_bundler_entry_point-95108577-d054-4fa4-9876-096009670ad0.mdx\",lineNumber:44,columnNumber:1},this),`\n`]},void 0,!0,{fileName:\"/Users/andreasthomas/github/chronark/chronark.com/content/projects/_mdx_bundler_entry_point-95108577-d054-4fa4-9876-096009670ad0.mdx\",lineNumber:44,columnNumber:1},this),`\n`,(0,r.jsxDEV)(e.p,{children:[\"An event consists of a \",(0,r.jsxDEV)(e.code,{children:\"time\"},void 0,!1,{fileName:\"/Users/andreasthomas/github/chronark/chronark.com/content/projects/_mdx_bundler_entry_point-95108577-d054-4fa4-9876-096009670ad0.mdx\",lineNumber:46,columnNumber:24},this),\" field and any additional key-value pairs that you can use to record any information you want.\"]},void 0,!0,{fileName:\"/Users/andreasthomas/github/chronark/chronark.com/content/projects/_mdx_bundler_entry_point-95108577-d054-4fa4-9876-096009670ad0.mdx\",lineNumber:46,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:\"const\"},void 0,!1,{fileName:\"/Users/andreasthomas/github/chronark/chronark.com/content/projects/_mdx_bundler_entry_point-95108577-d054-4fa4-9876-096009670ad0.mdx\",lineNumber:1,columnNumber:104},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-95108577-d054-4fa4-9876-096009670ad0.mdx\",lineNumber:1,columnNumber:145},this),(0,r.jsxDEV)(e.span,{style:{color:\"#79B8FF\"},children:\"event\"},void 0,!1,{fileName:\"/Users/andreasthomas/github/chronark/chronark.com/content/projects/_mdx_bundler_entry_point-95108577-d054-4fa4-9876-096009670ad0.mdx\",lineNumber:1,columnNumber:182},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-95108577-d054-4fa4-9876-096009670ad0.mdx\",lineNumber:1,columnNumber:223},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-95108577-d054-4fa4-9876-096009670ad0.mdx\",lineNumber:1,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-95108577-d054-4fa4-9876-096009670ad0.mdx\",lineNumber:1,columnNumber:297},this)]},void 0,!0,{fileName:\"/Users/andreasthomas/github/chronark/chronark.com/content/projects/_mdx_bundler_entry_point-95108577-d054-4fa4-9876-096009670ad0.mdx\",lineNumber:1,columnNumber:85},this),`\n`,(0,r.jsxDEV)(e.span,{className:\"line\",children:[(0,r.jsxDEV)(e.span,{style:{color:\"#E1E4E8\"},children:\" time: Date.\"},void 0,!1,{fileName:\"/Users/andreasthomas/github/chronark/chronark.com/content/projects/_mdx_bundler_entry_point-95108577-d054-4fa4-9876-096009670ad0.mdx\",lineNumber:2,columnNumber:20},this),(0,r.jsxDEV)(e.span,{style:{color:\"#B392F0\"},children:\"now\"},void 0,!1,{fileName:\"/Users/andreasthomas/github/chronark/chronark.com/content/projects/_mdx_bundler_entry_point-95108577-d054-4fa4-9876-096009670ad0.mdx\",lineNumber:2,columnNumber:69},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-95108577-d054-4fa4-9876-096009670ad0.mdx\",lineNumber:2,columnNumber:108},this),(0,r.jsxDEV)(e.span,{style:{color:\"#6A737D\"},children:\"// optional (default: Date.now())\"},void 0,!1,{fileName:\"/Users/andreasthomas/github/chronark/chronark.com/content/projects/_mdx_bundler_entry_point-95108577-d054-4fa4-9876-096009670ad0.mdx\",lineNumber:2,columnNumber:147},this)]},void 0,!0,{fileName:\"/Users/andreasthomas/github/chronark/chronark.com/content/projects/_mdx_bundler_entry_point-95108577-d054-4fa4-9876-096009670ad0.mdx\",lineNumber:2,columnNumber:1},this),`\n`,(0,r.jsxDEV)(e.span,{className:\"line\",children:[(0,r.jsxDEV)(e.span,{style:{color:\"#E1E4E8\"},children:\" userId: \"},void 0,!1,{fileName:\"/Users/andreasthomas/github/chronark/chronark.com/content/projects/_mdx_bundler_entry_point-95108577-d054-4fa4-9876-096009670ad0.mdx\",lineNumber:3,columnNumber:20},this),(0,r.jsxDEV)(e.span,{style:{color:\"#9ECBFF\"},children:'\"chronark\"'},void 0,!1,{fileName:\"/Users/andreasthomas/github/chronark/chronark.com/content/projects/_mdx_bundler_entry_point-95108577-d054-4fa4-9876-096009670ad0.mdx\",lineNumber:3,columnNumber:66},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-95108577-d054-4fa4-9876-096009670ad0.mdx\",lineNumber:3,columnNumber:122},this)]},void 0,!0,{fileName:\"/Users/andreasthomas/github/chronark/chronark.com/content/projects/_mdx_bundler_entry_point-95108577-d054-4fa4-9876-096009670ad0.mdx\",lineNumber:3,columnNumber:1},this),`\n`,(0,r.jsxDEV)(e.span,{className:\"line\",children:[(0,r.jsxDEV)(e.span,{style:{color:\"#E1E4E8\"},children:\" page: \"},void 0,!1,{fileName:\"/Users/andreasthomas/github/chronark/chronark.com/content/projects/_mdx_bundler_entry_point-95108577-d054-4fa4-9876-096009670ad0.mdx\",lineNumber:4,columnNumber:20},this),(0,r.jsxDEV)(e.span,{style:{color:\"#9ECBFF\"},children:'\"/auth/login\"'},void 0,!1,{fileName:\"/Users/andreasthomas/github/chronark/chronark.com/content/projects/_mdx_bundler_entry_point-95108577-d054-4fa4-9876-096009670ad0.mdx\",lineNumber:4,columnNumber:64},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-95108577-d054-4fa4-9876-096009670ad0.mdx\",lineNumber:4,columnNumber:123},this)]},void 0,!0,{fileName:\"/Users/andreasthomas/github/chronark/chronark.com/content/projects/_mdx_bundler_entry_point-95108577-d054-4fa4-9876-096009670ad0.mdx\",lineNumber:4,columnNumber:1},this),`\n`,(0,r.jsxDEV)(e.span,{className:\"line\",children:[(0,r.jsxDEV)(e.span,{style:{color:\"#E1E4E8\"},children:\" country: \"},void 0,!1,{fileName:\"/Users/andreasthomas/github/chronark/chronark.com/content/projects/_mdx_bundler_entry_point-95108577-d054-4fa4-9876-096009670ad0.mdx\",lineNumber:5,columnNumber:20},this),(0,r.jsxDEV)(e.span,{style:{color:\"#9ECBFF\"},children:'\"DE\"'},void 0,!1,{fileName:\"/Users/andreasthomas/github/chronark/chronark.com/content/projects/_mdx_bundler_entry_point-95108577-d054-4fa4-9876-096009670ad0.mdx\",lineNumber:5,columnNumber:67},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-95108577-d054-4fa4-9876-096009670ad0.mdx\",lineNumber:5,columnNumber:117},this)]},void 0,!0,{fileName:\"/Users/andreasthomas/github/chronark/chronark.com/content/projects/_mdx_bundler_entry_point-95108577-d054-4fa4-9876-096009670ad0.mdx\",lineNumber:5,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-95108577-d054-4fa4-9876-096009670ad0.mdx\",lineNumber:6,columnNumber:20},this)},void 0,!1,{fileName:\"/Users/andreasthomas/github/chronark/chronark.com/content/projects/_mdx_bundler_entry_point-95108577-d054-4fa4-9876-096009670ad0.mdx\",lineNumber:6,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-95108577-d054-4fa4-9876-096009670ad0.mdx\",lineNumber:7,columnNumber:1},this),`\n`,(0,r.jsxDEV)(e.span,{className:\"line\",children:[(0,r.jsxDEV)(e.span,{style:{color:\"#F97583\"},children:\"await\"},void 0,!1,{fileName:\"/Users/andreasthomas/github/chronark/chronark.com/content/projects/_mdx_bundler_entry_point-95108577-d054-4fa4-9876-096009670ad0.mdx\",lineNumber:8,columnNumber:20},this),(0,r.jsxDEV)(e.span,{style:{color:\"#E1E4E8\"},children:\" analytics.\"},void 0,!1,{fileName:\"/Users/andreasthomas/github/chronark/chronark.com/content/projects/_mdx_bundler_entry_point-95108577-d054-4fa4-9876-096009670ad0.mdx\",lineNumber:8,columnNumber:61},this),(0,r.jsxDEV)(e.span,{style:{color:\"#B392F0\"},children:\"ingest\"},void 0,!1,{fileName:\"/Users/andreasthomas/github/chronark/chronark.com/content/projects/_mdx_bundler_entry_point-95108577-d054-4fa4-9876-096009670ad0.mdx\",lineNumber:8,columnNumber:108},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-95108577-d054-4fa4-9876-096009670ad0.mdx\",lineNumber:8,columnNumber:150},this),(0,r.jsxDEV)(e.span,{style:{color:\"#9ECBFF\"},children:'\"pageviews\"'},void 0,!1,{fileName:\"/Users/andreasthomas/github/chronark/chronark.com/content/projects/_mdx_bundler_entry_point-95108577-d054-4fa4-9876-096009670ad0.mdx\",lineNumber:8,columnNumber:187},this),(0,r.jsxDEV)(e.span,{style:{color:\"#E1E4E8\"},children:\", event);\"},void 0,!1,{fileName:\"/Users/andreasthomas/github/chronark/chronark.com/content/projects/_mdx_bundler_entry_point-95108577-d054-4fa4-9876-096009670ad0.mdx\",lineNumber:8,columnNumber:244},this)]},void 0,!0,{fileName:\"/Users/andreasthomas/github/chronark/chronark.com/content/projects/_mdx_bundler_entry_point-95108577-d054-4fa4-9876-096009670ad0.mdx\",lineNumber:8,columnNumber:1},this)]},void 0,!0,{fileName:\"/Users/andreasthomas/github/chronark/chronark.com/content/projects/_mdx_bundler_entry_point-95108577-d054-4fa4-9876-096009670ad0.mdx\",lineNumber:1,columnNumber:79},this)},void 0,!1,{fileName:\"/Users/andreasthomas/github/chronark/chronark.com/content/projects/_mdx_bundler_entry_point-95108577-d054-4fa4-9876-096009670ad0.mdx\",lineNumber:1,columnNumber:1},this)},void 0,!1,{fileName:\"/Users/andreasthomas/github/chronark/chronark.com/content/projects/_mdx_bundler_entry_point-95108577-d054-4fa4-9876-096009670ad0.mdx\",lineNumber:48,columnNumber:1},this),`\n`,(0,r.jsxDEV)(e.ol,{start:\"4\",children:[`\n`,(0,r.jsxDEV)(e.li,{children:\"Query your events\"},void 0,!1,{fileName:\"/Users/andreasthomas/github/chronark/chronark.com/content/projects/_mdx_bundler_entry_point-95108577-d054-4fa4-9876-096009670ad0.mdx\",lineNumber:59,columnNumber:1},this),`\n`]},void 0,!0,{fileName:\"/Users/andreasthomas/github/chronark/chronark.com/content/projects/_mdx_bundler_entry_point-95108577-d054-4fa4-9876-096009670ad0.mdx\",lineNumber:59,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:\" \"},void 0,!1,{fileName:\"/Users/andreasthomas/github/chronark/chronark.com/content/projects/_mdx_bundler_entry_point-95108577-d054-4fa4-9876-096009670ad0.mdx\",lineNumber:1,columnNumber:85},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-95108577-d054-4fa4-9876-096009670ad0.mdx\",lineNumber:2,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-95108577-d054-4fa4-9876-096009670ad0.mdx\",lineNumber:2,columnNumber:61},this),(0,r.jsxDEV)(e.span,{style:{color:\"#79B8FF\"},children:\"result\"},void 0,!1,{fileName:\"/Users/andreasthomas/github/chronark/chronark.com/content/projects/_mdx_bundler_entry_point-95108577-d054-4fa4-9876-096009670ad0.mdx\",lineNumber:2,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-95108577-d054-4fa4-9876-096009670ad0.mdx\",lineNumber:2,columnNumber:140},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-95108577-d054-4fa4-9876-096009670ad0.mdx\",lineNumber:2,columnNumber:177},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-95108577-d054-4fa4-9876-096009670ad0.mdx\",lineNumber:2,columnNumber:214},this),(0,r.jsxDEV)(e.span,{style:{color:\"#F97583\"},children:\"await\"},void 0,!1,{fileName:\"/Users/andreasthomas/github/chronark/chronark.com/content/projects/_mdx_bundler_entry_point-95108577-d054-4fa4-9876-096009670ad0.mdx\",lineNumber:2,columnNumber:251},this),(0,r.jsxDEV)(e.span,{style:{color:\"#E1E4E8\"},children:\" analytics.\"},void 0,!1,{fileName:\"/Users/andreasthomas/github/chronark/chronark.com/content/projects/_mdx_bundler_entry_point-95108577-d054-4fa4-9876-096009670ad0.mdx\",lineNumber:2,columnNumber:292},this),(0,r.jsxDEV)(e.span,{style:{color:\"#B392F0\"},children:\"query\"},void 0,!1,{fileName:\"/Users/andreasthomas/github/chronark/chronark.com/content/projects/_mdx_bundler_entry_point-95108577-d054-4fa4-9876-096009670ad0.mdx\",lineNumber:2,columnNumber:339},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-95108577-d054-4fa4-9876-096009670ad0.mdx\",lineNumber:2,columnNumber:380},this),(0,r.jsxDEV)(e.span,{style:{color:\"#9ECBFF\"},children:'\"pageviews\"'},void 0,!1,{fileName:\"/Users/andreasthomas/github/chronark/chronark.com/content/projects/_mdx_bundler_entry_point-95108577-d054-4fa4-9876-096009670ad0.mdx\",lineNumber:2,columnNumber:417},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-95108577-d054-4fa4-9876-096009670ad0.mdx\",lineNumber:2,columnNumber:474},this)]},void 0,!0,{fileName:\"/Users/andreasthomas/github/chronark/chronark.com/content/projects/_mdx_bundler_entry_point-95108577-d054-4fa4-9876-096009670ad0.mdx\",lineNumber:2,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-95108577-d054-4fa4-9876-096009670ad0.mdx\",lineNumber:3,columnNumber:1},this)]},void 0,!0,{fileName:\"/Users/andreasthomas/github/chronark/chronark.com/content/projects/_mdx_bundler_entry_point-95108577-d054-4fa4-9876-096009670ad0.mdx\",lineNumber:1,columnNumber:79},this)},void 0,!1,{fileName:\"/Users/andreasthomas/github/chronark/chronark.com/content/projects/_mdx_bundler_entry_point-95108577-d054-4fa4-9876-096009670ad0.mdx\",lineNumber:1,columnNumber:1},this)},void 0,!1,{fileName:\"/Users/andreasthomas/github/chronark/chronark.com/content/projects/_mdx_bundler_entry_point-95108577-d054-4fa4-9876-096009670ad0.mdx\",lineNumber:61,columnNumber:1},this),`\n`,(0,r.jsxDEV)(e.h2,{id:\"development\",children:[(0,r.jsxDEV)(e.a,{className:\"subheading-anchor\",\"aria-label\":\"Link to section\",href:\"#development\",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-95108577-d054-4fa4-9876-096009670ad0.mdx\"},this)},void 0,!1,{fileName:\"/Users/andreasthomas/github/chronark/chronark.com/content/projects/_mdx_bundler_entry_point-95108577-d054-4fa4-9876-096009670ad0.mdx\"},this),\"Development\"]},void 0,!0,{fileName:\"/Users/andreasthomas/github/chronark/chronark.com/content/projects/_mdx_bundler_entry_point-95108577-d054-4fa4-9876-096009670ad0.mdx\",lineNumber:67,columnNumber:1},this),`\n`,(0,r.jsxDEV)(e.p,{children:[\"This project uses \",(0,r.jsxDEV)(e.code,{children:\"pnpm\"},void 0,!1,{fileName:\"/Users/andreasthomas/github/chronark/chronark.com/content/projects/_mdx_bundler_entry_point-95108577-d054-4fa4-9876-096009670ad0.mdx\",lineNumber:69,columnNumber:19},this),\" for dependency management.\"]},void 0,!0,{fileName:\"/Users/andreasthomas/github/chronark/chronark.com/content/projects/_mdx_bundler_entry_point-95108577-d054-4fa4-9876-096009670ad0.mdx\",lineNumber:69,columnNumber:1},this),`\n`,(0,r.jsxDEV)(e.h4,{id:\"install-dependencies\",children:[(0,r.jsxDEV)(e.a,{className:\"subheading-anchor\",\"aria-label\":\"Link to section\",href:\"#install-dependencies\",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-95108577-d054-4fa4-9876-096009670ad0.mdx\"},this)},void 0,!1,{fileName:\"/Users/andreasthomas/github/chronark/chronark.com/content/projects/_mdx_bundler_entry_point-95108577-d054-4fa4-9876-096009670ad0.mdx\"},this),\"Install dependencies\"]},void 0,!0,{fileName:\"/Users/andreasthomas/github/chronark/chronark.com/content/projects/_mdx_bundler_entry_point-95108577-d054-4fa4-9876-096009670ad0.mdx\",lineNumber:71,columnNumber:1},this),`\n`,(0,r.jsxDEV)(e.div,{\"data-rehype-pretty-code-fragment\":\"\",children:(0,r.jsxDEV)(e.pre,{\"data-language\":\"bash\",\"data-theme\":\"default\",children:(0,r.jsxDEV)(e.code,{\"data-language\":\"bash\",\"data-theme\":\"default\",children:(0,r.jsxDEV)(e.span,{className:\"line\",children:[(0,r.jsxDEV)(e.span,{style:{color:\"#B392F0\"},children:\"pnpm\"},void 0,!1,{fileName:\"/Users/andreasthomas/github/chronark/chronark.com/content/projects/_mdx_bundler_entry_point-95108577-d054-4fa4-9876-096009670ad0.mdx\",lineNumber:1,columnNumber:104},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-95108577-d054-4fa4-9876-096009670ad0.mdx\",lineNumber:1,columnNumber:144},this),(0,r.jsxDEV)(e.span,{style:{color:\"#9ECBFF\"},children:\"install\"},void 0,!1,{fileName:\"/Users/andreasthomas/github/chronark/chronark.com/content/projects/_mdx_bundler_entry_point-95108577-d054-4fa4-9876-096009670ad0.mdx\",lineNumber:1,columnNumber:181},this)]},void 0,!0,{fileName:\"/Users/andreasthomas/github/chronark/chronark.com/content/projects/_mdx_bundler_entry_point-95108577-d054-4fa4-9876-096009670ad0.mdx\",lineNumber:1,columnNumber:85},this)},void 0,!1,{fileName:\"/Users/andreasthomas/github/chronark/chronark.com/content/projects/_mdx_bundler_entry_point-95108577-d054-4fa4-9876-096009670ad0.mdx\",lineNumber:1,columnNumber:79},this)},void 0,!1,{fileName:\"/Users/andreasthomas/github/chronark/chronark.com/content/projects/_mdx_bundler_entry_point-95108577-d054-4fa4-9876-096009670ad0.mdx\",lineNumber:1,columnNumber:1},this)},void 0,!1,{fileName:\"/Users/andreasthomas/github/chronark/chronark.com/content/projects/_mdx_bundler_entry_point-95108577-d054-4fa4-9876-096009670ad0.mdx\",lineNumber:73,columnNumber:1},this),`\n`,(0,r.jsxDEV)(e.h4,{id:\"build\",children:[(0,r.jsxDEV)(e.a,{className:\"subheading-anchor\",\"aria-label\":\"Link to section\",href:\"#build\",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-95108577-d054-4fa4-9876-096009670ad0.mdx\"},this)},void 0,!1,{fileName:\"/Users/andreasthomas/github/chronark/chronark.com/content/projects/_mdx_bundler_entry_point-95108577-d054-4fa4-9876-096009670ad0.mdx\"},this),\"Build\"]},void 0,!0,{fileName:\"/Users/andreasthomas/github/chronark/chronark.com/content/projects/_mdx_bundler_entry_point-95108577-d054-4fa4-9876-096009670ad0.mdx\",lineNumber:77,columnNumber:1},this),`\n`,(0,r.jsxDEV)(e.div,{\"data-rehype-pretty-code-fragment\":\"\",children:(0,r.jsxDEV)(e.pre,{\"data-language\":\"bash\",\"data-theme\":\"default\",children:(0,r.jsxDEV)(e.code,{\"data-language\":\"bash\",\"data-theme\":\"default\",children:(0,r.jsxDEV)(e.span,{className:\"line\",children:[(0,r.jsxDEV)(e.span,{style:{color:\"#B392F0\"},children:\"pnpm\"},void 0,!1,{fileName:\"/Users/andreasthomas/github/chronark/chronark.com/content/projects/_mdx_bundler_entry_point-95108577-d054-4fa4-9876-096009670ad0.mdx\",lineNumber:1,columnNumber:104},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-95108577-d054-4fa4-9876-096009670ad0.mdx\",lineNumber:1,columnNumber:144},this),(0,r.jsxDEV)(e.span,{style:{color:\"#9ECBFF\"},children:\"build\"},void 0,!1,{fileName:\"/Users/andreasthomas/github/chronark/chronark.com/content/projects/_mdx_bundler_entry_point-95108577-d054-4fa4-9876-096009670ad0.mdx\",lineNumber:1,columnNumber:181},this)]},void 0,!0,{fileName:\"/Users/andreasthomas/github/chronark/chronark.com/content/projects/_mdx_bundler_entry_point-95108577-d054-4fa4-9876-096009670ad0.mdx\",lineNumber:1,columnNumber:85},this)},void 0,!1,{fileName:\"/Users/andreasthomas/github/chronark/chronark.com/content/projects/_mdx_bundler_entry_point-95108577-d054-4fa4-9876-096009670ad0.mdx\",lineNumber:1,columnNumber:79},this)},void 0,!1,{fileName:\"/Users/andreasthomas/github/chronark/chronark.com/content/projects/_mdx_bundler_entry_point-95108577-d054-4fa4-9876-096009670ad0.mdx\",lineNumber:1,columnNumber:1},this)},void 0,!1,{fileName:\"/Users/andreasthomas/github/chronark/chronark.com/content/projects/_mdx_bundler_entry_point-95108577-d054-4fa4-9876-096009670ad0.mdx\",lineNumber:79,columnNumber:1},this),`\n`,(0,r.jsxDEV)(e.h2,{id:\"database-schema\",children:[(0,r.jsxDEV)(e.a,{className:\"subheading-anchor\",\"aria-label\":\"Link to section\",href:\"#database-schema\",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-95108577-d054-4fa4-9876-096009670ad0.mdx\"},this)},void 0,!1,{fileName:\"/Users/andreasthomas/github/chronark/chronark.com/content/projects/_mdx_bundler_entry_point-95108577-d054-4fa4-9876-096009670ad0.mdx\"},this),\"Database Schema\"]},void 0,!0,{fileName:\"/Users/andreasthomas/github/chronark/chronark.com/content/projects/_mdx_bundler_entry_point-95108577-d054-4fa4-9876-096009670ad0.mdx\",lineNumber:84,columnNumber:1},this),`\n`,(0,r.jsxDEV)(e.p,{children:[\"All metrics are stored in Redis \",(0,r.jsxDEV)(e.code,{children:\"Hash\"},void 0,!1,{fileName:\"/Users/andreasthomas/github/chronark/chronark.com/content/projects/_mdx_bundler_entry_point-95108577-d054-4fa4-9876-096009670ad0.mdx\",lineNumber:86,columnNumber:33},this),\" data types and sharded into buckets based on the \",(0,r.jsxDEV)(e.code,{children:\"window\"},void 0,!1,{fileName:\"/Users/andreasthomas/github/chronark/chronark.com/content/projects/_mdx_bundler_entry_point-95108577-d054-4fa4-9876-096009670ad0.mdx\",lineNumber:86,columnNumber:89},this),\" option.\"]},void 0,!0,{fileName:\"/Users/andreasthomas/github/chronark/chronark.com/content/projects/_mdx_bundler_entry_point-95108577-d054-4fa4-9876-096009670ad0.mdx\",lineNumber:86,columnNumber:1},this),`\n`,(0,r.jsxDEV)(e.pre,{children:(0,r.jsxDEV)(e.code,{children:`@upstash/analytics:{TABLE}:{TIMESTAMP}\n`},void 0,!1,{fileName:\"/Users/andreasthomas/github/chronark/chronark.com/content/projects/_mdx_bundler_entry_point-95108577-d054-4fa4-9876-096009670ad0.mdx\",lineNumber:87,columnNumber:1},this)},void 0,!1,{fileName:\"/Users/andreasthomas/github/chronark/chronark.com/content/projects/_mdx_bundler_entry_point-95108577-d054-4fa4-9876-096009670ad0.mdx\",lineNumber:87,columnNumber:1},this),`\n`,(0,r.jsxDEV)(e.ul,{children:[`\n`,(0,r.jsxDEV)(e.li,{children:[(0,r.jsxDEV)(e.code,{children:\"TABLE\"},void 0,!1,{fileName:\"/Users/andreasthomas/github/chronark/chronark.com/content/projects/_mdx_bundler_entry_point-95108577-d054-4fa4-9876-096009670ad0.mdx\",lineNumber:90,columnNumber:3},this),\" is a namespace to group events together. ie for managing multiple projects int a single database\"]},void 0,!0,{fileName:\"/Users/andreasthomas/github/chronark/chronark.com/content/projects/_mdx_bundler_entry_point-95108577-d054-4fa4-9876-096009670ad0.mdx\",lineNumber:90,columnNumber:1},this),`\n`,(0,r.jsxDEV)(e.li,{children:[(0,r.jsxDEV)(e.code,{children:\"TIMESTAMP\"},void 0,!1,{fileName:\"/Users/andreasthomas/github/chronark/chronark.com/content/projects/_mdx_bundler_entry_point-95108577-d054-4fa4-9876-096009670ad0.mdx\",lineNumber:91,columnNumber:3},this),\" is the starting timestamp of each window\"]},void 0,!0,{fileName:\"/Users/andreasthomas/github/chronark/chronark.com/content/projects/_mdx_bundler_entry_point-95108577-d054-4fa4-9876-096009670ad0.mdx\",lineNumber:91,columnNumber:1},this),`\n`]},void 0,!0,{fileName:\"/Users/andreasthomas/github/chronark/chronark.com/content/projects/_mdx_bundler_entry_point-95108577-d054-4fa4-9876-096009670ad0.mdx\",lineNumber:90,columnNumber:1},this),`\n`,(0,r.jsxDEV)(e.p,{children:\"The field of each hash is a serialized JSON object with the user's event data and the value is the number of times this event has been recorded.\"},void 0,!1,{fileName:\"/Users/andreasthomas/github/chronark/chronark.com/content/projects/_mdx_bundler_entry_point-95108577-d054-4fa4-9876-096009670ad0.mdx\",lineNumber:93,columnNumber:1},this),`\n`,(0,r.jsxDEV)(e.div,{\"data-rehype-pretty-code-fragment\":\"\",children:(0,r.jsxDEV)(e.pre,{\"data-language\":\"json\",\"data-theme\":\"default\",children:(0,r.jsxDEV)(e.code,{\"data-language\":\"json\",\"data-theme\":\"default\",children:[(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-95108577-d054-4fa4-9876-096009670ad0.mdx\",lineNumber:1,columnNumber:104},this)},void 0,!1,{fileName:\"/Users/andreasthomas/github/chronark/chronark.com/content/projects/_mdx_bundler_entry_point-95108577-d054-4fa4-9876-096009670ad0.mdx\",lineNumber:1,columnNumber:85},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-95108577-d054-4fa4-9876-096009670ad0.mdx\",lineNumber:2,columnNumber:20},this),(0,r.jsxDEV)(e.span,{style:{color:\"#FDAEB7\",fontStyle:\"italic\"},children:\"'{\"},void 0,!1,{fileName:\"/Users/andreasthomas/github/chronark/chronark.com/content/projects/_mdx_bundler_entry_point-95108577-d054-4fa4-9876-096009670ad0.mdx\",lineNumber:2,columnNumber:58},this),(0,r.jsxDEV)(e.span,{style:{color:\"#79B8FF\"},children:'\"page\"'},void 0,!1,{fileName:\"/Users/andreasthomas/github/chronark/chronark.com/content/projects/_mdx_bundler_entry_point-95108577-d054-4fa4-9876-096009670ad0.mdx\",lineNumber:2,columnNumber:120},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-95108577-d054-4fa4-9876-096009670ad0.mdx\",lineNumber:2,columnNumber:172},this),(0,r.jsxDEV)(e.span,{style:{color:\"#9ECBFF\"},children:'\"/auth/login\"'},void 0,!1,{fileName:\"/Users/andreasthomas/github/chronark/chronark.com/content/projects/_mdx_bundler_entry_point-95108577-d054-4fa4-9876-096009670ad0.mdx\",lineNumber:2,columnNumber:210},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-95108577-d054-4fa4-9876-096009670ad0.mdx\",lineNumber:2,columnNumber:269},this),(0,r.jsxDEV)(e.span,{style:{color:\"#79B8FF\"},children:'\"country\"'},void 0,!1,{fileName:\"/Users/andreasthomas/github/chronark/chronark.com/content/projects/_mdx_bundler_entry_point-95108577-d054-4fa4-9876-096009670ad0.mdx\",lineNumber:2,columnNumber:306},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-95108577-d054-4fa4-9876-096009670ad0.mdx\",lineNumber:2,columnNumber:361},this),(0,r.jsxDEV)(e.span,{style:{color:\"#9ECBFF\"},children:'\"DE\"'},void 0,!1,{fileName:\"/Users/andreasthomas/github/chronark/chronark.com/content/projects/_mdx_bundler_entry_point-95108577-d054-4fa4-9876-096009670ad0.mdx\",lineNumber:2,columnNumber:399},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-95108577-d054-4fa4-9876-096009670ad0.mdx\",lineNumber:2,columnNumber:449},this),(0,r.jsxDEV)(e.span,{style:{color:\"#79B8FF\"},children:\"5\"},void 0,!1,{fileName:\"/Users/andreasthomas/github/chronark/chronark.com/content/projects/_mdx_bundler_entry_point-95108577-d054-4fa4-9876-096009670ad0.mdx\",lineNumber:2,columnNumber:493},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-95108577-d054-4fa4-9876-096009670ad0.mdx\",lineNumber:2,columnNumber:530},this)]},void 0,!0,{fileName:\"/Users/andreasthomas/github/chronark/chronark.com/content/projects/_mdx_bundler_entry_point-95108577-d054-4fa4-9876-096009670ad0.mdx\",lineNumber:2,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-95108577-d054-4fa4-9876-096009670ad0.mdx\",lineNumber:3,columnNumber:20},this),(0,r.jsxDEV)(e.span,{style:{color:\"#79B8FF\"},children:'\"page\"'},void 0,!1,{fileName:\"/Users/andreasthomas/github/chronark/chronark.com/content/projects/_mdx_bundler_entry_point-95108577-d054-4fa4-9876-096009670ad0.mdx\",lineNumber:3,columnNumber:64},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-95108577-d054-4fa4-9876-096009670ad0.mdx\",lineNumber:3,columnNumber:116},this),(0,r.jsxDEV)(e.span,{style:{color:\"#9ECBFF\"},children:'\"/auth/login\"'},void 0,!1,{fileName:\"/Users/andreasthomas/github/chronark/chronark.com/content/projects/_mdx_bundler_entry_point-95108577-d054-4fa4-9876-096009670ad0.mdx\",lineNumber:3,columnNumber:154},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-95108577-d054-4fa4-9876-096009670ad0.mdx\",lineNumber:3,columnNumber:213},this),(0,r.jsxDEV)(e.span,{style:{color:\"#79B8FF\"},children:'\"country\"'},void 0,!1,{fileName:\"/Users/andreasthomas/github/chronark/chronark.com/content/projects/_mdx_bundler_entry_point-95108577-d054-4fa4-9876-096009670ad0.mdx\",lineNumber:3,columnNumber:250},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-95108577-d054-4fa4-9876-096009670ad0.mdx\",lineNumber:3,columnNumber:305},this),(0,r.jsxDEV)(e.span,{style:{color:\"#9ECBFF\"},children:'\"US\"'},void 0,!1,{fileName:\"/Users/andreasthomas/github/chronark/chronark.com/content/projects/_mdx_bundler_entry_point-95108577-d054-4fa4-9876-096009670ad0.mdx\",lineNumber:3,columnNumber:343},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-95108577-d054-4fa4-9876-096009670ad0.mdx\",lineNumber:3,columnNumber:393},this),(0,r.jsxDEV)(e.span,{style:{color:\"#79B8FF\"},children:\"2\"},void 0,!1,{fileName:\"/Users/andreasthomas/github/chronark/chronark.com/content/projects/_mdx_bundler_entry_point-95108577-d054-4fa4-9876-096009670ad0.mdx\",lineNumber:3,columnNumber:437},this)]},void 0,!0,{fileName:\"/Users/andreasthomas/github/chronark/chronark.com/content/projects/_mdx_bundler_entry_point-95108577-d054-4fa4-9876-096009670ad0.mdx\",lineNumber:3,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-95108577-d054-4fa4-9876-096009670ad0.mdx\",lineNumber:4,columnNumber:20},this)},void 0,!1,{fileName:\"/Users/andreasthomas/github/chronark/chronark.com/content/projects/_mdx_bundler_entry_point-95108577-d054-4fa4-9876-096009670ad0.mdx\",lineNumber:4,columnNumber:1},this)]},void 0,!0,{fileName:\"/Users/andreasthomas/github/chronark/chronark.com/content/projects/_mdx_bundler_entry_point-95108577-d054-4fa4-9876-096009670ad0.mdx\",lineNumber:1,columnNumber:79},this)},void 0,!1,{fileName:\"/Users/andreasthomas/github/chronark/chronark.com/content/projects/_mdx_bundler_entry_point-95108577-d054-4fa4-9876-096009670ad0.mdx\",lineNumber:1,columnNumber:1},this)},void 0,!1,{fileName:\"/Users/andreasthomas/github/chronark/chronark.com/content/projects/_mdx_bundler_entry_point-95108577-d054-4fa4-9876-096009670ad0.mdx\",lineNumber:95,columnNumber:1},this)]},void 0,!0,{fileName:\"/Users/andreasthomas/github/chronark/chronark.com/content/projects/_mdx_bundler_entry_point-95108577-d054-4fa4-9876-096009670ad0.mdx\",lineNumber:1,columnNumber:1},this)}function Nn(l={}){let{wrapper:e}=l.components||{};return e?(0,r.jsxDEV)(e,Object.assign({},l,{children:(0,r.jsxDEV)(Fe,l,void 0,!1,{fileName:\"/Users/andreasthomas/github/chronark/chronark.com/content/projects/_mdx_bundler_entry_point-95108577-d054-4fa4-9876-096009670ad0.mdx\"},this)}),void 0,!1,{fileName:\"/Users/andreasthomas/github/chronark/chronark.com/content/projects/_mdx_bundler_entry_point-95108577-d054-4fa4-9876-096009670ad0.mdx\"},this):Fe(l)}var kn=Nn;return _n(yn);})();\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/upstash-core-analytics.mdx",
|
|
"_raw": {
|
|
"sourceFilePath": "projects/upstash-core-analytics.mdx",
|
|
"sourceFileName": "upstash-core-analytics.mdx",
|
|
"sourceFileDir": "projects",
|
|
"contentType": "mdx",
|
|
"flattenedPath": "projects/upstash-core-analytics"
|
|
},
|
|
"type": "Project",
|
|
"path": "/projects/upstash-core-analytics",
|
|
"slug": "upstash-core-analytics"
|
|
},
|
|
"documentHash": "1679831865461",
|
|
"hasWarnings": false,
|
|
"documentTypeName": "Project"
|
|
},
|
|
"projects/upstash-edge-flags.mdx": {
|
|
"document": {
|
|
"published": true,
|
|
"title": "@upstash/edge-flags",
|
|
"description": "Featues flags for your edge functions.",
|
|
"date": "2022-12-12T00:00:00.000Z",
|
|
"url": "https://upstash.com/edge-flags",
|
|
"repository": "upstash/edge-flags",
|
|
"body": {
|
|
"raw": "\n\nWhether you want to ship without breaking things, run A/B tests or just want to test in production,\nfeature flags are a great way to dynamically change the behaviour of your app without redeploying. We're excited to announce the public\nbeta release of our new feature flagging library: [@upstash/edge-flags](https://github.com/upstash/edge-flags).\n\n*Edge Flags*, as the name implies, is a feature flag solution built to run at the edge. It is using [Upstash Redis](https://upstash.com/), a globally replicated serverless Redis service, to store configuration and is \ndesigned to work with [Next.js](https://nextjs.org) and [Vercel](https://vercel.com). We want to support other frameworks in the future, so if you have a suggestion, please let us know!\n\nWith the ability to toggle features on and off at the edge, you can quickly respond\nto user feedback and optimize the user experience. Whether you are looking to\nperform A/B testing, gradually roll out a new feature, or simply have the\nability to turn things off in case of an issue, our feature flagging library has\nyou covered.\n\n\n\n## Reference\n\nCheck out the full announcement on [upstash.com](https://upstash.com/blog/edge-flags-beta) for more details.",
|
|
"code": "var Component=(()=>{var c=Object.create;var r=Object.defineProperty;var g=Object.getOwnPropertyDescriptor;var d=Object.getOwnPropertyNames;var f=Object.getPrototypeOf,p=Object.prototype.hasOwnProperty;var m=(t,e)=>()=>(e||t((e={exports:{}}).exports,e),e.exports),y=(t,e)=>{for(var a in e)r(t,a,{get:e[a],enumerable:!0})},i=(t,e,a,o)=>{if(e&&typeof e==\"object\"||typeof e==\"function\")for(let s of d(e))!p.call(t,s)&&s!==a&&r(t,s,{get:()=>e[s],enumerable:!(o=g(e,s))||o.enumerable});return t};var b=(t,e,a)=>(a=t!=null?c(f(t)):{},i(e||!t||!t.__esModule?r(a,\"default\",{value:t,enumerable:!0}):a,t)),w=t=>i(r({},\"__esModule\",{value:!0}),t);var l=m((W,h)=>{h.exports=_jsx_runtime});var v={};y(v,{default:()=>k,frontmatter:()=>x});var n=b(l()),x={title:\"@upstash/edge-flags\",description:\"Featues flags for your edge functions.\",date:\"2022-12-12\",url:\"https://upstash.com/edge-flags\",repository:\"upstash/edge-flags\",published:!0};function u(t){let e=Object.assign({p:\"p\",a:\"a\",em:\"em\",h2:\"h2\",span:\"span\"},t.components);return(0,n.jsxs)(n.Fragment,{children:[(0,n.jsxs)(e.p,{children:[`Whether you want to ship without breaking things, run A/B tests or just want to test in production,\nfeature flags are a great way to dynamically change the behaviour of your app without redeploying. We're excited to announce the public\nbeta release of our new feature flagging library: `,(0,n.jsx)(e.a,{href:\"https://github.com/upstash/edge-flags\",children:\"@upstash/edge-flags\"}),\".\"]}),`\n`,(0,n.jsxs)(e.p,{children:[(0,n.jsx)(e.em,{children:\"Edge Flags\"}),\", as the name implies, is a feature flag solution built to run at the edge. It is using \",(0,n.jsx)(e.a,{href:\"https://upstash.com/\",children:\"Upstash Redis\"}),`, a globally replicated serverless Redis service, to store configuration and is\ndesigned to work with `,(0,n.jsx)(e.a,{href:\"https://nextjs.org\",children:\"Next.js\"}),\" and \",(0,n.jsx)(e.a,{href:\"https://vercel.com\",children:\"Vercel\"}),\". We want to support other frameworks in the future, so if you have a suggestion, please let us know!\"]}),`\n`,(0,n.jsx)(e.p,{children:`With the ability to toggle features on and off at the edge, you can quickly respond\nto user feedback and optimize the user experience. Whether you are looking to\nperform A/B testing, gradually roll out a new feature, or simply have the\nability to turn things off in case of an issue, our feature flagging library has\nyou covered.`}),`\n`,(0,n.jsxs)(e.h2,{id:\"reference\",children:[(0,n.jsx)(e.a,{className:\"subheading-anchor\",\"aria-label\":\"Link to section\",href:\"#reference\",children:(0,n.jsx)(e.span,{className:\"icon icon-link\"})}),\"Reference\"]}),`\n`,(0,n.jsxs)(e.p,{children:[\"Check out the full announcement on \",(0,n.jsx)(e.a,{href:\"https://upstash.com/blog/edge-flags-beta\",children:\"upstash.com\"}),\" for more details.\"]})]})}function j(t={}){let{wrapper:e}=t.components||{};return e?(0,n.jsx)(e,Object.assign({},t,{children:(0,n.jsx)(u,t)})):u(t)}var k=j;return w(v);})();\n;return Component;"
|
|
},
|
|
"_id": "projects/upstash-edge-flags.mdx",
|
|
"_raw": {
|
|
"sourceFilePath": "projects/upstash-edge-flags.mdx",
|
|
"sourceFileName": "upstash-edge-flags.mdx",
|
|
"sourceFileDir": "projects",
|
|
"contentType": "mdx",
|
|
"flattenedPath": "projects/upstash-edge-flags"
|
|
},
|
|
"type": "Project",
|
|
"path": "/projects/upstash-edge-flags",
|
|
"slug": "upstash-edge-flags"
|
|
},
|
|
"documentHash": "1679830323463",
|
|
"hasWarnings": false,
|
|
"documentTypeName": "Project"
|
|
},
|
|
"projects/upstash-kafka.mdx": {
|
|
"document": {
|
|
"published": true,
|
|
"title": "@upstash/kafka",
|
|
"description": "A fully typed Kafka client built for Upstash Kafka and HTTP, perfect for serverless and edge runtimes",
|
|
"date": "2022-01-08T00:00:00.000Z",
|
|
"url": "https://upstash.com/kafka",
|
|
"repository": "upstash/upstash-kafka",
|
|
"body": {
|
|
"raw": "\n\nAn HTTP/REST based Kafka client built on top of\n[Upstash REST API](https://docs.upstash.com/kafka/rest).\n\nIt is the only connectionless (HTTP based) Kafka client and designed for:\n\n- Serverless functions (AWS Lambda ...)\n- Cloudflare Workers (see the example)\n- Fastly Compute@Edge\n- Next.js Edge, Remix ...\n- Client side web/mobile applications\n- WebAssembly and other environments where HTTP is preferred over TCP\n connections.\n\n# Installation\n\n```bash\nnpm install @upstash/kafka\n```\n\n# Quickstart\n\n## Auth\n\n1. Go to [upstash](https://console.upstash.com/kafka) and select your database.\n2. Copy the `REST API` secrets at the bottom of the page\n\n```typescript\nimport { Kafka } from \"@upstash/kafka\"\n\nconst kafka = new Kafka({\n url: \"<UPSTASH_KAFKA_REST_URL>\",\n username: \"<UPSTASH_KAFKA_REST_USERNAME>\",\n password: \"<UPSTASH_KAFKA_REST_PASSWORD>\",\n})\n```\n\n## Produce a single message\n\n```typescript\nconst p = kafka.producer()\nconst message = { hello: \"world\" } // Objects will get serialized using `JSON.stringify`\nconst res = await p.produce(\"<my.topic>\", message)\nconst res = await p.produce(\"<my.topic>\", message, {\n partition: 1,\n timestamp: 12345,\n key: \"<custom key>\",\n headers: [{ key: \"traceId\", value: \"85a9f12\" }],\n})\n```\n\n## Produce multiple messages.\n\nThe same options from the example above can be set for every message.\n\n```typescript\nconst p = kafka.producer()\nconst res = await p.produceMany([\n {\n topic: \"my.topic\",\n value: { hello: \"world\" },\n // ...options\n },\n {\n topic: \"another.topic\",\n value: \"another message\",\n // ...options\n },\n])\n```\n\n## Consume\n\nThe first time a consumer is created, it needs to figure out the group\ncoordinator by asking the Kafka brokers and joins the consumer group. This\nprocess takes some time to complete. That's why when a consumer instance is\ncreated first time, it may return empty messages until consumer group\ncoordination is completed.\n\n```typescript\nconst c = kafka.consumer()\nconst messages = await c.consume({\n consumerGroupId: \"group_1\",\n instanceId: \"instance_1\",\n topics: [\"test.topic\"],\n autoOffsetReset: \"earliest\",\n})\n```\n\nMore examples can be found in the\n[docstring](https://github.com/upstash/upstash-kafka/blob/main/pkg/consumer.ts#L265)\n\n## Commit manually\n\nWhile `consume` can handle committing automatically, you can also use\n`Consumer.commit` to manually commit.\n\n```typescript\nconst consumerGroupId = \"mygroup\"\nconst instanceId = \"myinstance\"\nconst topic = \"my.topic\"\n\nconst c = kafka.consumer()\nconst messages = await c.consume({\n consumerGroupId,\n instanceId,\n topics: [topic],\n autoCommit: false,\n})\n\nfor (const message of messages) {\n // message handling logic\n\n await c.commit({\n consumerGroupId,\n instanceId,\n offset: {\n topic: message.topic,\n partition: message.partition,\n offset: message.offset,\n },\n })\n}\n```\n\n## Fetch\n\nYou can also manage offsets manually by using `Consumer.fetch`\n\n```typescript\nconst c = kafka.consumer()\nconst messages = await c.fetch({\n topic: \"greeting\",\n partition: 3,\n offset: 42,\n timeout: 1000,\n})\n```\n\n## Examples\n\nSee [/examples](https://github.com/upstash/upstash-kafka/tree/main/examples) as\nwell as various examples in the docstrings of each method.\n\n# Contributing\n\n## Requirements\n\n- [nodejs](https://nodejs.org) v14.x or higher\n- [pnpm](https://pnpm.io/installation)\n\n## Setup\n\n0. Install dependencies using `pnpm install`\n1. Create a kafka instance on upstash.\n [docs](https://docs.upstash.com/kafka#create-a-kafka-cluster)\n2. Create the following topics: `blue`, `red`, `green`.\n [docs](https://docs.upstash.com/kafka#create-a-topic)\n\n The partitions or retention settings don't matter at this time.\n\n3. Create `.env` file with your kafka secrets `cp .env.example .env`\n\n## Running tests\n\n```bash\npnpm test\n```\n",
|
|
"code": "var Component=(()=>{var dn=Object.create;var P=Object.defineProperty;var mn=Object.getOwnPropertyDescriptor;var ln=Object.getOwnPropertyNames;var bn=Object.getPrototypeOf,un=Object.prototype.hasOwnProperty;var G=(m,e)=>()=>(e||m((e={exports:{}}).exports,e),e.exports),hn=(m,e)=>{for(var _ in e)P(m,_,{get:e[_],enumerable:!0})},ye=(m,e,_,x)=>{if(e&&typeof e==\"object\"||typeof e==\"function\")for(let k of ln(e))!un.call(m,k)&&k!==_&&P(m,k,{get:()=>e[k],enumerable:!(x=mn(e,k))||x.enumerable});return m};var fn=(m,e,_)=>(_=m!=null?dn(bn(m)):{},ye(e||!m||!m.__esModule?P(_,\"default\",{value:m,enumerable:!0}):_,m)),_n=m=>ye(P({},\"__esModule\",{value:!0}),m);var Ee=G((gn,ge)=>{ge.exports=React});var je=G(q=>{\"use strict\";(function(){\"use strict\";var m=Ee(),e=Symbol.for(\"react.element\"),_=Symbol.for(\"react.portal\"),x=Symbol.for(\"react.fragment\"),k=Symbol.for(\"react.strict_mode\"),H=Symbol.for(\"react.profiler\"),z=Symbol.for(\"react.provider\"),X=Symbol.for(\"react.context\"),F=Symbol.for(\"react.forward_ref\"),O=Symbol.for(\"react.suspense\"),A=Symbol.for(\"react.suspense_list\"),C=Symbol.for(\"react.memo\"),D=Symbol.for(\"react.lazy\"),Ce=Symbol.for(\"react.offscreen\"),J=Symbol.iterator,Re=\"@@iterator\";function Te(r){if(r===null||typeof r!=\"object\")return null;var a=J&&r[J]||r[Re];return typeof a==\"function\"?a:null}var g=m.__SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED;function u(r){{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\",r,t)}}function we(r,a,t){{var o=g.ReactDebugCurrentFrame,d=o.getStackAddendum();d!==\"\"&&(a+=\"%s\",t=t.concat([d]));var i=t.map(function(c){return String(c)});i.unshift(\"Warning: \"+a),Function.prototype.apply.call(console[r],console,i)}}var Se=!1,Be=!1,Pe=!1,Oe=!1,Ae=!1,Q;Q=Symbol.for(\"react.module.reference\");function De(r){return!!(typeof r==\"string\"||typeof r==\"function\"||r===x||r===H||Ae||r===k||r===O||r===A||Oe||r===Ce||Se||Be||Pe||typeof r==\"object\"&&r!==null&&(r.$$typeof===D||r.$$typeof===C||r.$$typeof===z||r.$$typeof===X||r.$$typeof===F||r.$$typeof===Q||r.getModuleId!==void 0))}function Ie(r,a,t){var o=r.displayName;if(o)return o;var d=a.displayName||a.name||\"\";return d!==\"\"?t+\"(\"+d+\")\":t}function Z(r){return r.displayName||\"Context\"}function p(r){if(r==null)return null;if(typeof r.tag==\"number\"&&u(\"Received an unexpected object in getComponentNameFromType(). This is likely a bug in React. Please file an issue.\"),typeof r==\"function\")return r.displayName||r.name||null;if(typeof r==\"string\")return r;switch(r){case x:return\"Fragment\";case _:return\"Portal\";case H:return\"Profiler\";case k:return\"StrictMode\";case O:return\"Suspense\";case A:return\"SuspenseList\"}if(typeof r==\"object\")switch(r.$$typeof){case X:var a=r;return Z(a)+\".Consumer\";case z:var t=r;return Z(t._context)+\".Provider\";case F:return Ie(r,r.render,\"ForwardRef\");case C:var o=r.displayName||null;return o!==null?o:p(r.type)||\"Memo\";case D:{var d=r,i=d._payload,c=d._init;try{return p(c(i))}catch{return null}}}return null}var y=Object.assign,U=0,ee,ne,re,ae,te,oe,se;function ce(){}ce.__reactDisabledLog=!0;function Le(){{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 r={configurable:!0,enumerable:!0,value:ce,writable:!0};Object.defineProperties(console,{info:r,log:r,warn:r,error:r,group:r,groupCollapsed:r,groupEnd:r})}U++}}function We(){{if(U--,U===0){var r={configurable:!0,enumerable:!0,writable:!0};Object.defineProperties(console,{log:y({},r,{value:ee}),info:y({},r,{value:ne}),warn:y({},r,{value:re}),error:y({},r,{value:ae}),group:y({},r,{value:te}),groupCollapsed:y({},r,{value:oe}),groupEnd:y({},r,{value:se})})}U<0&&u(\"disabledDepth fell below zero. This is a bug in React. Please file an issue.\")}}var I=g.ReactCurrentDispatcher,L;function R(r,a,t){{if(L===void 0)try{throw Error()}catch(d){var o=d.stack.trim().match(/\\n( *(at )?)/);L=o&&o[1]||\"\"}return`\n`+L+r}}var W=!1,T;{var Ye=typeof WeakMap==\"function\"?WeakMap:Map;T=new Ye}function de(r,a){if(!r||W)return\"\";{var t=T.get(r);if(t!==void 0)return t}var o;W=!0;var d=Error.prepareStackTrace;Error.prepareStackTrace=void 0;var i;i=I.current,I.current=null,Le();try{if(a){var c=function(){throw Error()};if(Object.defineProperty(c.prototype,\"props\",{set:function(){throw Error()}}),typeof Reflect==\"object\"&&Reflect.construct){try{Reflect.construct(c,[])}catch(N){o=N}Reflect.construct(r,[],c)}else{try{c.call()}catch(N){o=N}r.call(c.prototype)}}else{try{throw Error()}catch(N){o=N}r()}}catch(N){if(N&&o&&typeof N.stack==\"string\"){for(var s=N.stack.split(`\n`),h=o.stack.split(`\n`),l=s.length-1,b=h.length-1;l>=1&&b>=0&&s[l]!==h[b];)b--;for(;l>=1&&b>=0;l--,b--)if(s[l]!==h[b]){if(l!==1||b!==1)do if(l--,b--,b<0||s[l]!==h[b]){var f=`\n`+s[l].replace(\" at new \",\" at \");return r.displayName&&f.includes(\"<anonymous>\")&&(f=f.replace(\"<anonymous>\",r.displayName)),typeof r==\"function\"&&T.set(r,f),f}while(l>=1&&b>=0);break}}}finally{W=!1,I.current=i,We(),Error.prepareStackTrace=d}var j=r?r.displayName||r.name:\"\",xe=j?R(j):\"\";return typeof r==\"function\"&&T.set(r,xe),xe}function Me(r,a,t){return de(r,!1)}function $e(r){var a=r.prototype;return!!(a&&a.isReactComponent)}function w(r,a,t){if(r==null)return\"\";if(typeof r==\"function\")return de(r,$e(r));if(typeof r==\"string\")return R(r);switch(r){case O:return R(\"Suspense\");case A:return R(\"SuspenseList\")}if(typeof r==\"object\")switch(r.$$typeof){case F:return Me(r.render);case C:return w(r.type,a,t);case D:{var o=r,d=o._payload,i=o._init;try{return w(i(d),a,t)}catch{}}}return\"\"}var S=Object.prototype.hasOwnProperty,ie={},me=g.ReactDebugCurrentFrame;function B(r){if(r){var a=r._owner,t=w(r.type,r._source,a?a.type:null);me.setExtraStackFrame(t)}else me.setExtraStackFrame(null)}function Ve(r,a,t,o,d){{var i=Function.call.bind(S);for(var c in r)if(i(r,c)){var s=void 0;try{if(typeof r[c]!=\"function\"){var h=Error((o||\"React class\")+\": \"+t+\" type `\"+c+\"` is invalid; it must be a function, usually from the `prop-types` package, but received `\"+typeof r[c]+\"`.This often happens because of typos such as `PropTypes.function` instead of `PropTypes.func`.\");throw h.name=\"Invariant Violation\",h}s=r[c](a,c,o,t,null,\"SECRET_DO_NOT_PASS_THIS_OR_YOU_WILL_BE_FIRED\")}catch(l){s=l}s&&!(s instanceof Error)&&(B(d),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,c,typeof s),B(null)),s instanceof Error&&!(s.message in ie)&&(ie[s.message]=!0,B(d),u(\"Failed %s type: %s\",t,s.message),B(null))}}}var Ke=Array.isArray;function Y(r){return Ke(r)}function Ge(r){{var a=typeof Symbol==\"function\"&&Symbol.toStringTag,t=a&&r[Symbol.toStringTag]||r.constructor.name||\"Object\";return t}}function qe(r){try{return le(r),!1}catch{return!0}}function le(r){return\"\"+r}function be(r){if(qe(r))return u(\"The provided key is an unsupported type %s. This value must be coerced to a string before before using it here.\",Ge(r)),le(r)}var v=g.ReactCurrentOwner,He={key:!0,ref:!0,__self:!0,__source:!0},ue,he,M;M={};function ze(r){if(S.call(r,\"ref\")){var a=Object.getOwnPropertyDescriptor(r,\"ref\").get;if(a&&a.isReactWarning)return!1}return r.ref!==void 0}function Xe(r){if(S.call(r,\"key\")){var a=Object.getOwnPropertyDescriptor(r,\"key\").get;if(a&&a.isReactWarning)return!1}return r.key!==void 0}function Je(r,a){if(typeof r.ref==\"string\"&&v.current&&a&&v.current.stateNode!==a){var t=p(v.current.type);M[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),r.ref),M[t]=!0)}}function Qe(r,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(r,\"key\",{get:t,configurable:!0})}}function Ze(r,a){{var t=function(){he||(he=!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(r,\"ref\",{get:t,configurable:!0})}}var en=function(r,a,t,o,d,i,c){var s={$$typeof:e,type:r,key:a,ref:t,props:c,_owner:i};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:d}),Object.freeze&&(Object.freeze(s.props),Object.freeze(s)),s};function nn(r,a,t,o,d){{var i,c={},s=null,h=null;t!==void 0&&(be(t),s=\"\"+t),Xe(a)&&(be(a.key),s=\"\"+a.key),ze(a)&&(h=a.ref,Je(a,d));for(i in a)S.call(a,i)&&!He.hasOwnProperty(i)&&(c[i]=a[i]);if(r&&r.defaultProps){var l=r.defaultProps;for(i in l)c[i]===void 0&&(c[i]=l[i])}if(s||h){var b=typeof r==\"function\"?r.displayName||r.name||\"Unknown\":r;s&&Qe(c,b),h&&Ze(c,b)}return en(r,s,h,d,o,v.current,c)}}var $=g.ReactCurrentOwner,fe=g.ReactDebugCurrentFrame;function E(r){if(r){var a=r._owner,t=w(r.type,r._source,a?a.type:null);fe.setExtraStackFrame(t)}else fe.setExtraStackFrame(null)}var V;V=!1;function K(r){return typeof r==\"object\"&&r!==null&&r.$$typeof===e}function _e(){{if($.current){var r=p($.current.type);if(r)return`\n\nCheck the render method of \\``+r+\"`.\"}return\"\"}}function rn(r){{if(r!==void 0){var a=r.fileName.replace(/^.*[\\\\\\/]/,\"\"),t=r.lineNumber;return`\n\nCheck your code at `+a+\":\"+t+\".\"}return\"\"}}var pe={};function an(r){{var a=_e();if(!a){var t=typeof r==\"string\"?r:r.displayName||r.name;t&&(a=`\n\nCheck the top-level render call using <`+t+\">.\")}return a}}function Ne(r,a){{if(!r._store||r._store.validated||r.key!=null)return;r._store.validated=!0;var t=an(a);if(pe[t])return;pe[t]=!0;var o=\"\";r&&r._owner&&r._owner!==$.current&&(o=\" It was passed a child from \"+p(r._owner.type)+\".\"),E(r),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 ke(r,a){{if(typeof r!=\"object\")return;if(Y(r))for(var t=0;t<r.length;t++){var o=r[t];K(o)&&Ne(o,a)}else if(K(r))r._store&&(r._store.validated=!0);else if(r){var d=Te(r);if(typeof d==\"function\"&&d!==r.entries)for(var i=d.call(r),c;!(c=i.next()).done;)K(c.value)&&Ne(c.value,a)}}}function tn(r){{var a=r.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===C))t=a.propTypes;else return;if(t){var o=p(a);Ve(t,r.props,\"prop\",o,r)}else if(a.PropTypes!==void 0&&!V){V=!0;var d=p(a);u(\"Component %s declared `PropTypes` instead of `propTypes`. Did you misspell the property assignment?\",d||\"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(r){{for(var a=Object.keys(r.props),t=0;t<a.length;t++){var o=a[t];if(o!==\"children\"&&o!==\"key\"){E(r),u(\"Invalid prop `%s` supplied to `React.Fragment`. React.Fragment can only have `key` and `children` props.\",o),E(null);break}}r.ref!==null&&(E(r),u(\"Invalid attribute `ref` supplied to `React.Fragment`.\"),E(null))}}function sn(r,a,t,o,d,i){{var c=De(r);if(!c){var s=\"\";(r===void 0||typeof r==\"object\"&&r!==null&&Object.keys(r).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 h=rn(d);h?s+=h:s+=_e();var l;r===null?l=\"null\":Y(r)?l=\"array\":r!==void 0&&r.$$typeof===e?(l=\"<\"+(p(r.type)||\"Unknown\")+\" />\",s=\" Did you accidentally export a JSX literal instead of a component?\"):l=typeof r,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 b=nn(r,a,t,d,i);if(b==null)return b;if(c){var f=a.children;if(f!==void 0)if(o)if(Y(f)){for(var j=0;j<f.length;j++)ke(f[j],r);Object.freeze&&Object.freeze(f)}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 ke(f,r)}return r===x?on(b):tn(b),b}}var cn=sn;q.Fragment=x,q.jsxDEV=cn})()});var ve=G((jn,Ue)=>{\"use strict\";Ue.exports=je()});var xn={};hn(xn,{default:()=>kn,frontmatter:()=>pn});var n=fn(ve()),pn={title:\"@upstash/kafka\",description:\"A fully typed Kafka client built for Upstash Kafka and HTTP, perfect for serverless and edge runtimes\",date:\"2022-01-08\",url:\"https://upstash.com/kafka\",repository:\"upstash/upstash-kafka\",published:!0};function Fe(m){let e=Object.assign({p:\"p\",a:\"a\",ul:\"ul\",li:\"li\",h1:\"h1\",span:\"span\",div:\"div\",pre:\"pre\",code:\"code\",h2:\"h2\",ol:\"ol\"},m.components);return(0,n.jsxDEV)(n.Fragment,{children:[(0,n.jsxDEV)(e.p,{children:[`An HTTP/REST based Kafka client built on top of\n`,(0,n.jsxDEV)(e.a,{href:\"https://docs.upstash.com/kafka/rest\",children:\"Upstash REST API\"},void 0,!1,{fileName:\"/Users/andreasthomas/github/chronark/chronark.com/content/projects/_mdx_bundler_entry_point-f941a3c8-66a7-48df-b631-0b73ab779bde.mdx\",lineNumber:13,columnNumber:1},this),\".\"]},void 0,!0,{fileName:\"/Users/andreasthomas/github/chronark/chronark.com/content/projects/_mdx_bundler_entry_point-f941a3c8-66a7-48df-b631-0b73ab779bde.mdx\",lineNumber:12,columnNumber:1},this),`\n`,(0,n.jsxDEV)(e.p,{children:\"It is the only connectionless (HTTP based) Kafka client and designed for:\"},void 0,!1,{fileName:\"/Users/andreasthomas/github/chronark/chronark.com/content/projects/_mdx_bundler_entry_point-f941a3c8-66a7-48df-b631-0b73ab779bde.mdx\",lineNumber:15,columnNumber:1},this),`\n`,(0,n.jsxDEV)(e.ul,{children:[`\n`,(0,n.jsxDEV)(e.li,{children:\"Serverless functions (AWS Lambda ...)\"},void 0,!1,{fileName:\"/Users/andreasthomas/github/chronark/chronark.com/content/projects/_mdx_bundler_entry_point-f941a3c8-66a7-48df-b631-0b73ab779bde.mdx\",lineNumber:17,columnNumber:1},this),`\n`,(0,n.jsxDEV)(e.li,{children:\"Cloudflare Workers (see the example)\"},void 0,!1,{fileName:\"/Users/andreasthomas/github/chronark/chronark.com/content/projects/_mdx_bundler_entry_point-f941a3c8-66a7-48df-b631-0b73ab779bde.mdx\",lineNumber:18,columnNumber:1},this),`\n`,(0,n.jsxDEV)(e.li,{children:\"Fastly Compute@Edge\"},void 0,!1,{fileName:\"/Users/andreasthomas/github/chronark/chronark.com/content/projects/_mdx_bundler_entry_point-f941a3c8-66a7-48df-b631-0b73ab779bde.mdx\",lineNumber:19,columnNumber:1},this),`\n`,(0,n.jsxDEV)(e.li,{children:\"Next.js Edge, Remix ...\"},void 0,!1,{fileName:\"/Users/andreasthomas/github/chronark/chronark.com/content/projects/_mdx_bundler_entry_point-f941a3c8-66a7-48df-b631-0b73ab779bde.mdx\",lineNumber:20,columnNumber:1},this),`\n`,(0,n.jsxDEV)(e.li,{children:\"Client side web/mobile applications\"},void 0,!1,{fileName:\"/Users/andreasthomas/github/chronark/chronark.com/content/projects/_mdx_bundler_entry_point-f941a3c8-66a7-48df-b631-0b73ab779bde.mdx\",lineNumber:21,columnNumber:1},this),`\n`,(0,n.jsxDEV)(e.li,{children:`WebAssembly and other environments where HTTP is preferred over TCP\nconnections.`},void 0,!1,{fileName:\"/Users/andreasthomas/github/chronark/chronark.com/content/projects/_mdx_bundler_entry_point-f941a3c8-66a7-48df-b631-0b73ab779bde.mdx\",lineNumber:22,columnNumber:1},this),`\n`]},void 0,!0,{fileName:\"/Users/andreasthomas/github/chronark/chronark.com/content/projects/_mdx_bundler_entry_point-f941a3c8-66a7-48df-b631-0b73ab779bde.mdx\",lineNumber:17,columnNumber:1},this),`\n`,(0,n.jsxDEV)(e.h1,{id:\"installation\",children:[(0,n.jsxDEV)(e.a,{className:\"subheading-anchor\",\"aria-label\":\"Link to section\",href:\"#installation\",children:(0,n.jsxDEV)(e.span,{className:\"icon icon-link\"},void 0,!1,{fileName:\"/Users/andreasthomas/github/chronark/chronark.com/content/projects/_mdx_bundler_entry_point-f941a3c8-66a7-48df-b631-0b73ab779bde.mdx\"},this)},void 0,!1,{fileName:\"/Users/andreasthomas/github/chronark/chronark.com/content/projects/_mdx_bundler_entry_point-f941a3c8-66a7-48df-b631-0b73ab779bde.mdx\"},this),\"Installation\"]},void 0,!0,{fileName:\"/Users/andreasthomas/github/chronark/chronark.com/content/projects/_mdx_bundler_entry_point-f941a3c8-66a7-48df-b631-0b73ab779bde.mdx\",lineNumber:25,columnNumber:1},this),`\n`,(0,n.jsxDEV)(e.div,{\"data-rehype-pretty-code-fragment\":\"\",children:(0,n.jsxDEV)(e.pre,{\"data-language\":\"bash\",\"data-theme\":\"default\",children:(0,n.jsxDEV)(e.code,{\"data-language\":\"bash\",\"data-theme\":\"default\",children:(0,n.jsxDEV)(e.span,{className:\"line\",children:[(0,n.jsxDEV)(e.span,{style:{color:\"#B392F0\"},children:\"npm\"},void 0,!1,{fileName:\"/Users/andreasthomas/github/chronark/chronark.com/content/projects/_mdx_bundler_entry_point-f941a3c8-66a7-48df-b631-0b73ab779bde.mdx\",lineNumber:1,columnNumber:104},this),(0,n.jsxDEV)(e.span,{style:{color:\"#E1E4E8\"},children:\" \"},void 0,!1,{fileName:\"/Users/andreasthomas/github/chronark/chronark.com/content/projects/_mdx_bundler_entry_point-f941a3c8-66a7-48df-b631-0b73ab779bde.mdx\",lineNumber:1,columnNumber:143},this),(0,n.jsxDEV)(e.span,{style:{color:\"#9ECBFF\"},children:\"install\"},void 0,!1,{fileName:\"/Users/andreasthomas/github/chronark/chronark.com/content/projects/_mdx_bundler_entry_point-f941a3c8-66a7-48df-b631-0b73ab779bde.mdx\",lineNumber:1,columnNumber:180},this),(0,n.jsxDEV)(e.span,{style:{color:\"#E1E4E8\"},children:\" \"},void 0,!1,{fileName:\"/Users/andreasthomas/github/chronark/chronark.com/content/projects/_mdx_bundler_entry_point-f941a3c8-66a7-48df-b631-0b73ab779bde.mdx\",lineNumber:1,columnNumber:223},this),(0,n.jsxDEV)(e.span,{style:{color:\"#9ECBFF\"},children:\"@upstash/kafka\"},void 0,!1,{fileName:\"/Users/andreasthomas/github/chronark/chronark.com/content/projects/_mdx_bundler_entry_point-f941a3c8-66a7-48df-b631-0b73ab779bde.mdx\",lineNumber:1,columnNumber:260},this)]},void 0,!0,{fileName:\"/Users/andreasthomas/github/chronark/chronark.com/content/projects/_mdx_bundler_entry_point-f941a3c8-66a7-48df-b631-0b73ab779bde.mdx\",lineNumber:1,columnNumber:85},this)},void 0,!1,{fileName:\"/Users/andreasthomas/github/chronark/chronark.com/content/projects/_mdx_bundler_entry_point-f941a3c8-66a7-48df-b631-0b73ab779bde.mdx\",lineNumber:1,columnNumber:79},this)},void 0,!1,{fileName:\"/Users/andreasthomas/github/chronark/chronark.com/content/projects/_mdx_bundler_entry_point-f941a3c8-66a7-48df-b631-0b73ab779bde.mdx\",lineNumber:1,columnNumber:1},this)},void 0,!1,{fileName:\"/Users/andreasthomas/github/chronark/chronark.com/content/projects/_mdx_bundler_entry_point-f941a3c8-66a7-48df-b631-0b73ab779bde.mdx\",lineNumber:27,columnNumber:1},this),`\n`,(0,n.jsxDEV)(e.h1,{id:\"quickstart\",children:[(0,n.jsxDEV)(e.a,{className:\"subheading-anchor\",\"aria-label\":\"Link to section\",href:\"#quickstart\",children:(0,n.jsxDEV)(e.span,{className:\"icon icon-link\"},void 0,!1,{fileName:\"/Users/andreasthomas/github/chronark/chronark.com/content/projects/_mdx_bundler_entry_point-f941a3c8-66a7-48df-b631-0b73ab779bde.mdx\"},this)},void 0,!1,{fileName:\"/Users/andreasthomas/github/chronark/chronark.com/content/projects/_mdx_bundler_entry_point-f941a3c8-66a7-48df-b631-0b73ab779bde.mdx\"},this),\"Quickstart\"]},void 0,!0,{fileName:\"/Users/andreasthomas/github/chronark/chronark.com/content/projects/_mdx_bundler_entry_point-f941a3c8-66a7-48df-b631-0b73ab779bde.mdx\",lineNumber:31,columnNumber:1},this),`\n`,(0,n.jsxDEV)(e.h2,{id:\"auth\",children:[(0,n.jsxDEV)(e.a,{className:\"subheading-anchor\",\"aria-label\":\"Link to section\",href:\"#auth\",children:(0,n.jsxDEV)(e.span,{className:\"icon icon-link\"},void 0,!1,{fileName:\"/Users/andreasthomas/github/chronark/chronark.com/content/projects/_mdx_bundler_entry_point-f941a3c8-66a7-48df-b631-0b73ab779bde.mdx\"},this)},void 0,!1,{fileName:\"/Users/andreasthomas/github/chronark/chronark.com/content/projects/_mdx_bundler_entry_point-f941a3c8-66a7-48df-b631-0b73ab779bde.mdx\"},this),\"Auth\"]},void 0,!0,{fileName:\"/Users/andreasthomas/github/chronark/chronark.com/content/projects/_mdx_bundler_entry_point-f941a3c8-66a7-48df-b631-0b73ab779bde.mdx\",lineNumber:33,columnNumber:1},this),`\n`,(0,n.jsxDEV)(e.ol,{children:[`\n`,(0,n.jsxDEV)(e.li,{children:[\"Go to \",(0,n.jsxDEV)(e.a,{href:\"https://console.upstash.com/kafka\",children:\"upstash\"},void 0,!1,{fileName:\"/Users/andreasthomas/github/chronark/chronark.com/content/projects/_mdx_bundler_entry_point-f941a3c8-66a7-48df-b631-0b73ab779bde.mdx\",lineNumber:35,columnNumber:10},this),\" and select your database.\"]},void 0,!0,{fileName:\"/Users/andreasthomas/github/chronark/chronark.com/content/projects/_mdx_bundler_entry_point-f941a3c8-66a7-48df-b631-0b73ab779bde.mdx\",lineNumber:35,columnNumber:1},this),`\n`,(0,n.jsxDEV)(e.li,{children:[\"Copy the \",(0,n.jsxDEV)(e.code,{children:\"REST API\"},void 0,!1,{fileName:\"/Users/andreasthomas/github/chronark/chronark.com/content/projects/_mdx_bundler_entry_point-f941a3c8-66a7-48df-b631-0b73ab779bde.mdx\",lineNumber:36,columnNumber:13},this),\" secrets at the bottom of the page\"]},void 0,!0,{fileName:\"/Users/andreasthomas/github/chronark/chronark.com/content/projects/_mdx_bundler_entry_point-f941a3c8-66a7-48df-b631-0b73ab779bde.mdx\",lineNumber:36,columnNumber:1},this),`\n`]},void 0,!0,{fileName:\"/Users/andreasthomas/github/chronark/chronark.com/content/projects/_mdx_bundler_entry_point-f941a3c8-66a7-48df-b631-0b73ab779bde.mdx\",lineNumber:35,columnNumber:1},this),`\n`,(0,n.jsxDEV)(e.div,{\"data-rehype-pretty-code-fragment\":\"\",children:(0,n.jsxDEV)(e.pre,{\"data-language\":\"typescript\",\"data-theme\":\"default\",children:(0,n.jsxDEV)(e.code,{\"data-language\":\"typescript\",\"data-theme\":\"default\",children:[(0,n.jsxDEV)(e.span,{className:\"line\",children:[(0,n.jsxDEV)(e.span,{style:{color:\"#F97583\"},children:\"import\"},void 0,!1,{fileName:\"/Users/andreasthomas/github/chronark/chronark.com/content/projects/_mdx_bundler_entry_point-f941a3c8-66a7-48df-b631-0b73ab779bde.mdx\",lineNumber:1,columnNumber:104},this),(0,n.jsxDEV)(e.span,{style:{color:\"#E1E4E8\"},children:\" { Kafka } \"},void 0,!1,{fileName:\"/Users/andreasthomas/github/chronark/chronark.com/content/projects/_mdx_bundler_entry_point-f941a3c8-66a7-48df-b631-0b73ab779bde.mdx\",lineNumber:1,columnNumber:146},this),(0,n.jsxDEV)(e.span,{style:{color:\"#F97583\"},children:\"from\"},void 0,!1,{fileName:\"/Users/andreasthomas/github/chronark/chronark.com/content/projects/_mdx_bundler_entry_point-f941a3c8-66a7-48df-b631-0b73ab779bde.mdx\",lineNumber:1,columnNumber:193},this),(0,n.jsxDEV)(e.span,{style:{color:\"#E1E4E8\"},children:\" \"},void 0,!1,{fileName:\"/Users/andreasthomas/github/chronark/chronark.com/content/projects/_mdx_bundler_entry_point-f941a3c8-66a7-48df-b631-0b73ab779bde.mdx\",lineNumber:1,columnNumber:233},this),(0,n.jsxDEV)(e.span,{style:{color:\"#9ECBFF\"},children:'\"@upstash/kafka\"'},void 0,!1,{fileName:\"/Users/andreasthomas/github/chronark/chronark.com/content/projects/_mdx_bundler_entry_point-f941a3c8-66a7-48df-b631-0b73ab779bde.mdx\",lineNumber:1,columnNumber:270},this)]},void 0,!0,{fileName:\"/Users/andreasthomas/github/chronark/chronark.com/content/projects/_mdx_bundler_entry_point-f941a3c8-66a7-48df-b631-0b73ab779bde.mdx\",lineNumber:1,columnNumber:85},this),`\n`,(0,n.jsxDEV)(e.span,{className:\"line\",children:\" \"},void 0,!1,{fileName:\"/Users/andreasthomas/github/chronark/chronark.com/content/projects/_mdx_bundler_entry_point-f941a3c8-66a7-48df-b631-0b73ab779bde.mdx\",lineNumber:2,columnNumber:1},this),`\n`,(0,n.jsxDEV)(e.span,{className:\"line\",children:[(0,n.jsxDEV)(e.span,{style:{color:\"#F97583\"},children:\"const\"},void 0,!1,{fileName:\"/Users/andreasthomas/github/chronark/chronark.com/content/projects/_mdx_bundler_entry_point-f941a3c8-66a7-48df-b631-0b73ab779bde.mdx\",lineNumber:3,columnNumber:20},this),(0,n.jsxDEV)(e.span,{style:{color:\"#E1E4E8\"},children:\" \"},void 0,!1,{fileName:\"/Users/andreasthomas/github/chronark/chronark.com/content/projects/_mdx_bundler_entry_point-f941a3c8-66a7-48df-b631-0b73ab779bde.mdx\",lineNumber:3,columnNumber:61},this),(0,n.jsxDEV)(e.span,{style:{color:\"#79B8FF\"},children:\"kafka\"},void 0,!1,{fileName:\"/Users/andreasthomas/github/chronark/chronark.com/content/projects/_mdx_bundler_entry_point-f941a3c8-66a7-48df-b631-0b73ab779bde.mdx\",lineNumber:3,columnNumber:98},this),(0,n.jsxDEV)(e.span,{style:{color:\"#E1E4E8\"},children:\" \"},void 0,!1,{fileName:\"/Users/andreasthomas/github/chronark/chronark.com/content/projects/_mdx_bundler_entry_point-f941a3c8-66a7-48df-b631-0b73ab779bde.mdx\",lineNumber:3,columnNumber:139},this),(0,n.jsxDEV)(e.span,{style:{color:\"#F97583\"},children:\"=\"},void 0,!1,{fileName:\"/Users/andreasthomas/github/chronark/chronark.com/content/projects/_mdx_bundler_entry_point-f941a3c8-66a7-48df-b631-0b73ab779bde.mdx\",lineNumber:3,columnNumber:176},this),(0,n.jsxDEV)(e.span,{style:{color:\"#E1E4E8\"},children:\" \"},void 0,!1,{fileName:\"/Users/andreasthomas/github/chronark/chronark.com/content/projects/_mdx_bundler_entry_point-f941a3c8-66a7-48df-b631-0b73ab779bde.mdx\",lineNumber:3,columnNumber:213},this),(0,n.jsxDEV)(e.span,{style:{color:\"#F97583\"},children:\"new\"},void 0,!1,{fileName:\"/Users/andreasthomas/github/chronark/chronark.com/content/projects/_mdx_bundler_entry_point-f941a3c8-66a7-48df-b631-0b73ab779bde.mdx\",lineNumber:3,columnNumber:250},this),(0,n.jsxDEV)(e.span,{style:{color:\"#E1E4E8\"},children:\" \"},void 0,!1,{fileName:\"/Users/andreasthomas/github/chronark/chronark.com/content/projects/_mdx_bundler_entry_point-f941a3c8-66a7-48df-b631-0b73ab779bde.mdx\",lineNumber:3,columnNumber:289},this),(0,n.jsxDEV)(e.span,{style:{color:\"#B392F0\"},children:\"Kafka\"},void 0,!1,{fileName:\"/Users/andreasthomas/github/chronark/chronark.com/content/projects/_mdx_bundler_entry_point-f941a3c8-66a7-48df-b631-0b73ab779bde.mdx\",lineNumber:3,columnNumber:326},this),(0,n.jsxDEV)(e.span,{style:{color:\"#E1E4E8\"},children:\"({\"},void 0,!1,{fileName:\"/Users/andreasthomas/github/chronark/chronark.com/content/projects/_mdx_bundler_entry_point-f941a3c8-66a7-48df-b631-0b73ab779bde.mdx\",lineNumber:3,columnNumber:367},this)]},void 0,!0,{fileName:\"/Users/andreasthomas/github/chronark/chronark.com/content/projects/_mdx_bundler_entry_point-f941a3c8-66a7-48df-b631-0b73ab779bde.mdx\",lineNumber:3,columnNumber:1},this),`\n`,(0,n.jsxDEV)(e.span,{className:\"line\",children:[(0,n.jsxDEV)(e.span,{style:{color:\"#E1E4E8\"},children:\" url: \"},void 0,!1,{fileName:\"/Users/andreasthomas/github/chronark/chronark.com/content/projects/_mdx_bundler_entry_point-f941a3c8-66a7-48df-b631-0b73ab779bde.mdx\",lineNumber:4,columnNumber:20},this),(0,n.jsxDEV)(e.span,{style:{color:\"#9ECBFF\"},children:'\"<UPSTASH_KAFKA_REST_URL>\"'},void 0,!1,{fileName:\"/Users/andreasthomas/github/chronark/chronark.com/content/projects/_mdx_bundler_entry_point-f941a3c8-66a7-48df-b631-0b73ab779bde.mdx\",lineNumber:4,columnNumber:63},this),(0,n.jsxDEV)(e.span,{style:{color:\"#E1E4E8\"},children:\",\"},void 0,!1,{fileName:\"/Users/andreasthomas/github/chronark/chronark.com/content/projects/_mdx_bundler_entry_point-f941a3c8-66a7-48df-b631-0b73ab779bde.mdx\",lineNumber:4,columnNumber:141},this)]},void 0,!0,{fileName:\"/Users/andreasthomas/github/chronark/chronark.com/content/projects/_mdx_bundler_entry_point-f941a3c8-66a7-48df-b631-0b73ab779bde.mdx\",lineNumber:4,columnNumber:1},this),`\n`,(0,n.jsxDEV)(e.span,{className:\"line\",children:[(0,n.jsxDEV)(e.span,{style:{color:\"#E1E4E8\"},children:\" username: \"},void 0,!1,{fileName:\"/Users/andreasthomas/github/chronark/chronark.com/content/projects/_mdx_bundler_entry_point-f941a3c8-66a7-48df-b631-0b73ab779bde.mdx\",lineNumber:5,columnNumber:20},this),(0,n.jsxDEV)(e.span,{style:{color:\"#9ECBFF\"},children:'\"<UPSTASH_KAFKA_REST_USERNAME>\"'},void 0,!1,{fileName:\"/Users/andreasthomas/github/chronark/chronark.com/content/projects/_mdx_bundler_entry_point-f941a3c8-66a7-48df-b631-0b73ab779bde.mdx\",lineNumber:5,columnNumber:68},this),(0,n.jsxDEV)(e.span,{style:{color:\"#E1E4E8\"},children:\",\"},void 0,!1,{fileName:\"/Users/andreasthomas/github/chronark/chronark.com/content/projects/_mdx_bundler_entry_point-f941a3c8-66a7-48df-b631-0b73ab779bde.mdx\",lineNumber:5,columnNumber:151},this)]},void 0,!0,{fileName:\"/Users/andreasthomas/github/chronark/chronark.com/content/projects/_mdx_bundler_entry_point-f941a3c8-66a7-48df-b631-0b73ab779bde.mdx\",lineNumber:5,columnNumber:1},this),`\n`,(0,n.jsxDEV)(e.span,{className:\"line\",children:[(0,n.jsxDEV)(e.span,{style:{color:\"#E1E4E8\"},children:\" password: \"},void 0,!1,{fileName:\"/Users/andreasthomas/github/chronark/chronark.com/content/projects/_mdx_bundler_entry_point-f941a3c8-66a7-48df-b631-0b73ab779bde.mdx\",lineNumber:6,columnNumber:20},this),(0,n.jsxDEV)(e.span,{style:{color:\"#9ECBFF\"},children:'\"<UPSTASH_KAFKA_REST_PASSWORD>\"'},void 0,!1,{fileName:\"/Users/andreasthomas/github/chronark/chronark.com/content/projects/_mdx_bundler_entry_point-f941a3c8-66a7-48df-b631-0b73ab779bde.mdx\",lineNumber:6,columnNumber:68},this),(0,n.jsxDEV)(e.span,{style:{color:\"#E1E4E8\"},children:\",\"},void 0,!1,{fileName:\"/Users/andreasthomas/github/chronark/chronark.com/content/projects/_mdx_bundler_entry_point-f941a3c8-66a7-48df-b631-0b73ab779bde.mdx\",lineNumber:6,columnNumber:151},this)]},void 0,!0,{fileName:\"/Users/andreasthomas/github/chronark/chronark.com/content/projects/_mdx_bundler_entry_point-f941a3c8-66a7-48df-b631-0b73ab779bde.mdx\",lineNumber:6,columnNumber:1},this),`\n`,(0,n.jsxDEV)(e.span,{className:\"line\",children:(0,n.jsxDEV)(e.span,{style:{color:\"#E1E4E8\"},children:\"})\"},void 0,!1,{fileName:\"/Users/andreasthomas/github/chronark/chronark.com/content/projects/_mdx_bundler_entry_point-f941a3c8-66a7-48df-b631-0b73ab779bde.mdx\",lineNumber:7,columnNumber:20},this)},void 0,!1,{fileName:\"/Users/andreasthomas/github/chronark/chronark.com/content/projects/_mdx_bundler_entry_point-f941a3c8-66a7-48df-b631-0b73ab779bde.mdx\",lineNumber:7,columnNumber:1},this)]},void 0,!0,{fileName:\"/Users/andreasthomas/github/chronark/chronark.com/content/projects/_mdx_bundler_entry_point-f941a3c8-66a7-48df-b631-0b73ab779bde.mdx\",lineNumber:1,columnNumber:79},this)},void 0,!1,{fileName:\"/Users/andreasthomas/github/chronark/chronark.com/content/projects/_mdx_bundler_entry_point-f941a3c8-66a7-48df-b631-0b73ab779bde.mdx\",lineNumber:1,columnNumber:1},this)},void 0,!1,{fileName:\"/Users/andreasthomas/github/chronark/chronark.com/content/projects/_mdx_bundler_entry_point-f941a3c8-66a7-48df-b631-0b73ab779bde.mdx\",lineNumber:38,columnNumber:1},this),`\n`,(0,n.jsxDEV)(e.h2,{id:\"produce-a-single-message\",children:[(0,n.jsxDEV)(e.a,{className:\"subheading-anchor\",\"aria-label\":\"Link to section\",href:\"#produce-a-single-message\",children:(0,n.jsxDEV)(e.span,{className:\"icon icon-link\"},void 0,!1,{fileName:\"/Users/andreasthomas/github/chronark/chronark.com/content/projects/_mdx_bundler_entry_point-f941a3c8-66a7-48df-b631-0b73ab779bde.mdx\"},this)},void 0,!1,{fileName:\"/Users/andreasthomas/github/chronark/chronark.com/content/projects/_mdx_bundler_entry_point-f941a3c8-66a7-48df-b631-0b73ab779bde.mdx\"},this),\"Produce a single message\"]},void 0,!0,{fileName:\"/Users/andreasthomas/github/chronark/chronark.com/content/projects/_mdx_bundler_entry_point-f941a3c8-66a7-48df-b631-0b73ab779bde.mdx\",lineNumber:48,columnNumber:1},this),`\n`,(0,n.jsxDEV)(e.div,{\"data-rehype-pretty-code-fragment\":\"\",children:(0,n.jsxDEV)(e.pre,{\"data-language\":\"typescript\",\"data-theme\":\"default\",children:(0,n.jsxDEV)(e.code,{\"data-language\":\"typescript\",\"data-theme\":\"default\",children:[(0,n.jsxDEV)(e.span,{className:\"line\",children:[(0,n.jsxDEV)(e.span,{style:{color:\"#F97583\"},children:\"const\"},void 0,!1,{fileName:\"/Users/andreasthomas/github/chronark/chronark.com/content/projects/_mdx_bundler_entry_point-f941a3c8-66a7-48df-b631-0b73ab779bde.mdx\",lineNumber:1,columnNumber:104},this),(0,n.jsxDEV)(e.span,{style:{color:\"#E1E4E8\"},children:\" \"},void 0,!1,{fileName:\"/Users/andreasthomas/github/chronark/chronark.com/content/projects/_mdx_bundler_entry_point-f941a3c8-66a7-48df-b631-0b73ab779bde.mdx\",lineNumber:1,columnNumber:145},this),(0,n.jsxDEV)(e.span,{style:{color:\"#79B8FF\"},children:\"p\"},void 0,!1,{fileName:\"/Users/andreasthomas/github/chronark/chronark.com/content/projects/_mdx_bundler_entry_point-f941a3c8-66a7-48df-b631-0b73ab779bde.mdx\",lineNumber:1,columnNumber:182},this),(0,n.jsxDEV)(e.span,{style:{color:\"#E1E4E8\"},children:\" \"},void 0,!1,{fileName:\"/Users/andreasthomas/github/chronark/chronark.com/content/projects/_mdx_bundler_entry_point-f941a3c8-66a7-48df-b631-0b73ab779bde.mdx\",lineNumber:1,columnNumber:219},this),(0,n.jsxDEV)(e.span,{style:{color:\"#F97583\"},children:\"=\"},void 0,!1,{fileName:\"/Users/andreasthomas/github/chronark/chronark.com/content/projects/_mdx_bundler_entry_point-f941a3c8-66a7-48df-b631-0b73ab779bde.mdx\",lineNumber:1,columnNumber:256},this),(0,n.jsxDEV)(e.span,{style:{color:\"#E1E4E8\"},children:\" kafka.\"},void 0,!1,{fileName:\"/Users/andreasthomas/github/chronark/chronark.com/content/projects/_mdx_bundler_entry_point-f941a3c8-66a7-48df-b631-0b73ab779bde.mdx\",lineNumber:1,columnNumber:293},this),(0,n.jsxDEV)(e.span,{style:{color:\"#B392F0\"},children:\"producer\"},void 0,!1,{fileName:\"/Users/andreasthomas/github/chronark/chronark.com/content/projects/_mdx_bundler_entry_point-f941a3c8-66a7-48df-b631-0b73ab779bde.mdx\",lineNumber:1,columnNumber:336},this),(0,n.jsxDEV)(e.span,{style:{color:\"#E1E4E8\"},children:\"()\"},void 0,!1,{fileName:\"/Users/andreasthomas/github/chronark/chronark.com/content/projects/_mdx_bundler_entry_point-f941a3c8-66a7-48df-b631-0b73ab779bde.mdx\",lineNumber:1,columnNumber:380},this)]},void 0,!0,{fileName:\"/Users/andreasthomas/github/chronark/chronark.com/content/projects/_mdx_bundler_entry_point-f941a3c8-66a7-48df-b631-0b73ab779bde.mdx\",lineNumber:1,columnNumber:85},this),`\n`,(0,n.jsxDEV)(e.span,{className:\"line\",children:[(0,n.jsxDEV)(e.span,{style:{color:\"#F97583\"},children:\"const\"},void 0,!1,{fileName:\"/Users/andreasthomas/github/chronark/chronark.com/content/projects/_mdx_bundler_entry_point-f941a3c8-66a7-48df-b631-0b73ab779bde.mdx\",lineNumber:2,columnNumber:20},this),(0,n.jsxDEV)(e.span,{style:{color:\"#E1E4E8\"},children:\" \"},void 0,!1,{fileName:\"/Users/andreasthomas/github/chronark/chronark.com/content/projects/_mdx_bundler_entry_point-f941a3c8-66a7-48df-b631-0b73ab779bde.mdx\",lineNumber:2,columnNumber:61},this),(0,n.jsxDEV)(e.span,{style:{color:\"#79B8FF\"},children:\"message\"},void 0,!1,{fileName:\"/Users/andreasthomas/github/chronark/chronark.com/content/projects/_mdx_bundler_entry_point-f941a3c8-66a7-48df-b631-0b73ab779bde.mdx\",lineNumber:2,columnNumber:98},this),(0,n.jsxDEV)(e.span,{style:{color:\"#E1E4E8\"},children:\" \"},void 0,!1,{fileName:\"/Users/andreasthomas/github/chronark/chronark.com/content/projects/_mdx_bundler_entry_point-f941a3c8-66a7-48df-b631-0b73ab779bde.mdx\",lineNumber:2,columnNumber:141},this),(0,n.jsxDEV)(e.span,{style:{color:\"#F97583\"},children:\"=\"},void 0,!1,{fileName:\"/Users/andreasthomas/github/chronark/chronark.com/content/projects/_mdx_bundler_entry_point-f941a3c8-66a7-48df-b631-0b73ab779bde.mdx\",lineNumber:2,columnNumber:178},this),(0,n.jsxDEV)(e.span,{style:{color:\"#E1E4E8\"},children:\" { hello: \"},void 0,!1,{fileName:\"/Users/andreasthomas/github/chronark/chronark.com/content/projects/_mdx_bundler_entry_point-f941a3c8-66a7-48df-b631-0b73ab779bde.mdx\",lineNumber:2,columnNumber:215},this),(0,n.jsxDEV)(e.span,{style:{color:\"#9ECBFF\"},children:'\"world\"'},void 0,!1,{fileName:\"/Users/andreasthomas/github/chronark/chronark.com/content/projects/_mdx_bundler_entry_point-f941a3c8-66a7-48df-b631-0b73ab779bde.mdx\",lineNumber:2,columnNumber:261},this),(0,n.jsxDEV)(e.span,{style:{color:\"#E1E4E8\"},children:\" } \"},void 0,!1,{fileName:\"/Users/andreasthomas/github/chronark/chronark.com/content/projects/_mdx_bundler_entry_point-f941a3c8-66a7-48df-b631-0b73ab779bde.mdx\",lineNumber:2,columnNumber:314},this),(0,n.jsxDEV)(e.span,{style:{color:\"#6A737D\"},children:\"// Objects will get serialized using `JSON.stringify`\"},void 0,!1,{fileName:\"/Users/andreasthomas/github/chronark/chronark.com/content/projects/_mdx_bundler_entry_point-f941a3c8-66a7-48df-b631-0b73ab779bde.mdx\",lineNumber:2,columnNumber:353},this)]},void 0,!0,{fileName:\"/Users/andreasthomas/github/chronark/chronark.com/content/projects/_mdx_bundler_entry_point-f941a3c8-66a7-48df-b631-0b73ab779bde.mdx\",lineNumber:2,columnNumber:1},this),`\n`,(0,n.jsxDEV)(e.span,{className:\"line\",children:[(0,n.jsxDEV)(e.span,{style:{color:\"#F97583\"},children:\"const\"},void 0,!1,{fileName:\"/Users/andreasthomas/github/chronark/chronark.com/content/projects/_mdx_bundler_entry_point-f941a3c8-66a7-48df-b631-0b73ab779bde.mdx\",lineNumber:3,columnNumber:20},this),(0,n.jsxDEV)(e.span,{style:{color:\"#E1E4E8\"},children:\" \"},void 0,!1,{fileName:\"/Users/andreasthomas/github/chronark/chronark.com/content/projects/_mdx_bundler_entry_point-f941a3c8-66a7-48df-b631-0b73ab779bde.mdx\",lineNumber:3,columnNumber:61},this),(0,n.jsxDEV)(e.span,{style:{color:\"#79B8FF\"},children:\"res\"},void 0,!1,{fileName:\"/Users/andreasthomas/github/chronark/chronark.com/content/projects/_mdx_bundler_entry_point-f941a3c8-66a7-48df-b631-0b73ab779bde.mdx\",lineNumber:3,columnNumber:98},this),(0,n.jsxDEV)(e.span,{style:{color:\"#E1E4E8\"},children:\" \"},void 0,!1,{fileName:\"/Users/andreasthomas/github/chronark/chronark.com/content/projects/_mdx_bundler_entry_point-f941a3c8-66a7-48df-b631-0b73ab779bde.mdx\",lineNumber:3,columnNumber:137},this),(0,n.jsxDEV)(e.span,{style:{color:\"#F97583\"},children:\"=\"},void 0,!1,{fileName:\"/Users/andreasthomas/github/chronark/chronark.com/content/projects/_mdx_bundler_entry_point-f941a3c8-66a7-48df-b631-0b73ab779bde.mdx\",lineNumber:3,columnNumber:174},this),(0,n.jsxDEV)(e.span,{style:{color:\"#E1E4E8\"},children:\" \"},void 0,!1,{fileName:\"/Users/andreasthomas/github/chronark/chronark.com/content/projects/_mdx_bundler_entry_point-f941a3c8-66a7-48df-b631-0b73ab779bde.mdx\",lineNumber:3,columnNumber:211},this),(0,n.jsxDEV)(e.span,{style:{color:\"#F97583\"},children:\"await\"},void 0,!1,{fileName:\"/Users/andreasthomas/github/chronark/chronark.com/content/projects/_mdx_bundler_entry_point-f941a3c8-66a7-48df-b631-0b73ab779bde.mdx\",lineNumber:3,columnNumber:248},this),(0,n.jsxDEV)(e.span,{style:{color:\"#E1E4E8\"},children:\" p.\"},void 0,!1,{fileName:\"/Users/andreasthomas/github/chronark/chronark.com/content/projects/_mdx_bundler_entry_point-f941a3c8-66a7-48df-b631-0b73ab779bde.mdx\",lineNumber:3,columnNumber:289},this),(0,n.jsxDEV)(e.span,{style:{color:\"#B392F0\"},children:\"produce\"},void 0,!1,{fileName:\"/Users/andreasthomas/github/chronark/chronark.com/content/projects/_mdx_bundler_entry_point-f941a3c8-66a7-48df-b631-0b73ab779bde.mdx\",lineNumber:3,columnNumber:328},this),(0,n.jsxDEV)(e.span,{style:{color:\"#E1E4E8\"},children:\"(\"},void 0,!1,{fileName:\"/Users/andreasthomas/github/chronark/chronark.com/content/projects/_mdx_bundler_entry_point-f941a3c8-66a7-48df-b631-0b73ab779bde.mdx\",lineNumber:3,columnNumber:371},this),(0,n.jsxDEV)(e.span,{style:{color:\"#9ECBFF\"},children:'\"<my.topic>\"'},void 0,!1,{fileName:\"/Users/andreasthomas/github/chronark/chronark.com/content/projects/_mdx_bundler_entry_point-f941a3c8-66a7-48df-b631-0b73ab779bde.mdx\",lineNumber:3,columnNumber:408},this),(0,n.jsxDEV)(e.span,{style:{color:\"#E1E4E8\"},children:\", message)\"},void 0,!1,{fileName:\"/Users/andreasthomas/github/chronark/chronark.com/content/projects/_mdx_bundler_entry_point-f941a3c8-66a7-48df-b631-0b73ab779bde.mdx\",lineNumber:3,columnNumber:472},this)]},void 0,!0,{fileName:\"/Users/andreasthomas/github/chronark/chronark.com/content/projects/_mdx_bundler_entry_point-f941a3c8-66a7-48df-b631-0b73ab779bde.mdx\",lineNumber:3,columnNumber:1},this),`\n`,(0,n.jsxDEV)(e.span,{className:\"line\",children:[(0,n.jsxDEV)(e.span,{style:{color:\"#F97583\"},children:\"const\"},void 0,!1,{fileName:\"/Users/andreasthomas/github/chronark/chronark.com/content/projects/_mdx_bundler_entry_point-f941a3c8-66a7-48df-b631-0b73ab779bde.mdx\",lineNumber:4,columnNumber:20},this),(0,n.jsxDEV)(e.span,{style:{color:\"#E1E4E8\"},children:\" \"},void 0,!1,{fileName:\"/Users/andreasthomas/github/chronark/chronark.com/content/projects/_mdx_bundler_entry_point-f941a3c8-66a7-48df-b631-0b73ab779bde.mdx\",lineNumber:4,columnNumber:61},this),(0,n.jsxDEV)(e.span,{style:{color:\"#79B8FF\"},children:\"res\"},void 0,!1,{fileName:\"/Users/andreasthomas/github/chronark/chronark.com/content/projects/_mdx_bundler_entry_point-f941a3c8-66a7-48df-b631-0b73ab779bde.mdx\",lineNumber:4,columnNumber:98},this),(0,n.jsxDEV)(e.span,{style:{color:\"#E1E4E8\"},children:\" \"},void 0,!1,{fileName:\"/Users/andreasthomas/github/chronark/chronark.com/content/projects/_mdx_bundler_entry_point-f941a3c8-66a7-48df-b631-0b73ab779bde.mdx\",lineNumber:4,columnNumber:137},this),(0,n.jsxDEV)(e.span,{style:{color:\"#F97583\"},children:\"=\"},void 0,!1,{fileName:\"/Users/andreasthomas/github/chronark/chronark.com/content/projects/_mdx_bundler_entry_point-f941a3c8-66a7-48df-b631-0b73ab779bde.mdx\",lineNumber:4,columnNumber:174},this),(0,n.jsxDEV)(e.span,{style:{color:\"#E1E4E8\"},children:\" \"},void 0,!1,{fileName:\"/Users/andreasthomas/github/chronark/chronark.com/content/projects/_mdx_bundler_entry_point-f941a3c8-66a7-48df-b631-0b73ab779bde.mdx\",lineNumber:4,columnNumber:211},this),(0,n.jsxDEV)(e.span,{style:{color:\"#F97583\"},children:\"await\"},void 0,!1,{fileName:\"/Users/andreasthomas/github/chronark/chronark.com/content/projects/_mdx_bundler_entry_point-f941a3c8-66a7-48df-b631-0b73ab779bde.mdx\",lineNumber:4,columnNumber:248},this),(0,n.jsxDEV)(e.span,{style:{color:\"#E1E4E8\"},children:\" p.\"},void 0,!1,{fileName:\"/Users/andreasthomas/github/chronark/chronark.com/content/projects/_mdx_bundler_entry_point-f941a3c8-66a7-48df-b631-0b73ab779bde.mdx\",lineNumber:4,columnNumber:289},this),(0,n.jsxDEV)(e.span,{style:{color:\"#B392F0\"},children:\"produce\"},void 0,!1,{fileName:\"/Users/andreasthomas/github/chronark/chronark.com/content/projects/_mdx_bundler_entry_point-f941a3c8-66a7-48df-b631-0b73ab779bde.mdx\",lineNumber:4,columnNumber:328},this),(0,n.jsxDEV)(e.span,{style:{color:\"#E1E4E8\"},children:\"(\"},void 0,!1,{fileName:\"/Users/andreasthomas/github/chronark/chronark.com/content/projects/_mdx_bundler_entry_point-f941a3c8-66a7-48df-b631-0b73ab779bde.mdx\",lineNumber:4,columnNumber:371},this),(0,n.jsxDEV)(e.span,{style:{color:\"#9ECBFF\"},children:'\"<my.topic>\"'},void 0,!1,{fileName:\"/Users/andreasthomas/github/chronark/chronark.com/content/projects/_mdx_bundler_entry_point-f941a3c8-66a7-48df-b631-0b73ab779bde.mdx\",lineNumber:4,columnNumber:408},this),(0,n.jsxDEV)(e.span,{style:{color:\"#E1E4E8\"},children:\", message, {\"},void 0,!1,{fileName:\"/Users/andreasthomas/github/chronark/chronark.com/content/projects/_mdx_bundler_entry_point-f941a3c8-66a7-48df-b631-0b73ab779bde.mdx\",lineNumber:4,columnNumber:472},this)]},void 0,!0,{fileName:\"/Users/andreasthomas/github/chronark/chronark.com/content/projects/_mdx_bundler_entry_point-f941a3c8-66a7-48df-b631-0b73ab779bde.mdx\",lineNumber:4,columnNumber:1},this),`\n`,(0,n.jsxDEV)(e.span,{className:\"line\",children:[(0,n.jsxDEV)(e.span,{style:{color:\"#E1E4E8\"},children:\" partition: \"},void 0,!1,{fileName:\"/Users/andreasthomas/github/chronark/chronark.com/content/projects/_mdx_bundler_entry_point-f941a3c8-66a7-48df-b631-0b73ab779bde.mdx\",lineNumber:5,columnNumber:20},this),(0,n.jsxDEV)(e.span,{style:{color:\"#79B8FF\"},children:\"1\"},void 0,!1,{fileName:\"/Users/andreasthomas/github/chronark/chronark.com/content/projects/_mdx_bundler_entry_point-f941a3c8-66a7-48df-b631-0b73ab779bde.mdx\",lineNumber:5,columnNumber:69},this),(0,n.jsxDEV)(e.span,{style:{color:\"#E1E4E8\"},children:\",\"},void 0,!1,{fileName:\"/Users/andreasthomas/github/chronark/chronark.com/content/projects/_mdx_bundler_entry_point-f941a3c8-66a7-48df-b631-0b73ab779bde.mdx\",lineNumber:5,columnNumber:106},this)]},void 0,!0,{fileName:\"/Users/andreasthomas/github/chronark/chronark.com/content/projects/_mdx_bundler_entry_point-f941a3c8-66a7-48df-b631-0b73ab779bde.mdx\",lineNumber:5,columnNumber:1},this),`\n`,(0,n.jsxDEV)(e.span,{className:\"line\",children:[(0,n.jsxDEV)(e.span,{style:{color:\"#E1E4E8\"},children:\" timestamp: \"},void 0,!1,{fileName:\"/Users/andreasthomas/github/chronark/chronark.com/content/projects/_mdx_bundler_entry_point-f941a3c8-66a7-48df-b631-0b73ab779bde.mdx\",lineNumber:6,columnNumber:20},this),(0,n.jsxDEV)(e.span,{style:{color:\"#79B8FF\"},children:\"12345\"},void 0,!1,{fileName:\"/Users/andreasthomas/github/chronark/chronark.com/content/projects/_mdx_bundler_entry_point-f941a3c8-66a7-48df-b631-0b73ab779bde.mdx\",lineNumber:6,columnNumber:69},this),(0,n.jsxDEV)(e.span,{style:{color:\"#E1E4E8\"},children:\",\"},void 0,!1,{fileName:\"/Users/andreasthomas/github/chronark/chronark.com/content/projects/_mdx_bundler_entry_point-f941a3c8-66a7-48df-b631-0b73ab779bde.mdx\",lineNumber:6,columnNumber:110},this)]},void 0,!0,{fileName:\"/Users/andreasthomas/github/chronark/chronark.com/content/projects/_mdx_bundler_entry_point-f941a3c8-66a7-48df-b631-0b73ab779bde.mdx\",lineNumber:6,columnNumber:1},this),`\n`,(0,n.jsxDEV)(e.span,{className:\"line\",children:[(0,n.jsxDEV)(e.span,{style:{color:\"#E1E4E8\"},children:\" key: \"},void 0,!1,{fileName:\"/Users/andreasthomas/github/chronark/chronark.com/content/projects/_mdx_bundler_entry_point-f941a3c8-66a7-48df-b631-0b73ab779bde.mdx\",lineNumber:7,columnNumber:20},this),(0,n.jsxDEV)(e.span,{style:{color:\"#9ECBFF\"},children:'\"<custom key>\"'},void 0,!1,{fileName:\"/Users/andreasthomas/github/chronark/chronark.com/content/projects/_mdx_bundler_entry_point-f941a3c8-66a7-48df-b631-0b73ab779bde.mdx\",lineNumber:7,columnNumber:63},this),(0,n.jsxDEV)(e.span,{style:{color:\"#E1E4E8\"},children:\",\"},void 0,!1,{fileName:\"/Users/andreasthomas/github/chronark/chronark.com/content/projects/_mdx_bundler_entry_point-f941a3c8-66a7-48df-b631-0b73ab779bde.mdx\",lineNumber:7,columnNumber:129},this)]},void 0,!0,{fileName:\"/Users/andreasthomas/github/chronark/chronark.com/content/projects/_mdx_bundler_entry_point-f941a3c8-66a7-48df-b631-0b73ab779bde.mdx\",lineNumber:7,columnNumber:1},this),`\n`,(0,n.jsxDEV)(e.span,{className:\"line\",children:[(0,n.jsxDEV)(e.span,{style:{color:\"#E1E4E8\"},children:\" headers: [{ key: \"},void 0,!1,{fileName:\"/Users/andreasthomas/github/chronark/chronark.com/content/projects/_mdx_bundler_entry_point-f941a3c8-66a7-48df-b631-0b73ab779bde.mdx\",lineNumber:8,columnNumber:20},this),(0,n.jsxDEV)(e.span,{style:{color:\"#9ECBFF\"},children:'\"traceId\"'},void 0,!1,{fileName:\"/Users/andreasthomas/github/chronark/chronark.com/content/projects/_mdx_bundler_entry_point-f941a3c8-66a7-48df-b631-0b73ab779bde.mdx\",lineNumber:8,columnNumber:75},this),(0,n.jsxDEV)(e.span,{style:{color:\"#E1E4E8\"},children:\", value: \"},void 0,!1,{fileName:\"/Users/andreasthomas/github/chronark/chronark.com/content/projects/_mdx_bundler_entry_point-f941a3c8-66a7-48df-b631-0b73ab779bde.mdx\",lineNumber:8,columnNumber:130},this),(0,n.jsxDEV)(e.span,{style:{color:\"#9ECBFF\"},children:'\"85a9f12\"'},void 0,!1,{fileName:\"/Users/andreasthomas/github/chronark/chronark.com/content/projects/_mdx_bundler_entry_point-f941a3c8-66a7-48df-b631-0b73ab779bde.mdx\",lineNumber:8,columnNumber:175},this),(0,n.jsxDEV)(e.span,{style:{color:\"#E1E4E8\"},children:\" }],\"},void 0,!1,{fileName:\"/Users/andreasthomas/github/chronark/chronark.com/content/projects/_mdx_bundler_entry_point-f941a3c8-66a7-48df-b631-0b73ab779bde.mdx\",lineNumber:8,columnNumber:230},this)]},void 0,!0,{fileName:\"/Users/andreasthomas/github/chronark/chronark.com/content/projects/_mdx_bundler_entry_point-f941a3c8-66a7-48df-b631-0b73ab779bde.mdx\",lineNumber:8,columnNumber:1},this),`\n`,(0,n.jsxDEV)(e.span,{className:\"line\",children:(0,n.jsxDEV)(e.span,{style:{color:\"#E1E4E8\"},children:\"})\"},void 0,!1,{fileName:\"/Users/andreasthomas/github/chronark/chronark.com/content/projects/_mdx_bundler_entry_point-f941a3c8-66a7-48df-b631-0b73ab779bde.mdx\",lineNumber:9,columnNumber:20},this)},void 0,!1,{fileName:\"/Users/andreasthomas/github/chronark/chronark.com/content/projects/_mdx_bundler_entry_point-f941a3c8-66a7-48df-b631-0b73ab779bde.mdx\",lineNumber:9,columnNumber:1},this)]},void 0,!0,{fileName:\"/Users/andreasthomas/github/chronark/chronark.com/content/projects/_mdx_bundler_entry_point-f941a3c8-66a7-48df-b631-0b73ab779bde.mdx\",lineNumber:1,columnNumber:79},this)},void 0,!1,{fileName:\"/Users/andreasthomas/github/chronark/chronark.com/content/projects/_mdx_bundler_entry_point-f941a3c8-66a7-48df-b631-0b73ab779bde.mdx\",lineNumber:1,columnNumber:1},this)},void 0,!1,{fileName:\"/Users/andreasthomas/github/chronark/chronark.com/content/projects/_mdx_bundler_entry_point-f941a3c8-66a7-48df-b631-0b73ab779bde.mdx\",lineNumber:50,columnNumber:1},this),`\n`,(0,n.jsxDEV)(e.h2,{id:\"produce-multiple-messages\",children:[(0,n.jsxDEV)(e.a,{className:\"subheading-anchor\",\"aria-label\":\"Link to section\",href:\"#produce-multiple-messages\",children:(0,n.jsxDEV)(e.span,{className:\"icon icon-link\"},void 0,!1,{fileName:\"/Users/andreasthomas/github/chronark/chronark.com/content/projects/_mdx_bundler_entry_point-f941a3c8-66a7-48df-b631-0b73ab779bde.mdx\"},this)},void 0,!1,{fileName:\"/Users/andreasthomas/github/chronark/chronark.com/content/projects/_mdx_bundler_entry_point-f941a3c8-66a7-48df-b631-0b73ab779bde.mdx\"},this),\"Produce multiple messages.\"]},void 0,!0,{fileName:\"/Users/andreasthomas/github/chronark/chronark.com/content/projects/_mdx_bundler_entry_point-f941a3c8-66a7-48df-b631-0b73ab779bde.mdx\",lineNumber:62,columnNumber:1},this),`\n`,(0,n.jsxDEV)(e.p,{children:\"The same options from the example above can be set for every message.\"},void 0,!1,{fileName:\"/Users/andreasthomas/github/chronark/chronark.com/content/projects/_mdx_bundler_entry_point-f941a3c8-66a7-48df-b631-0b73ab779bde.mdx\",lineNumber:64,columnNumber:1},this),`\n`,(0,n.jsxDEV)(e.div,{\"data-rehype-pretty-code-fragment\":\"\",children:(0,n.jsxDEV)(e.pre,{\"data-language\":\"typescript\",\"data-theme\":\"default\",children:(0,n.jsxDEV)(e.code,{\"data-language\":\"typescript\",\"data-theme\":\"default\",children:[(0,n.jsxDEV)(e.span,{className:\"line\",children:[(0,n.jsxDEV)(e.span,{style:{color:\"#F97583\"},children:\"const\"},void 0,!1,{fileName:\"/Users/andreasthomas/github/chronark/chronark.com/content/projects/_mdx_bundler_entry_point-f941a3c8-66a7-48df-b631-0b73ab779bde.mdx\",lineNumber:1,columnNumber:104},this),(0,n.jsxDEV)(e.span,{style:{color:\"#E1E4E8\"},children:\" \"},void 0,!1,{fileName:\"/Users/andreasthomas/github/chronark/chronark.com/content/projects/_mdx_bundler_entry_point-f941a3c8-66a7-48df-b631-0b73ab779bde.mdx\",lineNumber:1,columnNumber:145},this),(0,n.jsxDEV)(e.span,{style:{color:\"#79B8FF\"},children:\"p\"},void 0,!1,{fileName:\"/Users/andreasthomas/github/chronark/chronark.com/content/projects/_mdx_bundler_entry_point-f941a3c8-66a7-48df-b631-0b73ab779bde.mdx\",lineNumber:1,columnNumber:182},this),(0,n.jsxDEV)(e.span,{style:{color:\"#E1E4E8\"},children:\" \"},void 0,!1,{fileName:\"/Users/andreasthomas/github/chronark/chronark.com/content/projects/_mdx_bundler_entry_point-f941a3c8-66a7-48df-b631-0b73ab779bde.mdx\",lineNumber:1,columnNumber:219},this),(0,n.jsxDEV)(e.span,{style:{color:\"#F97583\"},children:\"=\"},void 0,!1,{fileName:\"/Users/andreasthomas/github/chronark/chronark.com/content/projects/_mdx_bundler_entry_point-f941a3c8-66a7-48df-b631-0b73ab779bde.mdx\",lineNumber:1,columnNumber:256},this),(0,n.jsxDEV)(e.span,{style:{color:\"#E1E4E8\"},children:\" kafka.\"},void 0,!1,{fileName:\"/Users/andreasthomas/github/chronark/chronark.com/content/projects/_mdx_bundler_entry_point-f941a3c8-66a7-48df-b631-0b73ab779bde.mdx\",lineNumber:1,columnNumber:293},this),(0,n.jsxDEV)(e.span,{style:{color:\"#B392F0\"},children:\"producer\"},void 0,!1,{fileName:\"/Users/andreasthomas/github/chronark/chronark.com/content/projects/_mdx_bundler_entry_point-f941a3c8-66a7-48df-b631-0b73ab779bde.mdx\",lineNumber:1,columnNumber:336},this),(0,n.jsxDEV)(e.span,{style:{color:\"#E1E4E8\"},children:\"()\"},void 0,!1,{fileName:\"/Users/andreasthomas/github/chronark/chronark.com/content/projects/_mdx_bundler_entry_point-f941a3c8-66a7-48df-b631-0b73ab779bde.mdx\",lineNumber:1,columnNumber:380},this)]},void 0,!0,{fileName:\"/Users/andreasthomas/github/chronark/chronark.com/content/projects/_mdx_bundler_entry_point-f941a3c8-66a7-48df-b631-0b73ab779bde.mdx\",lineNumber:1,columnNumber:85},this),`\n`,(0,n.jsxDEV)(e.span,{className:\"line\",children:[(0,n.jsxDEV)(e.span,{style:{color:\"#F97583\"},children:\"const\"},void 0,!1,{fileName:\"/Users/andreasthomas/github/chronark/chronark.com/content/projects/_mdx_bundler_entry_point-f941a3c8-66a7-48df-b631-0b73ab779bde.mdx\",lineNumber:2,columnNumber:20},this),(0,n.jsxDEV)(e.span,{style:{color:\"#E1E4E8\"},children:\" \"},void 0,!1,{fileName:\"/Users/andreasthomas/github/chronark/chronark.com/content/projects/_mdx_bundler_entry_point-f941a3c8-66a7-48df-b631-0b73ab779bde.mdx\",lineNumber:2,columnNumber:61},this),(0,n.jsxDEV)(e.span,{style:{color:\"#79B8FF\"},children:\"res\"},void 0,!1,{fileName:\"/Users/andreasthomas/github/chronark/chronark.com/content/projects/_mdx_bundler_entry_point-f941a3c8-66a7-48df-b631-0b73ab779bde.mdx\",lineNumber:2,columnNumber:98},this),(0,n.jsxDEV)(e.span,{style:{color:\"#E1E4E8\"},children:\" \"},void 0,!1,{fileName:\"/Users/andreasthomas/github/chronark/chronark.com/content/projects/_mdx_bundler_entry_point-f941a3c8-66a7-48df-b631-0b73ab779bde.mdx\",lineNumber:2,columnNumber:137},this),(0,n.jsxDEV)(e.span,{style:{color:\"#F97583\"},children:\"=\"},void 0,!1,{fileName:\"/Users/andreasthomas/github/chronark/chronark.com/content/projects/_mdx_bundler_entry_point-f941a3c8-66a7-48df-b631-0b73ab779bde.mdx\",lineNumber:2,columnNumber:174},this),(0,n.jsxDEV)(e.span,{style:{color:\"#E1E4E8\"},children:\" \"},void 0,!1,{fileName:\"/Users/andreasthomas/github/chronark/chronark.com/content/projects/_mdx_bundler_entry_point-f941a3c8-66a7-48df-b631-0b73ab779bde.mdx\",lineNumber:2,columnNumber:211},this),(0,n.jsxDEV)(e.span,{style:{color:\"#F97583\"},children:\"await\"},void 0,!1,{fileName:\"/Users/andreasthomas/github/chronark/chronark.com/content/projects/_mdx_bundler_entry_point-f941a3c8-66a7-48df-b631-0b73ab779bde.mdx\",lineNumber:2,columnNumber:248},this),(0,n.jsxDEV)(e.span,{style:{color:\"#E1E4E8\"},children:\" p.\"},void 0,!1,{fileName:\"/Users/andreasthomas/github/chronark/chronark.com/content/projects/_mdx_bundler_entry_point-f941a3c8-66a7-48df-b631-0b73ab779bde.mdx\",lineNumber:2,columnNumber:289},this),(0,n.jsxDEV)(e.span,{style:{color:\"#B392F0\"},children:\"produceMany\"},void 0,!1,{fileName:\"/Users/andreasthomas/github/chronark/chronark.com/content/projects/_mdx_bundler_entry_point-f941a3c8-66a7-48df-b631-0b73ab779bde.mdx\",lineNumber:2,columnNumber:328},this),(0,n.jsxDEV)(e.span,{style:{color:\"#E1E4E8\"},children:\"([\"},void 0,!1,{fileName:\"/Users/andreasthomas/github/chronark/chronark.com/content/projects/_mdx_bundler_entry_point-f941a3c8-66a7-48df-b631-0b73ab779bde.mdx\",lineNumber:2,columnNumber:375},this)]},void 0,!0,{fileName:\"/Users/andreasthomas/github/chronark/chronark.com/content/projects/_mdx_bundler_entry_point-f941a3c8-66a7-48df-b631-0b73ab779bde.mdx\",lineNumber:2,columnNumber:1},this),`\n`,(0,n.jsxDEV)(e.span,{className:\"line\",children:(0,n.jsxDEV)(e.span,{style:{color:\"#E1E4E8\"},children:\" {\"},void 0,!1,{fileName:\"/Users/andreasthomas/github/chronark/chronark.com/content/projects/_mdx_bundler_entry_point-f941a3c8-66a7-48df-b631-0b73ab779bde.mdx\",lineNumber:3,columnNumber:20},this)},void 0,!1,{fileName:\"/Users/andreasthomas/github/chronark/chronark.com/content/projects/_mdx_bundler_entry_point-f941a3c8-66a7-48df-b631-0b73ab779bde.mdx\",lineNumber:3,columnNumber:1},this),`\n`,(0,n.jsxDEV)(e.span,{className:\"line\",children:[(0,n.jsxDEV)(e.span,{style:{color:\"#E1E4E8\"},children:\" topic: \"},void 0,!1,{fileName:\"/Users/andreasthomas/github/chronark/chronark.com/content/projects/_mdx_bundler_entry_point-f941a3c8-66a7-48df-b631-0b73ab779bde.mdx\",lineNumber:4,columnNumber:20},this),(0,n.jsxDEV)(e.span,{style:{color:\"#9ECBFF\"},children:'\"my.topic\"'},void 0,!1,{fileName:\"/Users/andreasthomas/github/chronark/chronark.com/content/projects/_mdx_bundler_entry_point-f941a3c8-66a7-48df-b631-0b73ab779bde.mdx\",lineNumber:4,columnNumber:67},this),(0,n.jsxDEV)(e.span,{style:{color:\"#E1E4E8\"},children:\",\"},void 0,!1,{fileName:\"/Users/andreasthomas/github/chronark/chronark.com/content/projects/_mdx_bundler_entry_point-f941a3c8-66a7-48df-b631-0b73ab779bde.mdx\",lineNumber:4,columnNumber:123},this)]},void 0,!0,{fileName:\"/Users/andreasthomas/github/chronark/chronark.com/content/projects/_mdx_bundler_entry_point-f941a3c8-66a7-48df-b631-0b73ab779bde.mdx\",lineNumber:4,columnNumber:1},this),`\n`,(0,n.jsxDEV)(e.span,{className:\"line\",children:[(0,n.jsxDEV)(e.span,{style:{color:\"#E1E4E8\"},children:\" value: { hello: \"},void 0,!1,{fileName:\"/Users/andreasthomas/github/chronark/chronark.com/content/projects/_mdx_bundler_entry_point-f941a3c8-66a7-48df-b631-0b73ab779bde.mdx\",lineNumber:5,columnNumber:20},this),(0,n.jsxDEV)(e.span,{style:{color:\"#9ECBFF\"},children:'\"world\"'},void 0,!1,{fileName:\"/Users/andreasthomas/github/chronark/chronark.com/content/projects/_mdx_bundler_entry_point-f941a3c8-66a7-48df-b631-0b73ab779bde.mdx\",lineNumber:5,columnNumber:76},this),(0,n.jsxDEV)(e.span,{style:{color:\"#E1E4E8\"},children:\" },\"},void 0,!1,{fileName:\"/Users/andreasthomas/github/chronark/chronark.com/content/projects/_mdx_bundler_entry_point-f941a3c8-66a7-48df-b631-0b73ab779bde.mdx\",lineNumber:5,columnNumber:129},this)]},void 0,!0,{fileName:\"/Users/andreasthomas/github/chronark/chronark.com/content/projects/_mdx_bundler_entry_point-f941a3c8-66a7-48df-b631-0b73ab779bde.mdx\",lineNumber:5,columnNumber:1},this),`\n`,(0,n.jsxDEV)(e.span,{className:\"line\",children:[(0,n.jsxDEV)(e.span,{style:{color:\"#E1E4E8\"},children:\" \"},void 0,!1,{fileName:\"/Users/andreasthomas/github/chronark/chronark.com/content/projects/_mdx_bundler_entry_point-f941a3c8-66a7-48df-b631-0b73ab779bde.mdx\",lineNumber:6,columnNumber:20},this),(0,n.jsxDEV)(e.span,{style:{color:\"#6A737D\"},children:\"// ...options\"},void 0,!1,{fileName:\"/Users/andreasthomas/github/chronark/chronark.com/content/projects/_mdx_bundler_entry_point-f941a3c8-66a7-48df-b631-0b73ab779bde.mdx\",lineNumber:6,columnNumber:60},this)]},void 0,!0,{fileName:\"/Users/andreasthomas/github/chronark/chronark.com/content/projects/_mdx_bundler_entry_point-f941a3c8-66a7-48df-b631-0b73ab779bde.mdx\",lineNumber:6,columnNumber:1},this),`\n`,(0,n.jsxDEV)(e.span,{className:\"line\",children:(0,n.jsxDEV)(e.span,{style:{color:\"#E1E4E8\"},children:\" },\"},void 0,!1,{fileName:\"/Users/andreasthomas/github/chronark/chronark.com/content/projects/_mdx_bundler_entry_point-f941a3c8-66a7-48df-b631-0b73ab779bde.mdx\",lineNumber:7,columnNumber:20},this)},void 0,!1,{fileName:\"/Users/andreasthomas/github/chronark/chronark.com/content/projects/_mdx_bundler_entry_point-f941a3c8-66a7-48df-b631-0b73ab779bde.mdx\",lineNumber:7,columnNumber:1},this),`\n`,(0,n.jsxDEV)(e.span,{className:\"line\",children:(0,n.jsxDEV)(e.span,{style:{color:\"#E1E4E8\"},children:\" {\"},void 0,!1,{fileName:\"/Users/andreasthomas/github/chronark/chronark.com/content/projects/_mdx_bundler_entry_point-f941a3c8-66a7-48df-b631-0b73ab779bde.mdx\",lineNumber:8,columnNumber:20},this)},void 0,!1,{fileName:\"/Users/andreasthomas/github/chronark/chronark.com/content/projects/_mdx_bundler_entry_point-f941a3c8-66a7-48df-b631-0b73ab779bde.mdx\",lineNumber:8,columnNumber:1},this),`\n`,(0,n.jsxDEV)(e.span,{className:\"line\",children:[(0,n.jsxDEV)(e.span,{style:{color:\"#E1E4E8\"},children:\" topic: \"},void 0,!1,{fileName:\"/Users/andreasthomas/github/chronark/chronark.com/content/projects/_mdx_bundler_entry_point-f941a3c8-66a7-48df-b631-0b73ab779bde.mdx\",lineNumber:9,columnNumber:20},this),(0,n.jsxDEV)(e.span,{style:{color:\"#9ECBFF\"},children:'\"another.topic\"'},void 0,!1,{fileName:\"/Users/andreasthomas/github/chronark/chronark.com/content/projects/_mdx_bundler_entry_point-f941a3c8-66a7-48df-b631-0b73ab779bde.mdx\",lineNumber:9,columnNumber:67},this),(0,n.jsxDEV)(e.span,{style:{color:\"#E1E4E8\"},children:\",\"},void 0,!1,{fileName:\"/Users/andreasthomas/github/chronark/chronark.com/content/projects/_mdx_bundler_entry_point-f941a3c8-66a7-48df-b631-0b73ab779bde.mdx\",lineNumber:9,columnNumber:128},this)]},void 0,!0,{fileName:\"/Users/andreasthomas/github/chronark/chronark.com/content/projects/_mdx_bundler_entry_point-f941a3c8-66a7-48df-b631-0b73ab779bde.mdx\",lineNumber:9,columnNumber:1},this),`\n`,(0,n.jsxDEV)(e.span,{className:\"line\",children:[(0,n.jsxDEV)(e.span,{style:{color:\"#E1E4E8\"},children:\" value: \"},void 0,!1,{fileName:\"/Users/andreasthomas/github/chronark/chronark.com/content/projects/_mdx_bundler_entry_point-f941a3c8-66a7-48df-b631-0b73ab779bde.mdx\",lineNumber:10,columnNumber:20},this),(0,n.jsxDEV)(e.span,{style:{color:\"#9ECBFF\"},children:'\"another message\"'},void 0,!1,{fileName:\"/Users/andreasthomas/github/chronark/chronark.com/content/projects/_mdx_bundler_entry_point-f941a3c8-66a7-48df-b631-0b73ab779bde.mdx\",lineNumber:10,columnNumber:67},this),(0,n.jsxDEV)(e.span,{style:{color:\"#E1E4E8\"},children:\",\"},void 0,!1,{fileName:\"/Users/andreasthomas/github/chronark/chronark.com/content/projects/_mdx_bundler_entry_point-f941a3c8-66a7-48df-b631-0b73ab779bde.mdx\",lineNumber:10,columnNumber:130},this)]},void 0,!0,{fileName:\"/Users/andreasthomas/github/chronark/chronark.com/content/projects/_mdx_bundler_entry_point-f941a3c8-66a7-48df-b631-0b73ab779bde.mdx\",lineNumber:10,columnNumber:1},this),`\n`,(0,n.jsxDEV)(e.span,{className:\"line\",children:[(0,n.jsxDEV)(e.span,{style:{color:\"#E1E4E8\"},children:\" \"},void 0,!1,{fileName:\"/Users/andreasthomas/github/chronark/chronark.com/content/projects/_mdx_bundler_entry_point-f941a3c8-66a7-48df-b631-0b73ab779bde.mdx\",lineNumber:11,columnNumber:20},this),(0,n.jsxDEV)(e.span,{style:{color:\"#6A737D\"},children:\"// ...options\"},void 0,!1,{fileName:\"/Users/andreasthomas/github/chronark/chronark.com/content/projects/_mdx_bundler_entry_point-f941a3c8-66a7-48df-b631-0b73ab779bde.mdx\",lineNumber:11,columnNumber:60},this)]},void 0,!0,{fileName:\"/Users/andreasthomas/github/chronark/chronark.com/content/projects/_mdx_bundler_entry_point-f941a3c8-66a7-48df-b631-0b73ab779bde.mdx\",lineNumber:11,columnNumber:1},this),`\n`,(0,n.jsxDEV)(e.span,{className:\"line\",children:(0,n.jsxDEV)(e.span,{style:{color:\"#E1E4E8\"},children:\" },\"},void 0,!1,{fileName:\"/Users/andreasthomas/github/chronark/chronark.com/content/projects/_mdx_bundler_entry_point-f941a3c8-66a7-48df-b631-0b73ab779bde.mdx\",lineNumber:12,columnNumber:20},this)},void 0,!1,{fileName:\"/Users/andreasthomas/github/chronark/chronark.com/content/projects/_mdx_bundler_entry_point-f941a3c8-66a7-48df-b631-0b73ab779bde.mdx\",lineNumber:12,columnNumber:1},this),`\n`,(0,n.jsxDEV)(e.span,{className:\"line\",children:(0,n.jsxDEV)(e.span,{style:{color:\"#E1E4E8\"},children:\"])\"},void 0,!1,{fileName:\"/Users/andreasthomas/github/chronark/chronark.com/content/projects/_mdx_bundler_entry_point-f941a3c8-66a7-48df-b631-0b73ab779bde.mdx\",lineNumber:13,columnNumber:20},this)},void 0,!1,{fileName:\"/Users/andreasthomas/github/chronark/chronark.com/content/projects/_mdx_bundler_entry_point-f941a3c8-66a7-48df-b631-0b73ab779bde.mdx\",lineNumber:13,columnNumber:1},this)]},void 0,!0,{fileName:\"/Users/andreasthomas/github/chronark/chronark.com/content/projects/_mdx_bundler_entry_point-f941a3c8-66a7-48df-b631-0b73ab779bde.mdx\",lineNumber:1,columnNumber:79},this)},void 0,!1,{fileName:\"/Users/andreasthomas/github/chronark/chronark.com/content/projects/_mdx_bundler_entry_point-f941a3c8-66a7-48df-b631-0b73ab779bde.mdx\",lineNumber:1,columnNumber:1},this)},void 0,!1,{fileName:\"/Users/andreasthomas/github/chronark/chronark.com/content/projects/_mdx_bundler_entry_point-f941a3c8-66a7-48df-b631-0b73ab779bde.mdx\",lineNumber:66,columnNumber:1},this),`\n`,(0,n.jsxDEV)(e.h2,{id:\"consume\",children:[(0,n.jsxDEV)(e.a,{className:\"subheading-anchor\",\"aria-label\":\"Link to section\",href:\"#consume\",children:(0,n.jsxDEV)(e.span,{className:\"icon icon-link\"},void 0,!1,{fileName:\"/Users/andreasthomas/github/chronark/chronark.com/content/projects/_mdx_bundler_entry_point-f941a3c8-66a7-48df-b631-0b73ab779bde.mdx\"},this)},void 0,!1,{fileName:\"/Users/andreasthomas/github/chronark/chronark.com/content/projects/_mdx_bundler_entry_point-f941a3c8-66a7-48df-b631-0b73ab779bde.mdx\"},this),\"Consume\"]},void 0,!0,{fileName:\"/Users/andreasthomas/github/chronark/chronark.com/content/projects/_mdx_bundler_entry_point-f941a3c8-66a7-48df-b631-0b73ab779bde.mdx\",lineNumber:82,columnNumber:1},this),`\n`,(0,n.jsxDEV)(e.p,{children:`The first time a consumer is created, it needs to figure out the group\ncoordinator by asking the Kafka brokers and joins the consumer group. This\nprocess takes some time to complete. That's why when a consumer instance is\ncreated first time, it may return empty messages until consumer group\ncoordination is completed.`},void 0,!1,{fileName:\"/Users/andreasthomas/github/chronark/chronark.com/content/projects/_mdx_bundler_entry_point-f941a3c8-66a7-48df-b631-0b73ab779bde.mdx\",lineNumber:84,columnNumber:1},this),`\n`,(0,n.jsxDEV)(e.div,{\"data-rehype-pretty-code-fragment\":\"\",children:(0,n.jsxDEV)(e.pre,{\"data-language\":\"typescript\",\"data-theme\":\"default\",children:(0,n.jsxDEV)(e.code,{\"data-language\":\"typescript\",\"data-theme\":\"default\",children:[(0,n.jsxDEV)(e.span,{className:\"line\",children:[(0,n.jsxDEV)(e.span,{style:{color:\"#F97583\"},children:\"const\"},void 0,!1,{fileName:\"/Users/andreasthomas/github/chronark/chronark.com/content/projects/_mdx_bundler_entry_point-f941a3c8-66a7-48df-b631-0b73ab779bde.mdx\",lineNumber:1,columnNumber:104},this),(0,n.jsxDEV)(e.span,{style:{color:\"#E1E4E8\"},children:\" \"},void 0,!1,{fileName:\"/Users/andreasthomas/github/chronark/chronark.com/content/projects/_mdx_bundler_entry_point-f941a3c8-66a7-48df-b631-0b73ab779bde.mdx\",lineNumber:1,columnNumber:145},this),(0,n.jsxDEV)(e.span,{style:{color:\"#79B8FF\"},children:\"c\"},void 0,!1,{fileName:\"/Users/andreasthomas/github/chronark/chronark.com/content/projects/_mdx_bundler_entry_point-f941a3c8-66a7-48df-b631-0b73ab779bde.mdx\",lineNumber:1,columnNumber:182},this),(0,n.jsxDEV)(e.span,{style:{color:\"#E1E4E8\"},children:\" \"},void 0,!1,{fileName:\"/Users/andreasthomas/github/chronark/chronark.com/content/projects/_mdx_bundler_entry_point-f941a3c8-66a7-48df-b631-0b73ab779bde.mdx\",lineNumber:1,columnNumber:219},this),(0,n.jsxDEV)(e.span,{style:{color:\"#F97583\"},children:\"=\"},void 0,!1,{fileName:\"/Users/andreasthomas/github/chronark/chronark.com/content/projects/_mdx_bundler_entry_point-f941a3c8-66a7-48df-b631-0b73ab779bde.mdx\",lineNumber:1,columnNumber:256},this),(0,n.jsxDEV)(e.span,{style:{color:\"#E1E4E8\"},children:\" kafka.\"},void 0,!1,{fileName:\"/Users/andreasthomas/github/chronark/chronark.com/content/projects/_mdx_bundler_entry_point-f941a3c8-66a7-48df-b631-0b73ab779bde.mdx\",lineNumber:1,columnNumber:293},this),(0,n.jsxDEV)(e.span,{style:{color:\"#B392F0\"},children:\"consumer\"},void 0,!1,{fileName:\"/Users/andreasthomas/github/chronark/chronark.com/content/projects/_mdx_bundler_entry_point-f941a3c8-66a7-48df-b631-0b73ab779bde.mdx\",lineNumber:1,columnNumber:336},this),(0,n.jsxDEV)(e.span,{style:{color:\"#E1E4E8\"},children:\"()\"},void 0,!1,{fileName:\"/Users/andreasthomas/github/chronark/chronark.com/content/projects/_mdx_bundler_entry_point-f941a3c8-66a7-48df-b631-0b73ab779bde.mdx\",lineNumber:1,columnNumber:380},this)]},void 0,!0,{fileName:\"/Users/andreasthomas/github/chronark/chronark.com/content/projects/_mdx_bundler_entry_point-f941a3c8-66a7-48df-b631-0b73ab779bde.mdx\",lineNumber:1,columnNumber:85},this),`\n`,(0,n.jsxDEV)(e.span,{className:\"line\",children:[(0,n.jsxDEV)(e.span,{style:{color:\"#F97583\"},children:\"const\"},void 0,!1,{fileName:\"/Users/andreasthomas/github/chronark/chronark.com/content/projects/_mdx_bundler_entry_point-f941a3c8-66a7-48df-b631-0b73ab779bde.mdx\",lineNumber:2,columnNumber:20},this),(0,n.jsxDEV)(e.span,{style:{color:\"#E1E4E8\"},children:\" \"},void 0,!1,{fileName:\"/Users/andreasthomas/github/chronark/chronark.com/content/projects/_mdx_bundler_entry_point-f941a3c8-66a7-48df-b631-0b73ab779bde.mdx\",lineNumber:2,columnNumber:61},this),(0,n.jsxDEV)(e.span,{style:{color:\"#79B8FF\"},children:\"messages\"},void 0,!1,{fileName:\"/Users/andreasthomas/github/chronark/chronark.com/content/projects/_mdx_bundler_entry_point-f941a3c8-66a7-48df-b631-0b73ab779bde.mdx\",lineNumber:2,columnNumber:98},this),(0,n.jsxDEV)(e.span,{style:{color:\"#E1E4E8\"},children:\" \"},void 0,!1,{fileName:\"/Users/andreasthomas/github/chronark/chronark.com/content/projects/_mdx_bundler_entry_point-f941a3c8-66a7-48df-b631-0b73ab779bde.mdx\",lineNumber:2,columnNumber:142},this),(0,n.jsxDEV)(e.span,{style:{color:\"#F97583\"},children:\"=\"},void 0,!1,{fileName:\"/Users/andreasthomas/github/chronark/chronark.com/content/projects/_mdx_bundler_entry_point-f941a3c8-66a7-48df-b631-0b73ab779bde.mdx\",lineNumber:2,columnNumber:179},this),(0,n.jsxDEV)(e.span,{style:{color:\"#E1E4E8\"},children:\" \"},void 0,!1,{fileName:\"/Users/andreasthomas/github/chronark/chronark.com/content/projects/_mdx_bundler_entry_point-f941a3c8-66a7-48df-b631-0b73ab779bde.mdx\",lineNumber:2,columnNumber:216},this),(0,n.jsxDEV)(e.span,{style:{color:\"#F97583\"},children:\"await\"},void 0,!1,{fileName:\"/Users/andreasthomas/github/chronark/chronark.com/content/projects/_mdx_bundler_entry_point-f941a3c8-66a7-48df-b631-0b73ab779bde.mdx\",lineNumber:2,columnNumber:253},this),(0,n.jsxDEV)(e.span,{style:{color:\"#E1E4E8\"},children:\" c.\"},void 0,!1,{fileName:\"/Users/andreasthomas/github/chronark/chronark.com/content/projects/_mdx_bundler_entry_point-f941a3c8-66a7-48df-b631-0b73ab779bde.mdx\",lineNumber:2,columnNumber:294},this),(0,n.jsxDEV)(e.span,{style:{color:\"#B392F0\"},children:\"consume\"},void 0,!1,{fileName:\"/Users/andreasthomas/github/chronark/chronark.com/content/projects/_mdx_bundler_entry_point-f941a3c8-66a7-48df-b631-0b73ab779bde.mdx\",lineNumber:2,columnNumber:333},this),(0,n.jsxDEV)(e.span,{style:{color:\"#E1E4E8\"},children:\"({\"},void 0,!1,{fileName:\"/Users/andreasthomas/github/chronark/chronark.com/content/projects/_mdx_bundler_entry_point-f941a3c8-66a7-48df-b631-0b73ab779bde.mdx\",lineNumber:2,columnNumber:376},this)]},void 0,!0,{fileName:\"/Users/andreasthomas/github/chronark/chronark.com/content/projects/_mdx_bundler_entry_point-f941a3c8-66a7-48df-b631-0b73ab779bde.mdx\",lineNumber:2,columnNumber:1},this),`\n`,(0,n.jsxDEV)(e.span,{className:\"line\",children:[(0,n.jsxDEV)(e.span,{style:{color:\"#E1E4E8\"},children:\" consumerGroupId: \"},void 0,!1,{fileName:\"/Users/andreasthomas/github/chronark/chronark.com/content/projects/_mdx_bundler_entry_point-f941a3c8-66a7-48df-b631-0b73ab779bde.mdx\",lineNumber:3,columnNumber:20},this),(0,n.jsxDEV)(e.span,{style:{color:\"#9ECBFF\"},children:'\"group_1\"'},void 0,!1,{fileName:\"/Users/andreasthomas/github/chronark/chronark.com/content/projects/_mdx_bundler_entry_point-f941a3c8-66a7-48df-b631-0b73ab779bde.mdx\",lineNumber:3,columnNumber:75},this),(0,n.jsxDEV)(e.span,{style:{color:\"#E1E4E8\"},children:\",\"},void 0,!1,{fileName:\"/Users/andreasthomas/github/chronark/chronark.com/content/projects/_mdx_bundler_entry_point-f941a3c8-66a7-48df-b631-0b73ab779bde.mdx\",lineNumber:3,columnNumber:130},this)]},void 0,!0,{fileName:\"/Users/andreasthomas/github/chronark/chronark.com/content/projects/_mdx_bundler_entry_point-f941a3c8-66a7-48df-b631-0b73ab779bde.mdx\",lineNumber:3,columnNumber:1},this),`\n`,(0,n.jsxDEV)(e.span,{className:\"line\",children:[(0,n.jsxDEV)(e.span,{style:{color:\"#E1E4E8\"},children:\" instanceId: \"},void 0,!1,{fileName:\"/Users/andreasthomas/github/chronark/chronark.com/content/projects/_mdx_bundler_entry_point-f941a3c8-66a7-48df-b631-0b73ab779bde.mdx\",lineNumber:4,columnNumber:20},this),(0,n.jsxDEV)(e.span,{style:{color:\"#9ECBFF\"},children:'\"instance_1\"'},void 0,!1,{fileName:\"/Users/andreasthomas/github/chronark/chronark.com/content/projects/_mdx_bundler_entry_point-f941a3c8-66a7-48df-b631-0b73ab779bde.mdx\",lineNumber:4,columnNumber:70},this),(0,n.jsxDEV)(e.span,{style:{color:\"#E1E4E8\"},children:\",\"},void 0,!1,{fileName:\"/Users/andreasthomas/github/chronark/chronark.com/content/projects/_mdx_bundler_entry_point-f941a3c8-66a7-48df-b631-0b73ab779bde.mdx\",lineNumber:4,columnNumber:128},this)]},void 0,!0,{fileName:\"/Users/andreasthomas/github/chronark/chronark.com/content/projects/_mdx_bundler_entry_point-f941a3c8-66a7-48df-b631-0b73ab779bde.mdx\",lineNumber:4,columnNumber:1},this),`\n`,(0,n.jsxDEV)(e.span,{className:\"line\",children:[(0,n.jsxDEV)(e.span,{style:{color:\"#E1E4E8\"},children:\" topics: [\"},void 0,!1,{fileName:\"/Users/andreasthomas/github/chronark/chronark.com/content/projects/_mdx_bundler_entry_point-f941a3c8-66a7-48df-b631-0b73ab779bde.mdx\",lineNumber:5,columnNumber:20},this),(0,n.jsxDEV)(e.span,{style:{color:\"#9ECBFF\"},children:'\"test.topic\"'},void 0,!1,{fileName:\"/Users/andreasthomas/github/chronark/chronark.com/content/projects/_mdx_bundler_entry_point-f941a3c8-66a7-48df-b631-0b73ab779bde.mdx\",lineNumber:5,columnNumber:67},this),(0,n.jsxDEV)(e.span,{style:{color:\"#E1E4E8\"},children:\"],\"},void 0,!1,{fileName:\"/Users/andreasthomas/github/chronark/chronark.com/content/projects/_mdx_bundler_entry_point-f941a3c8-66a7-48df-b631-0b73ab779bde.mdx\",lineNumber:5,columnNumber:125},this)]},void 0,!0,{fileName:\"/Users/andreasthomas/github/chronark/chronark.com/content/projects/_mdx_bundler_entry_point-f941a3c8-66a7-48df-b631-0b73ab779bde.mdx\",lineNumber:5,columnNumber:1},this),`\n`,(0,n.jsxDEV)(e.span,{className:\"line\",children:[(0,n.jsxDEV)(e.span,{style:{color:\"#E1E4E8\"},children:\" autoOffsetReset: \"},void 0,!1,{fileName:\"/Users/andreasthomas/github/chronark/chronark.com/content/projects/_mdx_bundler_entry_point-f941a3c8-66a7-48df-b631-0b73ab779bde.mdx\",lineNumber:6,columnNumber:20},this),(0,n.jsxDEV)(e.span,{style:{color:\"#9ECBFF\"},children:'\"earliest\"'},void 0,!1,{fileName:\"/Users/andreasthomas/github/chronark/chronark.com/content/projects/_mdx_bundler_entry_point-f941a3c8-66a7-48df-b631-0b73ab779bde.mdx\",lineNumber:6,columnNumber:75},this),(0,n.jsxDEV)(e.span,{style:{color:\"#E1E4E8\"},children:\",\"},void 0,!1,{fileName:\"/Users/andreasthomas/github/chronark/chronark.com/content/projects/_mdx_bundler_entry_point-f941a3c8-66a7-48df-b631-0b73ab779bde.mdx\",lineNumber:6,columnNumber:131},this)]},void 0,!0,{fileName:\"/Users/andreasthomas/github/chronark/chronark.com/content/projects/_mdx_bundler_entry_point-f941a3c8-66a7-48df-b631-0b73ab779bde.mdx\",lineNumber:6,columnNumber:1},this),`\n`,(0,n.jsxDEV)(e.span,{className:\"line\",children:(0,n.jsxDEV)(e.span,{style:{color:\"#E1E4E8\"},children:\"})\"},void 0,!1,{fileName:\"/Users/andreasthomas/github/chronark/chronark.com/content/projects/_mdx_bundler_entry_point-f941a3c8-66a7-48df-b631-0b73ab779bde.mdx\",lineNumber:7,columnNumber:20},this)},void 0,!1,{fileName:\"/Users/andreasthomas/github/chronark/chronark.com/content/projects/_mdx_bundler_entry_point-f941a3c8-66a7-48df-b631-0b73ab779bde.mdx\",lineNumber:7,columnNumber:1},this)]},void 0,!0,{fileName:\"/Users/andreasthomas/github/chronark/chronark.com/content/projects/_mdx_bundler_entry_point-f941a3c8-66a7-48df-b631-0b73ab779bde.mdx\",lineNumber:1,columnNumber:79},this)},void 0,!1,{fileName:\"/Users/andreasthomas/github/chronark/chronark.com/content/projects/_mdx_bundler_entry_point-f941a3c8-66a7-48df-b631-0b73ab779bde.mdx\",lineNumber:1,columnNumber:1},this)},void 0,!1,{fileName:\"/Users/andreasthomas/github/chronark/chronark.com/content/projects/_mdx_bundler_entry_point-f941a3c8-66a7-48df-b631-0b73ab779bde.mdx\",lineNumber:90,columnNumber:1},this),`\n`,(0,n.jsxDEV)(e.p,{children:[`More examples can be found in the\n`,(0,n.jsxDEV)(e.a,{href:\"https://github.com/upstash/upstash-kafka/blob/main/pkg/consumer.ts#L265\",children:\"docstring\"},void 0,!1,{fileName:\"/Users/andreasthomas/github/chronark/chronark.com/content/projects/_mdx_bundler_entry_point-f941a3c8-66a7-48df-b631-0b73ab779bde.mdx\",lineNumber:101,columnNumber:1},this)]},void 0,!0,{fileName:\"/Users/andreasthomas/github/chronark/chronark.com/content/projects/_mdx_bundler_entry_point-f941a3c8-66a7-48df-b631-0b73ab779bde.mdx\",lineNumber:100,columnNumber:1},this),`\n`,(0,n.jsxDEV)(e.h2,{id:\"commit-manually\",children:[(0,n.jsxDEV)(e.a,{className:\"subheading-anchor\",\"aria-label\":\"Link to section\",href:\"#commit-manually\",children:(0,n.jsxDEV)(e.span,{className:\"icon icon-link\"},void 0,!1,{fileName:\"/Users/andreasthomas/github/chronark/chronark.com/content/projects/_mdx_bundler_entry_point-f941a3c8-66a7-48df-b631-0b73ab779bde.mdx\"},this)},void 0,!1,{fileName:\"/Users/andreasthomas/github/chronark/chronark.com/content/projects/_mdx_bundler_entry_point-f941a3c8-66a7-48df-b631-0b73ab779bde.mdx\"},this),\"Commit manually\"]},void 0,!0,{fileName:\"/Users/andreasthomas/github/chronark/chronark.com/content/projects/_mdx_bundler_entry_point-f941a3c8-66a7-48df-b631-0b73ab779bde.mdx\",lineNumber:103,columnNumber:1},this),`\n`,(0,n.jsxDEV)(e.p,{children:[\"While \",(0,n.jsxDEV)(e.code,{children:\"consume\"},void 0,!1,{fileName:\"/Users/andreasthomas/github/chronark/chronark.com/content/projects/_mdx_bundler_entry_point-f941a3c8-66a7-48df-b631-0b73ab779bde.mdx\",lineNumber:105,columnNumber:7},this),` can handle committing automatically, you can also use\n`,(0,n.jsxDEV)(e.code,{children:\"Consumer.commit\"},void 0,!1,{fileName:\"/Users/andreasthomas/github/chronark/chronark.com/content/projects/_mdx_bundler_entry_point-f941a3c8-66a7-48df-b631-0b73ab779bde.mdx\",lineNumber:106,columnNumber:1},this),\" to manually commit.\"]},void 0,!0,{fileName:\"/Users/andreasthomas/github/chronark/chronark.com/content/projects/_mdx_bundler_entry_point-f941a3c8-66a7-48df-b631-0b73ab779bde.mdx\",lineNumber:105,columnNumber:1},this),`\n`,(0,n.jsxDEV)(e.div,{\"data-rehype-pretty-code-fragment\":\"\",children:(0,n.jsxDEV)(e.pre,{\"data-language\":\"typescript\",\"data-theme\":\"default\",children:(0,n.jsxDEV)(e.code,{\"data-language\":\"typescript\",\"data-theme\":\"default\",children:[(0,n.jsxDEV)(e.span,{className:\"line\",children:[(0,n.jsxDEV)(e.span,{style:{color:\"#F97583\"},children:\"const\"},void 0,!1,{fileName:\"/Users/andreasthomas/github/chronark/chronark.com/content/projects/_mdx_bundler_entry_point-f941a3c8-66a7-48df-b631-0b73ab779bde.mdx\",lineNumber:1,columnNumber:104},this),(0,n.jsxDEV)(e.span,{style:{color:\"#E1E4E8\"},children:\" \"},void 0,!1,{fileName:\"/Users/andreasthomas/github/chronark/chronark.com/content/projects/_mdx_bundler_entry_point-f941a3c8-66a7-48df-b631-0b73ab779bde.mdx\",lineNumber:1,columnNumber:145},this),(0,n.jsxDEV)(e.span,{style:{color:\"#79B8FF\"},children:\"consumerGroupId\"},void 0,!1,{fileName:\"/Users/andreasthomas/github/chronark/chronark.com/content/projects/_mdx_bundler_entry_point-f941a3c8-66a7-48df-b631-0b73ab779bde.mdx\",lineNumber:1,columnNumber:182},this),(0,n.jsxDEV)(e.span,{style:{color:\"#E1E4E8\"},children:\" \"},void 0,!1,{fileName:\"/Users/andreasthomas/github/chronark/chronark.com/content/projects/_mdx_bundler_entry_point-f941a3c8-66a7-48df-b631-0b73ab779bde.mdx\",lineNumber:1,columnNumber:233},this),(0,n.jsxDEV)(e.span,{style:{color:\"#F97583\"},children:\"=\"},void 0,!1,{fileName:\"/Users/andreasthomas/github/chronark/chronark.com/content/projects/_mdx_bundler_entry_point-f941a3c8-66a7-48df-b631-0b73ab779bde.mdx\",lineNumber:1,columnNumber:270},this),(0,n.jsxDEV)(e.span,{style:{color:\"#E1E4E8\"},children:\" \"},void 0,!1,{fileName:\"/Users/andreasthomas/github/chronark/chronark.com/content/projects/_mdx_bundler_entry_point-f941a3c8-66a7-48df-b631-0b73ab779bde.mdx\",lineNumber:1,columnNumber:307},this),(0,n.jsxDEV)(e.span,{style:{color:\"#9ECBFF\"},children:'\"mygroup\"'},void 0,!1,{fileName:\"/Users/andreasthomas/github/chronark/chronark.com/content/projects/_mdx_bundler_entry_point-f941a3c8-66a7-48df-b631-0b73ab779bde.mdx\",lineNumber:1,columnNumber:344},this)]},void 0,!0,{fileName:\"/Users/andreasthomas/github/chronark/chronark.com/content/projects/_mdx_bundler_entry_point-f941a3c8-66a7-48df-b631-0b73ab779bde.mdx\",lineNumber:1,columnNumber:85},this),`\n`,(0,n.jsxDEV)(e.span,{className:\"line\",children:[(0,n.jsxDEV)(e.span,{style:{color:\"#F97583\"},children:\"const\"},void 0,!1,{fileName:\"/Users/andreasthomas/github/chronark/chronark.com/content/projects/_mdx_bundler_entry_point-f941a3c8-66a7-48df-b631-0b73ab779bde.mdx\",lineNumber:2,columnNumber:20},this),(0,n.jsxDEV)(e.span,{style:{color:\"#E1E4E8\"},children:\" \"},void 0,!1,{fileName:\"/Users/andreasthomas/github/chronark/chronark.com/content/projects/_mdx_bundler_entry_point-f941a3c8-66a7-48df-b631-0b73ab779bde.mdx\",lineNumber:2,columnNumber:61},this),(0,n.jsxDEV)(e.span,{style:{color:\"#79B8FF\"},children:\"instanceId\"},void 0,!1,{fileName:\"/Users/andreasthomas/github/chronark/chronark.com/content/projects/_mdx_bundler_entry_point-f941a3c8-66a7-48df-b631-0b73ab779bde.mdx\",lineNumber:2,columnNumber:98},this),(0,n.jsxDEV)(e.span,{style:{color:\"#E1E4E8\"},children:\" \"},void 0,!1,{fileName:\"/Users/andreasthomas/github/chronark/chronark.com/content/projects/_mdx_bundler_entry_point-f941a3c8-66a7-48df-b631-0b73ab779bde.mdx\",lineNumber:2,columnNumber:144},this),(0,n.jsxDEV)(e.span,{style:{color:\"#F97583\"},children:\"=\"},void 0,!1,{fileName:\"/Users/andreasthomas/github/chronark/chronark.com/content/projects/_mdx_bundler_entry_point-f941a3c8-66a7-48df-b631-0b73ab779bde.mdx\",lineNumber:2,columnNumber:181},this),(0,n.jsxDEV)(e.span,{style:{color:\"#E1E4E8\"},children:\" \"},void 0,!1,{fileName:\"/Users/andreasthomas/github/chronark/chronark.com/content/projects/_mdx_bundler_entry_point-f941a3c8-66a7-48df-b631-0b73ab779bde.mdx\",lineNumber:2,columnNumber:218},this),(0,n.jsxDEV)(e.span,{style:{color:\"#9ECBFF\"},children:'\"myinstance\"'},void 0,!1,{fileName:\"/Users/andreasthomas/github/chronark/chronark.com/content/projects/_mdx_bundler_entry_point-f941a3c8-66a7-48df-b631-0b73ab779bde.mdx\",lineNumber:2,columnNumber:255},this)]},void 0,!0,{fileName:\"/Users/andreasthomas/github/chronark/chronark.com/content/projects/_mdx_bundler_entry_point-f941a3c8-66a7-48df-b631-0b73ab779bde.mdx\",lineNumber:2,columnNumber:1},this),`\n`,(0,n.jsxDEV)(e.span,{className:\"line\",children:[(0,n.jsxDEV)(e.span,{style:{color:\"#F97583\"},children:\"const\"},void 0,!1,{fileName:\"/Users/andreasthomas/github/chronark/chronark.com/content/projects/_mdx_bundler_entry_point-f941a3c8-66a7-48df-b631-0b73ab779bde.mdx\",lineNumber:3,columnNumber:20},this),(0,n.jsxDEV)(e.span,{style:{color:\"#E1E4E8\"},children:\" \"},void 0,!1,{fileName:\"/Users/andreasthomas/github/chronark/chronark.com/content/projects/_mdx_bundler_entry_point-f941a3c8-66a7-48df-b631-0b73ab779bde.mdx\",lineNumber:3,columnNumber:61},this),(0,n.jsxDEV)(e.span,{style:{color:\"#79B8FF\"},children:\"topic\"},void 0,!1,{fileName:\"/Users/andreasthomas/github/chronark/chronark.com/content/projects/_mdx_bundler_entry_point-f941a3c8-66a7-48df-b631-0b73ab779bde.mdx\",lineNumber:3,columnNumber:98},this),(0,n.jsxDEV)(e.span,{style:{color:\"#E1E4E8\"},children:\" \"},void 0,!1,{fileName:\"/Users/andreasthomas/github/chronark/chronark.com/content/projects/_mdx_bundler_entry_point-f941a3c8-66a7-48df-b631-0b73ab779bde.mdx\",lineNumber:3,columnNumber:139},this),(0,n.jsxDEV)(e.span,{style:{color:\"#F97583\"},children:\"=\"},void 0,!1,{fileName:\"/Users/andreasthomas/github/chronark/chronark.com/content/projects/_mdx_bundler_entry_point-f941a3c8-66a7-48df-b631-0b73ab779bde.mdx\",lineNumber:3,columnNumber:176},this),(0,n.jsxDEV)(e.span,{style:{color:\"#E1E4E8\"},children:\" \"},void 0,!1,{fileName:\"/Users/andreasthomas/github/chronark/chronark.com/content/projects/_mdx_bundler_entry_point-f941a3c8-66a7-48df-b631-0b73ab779bde.mdx\",lineNumber:3,columnNumber:213},this),(0,n.jsxDEV)(e.span,{style:{color:\"#9ECBFF\"},children:'\"my.topic\"'},void 0,!1,{fileName:\"/Users/andreasthomas/github/chronark/chronark.com/content/projects/_mdx_bundler_entry_point-f941a3c8-66a7-48df-b631-0b73ab779bde.mdx\",lineNumber:3,columnNumber:250},this)]},void 0,!0,{fileName:\"/Users/andreasthomas/github/chronark/chronark.com/content/projects/_mdx_bundler_entry_point-f941a3c8-66a7-48df-b631-0b73ab779bde.mdx\",lineNumber:3,columnNumber:1},this),`\n`,(0,n.jsxDEV)(e.span,{className:\"line\",children:\" \"},void 0,!1,{fileName:\"/Users/andreasthomas/github/chronark/chronark.com/content/projects/_mdx_bundler_entry_point-f941a3c8-66a7-48df-b631-0b73ab779bde.mdx\",lineNumber:4,columnNumber:1},this),`\n`,(0,n.jsxDEV)(e.span,{className:\"line\",children:[(0,n.jsxDEV)(e.span,{style:{color:\"#F97583\"},children:\"const\"},void 0,!1,{fileName:\"/Users/andreasthomas/github/chronark/chronark.com/content/projects/_mdx_bundler_entry_point-f941a3c8-66a7-48df-b631-0b73ab779bde.mdx\",lineNumber:5,columnNumber:20},this),(0,n.jsxDEV)(e.span,{style:{color:\"#E1E4E8\"},children:\" \"},void 0,!1,{fileName:\"/Users/andreasthomas/github/chronark/chronark.com/content/projects/_mdx_bundler_entry_point-f941a3c8-66a7-48df-b631-0b73ab779bde.mdx\",lineNumber:5,columnNumber:61},this),(0,n.jsxDEV)(e.span,{style:{color:\"#79B8FF\"},children:\"c\"},void 0,!1,{fileName:\"/Users/andreasthomas/github/chronark/chronark.com/content/projects/_mdx_bundler_entry_point-f941a3c8-66a7-48df-b631-0b73ab779bde.mdx\",lineNumber:5,columnNumber:98},this),(0,n.jsxDEV)(e.span,{style:{color:\"#E1E4E8\"},children:\" \"},void 0,!1,{fileName:\"/Users/andreasthomas/github/chronark/chronark.com/content/projects/_mdx_bundler_entry_point-f941a3c8-66a7-48df-b631-0b73ab779bde.mdx\",lineNumber:5,columnNumber:135},this),(0,n.jsxDEV)(e.span,{style:{color:\"#F97583\"},children:\"=\"},void 0,!1,{fileName:\"/Users/andreasthomas/github/chronark/chronark.com/content/projects/_mdx_bundler_entry_point-f941a3c8-66a7-48df-b631-0b73ab779bde.mdx\",lineNumber:5,columnNumber:172},this),(0,n.jsxDEV)(e.span,{style:{color:\"#E1E4E8\"},children:\" kafka.\"},void 0,!1,{fileName:\"/Users/andreasthomas/github/chronark/chronark.com/content/projects/_mdx_bundler_entry_point-f941a3c8-66a7-48df-b631-0b73ab779bde.mdx\",lineNumber:5,columnNumber:209},this),(0,n.jsxDEV)(e.span,{style:{color:\"#B392F0\"},children:\"consumer\"},void 0,!1,{fileName:\"/Users/andreasthomas/github/chronark/chronark.com/content/projects/_mdx_bundler_entry_point-f941a3c8-66a7-48df-b631-0b73ab779bde.mdx\",lineNumber:5,columnNumber:252},this),(0,n.jsxDEV)(e.span,{style:{color:\"#E1E4E8\"},children:\"()\"},void 0,!1,{fileName:\"/Users/andreasthomas/github/chronark/chronark.com/content/projects/_mdx_bundler_entry_point-f941a3c8-66a7-48df-b631-0b73ab779bde.mdx\",lineNumber:5,columnNumber:296},this)]},void 0,!0,{fileName:\"/Users/andreasthomas/github/chronark/chronark.com/content/projects/_mdx_bundler_entry_point-f941a3c8-66a7-48df-b631-0b73ab779bde.mdx\",lineNumber:5,columnNumber:1},this),`\n`,(0,n.jsxDEV)(e.span,{className:\"line\",children:[(0,n.jsxDEV)(e.span,{style:{color:\"#F97583\"},children:\"const\"},void 0,!1,{fileName:\"/Users/andreasthomas/github/chronark/chronark.com/content/projects/_mdx_bundler_entry_point-f941a3c8-66a7-48df-b631-0b73ab779bde.mdx\",lineNumber:6,columnNumber:20},this),(0,n.jsxDEV)(e.span,{style:{color:\"#E1E4E8\"},children:\" \"},void 0,!1,{fileName:\"/Users/andreasthomas/github/chronark/chronark.com/content/projects/_mdx_bundler_entry_point-f941a3c8-66a7-48df-b631-0b73ab779bde.mdx\",lineNumber:6,columnNumber:61},this),(0,n.jsxDEV)(e.span,{style:{color:\"#79B8FF\"},children:\"messages\"},void 0,!1,{fileName:\"/Users/andreasthomas/github/chronark/chronark.com/content/projects/_mdx_bundler_entry_point-f941a3c8-66a7-48df-b631-0b73ab779bde.mdx\",lineNumber:6,columnNumber:98},this),(0,n.jsxDEV)(e.span,{style:{color:\"#E1E4E8\"},children:\" \"},void 0,!1,{fileName:\"/Users/andreasthomas/github/chronark/chronark.com/content/projects/_mdx_bundler_entry_point-f941a3c8-66a7-48df-b631-0b73ab779bde.mdx\",lineNumber:6,columnNumber:142},this),(0,n.jsxDEV)(e.span,{style:{color:\"#F97583\"},children:\"=\"},void 0,!1,{fileName:\"/Users/andreasthomas/github/chronark/chronark.com/content/projects/_mdx_bundler_entry_point-f941a3c8-66a7-48df-b631-0b73ab779bde.mdx\",lineNumber:6,columnNumber:179},this),(0,n.jsxDEV)(e.span,{style:{color:\"#E1E4E8\"},children:\" \"},void 0,!1,{fileName:\"/Users/andreasthomas/github/chronark/chronark.com/content/projects/_mdx_bundler_entry_point-f941a3c8-66a7-48df-b631-0b73ab779bde.mdx\",lineNumber:6,columnNumber:216},this),(0,n.jsxDEV)(e.span,{style:{color:\"#F97583\"},children:\"await\"},void 0,!1,{fileName:\"/Users/andreasthomas/github/chronark/chronark.com/content/projects/_mdx_bundler_entry_point-f941a3c8-66a7-48df-b631-0b73ab779bde.mdx\",lineNumber:6,columnNumber:253},this),(0,n.jsxDEV)(e.span,{style:{color:\"#E1E4E8\"},children:\" c.\"},void 0,!1,{fileName:\"/Users/andreasthomas/github/chronark/chronark.com/content/projects/_mdx_bundler_entry_point-f941a3c8-66a7-48df-b631-0b73ab779bde.mdx\",lineNumber:6,columnNumber:294},this),(0,n.jsxDEV)(e.span,{style:{color:\"#B392F0\"},children:\"consume\"},void 0,!1,{fileName:\"/Users/andreasthomas/github/chronark/chronark.com/content/projects/_mdx_bundler_entry_point-f941a3c8-66a7-48df-b631-0b73ab779bde.mdx\",lineNumber:6,columnNumber:333},this),(0,n.jsxDEV)(e.span,{style:{color:\"#E1E4E8\"},children:\"({\"},void 0,!1,{fileName:\"/Users/andreasthomas/github/chronark/chronark.com/content/projects/_mdx_bundler_entry_point-f941a3c8-66a7-48df-b631-0b73ab779bde.mdx\",lineNumber:6,columnNumber:376},this)]},void 0,!0,{fileName:\"/Users/andreasthomas/github/chronark/chronark.com/content/projects/_mdx_bundler_entry_point-f941a3c8-66a7-48df-b631-0b73ab779bde.mdx\",lineNumber:6,columnNumber:1},this),`\n`,(0,n.jsxDEV)(e.span,{className:\"line\",children:(0,n.jsxDEV)(e.span,{style:{color:\"#E1E4E8\"},children:\" consumerGroupId,\"},void 0,!1,{fileName:\"/Users/andreasthomas/github/chronark/chronark.com/content/projects/_mdx_bundler_entry_point-f941a3c8-66a7-48df-b631-0b73ab779bde.mdx\",lineNumber:7,columnNumber:20},this)},void 0,!1,{fileName:\"/Users/andreasthomas/github/chronark/chronark.com/content/projects/_mdx_bundler_entry_point-f941a3c8-66a7-48df-b631-0b73ab779bde.mdx\",lineNumber:7,columnNumber:1},this),`\n`,(0,n.jsxDEV)(e.span,{className:\"line\",children:(0,n.jsxDEV)(e.span,{style:{color:\"#E1E4E8\"},children:\" instanceId,\"},void 0,!1,{fileName:\"/Users/andreasthomas/github/chronark/chronark.com/content/projects/_mdx_bundler_entry_point-f941a3c8-66a7-48df-b631-0b73ab779bde.mdx\",lineNumber:8,columnNumber:20},this)},void 0,!1,{fileName:\"/Users/andreasthomas/github/chronark/chronark.com/content/projects/_mdx_bundler_entry_point-f941a3c8-66a7-48df-b631-0b73ab779bde.mdx\",lineNumber:8,columnNumber:1},this),`\n`,(0,n.jsxDEV)(e.span,{className:\"line\",children:(0,n.jsxDEV)(e.span,{style:{color:\"#E1E4E8\"},children:\" topics: [topic],\"},void 0,!1,{fileName:\"/Users/andreasthomas/github/chronark/chronark.com/content/projects/_mdx_bundler_entry_point-f941a3c8-66a7-48df-b631-0b73ab779bde.mdx\",lineNumber:9,columnNumber:20},this)},void 0,!1,{fileName:\"/Users/andreasthomas/github/chronark/chronark.com/content/projects/_mdx_bundler_entry_point-f941a3c8-66a7-48df-b631-0b73ab779bde.mdx\",lineNumber:9,columnNumber:1},this),`\n`,(0,n.jsxDEV)(e.span,{className:\"line\",children:[(0,n.jsxDEV)(e.span,{style:{color:\"#E1E4E8\"},children:\" autoCommit: \"},void 0,!1,{fileName:\"/Users/andreasthomas/github/chronark/chronark.com/content/projects/_mdx_bundler_entry_point-f941a3c8-66a7-48df-b631-0b73ab779bde.mdx\",lineNumber:10,columnNumber:20},this),(0,n.jsxDEV)(e.span,{style:{color:\"#79B8FF\"},children:\"false\"},void 0,!1,{fileName:\"/Users/andreasthomas/github/chronark/chronark.com/content/projects/_mdx_bundler_entry_point-f941a3c8-66a7-48df-b631-0b73ab779bde.mdx\",lineNumber:10,columnNumber:70},this),(0,n.jsxDEV)(e.span,{style:{color:\"#E1E4E8\"},children:\",\"},void 0,!1,{fileName:\"/Users/andreasthomas/github/chronark/chronark.com/content/projects/_mdx_bundler_entry_point-f941a3c8-66a7-48df-b631-0b73ab779bde.mdx\",lineNumber:10,columnNumber:111},this)]},void 0,!0,{fileName:\"/Users/andreasthomas/github/chronark/chronark.com/content/projects/_mdx_bundler_entry_point-f941a3c8-66a7-48df-b631-0b73ab779bde.mdx\",lineNumber:10,columnNumber:1},this),`\n`,(0,n.jsxDEV)(e.span,{className:\"line\",children:(0,n.jsxDEV)(e.span,{style:{color:\"#E1E4E8\"},children:\"})\"},void 0,!1,{fileName:\"/Users/andreasthomas/github/chronark/chronark.com/content/projects/_mdx_bundler_entry_point-f941a3c8-66a7-48df-b631-0b73ab779bde.mdx\",lineNumber:11,columnNumber:20},this)},void 0,!1,{fileName:\"/Users/andreasthomas/github/chronark/chronark.com/content/projects/_mdx_bundler_entry_point-f941a3c8-66a7-48df-b631-0b73ab779bde.mdx\",lineNumber:11,columnNumber:1},this),`\n`,(0,n.jsxDEV)(e.span,{className:\"line\",children:\" \"},void 0,!1,{fileName:\"/Users/andreasthomas/github/chronark/chronark.com/content/projects/_mdx_bundler_entry_point-f941a3c8-66a7-48df-b631-0b73ab779bde.mdx\",lineNumber:12,columnNumber:1},this),`\n`,(0,n.jsxDEV)(e.span,{className:\"line\",children:[(0,n.jsxDEV)(e.span,{style:{color:\"#F97583\"},children:\"for\"},void 0,!1,{fileName:\"/Users/andreasthomas/github/chronark/chronark.com/content/projects/_mdx_bundler_entry_point-f941a3c8-66a7-48df-b631-0b73ab779bde.mdx\",lineNumber:13,columnNumber:20},this),(0,n.jsxDEV)(e.span,{style:{color:\"#E1E4E8\"},children:\" (\"},void 0,!1,{fileName:\"/Users/andreasthomas/github/chronark/chronark.com/content/projects/_mdx_bundler_entry_point-f941a3c8-66a7-48df-b631-0b73ab779bde.mdx\",lineNumber:13,columnNumber:59},this),(0,n.jsxDEV)(e.span,{style:{color:\"#F97583\"},children:\"const\"},void 0,!1,{fileName:\"/Users/andreasthomas/github/chronark/chronark.com/content/projects/_mdx_bundler_entry_point-f941a3c8-66a7-48df-b631-0b73ab779bde.mdx\",lineNumber:13,columnNumber:97},this),(0,n.jsxDEV)(e.span,{style:{color:\"#E1E4E8\"},children:\" \"},void 0,!1,{fileName:\"/Users/andreasthomas/github/chronark/chronark.com/content/projects/_mdx_bundler_entry_point-f941a3c8-66a7-48df-b631-0b73ab779bde.mdx\",lineNumber:13,columnNumber:138},this),(0,n.jsxDEV)(e.span,{style:{color:\"#79B8FF\"},children:\"message\"},void 0,!1,{fileName:\"/Users/andreasthomas/github/chronark/chronark.com/content/projects/_mdx_bundler_entry_point-f941a3c8-66a7-48df-b631-0b73ab779bde.mdx\",lineNumber:13,columnNumber:175},this),(0,n.jsxDEV)(e.span,{style:{color:\"#E1E4E8\"},children:\" \"},void 0,!1,{fileName:\"/Users/andreasthomas/github/chronark/chronark.com/content/projects/_mdx_bundler_entry_point-f941a3c8-66a7-48df-b631-0b73ab779bde.mdx\",lineNumber:13,columnNumber:218},this),(0,n.jsxDEV)(e.span,{style:{color:\"#F97583\"},children:\"of\"},void 0,!1,{fileName:\"/Users/andreasthomas/github/chronark/chronark.com/content/projects/_mdx_bundler_entry_point-f941a3c8-66a7-48df-b631-0b73ab779bde.mdx\",lineNumber:13,columnNumber:255},this),(0,n.jsxDEV)(e.span,{style:{color:\"#E1E4E8\"},children:\" messages) {\"},void 0,!1,{fileName:\"/Users/andreasthomas/github/chronark/chronark.com/content/projects/_mdx_bundler_entry_point-f941a3c8-66a7-48df-b631-0b73ab779bde.mdx\",lineNumber:13,columnNumber:293},this)]},void 0,!0,{fileName:\"/Users/andreasthomas/github/chronark/chronark.com/content/projects/_mdx_bundler_entry_point-f941a3c8-66a7-48df-b631-0b73ab779bde.mdx\",lineNumber:13,columnNumber:1},this),`\n`,(0,n.jsxDEV)(e.span,{className:\"line\",children:[(0,n.jsxDEV)(e.span,{style:{color:\"#E1E4E8\"},children:\" \"},void 0,!1,{fileName:\"/Users/andreasthomas/github/chronark/chronark.com/content/projects/_mdx_bundler_entry_point-f941a3c8-66a7-48df-b631-0b73ab779bde.mdx\",lineNumber:14,columnNumber:20},this),(0,n.jsxDEV)(e.span,{style:{color:\"#6A737D\"},children:\"// message handling logic\"},void 0,!1,{fileName:\"/Users/andreasthomas/github/chronark/chronark.com/content/projects/_mdx_bundler_entry_point-f941a3c8-66a7-48df-b631-0b73ab779bde.mdx\",lineNumber:14,columnNumber:58},this)]},void 0,!0,{fileName:\"/Users/andreasthomas/github/chronark/chronark.com/content/projects/_mdx_bundler_entry_point-f941a3c8-66a7-48df-b631-0b73ab779bde.mdx\",lineNumber:14,columnNumber:1},this),`\n`,(0,n.jsxDEV)(e.span,{className:\"line\",children:\" \"},void 0,!1,{fileName:\"/Users/andreasthomas/github/chronark/chronark.com/content/projects/_mdx_bundler_entry_point-f941a3c8-66a7-48df-b631-0b73ab779bde.mdx\",lineNumber:15,columnNumber:1},this),`\n`,(0,n.jsxDEV)(e.span,{className:\"line\",children:[(0,n.jsxDEV)(e.span,{style:{color:\"#E1E4E8\"},children:\" \"},void 0,!1,{fileName:\"/Users/andreasthomas/github/chronark/chronark.com/content/projects/_mdx_bundler_entry_point-f941a3c8-66a7-48df-b631-0b73ab779bde.mdx\",lineNumber:16,columnNumber:20},this),(0,n.jsxDEV)(e.span,{style:{color:\"#F97583\"},children:\"await\"},void 0,!1,{fileName:\"/Users/andreasthomas/github/chronark/chronark.com/content/projects/_mdx_bundler_entry_point-f941a3c8-66a7-48df-b631-0b73ab779bde.mdx\",lineNumber:16,columnNumber:58},this),(0,n.jsxDEV)(e.span,{style:{color:\"#E1E4E8\"},children:\" c.\"},void 0,!1,{fileName:\"/Users/andreasthomas/github/chronark/chronark.com/content/projects/_mdx_bundler_entry_point-f941a3c8-66a7-48df-b631-0b73ab779bde.mdx\",lineNumber:16,columnNumber:99},this),(0,n.jsxDEV)(e.span,{style:{color:\"#B392F0\"},children:\"commit\"},void 0,!1,{fileName:\"/Users/andreasthomas/github/chronark/chronark.com/content/projects/_mdx_bundler_entry_point-f941a3c8-66a7-48df-b631-0b73ab779bde.mdx\",lineNumber:16,columnNumber:138},this),(0,n.jsxDEV)(e.span,{style:{color:\"#E1E4E8\"},children:\"({\"},void 0,!1,{fileName:\"/Users/andreasthomas/github/chronark/chronark.com/content/projects/_mdx_bundler_entry_point-f941a3c8-66a7-48df-b631-0b73ab779bde.mdx\",lineNumber:16,columnNumber:180},this)]},void 0,!0,{fileName:\"/Users/andreasthomas/github/chronark/chronark.com/content/projects/_mdx_bundler_entry_point-f941a3c8-66a7-48df-b631-0b73ab779bde.mdx\",lineNumber:16,columnNumber:1},this),`\n`,(0,n.jsxDEV)(e.span,{className:\"line\",children:(0,n.jsxDEV)(e.span,{style:{color:\"#E1E4E8\"},children:\" consumerGroupId,\"},void 0,!1,{fileName:\"/Users/andreasthomas/github/chronark/chronark.com/content/projects/_mdx_bundler_entry_point-f941a3c8-66a7-48df-b631-0b73ab779bde.mdx\",lineNumber:17,columnNumber:20},this)},void 0,!1,{fileName:\"/Users/andreasthomas/github/chronark/chronark.com/content/projects/_mdx_bundler_entry_point-f941a3c8-66a7-48df-b631-0b73ab779bde.mdx\",lineNumber:17,columnNumber:1},this),`\n`,(0,n.jsxDEV)(e.span,{className:\"line\",children:(0,n.jsxDEV)(e.span,{style:{color:\"#E1E4E8\"},children:\" instanceId,\"},void 0,!1,{fileName:\"/Users/andreasthomas/github/chronark/chronark.com/content/projects/_mdx_bundler_entry_point-f941a3c8-66a7-48df-b631-0b73ab779bde.mdx\",lineNumber:18,columnNumber:20},this)},void 0,!1,{fileName:\"/Users/andreasthomas/github/chronark/chronark.com/content/projects/_mdx_bundler_entry_point-f941a3c8-66a7-48df-b631-0b73ab779bde.mdx\",lineNumber:18,columnNumber:1},this),`\n`,(0,n.jsxDEV)(e.span,{className:\"line\",children:(0,n.jsxDEV)(e.span,{style:{color:\"#E1E4E8\"},children:\" offset: {\"},void 0,!1,{fileName:\"/Users/andreasthomas/github/chronark/chronark.com/content/projects/_mdx_bundler_entry_point-f941a3c8-66a7-48df-b631-0b73ab779bde.mdx\",lineNumber:19,columnNumber:20},this)},void 0,!1,{fileName:\"/Users/andreasthomas/github/chronark/chronark.com/content/projects/_mdx_bundler_entry_point-f941a3c8-66a7-48df-b631-0b73ab779bde.mdx\",lineNumber:19,columnNumber:1},this),`\n`,(0,n.jsxDEV)(e.span,{className:\"line\",children:(0,n.jsxDEV)(e.span,{style:{color:\"#E1E4E8\"},children:\" topic: message.topic,\"},void 0,!1,{fileName:\"/Users/andreasthomas/github/chronark/chronark.com/content/projects/_mdx_bundler_entry_point-f941a3c8-66a7-48df-b631-0b73ab779bde.mdx\",lineNumber:20,columnNumber:20},this)},void 0,!1,{fileName:\"/Users/andreasthomas/github/chronark/chronark.com/content/projects/_mdx_bundler_entry_point-f941a3c8-66a7-48df-b631-0b73ab779bde.mdx\",lineNumber:20,columnNumber:1},this),`\n`,(0,n.jsxDEV)(e.span,{className:\"line\",children:(0,n.jsxDEV)(e.span,{style:{color:\"#E1E4E8\"},children:\" partition: message.partition,\"},void 0,!1,{fileName:\"/Users/andreasthomas/github/chronark/chronark.com/content/projects/_mdx_bundler_entry_point-f941a3c8-66a7-48df-b631-0b73ab779bde.mdx\",lineNumber:21,columnNumber:20},this)},void 0,!1,{fileName:\"/Users/andreasthomas/github/chronark/chronark.com/content/projects/_mdx_bundler_entry_point-f941a3c8-66a7-48df-b631-0b73ab779bde.mdx\",lineNumber:21,columnNumber:1},this),`\n`,(0,n.jsxDEV)(e.span,{className:\"line\",children:(0,n.jsxDEV)(e.span,{style:{color:\"#E1E4E8\"},children:\" offset: message.offset,\"},void 0,!1,{fileName:\"/Users/andreasthomas/github/chronark/chronark.com/content/projects/_mdx_bundler_entry_point-f941a3c8-66a7-48df-b631-0b73ab779bde.mdx\",lineNumber:22,columnNumber:20},this)},void 0,!1,{fileName:\"/Users/andreasthomas/github/chronark/chronark.com/content/projects/_mdx_bundler_entry_point-f941a3c8-66a7-48df-b631-0b73ab779bde.mdx\",lineNumber:22,columnNumber:1},this),`\n`,(0,n.jsxDEV)(e.span,{className:\"line\",children:(0,n.jsxDEV)(e.span,{style:{color:\"#E1E4E8\"},children:\" },\"},void 0,!1,{fileName:\"/Users/andreasthomas/github/chronark/chronark.com/content/projects/_mdx_bundler_entry_point-f941a3c8-66a7-48df-b631-0b73ab779bde.mdx\",lineNumber:23,columnNumber:20},this)},void 0,!1,{fileName:\"/Users/andreasthomas/github/chronark/chronark.com/content/projects/_mdx_bundler_entry_point-f941a3c8-66a7-48df-b631-0b73ab779bde.mdx\",lineNumber:23,columnNumber:1},this),`\n`,(0,n.jsxDEV)(e.span,{className:\"line\",children:(0,n.jsxDEV)(e.span,{style:{color:\"#E1E4E8\"},children:\" })\"},void 0,!1,{fileName:\"/Users/andreasthomas/github/chronark/chronark.com/content/projects/_mdx_bundler_entry_point-f941a3c8-66a7-48df-b631-0b73ab779bde.mdx\",lineNumber:24,columnNumber:20},this)},void 0,!1,{fileName:\"/Users/andreasthomas/github/chronark/chronark.com/content/projects/_mdx_bundler_entry_point-f941a3c8-66a7-48df-b631-0b73ab779bde.mdx\",lineNumber:24,columnNumber:1},this),`\n`,(0,n.jsxDEV)(e.span,{className:\"line\",children:(0,n.jsxDEV)(e.span,{style:{color:\"#E1E4E8\"},children:\"}\"},void 0,!1,{fileName:\"/Users/andreasthomas/github/chronark/chronark.com/content/projects/_mdx_bundler_entry_point-f941a3c8-66a7-48df-b631-0b73ab779bde.mdx\",lineNumber:25,columnNumber:20},this)},void 0,!1,{fileName:\"/Users/andreasthomas/github/chronark/chronark.com/content/projects/_mdx_bundler_entry_point-f941a3c8-66a7-48df-b631-0b73ab779bde.mdx\",lineNumber:25,columnNumber:1},this)]},void 0,!0,{fileName:\"/Users/andreasthomas/github/chronark/chronark.com/content/projects/_mdx_bundler_entry_point-f941a3c8-66a7-48df-b631-0b73ab779bde.mdx\",lineNumber:1,columnNumber:79},this)},void 0,!1,{fileName:\"/Users/andreasthomas/github/chronark/chronark.com/content/projects/_mdx_bundler_entry_point-f941a3c8-66a7-48df-b631-0b73ab779bde.mdx\",lineNumber:1,columnNumber:1},this)},void 0,!1,{fileName:\"/Users/andreasthomas/github/chronark/chronark.com/content/projects/_mdx_bundler_entry_point-f941a3c8-66a7-48df-b631-0b73ab779bde.mdx\",lineNumber:108,columnNumber:1},this),`\n`,(0,n.jsxDEV)(e.h2,{id:\"fetch\",children:[(0,n.jsxDEV)(e.a,{className:\"subheading-anchor\",\"aria-label\":\"Link to section\",href:\"#fetch\",children:(0,n.jsxDEV)(e.span,{className:\"icon icon-link\"},void 0,!1,{fileName:\"/Users/andreasthomas/github/chronark/chronark.com/content/projects/_mdx_bundler_entry_point-f941a3c8-66a7-48df-b631-0b73ab779bde.mdx\"},this)},void 0,!1,{fileName:\"/Users/andreasthomas/github/chronark/chronark.com/content/projects/_mdx_bundler_entry_point-f941a3c8-66a7-48df-b631-0b73ab779bde.mdx\"},this),\"Fetch\"]},void 0,!0,{fileName:\"/Users/andreasthomas/github/chronark/chronark.com/content/projects/_mdx_bundler_entry_point-f941a3c8-66a7-48df-b631-0b73ab779bde.mdx\",lineNumber:136,columnNumber:1},this),`\n`,(0,n.jsxDEV)(e.p,{children:[\"You can also manage offsets manually by using \",(0,n.jsxDEV)(e.code,{children:\"Consumer.fetch\"},void 0,!1,{fileName:\"/Users/andreasthomas/github/chronark/chronark.com/content/projects/_mdx_bundler_entry_point-f941a3c8-66a7-48df-b631-0b73ab779bde.mdx\",lineNumber:138,columnNumber:47},this)]},void 0,!0,{fileName:\"/Users/andreasthomas/github/chronark/chronark.com/content/projects/_mdx_bundler_entry_point-f941a3c8-66a7-48df-b631-0b73ab779bde.mdx\",lineNumber:138,columnNumber:1},this),`\n`,(0,n.jsxDEV)(e.div,{\"data-rehype-pretty-code-fragment\":\"\",children:(0,n.jsxDEV)(e.pre,{\"data-language\":\"typescript\",\"data-theme\":\"default\",children:(0,n.jsxDEV)(e.code,{\"data-language\":\"typescript\",\"data-theme\":\"default\",children:[(0,n.jsxDEV)(e.span,{className:\"line\",children:[(0,n.jsxDEV)(e.span,{style:{color:\"#F97583\"},children:\"const\"},void 0,!1,{fileName:\"/Users/andreasthomas/github/chronark/chronark.com/content/projects/_mdx_bundler_entry_point-f941a3c8-66a7-48df-b631-0b73ab779bde.mdx\",lineNumber:1,columnNumber:104},this),(0,n.jsxDEV)(e.span,{style:{color:\"#E1E4E8\"},children:\" \"},void 0,!1,{fileName:\"/Users/andreasthomas/github/chronark/chronark.com/content/projects/_mdx_bundler_entry_point-f941a3c8-66a7-48df-b631-0b73ab779bde.mdx\",lineNumber:1,columnNumber:145},this),(0,n.jsxDEV)(e.span,{style:{color:\"#79B8FF\"},children:\"c\"},void 0,!1,{fileName:\"/Users/andreasthomas/github/chronark/chronark.com/content/projects/_mdx_bundler_entry_point-f941a3c8-66a7-48df-b631-0b73ab779bde.mdx\",lineNumber:1,columnNumber:182},this),(0,n.jsxDEV)(e.span,{style:{color:\"#E1E4E8\"},children:\" \"},void 0,!1,{fileName:\"/Users/andreasthomas/github/chronark/chronark.com/content/projects/_mdx_bundler_entry_point-f941a3c8-66a7-48df-b631-0b73ab779bde.mdx\",lineNumber:1,columnNumber:219},this),(0,n.jsxDEV)(e.span,{style:{color:\"#F97583\"},children:\"=\"},void 0,!1,{fileName:\"/Users/andreasthomas/github/chronark/chronark.com/content/projects/_mdx_bundler_entry_point-f941a3c8-66a7-48df-b631-0b73ab779bde.mdx\",lineNumber:1,columnNumber:256},this),(0,n.jsxDEV)(e.span,{style:{color:\"#E1E4E8\"},children:\" kafka.\"},void 0,!1,{fileName:\"/Users/andreasthomas/github/chronark/chronark.com/content/projects/_mdx_bundler_entry_point-f941a3c8-66a7-48df-b631-0b73ab779bde.mdx\",lineNumber:1,columnNumber:293},this),(0,n.jsxDEV)(e.span,{style:{color:\"#B392F0\"},children:\"consumer\"},void 0,!1,{fileName:\"/Users/andreasthomas/github/chronark/chronark.com/content/projects/_mdx_bundler_entry_point-f941a3c8-66a7-48df-b631-0b73ab779bde.mdx\",lineNumber:1,columnNumber:336},this),(0,n.jsxDEV)(e.span,{style:{color:\"#E1E4E8\"},children:\"()\"},void 0,!1,{fileName:\"/Users/andreasthomas/github/chronark/chronark.com/content/projects/_mdx_bundler_entry_point-f941a3c8-66a7-48df-b631-0b73ab779bde.mdx\",lineNumber:1,columnNumber:380},this)]},void 0,!0,{fileName:\"/Users/andreasthomas/github/chronark/chronark.com/content/projects/_mdx_bundler_entry_point-f941a3c8-66a7-48df-b631-0b73ab779bde.mdx\",lineNumber:1,columnNumber:85},this),`\n`,(0,n.jsxDEV)(e.span,{className:\"line\",children:[(0,n.jsxDEV)(e.span,{style:{color:\"#F97583\"},children:\"const\"},void 0,!1,{fileName:\"/Users/andreasthomas/github/chronark/chronark.com/content/projects/_mdx_bundler_entry_point-f941a3c8-66a7-48df-b631-0b73ab779bde.mdx\",lineNumber:2,columnNumber:20},this),(0,n.jsxDEV)(e.span,{style:{color:\"#E1E4E8\"},children:\" \"},void 0,!1,{fileName:\"/Users/andreasthomas/github/chronark/chronark.com/content/projects/_mdx_bundler_entry_point-f941a3c8-66a7-48df-b631-0b73ab779bde.mdx\",lineNumber:2,columnNumber:61},this),(0,n.jsxDEV)(e.span,{style:{color:\"#79B8FF\"},children:\"messages\"},void 0,!1,{fileName:\"/Users/andreasthomas/github/chronark/chronark.com/content/projects/_mdx_bundler_entry_point-f941a3c8-66a7-48df-b631-0b73ab779bde.mdx\",lineNumber:2,columnNumber:98},this),(0,n.jsxDEV)(e.span,{style:{color:\"#E1E4E8\"},children:\" \"},void 0,!1,{fileName:\"/Users/andreasthomas/github/chronark/chronark.com/content/projects/_mdx_bundler_entry_point-f941a3c8-66a7-48df-b631-0b73ab779bde.mdx\",lineNumber:2,columnNumber:142},this),(0,n.jsxDEV)(e.span,{style:{color:\"#F97583\"},children:\"=\"},void 0,!1,{fileName:\"/Users/andreasthomas/github/chronark/chronark.com/content/projects/_mdx_bundler_entry_point-f941a3c8-66a7-48df-b631-0b73ab779bde.mdx\",lineNumber:2,columnNumber:179},this),(0,n.jsxDEV)(e.span,{style:{color:\"#E1E4E8\"},children:\" \"},void 0,!1,{fileName:\"/Users/andreasthomas/github/chronark/chronark.com/content/projects/_mdx_bundler_entry_point-f941a3c8-66a7-48df-b631-0b73ab779bde.mdx\",lineNumber:2,columnNumber:216},this),(0,n.jsxDEV)(e.span,{style:{color:\"#F97583\"},children:\"await\"},void 0,!1,{fileName:\"/Users/andreasthomas/github/chronark/chronark.com/content/projects/_mdx_bundler_entry_point-f941a3c8-66a7-48df-b631-0b73ab779bde.mdx\",lineNumber:2,columnNumber:253},this),(0,n.jsxDEV)(e.span,{style:{color:\"#E1E4E8\"},children:\" c.\"},void 0,!1,{fileName:\"/Users/andreasthomas/github/chronark/chronark.com/content/projects/_mdx_bundler_entry_point-f941a3c8-66a7-48df-b631-0b73ab779bde.mdx\",lineNumber:2,columnNumber:294},this),(0,n.jsxDEV)(e.span,{style:{color:\"#B392F0\"},children:\"fetch\"},void 0,!1,{fileName:\"/Users/andreasthomas/github/chronark/chronark.com/content/projects/_mdx_bundler_entry_point-f941a3c8-66a7-48df-b631-0b73ab779bde.mdx\",lineNumber:2,columnNumber:333},this),(0,n.jsxDEV)(e.span,{style:{color:\"#E1E4E8\"},children:\"({\"},void 0,!1,{fileName:\"/Users/andreasthomas/github/chronark/chronark.com/content/projects/_mdx_bundler_entry_point-f941a3c8-66a7-48df-b631-0b73ab779bde.mdx\",lineNumber:2,columnNumber:374},this)]},void 0,!0,{fileName:\"/Users/andreasthomas/github/chronark/chronark.com/content/projects/_mdx_bundler_entry_point-f941a3c8-66a7-48df-b631-0b73ab779bde.mdx\",lineNumber:2,columnNumber:1},this),`\n`,(0,n.jsxDEV)(e.span,{className:\"line\",children:[(0,n.jsxDEV)(e.span,{style:{color:\"#E1E4E8\"},children:\" topic: \"},void 0,!1,{fileName:\"/Users/andreasthomas/github/chronark/chronark.com/content/projects/_mdx_bundler_entry_point-f941a3c8-66a7-48df-b631-0b73ab779bde.mdx\",lineNumber:3,columnNumber:20},this),(0,n.jsxDEV)(e.span,{style:{color:\"#9ECBFF\"},children:'\"greeting\"'},void 0,!1,{fileName:\"/Users/andreasthomas/github/chronark/chronark.com/content/projects/_mdx_bundler_entry_point-f941a3c8-66a7-48df-b631-0b73ab779bde.mdx\",lineNumber:3,columnNumber:65},this),(0,n.jsxDEV)(e.span,{style:{color:\"#E1E4E8\"},children:\",\"},void 0,!1,{fileName:\"/Users/andreasthomas/github/chronark/chronark.com/content/projects/_mdx_bundler_entry_point-f941a3c8-66a7-48df-b631-0b73ab779bde.mdx\",lineNumber:3,columnNumber:121},this)]},void 0,!0,{fileName:\"/Users/andreasthomas/github/chronark/chronark.com/content/projects/_mdx_bundler_entry_point-f941a3c8-66a7-48df-b631-0b73ab779bde.mdx\",lineNumber:3,columnNumber:1},this),`\n`,(0,n.jsxDEV)(e.span,{className:\"line\",children:[(0,n.jsxDEV)(e.span,{style:{color:\"#E1E4E8\"},children:\" partition: \"},void 0,!1,{fileName:\"/Users/andreasthomas/github/chronark/chronark.com/content/projects/_mdx_bundler_entry_point-f941a3c8-66a7-48df-b631-0b73ab779bde.mdx\",lineNumber:4,columnNumber:20},this),(0,n.jsxDEV)(e.span,{style:{color:\"#79B8FF\"},children:\"3\"},void 0,!1,{fileName:\"/Users/andreasthomas/github/chronark/chronark.com/content/projects/_mdx_bundler_entry_point-f941a3c8-66a7-48df-b631-0b73ab779bde.mdx\",lineNumber:4,columnNumber:69},this),(0,n.jsxDEV)(e.span,{style:{color:\"#E1E4E8\"},children:\",\"},void 0,!1,{fileName:\"/Users/andreasthomas/github/chronark/chronark.com/content/projects/_mdx_bundler_entry_point-f941a3c8-66a7-48df-b631-0b73ab779bde.mdx\",lineNumber:4,columnNumber:106},this)]},void 0,!0,{fileName:\"/Users/andreasthomas/github/chronark/chronark.com/content/projects/_mdx_bundler_entry_point-f941a3c8-66a7-48df-b631-0b73ab779bde.mdx\",lineNumber:4,columnNumber:1},this),`\n`,(0,n.jsxDEV)(e.span,{className:\"line\",children:[(0,n.jsxDEV)(e.span,{style:{color:\"#E1E4E8\"},children:\" offset: \"},void 0,!1,{fileName:\"/Users/andreasthomas/github/chronark/chronark.com/content/projects/_mdx_bundler_entry_point-f941a3c8-66a7-48df-b631-0b73ab779bde.mdx\",lineNumber:5,columnNumber:20},this),(0,n.jsxDEV)(e.span,{style:{color:\"#79B8FF\"},children:\"42\"},void 0,!1,{fileName:\"/Users/andreasthomas/github/chronark/chronark.com/content/projects/_mdx_bundler_entry_point-f941a3c8-66a7-48df-b631-0b73ab779bde.mdx\",lineNumber:5,columnNumber:66},this),(0,n.jsxDEV)(e.span,{style:{color:\"#E1E4E8\"},children:\",\"},void 0,!1,{fileName:\"/Users/andreasthomas/github/chronark/chronark.com/content/projects/_mdx_bundler_entry_point-f941a3c8-66a7-48df-b631-0b73ab779bde.mdx\",lineNumber:5,columnNumber:104},this)]},void 0,!0,{fileName:\"/Users/andreasthomas/github/chronark/chronark.com/content/projects/_mdx_bundler_entry_point-f941a3c8-66a7-48df-b631-0b73ab779bde.mdx\",lineNumber:5,columnNumber:1},this),`\n`,(0,n.jsxDEV)(e.span,{className:\"line\",children:[(0,n.jsxDEV)(e.span,{style:{color:\"#E1E4E8\"},children:\" timeout: \"},void 0,!1,{fileName:\"/Users/andreasthomas/github/chronark/chronark.com/content/projects/_mdx_bundler_entry_point-f941a3c8-66a7-48df-b631-0b73ab779bde.mdx\",lineNumber:6,columnNumber:20},this),(0,n.jsxDEV)(e.span,{style:{color:\"#79B8FF\"},children:\"1000\"},void 0,!1,{fileName:\"/Users/andreasthomas/github/chronark/chronark.com/content/projects/_mdx_bundler_entry_point-f941a3c8-66a7-48df-b631-0b73ab779bde.mdx\",lineNumber:6,columnNumber:67},this),(0,n.jsxDEV)(e.span,{style:{color:\"#E1E4E8\"},children:\",\"},void 0,!1,{fileName:\"/Users/andreasthomas/github/chronark/chronark.com/content/projects/_mdx_bundler_entry_point-f941a3c8-66a7-48df-b631-0b73ab779bde.mdx\",lineNumber:6,columnNumber:107},this)]},void 0,!0,{fileName:\"/Users/andreasthomas/github/chronark/chronark.com/content/projects/_mdx_bundler_entry_point-f941a3c8-66a7-48df-b631-0b73ab779bde.mdx\",lineNumber:6,columnNumber:1},this),`\n`,(0,n.jsxDEV)(e.span,{className:\"line\",children:(0,n.jsxDEV)(e.span,{style:{color:\"#E1E4E8\"},children:\"})\"},void 0,!1,{fileName:\"/Users/andreasthomas/github/chronark/chronark.com/content/projects/_mdx_bundler_entry_point-f941a3c8-66a7-48df-b631-0b73ab779bde.mdx\",lineNumber:7,columnNumber:20},this)},void 0,!1,{fileName:\"/Users/andreasthomas/github/chronark/chronark.com/content/projects/_mdx_bundler_entry_point-f941a3c8-66a7-48df-b631-0b73ab779bde.mdx\",lineNumber:7,columnNumber:1},this)]},void 0,!0,{fileName:\"/Users/andreasthomas/github/chronark/chronark.com/content/projects/_mdx_bundler_entry_point-f941a3c8-66a7-48df-b631-0b73ab779bde.mdx\",lineNumber:1,columnNumber:79},this)},void 0,!1,{fileName:\"/Users/andreasthomas/github/chronark/chronark.com/content/projects/_mdx_bundler_entry_point-f941a3c8-66a7-48df-b631-0b73ab779bde.mdx\",lineNumber:1,columnNumber:1},this)},void 0,!1,{fileName:\"/Users/andreasthomas/github/chronark/chronark.com/content/projects/_mdx_bundler_entry_point-f941a3c8-66a7-48df-b631-0b73ab779bde.mdx\",lineNumber:140,columnNumber:1},this),`\n`,(0,n.jsxDEV)(e.h2,{id:\"examples\",children:[(0,n.jsxDEV)(e.a,{className:\"subheading-anchor\",\"aria-label\":\"Link to section\",href:\"#examples\",children:(0,n.jsxDEV)(e.span,{className:\"icon icon-link\"},void 0,!1,{fileName:\"/Users/andreasthomas/github/chronark/chronark.com/content/projects/_mdx_bundler_entry_point-f941a3c8-66a7-48df-b631-0b73ab779bde.mdx\"},this)},void 0,!1,{fileName:\"/Users/andreasthomas/github/chronark/chronark.com/content/projects/_mdx_bundler_entry_point-f941a3c8-66a7-48df-b631-0b73ab779bde.mdx\"},this),\"Examples\"]},void 0,!0,{fileName:\"/Users/andreasthomas/github/chronark/chronark.com/content/projects/_mdx_bundler_entry_point-f941a3c8-66a7-48df-b631-0b73ab779bde.mdx\",lineNumber:150,columnNumber:1},this),`\n`,(0,n.jsxDEV)(e.p,{children:[\"See \",(0,n.jsxDEV)(e.a,{href:\"https://github.com/upstash/upstash-kafka/tree/main/examples\",children:\"/examples\"},void 0,!1,{fileName:\"/Users/andreasthomas/github/chronark/chronark.com/content/projects/_mdx_bundler_entry_point-f941a3c8-66a7-48df-b631-0b73ab779bde.mdx\",lineNumber:152,columnNumber:5},this),` as\nwell as various examples in the docstrings of each method.`]},void 0,!0,{fileName:\"/Users/andreasthomas/github/chronark/chronark.com/content/projects/_mdx_bundler_entry_point-f941a3c8-66a7-48df-b631-0b73ab779bde.mdx\",lineNumber:152,columnNumber:1},this),`\n`,(0,n.jsxDEV)(e.h1,{id:\"contributing\",children:[(0,n.jsxDEV)(e.a,{className:\"subheading-anchor\",\"aria-label\":\"Link to section\",href:\"#contributing\",children:(0,n.jsxDEV)(e.span,{className:\"icon icon-link\"},void 0,!1,{fileName:\"/Users/andreasthomas/github/chronark/chronark.com/content/projects/_mdx_bundler_entry_point-f941a3c8-66a7-48df-b631-0b73ab779bde.mdx\"},this)},void 0,!1,{fileName:\"/Users/andreasthomas/github/chronark/chronark.com/content/projects/_mdx_bundler_entry_point-f941a3c8-66a7-48df-b631-0b73ab779bde.mdx\"},this),\"Contributing\"]},void 0,!0,{fileName:\"/Users/andreasthomas/github/chronark/chronark.com/content/projects/_mdx_bundler_entry_point-f941a3c8-66a7-48df-b631-0b73ab779bde.mdx\",lineNumber:155,columnNumber:1},this),`\n`,(0,n.jsxDEV)(e.h2,{id:\"requirements\",children:[(0,n.jsxDEV)(e.a,{className:\"subheading-anchor\",\"aria-label\":\"Link to section\",href:\"#requirements\",children:(0,n.jsxDEV)(e.span,{className:\"icon icon-link\"},void 0,!1,{fileName:\"/Users/andreasthomas/github/chronark/chronark.com/content/projects/_mdx_bundler_entry_point-f941a3c8-66a7-48df-b631-0b73ab779bde.mdx\"},this)},void 0,!1,{fileName:\"/Users/andreasthomas/github/chronark/chronark.com/content/projects/_mdx_bundler_entry_point-f941a3c8-66a7-48df-b631-0b73ab779bde.mdx\"},this),\"Requirements\"]},void 0,!0,{fileName:\"/Users/andreasthomas/github/chronark/chronark.com/content/projects/_mdx_bundler_entry_point-f941a3c8-66a7-48df-b631-0b73ab779bde.mdx\",lineNumber:157,columnNumber:1},this),`\n`,(0,n.jsxDEV)(e.ul,{children:[`\n`,(0,n.jsxDEV)(e.li,{children:[(0,n.jsxDEV)(e.a,{href:\"https://nodejs.org\",children:\"nodejs\"},void 0,!1,{fileName:\"/Users/andreasthomas/github/chronark/chronark.com/content/projects/_mdx_bundler_entry_point-f941a3c8-66a7-48df-b631-0b73ab779bde.mdx\",lineNumber:159,columnNumber:3},this),\" v14.x or higher\"]},void 0,!0,{fileName:\"/Users/andreasthomas/github/chronark/chronark.com/content/projects/_mdx_bundler_entry_point-f941a3c8-66a7-48df-b631-0b73ab779bde.mdx\",lineNumber:159,columnNumber:1},this),`\n`,(0,n.jsxDEV)(e.li,{children:(0,n.jsxDEV)(e.a,{href:\"https://pnpm.io/installation\",children:\"pnpm\"},void 0,!1,{fileName:\"/Users/andreasthomas/github/chronark/chronark.com/content/projects/_mdx_bundler_entry_point-f941a3c8-66a7-48df-b631-0b73ab779bde.mdx\",lineNumber:160,columnNumber:3},this)},void 0,!1,{fileName:\"/Users/andreasthomas/github/chronark/chronark.com/content/projects/_mdx_bundler_entry_point-f941a3c8-66a7-48df-b631-0b73ab779bde.mdx\",lineNumber:160,columnNumber:1},this),`\n`]},void 0,!0,{fileName:\"/Users/andreasthomas/github/chronark/chronark.com/content/projects/_mdx_bundler_entry_point-f941a3c8-66a7-48df-b631-0b73ab779bde.mdx\",lineNumber:159,columnNumber:1},this),`\n`,(0,n.jsxDEV)(e.h2,{id:\"setup\",children:[(0,n.jsxDEV)(e.a,{className:\"subheading-anchor\",\"aria-label\":\"Link to section\",href:\"#setup\",children:(0,n.jsxDEV)(e.span,{className:\"icon icon-link\"},void 0,!1,{fileName:\"/Users/andreasthomas/github/chronark/chronark.com/content/projects/_mdx_bundler_entry_point-f941a3c8-66a7-48df-b631-0b73ab779bde.mdx\"},this)},void 0,!1,{fileName:\"/Users/andreasthomas/github/chronark/chronark.com/content/projects/_mdx_bundler_entry_point-f941a3c8-66a7-48df-b631-0b73ab779bde.mdx\"},this),\"Setup\"]},void 0,!0,{fileName:\"/Users/andreasthomas/github/chronark/chronark.com/content/projects/_mdx_bundler_entry_point-f941a3c8-66a7-48df-b631-0b73ab779bde.mdx\",lineNumber:162,columnNumber:1},this),`\n`,(0,n.jsxDEV)(e.ol,{start:\"0\",children:[`\n`,(0,n.jsxDEV)(e.li,{children:[`\n`,(0,n.jsxDEV)(e.p,{children:[\"Install dependencies using \",(0,n.jsxDEV)(e.code,{children:\"pnpm install\"},void 0,!1,{fileName:\"/Users/andreasthomas/github/chronark/chronark.com/content/projects/_mdx_bundler_entry_point-f941a3c8-66a7-48df-b631-0b73ab779bde.mdx\",lineNumber:164,columnNumber:31},this)]},void 0,!0,{fileName:\"/Users/andreasthomas/github/chronark/chronark.com/content/projects/_mdx_bundler_entry_point-f941a3c8-66a7-48df-b631-0b73ab779bde.mdx\",lineNumber:164,columnNumber:4},this),`\n`]},void 0,!0,{fileName:\"/Users/andreasthomas/github/chronark/chronark.com/content/projects/_mdx_bundler_entry_point-f941a3c8-66a7-48df-b631-0b73ab779bde.mdx\",lineNumber:164,columnNumber:1},this),`\n`,(0,n.jsxDEV)(e.li,{children:[`\n`,(0,n.jsxDEV)(e.p,{children:[`Create a kafka instance on upstash.\n`,(0,n.jsxDEV)(e.a,{href:\"https://docs.upstash.com/kafka#create-a-kafka-cluster\",children:\"docs\"},void 0,!1,{fileName:\"/Users/andreasthomas/github/chronark/chronark.com/content/projects/_mdx_bundler_entry_point-f941a3c8-66a7-48df-b631-0b73ab779bde.mdx\",lineNumber:166,columnNumber:4},this)]},void 0,!0,{fileName:\"/Users/andreasthomas/github/chronark/chronark.com/content/projects/_mdx_bundler_entry_point-f941a3c8-66a7-48df-b631-0b73ab779bde.mdx\",lineNumber:165,columnNumber:4},this),`\n`]},void 0,!0,{fileName:\"/Users/andreasthomas/github/chronark/chronark.com/content/projects/_mdx_bundler_entry_point-f941a3c8-66a7-48df-b631-0b73ab779bde.mdx\",lineNumber:165,columnNumber:1},this),`\n`,(0,n.jsxDEV)(e.li,{children:[`\n`,(0,n.jsxDEV)(e.p,{children:[\"Create the following topics: \",(0,n.jsxDEV)(e.code,{children:\"blue\"},void 0,!1,{fileName:\"/Users/andreasthomas/github/chronark/chronark.com/content/projects/_mdx_bundler_entry_point-f941a3c8-66a7-48df-b631-0b73ab779bde.mdx\",lineNumber:167,columnNumber:33},this),\", \",(0,n.jsxDEV)(e.code,{children:\"red\"},void 0,!1,{fileName:\"/Users/andreasthomas/github/chronark/chronark.com/content/projects/_mdx_bundler_entry_point-f941a3c8-66a7-48df-b631-0b73ab779bde.mdx\",lineNumber:167,columnNumber:41},this),\", \",(0,n.jsxDEV)(e.code,{children:\"green\"},void 0,!1,{fileName:\"/Users/andreasthomas/github/chronark/chronark.com/content/projects/_mdx_bundler_entry_point-f941a3c8-66a7-48df-b631-0b73ab779bde.mdx\",lineNumber:167,columnNumber:48},this),`.\n`,(0,n.jsxDEV)(e.a,{href:\"https://docs.upstash.com/kafka#create-a-topic\",children:\"docs\"},void 0,!1,{fileName:\"/Users/andreasthomas/github/chronark/chronark.com/content/projects/_mdx_bundler_entry_point-f941a3c8-66a7-48df-b631-0b73ab779bde.mdx\",lineNumber:168,columnNumber:4},this)]},void 0,!0,{fileName:\"/Users/andreasthomas/github/chronark/chronark.com/content/projects/_mdx_bundler_entry_point-f941a3c8-66a7-48df-b631-0b73ab779bde.mdx\",lineNumber:167,columnNumber:4},this),`\n`,(0,n.jsxDEV)(e.p,{children:\"The partitions or retention settings don't matter at this time.\"},void 0,!1,{fileName:\"/Users/andreasthomas/github/chronark/chronark.com/content/projects/_mdx_bundler_entry_point-f941a3c8-66a7-48df-b631-0b73ab779bde.mdx\",lineNumber:170,columnNumber:4},this),`\n`]},void 0,!0,{fileName:\"/Users/andreasthomas/github/chronark/chronark.com/content/projects/_mdx_bundler_entry_point-f941a3c8-66a7-48df-b631-0b73ab779bde.mdx\",lineNumber:167,columnNumber:1},this),`\n`,(0,n.jsxDEV)(e.li,{children:[`\n`,(0,n.jsxDEV)(e.p,{children:[\"Create \",(0,n.jsxDEV)(e.code,{children:\".env\"},void 0,!1,{fileName:\"/Users/andreasthomas/github/chronark/chronark.com/content/projects/_mdx_bundler_entry_point-f941a3c8-66a7-48df-b631-0b73ab779bde.mdx\",lineNumber:172,columnNumber:11},this),\" file with your kafka secrets \",(0,n.jsxDEV)(e.code,{children:\"cp .env.example .env\"},void 0,!1,{fileName:\"/Users/andreasthomas/github/chronark/chronark.com/content/projects/_mdx_bundler_entry_point-f941a3c8-66a7-48df-b631-0b73ab779bde.mdx\",lineNumber:172,columnNumber:47},this)]},void 0,!0,{fileName:\"/Users/andreasthomas/github/chronark/chronark.com/content/projects/_mdx_bundler_entry_point-f941a3c8-66a7-48df-b631-0b73ab779bde.mdx\",lineNumber:172,columnNumber:4},this),`\n`]},void 0,!0,{fileName:\"/Users/andreasthomas/github/chronark/chronark.com/content/projects/_mdx_bundler_entry_point-f941a3c8-66a7-48df-b631-0b73ab779bde.mdx\",lineNumber:172,columnNumber:1},this),`\n`]},void 0,!0,{fileName:\"/Users/andreasthomas/github/chronark/chronark.com/content/projects/_mdx_bundler_entry_point-f941a3c8-66a7-48df-b631-0b73ab779bde.mdx\",lineNumber:164,columnNumber:1},this),`\n`,(0,n.jsxDEV)(e.h2,{id:\"running-tests\",children:[(0,n.jsxDEV)(e.a,{className:\"subheading-anchor\",\"aria-label\":\"Link to section\",href:\"#running-tests\",children:(0,n.jsxDEV)(e.span,{className:\"icon icon-link\"},void 0,!1,{fileName:\"/Users/andreasthomas/github/chronark/chronark.com/content/projects/_mdx_bundler_entry_point-f941a3c8-66a7-48df-b631-0b73ab779bde.mdx\"},this)},void 0,!1,{fileName:\"/Users/andreasthomas/github/chronark/chronark.com/content/projects/_mdx_bundler_entry_point-f941a3c8-66a7-48df-b631-0b73ab779bde.mdx\"},this),\"Running tests\"]},void 0,!0,{fileName:\"/Users/andreasthomas/github/chronark/chronark.com/content/projects/_mdx_bundler_entry_point-f941a3c8-66a7-48df-b631-0b73ab779bde.mdx\",lineNumber:174,columnNumber:1},this),`\n`,(0,n.jsxDEV)(e.div,{\"data-rehype-pretty-code-fragment\":\"\",children:(0,n.jsxDEV)(e.pre,{\"data-language\":\"bash\",\"data-theme\":\"default\",children:(0,n.jsxDEV)(e.code,{\"data-language\":\"bash\",\"data-theme\":\"default\",children:(0,n.jsxDEV)(e.span,{className:\"line\",children:[(0,n.jsxDEV)(e.span,{style:{color:\"#B392F0\"},children:\"pnpm\"},void 0,!1,{fileName:\"/Users/andreasthomas/github/chronark/chronark.com/content/projects/_mdx_bundler_entry_point-f941a3c8-66a7-48df-b631-0b73ab779bde.mdx\",lineNumber:1,columnNumber:104},this),(0,n.jsxDEV)(e.span,{style:{color:\"#E1E4E8\"},children:\" \"},void 0,!1,{fileName:\"/Users/andreasthomas/github/chronark/chronark.com/content/projects/_mdx_bundler_entry_point-f941a3c8-66a7-48df-b631-0b73ab779bde.mdx\",lineNumber:1,columnNumber:144},this),(0,n.jsxDEV)(e.span,{style:{color:\"#9ECBFF\"},children:\"test\"},void 0,!1,{fileName:\"/Users/andreasthomas/github/chronark/chronark.com/content/projects/_mdx_bundler_entry_point-f941a3c8-66a7-48df-b631-0b73ab779bde.mdx\",lineNumber:1,columnNumber:181},this)]},void 0,!0,{fileName:\"/Users/andreasthomas/github/chronark/chronark.com/content/projects/_mdx_bundler_entry_point-f941a3c8-66a7-48df-b631-0b73ab779bde.mdx\",lineNumber:1,columnNumber:85},this)},void 0,!1,{fileName:\"/Users/andreasthomas/github/chronark/chronark.com/content/projects/_mdx_bundler_entry_point-f941a3c8-66a7-48df-b631-0b73ab779bde.mdx\",lineNumber:1,columnNumber:79},this)},void 0,!1,{fileName:\"/Users/andreasthomas/github/chronark/chronark.com/content/projects/_mdx_bundler_entry_point-f941a3c8-66a7-48df-b631-0b73ab779bde.mdx\",lineNumber:1,columnNumber:1},this)},void 0,!1,{fileName:\"/Users/andreasthomas/github/chronark/chronark.com/content/projects/_mdx_bundler_entry_point-f941a3c8-66a7-48df-b631-0b73ab779bde.mdx\",lineNumber:176,columnNumber:1},this)]},void 0,!0,{fileName:\"/Users/andreasthomas/github/chronark/chronark.com/content/projects/_mdx_bundler_entry_point-f941a3c8-66a7-48df-b631-0b73ab779bde.mdx\",lineNumber:1,columnNumber:1},this)}function Nn(m={}){let{wrapper:e}=m.components||{};return e?(0,n.jsxDEV)(e,Object.assign({},m,{children:(0,n.jsxDEV)(Fe,m,void 0,!1,{fileName:\"/Users/andreasthomas/github/chronark/chronark.com/content/projects/_mdx_bundler_entry_point-f941a3c8-66a7-48df-b631-0b73ab779bde.mdx\"},this)}),void 0,!1,{fileName:\"/Users/andreasthomas/github/chronark/chronark.com/content/projects/_mdx_bundler_entry_point-f941a3c8-66a7-48df-b631-0b73ab779bde.mdx\"},this):Fe(m)}var kn=Nn;return _n(xn);})();\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/upstash-kafka.mdx",
|
|
"_raw": {
|
|
"sourceFilePath": "projects/upstash-kafka.mdx",
|
|
"sourceFileName": "upstash-kafka.mdx",
|
|
"sourceFileDir": "projects",
|
|
"contentType": "mdx",
|
|
"flattenedPath": "projects/upstash-kafka"
|
|
},
|
|
"type": "Project",
|
|
"path": "/projects/upstash-kafka",
|
|
"slug": "upstash-kafka"
|
|
},
|
|
"documentHash": "1679819588795",
|
|
"hasWarnings": false,
|
|
"documentTypeName": "Project"
|
|
},
|
|
"projects/upstash-qstash-sdk.mdx": {
|
|
"document": {
|
|
"published": true,
|
|
"title": "@upstash/qstash",
|
|
"description": "A typescript client and consumer for QStash.",
|
|
"date": "2022-07-18T00:00:00.000Z",
|
|
"url": "https://upstash.com/qstash",
|
|
"repository": "upstash/sdk-qstash-ts",
|
|
"body": {
|
|
"raw": "\n\n@upstash/qstash is the official client and consumer for [QStash](https://chronark.com/projects/qstash).\n\nQStash is the message broker between your serverless apps. You send an HTTP\nrequest to QStash, that includes a destination, a payload and optional settings.\nWe durably store your message and will deliver it to the destination API via\nHTTP. In case the destination is not ready to receive the message, we will retry\nthe message later, to guarentee at-least-once delivery.\n\n```bash\nnpm install @upstash/qstash\n```\n",
|
|
"code": "var Component=(()=>{var h=Object.create;var r=Object.defineProperty;var p=Object.getOwnPropertyDescriptor;var u=Object.getOwnPropertyNames;var m=Object.getPrototypeOf,y=Object.prototype.hasOwnProperty;var g=(t,e)=>()=>(e||t((e={exports:{}}).exports,e),e.exports),f=(t,e)=>{for(var a in e)r(t,a,{get:e[a],enumerable:!0})},i=(t,e,a,o)=>{if(e&&typeof e==\"object\"||typeof e==\"function\")for(let n of u(e))!y.call(t,n)&&n!==a&&r(t,n,{get:()=>e[n],enumerable:!(o=p(e,n))||o.enumerable});return t};var x=(t,e,a)=>(a=t!=null?h(m(t)):{},i(e||!t||!t.__esModule?r(a,\"default\",{value:t,enumerable:!0}):a,t)),b=t=>i(r({},\"__esModule\",{value:!0}),t);var c=g((_,l)=>{l.exports=_jsx_runtime});var q={};f(q,{default:()=>E,frontmatter:()=>j});var s=x(c()),j={title:\"@upstash/qstash\",description:\"A typescript client and consumer for QStash.\",date:\"2022-07-18\",url:\"https://upstash.com/qstash\",repository:\"upstash/sdk-qstash-ts\",published:!0};function d(t){let e=Object.assign({p:\"p\",a:\"a\",div:\"div\",pre:\"pre\",code:\"code\",span:\"span\"},t.components);return(0,s.jsxs)(s.Fragment,{children:[(0,s.jsxs)(e.p,{children:[\"@upstash/qstash is the official client and consumer for \",(0,s.jsx)(e.a,{href:\"https://chronark.com/projects/qstash\",children:\"QStash\"}),\".\"]}),`\n`,(0,s.jsx)(e.p,{children:`QStash is the message broker between your serverless apps. You send an HTTP\nrequest to QStash, that includes a destination, a payload and optional settings.\nWe durably store your message and will deliver it to the destination API via\nHTTP. In case the destination is not ready to receive the message, we will retry\nthe message later, to guarentee at-least-once delivery.`}),`\n`,(0,s.jsx)(e.div,{\"data-rehype-pretty-code-fragment\":\"\",children:(0,s.jsx)(e.pre,{\"data-language\":\"bash\",\"data-theme\":\"default\",children:(0,s.jsx)(e.code,{\"data-language\":\"bash\",\"data-theme\":\"default\",children:(0,s.jsxs)(e.span,{className:\"line\",children:[(0,s.jsx)(e.span,{style:{color:\"#B392F0\"},children:\"npm\"}),(0,s.jsx)(e.span,{style:{color:\"#E1E4E8\"},children:\" \"}),(0,s.jsx)(e.span,{style:{color:\"#9ECBFF\"},children:\"install\"}),(0,s.jsx)(e.span,{style:{color:\"#E1E4E8\"},children:\" \"}),(0,s.jsx)(e.span,{style:{color:\"#9ECBFF\"},children:\"@upstash/qstash\"})]})})})})]})}function v(t={}){let{wrapper:e}=t.components||{};return e?(0,s.jsx)(e,Object.assign({},t,{children:(0,s.jsx)(d,t)})):d(t)}var E=v;return b(q);})();\n;return Component;"
|
|
},
|
|
"_id": "projects/upstash-qstash-sdk.mdx",
|
|
"_raw": {
|
|
"sourceFilePath": "projects/upstash-qstash-sdk.mdx",
|
|
"sourceFileName": "upstash-qstash-sdk.mdx",
|
|
"sourceFileDir": "projects",
|
|
"contentType": "mdx",
|
|
"flattenedPath": "projects/upstash-qstash-sdk"
|
|
},
|
|
"type": "Project",
|
|
"path": "/projects/upstash-qstash-sdk",
|
|
"slug": "upstash-qstash-sdk"
|
|
},
|
|
"documentHash": "1679830397516",
|
|
"hasWarnings": false,
|
|
"documentTypeName": "Project"
|
|
},
|
|
"projects/upstash-ratelimit.mdx": {
|
|
"document": {
|
|
"published": true,
|
|
"title": "@upstash/ratelimit",
|
|
"description": "Ratelimiting library for serverless and edge runtimes. Built on top of Upstash Redis.",
|
|
"date": "2022-06-06T00:00:00.000Z",
|
|
"url": "https://upstash.com/ratelimit",
|
|
"repository": "upstash/ratelimit",
|
|
"body": {
|
|
"raw": "\nIn today's digital age, serverless computing has become increasingly popular due to its scalability and cost-efficiency. One of the challenges of serverless computing is to manage resources efficiently, and one critical aspect of this is rate limiting. Rate limiting is a technique that limits the number of requests a client can make to a server over a given period. This technique can prevent abuse, improve performance, and reduce costs. One npm package that helps implement rate limiting for serverless applications is @upstash/ratelimit, built on top of Upstash Redis.\n\nUpstash is a managed Redis-compatible database service designed for serverless applications.\n\n`@upstash/ratelimit` is an npm package that provides serverless rate limiting using Upstash Redis. The package offers a simple API that can be used to limit the number of requests a client can make within a given time frame. The following algorithms are supported:\n\n- Fixed window\n- Sliding window\n- Leaky bucket\n\n\nUsing `@upstash/ratelimit` is straightforward. First, you need to install the package using npm:\n\n```bash\nnpm install @upstash/ratelimit @upstash/redis\n```\nThen, you can use it in your application:\n\n```ts\nimport { Ratelimit } from \"@upstash/ratelimit\"\nimport { Redis } from \"@upstash/redis\"\n\nconst ratelimit = new Ratelimit({\n redis: new Redis({\n url: \"\",\n token: \"\"\n }),\n limiter: Ratelimit.slidingWindow(10, \"10s\"),\n analytics: true\n})\n\n\n// Check if the client has exceeded the rate limit\nconst { success } = await ratelimit.limit(\"identifier\")\n```\n\nIn the code above, we initialize Upstash with our Upstash Redis credentials and define our rate limiting rules. We then call the `limit` function, passing the identifier. The function returns a Promise that resolves with `success` and some other useful data.\n\n`@upstash/ratelimit` is a useful npm package for serverless rate limiting that simplifies the process of implementing rate limiting for serverless applications. The package is built on top of Upstash Redis, which provides a complete solution for serverless applications. With `@upstash/ratelimit`, serverless developers can easily implement rate limiting, which can help prevent abuse, improve performance, and reduce costs.",
|
|
"code": "var Component=(()=>{var ir=Object.create;var S=Object.defineProperty;var lr=Object.getOwnPropertyDescriptor;var ur=Object.getOwnPropertyNames;var dr=Object.getPrototypeOf,mr=Object.prototype.hasOwnProperty;var z=(u,r)=>()=>(r||u((r={exports:{}}).exports,r),r.exports),hr=(u,r)=>{for(var p in r)S(u,p,{get:r[p],enumerable:!0})},ke=(u,r,p,g)=>{if(r&&typeof r==\"object\"||typeof r==\"function\")for(let y of ur(r))!mr.call(u,y)&&y!==p&&S(u,y,{get:()=>r[y],enumerable:!(g=lr(r,y))||g.enumerable});return u};var fr=(u,r,p)=>(p=u!=null?ir(dr(u)):{},ke(r||!u||!u.__esModule?S(p,\"default\",{value:u,enumerable:!0}):p,u)),br=u=>ke(S({},\"__esModule\",{value:!0}),u);var ve=z((kr,xe)=>{xe.exports=React});var Ee=z(G=>{\"use strict\";(function(){\"use strict\";var u=ve(),r=Symbol.for(\"react.element\"),p=Symbol.for(\"react.portal\"),g=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\"),R=Symbol.for(\"react.forward_ref\"),D=Symbol.for(\"react.suspense\"),A=Symbol.for(\"react.suspense_list\"),F=Symbol.for(\"react.memo\"),B=Symbol.for(\"react.lazy\"),Fe=Symbol.for(\"react.offscreen\"),J=Symbol.iterator,Te=\"@@iterator\";function we(e){if(e===null||typeof e!=\"object\")return null;var a=J&&e[J]||e[Te];return typeof a==\"function\"?a:null}var x=u.__SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED;function h(e){{for(var a=arguments.length,t=new Array(a>1?a-1:0),c=1;c<a;c++)t[c-1]=arguments[c];Ce(\"error\",e,t)}}function Ce(e,a,t){{var c=x.ReactDebugCurrentFrame,i=c.getStackAddendum();i!==\"\"&&(a+=\"%s\",t=t.concat([i]));var l=t.map(function(s){return String(s)});l.unshift(\"Warning: \"+a),Function.prototype.apply.call(console[e],console,l)}}var Oe=!1,Pe=!1,Se=!1,De=!1,Ae=!1,Z;Z=Symbol.for(\"react.module.reference\");function Be(e){return!!(typeof e==\"string\"||typeof e==\"function\"||e===g||e===X||Ae||e===y||e===D||e===A||De||e===Fe||Oe||Pe||Se||typeof e==\"object\"&&e!==null&&(e.$$typeof===B||e.$$typeof===F||e.$$typeof===K||e.$$typeof===H||e.$$typeof===R||e.$$typeof===Z||e.getModuleId!==void 0))}function Ie(e,a,t){var c=e.displayName;if(c)return c;var i=a.displayName||a.name||\"\";return i!==\"\"?t+\"(\"+i+\")\":t}function Q(e){return e.displayName||\"Context\"}function _(e){if(e==null)return null;if(typeof e.tag==\"number\"&&h(\"Received an unexpected object in getComponentNameFromType(). This is likely a bug in React. Please file an issue.\"),typeof e==\"function\")return e.displayName||e.name||null;if(typeof e==\"string\")return e;switch(e){case g:return\"Fragment\";case p:return\"Portal\";case X:return\"Profiler\";case y:return\"StrictMode\";case D:return\"Suspense\";case A:return\"SuspenseList\"}if(typeof e==\"object\")switch(e.$$typeof){case H:var a=e;return Q(a)+\".Consumer\";case K:var t=e;return Q(t._context)+\".Provider\";case R:return Ie(e,e.render,\"ForwardRef\");case F:var c=e.displayName||null;return c!==null?c:_(e.type)||\"Memo\";case B:{var i=e,l=i._payload,s=i._init;try{return _(s(l))}catch{return null}}}return null}var k=Object.assign,j=0,ee,re,ne,ae,te,ce,oe;function se(){}se.__reactDisabledLog=!0;function We(){{if(j===0){ee=console.log,re=console.info,ne=console.warn,ae=console.error,te=console.group,ce=console.groupCollapsed,oe=console.groupEnd;var e={configurable:!0,enumerable:!0,value:se,writable:!0};Object.defineProperties(console,{info:e,log:e,warn:e,error:e,group:e,groupCollapsed:e,groupEnd:e})}j++}}function Ye(){{if(j--,j===0){var e={configurable:!0,enumerable:!0,writable:!0};Object.defineProperties(console,{log:k({},e,{value:ee}),info:k({},e,{value:re}),warn:k({},e,{value:ne}),error:k({},e,{value:ae}),group:k({},e,{value:te}),groupCollapsed:k({},e,{value:ce}),groupEnd:k({},e,{value:oe})})}j<0&&h(\"disabledDepth fell below zero. This is a bug in React. Please file an issue.\")}}var I=x.ReactCurrentDispatcher,W;function T(e,a,t){{if(W===void 0)try{throw Error()}catch(i){var c=i.stack.trim().match(/\\n( *(at )?)/);W=c&&c[1]||\"\"}return`\n`+W+e}}var Y=!1,w;{var $e=typeof WeakMap==\"function\"?WeakMap:Map;w=new $e}function ie(e,a){if(!e||Y)return\"\";{var t=w.get(e);if(t!==void 0)return t}var c;Y=!0;var i=Error.prepareStackTrace;Error.prepareStackTrace=void 0;var l;l=I.current,I.current=null,We();try{if(a){var s=function(){throw Error()};if(Object.defineProperty(s.prototype,\"props\",{set:function(){throw Error()}}),typeof Reflect==\"object\"&&Reflect.construct){try{Reflect.construct(s,[])}catch(N){c=N}Reflect.construct(e,[],s)}else{try{s.call()}catch(N){c=N}e.call(s.prototype)}}else{try{throw Error()}catch(N){c=N}e()}}catch(N){if(N&&c&&typeof N.stack==\"string\"){for(var o=N.stack.split(`\n`),f=c.stack.split(`\n`),d=o.length-1,m=f.length-1;d>=1&&m>=0&&o[d]!==f[m];)m--;for(;d>=1&&m>=0;d--,m--)if(o[d]!==f[m]){if(d!==1||m!==1)do if(d--,m--,m<0||o[d]!==f[m]){var b=`\n`+o[d].replace(\" at new \",\" at \");return e.displayName&&b.includes(\"<anonymous>\")&&(b=b.replace(\"<anonymous>\",e.displayName)),typeof e==\"function\"&&w.set(e,b),b}while(d>=1&&m>=0);break}}}finally{Y=!1,I.current=l,Ye(),Error.prepareStackTrace=i}var E=e?e.displayName||e.name:\"\",ge=E?T(E):\"\";return typeof e==\"function\"&&w.set(e,ge),ge}function Me(e,a,t){return ie(e,!1)}function Ve(e){var a=e.prototype;return!!(a&&a.isReactComponent)}function C(e,a,t){if(e==null)return\"\";if(typeof e==\"function\")return ie(e,Ve(e));if(typeof e==\"string\")return T(e);switch(e){case D:return T(\"Suspense\");case A:return T(\"SuspenseList\")}if(typeof e==\"object\")switch(e.$$typeof){case R:return Me(e.render);case F:return C(e.type,a,t);case B:{var c=e,i=c._payload,l=c._init;try{return C(l(i),a,t)}catch{}}}return\"\"}var O=Object.prototype.hasOwnProperty,le={},ue=x.ReactDebugCurrentFrame;function P(e){if(e){var a=e._owner,t=C(e.type,e._source,a?a.type:null);ue.setExtraStackFrame(t)}else ue.setExtraStackFrame(null)}function Le(e,a,t,c,i){{var l=Function.call.bind(O);for(var s in e)if(l(e,s)){var o=void 0;try{if(typeof e[s]!=\"function\"){var f=Error((c||\"React class\")+\": \"+t+\" type `\"+s+\"` is invalid; it must be a function, usually from the `prop-types` package, but received `\"+typeof e[s]+\"`.This often happens because of typos such as `PropTypes.function` instead of `PropTypes.func`.\");throw f.name=\"Invariant Violation\",f}o=e[s](a,s,c,t,null,\"SECRET_DO_NOT_PASS_THIS_OR_YOU_WILL_BE_FIRED\")}catch(d){o=d}o&&!(o instanceof Error)&&(P(i),h(\"%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).\",c||\"React class\",t,s,typeof o),P(null)),o instanceof Error&&!(o.message in le)&&(le[o.message]=!0,P(i),h(\"Failed %s type: %s\",t,o.message),P(null))}}}var qe=Array.isArray;function $(e){return qe(e)}function ze(e){{var a=typeof Symbol==\"function\"&&Symbol.toStringTag,t=a&&e[Symbol.toStringTag]||e.constructor.name||\"Object\";return t}}function Ge(e){try{return de(e),!1}catch{return!0}}function de(e){return\"\"+e}function me(e){if(Ge(e))return h(\"The provided key is an unsupported type %s. This value must be coerced to a string before before using it here.\",ze(e)),de(e)}var U=x.ReactCurrentOwner,Xe={key:!0,ref:!0,__self:!0,__source:!0},he,fe,M;M={};function Ke(e){if(O.call(e,\"ref\")){var a=Object.getOwnPropertyDescriptor(e,\"ref\").get;if(a&&a.isReactWarning)return!1}return e.ref!==void 0}function He(e){if(O.call(e,\"key\")){var a=Object.getOwnPropertyDescriptor(e,\"key\").get;if(a&&a.isReactWarning)return!1}return e.key!==void 0}function Je(e,a){if(typeof e.ref==\"string\"&&U.current&&a&&U.current.stateNode!==a){var t=_(U.current.type);M[t]||(h('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',_(U.current.type),e.ref),M[t]=!0)}}function Ze(e,a){{var t=function(){he||(he=!0,h(\"%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(e,\"key\",{get:t,configurable:!0})}}function Qe(e,a){{var t=function(){fe||(fe=!0,h(\"%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(e,\"ref\",{get:t,configurable:!0})}}var er=function(e,a,t,c,i,l,s){var o={$$typeof:r,type:e,key:a,ref:t,props:s,_owner:l};return o._store={},Object.defineProperty(o._store,\"validated\",{configurable:!1,enumerable:!1,writable:!0,value:!1}),Object.defineProperty(o,\"_self\",{configurable:!1,enumerable:!1,writable:!1,value:c}),Object.defineProperty(o,\"_source\",{configurable:!1,enumerable:!1,writable:!1,value:i}),Object.freeze&&(Object.freeze(o.props),Object.freeze(o)),o};function rr(e,a,t,c,i){{var l,s={},o=null,f=null;t!==void 0&&(me(t),o=\"\"+t),He(a)&&(me(a.key),o=\"\"+a.key),Ke(a)&&(f=a.ref,Je(a,i));for(l in a)O.call(a,l)&&!Xe.hasOwnProperty(l)&&(s[l]=a[l]);if(e&&e.defaultProps){var d=e.defaultProps;for(l in d)s[l]===void 0&&(s[l]=d[l])}if(o||f){var m=typeof e==\"function\"?e.displayName||e.name||\"Unknown\":e;o&&Ze(s,m),f&&Qe(s,m)}return er(e,o,f,i,c,U.current,s)}}var V=x.ReactCurrentOwner,be=x.ReactDebugCurrentFrame;function v(e){if(e){var a=e._owner,t=C(e.type,e._source,a?a.type:null);be.setExtraStackFrame(t)}else be.setExtraStackFrame(null)}var L;L=!1;function q(e){return typeof e==\"object\"&&e!==null&&e.$$typeof===r}function pe(){{if(V.current){var e=_(V.current.type);if(e)return`\n\nCheck the render method of \\``+e+\"`.\"}return\"\"}}function nr(e){{if(e!==void 0){var a=e.fileName.replace(/^.*[\\\\\\/]/,\"\"),t=e.lineNumber;return`\n\nCheck your code at `+a+\":\"+t+\".\"}return\"\"}}var _e={};function ar(e){{var a=pe();if(!a){var t=typeof e==\"string\"?e:e.displayName||e.name;t&&(a=`\n\nCheck the top-level render call using <`+t+\">.\")}return a}}function Ne(e,a){{if(!e._store||e._store.validated||e.key!=null)return;e._store.validated=!0;var t=ar(a);if(_e[t])return;_e[t]=!0;var c=\"\";e&&e._owner&&e._owner!==V.current&&(c=\" It was passed a child from \"+_(e._owner.type)+\".\"),v(e),h('Each child in a list should have a unique \"key\" prop.%s%s See https://reactjs.org/link/warning-keys for more information.',t,c),v(null)}}function ye(e,a){{if(typeof e!=\"object\")return;if($(e))for(var t=0;t<e.length;t++){var c=e[t];q(c)&&Ne(c,a)}else if(q(e))e._store&&(e._store.validated=!0);else if(e){var i=we(e);if(typeof i==\"function\"&&i!==e.entries)for(var l=i.call(e),s;!(s=l.next()).done;)q(s.value)&&Ne(s.value,a)}}}function tr(e){{var a=e.type;if(a==null||typeof a==\"string\")return;var t;if(typeof a==\"function\")t=a.propTypes;else if(typeof a==\"object\"&&(a.$$typeof===R||a.$$typeof===F))t=a.propTypes;else return;if(t){var c=_(a);Le(t,e.props,\"prop\",c,e)}else if(a.PropTypes!==void 0&&!L){L=!0;var i=_(a);h(\"Component %s declared `PropTypes` instead of `propTypes`. Did you misspell the property assignment?\",i||\"Unknown\")}typeof a.getDefaultProps==\"function\"&&!a.getDefaultProps.isReactClassApproved&&h(\"getDefaultProps is only used on classic React.createClass definitions. Use a static property named `defaultProps` instead.\")}}function cr(e){{for(var a=Object.keys(e.props),t=0;t<a.length;t++){var c=a[t];if(c!==\"children\"&&c!==\"key\"){v(e),h(\"Invalid prop `%s` supplied to `React.Fragment`. React.Fragment can only have `key` and `children` props.\",c),v(null);break}}e.ref!==null&&(v(e),h(\"Invalid attribute `ref` supplied to `React.Fragment`.\"),v(null))}}function or(e,a,t,c,i,l){{var s=Be(e);if(!s){var o=\"\";(e===void 0||typeof e==\"object\"&&e!==null&&Object.keys(e).length===0)&&(o+=\" 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=nr(i);f?o+=f:o+=pe();var d;e===null?d=\"null\":$(e)?d=\"array\":e!==void 0&&e.$$typeof===r?(d=\"<\"+(_(e.type)||\"Unknown\")+\" />\",o=\" Did you accidentally export a JSX literal instead of a component?\"):d=typeof e,h(\"React.jsx: type is invalid -- expected a string (for built-in components) or a class/function (for composite components) but got: %s.%s\",d,o)}var m=rr(e,a,t,i,l);if(m==null)return m;if(s){var b=a.children;if(b!==void 0)if(c)if($(b)){for(var E=0;E<b.length;E++)ye(b[E],e);Object.freeze&&Object.freeze(b)}else h(\"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(b,e)}return e===g?cr(m):tr(m),m}}var sr=or;G.Fragment=g,G.jsxDEV=sr})()});var Ue=z((vr,je)=>{\"use strict\";je.exports=Ee()});var yr={};hr(yr,{default:()=>Nr,frontmatter:()=>pr});var n=fr(Ue()),pr={title:\"@upstash/ratelimit\",description:\"Ratelimiting library for serverless and edge runtimes. Built on top of Upstash Redis.\",date:\"2022-06-06\",url:\"https://upstash.com/ratelimit\",repository:\"upstash/ratelimit\",published:!0};function Re(u){let r=Object.assign({p:\"p\",code:\"code\",ul:\"ul\",li:\"li\",div:\"div\",pre:\"pre\",span:\"span\"},u.components);return(0,n.jsxDEV)(n.Fragment,{children:[(0,n.jsxDEV)(r.p,{children:\"In today's digital age, serverless computing has become increasingly popular due to its scalability and cost-efficiency. One of the challenges of serverless computing is to manage resources efficiently, and one critical aspect of this is rate limiting. Rate limiting is a technique that limits the number of requests a client can make to a server over a given period. This technique can prevent abuse, improve performance, and reduce costs. One npm package that helps implement rate limiting for serverless applications is @upstash/ratelimit, built on top of Upstash Redis.\"},void 0,!1,{fileName:\"/Users/andreasthomas/github/chronark/chronark.com/content/projects/_mdx_bundler_entry_point-a6c12280-860e-43f1-8b4c-80ac401a77dc.mdx\",lineNumber:11,columnNumber:1},this),`\n`,(0,n.jsxDEV)(r.p,{children:\"Upstash is a managed Redis-compatible database service designed for serverless applications.\"},void 0,!1,{fileName:\"/Users/andreasthomas/github/chronark/chronark.com/content/projects/_mdx_bundler_entry_point-a6c12280-860e-43f1-8b4c-80ac401a77dc.mdx\",lineNumber:13,columnNumber:1},this),`\n`,(0,n.jsxDEV)(r.p,{children:[(0,n.jsxDEV)(r.code,{children:\"@upstash/ratelimit\"},void 0,!1,{fileName:\"/Users/andreasthomas/github/chronark/chronark.com/content/projects/_mdx_bundler_entry_point-a6c12280-860e-43f1-8b4c-80ac401a77dc.mdx\",lineNumber:15,columnNumber:1},this),\" is an npm package that provides serverless rate limiting using Upstash Redis. The package offers a simple API that can be used to limit the number of requests a client can make within a given time frame. The following algorithms are supported:\"]},void 0,!0,{fileName:\"/Users/andreasthomas/github/chronark/chronark.com/content/projects/_mdx_bundler_entry_point-a6c12280-860e-43f1-8b4c-80ac401a77dc.mdx\",lineNumber:15,columnNumber:1},this),`\n`,(0,n.jsxDEV)(r.ul,{children:[`\n`,(0,n.jsxDEV)(r.li,{children:\"Fixed window\"},void 0,!1,{fileName:\"/Users/andreasthomas/github/chronark/chronark.com/content/projects/_mdx_bundler_entry_point-a6c12280-860e-43f1-8b4c-80ac401a77dc.mdx\",lineNumber:17,columnNumber:1},this),`\n`,(0,n.jsxDEV)(r.li,{children:\"Sliding window\"},void 0,!1,{fileName:\"/Users/andreasthomas/github/chronark/chronark.com/content/projects/_mdx_bundler_entry_point-a6c12280-860e-43f1-8b4c-80ac401a77dc.mdx\",lineNumber:18,columnNumber:1},this),`\n`,(0,n.jsxDEV)(r.li,{children:\"Leaky bucket\"},void 0,!1,{fileName:\"/Users/andreasthomas/github/chronark/chronark.com/content/projects/_mdx_bundler_entry_point-a6c12280-860e-43f1-8b4c-80ac401a77dc.mdx\",lineNumber:19,columnNumber:1},this),`\n`]},void 0,!0,{fileName:\"/Users/andreasthomas/github/chronark/chronark.com/content/projects/_mdx_bundler_entry_point-a6c12280-860e-43f1-8b4c-80ac401a77dc.mdx\",lineNumber:17,columnNumber:1},this),`\n`,(0,n.jsxDEV)(r.p,{children:[\"Using \",(0,n.jsxDEV)(r.code,{children:\"@upstash/ratelimit\"},void 0,!1,{fileName:\"/Users/andreasthomas/github/chronark/chronark.com/content/projects/_mdx_bundler_entry_point-a6c12280-860e-43f1-8b4c-80ac401a77dc.mdx\",lineNumber:22,columnNumber:7},this),\" is straightforward. First, you need to install the package using npm:\"]},void 0,!0,{fileName:\"/Users/andreasthomas/github/chronark/chronark.com/content/projects/_mdx_bundler_entry_point-a6c12280-860e-43f1-8b4c-80ac401a77dc.mdx\",lineNumber:22,columnNumber:1},this),`\n`,(0,n.jsxDEV)(r.div,{\"data-rehype-pretty-code-fragment\":\"\",children:(0,n.jsxDEV)(r.pre,{\"data-language\":\"bash\",\"data-theme\":\"default\",children:(0,n.jsxDEV)(r.code,{\"data-language\":\"bash\",\"data-theme\":\"default\",children:(0,n.jsxDEV)(r.span,{className:\"line\",children:[(0,n.jsxDEV)(r.span,{style:{color:\"#B392F0\"},children:\"npm\"},void 0,!1,{fileName:\"/Users/andreasthomas/github/chronark/chronark.com/content/projects/_mdx_bundler_entry_point-a6c12280-860e-43f1-8b4c-80ac401a77dc.mdx\",lineNumber:1,columnNumber:104},this),(0,n.jsxDEV)(r.span,{style:{color:\"#E1E4E8\"},children:\" \"},void 0,!1,{fileName:\"/Users/andreasthomas/github/chronark/chronark.com/content/projects/_mdx_bundler_entry_point-a6c12280-860e-43f1-8b4c-80ac401a77dc.mdx\",lineNumber:1,columnNumber:143},this),(0,n.jsxDEV)(r.span,{style:{color:\"#9ECBFF\"},children:\"install\"},void 0,!1,{fileName:\"/Users/andreasthomas/github/chronark/chronark.com/content/projects/_mdx_bundler_entry_point-a6c12280-860e-43f1-8b4c-80ac401a77dc.mdx\",lineNumber:1,columnNumber:180},this),(0,n.jsxDEV)(r.span,{style:{color:\"#E1E4E8\"},children:\" \"},void 0,!1,{fileName:\"/Users/andreasthomas/github/chronark/chronark.com/content/projects/_mdx_bundler_entry_point-a6c12280-860e-43f1-8b4c-80ac401a77dc.mdx\",lineNumber:1,columnNumber:223},this),(0,n.jsxDEV)(r.span,{style:{color:\"#9ECBFF\"},children:\"@upstash/ratelimit\"},void 0,!1,{fileName:\"/Users/andreasthomas/github/chronark/chronark.com/content/projects/_mdx_bundler_entry_point-a6c12280-860e-43f1-8b4c-80ac401a77dc.mdx\",lineNumber:1,columnNumber:260},this),(0,n.jsxDEV)(r.span,{style:{color:\"#E1E4E8\"},children:\" \"},void 0,!1,{fileName:\"/Users/andreasthomas/github/chronark/chronark.com/content/projects/_mdx_bundler_entry_point-a6c12280-860e-43f1-8b4c-80ac401a77dc.mdx\",lineNumber:1,columnNumber:314},this),(0,n.jsxDEV)(r.span,{style:{color:\"#9ECBFF\"},children:\"@upstash/redis\"},void 0,!1,{fileName:\"/Users/andreasthomas/github/chronark/chronark.com/content/projects/_mdx_bundler_entry_point-a6c12280-860e-43f1-8b4c-80ac401a77dc.mdx\",lineNumber:1,columnNumber:351},this)]},void 0,!0,{fileName:\"/Users/andreasthomas/github/chronark/chronark.com/content/projects/_mdx_bundler_entry_point-a6c12280-860e-43f1-8b4c-80ac401a77dc.mdx\",lineNumber:1,columnNumber:85},this)},void 0,!1,{fileName:\"/Users/andreasthomas/github/chronark/chronark.com/content/projects/_mdx_bundler_entry_point-a6c12280-860e-43f1-8b4c-80ac401a77dc.mdx\",lineNumber:1,columnNumber:79},this)},void 0,!1,{fileName:\"/Users/andreasthomas/github/chronark/chronark.com/content/projects/_mdx_bundler_entry_point-a6c12280-860e-43f1-8b4c-80ac401a77dc.mdx\",lineNumber:1,columnNumber:1},this)},void 0,!1,{fileName:\"/Users/andreasthomas/github/chronark/chronark.com/content/projects/_mdx_bundler_entry_point-a6c12280-860e-43f1-8b4c-80ac401a77dc.mdx\",lineNumber:24,columnNumber:1},this),`\n`,(0,n.jsxDEV)(r.p,{children:\"Then, you can use it in your application:\"},void 0,!1,{fileName:\"/Users/andreasthomas/github/chronark/chronark.com/content/projects/_mdx_bundler_entry_point-a6c12280-860e-43f1-8b4c-80ac401a77dc.mdx\",lineNumber:27,columnNumber:1},this),`\n`,(0,n.jsxDEV)(r.div,{\"data-rehype-pretty-code-fragment\":\"\",children:(0,n.jsxDEV)(r.pre,{\"data-language\":\"ts\",\"data-theme\":\"default\",children:(0,n.jsxDEV)(r.code,{\"data-language\":\"ts\",\"data-theme\":\"default\",children:[(0,n.jsxDEV)(r.span,{className:\"line\",children:[(0,n.jsxDEV)(r.span,{style:{color:\"#F97583\"},children:\"import\"},void 0,!1,{fileName:\"/Users/andreasthomas/github/chronark/chronark.com/content/projects/_mdx_bundler_entry_point-a6c12280-860e-43f1-8b4c-80ac401a77dc.mdx\",lineNumber:1,columnNumber:104},this),(0,n.jsxDEV)(r.span,{style:{color:\"#E1E4E8\"},children:\" { Ratelimit } \"},void 0,!1,{fileName:\"/Users/andreasthomas/github/chronark/chronark.com/content/projects/_mdx_bundler_entry_point-a6c12280-860e-43f1-8b4c-80ac401a77dc.mdx\",lineNumber:1,columnNumber:146},this),(0,n.jsxDEV)(r.span,{style:{color:\"#F97583\"},children:\"from\"},void 0,!1,{fileName:\"/Users/andreasthomas/github/chronark/chronark.com/content/projects/_mdx_bundler_entry_point-a6c12280-860e-43f1-8b4c-80ac401a77dc.mdx\",lineNumber:1,columnNumber:197},this),(0,n.jsxDEV)(r.span,{style:{color:\"#E1E4E8\"},children:\" \"},void 0,!1,{fileName:\"/Users/andreasthomas/github/chronark/chronark.com/content/projects/_mdx_bundler_entry_point-a6c12280-860e-43f1-8b4c-80ac401a77dc.mdx\",lineNumber:1,columnNumber:237},this),(0,n.jsxDEV)(r.span,{style:{color:\"#9ECBFF\"},children:'\"@upstash/ratelimit\"'},void 0,!1,{fileName:\"/Users/andreasthomas/github/chronark/chronark.com/content/projects/_mdx_bundler_entry_point-a6c12280-860e-43f1-8b4c-80ac401a77dc.mdx\",lineNumber:1,columnNumber:274},this)]},void 0,!0,{fileName:\"/Users/andreasthomas/github/chronark/chronark.com/content/projects/_mdx_bundler_entry_point-a6c12280-860e-43f1-8b4c-80ac401a77dc.mdx\",lineNumber:1,columnNumber:85},this),`\n`,(0,n.jsxDEV)(r.span,{className:\"line\",children:[(0,n.jsxDEV)(r.span,{style:{color:\"#F97583\"},children:\"import\"},void 0,!1,{fileName:\"/Users/andreasthomas/github/chronark/chronark.com/content/projects/_mdx_bundler_entry_point-a6c12280-860e-43f1-8b4c-80ac401a77dc.mdx\",lineNumber:2,columnNumber:20},this),(0,n.jsxDEV)(r.span,{style:{color:\"#E1E4E8\"},children:\" { Redis } \"},void 0,!1,{fileName:\"/Users/andreasthomas/github/chronark/chronark.com/content/projects/_mdx_bundler_entry_point-a6c12280-860e-43f1-8b4c-80ac401a77dc.mdx\",lineNumber:2,columnNumber:62},this),(0,n.jsxDEV)(r.span,{style:{color:\"#F97583\"},children:\"from\"},void 0,!1,{fileName:\"/Users/andreasthomas/github/chronark/chronark.com/content/projects/_mdx_bundler_entry_point-a6c12280-860e-43f1-8b4c-80ac401a77dc.mdx\",lineNumber:2,columnNumber:109},this),(0,n.jsxDEV)(r.span,{style:{color:\"#E1E4E8\"},children:\" \"},void 0,!1,{fileName:\"/Users/andreasthomas/github/chronark/chronark.com/content/projects/_mdx_bundler_entry_point-a6c12280-860e-43f1-8b4c-80ac401a77dc.mdx\",lineNumber:2,columnNumber:149},this),(0,n.jsxDEV)(r.span,{style:{color:\"#9ECBFF\"},children:'\"@upstash/redis\"'},void 0,!1,{fileName:\"/Users/andreasthomas/github/chronark/chronark.com/content/projects/_mdx_bundler_entry_point-a6c12280-860e-43f1-8b4c-80ac401a77dc.mdx\",lineNumber:2,columnNumber:186},this)]},void 0,!0,{fileName:\"/Users/andreasthomas/github/chronark/chronark.com/content/projects/_mdx_bundler_entry_point-a6c12280-860e-43f1-8b4c-80ac401a77dc.mdx\",lineNumber:2,columnNumber:1},this),`\n`,(0,n.jsxDEV)(r.span,{className:\"line\",children:\" \"},void 0,!1,{fileName:\"/Users/andreasthomas/github/chronark/chronark.com/content/projects/_mdx_bundler_entry_point-a6c12280-860e-43f1-8b4c-80ac401a77dc.mdx\",lineNumber:3,columnNumber:1},this),`\n`,(0,n.jsxDEV)(r.span,{className:\"line\",children:[(0,n.jsxDEV)(r.span,{style:{color:\"#F97583\"},children:\"const\"},void 0,!1,{fileName:\"/Users/andreasthomas/github/chronark/chronark.com/content/projects/_mdx_bundler_entry_point-a6c12280-860e-43f1-8b4c-80ac401a77dc.mdx\",lineNumber:4,columnNumber:20},this),(0,n.jsxDEV)(r.span,{style:{color:\"#E1E4E8\"},children:\" \"},void 0,!1,{fileName:\"/Users/andreasthomas/github/chronark/chronark.com/content/projects/_mdx_bundler_entry_point-a6c12280-860e-43f1-8b4c-80ac401a77dc.mdx\",lineNumber:4,columnNumber:61},this),(0,n.jsxDEV)(r.span,{style:{color:\"#79B8FF\"},children:\"ratelimit\"},void 0,!1,{fileName:\"/Users/andreasthomas/github/chronark/chronark.com/content/projects/_mdx_bundler_entry_point-a6c12280-860e-43f1-8b4c-80ac401a77dc.mdx\",lineNumber:4,columnNumber:98},this),(0,n.jsxDEV)(r.span,{style:{color:\"#E1E4E8\"},children:\" \"},void 0,!1,{fileName:\"/Users/andreasthomas/github/chronark/chronark.com/content/projects/_mdx_bundler_entry_point-a6c12280-860e-43f1-8b4c-80ac401a77dc.mdx\",lineNumber:4,columnNumber:143},this),(0,n.jsxDEV)(r.span,{style:{color:\"#F97583\"},children:\"=\"},void 0,!1,{fileName:\"/Users/andreasthomas/github/chronark/chronark.com/content/projects/_mdx_bundler_entry_point-a6c12280-860e-43f1-8b4c-80ac401a77dc.mdx\",lineNumber:4,columnNumber:180},this),(0,n.jsxDEV)(r.span,{style:{color:\"#E1E4E8\"},children:\" \"},void 0,!1,{fileName:\"/Users/andreasthomas/github/chronark/chronark.com/content/projects/_mdx_bundler_entry_point-a6c12280-860e-43f1-8b4c-80ac401a77dc.mdx\",lineNumber:4,columnNumber:217},this),(0,n.jsxDEV)(r.span,{style:{color:\"#F97583\"},children:\"new\"},void 0,!1,{fileName:\"/Users/andreasthomas/github/chronark/chronark.com/content/projects/_mdx_bundler_entry_point-a6c12280-860e-43f1-8b4c-80ac401a77dc.mdx\",lineNumber:4,columnNumber:254},this),(0,n.jsxDEV)(r.span,{style:{color:\"#E1E4E8\"},children:\" \"},void 0,!1,{fileName:\"/Users/andreasthomas/github/chronark/chronark.com/content/projects/_mdx_bundler_entry_point-a6c12280-860e-43f1-8b4c-80ac401a77dc.mdx\",lineNumber:4,columnNumber:293},this),(0,n.jsxDEV)(r.span,{style:{color:\"#B392F0\"},children:\"Ratelimit\"},void 0,!1,{fileName:\"/Users/andreasthomas/github/chronark/chronark.com/content/projects/_mdx_bundler_entry_point-a6c12280-860e-43f1-8b4c-80ac401a77dc.mdx\",lineNumber:4,columnNumber:330},this),(0,n.jsxDEV)(r.span,{style:{color:\"#E1E4E8\"},children:\"({\"},void 0,!1,{fileName:\"/Users/andreasthomas/github/chronark/chronark.com/content/projects/_mdx_bundler_entry_point-a6c12280-860e-43f1-8b4c-80ac401a77dc.mdx\",lineNumber:4,columnNumber:375},this)]},void 0,!0,{fileName:\"/Users/andreasthomas/github/chronark/chronark.com/content/projects/_mdx_bundler_entry_point-a6c12280-860e-43f1-8b4c-80ac401a77dc.mdx\",lineNumber:4,columnNumber:1},this),`\n`,(0,n.jsxDEV)(r.span,{className:\"line\",children:[(0,n.jsxDEV)(r.span,{style:{color:\"#E1E4E8\"},children:\" redis: \"},void 0,!1,{fileName:\"/Users/andreasthomas/github/chronark/chronark.com/content/projects/_mdx_bundler_entry_point-a6c12280-860e-43f1-8b4c-80ac401a77dc.mdx\",lineNumber:5,columnNumber:20},this),(0,n.jsxDEV)(r.span,{style:{color:\"#F97583\"},children:\"new\"},void 0,!1,{fileName:\"/Users/andreasthomas/github/chronark/chronark.com/content/projects/_mdx_bundler_entry_point-a6c12280-860e-43f1-8b4c-80ac401a77dc.mdx\",lineNumber:5,columnNumber:67},this),(0,n.jsxDEV)(r.span,{style:{color:\"#E1E4E8\"},children:\" \"},void 0,!1,{fileName:\"/Users/andreasthomas/github/chronark/chronark.com/content/projects/_mdx_bundler_entry_point-a6c12280-860e-43f1-8b4c-80ac401a77dc.mdx\",lineNumber:5,columnNumber:106},this),(0,n.jsxDEV)(r.span,{style:{color:\"#B392F0\"},children:\"Redis\"},void 0,!1,{fileName:\"/Users/andreasthomas/github/chronark/chronark.com/content/projects/_mdx_bundler_entry_point-a6c12280-860e-43f1-8b4c-80ac401a77dc.mdx\",lineNumber:5,columnNumber:143},this),(0,n.jsxDEV)(r.span,{style:{color:\"#E1E4E8\"},children:\"({\"},void 0,!1,{fileName:\"/Users/andreasthomas/github/chronark/chronark.com/content/projects/_mdx_bundler_entry_point-a6c12280-860e-43f1-8b4c-80ac401a77dc.mdx\",lineNumber:5,columnNumber:184},this)]},void 0,!0,{fileName:\"/Users/andreasthomas/github/chronark/chronark.com/content/projects/_mdx_bundler_entry_point-a6c12280-860e-43f1-8b4c-80ac401a77dc.mdx\",lineNumber:5,columnNumber:1},this),`\n`,(0,n.jsxDEV)(r.span,{className:\"line\",children:[(0,n.jsxDEV)(r.span,{style:{color:\"#E1E4E8\"},children:\" url: \"},void 0,!1,{fileName:\"/Users/andreasthomas/github/chronark/chronark.com/content/projects/_mdx_bundler_entry_point-a6c12280-860e-43f1-8b4c-80ac401a77dc.mdx\",lineNumber:6,columnNumber:20},this),(0,n.jsxDEV)(r.span,{style:{color:\"#9ECBFF\"},children:'\"\"'},void 0,!1,{fileName:\"/Users/andreasthomas/github/chronark/chronark.com/content/projects/_mdx_bundler_entry_point-a6c12280-860e-43f1-8b4c-80ac401a77dc.mdx\",lineNumber:6,columnNumber:69},this),(0,n.jsxDEV)(r.span,{style:{color:\"#E1E4E8\"},children:\",\"},void 0,!1,{fileName:\"/Users/andreasthomas/github/chronark/chronark.com/content/projects/_mdx_bundler_entry_point-a6c12280-860e-43f1-8b4c-80ac401a77dc.mdx\",lineNumber:6,columnNumber:117},this)]},void 0,!0,{fileName:\"/Users/andreasthomas/github/chronark/chronark.com/content/projects/_mdx_bundler_entry_point-a6c12280-860e-43f1-8b4c-80ac401a77dc.mdx\",lineNumber:6,columnNumber:1},this),`\n`,(0,n.jsxDEV)(r.span,{className:\"line\",children:[(0,n.jsxDEV)(r.span,{style:{color:\"#E1E4E8\"},children:\" token: \"},void 0,!1,{fileName:\"/Users/andreasthomas/github/chronark/chronark.com/content/projects/_mdx_bundler_entry_point-a6c12280-860e-43f1-8b4c-80ac401a77dc.mdx\",lineNumber:7,columnNumber:20},this),(0,n.jsxDEV)(r.span,{style:{color:\"#9ECBFF\"},children:'\"\"'},void 0,!1,{fileName:\"/Users/andreasthomas/github/chronark/chronark.com/content/projects/_mdx_bundler_entry_point-a6c12280-860e-43f1-8b4c-80ac401a77dc.mdx\",lineNumber:7,columnNumber:71},this)]},void 0,!0,{fileName:\"/Users/andreasthomas/github/chronark/chronark.com/content/projects/_mdx_bundler_entry_point-a6c12280-860e-43f1-8b4c-80ac401a77dc.mdx\",lineNumber:7,columnNumber:1},this),`\n`,(0,n.jsxDEV)(r.span,{className:\"line\",children:(0,n.jsxDEV)(r.span,{style:{color:\"#E1E4E8\"},children:\" }),\"},void 0,!1,{fileName:\"/Users/andreasthomas/github/chronark/chronark.com/content/projects/_mdx_bundler_entry_point-a6c12280-860e-43f1-8b4c-80ac401a77dc.mdx\",lineNumber:8,columnNumber:20},this)},void 0,!1,{fileName:\"/Users/andreasthomas/github/chronark/chronark.com/content/projects/_mdx_bundler_entry_point-a6c12280-860e-43f1-8b4c-80ac401a77dc.mdx\",lineNumber:8,columnNumber:1},this),`\n`,(0,n.jsxDEV)(r.span,{className:\"line\",children:[(0,n.jsxDEV)(r.span,{style:{color:\"#E1E4E8\"},children:\" limiter: Ratelimit.\"},void 0,!1,{fileName:\"/Users/andreasthomas/github/chronark/chronark.com/content/projects/_mdx_bundler_entry_point-a6c12280-860e-43f1-8b4c-80ac401a77dc.mdx\",lineNumber:9,columnNumber:20},this),(0,n.jsxDEV)(r.span,{style:{color:\"#B392F0\"},children:\"slidingWindow\"},void 0,!1,{fileName:\"/Users/andreasthomas/github/chronark/chronark.com/content/projects/_mdx_bundler_entry_point-a6c12280-860e-43f1-8b4c-80ac401a77dc.mdx\",lineNumber:9,columnNumber:79},this),(0,n.jsxDEV)(r.span,{style:{color:\"#E1E4E8\"},children:\"(\"},void 0,!1,{fileName:\"/Users/andreasthomas/github/chronark/chronark.com/content/projects/_mdx_bundler_entry_point-a6c12280-860e-43f1-8b4c-80ac401a77dc.mdx\",lineNumber:9,columnNumber:128},this),(0,n.jsxDEV)(r.span,{style:{color:\"#79B8FF\"},children:\"10\"},void 0,!1,{fileName:\"/Users/andreasthomas/github/chronark/chronark.com/content/projects/_mdx_bundler_entry_point-a6c12280-860e-43f1-8b4c-80ac401a77dc.mdx\",lineNumber:9,columnNumber:165},this),(0,n.jsxDEV)(r.span,{style:{color:\"#E1E4E8\"},children:\", \"},void 0,!1,{fileName:\"/Users/andreasthomas/github/chronark/chronark.com/content/projects/_mdx_bundler_entry_point-a6c12280-860e-43f1-8b4c-80ac401a77dc.mdx\",lineNumber:9,columnNumber:203},this),(0,n.jsxDEV)(r.span,{style:{color:\"#9ECBFF\"},children:'\"10s\"'},void 0,!1,{fileName:\"/Users/andreasthomas/github/chronark/chronark.com/content/projects/_mdx_bundler_entry_point-a6c12280-860e-43f1-8b4c-80ac401a77dc.mdx\",lineNumber:9,columnNumber:241},this),(0,n.jsxDEV)(r.span,{style:{color:\"#E1E4E8\"},children:\"),\"},void 0,!1,{fileName:\"/Users/andreasthomas/github/chronark/chronark.com/content/projects/_mdx_bundler_entry_point-a6c12280-860e-43f1-8b4c-80ac401a77dc.mdx\",lineNumber:9,columnNumber:292},this)]},void 0,!0,{fileName:\"/Users/andreasthomas/github/chronark/chronark.com/content/projects/_mdx_bundler_entry_point-a6c12280-860e-43f1-8b4c-80ac401a77dc.mdx\",lineNumber:9,columnNumber:1},this),`\n`,(0,n.jsxDEV)(r.span,{className:\"line\",children:[(0,n.jsxDEV)(r.span,{style:{color:\"#E1E4E8\"},children:\" analytics: \"},void 0,!1,{fileName:\"/Users/andreasthomas/github/chronark/chronark.com/content/projects/_mdx_bundler_entry_point-a6c12280-860e-43f1-8b4c-80ac401a77dc.mdx\",lineNumber:10,columnNumber:20},this),(0,n.jsxDEV)(r.span,{style:{color:\"#79B8FF\"},children:\"true\"},void 0,!1,{fileName:\"/Users/andreasthomas/github/chronark/chronark.com/content/projects/_mdx_bundler_entry_point-a6c12280-860e-43f1-8b4c-80ac401a77dc.mdx\",lineNumber:10,columnNumber:71},this)]},void 0,!0,{fileName:\"/Users/andreasthomas/github/chronark/chronark.com/content/projects/_mdx_bundler_entry_point-a6c12280-860e-43f1-8b4c-80ac401a77dc.mdx\",lineNumber:10,columnNumber:1},this),`\n`,(0,n.jsxDEV)(r.span,{className:\"line\",children:(0,n.jsxDEV)(r.span,{style:{color:\"#E1E4E8\"},children:\"})\"},void 0,!1,{fileName:\"/Users/andreasthomas/github/chronark/chronark.com/content/projects/_mdx_bundler_entry_point-a6c12280-860e-43f1-8b4c-80ac401a77dc.mdx\",lineNumber:11,columnNumber:20},this)},void 0,!1,{fileName:\"/Users/andreasthomas/github/chronark/chronark.com/content/projects/_mdx_bundler_entry_point-a6c12280-860e-43f1-8b4c-80ac401a77dc.mdx\",lineNumber:11,columnNumber:1},this),`\n`,(0,n.jsxDEV)(r.span,{className:\"line\",children:\" \"},void 0,!1,{fileName:\"/Users/andreasthomas/github/chronark/chronark.com/content/projects/_mdx_bundler_entry_point-a6c12280-860e-43f1-8b4c-80ac401a77dc.mdx\",lineNumber:12,columnNumber:1},this),`\n`,(0,n.jsxDEV)(r.span,{className:\"line\",children:\" \"},void 0,!1,{fileName:\"/Users/andreasthomas/github/chronark/chronark.com/content/projects/_mdx_bundler_entry_point-a6c12280-860e-43f1-8b4c-80ac401a77dc.mdx\",lineNumber:13,columnNumber:1},this),`\n`,(0,n.jsxDEV)(r.span,{className:\"line\",children:(0,n.jsxDEV)(r.span,{style:{color:\"#6A737D\"},children:\"// Check if the client has exceeded the rate limit\"},void 0,!1,{fileName:\"/Users/andreasthomas/github/chronark/chronark.com/content/projects/_mdx_bundler_entry_point-a6c12280-860e-43f1-8b4c-80ac401a77dc.mdx\",lineNumber:14,columnNumber:20},this)},void 0,!1,{fileName:\"/Users/andreasthomas/github/chronark/chronark.com/content/projects/_mdx_bundler_entry_point-a6c12280-860e-43f1-8b4c-80ac401a77dc.mdx\",lineNumber:14,columnNumber:1},this),`\n`,(0,n.jsxDEV)(r.span,{className:\"line\",children:[(0,n.jsxDEV)(r.span,{style:{color:\"#F97583\"},children:\"const\"},void 0,!1,{fileName:\"/Users/andreasthomas/github/chronark/chronark.com/content/projects/_mdx_bundler_entry_point-a6c12280-860e-43f1-8b4c-80ac401a77dc.mdx\",lineNumber:15,columnNumber:20},this),(0,n.jsxDEV)(r.span,{style:{color:\"#E1E4E8\"},children:\" { \"},void 0,!1,{fileName:\"/Users/andreasthomas/github/chronark/chronark.com/content/projects/_mdx_bundler_entry_point-a6c12280-860e-43f1-8b4c-80ac401a77dc.mdx\",lineNumber:15,columnNumber:61},this),(0,n.jsxDEV)(r.span,{style:{color:\"#79B8FF\"},children:\"success\"},void 0,!1,{fileName:\"/Users/andreasthomas/github/chronark/chronark.com/content/projects/_mdx_bundler_entry_point-a6c12280-860e-43f1-8b4c-80ac401a77dc.mdx\",lineNumber:15,columnNumber:100},this),(0,n.jsxDEV)(r.span,{style:{color:\"#E1E4E8\"},children:\" } \"},void 0,!1,{fileName:\"/Users/andreasthomas/github/chronark/chronark.com/content/projects/_mdx_bundler_entry_point-a6c12280-860e-43f1-8b4c-80ac401a77dc.mdx\",lineNumber:15,columnNumber:143},this),(0,n.jsxDEV)(r.span,{style:{color:\"#F97583\"},children:\"=\"},void 0,!1,{fileName:\"/Users/andreasthomas/github/chronark/chronark.com/content/projects/_mdx_bundler_entry_point-a6c12280-860e-43f1-8b4c-80ac401a77dc.mdx\",lineNumber:15,columnNumber:182},this),(0,n.jsxDEV)(r.span,{style:{color:\"#E1E4E8\"},children:\" \"},void 0,!1,{fileName:\"/Users/andreasthomas/github/chronark/chronark.com/content/projects/_mdx_bundler_entry_point-a6c12280-860e-43f1-8b4c-80ac401a77dc.mdx\",lineNumber:15,columnNumber:219},this),(0,n.jsxDEV)(r.span,{style:{color:\"#F97583\"},children:\"await\"},void 0,!1,{fileName:\"/Users/andreasthomas/github/chronark/chronark.com/content/projects/_mdx_bundler_entry_point-a6c12280-860e-43f1-8b4c-80ac401a77dc.mdx\",lineNumber:15,columnNumber:256},this),(0,n.jsxDEV)(r.span,{style:{color:\"#E1E4E8\"},children:\" ratelimit.\"},void 0,!1,{fileName:\"/Users/andreasthomas/github/chronark/chronark.com/content/projects/_mdx_bundler_entry_point-a6c12280-860e-43f1-8b4c-80ac401a77dc.mdx\",lineNumber:15,columnNumber:297},this),(0,n.jsxDEV)(r.span,{style:{color:\"#B392F0\"},children:\"limit\"},void 0,!1,{fileName:\"/Users/andreasthomas/github/chronark/chronark.com/content/projects/_mdx_bundler_entry_point-a6c12280-860e-43f1-8b4c-80ac401a77dc.mdx\",lineNumber:15,columnNumber:344},this),(0,n.jsxDEV)(r.span,{style:{color:\"#E1E4E8\"},children:\"(\"},void 0,!1,{fileName:\"/Users/andreasthomas/github/chronark/chronark.com/content/projects/_mdx_bundler_entry_point-a6c12280-860e-43f1-8b4c-80ac401a77dc.mdx\",lineNumber:15,columnNumber:385},this),(0,n.jsxDEV)(r.span,{style:{color:\"#9ECBFF\"},children:'\"identifier\"'},void 0,!1,{fileName:\"/Users/andreasthomas/github/chronark/chronark.com/content/projects/_mdx_bundler_entry_point-a6c12280-860e-43f1-8b4c-80ac401a77dc.mdx\",lineNumber:15,columnNumber:422},this),(0,n.jsxDEV)(r.span,{style:{color:\"#E1E4E8\"},children:\")\"},void 0,!1,{fileName:\"/Users/andreasthomas/github/chronark/chronark.com/content/projects/_mdx_bundler_entry_point-a6c12280-860e-43f1-8b4c-80ac401a77dc.mdx\",lineNumber:15,columnNumber:480},this)]},void 0,!0,{fileName:\"/Users/andreasthomas/github/chronark/chronark.com/content/projects/_mdx_bundler_entry_point-a6c12280-860e-43f1-8b4c-80ac401a77dc.mdx\",lineNumber:15,columnNumber:1},this)]},void 0,!0,{fileName:\"/Users/andreasthomas/github/chronark/chronark.com/content/projects/_mdx_bundler_entry_point-a6c12280-860e-43f1-8b4c-80ac401a77dc.mdx\",lineNumber:1,columnNumber:79},this)},void 0,!1,{fileName:\"/Users/andreasthomas/github/chronark/chronark.com/content/projects/_mdx_bundler_entry_point-a6c12280-860e-43f1-8b4c-80ac401a77dc.mdx\",lineNumber:1,columnNumber:1},this)},void 0,!1,{fileName:\"/Users/andreasthomas/github/chronark/chronark.com/content/projects/_mdx_bundler_entry_point-a6c12280-860e-43f1-8b4c-80ac401a77dc.mdx\",lineNumber:29,columnNumber:1},this),`\n`,(0,n.jsxDEV)(r.p,{children:[\"In the code above, we initialize Upstash with our Upstash Redis credentials and define our rate limiting rules. We then call the \",(0,n.jsxDEV)(r.code,{children:\"limit\"},void 0,!1,{fileName:\"/Users/andreasthomas/github/chronark/chronark.com/content/projects/_mdx_bundler_entry_point-a6c12280-860e-43f1-8b4c-80ac401a77dc.mdx\",lineNumber:47,columnNumber:130},this),\" function, passing the identifier. The function returns a Promise that resolves with \",(0,n.jsxDEV)(r.code,{children:\"success\"},void 0,!1,{fileName:\"/Users/andreasthomas/github/chronark/chronark.com/content/projects/_mdx_bundler_entry_point-a6c12280-860e-43f1-8b4c-80ac401a77dc.mdx\",lineNumber:47,columnNumber:222},this),\" and some other useful data.\"]},void 0,!0,{fileName:\"/Users/andreasthomas/github/chronark/chronark.com/content/projects/_mdx_bundler_entry_point-a6c12280-860e-43f1-8b4c-80ac401a77dc.mdx\",lineNumber:47,columnNumber:1},this),`\n`,(0,n.jsxDEV)(r.p,{children:[(0,n.jsxDEV)(r.code,{children:\"@upstash/ratelimit\"},void 0,!1,{fileName:\"/Users/andreasthomas/github/chronark/chronark.com/content/projects/_mdx_bundler_entry_point-a6c12280-860e-43f1-8b4c-80ac401a77dc.mdx\",lineNumber:49,columnNumber:1},this),\" is a useful npm package for serverless rate limiting that simplifies the process of implementing rate limiting for serverless applications. The package is built on top of Upstash Redis, which provides a complete solution for serverless applications. With \",(0,n.jsxDEV)(r.code,{children:\"@upstash/ratelimit\"},void 0,!1,{fileName:\"/Users/andreasthomas/github/chronark/chronark.com/content/projects/_mdx_bundler_entry_point-a6c12280-860e-43f1-8b4c-80ac401a77dc.mdx\",lineNumber:49,columnNumber:277},this),\", serverless developers can easily implement rate limiting, which can help prevent abuse, improve performance, and reduce costs.\"]},void 0,!0,{fileName:\"/Users/andreasthomas/github/chronark/chronark.com/content/projects/_mdx_bundler_entry_point-a6c12280-860e-43f1-8b4c-80ac401a77dc.mdx\",lineNumber:49,columnNumber:1},this)]},void 0,!0,{fileName:\"/Users/andreasthomas/github/chronark/chronark.com/content/projects/_mdx_bundler_entry_point-a6c12280-860e-43f1-8b4c-80ac401a77dc.mdx\",lineNumber:1,columnNumber:1},this)}function _r(u={}){let{wrapper:r}=u.components||{};return r?(0,n.jsxDEV)(r,Object.assign({},u,{children:(0,n.jsxDEV)(Re,u,void 0,!1,{fileName:\"/Users/andreasthomas/github/chronark/chronark.com/content/projects/_mdx_bundler_entry_point-a6c12280-860e-43f1-8b4c-80ac401a77dc.mdx\"},this)}),void 0,!1,{fileName:\"/Users/andreasthomas/github/chronark/chronark.com/content/projects/_mdx_bundler_entry_point-a6c12280-860e-43f1-8b4c-80ac401a77dc.mdx\"},this):Re(u)}var Nr=_r;return br(yr);})();\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/upstash-ratelimit.mdx",
|
|
"_raw": {
|
|
"sourceFilePath": "projects/upstash-ratelimit.mdx",
|
|
"sourceFileName": "upstash-ratelimit.mdx",
|
|
"sourceFileDir": "projects",
|
|
"contentType": "mdx",
|
|
"flattenedPath": "projects/upstash-ratelimit"
|
|
},
|
|
"type": "Project",
|
|
"path": "/projects/upstash-ratelimit",
|
|
"slug": "upstash-ratelimit"
|
|
},
|
|
"documentHash": "1679831176938",
|
|
"hasWarnings": false,
|
|
"documentTypeName": "Project"
|
|
},
|
|
"projects/upstash-react-ui.mdx": {
|
|
"document": {
|
|
"published": true,
|
|
"title": "React.js CLI",
|
|
"description": "A CLI React component to interact with Upstash Redis databases.",
|
|
"date": "2023-02-05T00:00:00.000Z",
|
|
"url": "https://upstash.com",
|
|
"repository": "upstash/react-ui",
|
|
"body": {
|
|
"raw": "\n\n`@upstash/react-ui` is powering the CLI in your browser on [console.upstash.com](https://comsole.upstash.com). It allows you to interact with your Upstash Redis database in a simple and intuitive way.",
|
|
"code": "var Component=(()=>{var sr=Object.create;var A=Object.defineProperty;var cr=Object.getOwnPropertyDescriptor;var lr=Object.getOwnPropertyNames;var fr=Object.getPrototypeOf,dr=Object.prototype.hasOwnProperty;var q=(c,u)=>()=>(u||c((u={exports:{}}).exports,u),u.exports),vr=(c,u)=>{for(var b in u)A(c,b,{get:u[b],enumerable:!0})},_e=(c,u,b,E)=>{if(u&&typeof u==\"object\"||typeof u==\"function\")for(let g of lr(u))!dr.call(c,g)&&g!==b&&A(c,g,{get:()=>u[g],enumerable:!(E=cr(u,g))||E.enumerable});return c};var pr=(c,u,b)=>(b=c!=null?sr(fr(c)):{},_e(u||!c||!c.__esModule?A(b,\"default\",{value:c,enumerable:!0}):b,c)),br=c=>_e(A({},\"__esModule\",{value:!0}),c);var Te=q((_r,Re)=>{Re.exports=React});var Ce=q(z=>{\"use strict\";(function(){\"use strict\";var c=Te(),u=Symbol.for(\"react.element\"),b=Symbol.for(\"react.portal\"),E=Symbol.for(\"react.fragment\"),g=Symbol.for(\"react.strict_mode\"),X=Symbol.for(\"react.profiler\"),K=Symbol.for(\"react.provider\"),H=Symbol.for(\"react.context\"),P=Symbol.for(\"react.forward_ref\"),I=Symbol.for(\"react.suspense\"),N=Symbol.for(\"react.suspense_list\"),j=Symbol.for(\"react.memo\"),Y=Symbol.for(\"react.lazy\"),je=Symbol.for(\"react.offscreen\"),J=Symbol.iterator,Se=\"@@iterator\";function xe(e){if(e===null||typeof e!=\"object\")return null;var r=J&&e[J]||e[Se];return typeof r==\"function\"?r:null}var _=c.__SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED;function d(e){{for(var r=arguments.length,t=new Array(r>1?r-1:0),n=1;n<r;n++)t[n-1]=arguments[n];ke(\"error\",e,t)}}function ke(e,r,t){{var n=_.ReactDebugCurrentFrame,i=n.getStackAddendum();i!==\"\"&&(r+=\"%s\",t=t.concat([i]));var s=t.map(function(o){return String(o)});s.unshift(\"Warning: \"+r),Function.prototype.apply.call(console[e],console,s)}}var De=!1,Fe=!1,Ae=!1,Ie=!1,Ne=!1,Z;Z=Symbol.for(\"react.module.reference\");function Ye(e){return!!(typeof e==\"string\"||typeof e==\"function\"||e===E||e===X||Ne||e===g||e===I||e===N||Ie||e===je||De||Fe||Ae||typeof e==\"object\"&&e!==null&&(e.$$typeof===Y||e.$$typeof===j||e.$$typeof===K||e.$$typeof===H||e.$$typeof===P||e.$$typeof===Z||e.getModuleId!==void 0))}function $e(e,r,t){var n=e.displayName;if(n)return n;var i=r.displayName||r.name||\"\";return i!==\"\"?t+\"(\"+i+\")\":t}function Q(e){return e.displayName||\"Context\"}function h(e){if(e==null)return null;if(typeof e.tag==\"number\"&&d(\"Received an unexpected object in getComponentNameFromType(). This is likely a bug in React. Please file an issue.\"),typeof e==\"function\")return e.displayName||e.name||null;if(typeof e==\"string\")return e;switch(e){case E:return\"Fragment\";case b:return\"Portal\";case X:return\"Profiler\";case g:return\"StrictMode\";case I:return\"Suspense\";case N:return\"SuspenseList\"}if(typeof e==\"object\")switch(e.$$typeof){case H:var r=e;return Q(r)+\".Consumer\";case K:var t=e;return Q(t._context)+\".Provider\";case P:return $e(e,e.render,\"ForwardRef\");case j:var n=e.displayName||null;return n!==null?n:h(e.type)||\"Memo\";case Y:{var i=e,s=i._payload,o=i._init;try{return h(o(s))}catch{return null}}}return null}var y=Object.assign,w=0,ee,re,te,ne,ae,oe,ie;function ue(){}ue.__reactDisabledLog=!0;function Ue(){{if(w===0){ee=console.log,re=console.info,te=console.warn,ne=console.error,ae=console.group,oe=console.groupCollapsed,ie=console.groupEnd;var e={configurable:!0,enumerable:!0,value:ue,writable:!0};Object.defineProperties(console,{info:e,log:e,warn:e,error:e,group:e,groupCollapsed:e,groupEnd:e})}w++}}function We(){{if(w--,w===0){var e={configurable:!0,enumerable:!0,writable:!0};Object.defineProperties(console,{log:y({},e,{value:ee}),info:y({},e,{value:re}),warn:y({},e,{value:te}),error:y({},e,{value:ne}),group:y({},e,{value:ae}),groupCollapsed:y({},e,{value:oe}),groupEnd:y({},e,{value:ie})})}w<0&&d(\"disabledDepth fell below zero. This is a bug in React. Please file an issue.\")}}var $=_.ReactCurrentDispatcher,U;function S(e,r,t){{if(U===void 0)try{throw Error()}catch(i){var n=i.stack.trim().match(/\\n( *(at )?)/);U=n&&n[1]||\"\"}return`\n`+U+e}}var W=!1,x;{var Le=typeof WeakMap==\"function\"?WeakMap:Map;x=new Le}function se(e,r){if(!e||W)return\"\";{var t=x.get(e);if(t!==void 0)return t}var n;W=!0;var i=Error.prepareStackTrace;Error.prepareStackTrace=void 0;var s;s=$.current,$.current=null,Ue();try{if(r){var o=function(){throw Error()};if(Object.defineProperty(o.prototype,\"props\",{set:function(){throw Error()}}),typeof Reflect==\"object\"&&Reflect.construct){try{Reflect.construct(o,[])}catch(m){n=m}Reflect.construct(e,[],o)}else{try{o.call()}catch(m){n=m}e.call(o.prototype)}}else{try{throw Error()}catch(m){n=m}e()}}catch(m){if(m&&n&&typeof m.stack==\"string\"){for(var a=m.stack.split(`\n`),v=n.stack.split(`\n`),l=a.length-1,f=v.length-1;l>=1&&f>=0&&a[l]!==v[f];)f--;for(;l>=1&&f>=0;l--,f--)if(a[l]!==v[f]){if(l!==1||f!==1)do if(l--,f--,f<0||a[l]!==v[f]){var p=`\n`+a[l].replace(\" at new \",\" at \");return e.displayName&&p.includes(\"<anonymous>\")&&(p=p.replace(\"<anonymous>\",e.displayName)),typeof e==\"function\"&&x.set(e,p),p}while(l>=1&&f>=0);break}}}finally{W=!1,$.current=s,We(),Error.prepareStackTrace=i}var T=e?e.displayName||e.name:\"\",ye=T?S(T):\"\";return typeof e==\"function\"&&x.set(e,ye),ye}function Me(e,r,t){return se(e,!1)}function Ve(e){var r=e.prototype;return!!(r&&r.isReactComponent)}function k(e,r,t){if(e==null)return\"\";if(typeof e==\"function\")return se(e,Ve(e));if(typeof e==\"string\")return S(e);switch(e){case I:return S(\"Suspense\");case N:return S(\"SuspenseList\")}if(typeof e==\"object\")switch(e.$$typeof){case P:return Me(e.render);case j:return k(e.type,r,t);case Y:{var n=e,i=n._payload,s=n._init;try{return k(s(i),r,t)}catch{}}}return\"\"}var D=Object.prototype.hasOwnProperty,ce={},le=_.ReactDebugCurrentFrame;function F(e){if(e){var r=e._owner,t=k(e.type,e._source,r?r.type:null);le.setExtraStackFrame(t)}else le.setExtraStackFrame(null)}function Be(e,r,t,n,i){{var s=Function.call.bind(D);for(var o in e)if(s(e,o)){var a=void 0;try{if(typeof e[o]!=\"function\"){var v=Error((n||\"React class\")+\": \"+t+\" type `\"+o+\"` is invalid; it must be a function, usually from the `prop-types` package, but received `\"+typeof e[o]+\"`.This often happens because of typos such as `PropTypes.function` instead of `PropTypes.func`.\");throw v.name=\"Invariant Violation\",v}a=e[o](r,o,n,t,null,\"SECRET_DO_NOT_PASS_THIS_OR_YOU_WILL_BE_FIRED\")}catch(l){a=l}a&&!(a instanceof Error)&&(F(i),d(\"%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).\",n||\"React class\",t,o,typeof a),F(null)),a instanceof Error&&!(a.message in ce)&&(ce[a.message]=!0,F(i),d(\"Failed %s type: %s\",t,a.message),F(null))}}}var Ge=Array.isArray;function L(e){return Ge(e)}function qe(e){{var r=typeof Symbol==\"function\"&&Symbol.toStringTag,t=r&&e[Symbol.toStringTag]||e.constructor.name||\"Object\";return t}}function ze(e){try{return fe(e),!1}catch{return!0}}function fe(e){return\"\"+e}function de(e){if(ze(e))return d(\"The provided key is an unsupported type %s. This value must be coerced to a string before before using it here.\",qe(e)),fe(e)}var O=_.ReactCurrentOwner,Xe={key:!0,ref:!0,__self:!0,__source:!0},ve,pe,M;M={};function Ke(e){if(D.call(e,\"ref\")){var r=Object.getOwnPropertyDescriptor(e,\"ref\").get;if(r&&r.isReactWarning)return!1}return e.ref!==void 0}function He(e){if(D.call(e,\"key\")){var r=Object.getOwnPropertyDescriptor(e,\"key\").get;if(r&&r.isReactWarning)return!1}return e.key!==void 0}function Je(e,r){if(typeof e.ref==\"string\"&&O.current&&r&&O.current.stateNode!==r){var t=h(O.current.type);M[t]||(d('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',h(O.current.type),e.ref),M[t]=!0)}}function Ze(e,r){{var t=function(){ve||(ve=!0,d(\"%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)\",r))};t.isReactWarning=!0,Object.defineProperty(e,\"key\",{get:t,configurable:!0})}}function Qe(e,r){{var t=function(){pe||(pe=!0,d(\"%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)\",r))};t.isReactWarning=!0,Object.defineProperty(e,\"ref\",{get:t,configurable:!0})}}var er=function(e,r,t,n,i,s,o){var a={$$typeof:u,type:e,key:r,ref:t,props:o,_owner:s};return a._store={},Object.defineProperty(a._store,\"validated\",{configurable:!1,enumerable:!1,writable:!0,value:!1}),Object.defineProperty(a,\"_self\",{configurable:!1,enumerable:!1,writable:!1,value:n}),Object.defineProperty(a,\"_source\",{configurable:!1,enumerable:!1,writable:!1,value:i}),Object.freeze&&(Object.freeze(a.props),Object.freeze(a)),a};function rr(e,r,t,n,i){{var s,o={},a=null,v=null;t!==void 0&&(de(t),a=\"\"+t),He(r)&&(de(r.key),a=\"\"+r.key),Ke(r)&&(v=r.ref,Je(r,i));for(s in r)D.call(r,s)&&!Xe.hasOwnProperty(s)&&(o[s]=r[s]);if(e&&e.defaultProps){var l=e.defaultProps;for(s in l)o[s]===void 0&&(o[s]=l[s])}if(a||v){var f=typeof e==\"function\"?e.displayName||e.name||\"Unknown\":e;a&&Ze(o,f),v&&Qe(o,f)}return er(e,a,v,i,n,O.current,o)}}var V=_.ReactCurrentOwner,be=_.ReactDebugCurrentFrame;function R(e){if(e){var r=e._owner,t=k(e.type,e._source,r?r.type:null);be.setExtraStackFrame(t)}else be.setExtraStackFrame(null)}var B;B=!1;function G(e){return typeof e==\"object\"&&e!==null&&e.$$typeof===u}function he(){{if(V.current){var e=h(V.current.type);if(e)return`\n\nCheck the render method of \\``+e+\"`.\"}return\"\"}}function tr(e){{if(e!==void 0){var r=e.fileName.replace(/^.*[\\\\\\/]/,\"\"),t=e.lineNumber;return`\n\nCheck your code at `+r+\":\"+t+\".\"}return\"\"}}var me={};function nr(e){{var r=he();if(!r){var t=typeof e==\"string\"?e:e.displayName||e.name;t&&(r=`\n\nCheck the top-level render call using <`+t+\">.\")}return r}}function ge(e,r){{if(!e._store||e._store.validated||e.key!=null)return;e._store.validated=!0;var t=nr(r);if(me[t])return;me[t]=!0;var n=\"\";e&&e._owner&&e._owner!==V.current&&(n=\" It was passed a child from \"+h(e._owner.type)+\".\"),R(e),d('Each child in a list should have a unique \"key\" prop.%s%s See https://reactjs.org/link/warning-keys for more information.',t,n),R(null)}}function Ee(e,r){{if(typeof e!=\"object\")return;if(L(e))for(var t=0;t<e.length;t++){var n=e[t];G(n)&&ge(n,r)}else if(G(e))e._store&&(e._store.validated=!0);else if(e){var i=xe(e);if(typeof i==\"function\"&&i!==e.entries)for(var s=i.call(e),o;!(o=s.next()).done;)G(o.value)&&ge(o.value,r)}}}function ar(e){{var r=e.type;if(r==null||typeof r==\"string\")return;var t;if(typeof r==\"function\")t=r.propTypes;else if(typeof r==\"object\"&&(r.$$typeof===P||r.$$typeof===j))t=r.propTypes;else return;if(t){var n=h(r);Be(t,e.props,\"prop\",n,e)}else if(r.PropTypes!==void 0&&!B){B=!0;var i=h(r);d(\"Component %s declared `PropTypes` instead of `propTypes`. Did you misspell the property assignment?\",i||\"Unknown\")}typeof r.getDefaultProps==\"function\"&&!r.getDefaultProps.isReactClassApproved&&d(\"getDefaultProps is only used on classic React.createClass definitions. Use a static property named `defaultProps` instead.\")}}function or(e){{for(var r=Object.keys(e.props),t=0;t<r.length;t++){var n=r[t];if(n!==\"children\"&&n!==\"key\"){R(e),d(\"Invalid prop `%s` supplied to `React.Fragment`. React.Fragment can only have `key` and `children` props.\",n),R(null);break}}e.ref!==null&&(R(e),d(\"Invalid attribute `ref` supplied to `React.Fragment`.\"),R(null))}}function ir(e,r,t,n,i,s){{var o=Ye(e);if(!o){var a=\"\";(e===void 0||typeof e==\"object\"&&e!==null&&Object.keys(e).length===0)&&(a+=\" 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 v=tr(i);v?a+=v:a+=he();var l;e===null?l=\"null\":L(e)?l=\"array\":e!==void 0&&e.$$typeof===u?(l=\"<\"+(h(e.type)||\"Unknown\")+\" />\",a=\" Did you accidentally export a JSX literal instead of a component?\"):l=typeof e,d(\"React.jsx: type is invalid -- expected a string (for built-in components) or a class/function (for composite components) but got: %s.%s\",l,a)}var f=rr(e,r,t,i,s);if(f==null)return f;if(o){var p=r.children;if(p!==void 0)if(n)if(L(p)){for(var T=0;T<p.length;T++)Ee(p[T],e);Object.freeze&&Object.freeze(p)}else d(\"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 Ee(p,e)}return e===E?or(f):ar(f),f}}var ur=ir;z.Fragment=E,z.jsxDEV=ur})()});var Oe=q((Tr,we)=>{\"use strict\";we.exports=Ce()});var Er={};vr(Er,{default:()=>gr,frontmatter:()=>hr});var C=pr(Oe()),hr={title:\"React.js CLI\",description:\"A CLI React component to interact with Upstash Redis databases.\",date:\"2023-02-05\",url:\"https://upstash.com\",repository:\"upstash/react-ui\",published:!0};function Pe(c){let u=Object.assign({p:\"p\",code:\"code\",a:\"a\"},c.components);return(0,C.jsxDEV)(u.p,{children:[(0,C.jsxDEV)(u.code,{children:\"@upstash/react-ui\"},void 0,!1,{fileName:\"/Users/andreasthomas/github/chronark/chronark.com/content/projects/_mdx_bundler_entry_point-8d18f6cb-fd44-423b-9018-b550a3b2d423.mdx\",lineNumber:12,columnNumber:1},this),\" is powering the CLI in your browser on \",(0,C.jsxDEV)(u.a,{href:\"https://comsole.upstash.com\",children:\"console.upstash.com\"},void 0,!1,{fileName:\"/Users/andreasthomas/github/chronark/chronark.com/content/projects/_mdx_bundler_entry_point-8d18f6cb-fd44-423b-9018-b550a3b2d423.mdx\",lineNumber:12,columnNumber:60},this),\". It allows you to interact with your Upstash Redis database in a simple and intuitive way.\"]},void 0,!0,{fileName:\"/Users/andreasthomas/github/chronark/chronark.com/content/projects/_mdx_bundler_entry_point-8d18f6cb-fd44-423b-9018-b550a3b2d423.mdx\",lineNumber:12,columnNumber:1},this)}function mr(c={}){let{wrapper:u}=c.components||{};return u?(0,C.jsxDEV)(u,Object.assign({},c,{children:(0,C.jsxDEV)(Pe,c,void 0,!1,{fileName:\"/Users/andreasthomas/github/chronark/chronark.com/content/projects/_mdx_bundler_entry_point-8d18f6cb-fd44-423b-9018-b550a3b2d423.mdx\"},this)}),void 0,!1,{fileName:\"/Users/andreasthomas/github/chronark/chronark.com/content/projects/_mdx_bundler_entry_point-8d18f6cb-fd44-423b-9018-b550a3b2d423.mdx\"},this):Pe(c)}var gr=mr;return br(Er);})();\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/upstash-react-ui.mdx",
|
|
"_raw": {
|
|
"sourceFilePath": "projects/upstash-react-ui.mdx",
|
|
"sourceFileName": "upstash-react-ui.mdx",
|
|
"sourceFileDir": "projects",
|
|
"contentType": "mdx",
|
|
"flattenedPath": "projects/upstash-react-ui"
|
|
},
|
|
"type": "Project",
|
|
"path": "/projects/upstash-react-ui",
|
|
"slug": "upstash-react-ui"
|
|
},
|
|
"documentHash": "1679831965421",
|
|
"hasWarnings": false,
|
|
"documentTypeName": "Project"
|
|
},
|
|
"projects/upstash-redis.mdx": {
|
|
"document": {
|
|
"published": true,
|
|
"title": "@upstash/redis",
|
|
"description": "A fully typed Redis client built for Upstash Redis and HTTP, perfect for serverless and edge runtimes.",
|
|
"date": "2022-03-14T00:00:00.000Z",
|
|
"url": "https://upstash.com/redis",
|
|
"repository": "upstash/upstash-redis",
|
|
"body": {
|
|
"raw": "\nUpstash is a cloud-based service provider that offers a Redis-compatible service. In addition to that, we have also created an npm package called `@upstash/redis`. This package provides a strongly typed Redis client that uses HTTP instead of TCP to communicate with the database, making it perfect for serverless and edge runtimes.\n\nRedis is a popular open-source, in-memory data structure store that can be used as a database, cache, and message broker. It is commonly used for web applications that require fast data access and manipulation. Redis clients communicate with Redis servers using the Redis protocol over TCP/IP.\n\nHowever, in some cases, TCP is not available. For example, edge functions run on cloud platforms, which often block TCP connections for various reasons. This is where `@upstash/redis` comes in handy. Instead of using TCP, it uses HTTP to communicate with the servers.\n\nThe package is designed to be easy to use and provides a simple API for Redis commands. It also includes support for Redis transactions and Lua scripting. It is written in TypeScript, which provides static typing and better code completion in modern editors.\n\nOne of the main benefits of using `@upstash/redis` is that it is strongly typed. This means that you get better type checking and error handling in your code. Additionally, the package is designed to be lightweight and optimized for performance. This makes it an excellent choice for applications that require fast data access and manipulation.\n\n```ts\nimport { Redis } from \"@upstash/redis\"\n\nconst redis = new Redis({\n url: <UPSTASH_REDIS_REST_URL>,\n token: <UPSTASH_REDIS_REST_TOKEN>,\n})\n\n// string\nawait redis.set('key', 'value');\nlet data = await redis.get('key');\nconsole.log(data)\n\nawait redis.set('key2', 'value2', {ex: 1});\n\n// sorted set\nawait redis.zadd('scores', { score: 1, member: 'team1' })\ndata = await redis.zrange('scores', 0, 100 )\nconsole.log(data)\n\n// list\nawait redis.lpush('elements', 'magnesium')\ndata = await redis.lrange('elements', 0, 100 )\nconsole.log(data)\n```",
|
|
"code": "var Component=(()=>{var ir=Object.create;var O=Object.defineProperty;var lr=Object.getOwnPropertyDescriptor;var dr=Object.getOwnPropertyNames;var ur=Object.getPrototypeOf,mr=Object.prototype.hasOwnProperty;var z=(d,r)=>()=>(r||d((r={exports:{}}).exports,r),r.exports),br=(d,r)=>{for(var _ in r)O(d,_,{get:r[_],enumerable:!0})},xe=(d,r,_,k)=>{if(r&&typeof r==\"object\"||typeof r==\"function\")for(let y of dr(r))!mr.call(d,y)&&y!==_&&O(d,y,{get:()=>r[y],enumerable:!(k=lr(r,y))||k.enumerable});return d};var hr=(d,r,_)=>(_=d!=null?ir(ur(d)):{},xe(r||!d||!d.__esModule?O(_,\"default\",{value:d,enumerable:!0}):_,d)),fr=d=>xe(O({},\"__esModule\",{value:!0}),d);var Ee=z((xr,ge)=>{ge.exports=React});var ve=z(q=>{\"use strict\";(function(){\"use strict\";var d=Ee(),r=Symbol.for(\"react.element\"),_=Symbol.for(\"react.portal\"),k=Symbol.for(\"react.fragment\"),y=Symbol.for(\"react.strict_mode\"),G=Symbol.for(\"react.profiler\"),K=Symbol.for(\"react.provider\"),X=Symbol.for(\"react.context\"),F=Symbol.for(\"react.forward_ref\"),D=Symbol.for(\"react.suspense\"),A=Symbol.for(\"react.suspense_list\"),R=Symbol.for(\"react.memo\"),B=Symbol.for(\"react.lazy\"),Re=Symbol.for(\"react.offscreen\"),J=Symbol.iterator,Te=\"@@iterator\";function Ce(e){if(e===null||typeof e!=\"object\")return null;var t=J&&e[J]||e[Te];return typeof t==\"function\"?t:null}var g=d.__SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED;function b(e){{for(var t=arguments.length,a=new Array(t>1?t-1:0),o=1;o<t;o++)a[o-1]=arguments[o];we(\"error\",e,a)}}function we(e,t,a){{var o=g.ReactDebugCurrentFrame,i=o.getStackAddendum();i!==\"\"&&(t+=\"%s\",a=a.concat([i]));var l=a.map(function(s){return String(s)});l.unshift(\"Warning: \"+t),Function.prototype.apply.call(console[e],console,l)}}var Pe=!1,Se=!1,Oe=!1,De=!1,Ae=!1,Z;Z=Symbol.for(\"react.module.reference\");function Be(e){return!!(typeof e==\"string\"||typeof e==\"function\"||e===k||e===G||Ae||e===y||e===D||e===A||De||e===Re||Pe||Se||Oe||typeof e==\"object\"&&e!==null&&(e.$$typeof===B||e.$$typeof===R||e.$$typeof===K||e.$$typeof===X||e.$$typeof===F||e.$$typeof===Z||e.getModuleId!==void 0))}function Ie(e,t,a){var o=e.displayName;if(o)return o;var i=t.displayName||t.name||\"\";return i!==\"\"?a+\"(\"+i+\")\":a}function Q(e){return e.displayName||\"Context\"}function p(e){if(e==null)return null;if(typeof e.tag==\"number\"&&b(\"Received an unexpected object in getComponentNameFromType(). This is likely a bug in React. Please file an issue.\"),typeof e==\"function\")return e.displayName||e.name||null;if(typeof e==\"string\")return e;switch(e){case k:return\"Fragment\";case _:return\"Portal\";case G:return\"Profiler\";case y:return\"StrictMode\";case D:return\"Suspense\";case A:return\"SuspenseList\"}if(typeof e==\"object\")switch(e.$$typeof){case X:var t=e;return Q(t)+\".Consumer\";case K:var a=e;return Q(a._context)+\".Provider\";case F:return Ie(e,e.render,\"ForwardRef\");case R:var o=e.displayName||null;return o!==null?o:p(e.type)||\"Memo\";case B:{var i=e,l=i._payload,s=i._init;try{return p(s(l))}catch{return null}}}return null}var x=Object.assign,j=0,ee,re,ne,te,ae,oe,ce;function se(){}se.__reactDisabledLog=!0;function Ye(){{if(j===0){ee=console.log,re=console.info,ne=console.warn,te=console.error,ae=console.group,oe=console.groupCollapsed,ce=console.groupEnd;var e={configurable:!0,enumerable:!0,value:se,writable:!0};Object.defineProperties(console,{info:e,log:e,warn:e,error:e,group:e,groupCollapsed:e,groupEnd:e})}j++}}function $e(){{if(j--,j===0){var e={configurable:!0,enumerable:!0,writable:!0};Object.defineProperties(console,{log:x({},e,{value:ee}),info:x({},e,{value:re}),warn:x({},e,{value:ne}),error:x({},e,{value:te}),group:x({},e,{value:ae}),groupCollapsed:x({},e,{value:oe}),groupEnd:x({},e,{value:ce})})}j<0&&b(\"disabledDepth fell below zero. This is a bug in React. Please file an issue.\")}}var I=g.ReactCurrentDispatcher,Y;function T(e,t,a){{if(Y===void 0)try{throw Error()}catch(i){var o=i.stack.trim().match(/\\n( *(at )?)/);Y=o&&o[1]||\"\"}return`\n`+Y+e}}var $=!1,C;{var We=typeof WeakMap==\"function\"?WeakMap:Map;C=new We}function ie(e,t){if(!e||$)return\"\";{var a=C.get(e);if(a!==void 0)return a}var o;$=!0;var i=Error.prepareStackTrace;Error.prepareStackTrace=void 0;var l;l=I.current,I.current=null,Ye();try{if(t){var s=function(){throw Error()};if(Object.defineProperty(s.prototype,\"props\",{set:function(){throw Error()}}),typeof Reflect==\"object\"&&Reflect.construct){try{Reflect.construct(s,[])}catch(N){o=N}Reflect.construct(e,[],s)}else{try{s.call()}catch(N){o=N}e.call(s.prototype)}}else{try{throw Error()}catch(N){o=N}e()}}catch(N){if(N&&o&&typeof N.stack==\"string\"){for(var c=N.stack.split(`\n`),h=o.stack.split(`\n`),u=c.length-1,m=h.length-1;u>=1&&m>=0&&c[u]!==h[m];)m--;for(;u>=1&&m>=0;u--,m--)if(c[u]!==h[m]){if(u!==1||m!==1)do if(u--,m--,m<0||c[u]!==h[m]){var f=`\n`+c[u].replace(\" at new \",\" at \");return e.displayName&&f.includes(\"<anonymous>\")&&(f=f.replace(\"<anonymous>\",e.displayName)),typeof e==\"function\"&&C.set(e,f),f}while(u>=1&&m>=0);break}}}finally{$=!1,I.current=l,$e(),Error.prepareStackTrace=i}var v=e?e.displayName||e.name:\"\",ke=v?T(v):\"\";return typeof e==\"function\"&&C.set(e,ke),ke}function Me(e,t,a){return ie(e,!1)}function Ve(e){var t=e.prototype;return!!(t&&t.isReactComponent)}function w(e,t,a){if(e==null)return\"\";if(typeof e==\"function\")return ie(e,Ve(e));if(typeof e==\"string\")return T(e);switch(e){case D:return T(\"Suspense\");case A:return T(\"SuspenseList\")}if(typeof e==\"object\")switch(e.$$typeof){case F:return Me(e.render);case R:return w(e.type,t,a);case B:{var o=e,i=o._payload,l=o._init;try{return w(l(i),t,a)}catch{}}}return\"\"}var P=Object.prototype.hasOwnProperty,le={},de=g.ReactDebugCurrentFrame;function S(e){if(e){var t=e._owner,a=w(e.type,e._source,t?t.type:null);de.setExtraStackFrame(a)}else de.setExtraStackFrame(null)}function Le(e,t,a,o,i){{var l=Function.call.bind(P);for(var s in e)if(l(e,s)){var c=void 0;try{if(typeof e[s]!=\"function\"){var h=Error((o||\"React class\")+\": \"+a+\" type `\"+s+\"` is invalid; it must be a function, usually from the `prop-types` package, but received `\"+typeof e[s]+\"`.This often happens because of typos such as `PropTypes.function` instead of `PropTypes.func`.\");throw h.name=\"Invariant Violation\",h}c=e[s](t,s,o,a,null,\"SECRET_DO_NOT_PASS_THIS_OR_YOU_WILL_BE_FIRED\")}catch(u){c=u}c&&!(c instanceof Error)&&(S(i),b(\"%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\",a,s,typeof c),S(null)),c instanceof Error&&!(c.message in le)&&(le[c.message]=!0,S(i),b(\"Failed %s type: %s\",a,c.message),S(null))}}}var He=Array.isArray;function W(e){return He(e)}function ze(e){{var t=typeof Symbol==\"function\"&&Symbol.toStringTag,a=t&&e[Symbol.toStringTag]||e.constructor.name||\"Object\";return a}}function qe(e){try{return ue(e),!1}catch{return!0}}function ue(e){return\"\"+e}function me(e){if(qe(e))return b(\"The provided key is an unsupported type %s. This value must be coerced to a string before before using it here.\",ze(e)),ue(e)}var U=g.ReactCurrentOwner,Ge={key:!0,ref:!0,__self:!0,__source:!0},be,he,M;M={};function Ke(e){if(P.call(e,\"ref\")){var t=Object.getOwnPropertyDescriptor(e,\"ref\").get;if(t&&t.isReactWarning)return!1}return e.ref!==void 0}function Xe(e){if(P.call(e,\"key\")){var t=Object.getOwnPropertyDescriptor(e,\"key\").get;if(t&&t.isReactWarning)return!1}return e.key!==void 0}function Je(e,t){if(typeof e.ref==\"string\"&&U.current&&t&&U.current.stateNode!==t){var a=p(U.current.type);M[a]||(b('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(U.current.type),e.ref),M[a]=!0)}}function Ze(e,t){{var a=function(){be||(be=!0,b(\"%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)\",t))};a.isReactWarning=!0,Object.defineProperty(e,\"key\",{get:a,configurable:!0})}}function Qe(e,t){{var a=function(){he||(he=!0,b(\"%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)\",t))};a.isReactWarning=!0,Object.defineProperty(e,\"ref\",{get:a,configurable:!0})}}var er=function(e,t,a,o,i,l,s){var c={$$typeof:r,type:e,key:t,ref:a,props:s,_owner:l};return c._store={},Object.defineProperty(c._store,\"validated\",{configurable:!1,enumerable:!1,writable:!0,value:!1}),Object.defineProperty(c,\"_self\",{configurable:!1,enumerable:!1,writable:!1,value:o}),Object.defineProperty(c,\"_source\",{configurable:!1,enumerable:!1,writable:!1,value:i}),Object.freeze&&(Object.freeze(c.props),Object.freeze(c)),c};function rr(e,t,a,o,i){{var l,s={},c=null,h=null;a!==void 0&&(me(a),c=\"\"+a),Xe(t)&&(me(t.key),c=\"\"+t.key),Ke(t)&&(h=t.ref,Je(t,i));for(l in t)P.call(t,l)&&!Ge.hasOwnProperty(l)&&(s[l]=t[l]);if(e&&e.defaultProps){var u=e.defaultProps;for(l in u)s[l]===void 0&&(s[l]=u[l])}if(c||h){var m=typeof e==\"function\"?e.displayName||e.name||\"Unknown\":e;c&&Ze(s,m),h&&Qe(s,m)}return er(e,c,h,i,o,U.current,s)}}var V=g.ReactCurrentOwner,fe=g.ReactDebugCurrentFrame;function E(e){if(e){var t=e._owner,a=w(e.type,e._source,t?t.type:null);fe.setExtraStackFrame(a)}else fe.setExtraStackFrame(null)}var L;L=!1;function H(e){return typeof e==\"object\"&&e!==null&&e.$$typeof===r}function _e(){{if(V.current){var e=p(V.current.type);if(e)return`\n\nCheck the render method of \\``+e+\"`.\"}return\"\"}}function nr(e){{if(e!==void 0){var t=e.fileName.replace(/^.*[\\\\\\/]/,\"\"),a=e.lineNumber;return`\n\nCheck your code at `+t+\":\"+a+\".\"}return\"\"}}var pe={};function tr(e){{var t=_e();if(!t){var a=typeof e==\"string\"?e:e.displayName||e.name;a&&(t=`\n\nCheck the top-level render call using <`+a+\">.\")}return t}}function Ne(e,t){{if(!e._store||e._store.validated||e.key!=null)return;e._store.validated=!0;var a=tr(t);if(pe[a])return;pe[a]=!0;var o=\"\";e&&e._owner&&e._owner!==V.current&&(o=\" It was passed a child from \"+p(e._owner.type)+\".\"),E(e),b('Each child in a list should have a unique \"key\" prop.%s%s See https://reactjs.org/link/warning-keys for more information.',a,o),E(null)}}function ye(e,t){{if(typeof e!=\"object\")return;if(W(e))for(var a=0;a<e.length;a++){var o=e[a];H(o)&&Ne(o,t)}else if(H(e))e._store&&(e._store.validated=!0);else if(e){var i=Ce(e);if(typeof i==\"function\"&&i!==e.entries)for(var l=i.call(e),s;!(s=l.next()).done;)H(s.value)&&Ne(s.value,t)}}}function ar(e){{var t=e.type;if(t==null||typeof t==\"string\")return;var a;if(typeof t==\"function\")a=t.propTypes;else if(typeof t==\"object\"&&(t.$$typeof===F||t.$$typeof===R))a=t.propTypes;else return;if(a){var o=p(t);Le(a,e.props,\"prop\",o,e)}else if(t.PropTypes!==void 0&&!L){L=!0;var i=p(t);b(\"Component %s declared `PropTypes` instead of `propTypes`. Did you misspell the property assignment?\",i||\"Unknown\")}typeof t.getDefaultProps==\"function\"&&!t.getDefaultProps.isReactClassApproved&&b(\"getDefaultProps is only used on classic React.createClass definitions. Use a static property named `defaultProps` instead.\")}}function or(e){{for(var t=Object.keys(e.props),a=0;a<t.length;a++){var o=t[a];if(o!==\"children\"&&o!==\"key\"){E(e),b(\"Invalid prop `%s` supplied to `React.Fragment`. React.Fragment can only have `key` and `children` props.\",o),E(null);break}}e.ref!==null&&(E(e),b(\"Invalid attribute `ref` supplied to `React.Fragment`.\"),E(null))}}function cr(e,t,a,o,i,l){{var s=Be(e);if(!s){var c=\"\";(e===void 0||typeof e==\"object\"&&e!==null&&Object.keys(e).length===0)&&(c+=\" 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 h=nr(i);h?c+=h:c+=_e();var u;e===null?u=\"null\":W(e)?u=\"array\":e!==void 0&&e.$$typeof===r?(u=\"<\"+(p(e.type)||\"Unknown\")+\" />\",c=\" Did you accidentally export a JSX literal instead of a component?\"):u=typeof e,b(\"React.jsx: type is invalid -- expected a string (for built-in components) or a class/function (for composite components) but got: %s.%s\",u,c)}var m=rr(e,t,a,i,l);if(m==null)return m;if(s){var f=t.children;if(f!==void 0)if(o)if(W(f)){for(var v=0;v<f.length;v++)ye(f[v],e);Object.freeze&&Object.freeze(f)}else b(\"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(f,e)}return e===k?or(m):ar(m),m}}var sr=cr;q.Fragment=k,q.jsxDEV=sr})()});var Ue=z((Er,je)=>{\"use strict\";je.exports=ve()});var yr={};br(yr,{default:()=>Nr,frontmatter:()=>_r});var n=hr(Ue()),_r={title:\"@upstash/redis\",description:\"A fully typed Redis client built for Upstash Redis and HTTP, perfect for serverless and edge runtimes.\",date:\"2022-03-14\",url:\"https://upstash.com/redis\",repository:\"upstash/upstash-redis\",published:!0};function Fe(d){let r=Object.assign({p:\"p\",code:\"code\",div:\"div\",pre:\"pre\",span:\"span\"},d.components);return(0,n.jsxDEV)(n.Fragment,{children:[(0,n.jsxDEV)(r.p,{children:[\"Upstash is a cloud-based service provider that offers a Redis-compatible service. In addition to that, we have also created an npm package called \",(0,n.jsxDEV)(r.code,{children:\"@upstash/redis\"},void 0,!1,{fileName:\"/Users/andreasthomas/github/chronark/chronark.com/content/projects/_mdx_bundler_entry_point-d4020c87-71eb-44e3-b2ae-09bf6c853639.mdx\",lineNumber:11,columnNumber:147},this),\". This package provides a strongly typed Redis client that uses HTTP instead of TCP to communicate with the database, making it perfect for serverless and edge runtimes.\"]},void 0,!0,{fileName:\"/Users/andreasthomas/github/chronark/chronark.com/content/projects/_mdx_bundler_entry_point-d4020c87-71eb-44e3-b2ae-09bf6c853639.mdx\",lineNumber:11,columnNumber:1},this),`\n`,(0,n.jsxDEV)(r.p,{children:\"Redis is a popular open-source, in-memory data structure store that can be used as a database, cache, and message broker. It is commonly used for web applications that require fast data access and manipulation. Redis clients communicate with Redis servers using the Redis protocol over TCP/IP.\"},void 0,!1,{fileName:\"/Users/andreasthomas/github/chronark/chronark.com/content/projects/_mdx_bundler_entry_point-d4020c87-71eb-44e3-b2ae-09bf6c853639.mdx\",lineNumber:13,columnNumber:1},this),`\n`,(0,n.jsxDEV)(r.p,{children:[\"However, in some cases, TCP is not available. For example, edge functions run on cloud platforms, which often block TCP connections for various reasons. This is where \",(0,n.jsxDEV)(r.code,{children:\"@upstash/redis\"},void 0,!1,{fileName:\"/Users/andreasthomas/github/chronark/chronark.com/content/projects/_mdx_bundler_entry_point-d4020c87-71eb-44e3-b2ae-09bf6c853639.mdx\",lineNumber:15,columnNumber:168},this),\" comes in handy. Instead of using TCP, it uses HTTP to communicate with the servers.\"]},void 0,!0,{fileName:\"/Users/andreasthomas/github/chronark/chronark.com/content/projects/_mdx_bundler_entry_point-d4020c87-71eb-44e3-b2ae-09bf6c853639.mdx\",lineNumber:15,columnNumber:1},this),`\n`,(0,n.jsxDEV)(r.p,{children:\"The package is designed to be easy to use and provides a simple API for Redis commands. It also includes support for Redis transactions and Lua scripting. It is written in TypeScript, which provides static typing and better code completion in modern editors.\"},void 0,!1,{fileName:\"/Users/andreasthomas/github/chronark/chronark.com/content/projects/_mdx_bundler_entry_point-d4020c87-71eb-44e3-b2ae-09bf6c853639.mdx\",lineNumber:17,columnNumber:1},this),`\n`,(0,n.jsxDEV)(r.p,{children:[\"One of the main benefits of using \",(0,n.jsxDEV)(r.code,{children:\"@upstash/redis\"},void 0,!1,{fileName:\"/Users/andreasthomas/github/chronark/chronark.com/content/projects/_mdx_bundler_entry_point-d4020c87-71eb-44e3-b2ae-09bf6c853639.mdx\",lineNumber:19,columnNumber:35},this),\" is that it is strongly typed. This means that you get better type checking and error handling in your code. Additionally, the package is designed to be lightweight and optimized for performance. This makes it an excellent choice for applications that require fast data access and manipulation.\"]},void 0,!0,{fileName:\"/Users/andreasthomas/github/chronark/chronark.com/content/projects/_mdx_bundler_entry_point-d4020c87-71eb-44e3-b2ae-09bf6c853639.mdx\",lineNumber:19,columnNumber:1},this),`\n`,(0,n.jsxDEV)(r.div,{\"data-rehype-pretty-code-fragment\":\"\",children:(0,n.jsxDEV)(r.pre,{\"data-language\":\"ts\",\"data-theme\":\"default\",children:(0,n.jsxDEV)(r.code,{\"data-language\":\"ts\",\"data-theme\":\"default\",children:[(0,n.jsxDEV)(r.span,{className:\"line\",children:[(0,n.jsxDEV)(r.span,{style:{color:\"#F97583\"},children:\"import\"},void 0,!1,{fileName:\"/Users/andreasthomas/github/chronark/chronark.com/content/projects/_mdx_bundler_entry_point-d4020c87-71eb-44e3-b2ae-09bf6c853639.mdx\",lineNumber:1,columnNumber:104},this),(0,n.jsxDEV)(r.span,{style:{color:\"#E1E4E8\"},children:\" { Redis } \"},void 0,!1,{fileName:\"/Users/andreasthomas/github/chronark/chronark.com/content/projects/_mdx_bundler_entry_point-d4020c87-71eb-44e3-b2ae-09bf6c853639.mdx\",lineNumber:1,columnNumber:146},this),(0,n.jsxDEV)(r.span,{style:{color:\"#F97583\"},children:\"from\"},void 0,!1,{fileName:\"/Users/andreasthomas/github/chronark/chronark.com/content/projects/_mdx_bundler_entry_point-d4020c87-71eb-44e3-b2ae-09bf6c853639.mdx\",lineNumber:1,columnNumber:193},this),(0,n.jsxDEV)(r.span,{style:{color:\"#E1E4E8\"},children:\" \"},void 0,!1,{fileName:\"/Users/andreasthomas/github/chronark/chronark.com/content/projects/_mdx_bundler_entry_point-d4020c87-71eb-44e3-b2ae-09bf6c853639.mdx\",lineNumber:1,columnNumber:233},this),(0,n.jsxDEV)(r.span,{style:{color:\"#9ECBFF\"},children:'\"@upstash/redis\"'},void 0,!1,{fileName:\"/Users/andreasthomas/github/chronark/chronark.com/content/projects/_mdx_bundler_entry_point-d4020c87-71eb-44e3-b2ae-09bf6c853639.mdx\",lineNumber:1,columnNumber:270},this)]},void 0,!0,{fileName:\"/Users/andreasthomas/github/chronark/chronark.com/content/projects/_mdx_bundler_entry_point-d4020c87-71eb-44e3-b2ae-09bf6c853639.mdx\",lineNumber:1,columnNumber:85},this),`\n`,(0,n.jsxDEV)(r.span,{className:\"line\",children:\" \"},void 0,!1,{fileName:\"/Users/andreasthomas/github/chronark/chronark.com/content/projects/_mdx_bundler_entry_point-d4020c87-71eb-44e3-b2ae-09bf6c853639.mdx\",lineNumber:2,columnNumber:1},this),`\n`,(0,n.jsxDEV)(r.span,{className:\"line\",children:[(0,n.jsxDEV)(r.span,{style:{color:\"#F97583\"},children:\"const\"},void 0,!1,{fileName:\"/Users/andreasthomas/github/chronark/chronark.com/content/projects/_mdx_bundler_entry_point-d4020c87-71eb-44e3-b2ae-09bf6c853639.mdx\",lineNumber:3,columnNumber:20},this),(0,n.jsxDEV)(r.span,{style:{color:\"#E1E4E8\"},children:\" \"},void 0,!1,{fileName:\"/Users/andreasthomas/github/chronark/chronark.com/content/projects/_mdx_bundler_entry_point-d4020c87-71eb-44e3-b2ae-09bf6c853639.mdx\",lineNumber:3,columnNumber:61},this),(0,n.jsxDEV)(r.span,{style:{color:\"#79B8FF\"},children:\"redis\"},void 0,!1,{fileName:\"/Users/andreasthomas/github/chronark/chronark.com/content/projects/_mdx_bundler_entry_point-d4020c87-71eb-44e3-b2ae-09bf6c853639.mdx\",lineNumber:3,columnNumber:98},this),(0,n.jsxDEV)(r.span,{style:{color:\"#E1E4E8\"},children:\" \"},void 0,!1,{fileName:\"/Users/andreasthomas/github/chronark/chronark.com/content/projects/_mdx_bundler_entry_point-d4020c87-71eb-44e3-b2ae-09bf6c853639.mdx\",lineNumber:3,columnNumber:139},this),(0,n.jsxDEV)(r.span,{style:{color:\"#F97583\"},children:\"=\"},void 0,!1,{fileName:\"/Users/andreasthomas/github/chronark/chronark.com/content/projects/_mdx_bundler_entry_point-d4020c87-71eb-44e3-b2ae-09bf6c853639.mdx\",lineNumber:3,columnNumber:176},this),(0,n.jsxDEV)(r.span,{style:{color:\"#E1E4E8\"},children:\" \"},void 0,!1,{fileName:\"/Users/andreasthomas/github/chronark/chronark.com/content/projects/_mdx_bundler_entry_point-d4020c87-71eb-44e3-b2ae-09bf6c853639.mdx\",lineNumber:3,columnNumber:213},this),(0,n.jsxDEV)(r.span,{style:{color:\"#F97583\"},children:\"new\"},void 0,!1,{fileName:\"/Users/andreasthomas/github/chronark/chronark.com/content/projects/_mdx_bundler_entry_point-d4020c87-71eb-44e3-b2ae-09bf6c853639.mdx\",lineNumber:3,columnNumber:250},this),(0,n.jsxDEV)(r.span,{style:{color:\"#E1E4E8\"},children:\" \"},void 0,!1,{fileName:\"/Users/andreasthomas/github/chronark/chronark.com/content/projects/_mdx_bundler_entry_point-d4020c87-71eb-44e3-b2ae-09bf6c853639.mdx\",lineNumber:3,columnNumber:289},this),(0,n.jsxDEV)(r.span,{style:{color:\"#B392F0\"},children:\"Redis\"},void 0,!1,{fileName:\"/Users/andreasthomas/github/chronark/chronark.com/content/projects/_mdx_bundler_entry_point-d4020c87-71eb-44e3-b2ae-09bf6c853639.mdx\",lineNumber:3,columnNumber:326},this),(0,n.jsxDEV)(r.span,{style:{color:\"#E1E4E8\"},children:\"({\"},void 0,!1,{fileName:\"/Users/andreasthomas/github/chronark/chronark.com/content/projects/_mdx_bundler_entry_point-d4020c87-71eb-44e3-b2ae-09bf6c853639.mdx\",lineNumber:3,columnNumber:367},this)]},void 0,!0,{fileName:\"/Users/andreasthomas/github/chronark/chronark.com/content/projects/_mdx_bundler_entry_point-d4020c87-71eb-44e3-b2ae-09bf6c853639.mdx\",lineNumber:3,columnNumber:1},this),`\n`,(0,n.jsxDEV)(r.span,{className:\"line\",children:[(0,n.jsxDEV)(r.span,{style:{color:\"#E1E4E8\"},children:\" url: <\"},void 0,!1,{fileName:\"/Users/andreasthomas/github/chronark/chronark.com/content/projects/_mdx_bundler_entry_point-d4020c87-71eb-44e3-b2ae-09bf6c853639.mdx\",lineNumber:4,columnNumber:20},this),(0,n.jsxDEV)(r.span,{style:{color:\"#B392F0\"},children:\"UPSTASH_REDIS_REST_URL\"},void 0,!1,{fileName:\"/Users/andreasthomas/github/chronark/chronark.com/content/projects/_mdx_bundler_entry_point-d4020c87-71eb-44e3-b2ae-09bf6c853639.mdx\",lineNumber:4,columnNumber:67},this),(0,n.jsxDEV)(r.span,{style:{color:\"#E1E4E8\"},children:\">,\"},void 0,!1,{fileName:\"/Users/andreasthomas/github/chronark/chronark.com/content/projects/_mdx_bundler_entry_point-d4020c87-71eb-44e3-b2ae-09bf6c853639.mdx\",lineNumber:4,columnNumber:125},this)]},void 0,!0,{fileName:\"/Users/andreasthomas/github/chronark/chronark.com/content/projects/_mdx_bundler_entry_point-d4020c87-71eb-44e3-b2ae-09bf6c853639.mdx\",lineNumber:4,columnNumber:1},this),`\n`,(0,n.jsxDEV)(r.span,{className:\"line\",children:[(0,n.jsxDEV)(r.span,{style:{color:\"#E1E4E8\"},children:\" token: <\"},void 0,!1,{fileName:\"/Users/andreasthomas/github/chronark/chronark.com/content/projects/_mdx_bundler_entry_point-d4020c87-71eb-44e3-b2ae-09bf6c853639.mdx\",lineNumber:5,columnNumber:20},this),(0,n.jsxDEV)(r.span,{style:{color:\"#B392F0\"},children:\"UPSTASH_REDIS_REST_TOKEN\"},void 0,!1,{fileName:\"/Users/andreasthomas/github/chronark/chronark.com/content/projects/_mdx_bundler_entry_point-d4020c87-71eb-44e3-b2ae-09bf6c853639.mdx\",lineNumber:5,columnNumber:69},this),(0,n.jsxDEV)(r.span,{style:{color:\"#E1E4E8\"},children:\">,\"},void 0,!1,{fileName:\"/Users/andreasthomas/github/chronark/chronark.com/content/projects/_mdx_bundler_entry_point-d4020c87-71eb-44e3-b2ae-09bf6c853639.mdx\",lineNumber:5,columnNumber:129},this)]},void 0,!0,{fileName:\"/Users/andreasthomas/github/chronark/chronark.com/content/projects/_mdx_bundler_entry_point-d4020c87-71eb-44e3-b2ae-09bf6c853639.mdx\",lineNumber:5,columnNumber:1},this),`\n`,(0,n.jsxDEV)(r.span,{className:\"line\",children:(0,n.jsxDEV)(r.span,{style:{color:\"#E1E4E8\"},children:\"})\"},void 0,!1,{fileName:\"/Users/andreasthomas/github/chronark/chronark.com/content/projects/_mdx_bundler_entry_point-d4020c87-71eb-44e3-b2ae-09bf6c853639.mdx\",lineNumber:6,columnNumber:20},this)},void 0,!1,{fileName:\"/Users/andreasthomas/github/chronark/chronark.com/content/projects/_mdx_bundler_entry_point-d4020c87-71eb-44e3-b2ae-09bf6c853639.mdx\",lineNumber:6,columnNumber:1},this),`\n`,(0,n.jsxDEV)(r.span,{className:\"line\",children:\" \"},void 0,!1,{fileName:\"/Users/andreasthomas/github/chronark/chronark.com/content/projects/_mdx_bundler_entry_point-d4020c87-71eb-44e3-b2ae-09bf6c853639.mdx\",lineNumber:7,columnNumber:1},this),`\n`,(0,n.jsxDEV)(r.span,{className:\"line\",children:(0,n.jsxDEV)(r.span,{style:{color:\"#6A737D\"},children:\"// string\"},void 0,!1,{fileName:\"/Users/andreasthomas/github/chronark/chronark.com/content/projects/_mdx_bundler_entry_point-d4020c87-71eb-44e3-b2ae-09bf6c853639.mdx\",lineNumber:8,columnNumber:20},this)},void 0,!1,{fileName:\"/Users/andreasthomas/github/chronark/chronark.com/content/projects/_mdx_bundler_entry_point-d4020c87-71eb-44e3-b2ae-09bf6c853639.mdx\",lineNumber:8,columnNumber:1},this),`\n`,(0,n.jsxDEV)(r.span,{className:\"line\",children:[(0,n.jsxDEV)(r.span,{style:{color:\"#F97583\"},children:\"await\"},void 0,!1,{fileName:\"/Users/andreasthomas/github/chronark/chronark.com/content/projects/_mdx_bundler_entry_point-d4020c87-71eb-44e3-b2ae-09bf6c853639.mdx\",lineNumber:9,columnNumber:20},this),(0,n.jsxDEV)(r.span,{style:{color:\"#E1E4E8\"},children:\" redis.\"},void 0,!1,{fileName:\"/Users/andreasthomas/github/chronark/chronark.com/content/projects/_mdx_bundler_entry_point-d4020c87-71eb-44e3-b2ae-09bf6c853639.mdx\",lineNumber:9,columnNumber:61},this),(0,n.jsxDEV)(r.span,{style:{color:\"#B392F0\"},children:\"set\"},void 0,!1,{fileName:\"/Users/andreasthomas/github/chronark/chronark.com/content/projects/_mdx_bundler_entry_point-d4020c87-71eb-44e3-b2ae-09bf6c853639.mdx\",lineNumber:9,columnNumber:104},this),(0,n.jsxDEV)(r.span,{style:{color:\"#E1E4E8\"},children:\"(\"},void 0,!1,{fileName:\"/Users/andreasthomas/github/chronark/chronark.com/content/projects/_mdx_bundler_entry_point-d4020c87-71eb-44e3-b2ae-09bf6c853639.mdx\",lineNumber:9,columnNumber:143},this),(0,n.jsxDEV)(r.span,{style:{color:\"#9ECBFF\"},children:\"'key'\"},void 0,!1,{fileName:\"/Users/andreasthomas/github/chronark/chronark.com/content/projects/_mdx_bundler_entry_point-d4020c87-71eb-44e3-b2ae-09bf6c853639.mdx\",lineNumber:9,columnNumber:180},this),(0,n.jsxDEV)(r.span,{style:{color:\"#E1E4E8\"},children:\", \"},void 0,!1,{fileName:\"/Users/andreasthomas/github/chronark/chronark.com/content/projects/_mdx_bundler_entry_point-d4020c87-71eb-44e3-b2ae-09bf6c853639.mdx\",lineNumber:9,columnNumber:229},this),(0,n.jsxDEV)(r.span,{style:{color:\"#9ECBFF\"},children:\"'value'\"},void 0,!1,{fileName:\"/Users/andreasthomas/github/chronark/chronark.com/content/projects/_mdx_bundler_entry_point-d4020c87-71eb-44e3-b2ae-09bf6c853639.mdx\",lineNumber:9,columnNumber:267},this),(0,n.jsxDEV)(r.span,{style:{color:\"#E1E4E8\"},children:\");\"},void 0,!1,{fileName:\"/Users/andreasthomas/github/chronark/chronark.com/content/projects/_mdx_bundler_entry_point-d4020c87-71eb-44e3-b2ae-09bf6c853639.mdx\",lineNumber:9,columnNumber:318},this)]},void 0,!0,{fileName:\"/Users/andreasthomas/github/chronark/chronark.com/content/projects/_mdx_bundler_entry_point-d4020c87-71eb-44e3-b2ae-09bf6c853639.mdx\",lineNumber:9,columnNumber:1},this),`\n`,(0,n.jsxDEV)(r.span,{className:\"line\",children:[(0,n.jsxDEV)(r.span,{style:{color:\"#F97583\"},children:\"let\"},void 0,!1,{fileName:\"/Users/andreasthomas/github/chronark/chronark.com/content/projects/_mdx_bundler_entry_point-d4020c87-71eb-44e3-b2ae-09bf6c853639.mdx\",lineNumber:10,columnNumber:20},this),(0,n.jsxDEV)(r.span,{style:{color:\"#E1E4E8\"},children:\" data \"},void 0,!1,{fileName:\"/Users/andreasthomas/github/chronark/chronark.com/content/projects/_mdx_bundler_entry_point-d4020c87-71eb-44e3-b2ae-09bf6c853639.mdx\",lineNumber:10,columnNumber:59},this),(0,n.jsxDEV)(r.span,{style:{color:\"#F97583\"},children:\"=\"},void 0,!1,{fileName:\"/Users/andreasthomas/github/chronark/chronark.com/content/projects/_mdx_bundler_entry_point-d4020c87-71eb-44e3-b2ae-09bf6c853639.mdx\",lineNumber:10,columnNumber:101},this),(0,n.jsxDEV)(r.span,{style:{color:\"#E1E4E8\"},children:\" \"},void 0,!1,{fileName:\"/Users/andreasthomas/github/chronark/chronark.com/content/projects/_mdx_bundler_entry_point-d4020c87-71eb-44e3-b2ae-09bf6c853639.mdx\",lineNumber:10,columnNumber:138},this),(0,n.jsxDEV)(r.span,{style:{color:\"#F97583\"},children:\"await\"},void 0,!1,{fileName:\"/Users/andreasthomas/github/chronark/chronark.com/content/projects/_mdx_bundler_entry_point-d4020c87-71eb-44e3-b2ae-09bf6c853639.mdx\",lineNumber:10,columnNumber:175},this),(0,n.jsxDEV)(r.span,{style:{color:\"#E1E4E8\"},children:\" redis.\"},void 0,!1,{fileName:\"/Users/andreasthomas/github/chronark/chronark.com/content/projects/_mdx_bundler_entry_point-d4020c87-71eb-44e3-b2ae-09bf6c853639.mdx\",lineNumber:10,columnNumber:216},this),(0,n.jsxDEV)(r.span,{style:{color:\"#B392F0\"},children:\"get\"},void 0,!1,{fileName:\"/Users/andreasthomas/github/chronark/chronark.com/content/projects/_mdx_bundler_entry_point-d4020c87-71eb-44e3-b2ae-09bf6c853639.mdx\",lineNumber:10,columnNumber:259},this),(0,n.jsxDEV)(r.span,{style:{color:\"#E1E4E8\"},children:\"(\"},void 0,!1,{fileName:\"/Users/andreasthomas/github/chronark/chronark.com/content/projects/_mdx_bundler_entry_point-d4020c87-71eb-44e3-b2ae-09bf6c853639.mdx\",lineNumber:10,columnNumber:298},this),(0,n.jsxDEV)(r.span,{style:{color:\"#9ECBFF\"},children:\"'key'\"},void 0,!1,{fileName:\"/Users/andreasthomas/github/chronark/chronark.com/content/projects/_mdx_bundler_entry_point-d4020c87-71eb-44e3-b2ae-09bf6c853639.mdx\",lineNumber:10,columnNumber:335},this),(0,n.jsxDEV)(r.span,{style:{color:\"#E1E4E8\"},children:\");\"},void 0,!1,{fileName:\"/Users/andreasthomas/github/chronark/chronark.com/content/projects/_mdx_bundler_entry_point-d4020c87-71eb-44e3-b2ae-09bf6c853639.mdx\",lineNumber:10,columnNumber:384},this)]},void 0,!0,{fileName:\"/Users/andreasthomas/github/chronark/chronark.com/content/projects/_mdx_bundler_entry_point-d4020c87-71eb-44e3-b2ae-09bf6c853639.mdx\",lineNumber:10,columnNumber:1},this),`\n`,(0,n.jsxDEV)(r.span,{className:\"line\",children:[(0,n.jsxDEV)(r.span,{style:{color:\"#E1E4E8\"},children:\"console.\"},void 0,!1,{fileName:\"/Users/andreasthomas/github/chronark/chronark.com/content/projects/_mdx_bundler_entry_point-d4020c87-71eb-44e3-b2ae-09bf6c853639.mdx\",lineNumber:11,columnNumber:20},this),(0,n.jsxDEV)(r.span,{style:{color:\"#B392F0\"},children:\"log\"},void 0,!1,{fileName:\"/Users/andreasthomas/github/chronark/chronark.com/content/projects/_mdx_bundler_entry_point-d4020c87-71eb-44e3-b2ae-09bf6c853639.mdx\",lineNumber:11,columnNumber:64},this),(0,n.jsxDEV)(r.span,{style:{color:\"#E1E4E8\"},children:\"(data)\"},void 0,!1,{fileName:\"/Users/andreasthomas/github/chronark/chronark.com/content/projects/_mdx_bundler_entry_point-d4020c87-71eb-44e3-b2ae-09bf6c853639.mdx\",lineNumber:11,columnNumber:103},this)]},void 0,!0,{fileName:\"/Users/andreasthomas/github/chronark/chronark.com/content/projects/_mdx_bundler_entry_point-d4020c87-71eb-44e3-b2ae-09bf6c853639.mdx\",lineNumber:11,columnNumber:1},this),`\n`,(0,n.jsxDEV)(r.span,{className:\"line\",children:\" \"},void 0,!1,{fileName:\"/Users/andreasthomas/github/chronark/chronark.com/content/projects/_mdx_bundler_entry_point-d4020c87-71eb-44e3-b2ae-09bf6c853639.mdx\",lineNumber:12,columnNumber:1},this),`\n`,(0,n.jsxDEV)(r.span,{className:\"line\",children:[(0,n.jsxDEV)(r.span,{style:{color:\"#F97583\"},children:\"await\"},void 0,!1,{fileName:\"/Users/andreasthomas/github/chronark/chronark.com/content/projects/_mdx_bundler_entry_point-d4020c87-71eb-44e3-b2ae-09bf6c853639.mdx\",lineNumber:13,columnNumber:20},this),(0,n.jsxDEV)(r.span,{style:{color:\"#E1E4E8\"},children:\" redis.\"},void 0,!1,{fileName:\"/Users/andreasthomas/github/chronark/chronark.com/content/projects/_mdx_bundler_entry_point-d4020c87-71eb-44e3-b2ae-09bf6c853639.mdx\",lineNumber:13,columnNumber:61},this),(0,n.jsxDEV)(r.span,{style:{color:\"#B392F0\"},children:\"set\"},void 0,!1,{fileName:\"/Users/andreasthomas/github/chronark/chronark.com/content/projects/_mdx_bundler_entry_point-d4020c87-71eb-44e3-b2ae-09bf6c853639.mdx\",lineNumber:13,columnNumber:104},this),(0,n.jsxDEV)(r.span,{style:{color:\"#E1E4E8\"},children:\"(\"},void 0,!1,{fileName:\"/Users/andreasthomas/github/chronark/chronark.com/content/projects/_mdx_bundler_entry_point-d4020c87-71eb-44e3-b2ae-09bf6c853639.mdx\",lineNumber:13,columnNumber:143},this),(0,n.jsxDEV)(r.span,{style:{color:\"#9ECBFF\"},children:\"'key2'\"},void 0,!1,{fileName:\"/Users/andreasthomas/github/chronark/chronark.com/content/projects/_mdx_bundler_entry_point-d4020c87-71eb-44e3-b2ae-09bf6c853639.mdx\",lineNumber:13,columnNumber:180},this),(0,n.jsxDEV)(r.span,{style:{color:\"#E1E4E8\"},children:\", \"},void 0,!1,{fileName:\"/Users/andreasthomas/github/chronark/chronark.com/content/projects/_mdx_bundler_entry_point-d4020c87-71eb-44e3-b2ae-09bf6c853639.mdx\",lineNumber:13,columnNumber:230},this),(0,n.jsxDEV)(r.span,{style:{color:\"#9ECBFF\"},children:\"'value2'\"},void 0,!1,{fileName:\"/Users/andreasthomas/github/chronark/chronark.com/content/projects/_mdx_bundler_entry_point-d4020c87-71eb-44e3-b2ae-09bf6c853639.mdx\",lineNumber:13,columnNumber:268},this),(0,n.jsxDEV)(r.span,{style:{color:\"#E1E4E8\"},children:\", {ex: \"},void 0,!1,{fileName:\"/Users/andreasthomas/github/chronark/chronark.com/content/projects/_mdx_bundler_entry_point-d4020c87-71eb-44e3-b2ae-09bf6c853639.mdx\",lineNumber:13,columnNumber:320},this),(0,n.jsxDEV)(r.span,{style:{color:\"#79B8FF\"},children:\"1\"},void 0,!1,{fileName:\"/Users/andreasthomas/github/chronark/chronark.com/content/projects/_mdx_bundler_entry_point-d4020c87-71eb-44e3-b2ae-09bf6c853639.mdx\",lineNumber:13,columnNumber:363},this),(0,n.jsxDEV)(r.span,{style:{color:\"#E1E4E8\"},children:\"});\"},void 0,!1,{fileName:\"/Users/andreasthomas/github/chronark/chronark.com/content/projects/_mdx_bundler_entry_point-d4020c87-71eb-44e3-b2ae-09bf6c853639.mdx\",lineNumber:13,columnNumber:400},this)]},void 0,!0,{fileName:\"/Users/andreasthomas/github/chronark/chronark.com/content/projects/_mdx_bundler_entry_point-d4020c87-71eb-44e3-b2ae-09bf6c853639.mdx\",lineNumber:13,columnNumber:1},this),`\n`,(0,n.jsxDEV)(r.span,{className:\"line\",children:\" \"},void 0,!1,{fileName:\"/Users/andreasthomas/github/chronark/chronark.com/content/projects/_mdx_bundler_entry_point-d4020c87-71eb-44e3-b2ae-09bf6c853639.mdx\",lineNumber:14,columnNumber:1},this),`\n`,(0,n.jsxDEV)(r.span,{className:\"line\",children:(0,n.jsxDEV)(r.span,{style:{color:\"#6A737D\"},children:\"// sorted set\"},void 0,!1,{fileName:\"/Users/andreasthomas/github/chronark/chronark.com/content/projects/_mdx_bundler_entry_point-d4020c87-71eb-44e3-b2ae-09bf6c853639.mdx\",lineNumber:15,columnNumber:20},this)},void 0,!1,{fileName:\"/Users/andreasthomas/github/chronark/chronark.com/content/projects/_mdx_bundler_entry_point-d4020c87-71eb-44e3-b2ae-09bf6c853639.mdx\",lineNumber:15,columnNumber:1},this),`\n`,(0,n.jsxDEV)(r.span,{className:\"line\",children:[(0,n.jsxDEV)(r.span,{style:{color:\"#F97583\"},children:\"await\"},void 0,!1,{fileName:\"/Users/andreasthomas/github/chronark/chronark.com/content/projects/_mdx_bundler_entry_point-d4020c87-71eb-44e3-b2ae-09bf6c853639.mdx\",lineNumber:16,columnNumber:20},this),(0,n.jsxDEV)(r.span,{style:{color:\"#E1E4E8\"},children:\" redis.\"},void 0,!1,{fileName:\"/Users/andreasthomas/github/chronark/chronark.com/content/projects/_mdx_bundler_entry_point-d4020c87-71eb-44e3-b2ae-09bf6c853639.mdx\",lineNumber:16,columnNumber:61},this),(0,n.jsxDEV)(r.span,{style:{color:\"#B392F0\"},children:\"zadd\"},void 0,!1,{fileName:\"/Users/andreasthomas/github/chronark/chronark.com/content/projects/_mdx_bundler_entry_point-d4020c87-71eb-44e3-b2ae-09bf6c853639.mdx\",lineNumber:16,columnNumber:104},this),(0,n.jsxDEV)(r.span,{style:{color:\"#E1E4E8\"},children:\"(\"},void 0,!1,{fileName:\"/Users/andreasthomas/github/chronark/chronark.com/content/projects/_mdx_bundler_entry_point-d4020c87-71eb-44e3-b2ae-09bf6c853639.mdx\",lineNumber:16,columnNumber:144},this),(0,n.jsxDEV)(r.span,{style:{color:\"#9ECBFF\"},children:\"'scores'\"},void 0,!1,{fileName:\"/Users/andreasthomas/github/chronark/chronark.com/content/projects/_mdx_bundler_entry_point-d4020c87-71eb-44e3-b2ae-09bf6c853639.mdx\",lineNumber:16,columnNumber:181},this),(0,n.jsxDEV)(r.span,{style:{color:\"#E1E4E8\"},children:\", { score: \"},void 0,!1,{fileName:\"/Users/andreasthomas/github/chronark/chronark.com/content/projects/_mdx_bundler_entry_point-d4020c87-71eb-44e3-b2ae-09bf6c853639.mdx\",lineNumber:16,columnNumber:233},this),(0,n.jsxDEV)(r.span,{style:{color:\"#79B8FF\"},children:\"1\"},void 0,!1,{fileName:\"/Users/andreasthomas/github/chronark/chronark.com/content/projects/_mdx_bundler_entry_point-d4020c87-71eb-44e3-b2ae-09bf6c853639.mdx\",lineNumber:16,columnNumber:280},this),(0,n.jsxDEV)(r.span,{style:{color:\"#E1E4E8\"},children:\", member: \"},void 0,!1,{fileName:\"/Users/andreasthomas/github/chronark/chronark.com/content/projects/_mdx_bundler_entry_point-d4020c87-71eb-44e3-b2ae-09bf6c853639.mdx\",lineNumber:16,columnNumber:317},this),(0,n.jsxDEV)(r.span,{style:{color:\"#9ECBFF\"},children:\"'team1'\"},void 0,!1,{fileName:\"/Users/andreasthomas/github/chronark/chronark.com/content/projects/_mdx_bundler_entry_point-d4020c87-71eb-44e3-b2ae-09bf6c853639.mdx\",lineNumber:16,columnNumber:363},this),(0,n.jsxDEV)(r.span,{style:{color:\"#E1E4E8\"},children:\" })\"},void 0,!1,{fileName:\"/Users/andreasthomas/github/chronark/chronark.com/content/projects/_mdx_bundler_entry_point-d4020c87-71eb-44e3-b2ae-09bf6c853639.mdx\",lineNumber:16,columnNumber:414},this)]},void 0,!0,{fileName:\"/Users/andreasthomas/github/chronark/chronark.com/content/projects/_mdx_bundler_entry_point-d4020c87-71eb-44e3-b2ae-09bf6c853639.mdx\",lineNumber:16,columnNumber:1},this),`\n`,(0,n.jsxDEV)(r.span,{className:\"line\",children:[(0,n.jsxDEV)(r.span,{style:{color:\"#E1E4E8\"},children:\"data \"},void 0,!1,{fileName:\"/Users/andreasthomas/github/chronark/chronark.com/content/projects/_mdx_bundler_entry_point-d4020c87-71eb-44e3-b2ae-09bf6c853639.mdx\",lineNumber:17,columnNumber:20},this),(0,n.jsxDEV)(r.span,{style:{color:\"#F97583\"},children:\"=\"},void 0,!1,{fileName:\"/Users/andreasthomas/github/chronark/chronark.com/content/projects/_mdx_bundler_entry_point-d4020c87-71eb-44e3-b2ae-09bf6c853639.mdx\",lineNumber:17,columnNumber:61},this),(0,n.jsxDEV)(r.span,{style:{color:\"#E1E4E8\"},children:\" \"},void 0,!1,{fileName:\"/Users/andreasthomas/github/chronark/chronark.com/content/projects/_mdx_bundler_entry_point-d4020c87-71eb-44e3-b2ae-09bf6c853639.mdx\",lineNumber:17,columnNumber:98},this),(0,n.jsxDEV)(r.span,{style:{color:\"#F97583\"},children:\"await\"},void 0,!1,{fileName:\"/Users/andreasthomas/github/chronark/chronark.com/content/projects/_mdx_bundler_entry_point-d4020c87-71eb-44e3-b2ae-09bf6c853639.mdx\",lineNumber:17,columnNumber:135},this),(0,n.jsxDEV)(r.span,{style:{color:\"#E1E4E8\"},children:\" redis.\"},void 0,!1,{fileName:\"/Users/andreasthomas/github/chronark/chronark.com/content/projects/_mdx_bundler_entry_point-d4020c87-71eb-44e3-b2ae-09bf6c853639.mdx\",lineNumber:17,columnNumber:176},this),(0,n.jsxDEV)(r.span,{style:{color:\"#B392F0\"},children:\"zrange\"},void 0,!1,{fileName:\"/Users/andreasthomas/github/chronark/chronark.com/content/projects/_mdx_bundler_entry_point-d4020c87-71eb-44e3-b2ae-09bf6c853639.mdx\",lineNumber:17,columnNumber:219},this),(0,n.jsxDEV)(r.span,{style:{color:\"#E1E4E8\"},children:\"(\"},void 0,!1,{fileName:\"/Users/andreasthomas/github/chronark/chronark.com/content/projects/_mdx_bundler_entry_point-d4020c87-71eb-44e3-b2ae-09bf6c853639.mdx\",lineNumber:17,columnNumber:261},this),(0,n.jsxDEV)(r.span,{style:{color:\"#9ECBFF\"},children:\"'scores'\"},void 0,!1,{fileName:\"/Users/andreasthomas/github/chronark/chronark.com/content/projects/_mdx_bundler_entry_point-d4020c87-71eb-44e3-b2ae-09bf6c853639.mdx\",lineNumber:17,columnNumber:298},this),(0,n.jsxDEV)(r.span,{style:{color:\"#E1E4E8\"},children:\", \"},void 0,!1,{fileName:\"/Users/andreasthomas/github/chronark/chronark.com/content/projects/_mdx_bundler_entry_point-d4020c87-71eb-44e3-b2ae-09bf6c853639.mdx\",lineNumber:17,columnNumber:350},this),(0,n.jsxDEV)(r.span,{style:{color:\"#79B8FF\"},children:\"0\"},void 0,!1,{fileName:\"/Users/andreasthomas/github/chronark/chronark.com/content/projects/_mdx_bundler_entry_point-d4020c87-71eb-44e3-b2ae-09bf6c853639.mdx\",lineNumber:17,columnNumber:388},this),(0,n.jsxDEV)(r.span,{style:{color:\"#E1E4E8\"},children:\", \"},void 0,!1,{fileName:\"/Users/andreasthomas/github/chronark/chronark.com/content/projects/_mdx_bundler_entry_point-d4020c87-71eb-44e3-b2ae-09bf6c853639.mdx\",lineNumber:17,columnNumber:425},this),(0,n.jsxDEV)(r.span,{style:{color:\"#79B8FF\"},children:\"100\"},void 0,!1,{fileName:\"/Users/andreasthomas/github/chronark/chronark.com/content/projects/_mdx_bundler_entry_point-d4020c87-71eb-44e3-b2ae-09bf6c853639.mdx\",lineNumber:17,columnNumber:463},this),(0,n.jsxDEV)(r.span,{style:{color:\"#E1E4E8\"},children:\" )\"},void 0,!1,{fileName:\"/Users/andreasthomas/github/chronark/chronark.com/content/projects/_mdx_bundler_entry_point-d4020c87-71eb-44e3-b2ae-09bf6c853639.mdx\",lineNumber:17,columnNumber:502},this)]},void 0,!0,{fileName:\"/Users/andreasthomas/github/chronark/chronark.com/content/projects/_mdx_bundler_entry_point-d4020c87-71eb-44e3-b2ae-09bf6c853639.mdx\",lineNumber:17,columnNumber:1},this),`\n`,(0,n.jsxDEV)(r.span,{className:\"line\",children:[(0,n.jsxDEV)(r.span,{style:{color:\"#E1E4E8\"},children:\"console.\"},void 0,!1,{fileName:\"/Users/andreasthomas/github/chronark/chronark.com/content/projects/_mdx_bundler_entry_point-d4020c87-71eb-44e3-b2ae-09bf6c853639.mdx\",lineNumber:18,columnNumber:20},this),(0,n.jsxDEV)(r.span,{style:{color:\"#B392F0\"},children:\"log\"},void 0,!1,{fileName:\"/Users/andreasthomas/github/chronark/chronark.com/content/projects/_mdx_bundler_entry_point-d4020c87-71eb-44e3-b2ae-09bf6c853639.mdx\",lineNumber:18,columnNumber:64},this),(0,n.jsxDEV)(r.span,{style:{color:\"#E1E4E8\"},children:\"(data)\"},void 0,!1,{fileName:\"/Users/andreasthomas/github/chronark/chronark.com/content/projects/_mdx_bundler_entry_point-d4020c87-71eb-44e3-b2ae-09bf6c853639.mdx\",lineNumber:18,columnNumber:103},this)]},void 0,!0,{fileName:\"/Users/andreasthomas/github/chronark/chronark.com/content/projects/_mdx_bundler_entry_point-d4020c87-71eb-44e3-b2ae-09bf6c853639.mdx\",lineNumber:18,columnNumber:1},this),`\n`,(0,n.jsxDEV)(r.span,{className:\"line\",children:\" \"},void 0,!1,{fileName:\"/Users/andreasthomas/github/chronark/chronark.com/content/projects/_mdx_bundler_entry_point-d4020c87-71eb-44e3-b2ae-09bf6c853639.mdx\",lineNumber:19,columnNumber:1},this),`\n`,(0,n.jsxDEV)(r.span,{className:\"line\",children:(0,n.jsxDEV)(r.span,{style:{color:\"#6A737D\"},children:\"// list\"},void 0,!1,{fileName:\"/Users/andreasthomas/github/chronark/chronark.com/content/projects/_mdx_bundler_entry_point-d4020c87-71eb-44e3-b2ae-09bf6c853639.mdx\",lineNumber:20,columnNumber:20},this)},void 0,!1,{fileName:\"/Users/andreasthomas/github/chronark/chronark.com/content/projects/_mdx_bundler_entry_point-d4020c87-71eb-44e3-b2ae-09bf6c853639.mdx\",lineNumber:20,columnNumber:1},this),`\n`,(0,n.jsxDEV)(r.span,{className:\"line\",children:[(0,n.jsxDEV)(r.span,{style:{color:\"#F97583\"},children:\"await\"},void 0,!1,{fileName:\"/Users/andreasthomas/github/chronark/chronark.com/content/projects/_mdx_bundler_entry_point-d4020c87-71eb-44e3-b2ae-09bf6c853639.mdx\",lineNumber:21,columnNumber:20},this),(0,n.jsxDEV)(r.span,{style:{color:\"#E1E4E8\"},children:\" redis.\"},void 0,!1,{fileName:\"/Users/andreasthomas/github/chronark/chronark.com/content/projects/_mdx_bundler_entry_point-d4020c87-71eb-44e3-b2ae-09bf6c853639.mdx\",lineNumber:21,columnNumber:61},this),(0,n.jsxDEV)(r.span,{style:{color:\"#B392F0\"},children:\"lpush\"},void 0,!1,{fileName:\"/Users/andreasthomas/github/chronark/chronark.com/content/projects/_mdx_bundler_entry_point-d4020c87-71eb-44e3-b2ae-09bf6c853639.mdx\",lineNumber:21,columnNumber:104},this),(0,n.jsxDEV)(r.span,{style:{color:\"#E1E4E8\"},children:\"(\"},void 0,!1,{fileName:\"/Users/andreasthomas/github/chronark/chronark.com/content/projects/_mdx_bundler_entry_point-d4020c87-71eb-44e3-b2ae-09bf6c853639.mdx\",lineNumber:21,columnNumber:145},this),(0,n.jsxDEV)(r.span,{style:{color:\"#9ECBFF\"},children:\"'elements'\"},void 0,!1,{fileName:\"/Users/andreasthomas/github/chronark/chronark.com/content/projects/_mdx_bundler_entry_point-d4020c87-71eb-44e3-b2ae-09bf6c853639.mdx\",lineNumber:21,columnNumber:182},this),(0,n.jsxDEV)(r.span,{style:{color:\"#E1E4E8\"},children:\", \"},void 0,!1,{fileName:\"/Users/andreasthomas/github/chronark/chronark.com/content/projects/_mdx_bundler_entry_point-d4020c87-71eb-44e3-b2ae-09bf6c853639.mdx\",lineNumber:21,columnNumber:236},this),(0,n.jsxDEV)(r.span,{style:{color:\"#9ECBFF\"},children:\"'magnesium'\"},void 0,!1,{fileName:\"/Users/andreasthomas/github/chronark/chronark.com/content/projects/_mdx_bundler_entry_point-d4020c87-71eb-44e3-b2ae-09bf6c853639.mdx\",lineNumber:21,columnNumber:274},this),(0,n.jsxDEV)(r.span,{style:{color:\"#E1E4E8\"},children:\")\"},void 0,!1,{fileName:\"/Users/andreasthomas/github/chronark/chronark.com/content/projects/_mdx_bundler_entry_point-d4020c87-71eb-44e3-b2ae-09bf6c853639.mdx\",lineNumber:21,columnNumber:329},this)]},void 0,!0,{fileName:\"/Users/andreasthomas/github/chronark/chronark.com/content/projects/_mdx_bundler_entry_point-d4020c87-71eb-44e3-b2ae-09bf6c853639.mdx\",lineNumber:21,columnNumber:1},this),`\n`,(0,n.jsxDEV)(r.span,{className:\"line\",children:[(0,n.jsxDEV)(r.span,{style:{color:\"#E1E4E8\"},children:\"data \"},void 0,!1,{fileName:\"/Users/andreasthomas/github/chronark/chronark.com/content/projects/_mdx_bundler_entry_point-d4020c87-71eb-44e3-b2ae-09bf6c853639.mdx\",lineNumber:22,columnNumber:20},this),(0,n.jsxDEV)(r.span,{style:{color:\"#F97583\"},children:\"=\"},void 0,!1,{fileName:\"/Users/andreasthomas/github/chronark/chronark.com/content/projects/_mdx_bundler_entry_point-d4020c87-71eb-44e3-b2ae-09bf6c853639.mdx\",lineNumber:22,columnNumber:61},this),(0,n.jsxDEV)(r.span,{style:{color:\"#E1E4E8\"},children:\" \"},void 0,!1,{fileName:\"/Users/andreasthomas/github/chronark/chronark.com/content/projects/_mdx_bundler_entry_point-d4020c87-71eb-44e3-b2ae-09bf6c853639.mdx\",lineNumber:22,columnNumber:98},this),(0,n.jsxDEV)(r.span,{style:{color:\"#F97583\"},children:\"await\"},void 0,!1,{fileName:\"/Users/andreasthomas/github/chronark/chronark.com/content/projects/_mdx_bundler_entry_point-d4020c87-71eb-44e3-b2ae-09bf6c853639.mdx\",lineNumber:22,columnNumber:135},this),(0,n.jsxDEV)(r.span,{style:{color:\"#E1E4E8\"},children:\" redis.\"},void 0,!1,{fileName:\"/Users/andreasthomas/github/chronark/chronark.com/content/projects/_mdx_bundler_entry_point-d4020c87-71eb-44e3-b2ae-09bf6c853639.mdx\",lineNumber:22,columnNumber:176},this),(0,n.jsxDEV)(r.span,{style:{color:\"#B392F0\"},children:\"lrange\"},void 0,!1,{fileName:\"/Users/andreasthomas/github/chronark/chronark.com/content/projects/_mdx_bundler_entry_point-d4020c87-71eb-44e3-b2ae-09bf6c853639.mdx\",lineNumber:22,columnNumber:219},this),(0,n.jsxDEV)(r.span,{style:{color:\"#E1E4E8\"},children:\"(\"},void 0,!1,{fileName:\"/Users/andreasthomas/github/chronark/chronark.com/content/projects/_mdx_bundler_entry_point-d4020c87-71eb-44e3-b2ae-09bf6c853639.mdx\",lineNumber:22,columnNumber:261},this),(0,n.jsxDEV)(r.span,{style:{color:\"#9ECBFF\"},children:\"'elements'\"},void 0,!1,{fileName:\"/Users/andreasthomas/github/chronark/chronark.com/content/projects/_mdx_bundler_entry_point-d4020c87-71eb-44e3-b2ae-09bf6c853639.mdx\",lineNumber:22,columnNumber:298},this),(0,n.jsxDEV)(r.span,{style:{color:\"#E1E4E8\"},children:\", \"},void 0,!1,{fileName:\"/Users/andreasthomas/github/chronark/chronark.com/content/projects/_mdx_bundler_entry_point-d4020c87-71eb-44e3-b2ae-09bf6c853639.mdx\",lineNumber:22,columnNumber:352},this),(0,n.jsxDEV)(r.span,{style:{color:\"#79B8FF\"},children:\"0\"},void 0,!1,{fileName:\"/Users/andreasthomas/github/chronark/chronark.com/content/projects/_mdx_bundler_entry_point-d4020c87-71eb-44e3-b2ae-09bf6c853639.mdx\",lineNumber:22,columnNumber:390},this),(0,n.jsxDEV)(r.span,{style:{color:\"#E1E4E8\"},children:\", \"},void 0,!1,{fileName:\"/Users/andreasthomas/github/chronark/chronark.com/content/projects/_mdx_bundler_entry_point-d4020c87-71eb-44e3-b2ae-09bf6c853639.mdx\",lineNumber:22,columnNumber:427},this),(0,n.jsxDEV)(r.span,{style:{color:\"#79B8FF\"},children:\"100\"},void 0,!1,{fileName:\"/Users/andreasthomas/github/chronark/chronark.com/content/projects/_mdx_bundler_entry_point-d4020c87-71eb-44e3-b2ae-09bf6c853639.mdx\",lineNumber:22,columnNumber:465},this),(0,n.jsxDEV)(r.span,{style:{color:\"#E1E4E8\"},children:\" )\"},void 0,!1,{fileName:\"/Users/andreasthomas/github/chronark/chronark.com/content/projects/_mdx_bundler_entry_point-d4020c87-71eb-44e3-b2ae-09bf6c853639.mdx\",lineNumber:22,columnNumber:504},this)]},void 0,!0,{fileName:\"/Users/andreasthomas/github/chronark/chronark.com/content/projects/_mdx_bundler_entry_point-d4020c87-71eb-44e3-b2ae-09bf6c853639.mdx\",lineNumber:22,columnNumber:1},this),`\n`,(0,n.jsxDEV)(r.span,{className:\"line\",children:[(0,n.jsxDEV)(r.span,{style:{color:\"#E1E4E8\"},children:\"console.\"},void 0,!1,{fileName:\"/Users/andreasthomas/github/chronark/chronark.com/content/projects/_mdx_bundler_entry_point-d4020c87-71eb-44e3-b2ae-09bf6c853639.mdx\",lineNumber:23,columnNumber:20},this),(0,n.jsxDEV)(r.span,{style:{color:\"#B392F0\"},children:\"log\"},void 0,!1,{fileName:\"/Users/andreasthomas/github/chronark/chronark.com/content/projects/_mdx_bundler_entry_point-d4020c87-71eb-44e3-b2ae-09bf6c853639.mdx\",lineNumber:23,columnNumber:64},this),(0,n.jsxDEV)(r.span,{style:{color:\"#E1E4E8\"},children:\"(data)\"},void 0,!1,{fileName:\"/Users/andreasthomas/github/chronark/chronark.com/content/projects/_mdx_bundler_entry_point-d4020c87-71eb-44e3-b2ae-09bf6c853639.mdx\",lineNumber:23,columnNumber:103},this)]},void 0,!0,{fileName:\"/Users/andreasthomas/github/chronark/chronark.com/content/projects/_mdx_bundler_entry_point-d4020c87-71eb-44e3-b2ae-09bf6c853639.mdx\",lineNumber:23,columnNumber:1},this)]},void 0,!0,{fileName:\"/Users/andreasthomas/github/chronark/chronark.com/content/projects/_mdx_bundler_entry_point-d4020c87-71eb-44e3-b2ae-09bf6c853639.mdx\",lineNumber:1,columnNumber:79},this)},void 0,!1,{fileName:\"/Users/andreasthomas/github/chronark/chronark.com/content/projects/_mdx_bundler_entry_point-d4020c87-71eb-44e3-b2ae-09bf6c853639.mdx\",lineNumber:1,columnNumber:1},this)},void 0,!1,{fileName:\"/Users/andreasthomas/github/chronark/chronark.com/content/projects/_mdx_bundler_entry_point-d4020c87-71eb-44e3-b2ae-09bf6c853639.mdx\",lineNumber:21,columnNumber:1},this)]},void 0,!0,{fileName:\"/Users/andreasthomas/github/chronark/chronark.com/content/projects/_mdx_bundler_entry_point-d4020c87-71eb-44e3-b2ae-09bf6c853639.mdx\",lineNumber:1,columnNumber:1},this)}function pr(d={}){let{wrapper:r}=d.components||{};return r?(0,n.jsxDEV)(r,Object.assign({},d,{children:(0,n.jsxDEV)(Fe,d,void 0,!1,{fileName:\"/Users/andreasthomas/github/chronark/chronark.com/content/projects/_mdx_bundler_entry_point-d4020c87-71eb-44e3-b2ae-09bf6c853639.mdx\"},this)}),void 0,!1,{fileName:\"/Users/andreasthomas/github/chronark/chronark.com/content/projects/_mdx_bundler_entry_point-d4020c87-71eb-44e3-b2ae-09bf6c853639.mdx\"},this):Fe(d)}var Nr=pr;return fr(yr);})();\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/upstash-redis.mdx",
|
|
"_raw": {
|
|
"sourceFilePath": "projects/upstash-redis.mdx",
|
|
"sourceFileName": "upstash-redis.mdx",
|
|
"sourceFileDir": "projects",
|
|
"contentType": "mdx",
|
|
"flattenedPath": "projects/upstash-redis"
|
|
},
|
|
"type": "Project",
|
|
"path": "/projects/upstash-redis",
|
|
"slug": "upstash-redis"
|
|
},
|
|
"documentHash": "1679831759268",
|
|
"hasWarnings": false,
|
|
"documentTypeName": "Project"
|
|
},
|
|
"projects/upstash-web-analytics.mdx": {
|
|
"document": {
|
|
"published": true,
|
|
"title": "Upstash Web Analytics",
|
|
"description": "A library to record and analyse web page traffic and user behaviour",
|
|
"repository": "upstash/web-analytics",
|
|
"body": {
|
|
"raw": "\nComing soon",
|
|
"code": "var Component=(()=>{var sr=Object.create;var A=Object.defineProperty;var cr=Object.getOwnPropertyDescriptor;var fr=Object.getOwnPropertyNames;var lr=Object.getPrototypeOf,dr=Object.prototype.hasOwnProperty;var q=(s,c)=>()=>(c||s((c={exports:{}}).exports,c),c.exports),vr=(s,c)=>{for(var b in c)A(s,b,{get:c[b],enumerable:!0})},_e=(s,c,b,E)=>{if(c&&typeof c==\"object\"||typeof c==\"function\")for(let m of fr(c))!dr.call(s,m)&&m!==b&&A(s,m,{get:()=>c[m],enumerable:!(E=cr(c,m))||E.enumerable});return s};var pr=(s,c,b)=>(b=s!=null?sr(lr(s)):{},_e(c||!s||!s.__esModule?A(b,\"default\",{value:s,enumerable:!0}):b,s)),br=s=>_e(A({},\"__esModule\",{value:!0}),s);var Te=q((_r,Re)=>{Re.exports=React});var Ce=q(z=>{\"use strict\";(function(){\"use strict\";var s=Te(),c=Symbol.for(\"react.element\"),b=Symbol.for(\"react.portal\"),E=Symbol.for(\"react.fragment\"),m=Symbol.for(\"react.strict_mode\"),X=Symbol.for(\"react.profiler\"),K=Symbol.for(\"react.provider\"),H=Symbol.for(\"react.context\"),O=Symbol.for(\"react.forward_ref\"),I=Symbol.for(\"react.suspense\"),W=Symbol.for(\"react.suspense_list\"),P=Symbol.for(\"react.memo\"),Y=Symbol.for(\"react.lazy\"),Se=Symbol.for(\"react.offscreen\"),J=Symbol.iterator,je=\"@@iterator\";function xe(e){if(e===null||typeof e!=\"object\")return null;var r=J&&e[J]||e[je];return typeof r==\"function\"?r:null}var _=s.__SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED;function d(e){{for(var r=arguments.length,t=new Array(r>1?r-1:0),n=1;n<r;n++)t[n-1]=arguments[n];ke(\"error\",e,t)}}function ke(e,r,t){{var n=_.ReactDebugCurrentFrame,i=n.getStackAddendum();i!==\"\"&&(r+=\"%s\",t=t.concat([i]));var u=t.map(function(o){return String(o)});u.unshift(\"Warning: \"+r),Function.prototype.apply.call(console[e],console,u)}}var De=!1,Ae=!1,Fe=!1,Ie=!1,We=!1,Z;Z=Symbol.for(\"react.module.reference\");function Ye(e){return!!(typeof e==\"string\"||typeof e==\"function\"||e===E||e===X||We||e===m||e===I||e===W||Ie||e===Se||De||Ae||Fe||typeof e==\"object\"&&e!==null&&(e.$$typeof===Y||e.$$typeof===P||e.$$typeof===K||e.$$typeof===H||e.$$typeof===O||e.$$typeof===Z||e.getModuleId!==void 0))}function $e(e,r,t){var n=e.displayName;if(n)return n;var i=r.displayName||r.name||\"\";return i!==\"\"?t+\"(\"+i+\")\":t}function Q(e){return e.displayName||\"Context\"}function h(e){if(e==null)return null;if(typeof e.tag==\"number\"&&d(\"Received an unexpected object in getComponentNameFromType(). This is likely a bug in React. Please file an issue.\"),typeof e==\"function\")return e.displayName||e.name||null;if(typeof e==\"string\")return e;switch(e){case E:return\"Fragment\";case b:return\"Portal\";case X:return\"Profiler\";case m:return\"StrictMode\";case I:return\"Suspense\";case W:return\"SuspenseList\"}if(typeof e==\"object\")switch(e.$$typeof){case H:var r=e;return Q(r)+\".Consumer\";case K:var t=e;return Q(t._context)+\".Provider\";case O:return $e(e,e.render,\"ForwardRef\");case P:var n=e.displayName||null;return n!==null?n:h(e.type)||\"Memo\";case Y:{var i=e,u=i._payload,o=i._init;try{return h(o(u))}catch{return null}}}return null}var y=Object.assign,C=0,ee,re,te,ne,ae,oe,ie;function ue(){}ue.__reactDisabledLog=!0;function Ne(){{if(C===0){ee=console.log,re=console.info,te=console.warn,ne=console.error,ae=console.group,oe=console.groupCollapsed,ie=console.groupEnd;var e={configurable:!0,enumerable:!0,value:ue,writable:!0};Object.defineProperties(console,{info:e,log:e,warn:e,error:e,group:e,groupCollapsed:e,groupEnd:e})}C++}}function Me(){{if(C--,C===0){var e={configurable:!0,enumerable:!0,writable:!0};Object.defineProperties(console,{log:y({},e,{value:ee}),info:y({},e,{value:re}),warn:y({},e,{value:te}),error:y({},e,{value:ne}),group:y({},e,{value:ae}),groupCollapsed:y({},e,{value:oe}),groupEnd:y({},e,{value:ie})})}C<0&&d(\"disabledDepth fell below zero. This is a bug in React. Please file an issue.\")}}var $=_.ReactCurrentDispatcher,N;function S(e,r,t){{if(N===void 0)try{throw Error()}catch(i){var n=i.stack.trim().match(/\\n( *(at )?)/);N=n&&n[1]||\"\"}return`\n`+N+e}}var M=!1,j;{var Ve=typeof WeakMap==\"function\"?WeakMap:Map;j=new Ve}function se(e,r){if(!e||M)return\"\";{var t=j.get(e);if(t!==void 0)return t}var n;M=!0;var i=Error.prepareStackTrace;Error.prepareStackTrace=void 0;var u;u=$.current,$.current=null,Ne();try{if(r){var o=function(){throw Error()};if(Object.defineProperty(o.prototype,\"props\",{set:function(){throw Error()}}),typeof Reflect==\"object\"&&Reflect.construct){try{Reflect.construct(o,[])}catch(g){n=g}Reflect.construct(e,[],o)}else{try{o.call()}catch(g){n=g}e.call(o.prototype)}}else{try{throw Error()}catch(g){n=g}e()}}catch(g){if(g&&n&&typeof g.stack==\"string\"){for(var a=g.stack.split(`\n`),v=n.stack.split(`\n`),f=a.length-1,l=v.length-1;f>=1&&l>=0&&a[f]!==v[l];)l--;for(;f>=1&&l>=0;f--,l--)if(a[f]!==v[l]){if(f!==1||l!==1)do if(f--,l--,l<0||a[f]!==v[l]){var p=`\n`+a[f].replace(\" at new \",\" at \");return e.displayName&&p.includes(\"<anonymous>\")&&(p=p.replace(\"<anonymous>\",e.displayName)),typeof e==\"function\"&&j.set(e,p),p}while(f>=1&&l>=0);break}}}finally{M=!1,$.current=u,Me(),Error.prepareStackTrace=i}var T=e?e.displayName||e.name:\"\",ye=T?S(T):\"\";return typeof e==\"function\"&&j.set(e,ye),ye}function Ue(e,r,t){return se(e,!1)}function Le(e){var r=e.prototype;return!!(r&&r.isReactComponent)}function x(e,r,t){if(e==null)return\"\";if(typeof e==\"function\")return se(e,Le(e));if(typeof e==\"string\")return S(e);switch(e){case I:return S(\"Suspense\");case W:return S(\"SuspenseList\")}if(typeof e==\"object\")switch(e.$$typeof){case O:return Ue(e.render);case P:return x(e.type,r,t);case Y:{var n=e,i=n._payload,u=n._init;try{return x(u(i),r,t)}catch{}}}return\"\"}var k=Object.prototype.hasOwnProperty,ce={},fe=_.ReactDebugCurrentFrame;function D(e){if(e){var r=e._owner,t=x(e.type,e._source,r?r.type:null);fe.setExtraStackFrame(t)}else fe.setExtraStackFrame(null)}function Be(e,r,t,n,i){{var u=Function.call.bind(k);for(var o in e)if(u(e,o)){var a=void 0;try{if(typeof e[o]!=\"function\"){var v=Error((n||\"React class\")+\": \"+t+\" type `\"+o+\"` is invalid; it must be a function, usually from the `prop-types` package, but received `\"+typeof e[o]+\"`.This often happens because of typos such as `PropTypes.function` instead of `PropTypes.func`.\");throw v.name=\"Invariant Violation\",v}a=e[o](r,o,n,t,null,\"SECRET_DO_NOT_PASS_THIS_OR_YOU_WILL_BE_FIRED\")}catch(f){a=f}a&&!(a instanceof Error)&&(D(i),d(\"%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).\",n||\"React class\",t,o,typeof a),D(null)),a instanceof Error&&!(a.message in ce)&&(ce[a.message]=!0,D(i),d(\"Failed %s type: %s\",t,a.message),D(null))}}}var Ge=Array.isArray;function V(e){return Ge(e)}function qe(e){{var r=typeof Symbol==\"function\"&&Symbol.toStringTag,t=r&&e[Symbol.toStringTag]||e.constructor.name||\"Object\";return t}}function ze(e){try{return le(e),!1}catch{return!0}}function le(e){return\"\"+e}function de(e){if(ze(e))return d(\"The provided key is an unsupported type %s. This value must be coerced to a string before before using it here.\",qe(e)),le(e)}var w=_.ReactCurrentOwner,Xe={key:!0,ref:!0,__self:!0,__source:!0},ve,pe,U;U={};function Ke(e){if(k.call(e,\"ref\")){var r=Object.getOwnPropertyDescriptor(e,\"ref\").get;if(r&&r.isReactWarning)return!1}return e.ref!==void 0}function He(e){if(k.call(e,\"key\")){var r=Object.getOwnPropertyDescriptor(e,\"key\").get;if(r&&r.isReactWarning)return!1}return e.key!==void 0}function Je(e,r){if(typeof e.ref==\"string\"&&w.current&&r&&w.current.stateNode!==r){var t=h(w.current.type);U[t]||(d('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',h(w.current.type),e.ref),U[t]=!0)}}function Ze(e,r){{var t=function(){ve||(ve=!0,d(\"%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)\",r))};t.isReactWarning=!0,Object.defineProperty(e,\"key\",{get:t,configurable:!0})}}function Qe(e,r){{var t=function(){pe||(pe=!0,d(\"%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)\",r))};t.isReactWarning=!0,Object.defineProperty(e,\"ref\",{get:t,configurable:!0})}}var er=function(e,r,t,n,i,u,o){var a={$$typeof:c,type:e,key:r,ref:t,props:o,_owner:u};return a._store={},Object.defineProperty(a._store,\"validated\",{configurable:!1,enumerable:!1,writable:!0,value:!1}),Object.defineProperty(a,\"_self\",{configurable:!1,enumerable:!1,writable:!1,value:n}),Object.defineProperty(a,\"_source\",{configurable:!1,enumerable:!1,writable:!1,value:i}),Object.freeze&&(Object.freeze(a.props),Object.freeze(a)),a};function rr(e,r,t,n,i){{var u,o={},a=null,v=null;t!==void 0&&(de(t),a=\"\"+t),He(r)&&(de(r.key),a=\"\"+r.key),Ke(r)&&(v=r.ref,Je(r,i));for(u in r)k.call(r,u)&&!Xe.hasOwnProperty(u)&&(o[u]=r[u]);if(e&&e.defaultProps){var f=e.defaultProps;for(u in f)o[u]===void 0&&(o[u]=f[u])}if(a||v){var l=typeof e==\"function\"?e.displayName||e.name||\"Unknown\":e;a&&Ze(o,l),v&&Qe(o,l)}return er(e,a,v,i,n,w.current,o)}}var L=_.ReactCurrentOwner,be=_.ReactDebugCurrentFrame;function R(e){if(e){var r=e._owner,t=x(e.type,e._source,r?r.type:null);be.setExtraStackFrame(t)}else be.setExtraStackFrame(null)}var B;B=!1;function G(e){return typeof e==\"object\"&&e!==null&&e.$$typeof===c}function he(){{if(L.current){var e=h(L.current.type);if(e)return`\n\nCheck the render method of \\``+e+\"`.\"}return\"\"}}function tr(e){{if(e!==void 0){var r=e.fileName.replace(/^.*[\\\\\\/]/,\"\"),t=e.lineNumber;return`\n\nCheck your code at `+r+\":\"+t+\".\"}return\"\"}}var ge={};function nr(e){{var r=he();if(!r){var t=typeof e==\"string\"?e:e.displayName||e.name;t&&(r=`\n\nCheck the top-level render call using <`+t+\">.\")}return r}}function me(e,r){{if(!e._store||e._store.validated||e.key!=null)return;e._store.validated=!0;var t=nr(r);if(ge[t])return;ge[t]=!0;var n=\"\";e&&e._owner&&e._owner!==L.current&&(n=\" It was passed a child from \"+h(e._owner.type)+\".\"),R(e),d('Each child in a list should have a unique \"key\" prop.%s%s See https://reactjs.org/link/warning-keys for more information.',t,n),R(null)}}function Ee(e,r){{if(typeof e!=\"object\")return;if(V(e))for(var t=0;t<e.length;t++){var n=e[t];G(n)&&me(n,r)}else if(G(e))e._store&&(e._store.validated=!0);else if(e){var i=xe(e);if(typeof i==\"function\"&&i!==e.entries)for(var u=i.call(e),o;!(o=u.next()).done;)G(o.value)&&me(o.value,r)}}}function ar(e){{var r=e.type;if(r==null||typeof r==\"string\")return;var t;if(typeof r==\"function\")t=r.propTypes;else if(typeof r==\"object\"&&(r.$$typeof===O||r.$$typeof===P))t=r.propTypes;else return;if(t){var n=h(r);Be(t,e.props,\"prop\",n,e)}else if(r.PropTypes!==void 0&&!B){B=!0;var i=h(r);d(\"Component %s declared `PropTypes` instead of `propTypes`. Did you misspell the property assignment?\",i||\"Unknown\")}typeof r.getDefaultProps==\"function\"&&!r.getDefaultProps.isReactClassApproved&&d(\"getDefaultProps is only used on classic React.createClass definitions. Use a static property named `defaultProps` instead.\")}}function or(e){{for(var r=Object.keys(e.props),t=0;t<r.length;t++){var n=r[t];if(n!==\"children\"&&n!==\"key\"){R(e),d(\"Invalid prop `%s` supplied to `React.Fragment`. React.Fragment can only have `key` and `children` props.\",n),R(null);break}}e.ref!==null&&(R(e),d(\"Invalid attribute `ref` supplied to `React.Fragment`.\"),R(null))}}function ir(e,r,t,n,i,u){{var o=Ye(e);if(!o){var a=\"\";(e===void 0||typeof e==\"object\"&&e!==null&&Object.keys(e).length===0)&&(a+=\" 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 v=tr(i);v?a+=v:a+=he();var f;e===null?f=\"null\":V(e)?f=\"array\":e!==void 0&&e.$$typeof===c?(f=\"<\"+(h(e.type)||\"Unknown\")+\" />\",a=\" Did you accidentally export a JSX literal instead of a component?\"):f=typeof e,d(\"React.jsx: type is invalid -- expected a string (for built-in components) or a class/function (for composite components) but got: %s.%s\",f,a)}var l=rr(e,r,t,i,u);if(l==null)return l;if(o){var p=r.children;if(p!==void 0)if(n)if(V(p)){for(var T=0;T<p.length;T++)Ee(p[T],e);Object.freeze&&Object.freeze(p)}else d(\"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 Ee(p,e)}return e===E?or(l):ar(l),l}}var ur=ir;z.Fragment=E,z.jsxDEV=ur})()});var Oe=q((Tr,we)=>{\"use strict\";we.exports=Ce()});var Er={};vr(Er,{default:()=>mr,frontmatter:()=>hr});var F=pr(Oe()),hr={title:\"Upstash Web Analytics\",description:\"A library to record and analyse web page traffic and user behaviour\",repository:\"upstash/web-analytics\",published:!0};function Pe(s){let c=Object.assign({p:\"p\"},s.components);return(0,F.jsxDEV)(c.p,{children:\"Coming soon\"},void 0,!1,{fileName:\"/Users/andreasthomas/github/chronark/chronark.com/content/projects/_mdx_bundler_entry_point-5fa4787f-baae-4c3e-bcce-87c94c71b8e1.mdx\",lineNumber:8,columnNumber:1},this)}function gr(s={}){let{wrapper:c}=s.components||{};return c?(0,F.jsxDEV)(c,Object.assign({},s,{children:(0,F.jsxDEV)(Pe,s,void 0,!1,{fileName:\"/Users/andreasthomas/github/chronark/chronark.com/content/projects/_mdx_bundler_entry_point-5fa4787f-baae-4c3e-bcce-87c94c71b8e1.mdx\"},this)}),void 0,!1,{fileName:\"/Users/andreasthomas/github/chronark/chronark.com/content/projects/_mdx_bundler_entry_point-5fa4787f-baae-4c3e-bcce-87c94c71b8e1.mdx\"},this):Pe(s)}var mr=gr;return br(Er);})();\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/upstash-web-analytics.mdx",
|
|
"_raw": {
|
|
"sourceFilePath": "projects/upstash-web-analytics.mdx",
|
|
"sourceFileName": "upstash-web-analytics.mdx",
|
|
"sourceFileDir": "projects",
|
|
"contentType": "mdx",
|
|
"flattenedPath": "projects/upstash-web-analytics"
|
|
},
|
|
"type": "Project",
|
|
"path": "/projects/upstash-web-analytics",
|
|
"slug": "upstash-web-analytics"
|
|
},
|
|
"documentHash": "1679831889438",
|
|
"hasWarnings": false,
|
|
"documentTypeName": "Project"
|
|
}
|
|
}
|
|
}
|