From 16a4d5e66d54cffe8ebd2783ad3c673b0ec6e565 Mon Sep 17 00:00:00 2001 From: Andreas Thomas Date: Sun, 26 Mar 2023 14:00:02 +0200 Subject: [PATCH] feat: content --- .../compiled-contentlayer-config-AAEZAM7W.mjs | 168 +++++++++--------- .../.cache/v0.3.0/data-AAEZAM7W.json | 48 ++--- .contentlayer/generated/Page/_index.mjs | 4 +- .contentlayer/generated/Project/_index.json | 32 ++-- .contentlayer/generated/Project/_index.mjs | 78 ++++++-- .../Project/projects__upstash-cli.mdx.json | 4 +- .../projects__upstash-core-analytics.mdx.json | 4 +- .../projects__upstash-edge-flags.mdx.json | 4 +- .../projects__upstash-qstash-sdk.mdx.json | 4 +- .../projects__upstash-ratelimit.mdx.json | 4 +- .../projects__upstash-react-ui.mdx.json | 4 +- .../Project/projects__upstash-redis.mdx.json | 4 +- .../projects__upstash-web-analytics.mdx.json | 4 +- .contentlayer/generated/index.d.ts | 11 +- .contentlayer/generated/index.mjs | 10 +- .contentlayer/generated/types.d.ts | 107 ++++++----- app/projects/[slug]/header.tsx | 7 +- app/projects/[slug]/page.tsx | 2 +- content/projects/upstash-cli.mdx | 107 ++++++++++- content/projects/upstash-core-analytics.mdx | 91 +++++++++- content/projects/upstash-edge-flags.mdx | 20 ++- content/projects/upstash-qstash-sdk.mdx | 13 +- content/projects/upstash-ratelimit-analytics | 3 +- content/projects/upstash-ratelimit.mdx | 40 ++++- content/projects/upstash-react-ui.mdx | 3 +- content/projects/upstash-redis.mdx | 54 +----- content/projects/upstash-web-analytics.mdx | 2 +- tailwind.config.js | 14 +- 28 files changed, 557 insertions(+), 289 deletions(-) diff --git a/.contentlayer/.cache/v0.3.0/compiled-contentlayer-config-AAEZAM7W.mjs b/.contentlayer/.cache/v0.3.0/compiled-contentlayer-config-AAEZAM7W.mjs index 88ebb53..12aed14 100644 --- a/.contentlayer/.cache/v0.3.0/compiled-contentlayer-config-AAEZAM7W.mjs +++ b/.contentlayer/.cache/v0.3.0/compiled-contentlayer-config-AAEZAM7W.mjs @@ -5,97 +5,93 @@ import rehypePrettyCode from "rehype-pretty-code"; import rehypeSlug from "rehype-slug"; import rehypeAutolinkHeadings from "rehype-autolink-headings"; var computedFields = { - path: { - type: "string", - resolve: (doc) => `/${doc._raw.flattenedPath}` - }, - slug: { - type: "string", - resolve: (doc) => doc._raw.flattenedPath.split("/").slice(1).join("/") - } + path: { + type: "string", + resolve: (doc) => `/${doc._raw.flattenedPath}`, + }, + slug: { + type: "string", + resolve: (doc) => doc._raw.flattenedPath.split("/").slice(1).join("/"), + }, }; var Project = defineDocumentType(() => ({ - name: "Project", - filePathPattern: "./projects/**/*.mdx", - contentType: "mdx", - fields: { - published: { - type: "boolean" - }, - title: { - type: "string", - required: true - }, - description: { - type: "string", - required: true - }, - date: { - type: "date" - }, - url: { - type: "string" - }, - repository: { - type: "string" - } - }, - computedFields + name: "Project", + filePathPattern: "./projects/**/*.mdx", + contentType: "mdx", + fields: { + published: { + type: "boolean", + }, + title: { + type: "string", + required: true, + }, + description: { + type: "string", + required: true, + }, + date: { + type: "date", + }, + url: { + type: "string", + }, + repository: { + type: "string", + }, + }, + computedFields, })); var Page = defineDocumentType(() => ({ - name: "Page", - filePathPattern: "pages/**/*.mdx", - contentType: "mdx", - fields: { - title: { - type: "string", - required: true - }, - description: { - type: "string" - } - }, - computedFields + name: "Page", + filePathPattern: "pages/**/*.mdx", + contentType: "mdx", + fields: { + title: { + type: "string", + required: true, + }, + description: { + type: "string", + }, + }, + computedFields, })); var contentlayer_config_default = makeSource({ - contentDirPath: "./content", - documentTypes: [Page, Project], - mdx: { - remarkPlugins: [remarkGfm], - rehypePlugins: [ - rehypeSlug, - [ - rehypePrettyCode, - { - theme: "github-dark", - onVisitLine(node) { - if (node.children.length === 0) { - node.children = [{ type: "text", value: " " }]; - } - }, - onVisitHighlightedLine(node) { - node.properties.className.push("line--highlighted"); - }, - onVisitHighlightedWord(node) { - node.properties.className = ["word--highlighted"]; - } - } - ], - [ - rehypeAutolinkHeadings, - { - properties: { - className: ["subheading-anchor"], - ariaLabel: "Link to section" - } - } - ] - ] - } + contentDirPath: "./content", + documentTypes: [Page, Project], + mdx: { + remarkPlugins: [remarkGfm], + rehypePlugins: [ + rehypeSlug, + [ + rehypePrettyCode, + { + theme: "github-dark", + onVisitLine(node) { + if (node.children.length === 0) { + node.children = [{ type: "text", value: " " }]; + } + }, + onVisitHighlightedLine(node) { + node.properties.className.push("line--highlighted"); + }, + onVisitHighlightedWord(node) { + node.properties.className = ["word--highlighted"]; + }, + }, + ], + [ + rehypeAutolinkHeadings, + { + properties: { + className: ["subheading-anchor"], + ariaLabel: "Link to section", + }, + }, + ], + ], + }, }); -export { - Page, - Project, - contentlayer_config_default as default -}; +export { Page, Project, contentlayer_config_default as default }; //# sourceMappingURL=compiled-contentlayer-config-AAEZAM7W.mjs.map diff --git a/.contentlayer/.cache/v0.3.0/data-AAEZAM7W.json b/.contentlayer/.cache/v0.3.0/data-AAEZAM7W.json index 29aeb9f..059399c 100644 --- a/.contentlayer/.cache/v0.3.0/data-AAEZAM7W.json +++ b/.contentlayer/.cache/v0.3.0/data-AAEZAM7W.json @@ -172,8 +172,8 @@ "url": "https://upstash.com/cli", "repository": "upstash/cli", "body": { - "raw": "\nTODO:", - "code": "var Component=(()=>{var sr=Object.create;var F=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)F(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&&F(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?F(h,\"default\",{value:s,enumerable:!0}):h,s)),hr=s=>_e(F({},\"__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\"),K=Symbol.for(\"react.profiler\"),X=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=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(\"\")&&(p=p.replace(\"\",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,Ke={key:!0,ref:!0,__self:!0,__source:!0},ve,pe,U;U={};function Xe(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),Xe(r)&&(v=r.ref,Je(r,i));for(u in r)k.call(r,u)&&!Ke.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\",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{\"use strict\";Oe.exports=Ce()});var Er={};vr(Er,{default:()=>mr,frontmatter:()=>br});var A=pr(we()),br={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 Pe(s){let f=Object.assign({p:\"p\"},s.components);return(0,A.jsxDEV)(f.p,{children:\"TODO:\"},void 0,!1,{fileName:\"/Users/andreasthomas/github/chronark/chronark.com/content/projects/_mdx_bundler_entry_point-4eb0fa00-eee7-4578-99c3-55a7c326fffe.mdx\",lineNumber:11,columnNumber:1},this)}function gr(s={}){let{wrapper:f}=s.components||{};return f?(0,A.jsxDEV)(f,Object.assign({},s,{children:(0,A.jsxDEV)(Pe,s,void 0,!1,{fileName:\"/Users/andreasthomas/github/chronark/chronark.com/content/projects/_mdx_bundler_entry_point-4eb0fa00-eee7-4578-99c3-55a7c326fffe.mdx\"},this)}),void 0,!1,{fileName:\"/Users/andreasthomas/github/chronark/chronark.com/content/projects/_mdx_bundler_entry_point-4eb0fa00-eee7-4578-99c3-55a7c326fffe.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;" + "raw": "\n\nManage Upstash resources in your terminal or CI.\n\n![](https://raw.githubusercontent.com/upstash/cli/main/img/banner.svg)\n\n![GitHub release (latest SemVer)](https://img.shields.io/github/v/release/upstash/cli)\n[![Downloads/week](https://img.shields.io/npm/dw/lstr.svg)](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 - 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 - The email you use on upstash\n UPSTASH_API_KEY - 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": { @@ -187,7 +187,7 @@ "path": "/projects/upstash-cli", "slug": "upstash-cli" }, - "documentHash": "1679819580897", + "documentHash": "1679830227494", "hasWarnings": false, "documentTypeName": "Project" }, @@ -200,8 +200,8 @@ "url": "https://console.upstash.com/ratelimit", "repository": "upstash/core-analytics", "body": { - "raw": "\nTODO:", - "code": "var Component=(()=>{var sr=Object.create;var F=Object.defineProperty;var lr=Object.getOwnPropertyDescriptor;var cr=Object.getOwnPropertyNames;var fr=Object.getPrototypeOf,dr=Object.prototype.hasOwnProperty;var q=(s,l)=>()=>(l||s((l={exports:{}}).exports,l),l.exports),vr=(s,l)=>{for(var b in l)F(s,b,{get:l[b],enumerable:!0})},_e=(s,l,b,E)=>{if(l&&typeof l==\"object\"||typeof l==\"function\")for(let m of cr(l))!dr.call(s,m)&&m!==b&&F(s,m,{get:()=>l[m],enumerable:!(E=lr(l,m))||E.enumerable});return s};var pr=(s,l,b)=>(b=s!=null?sr(fr(s)):{},_e(l||!s||!s.__esModule?F(b,\"default\",{value:s,enumerable:!0}):b,s)),br=s=>_e(F({},\"__esModule\",{value:!0}),s);var Te=q((_r,Re)=>{Re.exports=React});var Ce=q(z=>{\"use strict\";(function(){\"use strict\";var s=Te(),l=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\"),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=1&&f>=0&&a[c]!==v[f];)f--;for(;c>=1&&f>=0;c--,f--)if(a[c]!==v[f]){if(c!==1||f!==1)do if(c--,f--,f<0||a[c]!==v[f]){var p=`\n`+a[c].replace(\" at new \",\" at \");return e.displayName&&p.includes(\"\")&&(p=p.replace(\"\",e.displayName)),typeof e==\"function\"&&j.set(e,p),p}while(c>=1&&f>=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,le={},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 le)&&(le[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 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,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=h(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',h(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: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),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 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 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===l}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\",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 f=rr(e,r,t,i,u);if(f==null)return f;if(o){var p=r.children;if(p!==void 0)if(n)if(V(p)){for(var T=0;T{\"use strict\";Oe.exports=Ce()});var Er={};vr(Er,{default:()=>mr,frontmatter:()=>hr});var A=pr(we()),hr={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 Pe(s){let l=Object.assign({p:\"p\"},s.components);return(0,A.jsxDEV)(l.p,{children:\"TODO:\"},void 0,!1,{fileName:\"/Users/andreasthomas/github/chronark/chronark.com/content/projects/_mdx_bundler_entry_point-19540f58-fb17-4699-b4c6-0cb9420afdb1.mdx\",lineNumber:11,columnNumber:1},this)}function gr(s={}){let{wrapper:l}=s.components||{};return l?(0,A.jsxDEV)(l,Object.assign({},s,{children:(0,A.jsxDEV)(Pe,s,void 0,!1,{fileName:\"/Users/andreasthomas/github/chronark/chronark.com/content/projects/_mdx_bundler_entry_point-19540f58-fb17-4699-b4c6-0cb9420afdb1.mdx\"},this)}),void 0,!1,{fileName:\"/Users/andreasthomas/github/chronark/chronark.com/content/projects/_mdx_bundler_entry_point-19540f58-fb17-4699-b4c6-0cb9420afdb1.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;" + "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=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(\"\")&&(b=b.replace(\"\",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\",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{\"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": { @@ -215,7 +215,7 @@ "path": "/projects/upstash-core-analytics", "slug": "upstash-core-analytics" }, - "documentHash": "1679819583922", + "documentHash": "1679831865461", "hasWarnings": false, "documentTypeName": "Project" }, @@ -228,8 +228,8 @@ "url": "https://upstash.com/edge-flags", "repository": "upstash/edge-flags", "body": { - "raw": "\nTODO:", - "code": "var Component=(()=>{var sr=Object.create;var F=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 b in f)F(s,b,{get:f[b],enumerable:!0})},_e=(s,f,b,E)=>{if(f&&typeof f==\"object\"||typeof f==\"function\")for(let m of cr(f))!dr.call(s,m)&&m!==b&&F(s,m,{get:()=>f[m],enumerable:!(E=fr(f,m))||E.enumerable});return s};var pr=(s,f,b)=>(b=s!=null?sr(lr(s)):{},_e(f||!s||!s.__esModule?F(b,\"default\",{value:s,enumerable:!0}):b,s)),br=s=>_e(F({},\"__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\"),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\"),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=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(\"\")&&(p=p.replace(\"\",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=g(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',g(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,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===f}function ge(){{if(L.current){var e=g(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 he={};function nr(e){{var r=ge();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(he[t])return;he[t]=!0;var n=\"\";e&&e._owner&&e._owner!==L.current&&(n=\" It was passed a child from \"+g(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\",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{\"use strict\";Oe.exports=Ce()});var Er={};vr(Er,{default:()=>mr,frontmatter:()=>gr});var A=pr(we()),gr={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 Pe(s){let f=Object.assign({p:\"p\"},s.components);return(0,A.jsxDEV)(f.p,{children:\"TODO:\"},void 0,!1,{fileName:\"/Users/andreasthomas/github/chronark/chronark.com/content/projects/_mdx_bundler_entry_point-55f51b83-ce3b-423c-bad6-92589929a727.mdx\",lineNumber:11,columnNumber:1},this)}function hr(s={}){let{wrapper:f}=s.components||{};return f?(0,A.jsxDEV)(f,Object.assign({},s,{children:(0,A.jsxDEV)(Pe,s,void 0,!1,{fileName:\"/Users/andreasthomas/github/chronark/chronark.com/content/projects/_mdx_bundler_entry_point-55f51b83-ce3b-423c-bad6-92589929a727.mdx\"},this)}),void 0,!1,{fileName:\"/Users/andreasthomas/github/chronark/chronark.com/content/projects/_mdx_bundler_entry_point-55f51b83-ce3b-423c-bad6-92589929a727.mdx\"},this):Pe(s)}var mr=hr;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;" + "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": { @@ -243,7 +243,7 @@ "path": "/projects/upstash-edge-flags", "slug": "upstash-edge-flags" }, - "documentHash": "1679819586745", + "documentHash": "1679830323463", "hasWarnings": false, "documentTypeName": "Project" }, @@ -284,8 +284,8 @@ "url": "https://upstash.com/qstash", "repository": "upstash/sdk-qstash-ts", "body": { - "raw": "\nTODO:", - "code": "var Component=(()=>{var sr=Object.create;var F=Object.defineProperty;var cr=Object.getOwnPropertyDescriptor;var fr=Object.getOwnPropertyNames;var lr=Object.getPrototypeOf,dr=Object.prototype.hasOwnProperty;var G=(s,c)=>()=>(c||s((c={exports:{}}).exports,c),c.exports),vr=(s,c)=>{for(var h in c)F(s,h,{get:c[h],enumerable:!0})},_e=(s,c,h,E)=>{if(c&&typeof c==\"object\"||typeof c==\"function\")for(let m of fr(c))!dr.call(s,m)&&m!==h&&F(s,m,{get:()=>c[m],enumerable:!(E=cr(c,m))||E.enumerable});return s};var pr=(s,c,h)=>(h=s!=null?sr(lr(s)):{},_e(c||!s||!s.__esModule?F(h,\"default\",{value:s,enumerable:!0}):h,s)),hr=s=>_e(F({},\"__esModule\",{value:!0}),s);var Te=G((_r,Re)=>{Re.exports=React});var Ce=G(z=>{\"use strict\";(function(){\"use strict\";var s=Te(),c=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=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(\"\")&&(p=p.replace(\"\",e.displayName)),typeof e==\"function\"&&j.set(e,p),p}while(f>=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,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 qe(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 Be=Array.isArray;function V(e){return Be(e)}function Ge(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.\",Ge(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 Qe(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 Ze(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&&Qe(o,l),v&&Ze(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 q;q=!1;function B(e){return typeof e==\"object\"&&e!==null&&e.$$typeof===c}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\",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{\"use strict\";Oe.exports=Ce()});var Er={};vr(Er,{default:()=>mr,frontmatter:()=>br});var A=pr(we()),br={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 Pe(s){let c=Object.assign({p:\"p\"},s.components);return(0,A.jsxDEV)(c.p,{children:\"TODO:\"},void 0,!1,{fileName:\"/Users/andreasthomas/github/chronark/chronark.com/content/projects/_mdx_bundler_entry_point-2f5760c4-1322-4e46-9d1d-1912b9ec4d97.mdx\",lineNumber:10,columnNumber:1},this)}function gr(s={}){let{wrapper:c}=s.components||{};return c?(0,A.jsxDEV)(c,Object.assign({},s,{children:(0,A.jsxDEV)(Pe,s,void 0,!1,{fileName:\"/Users/andreasthomas/github/chronark/chronark.com/content/projects/_mdx_bundler_entry_point-2f5760c4-1322-4e46-9d1d-1912b9ec4d97.mdx\"},this)}),void 0,!1,{fileName:\"/Users/andreasthomas/github/chronark/chronark.com/content/projects/_mdx_bundler_entry_point-2f5760c4-1322-4e46-9d1d-1912b9ec4d97.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;" + "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": { @@ -299,7 +299,7 @@ "path": "/projects/upstash-qstash-sdk", "slug": "upstash-qstash-sdk" }, - "documentHash": "1679819591035", + "documentHash": "1679830397516", "hasWarnings": false, "documentTypeName": "Project" }, @@ -312,8 +312,8 @@ "url": "https://upstash.com/ratelimit", "repository": "upstash/ratelimit", "body": { - "raw": "\nTODO:", - "code": "var Component=(()=>{var sr=Object.create;var F=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)F(s,h,{get:l[h],enumerable:!0})},_e=(s,l,h,E)=>{if(l&&typeof l==\"object\"||typeof l==\"function\")for(let m of fr(l))!dr.call(s,m)&&m!==h&&F(s,m,{get:()=>l[m],enumerable:!(E=lr(l,m))||E.enumerable});return s};var pr=(s,l,h)=>(h=s!=null?sr(cr(s)):{},_e(l||!s||!s.__esModule?F(h,\"default\",{value:s,enumerable:!0}):h,s)),hr=s=>_e(F({},\"__esModule\",{value:!0}),s);var Te=q((_r,Re)=>{Re.exports=React});var Ce=q(z=>{\"use strict\";(function(){\"use strict\";var s=Te(),l=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=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(\"\")&&(p=p.replace(\"\",e.displayName)),typeof e==\"function\"&&j.set(e,p),p}while(f>=1&&c>=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,le={},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 le)&&(le[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 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 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: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),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 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,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===l}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\",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{\"use strict\";Oe.exports=Ce()});var Er={};vr(Er,{default:()=>mr,frontmatter:()=>br});var A=pr(we()),br={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 Pe(s){let l=Object.assign({p:\"p\"},s.components);return(0,A.jsxDEV)(l.p,{children:\"TODO:\"},void 0,!1,{fileName:\"/Users/andreasthomas/github/chronark/chronark.com/content/projects/_mdx_bundler_entry_point-37fe23d1-747d-41e2-83b3-756ee13806a3.mdx\",lineNumber:11,columnNumber:1},this)}function gr(s={}){let{wrapper:l}=s.components||{};return l?(0,A.jsxDEV)(l,Object.assign({},s,{children:(0,A.jsxDEV)(Pe,s,void 0,!1,{fileName:\"/Users/andreasthomas/github/chronark/chronark.com/content/projects/_mdx_bundler_entry_point-37fe23d1-747d-41e2-83b3-756ee13806a3.mdx\"},this)}),void 0,!1,{fileName:\"/Users/andreasthomas/github/chronark/chronark.com/content/projects/_mdx_bundler_entry_point-37fe23d1-747d-41e2-83b3-756ee13806a3.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;" + "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=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(\"\")&&(b=b.replace(\"\",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\",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{\"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": { @@ -327,7 +327,7 @@ "path": "/projects/upstash-ratelimit", "slug": "upstash-ratelimit" }, - "documentHash": "1679819595280", + "documentHash": "1679831176938", "hasWarnings": false, "documentTypeName": "Project" }, @@ -340,8 +340,8 @@ "url": "https://upstash.com", "repository": "upstash/react-ui", "body": { - "raw": "\nTODO:", - "code": "var Component=(()=>{var sr=Object.create;var F=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)F(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&&F(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?F(b,\"default\",{value:s,enumerable:!0}):b,s)),br=s=>_e(F({},\"__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\"),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=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(\"\")&&(p=p.replace(\"\",e.displayName)),typeof e==\"function\"&&j.set(e,p),p}while(f>=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 Le(e,r,t){return se(e,!1)}function Ue(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,Ue(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 Le(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,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 O=_.ReactCurrentOwner,Xe={key:!0,ref:!0,__self:!0,__source:!0},ve,pe,L;L={};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=h(O.current.type);L[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),L[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,O.current,o)}}var U=_.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(U.current){var e=h(U.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!==U.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\",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{\"use strict\";Oe.exports=Ce()});var Er={};vr(Er,{default:()=>mr,frontmatter:()=>hr});var A=pr(we()),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(s){let c=Object.assign({p:\"p\"},s.components);return(0,A.jsxDEV)(c.p,{children:\"TODO:\"},void 0,!1,{fileName:\"/Users/andreasthomas/github/chronark/chronark.com/content/projects/_mdx_bundler_entry_point-cb7470d6-8beb-40f7-8d67-d853d6fc6345.mdx\",lineNumber:11,columnNumber:1},this)}function gr(s={}){let{wrapper:c}=s.components||{};return c?(0,A.jsxDEV)(c,Object.assign({},s,{children:(0,A.jsxDEV)(Pe,s,void 0,!1,{fileName:\"/Users/andreasthomas/github/chronark/chronark.com/content/projects/_mdx_bundler_entry_point-cb7470d6-8beb-40f7-8d67-d853d6fc6345.mdx\"},this)}),void 0,!1,{fileName:\"/Users/andreasthomas/github/chronark/chronark.com/content/projects/_mdx_bundler_entry_point-cb7470d6-8beb-40f7-8d67-d853d6fc6345.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;" + "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=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(\"\")&&(p=p.replace(\"\",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\",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{\"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": { @@ -355,7 +355,7 @@ "path": "/projects/upstash-react-ui", "slug": "upstash-react-ui" }, - "documentHash": "1679819598600", + "documentHash": "1679831965421", "hasWarnings": false, "documentTypeName": "Project" }, @@ -368,8 +368,8 @@ "url": "https://upstash.com/redis", "repository": "upstash/upstash-redis", "body": { - "raw": "\n\n`@upstash/redis` is an HTTP/REST based Redis client for typescript, built on top\nof [Upstash REST API](https://docs.upstash.com/features/restapi).\n\nIt is the only connectionless (HTTP based) Redis client and designed for:\n\n- Serverless functions (AWS Lambda ...)\n- Cloudflare Workers (see\n [the example](https://github.com/upstash/upstash-redis/tree/main/examples/cloudflare-workers))\n- Fastly Compute@Edge (see\n [the example](https://github.com/upstash/upstash-redis/tree/main/examples/fastly))\n- Next.js, Jamstack ...\n- Client side web/mobile applications\n- WebAssembly\n- and other environments where HTTP is preferred over TCP.\n\nSee\n[the list of APIs](https://docs.upstash.com/features/restapi#rest---redis-api-compatibility)\nsupported.\n\n## Quick Start\n\n### Install\n\n#### Node.js\n\n```bash\nnpm install @upstash/redis\n```\n\n#### Deno\n\n```ts\nimport { Redis } from \"https://deno.land/x/upstash_redis/mod.ts\";\n```\n\n### Create database\n\nCreate a new redis database on [upstash](https://console.upstash.com/)\n\n## Basic Usage:\n\n```ts\nimport { Redis } from \"@upstash/redis\"\n\nconst redis = new Redis({\n url: ,\n 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\n// hash\nawait redis.hset('people', {name: 'joe'})\ndata = await redis.hget('people', 'name' )\nconsole.log(data)\n\n// sets\nawait redis.sadd('animals', 'cat')\ndata = await redis.spop('animals', 1)\nconsole.log(data)\n```\n", - "code": "var Component=(()=>{var dn=Object.create;var O=Object.defineProperty;var ln=Object.getOwnPropertyDescriptor;var mn=Object.getOwnPropertyNames;var un=Object.getPrototypeOf,fn=Object.prototype.hasOwnProperty;var q=(l,e)=>()=>(e||l((e={exports:{}}).exports,e),e.exports),hn=(l,e)=>{for(var _ in e)O(l,_,{get:e[_],enumerable:!0})},ye=(l,e,_,x)=>{if(e&&typeof e==\"object\"||typeof e==\"function\")for(let k of mn(e))!fn.call(l,k)&&k!==_&&O(l,k,{get:()=>e[k],enumerable:!(x=ln(e,k))||x.enumerable});return l};var bn=(l,e,_)=>(_=l!=null?dn(un(l)):{},ye(e||!l||!l.__esModule?O(_,\"default\",{value:l,enumerable:!0}):_,l)),_n=l=>ye(O({},\"__esModule\",{value:!0}),l);var Ee=q((gn,ge)=>{ge.exports=React});var je=q(z=>{\"use strict\";(function(){\"use strict\";var l=Ee(),e=Symbol.for(\"react.element\"),_=Symbol.for(\"react.portal\"),x=Symbol.for(\"react.fragment\"),k=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\"),B=Symbol.for(\"react.suspense\"),D=Symbol.for(\"react.suspense_list\"),R=Symbol.for(\"react.memo\"),A=Symbol.for(\"react.lazy\"),Re=Symbol.for(\"react.offscreen\"),J=Symbol.iterator,Ce=\"@@iterator\";function Te(r){if(r===null||typeof r!=\"object\")return null;var a=J&&r[J]||r[Ce];return typeof a==\"function\"?a:null}var g=l.__SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED;function f(r){{for(var a=arguments.length,c=new Array(a>1?a-1:0),t=1;t=1&&u>=0&&o[m]!==h[u];)u--;for(;m>=1&&u>=0;m--,u--)if(o[m]!==h[u]){if(m!==1||u!==1)do if(m--,u--,u<0||o[m]!==h[u]){var b=`\n`+o[m].replace(\" at new \",\" at \");return r.displayName&&b.includes(\"\")&&(b=b.replace(\"\",r.displayName)),typeof r==\"function\"&&T.set(r,b),b}while(m>=1&&u>=0);break}}}finally{W=!1,I.current=i,We(),Error.prepareStackTrace=d}var j=r?r.displayName||r.name:\"\",xe=j?C(j):\"\";return typeof r==\"function\"&&T.set(r,xe),xe}function $e(r,a,c){return de(r,!1)}function Me(r){var a=r.prototype;return!!(a&&a.isReactComponent)}function w(r,a,c){if(r==null)return\"\";if(typeof r==\"function\")return de(r,Me(r));if(typeof r==\"string\")return C(r);switch(r){case B:return C(\"Suspense\");case D:return C(\"SuspenseList\")}if(typeof r==\"object\")switch(r.$$typeof){case F:return $e(r.render);case R:return w(r.type,a,c);case A:{var t=r,d=t._payload,i=t._init;try{return w(i(d),a,c)}catch{}}}return\"\"}var S=Object.prototype.hasOwnProperty,ie={},le=g.ReactDebugCurrentFrame;function P(r){if(r){var a=r._owner,c=w(r.type,r._source,a?a.type:null);le.setExtraStackFrame(c)}else le.setExtraStackFrame(null)}function Ve(r,a,c,t,d){{var i=Function.call.bind(S);for(var s in r)if(i(r,s)){var o=void 0;try{if(typeof r[s]!=\"function\"){var h=Error((t||\"React class\")+\": \"+c+\" type `\"+s+\"` is invalid; it must be a function, usually from the `prop-types` package, but received `\"+typeof r[s]+\"`.This often happens because of typos such as `PropTypes.function` instead of `PropTypes.func`.\");throw h.name=\"Invariant Violation\",h}o=r[s](a,s,t,c,null,\"SECRET_DO_NOT_PASS_THIS_OR_YOU_WILL_BE_FIRED\")}catch(m){o=m}o&&!(o instanceof Error)&&(P(d),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).\",t||\"React class\",c,s,typeof o),P(null)),o instanceof Error&&!(o.message in ie)&&(ie[o.message]=!0,P(d),f(\"Failed %s type: %s\",c,o.message),P(null))}}}var He=Array.isArray;function Y(r){return He(r)}function qe(r){{var a=typeof Symbol==\"function\"&&Symbol.toStringTag,c=a&&r[Symbol.toStringTag]||r.constructor.name||\"Object\";return c}}function ze(r){try{return me(r),!1}catch{return!0}}function me(r){return\"\"+r}function ue(r){if(ze(r))return f(\"The provided key is an unsupported type %s. This value must be coerced to a string before before using it here.\",qe(r)),me(r)}var v=g.ReactCurrentOwner,Ge={key:!0,ref:!0,__self:!0,__source:!0},fe,he,$;$={};function Ke(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 c=p(v.current.type);$[c]||(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),r.ref),$[c]=!0)}}function Qe(r,a){{var c=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))};c.isReactWarning=!0,Object.defineProperty(r,\"key\",{get:c,configurable:!0})}}function Ze(r,a){{var c=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))};c.isReactWarning=!0,Object.defineProperty(r,\"ref\",{get:c,configurable:!0})}}var en=function(r,a,c,t,d,i,s){var o={$$typeof:e,type:r,key:a,ref:c,props:s,_owner:i};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:t}),Object.defineProperty(o,\"_source\",{configurable:!1,enumerable:!1,writable:!1,value:d}),Object.freeze&&(Object.freeze(o.props),Object.freeze(o)),o};function nn(r,a,c,t,d){{var i,s={},o=null,h=null;c!==void 0&&(ue(c),o=\"\"+c),Xe(a)&&(ue(a.key),o=\"\"+a.key),Ke(a)&&(h=a.ref,Je(a,d));for(i in a)S.call(a,i)&&!Ge.hasOwnProperty(i)&&(s[i]=a[i]);if(r&&r.defaultProps){var m=r.defaultProps;for(i in m)s[i]===void 0&&(s[i]=m[i])}if(o||h){var u=typeof r==\"function\"?r.displayName||r.name||\"Unknown\":r;o&&Qe(s,u),h&&Ze(s,u)}return en(r,o,h,d,t,v.current,s)}}var M=g.ReactCurrentOwner,be=g.ReactDebugCurrentFrame;function E(r){if(r){var a=r._owner,c=w(r.type,r._source,a?a.type:null);be.setExtraStackFrame(c)}else be.setExtraStackFrame(null)}var V;V=!1;function H(r){return typeof r==\"object\"&&r!==null&&r.$$typeof===e}function _e(){{if(M.current){var r=p(M.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(/^.*[\\\\\\/]/,\"\"),c=r.lineNumber;return`\n\nCheck your code at `+a+\":\"+c+\".\"}return\"\"}}var pe={};function an(r){{var a=_e();if(!a){var c=typeof r==\"string\"?r:r.displayName||r.name;c&&(a=`\n\nCheck the top-level render call using <`+c+\">.\")}return a}}function Ne(r,a){{if(!r._store||r._store.validated||r.key!=null)return;r._store.validated=!0;var c=an(a);if(pe[c])return;pe[c]=!0;var t=\"\";r&&r._owner&&r._owner!==M.current&&(t=\" It was passed a child from \"+p(r._owner.type)+\".\"),E(r),f('Each child in a list should have a unique \"key\" prop.%s%s See https://reactjs.org/link/warning-keys for more information.',c,t),E(null)}}function ke(r,a){{if(typeof r!=\"object\")return;if(Y(r))for(var c=0;c\",o=\" Did you accidentally export a JSX literal instead of a component?\"):m=typeof r,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,o)}var u=nn(r,a,c,d,i);if(u==null)return u;if(s){var b=a.children;if(b!==void 0)if(t)if(Y(b)){for(var j=0;j{\"use strict\";Ue.exports=je()});var xn={};hn(xn,{default:()=>kn,frontmatter:()=>pn});var n=bn(ve()),pn={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(l){let e=Object.assign({p:\"p\",code:\"code\",a:\"a\",ul:\"ul\",li:\"li\",h2:\"h2\",span:\"span\",h3:\"h3\",h4:\"h4\",div:\"div\",pre:\"pre\"},l.components);return(0,n.jsxDEV)(n.Fragment,{children:[(0,n.jsxDEV)(e.p,{children:[(0,n.jsxDEV)(e.code,{children:\"@upstash/redis\"},void 0,!1,{fileName:\"/Users/andreasthomas/github/chronark/chronark.com/content/projects/_mdx_bundler_entry_point-93a1e3d2-f694-441c-8926-7ce5fc1adfb7.mdx\",lineNumber:12,columnNumber:1},this),` is an HTTP/REST based Redis client for typescript, built on top\nof `,(0,n.jsxDEV)(e.a,{href:\"https://docs.upstash.com/features/restapi\",children:\"Upstash REST API\"},void 0,!1,{fileName:\"/Users/andreasthomas/github/chronark/chronark.com/content/projects/_mdx_bundler_entry_point-93a1e3d2-f694-441c-8926-7ce5fc1adfb7.mdx\",lineNumber:13,columnNumber:4},this),\".\"]},void 0,!0,{fileName:\"/Users/andreasthomas/github/chronark/chronark.com/content/projects/_mdx_bundler_entry_point-93a1e3d2-f694-441c-8926-7ce5fc1adfb7.mdx\",lineNumber:12,columnNumber:1},this),`\n`,(0,n.jsxDEV)(e.p,{children:\"It is the only connectionless (HTTP based) Redis client and designed for:\"},void 0,!1,{fileName:\"/Users/andreasthomas/github/chronark/chronark.com/content/projects/_mdx_bundler_entry_point-93a1e3d2-f694-441c-8926-7ce5fc1adfb7.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-93a1e3d2-f694-441c-8926-7ce5fc1adfb7.mdx\",lineNumber:17,columnNumber:1},this),`\n`,(0,n.jsxDEV)(e.li,{children:[`Cloudflare Workers (see\n`,(0,n.jsxDEV)(e.a,{href:\"https://github.com/upstash/upstash-redis/tree/main/examples/cloudflare-workers\",children:\"the example\"},void 0,!1,{fileName:\"/Users/andreasthomas/github/chronark/chronark.com/content/projects/_mdx_bundler_entry_point-93a1e3d2-f694-441c-8926-7ce5fc1adfb7.mdx\",lineNumber:19,columnNumber:3},this),\")\"]},void 0,!0,{fileName:\"/Users/andreasthomas/github/chronark/chronark.com/content/projects/_mdx_bundler_entry_point-93a1e3d2-f694-441c-8926-7ce5fc1adfb7.mdx\",lineNumber:18,columnNumber:1},this),`\n`,(0,n.jsxDEV)(e.li,{children:[`Fastly Compute@Edge (see\n`,(0,n.jsxDEV)(e.a,{href:\"https://github.com/upstash/upstash-redis/tree/main/examples/fastly\",children:\"the example\"},void 0,!1,{fileName:\"/Users/andreasthomas/github/chronark/chronark.com/content/projects/_mdx_bundler_entry_point-93a1e3d2-f694-441c-8926-7ce5fc1adfb7.mdx\",lineNumber:21,columnNumber:3},this),\")\"]},void 0,!0,{fileName:\"/Users/andreasthomas/github/chronark/chronark.com/content/projects/_mdx_bundler_entry_point-93a1e3d2-f694-441c-8926-7ce5fc1adfb7.mdx\",lineNumber:20,columnNumber:1},this),`\n`,(0,n.jsxDEV)(e.li,{children:\"Next.js, Jamstack ...\"},void 0,!1,{fileName:\"/Users/andreasthomas/github/chronark/chronark.com/content/projects/_mdx_bundler_entry_point-93a1e3d2-f694-441c-8926-7ce5fc1adfb7.mdx\",lineNumber:22,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-93a1e3d2-f694-441c-8926-7ce5fc1adfb7.mdx\",lineNumber:23,columnNumber:1},this),`\n`,(0,n.jsxDEV)(e.li,{children:\"WebAssembly\"},void 0,!1,{fileName:\"/Users/andreasthomas/github/chronark/chronark.com/content/projects/_mdx_bundler_entry_point-93a1e3d2-f694-441c-8926-7ce5fc1adfb7.mdx\",lineNumber:24,columnNumber:1},this),`\n`,(0,n.jsxDEV)(e.li,{children:\"and other environments where HTTP is preferred over TCP.\"},void 0,!1,{fileName:\"/Users/andreasthomas/github/chronark/chronark.com/content/projects/_mdx_bundler_entry_point-93a1e3d2-f694-441c-8926-7ce5fc1adfb7.mdx\",lineNumber:25,columnNumber:1},this),`\n`]},void 0,!0,{fileName:\"/Users/andreasthomas/github/chronark/chronark.com/content/projects/_mdx_bundler_entry_point-93a1e3d2-f694-441c-8926-7ce5fc1adfb7.mdx\",lineNumber:17,columnNumber:1},this),`\n`,(0,n.jsxDEV)(e.p,{children:[`See\n`,(0,n.jsxDEV)(e.a,{href:\"https://docs.upstash.com/features/restapi#rest---redis-api-compatibility\",children:\"the list of APIs\"},void 0,!1,{fileName:\"/Users/andreasthomas/github/chronark/chronark.com/content/projects/_mdx_bundler_entry_point-93a1e3d2-f694-441c-8926-7ce5fc1adfb7.mdx\",lineNumber:28,columnNumber:1},this),`\nsupported.`]},void 0,!0,{fileName:\"/Users/andreasthomas/github/chronark/chronark.com/content/projects/_mdx_bundler_entry_point-93a1e3d2-f694-441c-8926-7ce5fc1adfb7.mdx\",lineNumber:27,columnNumber:1},this),`\n`,(0,n.jsxDEV)(e.h2,{id:\"quick-start\",children:[(0,n.jsxDEV)(e.a,{className:\"subheading-anchor\",\"aria-label\":\"Link to section\",href:\"#quick-start\",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-93a1e3d2-f694-441c-8926-7ce5fc1adfb7.mdx\"},this)},void 0,!1,{fileName:\"/Users/andreasthomas/github/chronark/chronark.com/content/projects/_mdx_bundler_entry_point-93a1e3d2-f694-441c-8926-7ce5fc1adfb7.mdx\"},this),\"Quick Start\"]},void 0,!0,{fileName:\"/Users/andreasthomas/github/chronark/chronark.com/content/projects/_mdx_bundler_entry_point-93a1e3d2-f694-441c-8926-7ce5fc1adfb7.mdx\",lineNumber:31,columnNumber:1},this),`\n`,(0,n.jsxDEV)(e.h3,{id:\"install\",children:[(0,n.jsxDEV)(e.a,{className:\"subheading-anchor\",\"aria-label\":\"Link to section\",href:\"#install\",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-93a1e3d2-f694-441c-8926-7ce5fc1adfb7.mdx\"},this)},void 0,!1,{fileName:\"/Users/andreasthomas/github/chronark/chronark.com/content/projects/_mdx_bundler_entry_point-93a1e3d2-f694-441c-8926-7ce5fc1adfb7.mdx\"},this),\"Install\"]},void 0,!0,{fileName:\"/Users/andreasthomas/github/chronark/chronark.com/content/projects/_mdx_bundler_entry_point-93a1e3d2-f694-441c-8926-7ce5fc1adfb7.mdx\",lineNumber:33,columnNumber:1},this),`\n`,(0,n.jsxDEV)(e.h4,{id:\"nodejs\",children:[(0,n.jsxDEV)(e.a,{className:\"subheading-anchor\",\"aria-label\":\"Link to section\",href:\"#nodejs\",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-93a1e3d2-f694-441c-8926-7ce5fc1adfb7.mdx\"},this)},void 0,!1,{fileName:\"/Users/andreasthomas/github/chronark/chronark.com/content/projects/_mdx_bundler_entry_point-93a1e3d2-f694-441c-8926-7ce5fc1adfb7.mdx\"},this),\"Node.js\"]},void 0,!0,{fileName:\"/Users/andreasthomas/github/chronark/chronark.com/content/projects/_mdx_bundler_entry_point-93a1e3d2-f694-441c-8926-7ce5fc1adfb7.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\":\"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-93a1e3d2-f694-441c-8926-7ce5fc1adfb7.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-93a1e3d2-f694-441c-8926-7ce5fc1adfb7.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-93a1e3d2-f694-441c-8926-7ce5fc1adfb7.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-93a1e3d2-f694-441c-8926-7ce5fc1adfb7.mdx\",lineNumber:1,columnNumber:223},this),(0,n.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-93a1e3d2-f694-441c-8926-7ce5fc1adfb7.mdx\",lineNumber:1,columnNumber:260},this)]},void 0,!0,{fileName:\"/Users/andreasthomas/github/chronark/chronark.com/content/projects/_mdx_bundler_entry_point-93a1e3d2-f694-441c-8926-7ce5fc1adfb7.mdx\",lineNumber:1,columnNumber:85},this)},void 0,!1,{fileName:\"/Users/andreasthomas/github/chronark/chronark.com/content/projects/_mdx_bundler_entry_point-93a1e3d2-f694-441c-8926-7ce5fc1adfb7.mdx\",lineNumber:1,columnNumber:79},this)},void 0,!1,{fileName:\"/Users/andreasthomas/github/chronark/chronark.com/content/projects/_mdx_bundler_entry_point-93a1e3d2-f694-441c-8926-7ce5fc1adfb7.mdx\",lineNumber:1,columnNumber:1},this)},void 0,!1,{fileName:\"/Users/andreasthomas/github/chronark/chronark.com/content/projects/_mdx_bundler_entry_point-93a1e3d2-f694-441c-8926-7ce5fc1adfb7.mdx\",lineNumber:37,columnNumber:1},this),`\n`,(0,n.jsxDEV)(e.h4,{id:\"deno\",children:[(0,n.jsxDEV)(e.a,{className:\"subheading-anchor\",\"aria-label\":\"Link to section\",href:\"#deno\",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-93a1e3d2-f694-441c-8926-7ce5fc1adfb7.mdx\"},this)},void 0,!1,{fileName:\"/Users/andreasthomas/github/chronark/chronark.com/content/projects/_mdx_bundler_entry_point-93a1e3d2-f694-441c-8926-7ce5fc1adfb7.mdx\"},this),\"Deno\"]},void 0,!0,{fileName:\"/Users/andreasthomas/github/chronark/chronark.com/content/projects/_mdx_bundler_entry_point-93a1e3d2-f694-441c-8926-7ce5fc1adfb7.mdx\",lineNumber:41,columnNumber:1},this),`\n`,(0,n.jsxDEV)(e.div,{\"data-rehype-pretty-code-fragment\":\"\",children:(0,n.jsxDEV)(e.pre,{\"data-language\":\"ts\",\"data-theme\":\"default\",children:(0,n.jsxDEV)(e.code,{\"data-language\":\"ts\",\"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-93a1e3d2-f694-441c-8926-7ce5fc1adfb7.mdx\",lineNumber:1,columnNumber:104},this),(0,n.jsxDEV)(e.span,{style:{color:\"#E1E4E8\"},children:\" { Redis } \"},void 0,!1,{fileName:\"/Users/andreasthomas/github/chronark/chronark.com/content/projects/_mdx_bundler_entry_point-93a1e3d2-f694-441c-8926-7ce5fc1adfb7.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-93a1e3d2-f694-441c-8926-7ce5fc1adfb7.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-93a1e3d2-f694-441c-8926-7ce5fc1adfb7.mdx\",lineNumber:1,columnNumber:233},this),(0,n.jsxDEV)(e.span,{style:{color:\"#9ECBFF\"},children:'\"https://deno.land/x/upstash_redis/mod.ts\"'},void 0,!1,{fileName:\"/Users/andreasthomas/github/chronark/chronark.com/content/projects/_mdx_bundler_entry_point-93a1e3d2-f694-441c-8926-7ce5fc1adfb7.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-93a1e3d2-f694-441c-8926-7ce5fc1adfb7.mdx\",lineNumber:1,columnNumber:358},this)]},void 0,!0,{fileName:\"/Users/andreasthomas/github/chronark/chronark.com/content/projects/_mdx_bundler_entry_point-93a1e3d2-f694-441c-8926-7ce5fc1adfb7.mdx\",lineNumber:1,columnNumber:85},this)},void 0,!1,{fileName:\"/Users/andreasthomas/github/chronark/chronark.com/content/projects/_mdx_bundler_entry_point-93a1e3d2-f694-441c-8926-7ce5fc1adfb7.mdx\",lineNumber:1,columnNumber:79},this)},void 0,!1,{fileName:\"/Users/andreasthomas/github/chronark/chronark.com/content/projects/_mdx_bundler_entry_point-93a1e3d2-f694-441c-8926-7ce5fc1adfb7.mdx\",lineNumber:1,columnNumber:1},this)},void 0,!1,{fileName:\"/Users/andreasthomas/github/chronark/chronark.com/content/projects/_mdx_bundler_entry_point-93a1e3d2-f694-441c-8926-7ce5fc1adfb7.mdx\",lineNumber:43,columnNumber:1},this),`\n`,(0,n.jsxDEV)(e.h3,{id:\"create-database\",children:[(0,n.jsxDEV)(e.a,{className:\"subheading-anchor\",\"aria-label\":\"Link to section\",href:\"#create-database\",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-93a1e3d2-f694-441c-8926-7ce5fc1adfb7.mdx\"},this)},void 0,!1,{fileName:\"/Users/andreasthomas/github/chronark/chronark.com/content/projects/_mdx_bundler_entry_point-93a1e3d2-f694-441c-8926-7ce5fc1adfb7.mdx\"},this),\"Create database\"]},void 0,!0,{fileName:\"/Users/andreasthomas/github/chronark/chronark.com/content/projects/_mdx_bundler_entry_point-93a1e3d2-f694-441c-8926-7ce5fc1adfb7.mdx\",lineNumber:47,columnNumber:1},this),`\n`,(0,n.jsxDEV)(e.p,{children:[\"Create a new redis database on \",(0,n.jsxDEV)(e.a,{href:\"https://console.upstash.com/\",children:\"upstash\"},void 0,!1,{fileName:\"/Users/andreasthomas/github/chronark/chronark.com/content/projects/_mdx_bundler_entry_point-93a1e3d2-f694-441c-8926-7ce5fc1adfb7.mdx\",lineNumber:49,columnNumber:32},this)]},void 0,!0,{fileName:\"/Users/andreasthomas/github/chronark/chronark.com/content/projects/_mdx_bundler_entry_point-93a1e3d2-f694-441c-8926-7ce5fc1adfb7.mdx\",lineNumber:49,columnNumber:1},this),`\n`,(0,n.jsxDEV)(e.h2,{id:\"basic-usage\",children:[(0,n.jsxDEV)(e.a,{className:\"subheading-anchor\",\"aria-label\":\"Link to section\",href:\"#basic-usage\",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-93a1e3d2-f694-441c-8926-7ce5fc1adfb7.mdx\"},this)},void 0,!1,{fileName:\"/Users/andreasthomas/github/chronark/chronark.com/content/projects/_mdx_bundler_entry_point-93a1e3d2-f694-441c-8926-7ce5fc1adfb7.mdx\"},this),\"Basic Usage:\"]},void 0,!0,{fileName:\"/Users/andreasthomas/github/chronark/chronark.com/content/projects/_mdx_bundler_entry_point-93a1e3d2-f694-441c-8926-7ce5fc1adfb7.mdx\",lineNumber:51,columnNumber:1},this),`\n`,(0,n.jsxDEV)(e.div,{\"data-rehype-pretty-code-fragment\":\"\",children:(0,n.jsxDEV)(e.pre,{\"data-language\":\"ts\",\"data-theme\":\"default\",children:(0,n.jsxDEV)(e.code,{\"data-language\":\"ts\",\"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-93a1e3d2-f694-441c-8926-7ce5fc1adfb7.mdx\",lineNumber:1,columnNumber:104},this),(0,n.jsxDEV)(e.span,{style:{color:\"#E1E4E8\"},children:\" { Redis } \"},void 0,!1,{fileName:\"/Users/andreasthomas/github/chronark/chronark.com/content/projects/_mdx_bundler_entry_point-93a1e3d2-f694-441c-8926-7ce5fc1adfb7.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-93a1e3d2-f694-441c-8926-7ce5fc1adfb7.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-93a1e3d2-f694-441c-8926-7ce5fc1adfb7.mdx\",lineNumber:1,columnNumber:233},this),(0,n.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-93a1e3d2-f694-441c-8926-7ce5fc1adfb7.mdx\",lineNumber:1,columnNumber:270},this)]},void 0,!0,{fileName:\"/Users/andreasthomas/github/chronark/chronark.com/content/projects/_mdx_bundler_entry_point-93a1e3d2-f694-441c-8926-7ce5fc1adfb7.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-93a1e3d2-f694-441c-8926-7ce5fc1adfb7.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-93a1e3d2-f694-441c-8926-7ce5fc1adfb7.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-93a1e3d2-f694-441c-8926-7ce5fc1adfb7.mdx\",lineNumber:3,columnNumber:61},this),(0,n.jsxDEV)(e.span,{style:{color:\"#79B8FF\"},children:\"redis\"},void 0,!1,{fileName:\"/Users/andreasthomas/github/chronark/chronark.com/content/projects/_mdx_bundler_entry_point-93a1e3d2-f694-441c-8926-7ce5fc1adfb7.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-93a1e3d2-f694-441c-8926-7ce5fc1adfb7.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-93a1e3d2-f694-441c-8926-7ce5fc1adfb7.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-93a1e3d2-f694-441c-8926-7ce5fc1adfb7.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-93a1e3d2-f694-441c-8926-7ce5fc1adfb7.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-93a1e3d2-f694-441c-8926-7ce5fc1adfb7.mdx\",lineNumber:3,columnNumber:289},this),(0,n.jsxDEV)(e.span,{style:{color:\"#B392F0\"},children:\"Redis\"},void 0,!1,{fileName:\"/Users/andreasthomas/github/chronark/chronark.com/content/projects/_mdx_bundler_entry_point-93a1e3d2-f694-441c-8926-7ce5fc1adfb7.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-93a1e3d2-f694-441c-8926-7ce5fc1adfb7.mdx\",lineNumber:3,columnNumber:367},this)]},void 0,!0,{fileName:\"/Users/andreasthomas/github/chronark/chronark.com/content/projects/_mdx_bundler_entry_point-93a1e3d2-f694-441c-8926-7ce5fc1adfb7.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-93a1e3d2-f694-441c-8926-7ce5fc1adfb7.mdx\",lineNumber:4,columnNumber:20},this),(0,n.jsxDEV)(e.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-93a1e3d2-f694-441c-8926-7ce5fc1adfb7.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-93a1e3d2-f694-441c-8926-7ce5fc1adfb7.mdx\",lineNumber:4,columnNumber:125},this)]},void 0,!0,{fileName:\"/Users/andreasthomas/github/chronark/chronark.com/content/projects/_mdx_bundler_entry_point-93a1e3d2-f694-441c-8926-7ce5fc1adfb7.mdx\",lineNumber:4,columnNumber:1},this),`\n`,(0,n.jsxDEV)(e.span,{className:\"line\",children:[(0,n.jsxDEV)(e.span,{style:{color:\"#E1E4E8\"},children:\" token: <\"},void 0,!1,{fileName:\"/Users/andreasthomas/github/chronark/chronark.com/content/projects/_mdx_bundler_entry_point-93a1e3d2-f694-441c-8926-7ce5fc1adfb7.mdx\",lineNumber:5,columnNumber:20},this),(0,n.jsxDEV)(e.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-93a1e3d2-f694-441c-8926-7ce5fc1adfb7.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-93a1e3d2-f694-441c-8926-7ce5fc1adfb7.mdx\",lineNumber:5,columnNumber:129},this)]},void 0,!0,{fileName:\"/Users/andreasthomas/github/chronark/chronark.com/content/projects/_mdx_bundler_entry_point-93a1e3d2-f694-441c-8926-7ce5fc1adfb7.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-93a1e3d2-f694-441c-8926-7ce5fc1adfb7.mdx\",lineNumber:6,columnNumber:20},this)},void 0,!1,{fileName:\"/Users/andreasthomas/github/chronark/chronark.com/content/projects/_mdx_bundler_entry_point-93a1e3d2-f694-441c-8926-7ce5fc1adfb7.mdx\",lineNumber:6,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-93a1e3d2-f694-441c-8926-7ce5fc1adfb7.mdx\",lineNumber:7,columnNumber:1},this),`\n`,(0,n.jsxDEV)(e.span,{className:\"line\",children:(0,n.jsxDEV)(e.span,{style:{color:\"#6A737D\"},children:\"// string\"},void 0,!1,{fileName:\"/Users/andreasthomas/github/chronark/chronark.com/content/projects/_mdx_bundler_entry_point-93a1e3d2-f694-441c-8926-7ce5fc1adfb7.mdx\",lineNumber:8,columnNumber:20},this)},void 0,!1,{fileName:\"/Users/andreasthomas/github/chronark/chronark.com/content/projects/_mdx_bundler_entry_point-93a1e3d2-f694-441c-8926-7ce5fc1adfb7.mdx\",lineNumber:8,columnNumber:1},this),`\n`,(0,n.jsxDEV)(e.span,{className:\"line\",children:[(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-93a1e3d2-f694-441c-8926-7ce5fc1adfb7.mdx\",lineNumber:9,columnNumber:20},this),(0,n.jsxDEV)(e.span,{style:{color:\"#E1E4E8\"},children:\" redis.\"},void 0,!1,{fileName:\"/Users/andreasthomas/github/chronark/chronark.com/content/projects/_mdx_bundler_entry_point-93a1e3d2-f694-441c-8926-7ce5fc1adfb7.mdx\",lineNumber:9,columnNumber:61},this),(0,n.jsxDEV)(e.span,{style:{color:\"#B392F0\"},children:\"set\"},void 0,!1,{fileName:\"/Users/andreasthomas/github/chronark/chronark.com/content/projects/_mdx_bundler_entry_point-93a1e3d2-f694-441c-8926-7ce5fc1adfb7.mdx\",lineNumber:9,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-93a1e3d2-f694-441c-8926-7ce5fc1adfb7.mdx\",lineNumber:9,columnNumber:143},this),(0,n.jsxDEV)(e.span,{style:{color:\"#9ECBFF\"},children:\"'key'\"},void 0,!1,{fileName:\"/Users/andreasthomas/github/chronark/chronark.com/content/projects/_mdx_bundler_entry_point-93a1e3d2-f694-441c-8926-7ce5fc1adfb7.mdx\",lineNumber:9,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-93a1e3d2-f694-441c-8926-7ce5fc1adfb7.mdx\",lineNumber:9,columnNumber:229},this),(0,n.jsxDEV)(e.span,{style:{color:\"#9ECBFF\"},children:\"'value'\"},void 0,!1,{fileName:\"/Users/andreasthomas/github/chronark/chronark.com/content/projects/_mdx_bundler_entry_point-93a1e3d2-f694-441c-8926-7ce5fc1adfb7.mdx\",lineNumber:9,columnNumber:267},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-93a1e3d2-f694-441c-8926-7ce5fc1adfb7.mdx\",lineNumber:9,columnNumber:318},this)]},void 0,!0,{fileName:\"/Users/andreasthomas/github/chronark/chronark.com/content/projects/_mdx_bundler_entry_point-93a1e3d2-f694-441c-8926-7ce5fc1adfb7.mdx\",lineNumber:9,columnNumber:1},this),`\n`,(0,n.jsxDEV)(e.span,{className:\"line\",children:[(0,n.jsxDEV)(e.span,{style:{color:\"#F97583\"},children:\"let\"},void 0,!1,{fileName:\"/Users/andreasthomas/github/chronark/chronark.com/content/projects/_mdx_bundler_entry_point-93a1e3d2-f694-441c-8926-7ce5fc1adfb7.mdx\",lineNumber:10,columnNumber:20},this),(0,n.jsxDEV)(e.span,{style:{color:\"#E1E4E8\"},children:\" data \"},void 0,!1,{fileName:\"/Users/andreasthomas/github/chronark/chronark.com/content/projects/_mdx_bundler_entry_point-93a1e3d2-f694-441c-8926-7ce5fc1adfb7.mdx\",lineNumber:10,columnNumber:59},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-93a1e3d2-f694-441c-8926-7ce5fc1adfb7.mdx\",lineNumber:10,columnNumber:101},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-93a1e3d2-f694-441c-8926-7ce5fc1adfb7.mdx\",lineNumber:10,columnNumber:138},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-93a1e3d2-f694-441c-8926-7ce5fc1adfb7.mdx\",lineNumber:10,columnNumber:175},this),(0,n.jsxDEV)(e.span,{style:{color:\"#E1E4E8\"},children:\" redis.\"},void 0,!1,{fileName:\"/Users/andreasthomas/github/chronark/chronark.com/content/projects/_mdx_bundler_entry_point-93a1e3d2-f694-441c-8926-7ce5fc1adfb7.mdx\",lineNumber:10,columnNumber:216},this),(0,n.jsxDEV)(e.span,{style:{color:\"#B392F0\"},children:\"get\"},void 0,!1,{fileName:\"/Users/andreasthomas/github/chronark/chronark.com/content/projects/_mdx_bundler_entry_point-93a1e3d2-f694-441c-8926-7ce5fc1adfb7.mdx\",lineNumber:10,columnNumber:259},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-93a1e3d2-f694-441c-8926-7ce5fc1adfb7.mdx\",lineNumber:10,columnNumber:298},this),(0,n.jsxDEV)(e.span,{style:{color:\"#9ECBFF\"},children:\"'key'\"},void 0,!1,{fileName:\"/Users/andreasthomas/github/chronark/chronark.com/content/projects/_mdx_bundler_entry_point-93a1e3d2-f694-441c-8926-7ce5fc1adfb7.mdx\",lineNumber:10,columnNumber:335},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-93a1e3d2-f694-441c-8926-7ce5fc1adfb7.mdx\",lineNumber:10,columnNumber:384},this)]},void 0,!0,{fileName:\"/Users/andreasthomas/github/chronark/chronark.com/content/projects/_mdx_bundler_entry_point-93a1e3d2-f694-441c-8926-7ce5fc1adfb7.mdx\",lineNumber:10,columnNumber:1},this),`\n`,(0,n.jsxDEV)(e.span,{className:\"line\",children:[(0,n.jsxDEV)(e.span,{style:{color:\"#E1E4E8\"},children:\"console.\"},void 0,!1,{fileName:\"/Users/andreasthomas/github/chronark/chronark.com/content/projects/_mdx_bundler_entry_point-93a1e3d2-f694-441c-8926-7ce5fc1adfb7.mdx\",lineNumber:11,columnNumber:20},this),(0,n.jsxDEV)(e.span,{style:{color:\"#B392F0\"},children:\"log\"},void 0,!1,{fileName:\"/Users/andreasthomas/github/chronark/chronark.com/content/projects/_mdx_bundler_entry_point-93a1e3d2-f694-441c-8926-7ce5fc1adfb7.mdx\",lineNumber:11,columnNumber:64},this),(0,n.jsxDEV)(e.span,{style:{color:\"#E1E4E8\"},children:\"(data)\"},void 0,!1,{fileName:\"/Users/andreasthomas/github/chronark/chronark.com/content/projects/_mdx_bundler_entry_point-93a1e3d2-f694-441c-8926-7ce5fc1adfb7.mdx\",lineNumber:11,columnNumber:103},this)]},void 0,!0,{fileName:\"/Users/andreasthomas/github/chronark/chronark.com/content/projects/_mdx_bundler_entry_point-93a1e3d2-f694-441c-8926-7ce5fc1adfb7.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-93a1e3d2-f694-441c-8926-7ce5fc1adfb7.mdx\",lineNumber:12,columnNumber:1},this),`\n`,(0,n.jsxDEV)(e.span,{className:\"line\",children:[(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-93a1e3d2-f694-441c-8926-7ce5fc1adfb7.mdx\",lineNumber:13,columnNumber:20},this),(0,n.jsxDEV)(e.span,{style:{color:\"#E1E4E8\"},children:\" redis.\"},void 0,!1,{fileName:\"/Users/andreasthomas/github/chronark/chronark.com/content/projects/_mdx_bundler_entry_point-93a1e3d2-f694-441c-8926-7ce5fc1adfb7.mdx\",lineNumber:13,columnNumber:61},this),(0,n.jsxDEV)(e.span,{style:{color:\"#B392F0\"},children:\"set\"},void 0,!1,{fileName:\"/Users/andreasthomas/github/chronark/chronark.com/content/projects/_mdx_bundler_entry_point-93a1e3d2-f694-441c-8926-7ce5fc1adfb7.mdx\",lineNumber:13,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-93a1e3d2-f694-441c-8926-7ce5fc1adfb7.mdx\",lineNumber:13,columnNumber:143},this),(0,n.jsxDEV)(e.span,{style:{color:\"#9ECBFF\"},children:\"'key2'\"},void 0,!1,{fileName:\"/Users/andreasthomas/github/chronark/chronark.com/content/projects/_mdx_bundler_entry_point-93a1e3d2-f694-441c-8926-7ce5fc1adfb7.mdx\",lineNumber:13,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-93a1e3d2-f694-441c-8926-7ce5fc1adfb7.mdx\",lineNumber:13,columnNumber:230},this),(0,n.jsxDEV)(e.span,{style:{color:\"#9ECBFF\"},children:\"'value2'\"},void 0,!1,{fileName:\"/Users/andreasthomas/github/chronark/chronark.com/content/projects/_mdx_bundler_entry_point-93a1e3d2-f694-441c-8926-7ce5fc1adfb7.mdx\",lineNumber:13,columnNumber:268},this),(0,n.jsxDEV)(e.span,{style:{color:\"#E1E4E8\"},children:\", {ex: \"},void 0,!1,{fileName:\"/Users/andreasthomas/github/chronark/chronark.com/content/projects/_mdx_bundler_entry_point-93a1e3d2-f694-441c-8926-7ce5fc1adfb7.mdx\",lineNumber:13,columnNumber:320},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-93a1e3d2-f694-441c-8926-7ce5fc1adfb7.mdx\",lineNumber:13,columnNumber:363},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-93a1e3d2-f694-441c-8926-7ce5fc1adfb7.mdx\",lineNumber:13,columnNumber:400},this)]},void 0,!0,{fileName:\"/Users/andreasthomas/github/chronark/chronark.com/content/projects/_mdx_bundler_entry_point-93a1e3d2-f694-441c-8926-7ce5fc1adfb7.mdx\",lineNumber:13,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-93a1e3d2-f694-441c-8926-7ce5fc1adfb7.mdx\",lineNumber:14,columnNumber:1},this),`\n`,(0,n.jsxDEV)(e.span,{className:\"line\",children:(0,n.jsxDEV)(e.span,{style:{color:\"#6A737D\"},children:\"// sorted set\"},void 0,!1,{fileName:\"/Users/andreasthomas/github/chronark/chronark.com/content/projects/_mdx_bundler_entry_point-93a1e3d2-f694-441c-8926-7ce5fc1adfb7.mdx\",lineNumber:15,columnNumber:20},this)},void 0,!1,{fileName:\"/Users/andreasthomas/github/chronark/chronark.com/content/projects/_mdx_bundler_entry_point-93a1e3d2-f694-441c-8926-7ce5fc1adfb7.mdx\",lineNumber:15,columnNumber:1},this),`\n`,(0,n.jsxDEV)(e.span,{className:\"line\",children:[(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-93a1e3d2-f694-441c-8926-7ce5fc1adfb7.mdx\",lineNumber:16,columnNumber:20},this),(0,n.jsxDEV)(e.span,{style:{color:\"#E1E4E8\"},children:\" redis.\"},void 0,!1,{fileName:\"/Users/andreasthomas/github/chronark/chronark.com/content/projects/_mdx_bundler_entry_point-93a1e3d2-f694-441c-8926-7ce5fc1adfb7.mdx\",lineNumber:16,columnNumber:61},this),(0,n.jsxDEV)(e.span,{style:{color:\"#B392F0\"},children:\"zadd\"},void 0,!1,{fileName:\"/Users/andreasthomas/github/chronark/chronark.com/content/projects/_mdx_bundler_entry_point-93a1e3d2-f694-441c-8926-7ce5fc1adfb7.mdx\",lineNumber:16,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-93a1e3d2-f694-441c-8926-7ce5fc1adfb7.mdx\",lineNumber:16,columnNumber:144},this),(0,n.jsxDEV)(e.span,{style:{color:\"#9ECBFF\"},children:\"'scores'\"},void 0,!1,{fileName:\"/Users/andreasthomas/github/chronark/chronark.com/content/projects/_mdx_bundler_entry_point-93a1e3d2-f694-441c-8926-7ce5fc1adfb7.mdx\",lineNumber:16,columnNumber:181},this),(0,n.jsxDEV)(e.span,{style:{color:\"#E1E4E8\"},children:\", { score: \"},void 0,!1,{fileName:\"/Users/andreasthomas/github/chronark/chronark.com/content/projects/_mdx_bundler_entry_point-93a1e3d2-f694-441c-8926-7ce5fc1adfb7.mdx\",lineNumber:16,columnNumber:233},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-93a1e3d2-f694-441c-8926-7ce5fc1adfb7.mdx\",lineNumber:16,columnNumber:280},this),(0,n.jsxDEV)(e.span,{style:{color:\"#E1E4E8\"},children:\", member: \"},void 0,!1,{fileName:\"/Users/andreasthomas/github/chronark/chronark.com/content/projects/_mdx_bundler_entry_point-93a1e3d2-f694-441c-8926-7ce5fc1adfb7.mdx\",lineNumber:16,columnNumber:317},this),(0,n.jsxDEV)(e.span,{style:{color:\"#9ECBFF\"},children:\"'team1'\"},void 0,!1,{fileName:\"/Users/andreasthomas/github/chronark/chronark.com/content/projects/_mdx_bundler_entry_point-93a1e3d2-f694-441c-8926-7ce5fc1adfb7.mdx\",lineNumber:16,columnNumber:363},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-93a1e3d2-f694-441c-8926-7ce5fc1adfb7.mdx\",lineNumber:16,columnNumber:414},this)]},void 0,!0,{fileName:\"/Users/andreasthomas/github/chronark/chronark.com/content/projects/_mdx_bundler_entry_point-93a1e3d2-f694-441c-8926-7ce5fc1adfb7.mdx\",lineNumber:16,columnNumber:1},this),`\n`,(0,n.jsxDEV)(e.span,{className:\"line\",children:[(0,n.jsxDEV)(e.span,{style:{color:\"#E1E4E8\"},children:\"data \"},void 0,!1,{fileName:\"/Users/andreasthomas/github/chronark/chronark.com/content/projects/_mdx_bundler_entry_point-93a1e3d2-f694-441c-8926-7ce5fc1adfb7.mdx\",lineNumber:17,columnNumber:20},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-93a1e3d2-f694-441c-8926-7ce5fc1adfb7.mdx\",lineNumber:17,columnNumber:61},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-93a1e3d2-f694-441c-8926-7ce5fc1adfb7.mdx\",lineNumber:17,columnNumber:98},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-93a1e3d2-f694-441c-8926-7ce5fc1adfb7.mdx\",lineNumber:17,columnNumber:135},this),(0,n.jsxDEV)(e.span,{style:{color:\"#E1E4E8\"},children:\" redis.\"},void 0,!1,{fileName:\"/Users/andreasthomas/github/chronark/chronark.com/content/projects/_mdx_bundler_entry_point-93a1e3d2-f694-441c-8926-7ce5fc1adfb7.mdx\",lineNumber:17,columnNumber:176},this),(0,n.jsxDEV)(e.span,{style:{color:\"#B392F0\"},children:\"zrange\"},void 0,!1,{fileName:\"/Users/andreasthomas/github/chronark/chronark.com/content/projects/_mdx_bundler_entry_point-93a1e3d2-f694-441c-8926-7ce5fc1adfb7.mdx\",lineNumber:17,columnNumber:219},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-93a1e3d2-f694-441c-8926-7ce5fc1adfb7.mdx\",lineNumber:17,columnNumber:261},this),(0,n.jsxDEV)(e.span,{style:{color:\"#9ECBFF\"},children:\"'scores'\"},void 0,!1,{fileName:\"/Users/andreasthomas/github/chronark/chronark.com/content/projects/_mdx_bundler_entry_point-93a1e3d2-f694-441c-8926-7ce5fc1adfb7.mdx\",lineNumber:17,columnNumber:298},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-93a1e3d2-f694-441c-8926-7ce5fc1adfb7.mdx\",lineNumber:17,columnNumber:350},this),(0,n.jsxDEV)(e.span,{style:{color:\"#79B8FF\"},children:\"0\"},void 0,!1,{fileName:\"/Users/andreasthomas/github/chronark/chronark.com/content/projects/_mdx_bundler_entry_point-93a1e3d2-f694-441c-8926-7ce5fc1adfb7.mdx\",lineNumber:17,columnNumber:388},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-93a1e3d2-f694-441c-8926-7ce5fc1adfb7.mdx\",lineNumber:17,columnNumber:425},this),(0,n.jsxDEV)(e.span,{style:{color:\"#79B8FF\"},children:\"100\"},void 0,!1,{fileName:\"/Users/andreasthomas/github/chronark/chronark.com/content/projects/_mdx_bundler_entry_point-93a1e3d2-f694-441c-8926-7ce5fc1adfb7.mdx\",lineNumber:17,columnNumber:463},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-93a1e3d2-f694-441c-8926-7ce5fc1adfb7.mdx\",lineNumber:17,columnNumber:502},this)]},void 0,!0,{fileName:\"/Users/andreasthomas/github/chronark/chronark.com/content/projects/_mdx_bundler_entry_point-93a1e3d2-f694-441c-8926-7ce5fc1adfb7.mdx\",lineNumber:17,columnNumber:1},this),`\n`,(0,n.jsxDEV)(e.span,{className:\"line\",children:[(0,n.jsxDEV)(e.span,{style:{color:\"#E1E4E8\"},children:\"console.\"},void 0,!1,{fileName:\"/Users/andreasthomas/github/chronark/chronark.com/content/projects/_mdx_bundler_entry_point-93a1e3d2-f694-441c-8926-7ce5fc1adfb7.mdx\",lineNumber:18,columnNumber:20},this),(0,n.jsxDEV)(e.span,{style:{color:\"#B392F0\"},children:\"log\"},void 0,!1,{fileName:\"/Users/andreasthomas/github/chronark/chronark.com/content/projects/_mdx_bundler_entry_point-93a1e3d2-f694-441c-8926-7ce5fc1adfb7.mdx\",lineNumber:18,columnNumber:64},this),(0,n.jsxDEV)(e.span,{style:{color:\"#E1E4E8\"},children:\"(data)\"},void 0,!1,{fileName:\"/Users/andreasthomas/github/chronark/chronark.com/content/projects/_mdx_bundler_entry_point-93a1e3d2-f694-441c-8926-7ce5fc1adfb7.mdx\",lineNumber:18,columnNumber:103},this)]},void 0,!0,{fileName:\"/Users/andreasthomas/github/chronark/chronark.com/content/projects/_mdx_bundler_entry_point-93a1e3d2-f694-441c-8926-7ce5fc1adfb7.mdx\",lineNumber:18,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-93a1e3d2-f694-441c-8926-7ce5fc1adfb7.mdx\",lineNumber:19,columnNumber:1},this),`\n`,(0,n.jsxDEV)(e.span,{className:\"line\",children:(0,n.jsxDEV)(e.span,{style:{color:\"#6A737D\"},children:\"// list\"},void 0,!1,{fileName:\"/Users/andreasthomas/github/chronark/chronark.com/content/projects/_mdx_bundler_entry_point-93a1e3d2-f694-441c-8926-7ce5fc1adfb7.mdx\",lineNumber:20,columnNumber:20},this)},void 0,!1,{fileName:\"/Users/andreasthomas/github/chronark/chronark.com/content/projects/_mdx_bundler_entry_point-93a1e3d2-f694-441c-8926-7ce5fc1adfb7.mdx\",lineNumber:20,columnNumber:1},this),`\n`,(0,n.jsxDEV)(e.span,{className:\"line\",children:[(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-93a1e3d2-f694-441c-8926-7ce5fc1adfb7.mdx\",lineNumber:21,columnNumber:20},this),(0,n.jsxDEV)(e.span,{style:{color:\"#E1E4E8\"},children:\" redis.\"},void 0,!1,{fileName:\"/Users/andreasthomas/github/chronark/chronark.com/content/projects/_mdx_bundler_entry_point-93a1e3d2-f694-441c-8926-7ce5fc1adfb7.mdx\",lineNumber:21,columnNumber:61},this),(0,n.jsxDEV)(e.span,{style:{color:\"#B392F0\"},children:\"lpush\"},void 0,!1,{fileName:\"/Users/andreasthomas/github/chronark/chronark.com/content/projects/_mdx_bundler_entry_point-93a1e3d2-f694-441c-8926-7ce5fc1adfb7.mdx\",lineNumber:21,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-93a1e3d2-f694-441c-8926-7ce5fc1adfb7.mdx\",lineNumber:21,columnNumber:145},this),(0,n.jsxDEV)(e.span,{style:{color:\"#9ECBFF\"},children:\"'elements'\"},void 0,!1,{fileName:\"/Users/andreasthomas/github/chronark/chronark.com/content/projects/_mdx_bundler_entry_point-93a1e3d2-f694-441c-8926-7ce5fc1adfb7.mdx\",lineNumber:21,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-93a1e3d2-f694-441c-8926-7ce5fc1adfb7.mdx\",lineNumber:21,columnNumber:236},this),(0,n.jsxDEV)(e.span,{style:{color:\"#9ECBFF\"},children:\"'magnesium'\"},void 0,!1,{fileName:\"/Users/andreasthomas/github/chronark/chronark.com/content/projects/_mdx_bundler_entry_point-93a1e3d2-f694-441c-8926-7ce5fc1adfb7.mdx\",lineNumber:21,columnNumber:274},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-93a1e3d2-f694-441c-8926-7ce5fc1adfb7.mdx\",lineNumber:21,columnNumber:329},this)]},void 0,!0,{fileName:\"/Users/andreasthomas/github/chronark/chronark.com/content/projects/_mdx_bundler_entry_point-93a1e3d2-f694-441c-8926-7ce5fc1adfb7.mdx\",lineNumber:21,columnNumber:1},this),`\n`,(0,n.jsxDEV)(e.span,{className:\"line\",children:[(0,n.jsxDEV)(e.span,{style:{color:\"#E1E4E8\"},children:\"data \"},void 0,!1,{fileName:\"/Users/andreasthomas/github/chronark/chronark.com/content/projects/_mdx_bundler_entry_point-93a1e3d2-f694-441c-8926-7ce5fc1adfb7.mdx\",lineNumber:22,columnNumber:20},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-93a1e3d2-f694-441c-8926-7ce5fc1adfb7.mdx\",lineNumber:22,columnNumber:61},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-93a1e3d2-f694-441c-8926-7ce5fc1adfb7.mdx\",lineNumber:22,columnNumber:98},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-93a1e3d2-f694-441c-8926-7ce5fc1adfb7.mdx\",lineNumber:22,columnNumber:135},this),(0,n.jsxDEV)(e.span,{style:{color:\"#E1E4E8\"},children:\" redis.\"},void 0,!1,{fileName:\"/Users/andreasthomas/github/chronark/chronark.com/content/projects/_mdx_bundler_entry_point-93a1e3d2-f694-441c-8926-7ce5fc1adfb7.mdx\",lineNumber:22,columnNumber:176},this),(0,n.jsxDEV)(e.span,{style:{color:\"#B392F0\"},children:\"lrange\"},void 0,!1,{fileName:\"/Users/andreasthomas/github/chronark/chronark.com/content/projects/_mdx_bundler_entry_point-93a1e3d2-f694-441c-8926-7ce5fc1adfb7.mdx\",lineNumber:22,columnNumber:219},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-93a1e3d2-f694-441c-8926-7ce5fc1adfb7.mdx\",lineNumber:22,columnNumber:261},this),(0,n.jsxDEV)(e.span,{style:{color:\"#9ECBFF\"},children:\"'elements'\"},void 0,!1,{fileName:\"/Users/andreasthomas/github/chronark/chronark.com/content/projects/_mdx_bundler_entry_point-93a1e3d2-f694-441c-8926-7ce5fc1adfb7.mdx\",lineNumber:22,columnNumber:298},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-93a1e3d2-f694-441c-8926-7ce5fc1adfb7.mdx\",lineNumber:22,columnNumber:352},this),(0,n.jsxDEV)(e.span,{style:{color:\"#79B8FF\"},children:\"0\"},void 0,!1,{fileName:\"/Users/andreasthomas/github/chronark/chronark.com/content/projects/_mdx_bundler_entry_point-93a1e3d2-f694-441c-8926-7ce5fc1adfb7.mdx\",lineNumber:22,columnNumber:390},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-93a1e3d2-f694-441c-8926-7ce5fc1adfb7.mdx\",lineNumber:22,columnNumber:427},this),(0,n.jsxDEV)(e.span,{style:{color:\"#79B8FF\"},children:\"100\"},void 0,!1,{fileName:\"/Users/andreasthomas/github/chronark/chronark.com/content/projects/_mdx_bundler_entry_point-93a1e3d2-f694-441c-8926-7ce5fc1adfb7.mdx\",lineNumber:22,columnNumber:465},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-93a1e3d2-f694-441c-8926-7ce5fc1adfb7.mdx\",lineNumber:22,columnNumber:504},this)]},void 0,!0,{fileName:\"/Users/andreasthomas/github/chronark/chronark.com/content/projects/_mdx_bundler_entry_point-93a1e3d2-f694-441c-8926-7ce5fc1adfb7.mdx\",lineNumber:22,columnNumber:1},this),`\n`,(0,n.jsxDEV)(e.span,{className:\"line\",children:[(0,n.jsxDEV)(e.span,{style:{color:\"#E1E4E8\"},children:\"console.\"},void 0,!1,{fileName:\"/Users/andreasthomas/github/chronark/chronark.com/content/projects/_mdx_bundler_entry_point-93a1e3d2-f694-441c-8926-7ce5fc1adfb7.mdx\",lineNumber:23,columnNumber:20},this),(0,n.jsxDEV)(e.span,{style:{color:\"#B392F0\"},children:\"log\"},void 0,!1,{fileName:\"/Users/andreasthomas/github/chronark/chronark.com/content/projects/_mdx_bundler_entry_point-93a1e3d2-f694-441c-8926-7ce5fc1adfb7.mdx\",lineNumber:23,columnNumber:64},this),(0,n.jsxDEV)(e.span,{style:{color:\"#E1E4E8\"},children:\"(data)\"},void 0,!1,{fileName:\"/Users/andreasthomas/github/chronark/chronark.com/content/projects/_mdx_bundler_entry_point-93a1e3d2-f694-441c-8926-7ce5fc1adfb7.mdx\",lineNumber:23,columnNumber:103},this)]},void 0,!0,{fileName:\"/Users/andreasthomas/github/chronark/chronark.com/content/projects/_mdx_bundler_entry_point-93a1e3d2-f694-441c-8926-7ce5fc1adfb7.mdx\",lineNumber:23,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-93a1e3d2-f694-441c-8926-7ce5fc1adfb7.mdx\",lineNumber:24,columnNumber:1},this),`\n`,(0,n.jsxDEV)(e.span,{className:\"line\",children:(0,n.jsxDEV)(e.span,{style:{color:\"#6A737D\"},children:\"// hash\"},void 0,!1,{fileName:\"/Users/andreasthomas/github/chronark/chronark.com/content/projects/_mdx_bundler_entry_point-93a1e3d2-f694-441c-8926-7ce5fc1adfb7.mdx\",lineNumber:25,columnNumber:20},this)},void 0,!1,{fileName:\"/Users/andreasthomas/github/chronark/chronark.com/content/projects/_mdx_bundler_entry_point-93a1e3d2-f694-441c-8926-7ce5fc1adfb7.mdx\",lineNumber:25,columnNumber:1},this),`\n`,(0,n.jsxDEV)(e.span,{className:\"line\",children:[(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-93a1e3d2-f694-441c-8926-7ce5fc1adfb7.mdx\",lineNumber:26,columnNumber:20},this),(0,n.jsxDEV)(e.span,{style:{color:\"#E1E4E8\"},children:\" redis.\"},void 0,!1,{fileName:\"/Users/andreasthomas/github/chronark/chronark.com/content/projects/_mdx_bundler_entry_point-93a1e3d2-f694-441c-8926-7ce5fc1adfb7.mdx\",lineNumber:26,columnNumber:61},this),(0,n.jsxDEV)(e.span,{style:{color:\"#B392F0\"},children:\"hset\"},void 0,!1,{fileName:\"/Users/andreasthomas/github/chronark/chronark.com/content/projects/_mdx_bundler_entry_point-93a1e3d2-f694-441c-8926-7ce5fc1adfb7.mdx\",lineNumber:26,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-93a1e3d2-f694-441c-8926-7ce5fc1adfb7.mdx\",lineNumber:26,columnNumber:144},this),(0,n.jsxDEV)(e.span,{style:{color:\"#9ECBFF\"},children:\"'people'\"},void 0,!1,{fileName:\"/Users/andreasthomas/github/chronark/chronark.com/content/projects/_mdx_bundler_entry_point-93a1e3d2-f694-441c-8926-7ce5fc1adfb7.mdx\",lineNumber:26,columnNumber:181},this),(0,n.jsxDEV)(e.span,{style:{color:\"#E1E4E8\"},children:\", {name: \"},void 0,!1,{fileName:\"/Users/andreasthomas/github/chronark/chronark.com/content/projects/_mdx_bundler_entry_point-93a1e3d2-f694-441c-8926-7ce5fc1adfb7.mdx\",lineNumber:26,columnNumber:233},this),(0,n.jsxDEV)(e.span,{style:{color:\"#9ECBFF\"},children:\"'joe'\"},void 0,!1,{fileName:\"/Users/andreasthomas/github/chronark/chronark.com/content/projects/_mdx_bundler_entry_point-93a1e3d2-f694-441c-8926-7ce5fc1adfb7.mdx\",lineNumber:26,columnNumber:278},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-93a1e3d2-f694-441c-8926-7ce5fc1adfb7.mdx\",lineNumber:26,columnNumber:327},this)]},void 0,!0,{fileName:\"/Users/andreasthomas/github/chronark/chronark.com/content/projects/_mdx_bundler_entry_point-93a1e3d2-f694-441c-8926-7ce5fc1adfb7.mdx\",lineNumber:26,columnNumber:1},this),`\n`,(0,n.jsxDEV)(e.span,{className:\"line\",children:[(0,n.jsxDEV)(e.span,{style:{color:\"#E1E4E8\"},children:\"data \"},void 0,!1,{fileName:\"/Users/andreasthomas/github/chronark/chronark.com/content/projects/_mdx_bundler_entry_point-93a1e3d2-f694-441c-8926-7ce5fc1adfb7.mdx\",lineNumber:27,columnNumber:20},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-93a1e3d2-f694-441c-8926-7ce5fc1adfb7.mdx\",lineNumber:27,columnNumber:61},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-93a1e3d2-f694-441c-8926-7ce5fc1adfb7.mdx\",lineNumber:27,columnNumber:98},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-93a1e3d2-f694-441c-8926-7ce5fc1adfb7.mdx\",lineNumber:27,columnNumber:135},this),(0,n.jsxDEV)(e.span,{style:{color:\"#E1E4E8\"},children:\" redis.\"},void 0,!1,{fileName:\"/Users/andreasthomas/github/chronark/chronark.com/content/projects/_mdx_bundler_entry_point-93a1e3d2-f694-441c-8926-7ce5fc1adfb7.mdx\",lineNumber:27,columnNumber:176},this),(0,n.jsxDEV)(e.span,{style:{color:\"#B392F0\"},children:\"hget\"},void 0,!1,{fileName:\"/Users/andreasthomas/github/chronark/chronark.com/content/projects/_mdx_bundler_entry_point-93a1e3d2-f694-441c-8926-7ce5fc1adfb7.mdx\",lineNumber:27,columnNumber:219},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-93a1e3d2-f694-441c-8926-7ce5fc1adfb7.mdx\",lineNumber:27,columnNumber:259},this),(0,n.jsxDEV)(e.span,{style:{color:\"#9ECBFF\"},children:\"'people'\"},void 0,!1,{fileName:\"/Users/andreasthomas/github/chronark/chronark.com/content/projects/_mdx_bundler_entry_point-93a1e3d2-f694-441c-8926-7ce5fc1adfb7.mdx\",lineNumber:27,columnNumber:296},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-93a1e3d2-f694-441c-8926-7ce5fc1adfb7.mdx\",lineNumber:27,columnNumber:348},this),(0,n.jsxDEV)(e.span,{style:{color:\"#9ECBFF\"},children:\"'name'\"},void 0,!1,{fileName:\"/Users/andreasthomas/github/chronark/chronark.com/content/projects/_mdx_bundler_entry_point-93a1e3d2-f694-441c-8926-7ce5fc1adfb7.mdx\",lineNumber:27,columnNumber:386},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-93a1e3d2-f694-441c-8926-7ce5fc1adfb7.mdx\",lineNumber:27,columnNumber:436},this)]},void 0,!0,{fileName:\"/Users/andreasthomas/github/chronark/chronark.com/content/projects/_mdx_bundler_entry_point-93a1e3d2-f694-441c-8926-7ce5fc1adfb7.mdx\",lineNumber:27,columnNumber:1},this),`\n`,(0,n.jsxDEV)(e.span,{className:\"line\",children:[(0,n.jsxDEV)(e.span,{style:{color:\"#E1E4E8\"},children:\"console.\"},void 0,!1,{fileName:\"/Users/andreasthomas/github/chronark/chronark.com/content/projects/_mdx_bundler_entry_point-93a1e3d2-f694-441c-8926-7ce5fc1adfb7.mdx\",lineNumber:28,columnNumber:20},this),(0,n.jsxDEV)(e.span,{style:{color:\"#B392F0\"},children:\"log\"},void 0,!1,{fileName:\"/Users/andreasthomas/github/chronark/chronark.com/content/projects/_mdx_bundler_entry_point-93a1e3d2-f694-441c-8926-7ce5fc1adfb7.mdx\",lineNumber:28,columnNumber:64},this),(0,n.jsxDEV)(e.span,{style:{color:\"#E1E4E8\"},children:\"(data)\"},void 0,!1,{fileName:\"/Users/andreasthomas/github/chronark/chronark.com/content/projects/_mdx_bundler_entry_point-93a1e3d2-f694-441c-8926-7ce5fc1adfb7.mdx\",lineNumber:28,columnNumber:103},this)]},void 0,!0,{fileName:\"/Users/andreasthomas/github/chronark/chronark.com/content/projects/_mdx_bundler_entry_point-93a1e3d2-f694-441c-8926-7ce5fc1adfb7.mdx\",lineNumber:28,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-93a1e3d2-f694-441c-8926-7ce5fc1adfb7.mdx\",lineNumber:29,columnNumber:1},this),`\n`,(0,n.jsxDEV)(e.span,{className:\"line\",children:(0,n.jsxDEV)(e.span,{style:{color:\"#6A737D\"},children:\"// sets\"},void 0,!1,{fileName:\"/Users/andreasthomas/github/chronark/chronark.com/content/projects/_mdx_bundler_entry_point-93a1e3d2-f694-441c-8926-7ce5fc1adfb7.mdx\",lineNumber:30,columnNumber:20},this)},void 0,!1,{fileName:\"/Users/andreasthomas/github/chronark/chronark.com/content/projects/_mdx_bundler_entry_point-93a1e3d2-f694-441c-8926-7ce5fc1adfb7.mdx\",lineNumber:30,columnNumber:1},this),`\n`,(0,n.jsxDEV)(e.span,{className:\"line\",children:[(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-93a1e3d2-f694-441c-8926-7ce5fc1adfb7.mdx\",lineNumber:31,columnNumber:20},this),(0,n.jsxDEV)(e.span,{style:{color:\"#E1E4E8\"},children:\" redis.\"},void 0,!1,{fileName:\"/Users/andreasthomas/github/chronark/chronark.com/content/projects/_mdx_bundler_entry_point-93a1e3d2-f694-441c-8926-7ce5fc1adfb7.mdx\",lineNumber:31,columnNumber:61},this),(0,n.jsxDEV)(e.span,{style:{color:\"#B392F0\"},children:\"sadd\"},void 0,!1,{fileName:\"/Users/andreasthomas/github/chronark/chronark.com/content/projects/_mdx_bundler_entry_point-93a1e3d2-f694-441c-8926-7ce5fc1adfb7.mdx\",lineNumber:31,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-93a1e3d2-f694-441c-8926-7ce5fc1adfb7.mdx\",lineNumber:31,columnNumber:144},this),(0,n.jsxDEV)(e.span,{style:{color:\"#9ECBFF\"},children:\"'animals'\"},void 0,!1,{fileName:\"/Users/andreasthomas/github/chronark/chronark.com/content/projects/_mdx_bundler_entry_point-93a1e3d2-f694-441c-8926-7ce5fc1adfb7.mdx\",lineNumber:31,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-93a1e3d2-f694-441c-8926-7ce5fc1adfb7.mdx\",lineNumber:31,columnNumber:234},this),(0,n.jsxDEV)(e.span,{style:{color:\"#9ECBFF\"},children:\"'cat'\"},void 0,!1,{fileName:\"/Users/andreasthomas/github/chronark/chronark.com/content/projects/_mdx_bundler_entry_point-93a1e3d2-f694-441c-8926-7ce5fc1adfb7.mdx\",lineNumber:31,columnNumber:272},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-93a1e3d2-f694-441c-8926-7ce5fc1adfb7.mdx\",lineNumber:31,columnNumber:321},this)]},void 0,!0,{fileName:\"/Users/andreasthomas/github/chronark/chronark.com/content/projects/_mdx_bundler_entry_point-93a1e3d2-f694-441c-8926-7ce5fc1adfb7.mdx\",lineNumber:31,columnNumber:1},this),`\n`,(0,n.jsxDEV)(e.span,{className:\"line\",children:[(0,n.jsxDEV)(e.span,{style:{color:\"#E1E4E8\"},children:\"data \"},void 0,!1,{fileName:\"/Users/andreasthomas/github/chronark/chronark.com/content/projects/_mdx_bundler_entry_point-93a1e3d2-f694-441c-8926-7ce5fc1adfb7.mdx\",lineNumber:32,columnNumber:20},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-93a1e3d2-f694-441c-8926-7ce5fc1adfb7.mdx\",lineNumber:32,columnNumber:62},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-93a1e3d2-f694-441c-8926-7ce5fc1adfb7.mdx\",lineNumber:32,columnNumber:99},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-93a1e3d2-f694-441c-8926-7ce5fc1adfb7.mdx\",lineNumber:32,columnNumber:136},this),(0,n.jsxDEV)(e.span,{style:{color:\"#E1E4E8\"},children:\" redis.\"},void 0,!1,{fileName:\"/Users/andreasthomas/github/chronark/chronark.com/content/projects/_mdx_bundler_entry_point-93a1e3d2-f694-441c-8926-7ce5fc1adfb7.mdx\",lineNumber:32,columnNumber:177},this),(0,n.jsxDEV)(e.span,{style:{color:\"#B392F0\"},children:\"spop\"},void 0,!1,{fileName:\"/Users/andreasthomas/github/chronark/chronark.com/content/projects/_mdx_bundler_entry_point-93a1e3d2-f694-441c-8926-7ce5fc1adfb7.mdx\",lineNumber:32,columnNumber:220},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-93a1e3d2-f694-441c-8926-7ce5fc1adfb7.mdx\",lineNumber:32,columnNumber:260},this),(0,n.jsxDEV)(e.span,{style:{color:\"#9ECBFF\"},children:\"'animals'\"},void 0,!1,{fileName:\"/Users/andreasthomas/github/chronark/chronark.com/content/projects/_mdx_bundler_entry_point-93a1e3d2-f694-441c-8926-7ce5fc1adfb7.mdx\",lineNumber:32,columnNumber:297},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-93a1e3d2-f694-441c-8926-7ce5fc1adfb7.mdx\",lineNumber:32,columnNumber:350},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-93a1e3d2-f694-441c-8926-7ce5fc1adfb7.mdx\",lineNumber:32,columnNumber:388},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-93a1e3d2-f694-441c-8926-7ce5fc1adfb7.mdx\",lineNumber:32,columnNumber:425},this)]},void 0,!0,{fileName:\"/Users/andreasthomas/github/chronark/chronark.com/content/projects/_mdx_bundler_entry_point-93a1e3d2-f694-441c-8926-7ce5fc1adfb7.mdx\",lineNumber:32,columnNumber:1},this),`\n`,(0,n.jsxDEV)(e.span,{className:\"line\",children:[(0,n.jsxDEV)(e.span,{style:{color:\"#E1E4E8\"},children:\"console.\"},void 0,!1,{fileName:\"/Users/andreasthomas/github/chronark/chronark.com/content/projects/_mdx_bundler_entry_point-93a1e3d2-f694-441c-8926-7ce5fc1adfb7.mdx\",lineNumber:33,columnNumber:20},this),(0,n.jsxDEV)(e.span,{style:{color:\"#B392F0\"},children:\"log\"},void 0,!1,{fileName:\"/Users/andreasthomas/github/chronark/chronark.com/content/projects/_mdx_bundler_entry_point-93a1e3d2-f694-441c-8926-7ce5fc1adfb7.mdx\",lineNumber:33,columnNumber:64},this),(0,n.jsxDEV)(e.span,{style:{color:\"#E1E4E8\"},children:\"(data)\"},void 0,!1,{fileName:\"/Users/andreasthomas/github/chronark/chronark.com/content/projects/_mdx_bundler_entry_point-93a1e3d2-f694-441c-8926-7ce5fc1adfb7.mdx\",lineNumber:33,columnNumber:103},this)]},void 0,!0,{fileName:\"/Users/andreasthomas/github/chronark/chronark.com/content/projects/_mdx_bundler_entry_point-93a1e3d2-f694-441c-8926-7ce5fc1adfb7.mdx\",lineNumber:33,columnNumber:1},this)]},void 0,!0,{fileName:\"/Users/andreasthomas/github/chronark/chronark.com/content/projects/_mdx_bundler_entry_point-93a1e3d2-f694-441c-8926-7ce5fc1adfb7.mdx\",lineNumber:1,columnNumber:79},this)},void 0,!1,{fileName:\"/Users/andreasthomas/github/chronark/chronark.com/content/projects/_mdx_bundler_entry_point-93a1e3d2-f694-441c-8926-7ce5fc1adfb7.mdx\",lineNumber:1,columnNumber:1},this)},void 0,!1,{fileName:\"/Users/andreasthomas/github/chronark/chronark.com/content/projects/_mdx_bundler_entry_point-93a1e3d2-f694-441c-8926-7ce5fc1adfb7.mdx\",lineNumber:53,columnNumber:1},this)]},void 0,!0,{fileName:\"/Users/andreasthomas/github/chronark/chronark.com/content/projects/_mdx_bundler_entry_point-93a1e3d2-f694-441c-8926-7ce5fc1adfb7.mdx\",lineNumber:1,columnNumber:1},this)}function Nn(l={}){let{wrapper:e}=l.components||{};return e?(0,n.jsxDEV)(e,Object.assign({},l,{children:(0,n.jsxDEV)(Fe,l,void 0,!1,{fileName:\"/Users/andreasthomas/github/chronark/chronark.com/content/projects/_mdx_bundler_entry_point-93a1e3d2-f694-441c-8926-7ce5fc1adfb7.mdx\"},this)}),void 0,!1,{fileName:\"/Users/andreasthomas/github/chronark/chronark.com/content/projects/_mdx_bundler_entry_point-93a1e3d2-f694-441c-8926-7ce5fc1adfb7.mdx\"},this):Fe(l)}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;" + "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: ,\n 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=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(\"\")&&(f=f.replace(\"\",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\",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{\"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": { @@ -383,7 +383,7 @@ "path": "/projects/upstash-redis", "slug": "upstash-redis" }, - "documentHash": "1679819604294", + "documentHash": "1679831759268", "hasWarnings": false, "documentTypeName": "Project" }, @@ -394,8 +394,8 @@ "description": "A library to record and analyse web page traffic and user behaviour", "repository": "upstash/web-analytics", "body": { - "raw": "\nTODO:", - "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=(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 lr(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(fr(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\"),w=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=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(\"\")&&(p=p.replace(\"\",e.displayName)),typeof e==\"function\"&&j.set(e,p),p}while(l>=1&&f>=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 w: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={},le=_.ReactDebugCurrentFrame;function D(e){if(e){var r=e._owner,t=x(e.type,e._source,r?r.type:null);le.setExtraStackFrame(t)}else le.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(l){a=l}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 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,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=h(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',h(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: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 l=e.defaultProps;for(u in l)o[u]===void 0&&(o[u]=l[u])}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 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\",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,u);if(f==null)return f;if(o){var p=r.children;if(p!==void 0)if(n)if(V(p)){for(var T=0;T{\"use strict\";Oe.exports=Ce()});var Er={};vr(Er,{default:()=>mr,frontmatter:()=>hr});var F=pr(we()),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:\"TODO:\"},void 0,!1,{fileName:\"/Users/andreasthomas/github/chronark/chronark.com/content/projects/_mdx_bundler_entry_point-6692e122-da3d-46ed-b1b6-14cd52b3c074.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-6692e122-da3d-46ed-b1b6-14cd52b3c074.mdx\"},this)}),void 0,!1,{fileName:\"/Users/andreasthomas/github/chronark/chronark.com/content/projects/_mdx_bundler_entry_point-6692e122-da3d-46ed-b1b6-14cd52b3c074.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;" + "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=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(\"\")&&(p=p.replace(\"\",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\",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{\"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": { @@ -409,7 +409,7 @@ "path": "/projects/upstash-web-analytics", "slug": "upstash-web-analytics" }, - "documentHash": "1679820082861", + "documentHash": "1679831889438", "hasWarnings": false, "documentTypeName": "Project" } diff --git a/.contentlayer/generated/Page/_index.mjs b/.contentlayer/generated/Page/_index.mjs index 10fe12c..666b015 100644 --- a/.contentlayer/generated/Page/_index.mjs +++ b/.contentlayer/generated/Page/_index.mjs @@ -1,5 +1,3 @@ // NOTE This file is auto-generated by Contentlayer - - -export const allPages = [] +export const allPages = []; diff --git a/.contentlayer/generated/Project/_index.json b/.contentlayer/generated/Project/_index.json index 1da1416..1f18b56 100644 --- a/.contentlayer/generated/Project/_index.json +++ b/.contentlayer/generated/Project/_index.json @@ -140,8 +140,8 @@ "url": "https://upstash.com/cli", "repository": "upstash/cli", "body": { - "raw": "\nTODO:", - "code": "var Component=(()=>{var sr=Object.create;var F=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)F(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&&F(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?F(h,\"default\",{value:s,enumerable:!0}):h,s)),hr=s=>_e(F({},\"__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\"),K=Symbol.for(\"react.profiler\"),X=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=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(\"\")&&(p=p.replace(\"\",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,Ke={key:!0,ref:!0,__self:!0,__source:!0},ve,pe,U;U={};function Xe(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),Xe(r)&&(v=r.ref,Je(r,i));for(u in r)k.call(r,u)&&!Ke.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\",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{\"use strict\";Oe.exports=Ce()});var Er={};vr(Er,{default:()=>mr,frontmatter:()=>br});var A=pr(we()),br={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 Pe(s){let f=Object.assign({p:\"p\"},s.components);return(0,A.jsxDEV)(f.p,{children:\"TODO:\"},void 0,!1,{fileName:\"/Users/andreasthomas/github/chronark/chronark.com/content/projects/_mdx_bundler_entry_point-4eb0fa00-eee7-4578-99c3-55a7c326fffe.mdx\",lineNumber:11,columnNumber:1},this)}function gr(s={}){let{wrapper:f}=s.components||{};return f?(0,A.jsxDEV)(f,Object.assign({},s,{children:(0,A.jsxDEV)(Pe,s,void 0,!1,{fileName:\"/Users/andreasthomas/github/chronark/chronark.com/content/projects/_mdx_bundler_entry_point-4eb0fa00-eee7-4578-99c3-55a7c326fffe.mdx\"},this)}),void 0,!1,{fileName:\"/Users/andreasthomas/github/chronark/chronark.com/content/projects/_mdx_bundler_entry_point-4eb0fa00-eee7-4578-99c3-55a7c326fffe.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;" + "raw": "\n\nManage Upstash resources in your terminal or CI.\n\n![](https://raw.githubusercontent.com/upstash/cli/main/img/banner.svg)\n\n![GitHub release (latest SemVer)](https://img.shields.io/github/v/release/upstash/cli)\n[![Downloads/week](https://img.shields.io/npm/dw/lstr.svg)](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 - 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 - The email you use on upstash\n UPSTASH_API_KEY - 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": { @@ -163,8 +163,8 @@ "url": "https://console.upstash.com/ratelimit", "repository": "upstash/core-analytics", "body": { - "raw": "\nTODO:", - "code": "var Component=(()=>{var sr=Object.create;var F=Object.defineProperty;var lr=Object.getOwnPropertyDescriptor;var cr=Object.getOwnPropertyNames;var fr=Object.getPrototypeOf,dr=Object.prototype.hasOwnProperty;var q=(s,l)=>()=>(l||s((l={exports:{}}).exports,l),l.exports),vr=(s,l)=>{for(var b in l)F(s,b,{get:l[b],enumerable:!0})},_e=(s,l,b,E)=>{if(l&&typeof l==\"object\"||typeof l==\"function\")for(let m of cr(l))!dr.call(s,m)&&m!==b&&F(s,m,{get:()=>l[m],enumerable:!(E=lr(l,m))||E.enumerable});return s};var pr=(s,l,b)=>(b=s!=null?sr(fr(s)):{},_e(l||!s||!s.__esModule?F(b,\"default\",{value:s,enumerable:!0}):b,s)),br=s=>_e(F({},\"__esModule\",{value:!0}),s);var Te=q((_r,Re)=>{Re.exports=React});var Ce=q(z=>{\"use strict\";(function(){\"use strict\";var s=Te(),l=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\"),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=1&&f>=0&&a[c]!==v[f];)f--;for(;c>=1&&f>=0;c--,f--)if(a[c]!==v[f]){if(c!==1||f!==1)do if(c--,f--,f<0||a[c]!==v[f]){var p=`\n`+a[c].replace(\" at new \",\" at \");return e.displayName&&p.includes(\"\")&&(p=p.replace(\"\",e.displayName)),typeof e==\"function\"&&j.set(e,p),p}while(c>=1&&f>=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,le={},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 le)&&(le[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 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,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=h(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',h(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: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),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 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 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===l}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\",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 f=rr(e,r,t,i,u);if(f==null)return f;if(o){var p=r.children;if(p!==void 0)if(n)if(V(p)){for(var T=0;T{\"use strict\";Oe.exports=Ce()});var Er={};vr(Er,{default:()=>mr,frontmatter:()=>hr});var A=pr(we()),hr={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 Pe(s){let l=Object.assign({p:\"p\"},s.components);return(0,A.jsxDEV)(l.p,{children:\"TODO:\"},void 0,!1,{fileName:\"/Users/andreasthomas/github/chronark/chronark.com/content/projects/_mdx_bundler_entry_point-19540f58-fb17-4699-b4c6-0cb9420afdb1.mdx\",lineNumber:11,columnNumber:1},this)}function gr(s={}){let{wrapper:l}=s.components||{};return l?(0,A.jsxDEV)(l,Object.assign({},s,{children:(0,A.jsxDEV)(Pe,s,void 0,!1,{fileName:\"/Users/andreasthomas/github/chronark/chronark.com/content/projects/_mdx_bundler_entry_point-19540f58-fb17-4699-b4c6-0cb9420afdb1.mdx\"},this)}),void 0,!1,{fileName:\"/Users/andreasthomas/github/chronark/chronark.com/content/projects/_mdx_bundler_entry_point-19540f58-fb17-4699-b4c6-0cb9420afdb1.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;" + "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=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(\"\")&&(b=b.replace(\"\",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\",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{\"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": { @@ -186,8 +186,8 @@ "url": "https://upstash.com/edge-flags", "repository": "upstash/edge-flags", "body": { - "raw": "\nTODO:", - "code": "var Component=(()=>{var sr=Object.create;var F=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 b in f)F(s,b,{get:f[b],enumerable:!0})},_e=(s,f,b,E)=>{if(f&&typeof f==\"object\"||typeof f==\"function\")for(let m of cr(f))!dr.call(s,m)&&m!==b&&F(s,m,{get:()=>f[m],enumerable:!(E=fr(f,m))||E.enumerable});return s};var pr=(s,f,b)=>(b=s!=null?sr(lr(s)):{},_e(f||!s||!s.__esModule?F(b,\"default\",{value:s,enumerable:!0}):b,s)),br=s=>_e(F({},\"__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\"),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\"),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=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(\"\")&&(p=p.replace(\"\",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=g(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',g(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,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===f}function ge(){{if(L.current){var e=g(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 he={};function nr(e){{var r=ge();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(he[t])return;he[t]=!0;var n=\"\";e&&e._owner&&e._owner!==L.current&&(n=\" It was passed a child from \"+g(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\",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{\"use strict\";Oe.exports=Ce()});var Er={};vr(Er,{default:()=>mr,frontmatter:()=>gr});var A=pr(we()),gr={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 Pe(s){let f=Object.assign({p:\"p\"},s.components);return(0,A.jsxDEV)(f.p,{children:\"TODO:\"},void 0,!1,{fileName:\"/Users/andreasthomas/github/chronark/chronark.com/content/projects/_mdx_bundler_entry_point-55f51b83-ce3b-423c-bad6-92589929a727.mdx\",lineNumber:11,columnNumber:1},this)}function hr(s={}){let{wrapper:f}=s.components||{};return f?(0,A.jsxDEV)(f,Object.assign({},s,{children:(0,A.jsxDEV)(Pe,s,void 0,!1,{fileName:\"/Users/andreasthomas/github/chronark/chronark.com/content/projects/_mdx_bundler_entry_point-55f51b83-ce3b-423c-bad6-92589929a727.mdx\"},this)}),void 0,!1,{fileName:\"/Users/andreasthomas/github/chronark/chronark.com/content/projects/_mdx_bundler_entry_point-55f51b83-ce3b-423c-bad6-92589929a727.mdx\"},this):Pe(s)}var mr=hr;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;" + "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": { @@ -232,8 +232,8 @@ "url": "https://upstash.com/qstash", "repository": "upstash/sdk-qstash-ts", "body": { - "raw": "\nTODO:", - "code": "var Component=(()=>{var sr=Object.create;var F=Object.defineProperty;var cr=Object.getOwnPropertyDescriptor;var fr=Object.getOwnPropertyNames;var lr=Object.getPrototypeOf,dr=Object.prototype.hasOwnProperty;var G=(s,c)=>()=>(c||s((c={exports:{}}).exports,c),c.exports),vr=(s,c)=>{for(var h in c)F(s,h,{get:c[h],enumerable:!0})},_e=(s,c,h,E)=>{if(c&&typeof c==\"object\"||typeof c==\"function\")for(let m of fr(c))!dr.call(s,m)&&m!==h&&F(s,m,{get:()=>c[m],enumerable:!(E=cr(c,m))||E.enumerable});return s};var pr=(s,c,h)=>(h=s!=null?sr(lr(s)):{},_e(c||!s||!s.__esModule?F(h,\"default\",{value:s,enumerable:!0}):h,s)),hr=s=>_e(F({},\"__esModule\",{value:!0}),s);var Te=G((_r,Re)=>{Re.exports=React});var Ce=G(z=>{\"use strict\";(function(){\"use strict\";var s=Te(),c=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=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(\"\")&&(p=p.replace(\"\",e.displayName)),typeof e==\"function\"&&j.set(e,p),p}while(f>=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,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 qe(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 Be=Array.isArray;function V(e){return Be(e)}function Ge(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.\",Ge(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 Qe(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 Ze(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&&Qe(o,l),v&&Ze(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 q;q=!1;function B(e){return typeof e==\"object\"&&e!==null&&e.$$typeof===c}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\",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{\"use strict\";Oe.exports=Ce()});var Er={};vr(Er,{default:()=>mr,frontmatter:()=>br});var A=pr(we()),br={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 Pe(s){let c=Object.assign({p:\"p\"},s.components);return(0,A.jsxDEV)(c.p,{children:\"TODO:\"},void 0,!1,{fileName:\"/Users/andreasthomas/github/chronark/chronark.com/content/projects/_mdx_bundler_entry_point-2f5760c4-1322-4e46-9d1d-1912b9ec4d97.mdx\",lineNumber:10,columnNumber:1},this)}function gr(s={}){let{wrapper:c}=s.components||{};return c?(0,A.jsxDEV)(c,Object.assign({},s,{children:(0,A.jsxDEV)(Pe,s,void 0,!1,{fileName:\"/Users/andreasthomas/github/chronark/chronark.com/content/projects/_mdx_bundler_entry_point-2f5760c4-1322-4e46-9d1d-1912b9ec4d97.mdx\"},this)}),void 0,!1,{fileName:\"/Users/andreasthomas/github/chronark/chronark.com/content/projects/_mdx_bundler_entry_point-2f5760c4-1322-4e46-9d1d-1912b9ec4d97.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;" + "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": { @@ -255,8 +255,8 @@ "url": "https://upstash.com/ratelimit", "repository": "upstash/ratelimit", "body": { - "raw": "\nTODO:", - "code": "var Component=(()=>{var sr=Object.create;var F=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)F(s,h,{get:l[h],enumerable:!0})},_e=(s,l,h,E)=>{if(l&&typeof l==\"object\"||typeof l==\"function\")for(let m of fr(l))!dr.call(s,m)&&m!==h&&F(s,m,{get:()=>l[m],enumerable:!(E=lr(l,m))||E.enumerable});return s};var pr=(s,l,h)=>(h=s!=null?sr(cr(s)):{},_e(l||!s||!s.__esModule?F(h,\"default\",{value:s,enumerable:!0}):h,s)),hr=s=>_e(F({},\"__esModule\",{value:!0}),s);var Te=q((_r,Re)=>{Re.exports=React});var Ce=q(z=>{\"use strict\";(function(){\"use strict\";var s=Te(),l=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=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(\"\")&&(p=p.replace(\"\",e.displayName)),typeof e==\"function\"&&j.set(e,p),p}while(f>=1&&c>=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,le={},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 le)&&(le[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 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 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: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),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 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,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===l}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\",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{\"use strict\";Oe.exports=Ce()});var Er={};vr(Er,{default:()=>mr,frontmatter:()=>br});var A=pr(we()),br={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 Pe(s){let l=Object.assign({p:\"p\"},s.components);return(0,A.jsxDEV)(l.p,{children:\"TODO:\"},void 0,!1,{fileName:\"/Users/andreasthomas/github/chronark/chronark.com/content/projects/_mdx_bundler_entry_point-37fe23d1-747d-41e2-83b3-756ee13806a3.mdx\",lineNumber:11,columnNumber:1},this)}function gr(s={}){let{wrapper:l}=s.components||{};return l?(0,A.jsxDEV)(l,Object.assign({},s,{children:(0,A.jsxDEV)(Pe,s,void 0,!1,{fileName:\"/Users/andreasthomas/github/chronark/chronark.com/content/projects/_mdx_bundler_entry_point-37fe23d1-747d-41e2-83b3-756ee13806a3.mdx\"},this)}),void 0,!1,{fileName:\"/Users/andreasthomas/github/chronark/chronark.com/content/projects/_mdx_bundler_entry_point-37fe23d1-747d-41e2-83b3-756ee13806a3.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;" + "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=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(\"\")&&(b=b.replace(\"\",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\",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{\"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": { @@ -278,8 +278,8 @@ "url": "https://upstash.com", "repository": "upstash/react-ui", "body": { - "raw": "\nTODO:", - "code": "var Component=(()=>{var sr=Object.create;var F=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)F(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&&F(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?F(b,\"default\",{value:s,enumerable:!0}):b,s)),br=s=>_e(F({},\"__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\"),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=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(\"\")&&(p=p.replace(\"\",e.displayName)),typeof e==\"function\"&&j.set(e,p),p}while(f>=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 Le(e,r,t){return se(e,!1)}function Ue(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,Ue(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 Le(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,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 O=_.ReactCurrentOwner,Xe={key:!0,ref:!0,__self:!0,__source:!0},ve,pe,L;L={};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=h(O.current.type);L[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),L[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,O.current,o)}}var U=_.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(U.current){var e=h(U.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!==U.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\",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{\"use strict\";Oe.exports=Ce()});var Er={};vr(Er,{default:()=>mr,frontmatter:()=>hr});var A=pr(we()),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(s){let c=Object.assign({p:\"p\"},s.components);return(0,A.jsxDEV)(c.p,{children:\"TODO:\"},void 0,!1,{fileName:\"/Users/andreasthomas/github/chronark/chronark.com/content/projects/_mdx_bundler_entry_point-cb7470d6-8beb-40f7-8d67-d853d6fc6345.mdx\",lineNumber:11,columnNumber:1},this)}function gr(s={}){let{wrapper:c}=s.components||{};return c?(0,A.jsxDEV)(c,Object.assign({},s,{children:(0,A.jsxDEV)(Pe,s,void 0,!1,{fileName:\"/Users/andreasthomas/github/chronark/chronark.com/content/projects/_mdx_bundler_entry_point-cb7470d6-8beb-40f7-8d67-d853d6fc6345.mdx\"},this)}),void 0,!1,{fileName:\"/Users/andreasthomas/github/chronark/chronark.com/content/projects/_mdx_bundler_entry_point-cb7470d6-8beb-40f7-8d67-d853d6fc6345.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;" + "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=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(\"\")&&(p=p.replace(\"\",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\",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{\"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": { @@ -301,8 +301,8 @@ "url": "https://upstash.com/redis", "repository": "upstash/upstash-redis", "body": { - "raw": "\n\n`@upstash/redis` is an HTTP/REST based Redis client for typescript, built on top\nof [Upstash REST API](https://docs.upstash.com/features/restapi).\n\nIt is the only connectionless (HTTP based) Redis client and designed for:\n\n- Serverless functions (AWS Lambda ...)\n- Cloudflare Workers (see\n [the example](https://github.com/upstash/upstash-redis/tree/main/examples/cloudflare-workers))\n- Fastly Compute@Edge (see\n [the example](https://github.com/upstash/upstash-redis/tree/main/examples/fastly))\n- Next.js, Jamstack ...\n- Client side web/mobile applications\n- WebAssembly\n- and other environments where HTTP is preferred over TCP.\n\nSee\n[the list of APIs](https://docs.upstash.com/features/restapi#rest---redis-api-compatibility)\nsupported.\n\n## Quick Start\n\n### Install\n\n#### Node.js\n\n```bash\nnpm install @upstash/redis\n```\n\n#### Deno\n\n```ts\nimport { Redis } from \"https://deno.land/x/upstash_redis/mod.ts\";\n```\n\n### Create database\n\nCreate a new redis database on [upstash](https://console.upstash.com/)\n\n## Basic Usage:\n\n```ts\nimport { Redis } from \"@upstash/redis\"\n\nconst redis = new Redis({\n url: ,\n 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\n// hash\nawait redis.hset('people', {name: 'joe'})\ndata = await redis.hget('people', 'name' )\nconsole.log(data)\n\n// sets\nawait redis.sadd('animals', 'cat')\ndata = await redis.spop('animals', 1)\nconsole.log(data)\n```\n", - "code": "var Component=(()=>{var dn=Object.create;var O=Object.defineProperty;var ln=Object.getOwnPropertyDescriptor;var mn=Object.getOwnPropertyNames;var un=Object.getPrototypeOf,fn=Object.prototype.hasOwnProperty;var q=(l,e)=>()=>(e||l((e={exports:{}}).exports,e),e.exports),hn=(l,e)=>{for(var _ in e)O(l,_,{get:e[_],enumerable:!0})},ye=(l,e,_,x)=>{if(e&&typeof e==\"object\"||typeof e==\"function\")for(let k of mn(e))!fn.call(l,k)&&k!==_&&O(l,k,{get:()=>e[k],enumerable:!(x=ln(e,k))||x.enumerable});return l};var bn=(l,e,_)=>(_=l!=null?dn(un(l)):{},ye(e||!l||!l.__esModule?O(_,\"default\",{value:l,enumerable:!0}):_,l)),_n=l=>ye(O({},\"__esModule\",{value:!0}),l);var Ee=q((gn,ge)=>{ge.exports=React});var je=q(z=>{\"use strict\";(function(){\"use strict\";var l=Ee(),e=Symbol.for(\"react.element\"),_=Symbol.for(\"react.portal\"),x=Symbol.for(\"react.fragment\"),k=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\"),B=Symbol.for(\"react.suspense\"),D=Symbol.for(\"react.suspense_list\"),R=Symbol.for(\"react.memo\"),A=Symbol.for(\"react.lazy\"),Re=Symbol.for(\"react.offscreen\"),J=Symbol.iterator,Ce=\"@@iterator\";function Te(r){if(r===null||typeof r!=\"object\")return null;var a=J&&r[J]||r[Ce];return typeof a==\"function\"?a:null}var g=l.__SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED;function f(r){{for(var a=arguments.length,c=new Array(a>1?a-1:0),t=1;t=1&&u>=0&&o[m]!==h[u];)u--;for(;m>=1&&u>=0;m--,u--)if(o[m]!==h[u]){if(m!==1||u!==1)do if(m--,u--,u<0||o[m]!==h[u]){var b=`\n`+o[m].replace(\" at new \",\" at \");return r.displayName&&b.includes(\"\")&&(b=b.replace(\"\",r.displayName)),typeof r==\"function\"&&T.set(r,b),b}while(m>=1&&u>=0);break}}}finally{W=!1,I.current=i,We(),Error.prepareStackTrace=d}var j=r?r.displayName||r.name:\"\",xe=j?C(j):\"\";return typeof r==\"function\"&&T.set(r,xe),xe}function $e(r,a,c){return de(r,!1)}function Me(r){var a=r.prototype;return!!(a&&a.isReactComponent)}function w(r,a,c){if(r==null)return\"\";if(typeof r==\"function\")return de(r,Me(r));if(typeof r==\"string\")return C(r);switch(r){case B:return C(\"Suspense\");case D:return C(\"SuspenseList\")}if(typeof r==\"object\")switch(r.$$typeof){case F:return $e(r.render);case R:return w(r.type,a,c);case A:{var t=r,d=t._payload,i=t._init;try{return w(i(d),a,c)}catch{}}}return\"\"}var S=Object.prototype.hasOwnProperty,ie={},le=g.ReactDebugCurrentFrame;function P(r){if(r){var a=r._owner,c=w(r.type,r._source,a?a.type:null);le.setExtraStackFrame(c)}else le.setExtraStackFrame(null)}function Ve(r,a,c,t,d){{var i=Function.call.bind(S);for(var s in r)if(i(r,s)){var o=void 0;try{if(typeof r[s]!=\"function\"){var h=Error((t||\"React class\")+\": \"+c+\" type `\"+s+\"` is invalid; it must be a function, usually from the `prop-types` package, but received `\"+typeof r[s]+\"`.This often happens because of typos such as `PropTypes.function` instead of `PropTypes.func`.\");throw h.name=\"Invariant Violation\",h}o=r[s](a,s,t,c,null,\"SECRET_DO_NOT_PASS_THIS_OR_YOU_WILL_BE_FIRED\")}catch(m){o=m}o&&!(o instanceof Error)&&(P(d),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).\",t||\"React class\",c,s,typeof o),P(null)),o instanceof Error&&!(o.message in ie)&&(ie[o.message]=!0,P(d),f(\"Failed %s type: %s\",c,o.message),P(null))}}}var He=Array.isArray;function Y(r){return He(r)}function qe(r){{var a=typeof Symbol==\"function\"&&Symbol.toStringTag,c=a&&r[Symbol.toStringTag]||r.constructor.name||\"Object\";return c}}function ze(r){try{return me(r),!1}catch{return!0}}function me(r){return\"\"+r}function ue(r){if(ze(r))return f(\"The provided key is an unsupported type %s. This value must be coerced to a string before before using it here.\",qe(r)),me(r)}var v=g.ReactCurrentOwner,Ge={key:!0,ref:!0,__self:!0,__source:!0},fe,he,$;$={};function Ke(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 c=p(v.current.type);$[c]||(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),r.ref),$[c]=!0)}}function Qe(r,a){{var c=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))};c.isReactWarning=!0,Object.defineProperty(r,\"key\",{get:c,configurable:!0})}}function Ze(r,a){{var c=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))};c.isReactWarning=!0,Object.defineProperty(r,\"ref\",{get:c,configurable:!0})}}var en=function(r,a,c,t,d,i,s){var o={$$typeof:e,type:r,key:a,ref:c,props:s,_owner:i};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:t}),Object.defineProperty(o,\"_source\",{configurable:!1,enumerable:!1,writable:!1,value:d}),Object.freeze&&(Object.freeze(o.props),Object.freeze(o)),o};function nn(r,a,c,t,d){{var i,s={},o=null,h=null;c!==void 0&&(ue(c),o=\"\"+c),Xe(a)&&(ue(a.key),o=\"\"+a.key),Ke(a)&&(h=a.ref,Je(a,d));for(i in a)S.call(a,i)&&!Ge.hasOwnProperty(i)&&(s[i]=a[i]);if(r&&r.defaultProps){var m=r.defaultProps;for(i in m)s[i]===void 0&&(s[i]=m[i])}if(o||h){var u=typeof r==\"function\"?r.displayName||r.name||\"Unknown\":r;o&&Qe(s,u),h&&Ze(s,u)}return en(r,o,h,d,t,v.current,s)}}var M=g.ReactCurrentOwner,be=g.ReactDebugCurrentFrame;function E(r){if(r){var a=r._owner,c=w(r.type,r._source,a?a.type:null);be.setExtraStackFrame(c)}else be.setExtraStackFrame(null)}var V;V=!1;function H(r){return typeof r==\"object\"&&r!==null&&r.$$typeof===e}function _e(){{if(M.current){var r=p(M.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(/^.*[\\\\\\/]/,\"\"),c=r.lineNumber;return`\n\nCheck your code at `+a+\":\"+c+\".\"}return\"\"}}var pe={};function an(r){{var a=_e();if(!a){var c=typeof r==\"string\"?r:r.displayName||r.name;c&&(a=`\n\nCheck the top-level render call using <`+c+\">.\")}return a}}function Ne(r,a){{if(!r._store||r._store.validated||r.key!=null)return;r._store.validated=!0;var c=an(a);if(pe[c])return;pe[c]=!0;var t=\"\";r&&r._owner&&r._owner!==M.current&&(t=\" It was passed a child from \"+p(r._owner.type)+\".\"),E(r),f('Each child in a list should have a unique \"key\" prop.%s%s See https://reactjs.org/link/warning-keys for more information.',c,t),E(null)}}function ke(r,a){{if(typeof r!=\"object\")return;if(Y(r))for(var c=0;c\",o=\" Did you accidentally export a JSX literal instead of a component?\"):m=typeof r,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,o)}var u=nn(r,a,c,d,i);if(u==null)return u;if(s){var b=a.children;if(b!==void 0)if(t)if(Y(b)){for(var j=0;j{\"use strict\";Ue.exports=je()});var xn={};hn(xn,{default:()=>kn,frontmatter:()=>pn});var n=bn(ve()),pn={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(l){let e=Object.assign({p:\"p\",code:\"code\",a:\"a\",ul:\"ul\",li:\"li\",h2:\"h2\",span:\"span\",h3:\"h3\",h4:\"h4\",div:\"div\",pre:\"pre\"},l.components);return(0,n.jsxDEV)(n.Fragment,{children:[(0,n.jsxDEV)(e.p,{children:[(0,n.jsxDEV)(e.code,{children:\"@upstash/redis\"},void 0,!1,{fileName:\"/Users/andreasthomas/github/chronark/chronark.com/content/projects/_mdx_bundler_entry_point-93a1e3d2-f694-441c-8926-7ce5fc1adfb7.mdx\",lineNumber:12,columnNumber:1},this),` is an HTTP/REST based Redis client for typescript, built on top\nof `,(0,n.jsxDEV)(e.a,{href:\"https://docs.upstash.com/features/restapi\",children:\"Upstash REST API\"},void 0,!1,{fileName:\"/Users/andreasthomas/github/chronark/chronark.com/content/projects/_mdx_bundler_entry_point-93a1e3d2-f694-441c-8926-7ce5fc1adfb7.mdx\",lineNumber:13,columnNumber:4},this),\".\"]},void 0,!0,{fileName:\"/Users/andreasthomas/github/chronark/chronark.com/content/projects/_mdx_bundler_entry_point-93a1e3d2-f694-441c-8926-7ce5fc1adfb7.mdx\",lineNumber:12,columnNumber:1},this),`\n`,(0,n.jsxDEV)(e.p,{children:\"It is the only connectionless (HTTP based) Redis client and designed for:\"},void 0,!1,{fileName:\"/Users/andreasthomas/github/chronark/chronark.com/content/projects/_mdx_bundler_entry_point-93a1e3d2-f694-441c-8926-7ce5fc1adfb7.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-93a1e3d2-f694-441c-8926-7ce5fc1adfb7.mdx\",lineNumber:17,columnNumber:1},this),`\n`,(0,n.jsxDEV)(e.li,{children:[`Cloudflare Workers (see\n`,(0,n.jsxDEV)(e.a,{href:\"https://github.com/upstash/upstash-redis/tree/main/examples/cloudflare-workers\",children:\"the example\"},void 0,!1,{fileName:\"/Users/andreasthomas/github/chronark/chronark.com/content/projects/_mdx_bundler_entry_point-93a1e3d2-f694-441c-8926-7ce5fc1adfb7.mdx\",lineNumber:19,columnNumber:3},this),\")\"]},void 0,!0,{fileName:\"/Users/andreasthomas/github/chronark/chronark.com/content/projects/_mdx_bundler_entry_point-93a1e3d2-f694-441c-8926-7ce5fc1adfb7.mdx\",lineNumber:18,columnNumber:1},this),`\n`,(0,n.jsxDEV)(e.li,{children:[`Fastly Compute@Edge (see\n`,(0,n.jsxDEV)(e.a,{href:\"https://github.com/upstash/upstash-redis/tree/main/examples/fastly\",children:\"the example\"},void 0,!1,{fileName:\"/Users/andreasthomas/github/chronark/chronark.com/content/projects/_mdx_bundler_entry_point-93a1e3d2-f694-441c-8926-7ce5fc1adfb7.mdx\",lineNumber:21,columnNumber:3},this),\")\"]},void 0,!0,{fileName:\"/Users/andreasthomas/github/chronark/chronark.com/content/projects/_mdx_bundler_entry_point-93a1e3d2-f694-441c-8926-7ce5fc1adfb7.mdx\",lineNumber:20,columnNumber:1},this),`\n`,(0,n.jsxDEV)(e.li,{children:\"Next.js, Jamstack ...\"},void 0,!1,{fileName:\"/Users/andreasthomas/github/chronark/chronark.com/content/projects/_mdx_bundler_entry_point-93a1e3d2-f694-441c-8926-7ce5fc1adfb7.mdx\",lineNumber:22,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-93a1e3d2-f694-441c-8926-7ce5fc1adfb7.mdx\",lineNumber:23,columnNumber:1},this),`\n`,(0,n.jsxDEV)(e.li,{children:\"WebAssembly\"},void 0,!1,{fileName:\"/Users/andreasthomas/github/chronark/chronark.com/content/projects/_mdx_bundler_entry_point-93a1e3d2-f694-441c-8926-7ce5fc1adfb7.mdx\",lineNumber:24,columnNumber:1},this),`\n`,(0,n.jsxDEV)(e.li,{children:\"and other environments where HTTP is preferred over TCP.\"},void 0,!1,{fileName:\"/Users/andreasthomas/github/chronark/chronark.com/content/projects/_mdx_bundler_entry_point-93a1e3d2-f694-441c-8926-7ce5fc1adfb7.mdx\",lineNumber:25,columnNumber:1},this),`\n`]},void 0,!0,{fileName:\"/Users/andreasthomas/github/chronark/chronark.com/content/projects/_mdx_bundler_entry_point-93a1e3d2-f694-441c-8926-7ce5fc1adfb7.mdx\",lineNumber:17,columnNumber:1},this),`\n`,(0,n.jsxDEV)(e.p,{children:[`See\n`,(0,n.jsxDEV)(e.a,{href:\"https://docs.upstash.com/features/restapi#rest---redis-api-compatibility\",children:\"the list of APIs\"},void 0,!1,{fileName:\"/Users/andreasthomas/github/chronark/chronark.com/content/projects/_mdx_bundler_entry_point-93a1e3d2-f694-441c-8926-7ce5fc1adfb7.mdx\",lineNumber:28,columnNumber:1},this),`\nsupported.`]},void 0,!0,{fileName:\"/Users/andreasthomas/github/chronark/chronark.com/content/projects/_mdx_bundler_entry_point-93a1e3d2-f694-441c-8926-7ce5fc1adfb7.mdx\",lineNumber:27,columnNumber:1},this),`\n`,(0,n.jsxDEV)(e.h2,{id:\"quick-start\",children:[(0,n.jsxDEV)(e.a,{className:\"subheading-anchor\",\"aria-label\":\"Link to section\",href:\"#quick-start\",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-93a1e3d2-f694-441c-8926-7ce5fc1adfb7.mdx\"},this)},void 0,!1,{fileName:\"/Users/andreasthomas/github/chronark/chronark.com/content/projects/_mdx_bundler_entry_point-93a1e3d2-f694-441c-8926-7ce5fc1adfb7.mdx\"},this),\"Quick Start\"]},void 0,!0,{fileName:\"/Users/andreasthomas/github/chronark/chronark.com/content/projects/_mdx_bundler_entry_point-93a1e3d2-f694-441c-8926-7ce5fc1adfb7.mdx\",lineNumber:31,columnNumber:1},this),`\n`,(0,n.jsxDEV)(e.h3,{id:\"install\",children:[(0,n.jsxDEV)(e.a,{className:\"subheading-anchor\",\"aria-label\":\"Link to section\",href:\"#install\",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-93a1e3d2-f694-441c-8926-7ce5fc1adfb7.mdx\"},this)},void 0,!1,{fileName:\"/Users/andreasthomas/github/chronark/chronark.com/content/projects/_mdx_bundler_entry_point-93a1e3d2-f694-441c-8926-7ce5fc1adfb7.mdx\"},this),\"Install\"]},void 0,!0,{fileName:\"/Users/andreasthomas/github/chronark/chronark.com/content/projects/_mdx_bundler_entry_point-93a1e3d2-f694-441c-8926-7ce5fc1adfb7.mdx\",lineNumber:33,columnNumber:1},this),`\n`,(0,n.jsxDEV)(e.h4,{id:\"nodejs\",children:[(0,n.jsxDEV)(e.a,{className:\"subheading-anchor\",\"aria-label\":\"Link to section\",href:\"#nodejs\",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-93a1e3d2-f694-441c-8926-7ce5fc1adfb7.mdx\"},this)},void 0,!1,{fileName:\"/Users/andreasthomas/github/chronark/chronark.com/content/projects/_mdx_bundler_entry_point-93a1e3d2-f694-441c-8926-7ce5fc1adfb7.mdx\"},this),\"Node.js\"]},void 0,!0,{fileName:\"/Users/andreasthomas/github/chronark/chronark.com/content/projects/_mdx_bundler_entry_point-93a1e3d2-f694-441c-8926-7ce5fc1adfb7.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\":\"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-93a1e3d2-f694-441c-8926-7ce5fc1adfb7.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-93a1e3d2-f694-441c-8926-7ce5fc1adfb7.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-93a1e3d2-f694-441c-8926-7ce5fc1adfb7.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-93a1e3d2-f694-441c-8926-7ce5fc1adfb7.mdx\",lineNumber:1,columnNumber:223},this),(0,n.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-93a1e3d2-f694-441c-8926-7ce5fc1adfb7.mdx\",lineNumber:1,columnNumber:260},this)]},void 0,!0,{fileName:\"/Users/andreasthomas/github/chronark/chronark.com/content/projects/_mdx_bundler_entry_point-93a1e3d2-f694-441c-8926-7ce5fc1adfb7.mdx\",lineNumber:1,columnNumber:85},this)},void 0,!1,{fileName:\"/Users/andreasthomas/github/chronark/chronark.com/content/projects/_mdx_bundler_entry_point-93a1e3d2-f694-441c-8926-7ce5fc1adfb7.mdx\",lineNumber:1,columnNumber:79},this)},void 0,!1,{fileName:\"/Users/andreasthomas/github/chronark/chronark.com/content/projects/_mdx_bundler_entry_point-93a1e3d2-f694-441c-8926-7ce5fc1adfb7.mdx\",lineNumber:1,columnNumber:1},this)},void 0,!1,{fileName:\"/Users/andreasthomas/github/chronark/chronark.com/content/projects/_mdx_bundler_entry_point-93a1e3d2-f694-441c-8926-7ce5fc1adfb7.mdx\",lineNumber:37,columnNumber:1},this),`\n`,(0,n.jsxDEV)(e.h4,{id:\"deno\",children:[(0,n.jsxDEV)(e.a,{className:\"subheading-anchor\",\"aria-label\":\"Link to section\",href:\"#deno\",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-93a1e3d2-f694-441c-8926-7ce5fc1adfb7.mdx\"},this)},void 0,!1,{fileName:\"/Users/andreasthomas/github/chronark/chronark.com/content/projects/_mdx_bundler_entry_point-93a1e3d2-f694-441c-8926-7ce5fc1adfb7.mdx\"},this),\"Deno\"]},void 0,!0,{fileName:\"/Users/andreasthomas/github/chronark/chronark.com/content/projects/_mdx_bundler_entry_point-93a1e3d2-f694-441c-8926-7ce5fc1adfb7.mdx\",lineNumber:41,columnNumber:1},this),`\n`,(0,n.jsxDEV)(e.div,{\"data-rehype-pretty-code-fragment\":\"\",children:(0,n.jsxDEV)(e.pre,{\"data-language\":\"ts\",\"data-theme\":\"default\",children:(0,n.jsxDEV)(e.code,{\"data-language\":\"ts\",\"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-93a1e3d2-f694-441c-8926-7ce5fc1adfb7.mdx\",lineNumber:1,columnNumber:104},this),(0,n.jsxDEV)(e.span,{style:{color:\"#E1E4E8\"},children:\" { Redis } \"},void 0,!1,{fileName:\"/Users/andreasthomas/github/chronark/chronark.com/content/projects/_mdx_bundler_entry_point-93a1e3d2-f694-441c-8926-7ce5fc1adfb7.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-93a1e3d2-f694-441c-8926-7ce5fc1adfb7.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-93a1e3d2-f694-441c-8926-7ce5fc1adfb7.mdx\",lineNumber:1,columnNumber:233},this),(0,n.jsxDEV)(e.span,{style:{color:\"#9ECBFF\"},children:'\"https://deno.land/x/upstash_redis/mod.ts\"'},void 0,!1,{fileName:\"/Users/andreasthomas/github/chronark/chronark.com/content/projects/_mdx_bundler_entry_point-93a1e3d2-f694-441c-8926-7ce5fc1adfb7.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-93a1e3d2-f694-441c-8926-7ce5fc1adfb7.mdx\",lineNumber:1,columnNumber:358},this)]},void 0,!0,{fileName:\"/Users/andreasthomas/github/chronark/chronark.com/content/projects/_mdx_bundler_entry_point-93a1e3d2-f694-441c-8926-7ce5fc1adfb7.mdx\",lineNumber:1,columnNumber:85},this)},void 0,!1,{fileName:\"/Users/andreasthomas/github/chronark/chronark.com/content/projects/_mdx_bundler_entry_point-93a1e3d2-f694-441c-8926-7ce5fc1adfb7.mdx\",lineNumber:1,columnNumber:79},this)},void 0,!1,{fileName:\"/Users/andreasthomas/github/chronark/chronark.com/content/projects/_mdx_bundler_entry_point-93a1e3d2-f694-441c-8926-7ce5fc1adfb7.mdx\",lineNumber:1,columnNumber:1},this)},void 0,!1,{fileName:\"/Users/andreasthomas/github/chronark/chronark.com/content/projects/_mdx_bundler_entry_point-93a1e3d2-f694-441c-8926-7ce5fc1adfb7.mdx\",lineNumber:43,columnNumber:1},this),`\n`,(0,n.jsxDEV)(e.h3,{id:\"create-database\",children:[(0,n.jsxDEV)(e.a,{className:\"subheading-anchor\",\"aria-label\":\"Link to section\",href:\"#create-database\",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-93a1e3d2-f694-441c-8926-7ce5fc1adfb7.mdx\"},this)},void 0,!1,{fileName:\"/Users/andreasthomas/github/chronark/chronark.com/content/projects/_mdx_bundler_entry_point-93a1e3d2-f694-441c-8926-7ce5fc1adfb7.mdx\"},this),\"Create database\"]},void 0,!0,{fileName:\"/Users/andreasthomas/github/chronark/chronark.com/content/projects/_mdx_bundler_entry_point-93a1e3d2-f694-441c-8926-7ce5fc1adfb7.mdx\",lineNumber:47,columnNumber:1},this),`\n`,(0,n.jsxDEV)(e.p,{children:[\"Create a new redis database on \",(0,n.jsxDEV)(e.a,{href:\"https://console.upstash.com/\",children:\"upstash\"},void 0,!1,{fileName:\"/Users/andreasthomas/github/chronark/chronark.com/content/projects/_mdx_bundler_entry_point-93a1e3d2-f694-441c-8926-7ce5fc1adfb7.mdx\",lineNumber:49,columnNumber:32},this)]},void 0,!0,{fileName:\"/Users/andreasthomas/github/chronark/chronark.com/content/projects/_mdx_bundler_entry_point-93a1e3d2-f694-441c-8926-7ce5fc1adfb7.mdx\",lineNumber:49,columnNumber:1},this),`\n`,(0,n.jsxDEV)(e.h2,{id:\"basic-usage\",children:[(0,n.jsxDEV)(e.a,{className:\"subheading-anchor\",\"aria-label\":\"Link to section\",href:\"#basic-usage\",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-93a1e3d2-f694-441c-8926-7ce5fc1adfb7.mdx\"},this)},void 0,!1,{fileName:\"/Users/andreasthomas/github/chronark/chronark.com/content/projects/_mdx_bundler_entry_point-93a1e3d2-f694-441c-8926-7ce5fc1adfb7.mdx\"},this),\"Basic Usage:\"]},void 0,!0,{fileName:\"/Users/andreasthomas/github/chronark/chronark.com/content/projects/_mdx_bundler_entry_point-93a1e3d2-f694-441c-8926-7ce5fc1adfb7.mdx\",lineNumber:51,columnNumber:1},this),`\n`,(0,n.jsxDEV)(e.div,{\"data-rehype-pretty-code-fragment\":\"\",children:(0,n.jsxDEV)(e.pre,{\"data-language\":\"ts\",\"data-theme\":\"default\",children:(0,n.jsxDEV)(e.code,{\"data-language\":\"ts\",\"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-93a1e3d2-f694-441c-8926-7ce5fc1adfb7.mdx\",lineNumber:1,columnNumber:104},this),(0,n.jsxDEV)(e.span,{style:{color:\"#E1E4E8\"},children:\" { Redis } \"},void 0,!1,{fileName:\"/Users/andreasthomas/github/chronark/chronark.com/content/projects/_mdx_bundler_entry_point-93a1e3d2-f694-441c-8926-7ce5fc1adfb7.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-93a1e3d2-f694-441c-8926-7ce5fc1adfb7.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-93a1e3d2-f694-441c-8926-7ce5fc1adfb7.mdx\",lineNumber:1,columnNumber:233},this),(0,n.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-93a1e3d2-f694-441c-8926-7ce5fc1adfb7.mdx\",lineNumber:1,columnNumber:270},this)]},void 0,!0,{fileName:\"/Users/andreasthomas/github/chronark/chronark.com/content/projects/_mdx_bundler_entry_point-93a1e3d2-f694-441c-8926-7ce5fc1adfb7.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-93a1e3d2-f694-441c-8926-7ce5fc1adfb7.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-93a1e3d2-f694-441c-8926-7ce5fc1adfb7.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-93a1e3d2-f694-441c-8926-7ce5fc1adfb7.mdx\",lineNumber:3,columnNumber:61},this),(0,n.jsxDEV)(e.span,{style:{color:\"#79B8FF\"},children:\"redis\"},void 0,!1,{fileName:\"/Users/andreasthomas/github/chronark/chronark.com/content/projects/_mdx_bundler_entry_point-93a1e3d2-f694-441c-8926-7ce5fc1adfb7.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-93a1e3d2-f694-441c-8926-7ce5fc1adfb7.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-93a1e3d2-f694-441c-8926-7ce5fc1adfb7.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-93a1e3d2-f694-441c-8926-7ce5fc1adfb7.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-93a1e3d2-f694-441c-8926-7ce5fc1adfb7.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-93a1e3d2-f694-441c-8926-7ce5fc1adfb7.mdx\",lineNumber:3,columnNumber:289},this),(0,n.jsxDEV)(e.span,{style:{color:\"#B392F0\"},children:\"Redis\"},void 0,!1,{fileName:\"/Users/andreasthomas/github/chronark/chronark.com/content/projects/_mdx_bundler_entry_point-93a1e3d2-f694-441c-8926-7ce5fc1adfb7.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-93a1e3d2-f694-441c-8926-7ce5fc1adfb7.mdx\",lineNumber:3,columnNumber:367},this)]},void 0,!0,{fileName:\"/Users/andreasthomas/github/chronark/chronark.com/content/projects/_mdx_bundler_entry_point-93a1e3d2-f694-441c-8926-7ce5fc1adfb7.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-93a1e3d2-f694-441c-8926-7ce5fc1adfb7.mdx\",lineNumber:4,columnNumber:20},this),(0,n.jsxDEV)(e.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-93a1e3d2-f694-441c-8926-7ce5fc1adfb7.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-93a1e3d2-f694-441c-8926-7ce5fc1adfb7.mdx\",lineNumber:4,columnNumber:125},this)]},void 0,!0,{fileName:\"/Users/andreasthomas/github/chronark/chronark.com/content/projects/_mdx_bundler_entry_point-93a1e3d2-f694-441c-8926-7ce5fc1adfb7.mdx\",lineNumber:4,columnNumber:1},this),`\n`,(0,n.jsxDEV)(e.span,{className:\"line\",children:[(0,n.jsxDEV)(e.span,{style:{color:\"#E1E4E8\"},children:\" token: <\"},void 0,!1,{fileName:\"/Users/andreasthomas/github/chronark/chronark.com/content/projects/_mdx_bundler_entry_point-93a1e3d2-f694-441c-8926-7ce5fc1adfb7.mdx\",lineNumber:5,columnNumber:20},this),(0,n.jsxDEV)(e.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-93a1e3d2-f694-441c-8926-7ce5fc1adfb7.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-93a1e3d2-f694-441c-8926-7ce5fc1adfb7.mdx\",lineNumber:5,columnNumber:129},this)]},void 0,!0,{fileName:\"/Users/andreasthomas/github/chronark/chronark.com/content/projects/_mdx_bundler_entry_point-93a1e3d2-f694-441c-8926-7ce5fc1adfb7.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-93a1e3d2-f694-441c-8926-7ce5fc1adfb7.mdx\",lineNumber:6,columnNumber:20},this)},void 0,!1,{fileName:\"/Users/andreasthomas/github/chronark/chronark.com/content/projects/_mdx_bundler_entry_point-93a1e3d2-f694-441c-8926-7ce5fc1adfb7.mdx\",lineNumber:6,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-93a1e3d2-f694-441c-8926-7ce5fc1adfb7.mdx\",lineNumber:7,columnNumber:1},this),`\n`,(0,n.jsxDEV)(e.span,{className:\"line\",children:(0,n.jsxDEV)(e.span,{style:{color:\"#6A737D\"},children:\"// string\"},void 0,!1,{fileName:\"/Users/andreasthomas/github/chronark/chronark.com/content/projects/_mdx_bundler_entry_point-93a1e3d2-f694-441c-8926-7ce5fc1adfb7.mdx\",lineNumber:8,columnNumber:20},this)},void 0,!1,{fileName:\"/Users/andreasthomas/github/chronark/chronark.com/content/projects/_mdx_bundler_entry_point-93a1e3d2-f694-441c-8926-7ce5fc1adfb7.mdx\",lineNumber:8,columnNumber:1},this),`\n`,(0,n.jsxDEV)(e.span,{className:\"line\",children:[(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-93a1e3d2-f694-441c-8926-7ce5fc1adfb7.mdx\",lineNumber:9,columnNumber:20},this),(0,n.jsxDEV)(e.span,{style:{color:\"#E1E4E8\"},children:\" redis.\"},void 0,!1,{fileName:\"/Users/andreasthomas/github/chronark/chronark.com/content/projects/_mdx_bundler_entry_point-93a1e3d2-f694-441c-8926-7ce5fc1adfb7.mdx\",lineNumber:9,columnNumber:61},this),(0,n.jsxDEV)(e.span,{style:{color:\"#B392F0\"},children:\"set\"},void 0,!1,{fileName:\"/Users/andreasthomas/github/chronark/chronark.com/content/projects/_mdx_bundler_entry_point-93a1e3d2-f694-441c-8926-7ce5fc1adfb7.mdx\",lineNumber:9,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-93a1e3d2-f694-441c-8926-7ce5fc1adfb7.mdx\",lineNumber:9,columnNumber:143},this),(0,n.jsxDEV)(e.span,{style:{color:\"#9ECBFF\"},children:\"'key'\"},void 0,!1,{fileName:\"/Users/andreasthomas/github/chronark/chronark.com/content/projects/_mdx_bundler_entry_point-93a1e3d2-f694-441c-8926-7ce5fc1adfb7.mdx\",lineNumber:9,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-93a1e3d2-f694-441c-8926-7ce5fc1adfb7.mdx\",lineNumber:9,columnNumber:229},this),(0,n.jsxDEV)(e.span,{style:{color:\"#9ECBFF\"},children:\"'value'\"},void 0,!1,{fileName:\"/Users/andreasthomas/github/chronark/chronark.com/content/projects/_mdx_bundler_entry_point-93a1e3d2-f694-441c-8926-7ce5fc1adfb7.mdx\",lineNumber:9,columnNumber:267},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-93a1e3d2-f694-441c-8926-7ce5fc1adfb7.mdx\",lineNumber:9,columnNumber:318},this)]},void 0,!0,{fileName:\"/Users/andreasthomas/github/chronark/chronark.com/content/projects/_mdx_bundler_entry_point-93a1e3d2-f694-441c-8926-7ce5fc1adfb7.mdx\",lineNumber:9,columnNumber:1},this),`\n`,(0,n.jsxDEV)(e.span,{className:\"line\",children:[(0,n.jsxDEV)(e.span,{style:{color:\"#F97583\"},children:\"let\"},void 0,!1,{fileName:\"/Users/andreasthomas/github/chronark/chronark.com/content/projects/_mdx_bundler_entry_point-93a1e3d2-f694-441c-8926-7ce5fc1adfb7.mdx\",lineNumber:10,columnNumber:20},this),(0,n.jsxDEV)(e.span,{style:{color:\"#E1E4E8\"},children:\" data \"},void 0,!1,{fileName:\"/Users/andreasthomas/github/chronark/chronark.com/content/projects/_mdx_bundler_entry_point-93a1e3d2-f694-441c-8926-7ce5fc1adfb7.mdx\",lineNumber:10,columnNumber:59},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-93a1e3d2-f694-441c-8926-7ce5fc1adfb7.mdx\",lineNumber:10,columnNumber:101},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-93a1e3d2-f694-441c-8926-7ce5fc1adfb7.mdx\",lineNumber:10,columnNumber:138},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-93a1e3d2-f694-441c-8926-7ce5fc1adfb7.mdx\",lineNumber:10,columnNumber:175},this),(0,n.jsxDEV)(e.span,{style:{color:\"#E1E4E8\"},children:\" redis.\"},void 0,!1,{fileName:\"/Users/andreasthomas/github/chronark/chronark.com/content/projects/_mdx_bundler_entry_point-93a1e3d2-f694-441c-8926-7ce5fc1adfb7.mdx\",lineNumber:10,columnNumber:216},this),(0,n.jsxDEV)(e.span,{style:{color:\"#B392F0\"},children:\"get\"},void 0,!1,{fileName:\"/Users/andreasthomas/github/chronark/chronark.com/content/projects/_mdx_bundler_entry_point-93a1e3d2-f694-441c-8926-7ce5fc1adfb7.mdx\",lineNumber:10,columnNumber:259},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-93a1e3d2-f694-441c-8926-7ce5fc1adfb7.mdx\",lineNumber:10,columnNumber:298},this),(0,n.jsxDEV)(e.span,{style:{color:\"#9ECBFF\"},children:\"'key'\"},void 0,!1,{fileName:\"/Users/andreasthomas/github/chronark/chronark.com/content/projects/_mdx_bundler_entry_point-93a1e3d2-f694-441c-8926-7ce5fc1adfb7.mdx\",lineNumber:10,columnNumber:335},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-93a1e3d2-f694-441c-8926-7ce5fc1adfb7.mdx\",lineNumber:10,columnNumber:384},this)]},void 0,!0,{fileName:\"/Users/andreasthomas/github/chronark/chronark.com/content/projects/_mdx_bundler_entry_point-93a1e3d2-f694-441c-8926-7ce5fc1adfb7.mdx\",lineNumber:10,columnNumber:1},this),`\n`,(0,n.jsxDEV)(e.span,{className:\"line\",children:[(0,n.jsxDEV)(e.span,{style:{color:\"#E1E4E8\"},children:\"console.\"},void 0,!1,{fileName:\"/Users/andreasthomas/github/chronark/chronark.com/content/projects/_mdx_bundler_entry_point-93a1e3d2-f694-441c-8926-7ce5fc1adfb7.mdx\",lineNumber:11,columnNumber:20},this),(0,n.jsxDEV)(e.span,{style:{color:\"#B392F0\"},children:\"log\"},void 0,!1,{fileName:\"/Users/andreasthomas/github/chronark/chronark.com/content/projects/_mdx_bundler_entry_point-93a1e3d2-f694-441c-8926-7ce5fc1adfb7.mdx\",lineNumber:11,columnNumber:64},this),(0,n.jsxDEV)(e.span,{style:{color:\"#E1E4E8\"},children:\"(data)\"},void 0,!1,{fileName:\"/Users/andreasthomas/github/chronark/chronark.com/content/projects/_mdx_bundler_entry_point-93a1e3d2-f694-441c-8926-7ce5fc1adfb7.mdx\",lineNumber:11,columnNumber:103},this)]},void 0,!0,{fileName:\"/Users/andreasthomas/github/chronark/chronark.com/content/projects/_mdx_bundler_entry_point-93a1e3d2-f694-441c-8926-7ce5fc1adfb7.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-93a1e3d2-f694-441c-8926-7ce5fc1adfb7.mdx\",lineNumber:12,columnNumber:1},this),`\n`,(0,n.jsxDEV)(e.span,{className:\"line\",children:[(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-93a1e3d2-f694-441c-8926-7ce5fc1adfb7.mdx\",lineNumber:13,columnNumber:20},this),(0,n.jsxDEV)(e.span,{style:{color:\"#E1E4E8\"},children:\" redis.\"},void 0,!1,{fileName:\"/Users/andreasthomas/github/chronark/chronark.com/content/projects/_mdx_bundler_entry_point-93a1e3d2-f694-441c-8926-7ce5fc1adfb7.mdx\",lineNumber:13,columnNumber:61},this),(0,n.jsxDEV)(e.span,{style:{color:\"#B392F0\"},children:\"set\"},void 0,!1,{fileName:\"/Users/andreasthomas/github/chronark/chronark.com/content/projects/_mdx_bundler_entry_point-93a1e3d2-f694-441c-8926-7ce5fc1adfb7.mdx\",lineNumber:13,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-93a1e3d2-f694-441c-8926-7ce5fc1adfb7.mdx\",lineNumber:13,columnNumber:143},this),(0,n.jsxDEV)(e.span,{style:{color:\"#9ECBFF\"},children:\"'key2'\"},void 0,!1,{fileName:\"/Users/andreasthomas/github/chronark/chronark.com/content/projects/_mdx_bundler_entry_point-93a1e3d2-f694-441c-8926-7ce5fc1adfb7.mdx\",lineNumber:13,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-93a1e3d2-f694-441c-8926-7ce5fc1adfb7.mdx\",lineNumber:13,columnNumber:230},this),(0,n.jsxDEV)(e.span,{style:{color:\"#9ECBFF\"},children:\"'value2'\"},void 0,!1,{fileName:\"/Users/andreasthomas/github/chronark/chronark.com/content/projects/_mdx_bundler_entry_point-93a1e3d2-f694-441c-8926-7ce5fc1adfb7.mdx\",lineNumber:13,columnNumber:268},this),(0,n.jsxDEV)(e.span,{style:{color:\"#E1E4E8\"},children:\", {ex: \"},void 0,!1,{fileName:\"/Users/andreasthomas/github/chronark/chronark.com/content/projects/_mdx_bundler_entry_point-93a1e3d2-f694-441c-8926-7ce5fc1adfb7.mdx\",lineNumber:13,columnNumber:320},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-93a1e3d2-f694-441c-8926-7ce5fc1adfb7.mdx\",lineNumber:13,columnNumber:363},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-93a1e3d2-f694-441c-8926-7ce5fc1adfb7.mdx\",lineNumber:13,columnNumber:400},this)]},void 0,!0,{fileName:\"/Users/andreasthomas/github/chronark/chronark.com/content/projects/_mdx_bundler_entry_point-93a1e3d2-f694-441c-8926-7ce5fc1adfb7.mdx\",lineNumber:13,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-93a1e3d2-f694-441c-8926-7ce5fc1adfb7.mdx\",lineNumber:14,columnNumber:1},this),`\n`,(0,n.jsxDEV)(e.span,{className:\"line\",children:(0,n.jsxDEV)(e.span,{style:{color:\"#6A737D\"},children:\"// sorted set\"},void 0,!1,{fileName:\"/Users/andreasthomas/github/chronark/chronark.com/content/projects/_mdx_bundler_entry_point-93a1e3d2-f694-441c-8926-7ce5fc1adfb7.mdx\",lineNumber:15,columnNumber:20},this)},void 0,!1,{fileName:\"/Users/andreasthomas/github/chronark/chronark.com/content/projects/_mdx_bundler_entry_point-93a1e3d2-f694-441c-8926-7ce5fc1adfb7.mdx\",lineNumber:15,columnNumber:1},this),`\n`,(0,n.jsxDEV)(e.span,{className:\"line\",children:[(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-93a1e3d2-f694-441c-8926-7ce5fc1adfb7.mdx\",lineNumber:16,columnNumber:20},this),(0,n.jsxDEV)(e.span,{style:{color:\"#E1E4E8\"},children:\" redis.\"},void 0,!1,{fileName:\"/Users/andreasthomas/github/chronark/chronark.com/content/projects/_mdx_bundler_entry_point-93a1e3d2-f694-441c-8926-7ce5fc1adfb7.mdx\",lineNumber:16,columnNumber:61},this),(0,n.jsxDEV)(e.span,{style:{color:\"#B392F0\"},children:\"zadd\"},void 0,!1,{fileName:\"/Users/andreasthomas/github/chronark/chronark.com/content/projects/_mdx_bundler_entry_point-93a1e3d2-f694-441c-8926-7ce5fc1adfb7.mdx\",lineNumber:16,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-93a1e3d2-f694-441c-8926-7ce5fc1adfb7.mdx\",lineNumber:16,columnNumber:144},this),(0,n.jsxDEV)(e.span,{style:{color:\"#9ECBFF\"},children:\"'scores'\"},void 0,!1,{fileName:\"/Users/andreasthomas/github/chronark/chronark.com/content/projects/_mdx_bundler_entry_point-93a1e3d2-f694-441c-8926-7ce5fc1adfb7.mdx\",lineNumber:16,columnNumber:181},this),(0,n.jsxDEV)(e.span,{style:{color:\"#E1E4E8\"},children:\", { score: \"},void 0,!1,{fileName:\"/Users/andreasthomas/github/chronark/chronark.com/content/projects/_mdx_bundler_entry_point-93a1e3d2-f694-441c-8926-7ce5fc1adfb7.mdx\",lineNumber:16,columnNumber:233},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-93a1e3d2-f694-441c-8926-7ce5fc1adfb7.mdx\",lineNumber:16,columnNumber:280},this),(0,n.jsxDEV)(e.span,{style:{color:\"#E1E4E8\"},children:\", member: \"},void 0,!1,{fileName:\"/Users/andreasthomas/github/chronark/chronark.com/content/projects/_mdx_bundler_entry_point-93a1e3d2-f694-441c-8926-7ce5fc1adfb7.mdx\",lineNumber:16,columnNumber:317},this),(0,n.jsxDEV)(e.span,{style:{color:\"#9ECBFF\"},children:\"'team1'\"},void 0,!1,{fileName:\"/Users/andreasthomas/github/chronark/chronark.com/content/projects/_mdx_bundler_entry_point-93a1e3d2-f694-441c-8926-7ce5fc1adfb7.mdx\",lineNumber:16,columnNumber:363},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-93a1e3d2-f694-441c-8926-7ce5fc1adfb7.mdx\",lineNumber:16,columnNumber:414},this)]},void 0,!0,{fileName:\"/Users/andreasthomas/github/chronark/chronark.com/content/projects/_mdx_bundler_entry_point-93a1e3d2-f694-441c-8926-7ce5fc1adfb7.mdx\",lineNumber:16,columnNumber:1},this),`\n`,(0,n.jsxDEV)(e.span,{className:\"line\",children:[(0,n.jsxDEV)(e.span,{style:{color:\"#E1E4E8\"},children:\"data \"},void 0,!1,{fileName:\"/Users/andreasthomas/github/chronark/chronark.com/content/projects/_mdx_bundler_entry_point-93a1e3d2-f694-441c-8926-7ce5fc1adfb7.mdx\",lineNumber:17,columnNumber:20},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-93a1e3d2-f694-441c-8926-7ce5fc1adfb7.mdx\",lineNumber:17,columnNumber:61},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-93a1e3d2-f694-441c-8926-7ce5fc1adfb7.mdx\",lineNumber:17,columnNumber:98},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-93a1e3d2-f694-441c-8926-7ce5fc1adfb7.mdx\",lineNumber:17,columnNumber:135},this),(0,n.jsxDEV)(e.span,{style:{color:\"#E1E4E8\"},children:\" redis.\"},void 0,!1,{fileName:\"/Users/andreasthomas/github/chronark/chronark.com/content/projects/_mdx_bundler_entry_point-93a1e3d2-f694-441c-8926-7ce5fc1adfb7.mdx\",lineNumber:17,columnNumber:176},this),(0,n.jsxDEV)(e.span,{style:{color:\"#B392F0\"},children:\"zrange\"},void 0,!1,{fileName:\"/Users/andreasthomas/github/chronark/chronark.com/content/projects/_mdx_bundler_entry_point-93a1e3d2-f694-441c-8926-7ce5fc1adfb7.mdx\",lineNumber:17,columnNumber:219},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-93a1e3d2-f694-441c-8926-7ce5fc1adfb7.mdx\",lineNumber:17,columnNumber:261},this),(0,n.jsxDEV)(e.span,{style:{color:\"#9ECBFF\"},children:\"'scores'\"},void 0,!1,{fileName:\"/Users/andreasthomas/github/chronark/chronark.com/content/projects/_mdx_bundler_entry_point-93a1e3d2-f694-441c-8926-7ce5fc1adfb7.mdx\",lineNumber:17,columnNumber:298},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-93a1e3d2-f694-441c-8926-7ce5fc1adfb7.mdx\",lineNumber:17,columnNumber:350},this),(0,n.jsxDEV)(e.span,{style:{color:\"#79B8FF\"},children:\"0\"},void 0,!1,{fileName:\"/Users/andreasthomas/github/chronark/chronark.com/content/projects/_mdx_bundler_entry_point-93a1e3d2-f694-441c-8926-7ce5fc1adfb7.mdx\",lineNumber:17,columnNumber:388},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-93a1e3d2-f694-441c-8926-7ce5fc1adfb7.mdx\",lineNumber:17,columnNumber:425},this),(0,n.jsxDEV)(e.span,{style:{color:\"#79B8FF\"},children:\"100\"},void 0,!1,{fileName:\"/Users/andreasthomas/github/chronark/chronark.com/content/projects/_mdx_bundler_entry_point-93a1e3d2-f694-441c-8926-7ce5fc1adfb7.mdx\",lineNumber:17,columnNumber:463},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-93a1e3d2-f694-441c-8926-7ce5fc1adfb7.mdx\",lineNumber:17,columnNumber:502},this)]},void 0,!0,{fileName:\"/Users/andreasthomas/github/chronark/chronark.com/content/projects/_mdx_bundler_entry_point-93a1e3d2-f694-441c-8926-7ce5fc1adfb7.mdx\",lineNumber:17,columnNumber:1},this),`\n`,(0,n.jsxDEV)(e.span,{className:\"line\",children:[(0,n.jsxDEV)(e.span,{style:{color:\"#E1E4E8\"},children:\"console.\"},void 0,!1,{fileName:\"/Users/andreasthomas/github/chronark/chronark.com/content/projects/_mdx_bundler_entry_point-93a1e3d2-f694-441c-8926-7ce5fc1adfb7.mdx\",lineNumber:18,columnNumber:20},this),(0,n.jsxDEV)(e.span,{style:{color:\"#B392F0\"},children:\"log\"},void 0,!1,{fileName:\"/Users/andreasthomas/github/chronark/chronark.com/content/projects/_mdx_bundler_entry_point-93a1e3d2-f694-441c-8926-7ce5fc1adfb7.mdx\",lineNumber:18,columnNumber:64},this),(0,n.jsxDEV)(e.span,{style:{color:\"#E1E4E8\"},children:\"(data)\"},void 0,!1,{fileName:\"/Users/andreasthomas/github/chronark/chronark.com/content/projects/_mdx_bundler_entry_point-93a1e3d2-f694-441c-8926-7ce5fc1adfb7.mdx\",lineNumber:18,columnNumber:103},this)]},void 0,!0,{fileName:\"/Users/andreasthomas/github/chronark/chronark.com/content/projects/_mdx_bundler_entry_point-93a1e3d2-f694-441c-8926-7ce5fc1adfb7.mdx\",lineNumber:18,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-93a1e3d2-f694-441c-8926-7ce5fc1adfb7.mdx\",lineNumber:19,columnNumber:1},this),`\n`,(0,n.jsxDEV)(e.span,{className:\"line\",children:(0,n.jsxDEV)(e.span,{style:{color:\"#6A737D\"},children:\"// list\"},void 0,!1,{fileName:\"/Users/andreasthomas/github/chronark/chronark.com/content/projects/_mdx_bundler_entry_point-93a1e3d2-f694-441c-8926-7ce5fc1adfb7.mdx\",lineNumber:20,columnNumber:20},this)},void 0,!1,{fileName:\"/Users/andreasthomas/github/chronark/chronark.com/content/projects/_mdx_bundler_entry_point-93a1e3d2-f694-441c-8926-7ce5fc1adfb7.mdx\",lineNumber:20,columnNumber:1},this),`\n`,(0,n.jsxDEV)(e.span,{className:\"line\",children:[(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-93a1e3d2-f694-441c-8926-7ce5fc1adfb7.mdx\",lineNumber:21,columnNumber:20},this),(0,n.jsxDEV)(e.span,{style:{color:\"#E1E4E8\"},children:\" redis.\"},void 0,!1,{fileName:\"/Users/andreasthomas/github/chronark/chronark.com/content/projects/_mdx_bundler_entry_point-93a1e3d2-f694-441c-8926-7ce5fc1adfb7.mdx\",lineNumber:21,columnNumber:61},this),(0,n.jsxDEV)(e.span,{style:{color:\"#B392F0\"},children:\"lpush\"},void 0,!1,{fileName:\"/Users/andreasthomas/github/chronark/chronark.com/content/projects/_mdx_bundler_entry_point-93a1e3d2-f694-441c-8926-7ce5fc1adfb7.mdx\",lineNumber:21,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-93a1e3d2-f694-441c-8926-7ce5fc1adfb7.mdx\",lineNumber:21,columnNumber:145},this),(0,n.jsxDEV)(e.span,{style:{color:\"#9ECBFF\"},children:\"'elements'\"},void 0,!1,{fileName:\"/Users/andreasthomas/github/chronark/chronark.com/content/projects/_mdx_bundler_entry_point-93a1e3d2-f694-441c-8926-7ce5fc1adfb7.mdx\",lineNumber:21,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-93a1e3d2-f694-441c-8926-7ce5fc1adfb7.mdx\",lineNumber:21,columnNumber:236},this),(0,n.jsxDEV)(e.span,{style:{color:\"#9ECBFF\"},children:\"'magnesium'\"},void 0,!1,{fileName:\"/Users/andreasthomas/github/chronark/chronark.com/content/projects/_mdx_bundler_entry_point-93a1e3d2-f694-441c-8926-7ce5fc1adfb7.mdx\",lineNumber:21,columnNumber:274},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-93a1e3d2-f694-441c-8926-7ce5fc1adfb7.mdx\",lineNumber:21,columnNumber:329},this)]},void 0,!0,{fileName:\"/Users/andreasthomas/github/chronark/chronark.com/content/projects/_mdx_bundler_entry_point-93a1e3d2-f694-441c-8926-7ce5fc1adfb7.mdx\",lineNumber:21,columnNumber:1},this),`\n`,(0,n.jsxDEV)(e.span,{className:\"line\",children:[(0,n.jsxDEV)(e.span,{style:{color:\"#E1E4E8\"},children:\"data \"},void 0,!1,{fileName:\"/Users/andreasthomas/github/chronark/chronark.com/content/projects/_mdx_bundler_entry_point-93a1e3d2-f694-441c-8926-7ce5fc1adfb7.mdx\",lineNumber:22,columnNumber:20},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-93a1e3d2-f694-441c-8926-7ce5fc1adfb7.mdx\",lineNumber:22,columnNumber:61},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-93a1e3d2-f694-441c-8926-7ce5fc1adfb7.mdx\",lineNumber:22,columnNumber:98},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-93a1e3d2-f694-441c-8926-7ce5fc1adfb7.mdx\",lineNumber:22,columnNumber:135},this),(0,n.jsxDEV)(e.span,{style:{color:\"#E1E4E8\"},children:\" redis.\"},void 0,!1,{fileName:\"/Users/andreasthomas/github/chronark/chronark.com/content/projects/_mdx_bundler_entry_point-93a1e3d2-f694-441c-8926-7ce5fc1adfb7.mdx\",lineNumber:22,columnNumber:176},this),(0,n.jsxDEV)(e.span,{style:{color:\"#B392F0\"},children:\"lrange\"},void 0,!1,{fileName:\"/Users/andreasthomas/github/chronark/chronark.com/content/projects/_mdx_bundler_entry_point-93a1e3d2-f694-441c-8926-7ce5fc1adfb7.mdx\",lineNumber:22,columnNumber:219},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-93a1e3d2-f694-441c-8926-7ce5fc1adfb7.mdx\",lineNumber:22,columnNumber:261},this),(0,n.jsxDEV)(e.span,{style:{color:\"#9ECBFF\"},children:\"'elements'\"},void 0,!1,{fileName:\"/Users/andreasthomas/github/chronark/chronark.com/content/projects/_mdx_bundler_entry_point-93a1e3d2-f694-441c-8926-7ce5fc1adfb7.mdx\",lineNumber:22,columnNumber:298},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-93a1e3d2-f694-441c-8926-7ce5fc1adfb7.mdx\",lineNumber:22,columnNumber:352},this),(0,n.jsxDEV)(e.span,{style:{color:\"#79B8FF\"},children:\"0\"},void 0,!1,{fileName:\"/Users/andreasthomas/github/chronark/chronark.com/content/projects/_mdx_bundler_entry_point-93a1e3d2-f694-441c-8926-7ce5fc1adfb7.mdx\",lineNumber:22,columnNumber:390},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-93a1e3d2-f694-441c-8926-7ce5fc1adfb7.mdx\",lineNumber:22,columnNumber:427},this),(0,n.jsxDEV)(e.span,{style:{color:\"#79B8FF\"},children:\"100\"},void 0,!1,{fileName:\"/Users/andreasthomas/github/chronark/chronark.com/content/projects/_mdx_bundler_entry_point-93a1e3d2-f694-441c-8926-7ce5fc1adfb7.mdx\",lineNumber:22,columnNumber:465},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-93a1e3d2-f694-441c-8926-7ce5fc1adfb7.mdx\",lineNumber:22,columnNumber:504},this)]},void 0,!0,{fileName:\"/Users/andreasthomas/github/chronark/chronark.com/content/projects/_mdx_bundler_entry_point-93a1e3d2-f694-441c-8926-7ce5fc1adfb7.mdx\",lineNumber:22,columnNumber:1},this),`\n`,(0,n.jsxDEV)(e.span,{className:\"line\",children:[(0,n.jsxDEV)(e.span,{style:{color:\"#E1E4E8\"},children:\"console.\"},void 0,!1,{fileName:\"/Users/andreasthomas/github/chronark/chronark.com/content/projects/_mdx_bundler_entry_point-93a1e3d2-f694-441c-8926-7ce5fc1adfb7.mdx\",lineNumber:23,columnNumber:20},this),(0,n.jsxDEV)(e.span,{style:{color:\"#B392F0\"},children:\"log\"},void 0,!1,{fileName:\"/Users/andreasthomas/github/chronark/chronark.com/content/projects/_mdx_bundler_entry_point-93a1e3d2-f694-441c-8926-7ce5fc1adfb7.mdx\",lineNumber:23,columnNumber:64},this),(0,n.jsxDEV)(e.span,{style:{color:\"#E1E4E8\"},children:\"(data)\"},void 0,!1,{fileName:\"/Users/andreasthomas/github/chronark/chronark.com/content/projects/_mdx_bundler_entry_point-93a1e3d2-f694-441c-8926-7ce5fc1adfb7.mdx\",lineNumber:23,columnNumber:103},this)]},void 0,!0,{fileName:\"/Users/andreasthomas/github/chronark/chronark.com/content/projects/_mdx_bundler_entry_point-93a1e3d2-f694-441c-8926-7ce5fc1adfb7.mdx\",lineNumber:23,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-93a1e3d2-f694-441c-8926-7ce5fc1adfb7.mdx\",lineNumber:24,columnNumber:1},this),`\n`,(0,n.jsxDEV)(e.span,{className:\"line\",children:(0,n.jsxDEV)(e.span,{style:{color:\"#6A737D\"},children:\"// hash\"},void 0,!1,{fileName:\"/Users/andreasthomas/github/chronark/chronark.com/content/projects/_mdx_bundler_entry_point-93a1e3d2-f694-441c-8926-7ce5fc1adfb7.mdx\",lineNumber:25,columnNumber:20},this)},void 0,!1,{fileName:\"/Users/andreasthomas/github/chronark/chronark.com/content/projects/_mdx_bundler_entry_point-93a1e3d2-f694-441c-8926-7ce5fc1adfb7.mdx\",lineNumber:25,columnNumber:1},this),`\n`,(0,n.jsxDEV)(e.span,{className:\"line\",children:[(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-93a1e3d2-f694-441c-8926-7ce5fc1adfb7.mdx\",lineNumber:26,columnNumber:20},this),(0,n.jsxDEV)(e.span,{style:{color:\"#E1E4E8\"},children:\" redis.\"},void 0,!1,{fileName:\"/Users/andreasthomas/github/chronark/chronark.com/content/projects/_mdx_bundler_entry_point-93a1e3d2-f694-441c-8926-7ce5fc1adfb7.mdx\",lineNumber:26,columnNumber:61},this),(0,n.jsxDEV)(e.span,{style:{color:\"#B392F0\"},children:\"hset\"},void 0,!1,{fileName:\"/Users/andreasthomas/github/chronark/chronark.com/content/projects/_mdx_bundler_entry_point-93a1e3d2-f694-441c-8926-7ce5fc1adfb7.mdx\",lineNumber:26,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-93a1e3d2-f694-441c-8926-7ce5fc1adfb7.mdx\",lineNumber:26,columnNumber:144},this),(0,n.jsxDEV)(e.span,{style:{color:\"#9ECBFF\"},children:\"'people'\"},void 0,!1,{fileName:\"/Users/andreasthomas/github/chronark/chronark.com/content/projects/_mdx_bundler_entry_point-93a1e3d2-f694-441c-8926-7ce5fc1adfb7.mdx\",lineNumber:26,columnNumber:181},this),(0,n.jsxDEV)(e.span,{style:{color:\"#E1E4E8\"},children:\", {name: \"},void 0,!1,{fileName:\"/Users/andreasthomas/github/chronark/chronark.com/content/projects/_mdx_bundler_entry_point-93a1e3d2-f694-441c-8926-7ce5fc1adfb7.mdx\",lineNumber:26,columnNumber:233},this),(0,n.jsxDEV)(e.span,{style:{color:\"#9ECBFF\"},children:\"'joe'\"},void 0,!1,{fileName:\"/Users/andreasthomas/github/chronark/chronark.com/content/projects/_mdx_bundler_entry_point-93a1e3d2-f694-441c-8926-7ce5fc1adfb7.mdx\",lineNumber:26,columnNumber:278},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-93a1e3d2-f694-441c-8926-7ce5fc1adfb7.mdx\",lineNumber:26,columnNumber:327},this)]},void 0,!0,{fileName:\"/Users/andreasthomas/github/chronark/chronark.com/content/projects/_mdx_bundler_entry_point-93a1e3d2-f694-441c-8926-7ce5fc1adfb7.mdx\",lineNumber:26,columnNumber:1},this),`\n`,(0,n.jsxDEV)(e.span,{className:\"line\",children:[(0,n.jsxDEV)(e.span,{style:{color:\"#E1E4E8\"},children:\"data \"},void 0,!1,{fileName:\"/Users/andreasthomas/github/chronark/chronark.com/content/projects/_mdx_bundler_entry_point-93a1e3d2-f694-441c-8926-7ce5fc1adfb7.mdx\",lineNumber:27,columnNumber:20},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-93a1e3d2-f694-441c-8926-7ce5fc1adfb7.mdx\",lineNumber:27,columnNumber:61},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-93a1e3d2-f694-441c-8926-7ce5fc1adfb7.mdx\",lineNumber:27,columnNumber:98},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-93a1e3d2-f694-441c-8926-7ce5fc1adfb7.mdx\",lineNumber:27,columnNumber:135},this),(0,n.jsxDEV)(e.span,{style:{color:\"#E1E4E8\"},children:\" redis.\"},void 0,!1,{fileName:\"/Users/andreasthomas/github/chronark/chronark.com/content/projects/_mdx_bundler_entry_point-93a1e3d2-f694-441c-8926-7ce5fc1adfb7.mdx\",lineNumber:27,columnNumber:176},this),(0,n.jsxDEV)(e.span,{style:{color:\"#B392F0\"},children:\"hget\"},void 0,!1,{fileName:\"/Users/andreasthomas/github/chronark/chronark.com/content/projects/_mdx_bundler_entry_point-93a1e3d2-f694-441c-8926-7ce5fc1adfb7.mdx\",lineNumber:27,columnNumber:219},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-93a1e3d2-f694-441c-8926-7ce5fc1adfb7.mdx\",lineNumber:27,columnNumber:259},this),(0,n.jsxDEV)(e.span,{style:{color:\"#9ECBFF\"},children:\"'people'\"},void 0,!1,{fileName:\"/Users/andreasthomas/github/chronark/chronark.com/content/projects/_mdx_bundler_entry_point-93a1e3d2-f694-441c-8926-7ce5fc1adfb7.mdx\",lineNumber:27,columnNumber:296},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-93a1e3d2-f694-441c-8926-7ce5fc1adfb7.mdx\",lineNumber:27,columnNumber:348},this),(0,n.jsxDEV)(e.span,{style:{color:\"#9ECBFF\"},children:\"'name'\"},void 0,!1,{fileName:\"/Users/andreasthomas/github/chronark/chronark.com/content/projects/_mdx_bundler_entry_point-93a1e3d2-f694-441c-8926-7ce5fc1adfb7.mdx\",lineNumber:27,columnNumber:386},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-93a1e3d2-f694-441c-8926-7ce5fc1adfb7.mdx\",lineNumber:27,columnNumber:436},this)]},void 0,!0,{fileName:\"/Users/andreasthomas/github/chronark/chronark.com/content/projects/_mdx_bundler_entry_point-93a1e3d2-f694-441c-8926-7ce5fc1adfb7.mdx\",lineNumber:27,columnNumber:1},this),`\n`,(0,n.jsxDEV)(e.span,{className:\"line\",children:[(0,n.jsxDEV)(e.span,{style:{color:\"#E1E4E8\"},children:\"console.\"},void 0,!1,{fileName:\"/Users/andreasthomas/github/chronark/chronark.com/content/projects/_mdx_bundler_entry_point-93a1e3d2-f694-441c-8926-7ce5fc1adfb7.mdx\",lineNumber:28,columnNumber:20},this),(0,n.jsxDEV)(e.span,{style:{color:\"#B392F0\"},children:\"log\"},void 0,!1,{fileName:\"/Users/andreasthomas/github/chronark/chronark.com/content/projects/_mdx_bundler_entry_point-93a1e3d2-f694-441c-8926-7ce5fc1adfb7.mdx\",lineNumber:28,columnNumber:64},this),(0,n.jsxDEV)(e.span,{style:{color:\"#E1E4E8\"},children:\"(data)\"},void 0,!1,{fileName:\"/Users/andreasthomas/github/chronark/chronark.com/content/projects/_mdx_bundler_entry_point-93a1e3d2-f694-441c-8926-7ce5fc1adfb7.mdx\",lineNumber:28,columnNumber:103},this)]},void 0,!0,{fileName:\"/Users/andreasthomas/github/chronark/chronark.com/content/projects/_mdx_bundler_entry_point-93a1e3d2-f694-441c-8926-7ce5fc1adfb7.mdx\",lineNumber:28,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-93a1e3d2-f694-441c-8926-7ce5fc1adfb7.mdx\",lineNumber:29,columnNumber:1},this),`\n`,(0,n.jsxDEV)(e.span,{className:\"line\",children:(0,n.jsxDEV)(e.span,{style:{color:\"#6A737D\"},children:\"// sets\"},void 0,!1,{fileName:\"/Users/andreasthomas/github/chronark/chronark.com/content/projects/_mdx_bundler_entry_point-93a1e3d2-f694-441c-8926-7ce5fc1adfb7.mdx\",lineNumber:30,columnNumber:20},this)},void 0,!1,{fileName:\"/Users/andreasthomas/github/chronark/chronark.com/content/projects/_mdx_bundler_entry_point-93a1e3d2-f694-441c-8926-7ce5fc1adfb7.mdx\",lineNumber:30,columnNumber:1},this),`\n`,(0,n.jsxDEV)(e.span,{className:\"line\",children:[(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-93a1e3d2-f694-441c-8926-7ce5fc1adfb7.mdx\",lineNumber:31,columnNumber:20},this),(0,n.jsxDEV)(e.span,{style:{color:\"#E1E4E8\"},children:\" redis.\"},void 0,!1,{fileName:\"/Users/andreasthomas/github/chronark/chronark.com/content/projects/_mdx_bundler_entry_point-93a1e3d2-f694-441c-8926-7ce5fc1adfb7.mdx\",lineNumber:31,columnNumber:61},this),(0,n.jsxDEV)(e.span,{style:{color:\"#B392F0\"},children:\"sadd\"},void 0,!1,{fileName:\"/Users/andreasthomas/github/chronark/chronark.com/content/projects/_mdx_bundler_entry_point-93a1e3d2-f694-441c-8926-7ce5fc1adfb7.mdx\",lineNumber:31,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-93a1e3d2-f694-441c-8926-7ce5fc1adfb7.mdx\",lineNumber:31,columnNumber:144},this),(0,n.jsxDEV)(e.span,{style:{color:\"#9ECBFF\"},children:\"'animals'\"},void 0,!1,{fileName:\"/Users/andreasthomas/github/chronark/chronark.com/content/projects/_mdx_bundler_entry_point-93a1e3d2-f694-441c-8926-7ce5fc1adfb7.mdx\",lineNumber:31,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-93a1e3d2-f694-441c-8926-7ce5fc1adfb7.mdx\",lineNumber:31,columnNumber:234},this),(0,n.jsxDEV)(e.span,{style:{color:\"#9ECBFF\"},children:\"'cat'\"},void 0,!1,{fileName:\"/Users/andreasthomas/github/chronark/chronark.com/content/projects/_mdx_bundler_entry_point-93a1e3d2-f694-441c-8926-7ce5fc1adfb7.mdx\",lineNumber:31,columnNumber:272},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-93a1e3d2-f694-441c-8926-7ce5fc1adfb7.mdx\",lineNumber:31,columnNumber:321},this)]},void 0,!0,{fileName:\"/Users/andreasthomas/github/chronark/chronark.com/content/projects/_mdx_bundler_entry_point-93a1e3d2-f694-441c-8926-7ce5fc1adfb7.mdx\",lineNumber:31,columnNumber:1},this),`\n`,(0,n.jsxDEV)(e.span,{className:\"line\",children:[(0,n.jsxDEV)(e.span,{style:{color:\"#E1E4E8\"},children:\"data \"},void 0,!1,{fileName:\"/Users/andreasthomas/github/chronark/chronark.com/content/projects/_mdx_bundler_entry_point-93a1e3d2-f694-441c-8926-7ce5fc1adfb7.mdx\",lineNumber:32,columnNumber:20},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-93a1e3d2-f694-441c-8926-7ce5fc1adfb7.mdx\",lineNumber:32,columnNumber:62},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-93a1e3d2-f694-441c-8926-7ce5fc1adfb7.mdx\",lineNumber:32,columnNumber:99},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-93a1e3d2-f694-441c-8926-7ce5fc1adfb7.mdx\",lineNumber:32,columnNumber:136},this),(0,n.jsxDEV)(e.span,{style:{color:\"#E1E4E8\"},children:\" redis.\"},void 0,!1,{fileName:\"/Users/andreasthomas/github/chronark/chronark.com/content/projects/_mdx_bundler_entry_point-93a1e3d2-f694-441c-8926-7ce5fc1adfb7.mdx\",lineNumber:32,columnNumber:177},this),(0,n.jsxDEV)(e.span,{style:{color:\"#B392F0\"},children:\"spop\"},void 0,!1,{fileName:\"/Users/andreasthomas/github/chronark/chronark.com/content/projects/_mdx_bundler_entry_point-93a1e3d2-f694-441c-8926-7ce5fc1adfb7.mdx\",lineNumber:32,columnNumber:220},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-93a1e3d2-f694-441c-8926-7ce5fc1adfb7.mdx\",lineNumber:32,columnNumber:260},this),(0,n.jsxDEV)(e.span,{style:{color:\"#9ECBFF\"},children:\"'animals'\"},void 0,!1,{fileName:\"/Users/andreasthomas/github/chronark/chronark.com/content/projects/_mdx_bundler_entry_point-93a1e3d2-f694-441c-8926-7ce5fc1adfb7.mdx\",lineNumber:32,columnNumber:297},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-93a1e3d2-f694-441c-8926-7ce5fc1adfb7.mdx\",lineNumber:32,columnNumber:350},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-93a1e3d2-f694-441c-8926-7ce5fc1adfb7.mdx\",lineNumber:32,columnNumber:388},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-93a1e3d2-f694-441c-8926-7ce5fc1adfb7.mdx\",lineNumber:32,columnNumber:425},this)]},void 0,!0,{fileName:\"/Users/andreasthomas/github/chronark/chronark.com/content/projects/_mdx_bundler_entry_point-93a1e3d2-f694-441c-8926-7ce5fc1adfb7.mdx\",lineNumber:32,columnNumber:1},this),`\n`,(0,n.jsxDEV)(e.span,{className:\"line\",children:[(0,n.jsxDEV)(e.span,{style:{color:\"#E1E4E8\"},children:\"console.\"},void 0,!1,{fileName:\"/Users/andreasthomas/github/chronark/chronark.com/content/projects/_mdx_bundler_entry_point-93a1e3d2-f694-441c-8926-7ce5fc1adfb7.mdx\",lineNumber:33,columnNumber:20},this),(0,n.jsxDEV)(e.span,{style:{color:\"#B392F0\"},children:\"log\"},void 0,!1,{fileName:\"/Users/andreasthomas/github/chronark/chronark.com/content/projects/_mdx_bundler_entry_point-93a1e3d2-f694-441c-8926-7ce5fc1adfb7.mdx\",lineNumber:33,columnNumber:64},this),(0,n.jsxDEV)(e.span,{style:{color:\"#E1E4E8\"},children:\"(data)\"},void 0,!1,{fileName:\"/Users/andreasthomas/github/chronark/chronark.com/content/projects/_mdx_bundler_entry_point-93a1e3d2-f694-441c-8926-7ce5fc1adfb7.mdx\",lineNumber:33,columnNumber:103},this)]},void 0,!0,{fileName:\"/Users/andreasthomas/github/chronark/chronark.com/content/projects/_mdx_bundler_entry_point-93a1e3d2-f694-441c-8926-7ce5fc1adfb7.mdx\",lineNumber:33,columnNumber:1},this)]},void 0,!0,{fileName:\"/Users/andreasthomas/github/chronark/chronark.com/content/projects/_mdx_bundler_entry_point-93a1e3d2-f694-441c-8926-7ce5fc1adfb7.mdx\",lineNumber:1,columnNumber:79},this)},void 0,!1,{fileName:\"/Users/andreasthomas/github/chronark/chronark.com/content/projects/_mdx_bundler_entry_point-93a1e3d2-f694-441c-8926-7ce5fc1adfb7.mdx\",lineNumber:1,columnNumber:1},this)},void 0,!1,{fileName:\"/Users/andreasthomas/github/chronark/chronark.com/content/projects/_mdx_bundler_entry_point-93a1e3d2-f694-441c-8926-7ce5fc1adfb7.mdx\",lineNumber:53,columnNumber:1},this)]},void 0,!0,{fileName:\"/Users/andreasthomas/github/chronark/chronark.com/content/projects/_mdx_bundler_entry_point-93a1e3d2-f694-441c-8926-7ce5fc1adfb7.mdx\",lineNumber:1,columnNumber:1},this)}function Nn(l={}){let{wrapper:e}=l.components||{};return e?(0,n.jsxDEV)(e,Object.assign({},l,{children:(0,n.jsxDEV)(Fe,l,void 0,!1,{fileName:\"/Users/andreasthomas/github/chronark/chronark.com/content/projects/_mdx_bundler_entry_point-93a1e3d2-f694-441c-8926-7ce5fc1adfb7.mdx\"},this)}),void 0,!1,{fileName:\"/Users/andreasthomas/github/chronark/chronark.com/content/projects/_mdx_bundler_entry_point-93a1e3d2-f694-441c-8926-7ce5fc1adfb7.mdx\"},this):Fe(l)}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;" + "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: ,\n 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=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(\"\")&&(f=f.replace(\"\",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\",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{\"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": { @@ -322,8 +322,8 @@ "description": "A library to record and analyse web page traffic and user behaviour", "repository": "upstash/web-analytics", "body": { - "raw": "\nTODO:", - "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=(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 lr(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(fr(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\"),w=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=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(\"\")&&(p=p.replace(\"\",e.displayName)),typeof e==\"function\"&&j.set(e,p),p}while(l>=1&&f>=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 w: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={},le=_.ReactDebugCurrentFrame;function D(e){if(e){var r=e._owner,t=x(e.type,e._source,r?r.type:null);le.setExtraStackFrame(t)}else le.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(l){a=l}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 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,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=h(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',h(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: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 l=e.defaultProps;for(u in l)o[u]===void 0&&(o[u]=l[u])}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 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\",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,u);if(f==null)return f;if(o){var p=r.children;if(p!==void 0)if(n)if(V(p)){for(var T=0;T{\"use strict\";Oe.exports=Ce()});var Er={};vr(Er,{default:()=>mr,frontmatter:()=>hr});var F=pr(we()),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:\"TODO:\"},void 0,!1,{fileName:\"/Users/andreasthomas/github/chronark/chronark.com/content/projects/_mdx_bundler_entry_point-6692e122-da3d-46ed-b1b6-14cd52b3c074.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-6692e122-da3d-46ed-b1b6-14cd52b3c074.mdx\"},this)}),void 0,!1,{fileName:\"/Users/andreasthomas/github/chronark/chronark.com/content/projects/_mdx_bundler_entry_point-6692e122-da3d-46ed-b1b6-14cd52b3c074.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;" + "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=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(\"\")&&(p=p.replace(\"\",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\",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{\"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": { diff --git a/.contentlayer/generated/Project/_index.mjs b/.contentlayer/generated/Project/_index.mjs index 2cca3fe..6ffbf81 100644 --- a/.contentlayer/generated/Project/_index.mjs +++ b/.contentlayer/generated/Project/_index.mjs @@ -1,19 +1,65 @@ // NOTE This file is auto-generated by Contentlayer -import projects__accessMdx from './projects__access.mdx.json' assert { type: 'json' } -import projects__envshareMdx from './projects__envshare.mdx.json' assert { type: 'json' } -import projects__planetfallMdx from './projects__planetfall.mdx.json' assert { type: 'json' } -import projects__qstashMdx from './projects__qstash.mdx.json' assert { type: 'json' } -import projects__terraformProviderVercelMdx from './projects__terraform-provider-vercel.mdx.json' assert { type: 'json' } -import projects__upstashAuthAnalyticsMdx from './projects__upstash-auth-analytics.mdx.json' assert { type: 'json' } -import projects__upstashCliMdx from './projects__upstash-cli.mdx.json' assert { type: 'json' } -import projects__upstashCoreAnalyticsMdx from './projects__upstash-core-analytics.mdx.json' assert { type: 'json' } -import projects__upstashEdgeFlagsMdx from './projects__upstash-edge-flags.mdx.json' assert { type: 'json' } -import projects__upstashKafkaMdx from './projects__upstash-kafka.mdx.json' assert { type: 'json' } -import projects__upstashQstashSdkMdx from './projects__upstash-qstash-sdk.mdx.json' assert { type: 'json' } -import projects__upstashRatelimitMdx from './projects__upstash-ratelimit.mdx.json' assert { type: 'json' } -import projects__upstashReactUiMdx from './projects__upstash-react-ui.mdx.json' assert { type: 'json' } -import projects__upstashRedisMdx from './projects__upstash-redis.mdx.json' assert { type: 'json' } -import projects__upstashWebAnalyticsMdx from './projects__upstash-web-analytics.mdx.json' assert { type: 'json' } +import projects__accessMdx from "./projects__access.mdx.json" assert { + type: "json", +}; +import projects__envshareMdx from "./projects__envshare.mdx.json" assert { + type: "json", +}; +import projects__planetfallMdx from "./projects__planetfall.mdx.json" assert { + type: "json", +}; +import projects__qstashMdx from "./projects__qstash.mdx.json" assert { + type: "json", +}; +import projects__terraformProviderVercelMdx from "./projects__terraform-provider-vercel.mdx.json" assert { + type: "json", +}; +import projects__upstashAuthAnalyticsMdx from "./projects__upstash-auth-analytics.mdx.json" assert { + type: "json", +}; +import projects__upstashCliMdx from "./projects__upstash-cli.mdx.json" assert { + type: "json", +}; +import projects__upstashCoreAnalyticsMdx from "./projects__upstash-core-analytics.mdx.json" assert { + type: "json", +}; +import projects__upstashEdgeFlagsMdx from "./projects__upstash-edge-flags.mdx.json" assert { + type: "json", +}; +import projects__upstashKafkaMdx from "./projects__upstash-kafka.mdx.json" assert { + type: "json", +}; +import projects__upstashQstashSdkMdx from "./projects__upstash-qstash-sdk.mdx.json" assert { + type: "json", +}; +import projects__upstashRatelimitMdx from "./projects__upstash-ratelimit.mdx.json" assert { + type: "json", +}; +import projects__upstashReactUiMdx from "./projects__upstash-react-ui.mdx.json" assert { + type: "json", +}; +import projects__upstashRedisMdx from "./projects__upstash-redis.mdx.json" assert { + type: "json", +}; +import projects__upstashWebAnalyticsMdx from "./projects__upstash-web-analytics.mdx.json" assert { + type: "json", +}; -export const allProjects = [projects__accessMdx, projects__envshareMdx, projects__planetfallMdx, projects__qstashMdx, projects__terraformProviderVercelMdx, projects__upstashAuthAnalyticsMdx, projects__upstashCliMdx, projects__upstashCoreAnalyticsMdx, projects__upstashEdgeFlagsMdx, projects__upstashKafkaMdx, projects__upstashQstashSdkMdx, projects__upstashRatelimitMdx, projects__upstashReactUiMdx, projects__upstashRedisMdx, projects__upstashWebAnalyticsMdx] +export const allProjects = [ + projects__accessMdx, + projects__envshareMdx, + projects__planetfallMdx, + projects__qstashMdx, + projects__terraformProviderVercelMdx, + projects__upstashAuthAnalyticsMdx, + projects__upstashCliMdx, + projects__upstashCoreAnalyticsMdx, + projects__upstashEdgeFlagsMdx, + projects__upstashKafkaMdx, + projects__upstashQstashSdkMdx, + projects__upstashRatelimitMdx, + projects__upstashReactUiMdx, + projects__upstashRedisMdx, + projects__upstashWebAnalyticsMdx, +]; diff --git a/.contentlayer/generated/Project/projects__upstash-cli.mdx.json b/.contentlayer/generated/Project/projects__upstash-cli.mdx.json index 5ae128e..a642135 100644 --- a/.contentlayer/generated/Project/projects__upstash-cli.mdx.json +++ b/.contentlayer/generated/Project/projects__upstash-cli.mdx.json @@ -6,8 +6,8 @@ "url": "https://upstash.com/cli", "repository": "upstash/cli", "body": { - "raw": "\nTODO:", - "code": "var Component=(()=>{var sr=Object.create;var F=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)F(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&&F(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?F(h,\"default\",{value:s,enumerable:!0}):h,s)),hr=s=>_e(F({},\"__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\"),K=Symbol.for(\"react.profiler\"),X=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=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(\"\")&&(p=p.replace(\"\",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,Ke={key:!0,ref:!0,__self:!0,__source:!0},ve,pe,U;U={};function Xe(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),Xe(r)&&(v=r.ref,Je(r,i));for(u in r)k.call(r,u)&&!Ke.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\",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{\"use strict\";Oe.exports=Ce()});var Er={};vr(Er,{default:()=>mr,frontmatter:()=>br});var A=pr(we()),br={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 Pe(s){let f=Object.assign({p:\"p\"},s.components);return(0,A.jsxDEV)(f.p,{children:\"TODO:\"},void 0,!1,{fileName:\"/Users/andreasthomas/github/chronark/chronark.com/content/projects/_mdx_bundler_entry_point-4eb0fa00-eee7-4578-99c3-55a7c326fffe.mdx\",lineNumber:11,columnNumber:1},this)}function gr(s={}){let{wrapper:f}=s.components||{};return f?(0,A.jsxDEV)(f,Object.assign({},s,{children:(0,A.jsxDEV)(Pe,s,void 0,!1,{fileName:\"/Users/andreasthomas/github/chronark/chronark.com/content/projects/_mdx_bundler_entry_point-4eb0fa00-eee7-4578-99c3-55a7c326fffe.mdx\"},this)}),void 0,!1,{fileName:\"/Users/andreasthomas/github/chronark/chronark.com/content/projects/_mdx_bundler_entry_point-4eb0fa00-eee7-4578-99c3-55a7c326fffe.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;" + "raw": "\n\nManage Upstash resources in your terminal or CI.\n\n![](https://raw.githubusercontent.com/upstash/cli/main/img/banner.svg)\n\n![GitHub release (latest SemVer)](https://img.shields.io/github/v/release/upstash/cli)\n[![Downloads/week](https://img.shields.io/npm/dw/lstr.svg)](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 - 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 - The email you use on upstash\n UPSTASH_API_KEY - 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": { diff --git a/.contentlayer/generated/Project/projects__upstash-core-analytics.mdx.json b/.contentlayer/generated/Project/projects__upstash-core-analytics.mdx.json index ae3c0d1..acad403 100644 --- a/.contentlayer/generated/Project/projects__upstash-core-analytics.mdx.json +++ b/.contentlayer/generated/Project/projects__upstash-core-analytics.mdx.json @@ -6,8 +6,8 @@ "url": "https://console.upstash.com/ratelimit", "repository": "upstash/core-analytics", "body": { - "raw": "\nTODO:", - "code": "var Component=(()=>{var sr=Object.create;var F=Object.defineProperty;var lr=Object.getOwnPropertyDescriptor;var cr=Object.getOwnPropertyNames;var fr=Object.getPrototypeOf,dr=Object.prototype.hasOwnProperty;var q=(s,l)=>()=>(l||s((l={exports:{}}).exports,l),l.exports),vr=(s,l)=>{for(var b in l)F(s,b,{get:l[b],enumerable:!0})},_e=(s,l,b,E)=>{if(l&&typeof l==\"object\"||typeof l==\"function\")for(let m of cr(l))!dr.call(s,m)&&m!==b&&F(s,m,{get:()=>l[m],enumerable:!(E=lr(l,m))||E.enumerable});return s};var pr=(s,l,b)=>(b=s!=null?sr(fr(s)):{},_e(l||!s||!s.__esModule?F(b,\"default\",{value:s,enumerable:!0}):b,s)),br=s=>_e(F({},\"__esModule\",{value:!0}),s);var Te=q((_r,Re)=>{Re.exports=React});var Ce=q(z=>{\"use strict\";(function(){\"use strict\";var s=Te(),l=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\"),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=1&&f>=0&&a[c]!==v[f];)f--;for(;c>=1&&f>=0;c--,f--)if(a[c]!==v[f]){if(c!==1||f!==1)do if(c--,f--,f<0||a[c]!==v[f]){var p=`\n`+a[c].replace(\" at new \",\" at \");return e.displayName&&p.includes(\"\")&&(p=p.replace(\"\",e.displayName)),typeof e==\"function\"&&j.set(e,p),p}while(c>=1&&f>=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,le={},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 le)&&(le[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 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,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=h(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',h(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: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),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 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 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===l}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\",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 f=rr(e,r,t,i,u);if(f==null)return f;if(o){var p=r.children;if(p!==void 0)if(n)if(V(p)){for(var T=0;T{\"use strict\";Oe.exports=Ce()});var Er={};vr(Er,{default:()=>mr,frontmatter:()=>hr});var A=pr(we()),hr={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 Pe(s){let l=Object.assign({p:\"p\"},s.components);return(0,A.jsxDEV)(l.p,{children:\"TODO:\"},void 0,!1,{fileName:\"/Users/andreasthomas/github/chronark/chronark.com/content/projects/_mdx_bundler_entry_point-19540f58-fb17-4699-b4c6-0cb9420afdb1.mdx\",lineNumber:11,columnNumber:1},this)}function gr(s={}){let{wrapper:l}=s.components||{};return l?(0,A.jsxDEV)(l,Object.assign({},s,{children:(0,A.jsxDEV)(Pe,s,void 0,!1,{fileName:\"/Users/andreasthomas/github/chronark/chronark.com/content/projects/_mdx_bundler_entry_point-19540f58-fb17-4699-b4c6-0cb9420afdb1.mdx\"},this)}),void 0,!1,{fileName:\"/Users/andreasthomas/github/chronark/chronark.com/content/projects/_mdx_bundler_entry_point-19540f58-fb17-4699-b4c6-0cb9420afdb1.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;" + "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=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(\"\")&&(b=b.replace(\"\",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\",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{\"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": { diff --git a/.contentlayer/generated/Project/projects__upstash-edge-flags.mdx.json b/.contentlayer/generated/Project/projects__upstash-edge-flags.mdx.json index 570c54f..11d08e0 100644 --- a/.contentlayer/generated/Project/projects__upstash-edge-flags.mdx.json +++ b/.contentlayer/generated/Project/projects__upstash-edge-flags.mdx.json @@ -6,8 +6,8 @@ "url": "https://upstash.com/edge-flags", "repository": "upstash/edge-flags", "body": { - "raw": "\nTODO:", - "code": "var Component=(()=>{var sr=Object.create;var F=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 b in f)F(s,b,{get:f[b],enumerable:!0})},_e=(s,f,b,E)=>{if(f&&typeof f==\"object\"||typeof f==\"function\")for(let m of cr(f))!dr.call(s,m)&&m!==b&&F(s,m,{get:()=>f[m],enumerable:!(E=fr(f,m))||E.enumerable});return s};var pr=(s,f,b)=>(b=s!=null?sr(lr(s)):{},_e(f||!s||!s.__esModule?F(b,\"default\",{value:s,enumerable:!0}):b,s)),br=s=>_e(F({},\"__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\"),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\"),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=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(\"\")&&(p=p.replace(\"\",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=g(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',g(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,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===f}function ge(){{if(L.current){var e=g(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 he={};function nr(e){{var r=ge();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(he[t])return;he[t]=!0;var n=\"\";e&&e._owner&&e._owner!==L.current&&(n=\" It was passed a child from \"+g(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\",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{\"use strict\";Oe.exports=Ce()});var Er={};vr(Er,{default:()=>mr,frontmatter:()=>gr});var A=pr(we()),gr={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 Pe(s){let f=Object.assign({p:\"p\"},s.components);return(0,A.jsxDEV)(f.p,{children:\"TODO:\"},void 0,!1,{fileName:\"/Users/andreasthomas/github/chronark/chronark.com/content/projects/_mdx_bundler_entry_point-55f51b83-ce3b-423c-bad6-92589929a727.mdx\",lineNumber:11,columnNumber:1},this)}function hr(s={}){let{wrapper:f}=s.components||{};return f?(0,A.jsxDEV)(f,Object.assign({},s,{children:(0,A.jsxDEV)(Pe,s,void 0,!1,{fileName:\"/Users/andreasthomas/github/chronark/chronark.com/content/projects/_mdx_bundler_entry_point-55f51b83-ce3b-423c-bad6-92589929a727.mdx\"},this)}),void 0,!1,{fileName:\"/Users/andreasthomas/github/chronark/chronark.com/content/projects/_mdx_bundler_entry_point-55f51b83-ce3b-423c-bad6-92589929a727.mdx\"},this):Pe(s)}var mr=hr;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;" + "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": { diff --git a/.contentlayer/generated/Project/projects__upstash-qstash-sdk.mdx.json b/.contentlayer/generated/Project/projects__upstash-qstash-sdk.mdx.json index 465b54b..d20048d 100644 --- a/.contentlayer/generated/Project/projects__upstash-qstash-sdk.mdx.json +++ b/.contentlayer/generated/Project/projects__upstash-qstash-sdk.mdx.json @@ -6,8 +6,8 @@ "url": "https://upstash.com/qstash", "repository": "upstash/sdk-qstash-ts", "body": { - "raw": "\nTODO:", - "code": "var Component=(()=>{var sr=Object.create;var F=Object.defineProperty;var cr=Object.getOwnPropertyDescriptor;var fr=Object.getOwnPropertyNames;var lr=Object.getPrototypeOf,dr=Object.prototype.hasOwnProperty;var G=(s,c)=>()=>(c||s((c={exports:{}}).exports,c),c.exports),vr=(s,c)=>{for(var h in c)F(s,h,{get:c[h],enumerable:!0})},_e=(s,c,h,E)=>{if(c&&typeof c==\"object\"||typeof c==\"function\")for(let m of fr(c))!dr.call(s,m)&&m!==h&&F(s,m,{get:()=>c[m],enumerable:!(E=cr(c,m))||E.enumerable});return s};var pr=(s,c,h)=>(h=s!=null?sr(lr(s)):{},_e(c||!s||!s.__esModule?F(h,\"default\",{value:s,enumerable:!0}):h,s)),hr=s=>_e(F({},\"__esModule\",{value:!0}),s);var Te=G((_r,Re)=>{Re.exports=React});var Ce=G(z=>{\"use strict\";(function(){\"use strict\";var s=Te(),c=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=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(\"\")&&(p=p.replace(\"\",e.displayName)),typeof e==\"function\"&&j.set(e,p),p}while(f>=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,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 qe(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 Be=Array.isArray;function V(e){return Be(e)}function Ge(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.\",Ge(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 Qe(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 Ze(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&&Qe(o,l),v&&Ze(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 q;q=!1;function B(e){return typeof e==\"object\"&&e!==null&&e.$$typeof===c}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\",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{\"use strict\";Oe.exports=Ce()});var Er={};vr(Er,{default:()=>mr,frontmatter:()=>br});var A=pr(we()),br={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 Pe(s){let c=Object.assign({p:\"p\"},s.components);return(0,A.jsxDEV)(c.p,{children:\"TODO:\"},void 0,!1,{fileName:\"/Users/andreasthomas/github/chronark/chronark.com/content/projects/_mdx_bundler_entry_point-2f5760c4-1322-4e46-9d1d-1912b9ec4d97.mdx\",lineNumber:10,columnNumber:1},this)}function gr(s={}){let{wrapper:c}=s.components||{};return c?(0,A.jsxDEV)(c,Object.assign({},s,{children:(0,A.jsxDEV)(Pe,s,void 0,!1,{fileName:\"/Users/andreasthomas/github/chronark/chronark.com/content/projects/_mdx_bundler_entry_point-2f5760c4-1322-4e46-9d1d-1912b9ec4d97.mdx\"},this)}),void 0,!1,{fileName:\"/Users/andreasthomas/github/chronark/chronark.com/content/projects/_mdx_bundler_entry_point-2f5760c4-1322-4e46-9d1d-1912b9ec4d97.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;" + "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": { diff --git a/.contentlayer/generated/Project/projects__upstash-ratelimit.mdx.json b/.contentlayer/generated/Project/projects__upstash-ratelimit.mdx.json index 085a3a4..a5f2367 100644 --- a/.contentlayer/generated/Project/projects__upstash-ratelimit.mdx.json +++ b/.contentlayer/generated/Project/projects__upstash-ratelimit.mdx.json @@ -6,8 +6,8 @@ "url": "https://upstash.com/ratelimit", "repository": "upstash/ratelimit", "body": { - "raw": "\nTODO:", - "code": "var Component=(()=>{var sr=Object.create;var F=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)F(s,h,{get:l[h],enumerable:!0})},_e=(s,l,h,E)=>{if(l&&typeof l==\"object\"||typeof l==\"function\")for(let m of fr(l))!dr.call(s,m)&&m!==h&&F(s,m,{get:()=>l[m],enumerable:!(E=lr(l,m))||E.enumerable});return s};var pr=(s,l,h)=>(h=s!=null?sr(cr(s)):{},_e(l||!s||!s.__esModule?F(h,\"default\",{value:s,enumerable:!0}):h,s)),hr=s=>_e(F({},\"__esModule\",{value:!0}),s);var Te=q((_r,Re)=>{Re.exports=React});var Ce=q(z=>{\"use strict\";(function(){\"use strict\";var s=Te(),l=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=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(\"\")&&(p=p.replace(\"\",e.displayName)),typeof e==\"function\"&&j.set(e,p),p}while(f>=1&&c>=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,le={},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 le)&&(le[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 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 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: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),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 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,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===l}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\",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{\"use strict\";Oe.exports=Ce()});var Er={};vr(Er,{default:()=>mr,frontmatter:()=>br});var A=pr(we()),br={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 Pe(s){let l=Object.assign({p:\"p\"},s.components);return(0,A.jsxDEV)(l.p,{children:\"TODO:\"},void 0,!1,{fileName:\"/Users/andreasthomas/github/chronark/chronark.com/content/projects/_mdx_bundler_entry_point-37fe23d1-747d-41e2-83b3-756ee13806a3.mdx\",lineNumber:11,columnNumber:1},this)}function gr(s={}){let{wrapper:l}=s.components||{};return l?(0,A.jsxDEV)(l,Object.assign({},s,{children:(0,A.jsxDEV)(Pe,s,void 0,!1,{fileName:\"/Users/andreasthomas/github/chronark/chronark.com/content/projects/_mdx_bundler_entry_point-37fe23d1-747d-41e2-83b3-756ee13806a3.mdx\"},this)}),void 0,!1,{fileName:\"/Users/andreasthomas/github/chronark/chronark.com/content/projects/_mdx_bundler_entry_point-37fe23d1-747d-41e2-83b3-756ee13806a3.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;" + "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=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(\"\")&&(b=b.replace(\"\",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\",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{\"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": { diff --git a/.contentlayer/generated/Project/projects__upstash-react-ui.mdx.json b/.contentlayer/generated/Project/projects__upstash-react-ui.mdx.json index d850f98..5b7dd26 100644 --- a/.contentlayer/generated/Project/projects__upstash-react-ui.mdx.json +++ b/.contentlayer/generated/Project/projects__upstash-react-ui.mdx.json @@ -6,8 +6,8 @@ "url": "https://upstash.com", "repository": "upstash/react-ui", "body": { - "raw": "\nTODO:", - "code": "var Component=(()=>{var sr=Object.create;var F=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)F(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&&F(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?F(b,\"default\",{value:s,enumerable:!0}):b,s)),br=s=>_e(F({},\"__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\"),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=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(\"\")&&(p=p.replace(\"\",e.displayName)),typeof e==\"function\"&&j.set(e,p),p}while(f>=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 Le(e,r,t){return se(e,!1)}function Ue(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,Ue(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 Le(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,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 O=_.ReactCurrentOwner,Xe={key:!0,ref:!0,__self:!0,__source:!0},ve,pe,L;L={};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=h(O.current.type);L[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),L[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,O.current,o)}}var U=_.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(U.current){var e=h(U.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!==U.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\",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{\"use strict\";Oe.exports=Ce()});var Er={};vr(Er,{default:()=>mr,frontmatter:()=>hr});var A=pr(we()),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(s){let c=Object.assign({p:\"p\"},s.components);return(0,A.jsxDEV)(c.p,{children:\"TODO:\"},void 0,!1,{fileName:\"/Users/andreasthomas/github/chronark/chronark.com/content/projects/_mdx_bundler_entry_point-cb7470d6-8beb-40f7-8d67-d853d6fc6345.mdx\",lineNumber:11,columnNumber:1},this)}function gr(s={}){let{wrapper:c}=s.components||{};return c?(0,A.jsxDEV)(c,Object.assign({},s,{children:(0,A.jsxDEV)(Pe,s,void 0,!1,{fileName:\"/Users/andreasthomas/github/chronark/chronark.com/content/projects/_mdx_bundler_entry_point-cb7470d6-8beb-40f7-8d67-d853d6fc6345.mdx\"},this)}),void 0,!1,{fileName:\"/Users/andreasthomas/github/chronark/chronark.com/content/projects/_mdx_bundler_entry_point-cb7470d6-8beb-40f7-8d67-d853d6fc6345.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;" + "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=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(\"\")&&(p=p.replace(\"\",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\",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{\"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": { diff --git a/.contentlayer/generated/Project/projects__upstash-redis.mdx.json b/.contentlayer/generated/Project/projects__upstash-redis.mdx.json index 8deba78..5933cbe 100644 --- a/.contentlayer/generated/Project/projects__upstash-redis.mdx.json +++ b/.contentlayer/generated/Project/projects__upstash-redis.mdx.json @@ -6,8 +6,8 @@ "url": "https://upstash.com/redis", "repository": "upstash/upstash-redis", "body": { - "raw": "\n\n`@upstash/redis` is an HTTP/REST based Redis client for typescript, built on top\nof [Upstash REST API](https://docs.upstash.com/features/restapi).\n\nIt is the only connectionless (HTTP based) Redis client and designed for:\n\n- Serverless functions (AWS Lambda ...)\n- Cloudflare Workers (see\n [the example](https://github.com/upstash/upstash-redis/tree/main/examples/cloudflare-workers))\n- Fastly Compute@Edge (see\n [the example](https://github.com/upstash/upstash-redis/tree/main/examples/fastly))\n- Next.js, Jamstack ...\n- Client side web/mobile applications\n- WebAssembly\n- and other environments where HTTP is preferred over TCP.\n\nSee\n[the list of APIs](https://docs.upstash.com/features/restapi#rest---redis-api-compatibility)\nsupported.\n\n## Quick Start\n\n### Install\n\n#### Node.js\n\n```bash\nnpm install @upstash/redis\n```\n\n#### Deno\n\n```ts\nimport { Redis } from \"https://deno.land/x/upstash_redis/mod.ts\";\n```\n\n### Create database\n\nCreate a new redis database on [upstash](https://console.upstash.com/)\n\n## Basic Usage:\n\n```ts\nimport { Redis } from \"@upstash/redis\"\n\nconst redis = new Redis({\n url: ,\n 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\n// hash\nawait redis.hset('people', {name: 'joe'})\ndata = await redis.hget('people', 'name' )\nconsole.log(data)\n\n// sets\nawait redis.sadd('animals', 'cat')\ndata = await redis.spop('animals', 1)\nconsole.log(data)\n```\n", - "code": "var Component=(()=>{var dn=Object.create;var O=Object.defineProperty;var ln=Object.getOwnPropertyDescriptor;var mn=Object.getOwnPropertyNames;var un=Object.getPrototypeOf,fn=Object.prototype.hasOwnProperty;var q=(l,e)=>()=>(e||l((e={exports:{}}).exports,e),e.exports),hn=(l,e)=>{for(var _ in e)O(l,_,{get:e[_],enumerable:!0})},ye=(l,e,_,x)=>{if(e&&typeof e==\"object\"||typeof e==\"function\")for(let k of mn(e))!fn.call(l,k)&&k!==_&&O(l,k,{get:()=>e[k],enumerable:!(x=ln(e,k))||x.enumerable});return l};var bn=(l,e,_)=>(_=l!=null?dn(un(l)):{},ye(e||!l||!l.__esModule?O(_,\"default\",{value:l,enumerable:!0}):_,l)),_n=l=>ye(O({},\"__esModule\",{value:!0}),l);var Ee=q((gn,ge)=>{ge.exports=React});var je=q(z=>{\"use strict\";(function(){\"use strict\";var l=Ee(),e=Symbol.for(\"react.element\"),_=Symbol.for(\"react.portal\"),x=Symbol.for(\"react.fragment\"),k=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\"),B=Symbol.for(\"react.suspense\"),D=Symbol.for(\"react.suspense_list\"),R=Symbol.for(\"react.memo\"),A=Symbol.for(\"react.lazy\"),Re=Symbol.for(\"react.offscreen\"),J=Symbol.iterator,Ce=\"@@iterator\";function Te(r){if(r===null||typeof r!=\"object\")return null;var a=J&&r[J]||r[Ce];return typeof a==\"function\"?a:null}var g=l.__SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED;function f(r){{for(var a=arguments.length,c=new Array(a>1?a-1:0),t=1;t=1&&u>=0&&o[m]!==h[u];)u--;for(;m>=1&&u>=0;m--,u--)if(o[m]!==h[u]){if(m!==1||u!==1)do if(m--,u--,u<0||o[m]!==h[u]){var b=`\n`+o[m].replace(\" at new \",\" at \");return r.displayName&&b.includes(\"\")&&(b=b.replace(\"\",r.displayName)),typeof r==\"function\"&&T.set(r,b),b}while(m>=1&&u>=0);break}}}finally{W=!1,I.current=i,We(),Error.prepareStackTrace=d}var j=r?r.displayName||r.name:\"\",xe=j?C(j):\"\";return typeof r==\"function\"&&T.set(r,xe),xe}function $e(r,a,c){return de(r,!1)}function Me(r){var a=r.prototype;return!!(a&&a.isReactComponent)}function w(r,a,c){if(r==null)return\"\";if(typeof r==\"function\")return de(r,Me(r));if(typeof r==\"string\")return C(r);switch(r){case B:return C(\"Suspense\");case D:return C(\"SuspenseList\")}if(typeof r==\"object\")switch(r.$$typeof){case F:return $e(r.render);case R:return w(r.type,a,c);case A:{var t=r,d=t._payload,i=t._init;try{return w(i(d),a,c)}catch{}}}return\"\"}var S=Object.prototype.hasOwnProperty,ie={},le=g.ReactDebugCurrentFrame;function P(r){if(r){var a=r._owner,c=w(r.type,r._source,a?a.type:null);le.setExtraStackFrame(c)}else le.setExtraStackFrame(null)}function Ve(r,a,c,t,d){{var i=Function.call.bind(S);for(var s in r)if(i(r,s)){var o=void 0;try{if(typeof r[s]!=\"function\"){var h=Error((t||\"React class\")+\": \"+c+\" type `\"+s+\"` is invalid; it must be a function, usually from the `prop-types` package, but received `\"+typeof r[s]+\"`.This often happens because of typos such as `PropTypes.function` instead of `PropTypes.func`.\");throw h.name=\"Invariant Violation\",h}o=r[s](a,s,t,c,null,\"SECRET_DO_NOT_PASS_THIS_OR_YOU_WILL_BE_FIRED\")}catch(m){o=m}o&&!(o instanceof Error)&&(P(d),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).\",t||\"React class\",c,s,typeof o),P(null)),o instanceof Error&&!(o.message in ie)&&(ie[o.message]=!0,P(d),f(\"Failed %s type: %s\",c,o.message),P(null))}}}var He=Array.isArray;function Y(r){return He(r)}function qe(r){{var a=typeof Symbol==\"function\"&&Symbol.toStringTag,c=a&&r[Symbol.toStringTag]||r.constructor.name||\"Object\";return c}}function ze(r){try{return me(r),!1}catch{return!0}}function me(r){return\"\"+r}function ue(r){if(ze(r))return f(\"The provided key is an unsupported type %s. This value must be coerced to a string before before using it here.\",qe(r)),me(r)}var v=g.ReactCurrentOwner,Ge={key:!0,ref:!0,__self:!0,__source:!0},fe,he,$;$={};function Ke(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 c=p(v.current.type);$[c]||(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),r.ref),$[c]=!0)}}function Qe(r,a){{var c=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))};c.isReactWarning=!0,Object.defineProperty(r,\"key\",{get:c,configurable:!0})}}function Ze(r,a){{var c=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))};c.isReactWarning=!0,Object.defineProperty(r,\"ref\",{get:c,configurable:!0})}}var en=function(r,a,c,t,d,i,s){var o={$$typeof:e,type:r,key:a,ref:c,props:s,_owner:i};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:t}),Object.defineProperty(o,\"_source\",{configurable:!1,enumerable:!1,writable:!1,value:d}),Object.freeze&&(Object.freeze(o.props),Object.freeze(o)),o};function nn(r,a,c,t,d){{var i,s={},o=null,h=null;c!==void 0&&(ue(c),o=\"\"+c),Xe(a)&&(ue(a.key),o=\"\"+a.key),Ke(a)&&(h=a.ref,Je(a,d));for(i in a)S.call(a,i)&&!Ge.hasOwnProperty(i)&&(s[i]=a[i]);if(r&&r.defaultProps){var m=r.defaultProps;for(i in m)s[i]===void 0&&(s[i]=m[i])}if(o||h){var u=typeof r==\"function\"?r.displayName||r.name||\"Unknown\":r;o&&Qe(s,u),h&&Ze(s,u)}return en(r,o,h,d,t,v.current,s)}}var M=g.ReactCurrentOwner,be=g.ReactDebugCurrentFrame;function E(r){if(r){var a=r._owner,c=w(r.type,r._source,a?a.type:null);be.setExtraStackFrame(c)}else be.setExtraStackFrame(null)}var V;V=!1;function H(r){return typeof r==\"object\"&&r!==null&&r.$$typeof===e}function _e(){{if(M.current){var r=p(M.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(/^.*[\\\\\\/]/,\"\"),c=r.lineNumber;return`\n\nCheck your code at `+a+\":\"+c+\".\"}return\"\"}}var pe={};function an(r){{var a=_e();if(!a){var c=typeof r==\"string\"?r:r.displayName||r.name;c&&(a=`\n\nCheck the top-level render call using <`+c+\">.\")}return a}}function Ne(r,a){{if(!r._store||r._store.validated||r.key!=null)return;r._store.validated=!0;var c=an(a);if(pe[c])return;pe[c]=!0;var t=\"\";r&&r._owner&&r._owner!==M.current&&(t=\" It was passed a child from \"+p(r._owner.type)+\".\"),E(r),f('Each child in a list should have a unique \"key\" prop.%s%s See https://reactjs.org/link/warning-keys for more information.',c,t),E(null)}}function ke(r,a){{if(typeof r!=\"object\")return;if(Y(r))for(var c=0;c\",o=\" Did you accidentally export a JSX literal instead of a component?\"):m=typeof r,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,o)}var u=nn(r,a,c,d,i);if(u==null)return u;if(s){var b=a.children;if(b!==void 0)if(t)if(Y(b)){for(var j=0;j{\"use strict\";Ue.exports=je()});var xn={};hn(xn,{default:()=>kn,frontmatter:()=>pn});var n=bn(ve()),pn={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(l){let e=Object.assign({p:\"p\",code:\"code\",a:\"a\",ul:\"ul\",li:\"li\",h2:\"h2\",span:\"span\",h3:\"h3\",h4:\"h4\",div:\"div\",pre:\"pre\"},l.components);return(0,n.jsxDEV)(n.Fragment,{children:[(0,n.jsxDEV)(e.p,{children:[(0,n.jsxDEV)(e.code,{children:\"@upstash/redis\"},void 0,!1,{fileName:\"/Users/andreasthomas/github/chronark/chronark.com/content/projects/_mdx_bundler_entry_point-93a1e3d2-f694-441c-8926-7ce5fc1adfb7.mdx\",lineNumber:12,columnNumber:1},this),` is an HTTP/REST based Redis client for typescript, built on top\nof `,(0,n.jsxDEV)(e.a,{href:\"https://docs.upstash.com/features/restapi\",children:\"Upstash REST API\"},void 0,!1,{fileName:\"/Users/andreasthomas/github/chronark/chronark.com/content/projects/_mdx_bundler_entry_point-93a1e3d2-f694-441c-8926-7ce5fc1adfb7.mdx\",lineNumber:13,columnNumber:4},this),\".\"]},void 0,!0,{fileName:\"/Users/andreasthomas/github/chronark/chronark.com/content/projects/_mdx_bundler_entry_point-93a1e3d2-f694-441c-8926-7ce5fc1adfb7.mdx\",lineNumber:12,columnNumber:1},this),`\n`,(0,n.jsxDEV)(e.p,{children:\"It is the only connectionless (HTTP based) Redis client and designed for:\"},void 0,!1,{fileName:\"/Users/andreasthomas/github/chronark/chronark.com/content/projects/_mdx_bundler_entry_point-93a1e3d2-f694-441c-8926-7ce5fc1adfb7.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-93a1e3d2-f694-441c-8926-7ce5fc1adfb7.mdx\",lineNumber:17,columnNumber:1},this),`\n`,(0,n.jsxDEV)(e.li,{children:[`Cloudflare Workers (see\n`,(0,n.jsxDEV)(e.a,{href:\"https://github.com/upstash/upstash-redis/tree/main/examples/cloudflare-workers\",children:\"the example\"},void 0,!1,{fileName:\"/Users/andreasthomas/github/chronark/chronark.com/content/projects/_mdx_bundler_entry_point-93a1e3d2-f694-441c-8926-7ce5fc1adfb7.mdx\",lineNumber:19,columnNumber:3},this),\")\"]},void 0,!0,{fileName:\"/Users/andreasthomas/github/chronark/chronark.com/content/projects/_mdx_bundler_entry_point-93a1e3d2-f694-441c-8926-7ce5fc1adfb7.mdx\",lineNumber:18,columnNumber:1},this),`\n`,(0,n.jsxDEV)(e.li,{children:[`Fastly Compute@Edge (see\n`,(0,n.jsxDEV)(e.a,{href:\"https://github.com/upstash/upstash-redis/tree/main/examples/fastly\",children:\"the example\"},void 0,!1,{fileName:\"/Users/andreasthomas/github/chronark/chronark.com/content/projects/_mdx_bundler_entry_point-93a1e3d2-f694-441c-8926-7ce5fc1adfb7.mdx\",lineNumber:21,columnNumber:3},this),\")\"]},void 0,!0,{fileName:\"/Users/andreasthomas/github/chronark/chronark.com/content/projects/_mdx_bundler_entry_point-93a1e3d2-f694-441c-8926-7ce5fc1adfb7.mdx\",lineNumber:20,columnNumber:1},this),`\n`,(0,n.jsxDEV)(e.li,{children:\"Next.js, Jamstack ...\"},void 0,!1,{fileName:\"/Users/andreasthomas/github/chronark/chronark.com/content/projects/_mdx_bundler_entry_point-93a1e3d2-f694-441c-8926-7ce5fc1adfb7.mdx\",lineNumber:22,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-93a1e3d2-f694-441c-8926-7ce5fc1adfb7.mdx\",lineNumber:23,columnNumber:1},this),`\n`,(0,n.jsxDEV)(e.li,{children:\"WebAssembly\"},void 0,!1,{fileName:\"/Users/andreasthomas/github/chronark/chronark.com/content/projects/_mdx_bundler_entry_point-93a1e3d2-f694-441c-8926-7ce5fc1adfb7.mdx\",lineNumber:24,columnNumber:1},this),`\n`,(0,n.jsxDEV)(e.li,{children:\"and other environments where HTTP is preferred over TCP.\"},void 0,!1,{fileName:\"/Users/andreasthomas/github/chronark/chronark.com/content/projects/_mdx_bundler_entry_point-93a1e3d2-f694-441c-8926-7ce5fc1adfb7.mdx\",lineNumber:25,columnNumber:1},this),`\n`]},void 0,!0,{fileName:\"/Users/andreasthomas/github/chronark/chronark.com/content/projects/_mdx_bundler_entry_point-93a1e3d2-f694-441c-8926-7ce5fc1adfb7.mdx\",lineNumber:17,columnNumber:1},this),`\n`,(0,n.jsxDEV)(e.p,{children:[`See\n`,(0,n.jsxDEV)(e.a,{href:\"https://docs.upstash.com/features/restapi#rest---redis-api-compatibility\",children:\"the list of APIs\"},void 0,!1,{fileName:\"/Users/andreasthomas/github/chronark/chronark.com/content/projects/_mdx_bundler_entry_point-93a1e3d2-f694-441c-8926-7ce5fc1adfb7.mdx\",lineNumber:28,columnNumber:1},this),`\nsupported.`]},void 0,!0,{fileName:\"/Users/andreasthomas/github/chronark/chronark.com/content/projects/_mdx_bundler_entry_point-93a1e3d2-f694-441c-8926-7ce5fc1adfb7.mdx\",lineNumber:27,columnNumber:1},this),`\n`,(0,n.jsxDEV)(e.h2,{id:\"quick-start\",children:[(0,n.jsxDEV)(e.a,{className:\"subheading-anchor\",\"aria-label\":\"Link to section\",href:\"#quick-start\",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-93a1e3d2-f694-441c-8926-7ce5fc1adfb7.mdx\"},this)},void 0,!1,{fileName:\"/Users/andreasthomas/github/chronark/chronark.com/content/projects/_mdx_bundler_entry_point-93a1e3d2-f694-441c-8926-7ce5fc1adfb7.mdx\"},this),\"Quick Start\"]},void 0,!0,{fileName:\"/Users/andreasthomas/github/chronark/chronark.com/content/projects/_mdx_bundler_entry_point-93a1e3d2-f694-441c-8926-7ce5fc1adfb7.mdx\",lineNumber:31,columnNumber:1},this),`\n`,(0,n.jsxDEV)(e.h3,{id:\"install\",children:[(0,n.jsxDEV)(e.a,{className:\"subheading-anchor\",\"aria-label\":\"Link to section\",href:\"#install\",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-93a1e3d2-f694-441c-8926-7ce5fc1adfb7.mdx\"},this)},void 0,!1,{fileName:\"/Users/andreasthomas/github/chronark/chronark.com/content/projects/_mdx_bundler_entry_point-93a1e3d2-f694-441c-8926-7ce5fc1adfb7.mdx\"},this),\"Install\"]},void 0,!0,{fileName:\"/Users/andreasthomas/github/chronark/chronark.com/content/projects/_mdx_bundler_entry_point-93a1e3d2-f694-441c-8926-7ce5fc1adfb7.mdx\",lineNumber:33,columnNumber:1},this),`\n`,(0,n.jsxDEV)(e.h4,{id:\"nodejs\",children:[(0,n.jsxDEV)(e.a,{className:\"subheading-anchor\",\"aria-label\":\"Link to section\",href:\"#nodejs\",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-93a1e3d2-f694-441c-8926-7ce5fc1adfb7.mdx\"},this)},void 0,!1,{fileName:\"/Users/andreasthomas/github/chronark/chronark.com/content/projects/_mdx_bundler_entry_point-93a1e3d2-f694-441c-8926-7ce5fc1adfb7.mdx\"},this),\"Node.js\"]},void 0,!0,{fileName:\"/Users/andreasthomas/github/chronark/chronark.com/content/projects/_mdx_bundler_entry_point-93a1e3d2-f694-441c-8926-7ce5fc1adfb7.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\":\"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-93a1e3d2-f694-441c-8926-7ce5fc1adfb7.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-93a1e3d2-f694-441c-8926-7ce5fc1adfb7.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-93a1e3d2-f694-441c-8926-7ce5fc1adfb7.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-93a1e3d2-f694-441c-8926-7ce5fc1adfb7.mdx\",lineNumber:1,columnNumber:223},this),(0,n.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-93a1e3d2-f694-441c-8926-7ce5fc1adfb7.mdx\",lineNumber:1,columnNumber:260},this)]},void 0,!0,{fileName:\"/Users/andreasthomas/github/chronark/chronark.com/content/projects/_mdx_bundler_entry_point-93a1e3d2-f694-441c-8926-7ce5fc1adfb7.mdx\",lineNumber:1,columnNumber:85},this)},void 0,!1,{fileName:\"/Users/andreasthomas/github/chronark/chronark.com/content/projects/_mdx_bundler_entry_point-93a1e3d2-f694-441c-8926-7ce5fc1adfb7.mdx\",lineNumber:1,columnNumber:79},this)},void 0,!1,{fileName:\"/Users/andreasthomas/github/chronark/chronark.com/content/projects/_mdx_bundler_entry_point-93a1e3d2-f694-441c-8926-7ce5fc1adfb7.mdx\",lineNumber:1,columnNumber:1},this)},void 0,!1,{fileName:\"/Users/andreasthomas/github/chronark/chronark.com/content/projects/_mdx_bundler_entry_point-93a1e3d2-f694-441c-8926-7ce5fc1adfb7.mdx\",lineNumber:37,columnNumber:1},this),`\n`,(0,n.jsxDEV)(e.h4,{id:\"deno\",children:[(0,n.jsxDEV)(e.a,{className:\"subheading-anchor\",\"aria-label\":\"Link to section\",href:\"#deno\",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-93a1e3d2-f694-441c-8926-7ce5fc1adfb7.mdx\"},this)},void 0,!1,{fileName:\"/Users/andreasthomas/github/chronark/chronark.com/content/projects/_mdx_bundler_entry_point-93a1e3d2-f694-441c-8926-7ce5fc1adfb7.mdx\"},this),\"Deno\"]},void 0,!0,{fileName:\"/Users/andreasthomas/github/chronark/chronark.com/content/projects/_mdx_bundler_entry_point-93a1e3d2-f694-441c-8926-7ce5fc1adfb7.mdx\",lineNumber:41,columnNumber:1},this),`\n`,(0,n.jsxDEV)(e.div,{\"data-rehype-pretty-code-fragment\":\"\",children:(0,n.jsxDEV)(e.pre,{\"data-language\":\"ts\",\"data-theme\":\"default\",children:(0,n.jsxDEV)(e.code,{\"data-language\":\"ts\",\"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-93a1e3d2-f694-441c-8926-7ce5fc1adfb7.mdx\",lineNumber:1,columnNumber:104},this),(0,n.jsxDEV)(e.span,{style:{color:\"#E1E4E8\"},children:\" { Redis } \"},void 0,!1,{fileName:\"/Users/andreasthomas/github/chronark/chronark.com/content/projects/_mdx_bundler_entry_point-93a1e3d2-f694-441c-8926-7ce5fc1adfb7.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-93a1e3d2-f694-441c-8926-7ce5fc1adfb7.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-93a1e3d2-f694-441c-8926-7ce5fc1adfb7.mdx\",lineNumber:1,columnNumber:233},this),(0,n.jsxDEV)(e.span,{style:{color:\"#9ECBFF\"},children:'\"https://deno.land/x/upstash_redis/mod.ts\"'},void 0,!1,{fileName:\"/Users/andreasthomas/github/chronark/chronark.com/content/projects/_mdx_bundler_entry_point-93a1e3d2-f694-441c-8926-7ce5fc1adfb7.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-93a1e3d2-f694-441c-8926-7ce5fc1adfb7.mdx\",lineNumber:1,columnNumber:358},this)]},void 0,!0,{fileName:\"/Users/andreasthomas/github/chronark/chronark.com/content/projects/_mdx_bundler_entry_point-93a1e3d2-f694-441c-8926-7ce5fc1adfb7.mdx\",lineNumber:1,columnNumber:85},this)},void 0,!1,{fileName:\"/Users/andreasthomas/github/chronark/chronark.com/content/projects/_mdx_bundler_entry_point-93a1e3d2-f694-441c-8926-7ce5fc1adfb7.mdx\",lineNumber:1,columnNumber:79},this)},void 0,!1,{fileName:\"/Users/andreasthomas/github/chronark/chronark.com/content/projects/_mdx_bundler_entry_point-93a1e3d2-f694-441c-8926-7ce5fc1adfb7.mdx\",lineNumber:1,columnNumber:1},this)},void 0,!1,{fileName:\"/Users/andreasthomas/github/chronark/chronark.com/content/projects/_mdx_bundler_entry_point-93a1e3d2-f694-441c-8926-7ce5fc1adfb7.mdx\",lineNumber:43,columnNumber:1},this),`\n`,(0,n.jsxDEV)(e.h3,{id:\"create-database\",children:[(0,n.jsxDEV)(e.a,{className:\"subheading-anchor\",\"aria-label\":\"Link to section\",href:\"#create-database\",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-93a1e3d2-f694-441c-8926-7ce5fc1adfb7.mdx\"},this)},void 0,!1,{fileName:\"/Users/andreasthomas/github/chronark/chronark.com/content/projects/_mdx_bundler_entry_point-93a1e3d2-f694-441c-8926-7ce5fc1adfb7.mdx\"},this),\"Create database\"]},void 0,!0,{fileName:\"/Users/andreasthomas/github/chronark/chronark.com/content/projects/_mdx_bundler_entry_point-93a1e3d2-f694-441c-8926-7ce5fc1adfb7.mdx\",lineNumber:47,columnNumber:1},this),`\n`,(0,n.jsxDEV)(e.p,{children:[\"Create a new redis database on \",(0,n.jsxDEV)(e.a,{href:\"https://console.upstash.com/\",children:\"upstash\"},void 0,!1,{fileName:\"/Users/andreasthomas/github/chronark/chronark.com/content/projects/_mdx_bundler_entry_point-93a1e3d2-f694-441c-8926-7ce5fc1adfb7.mdx\",lineNumber:49,columnNumber:32},this)]},void 0,!0,{fileName:\"/Users/andreasthomas/github/chronark/chronark.com/content/projects/_mdx_bundler_entry_point-93a1e3d2-f694-441c-8926-7ce5fc1adfb7.mdx\",lineNumber:49,columnNumber:1},this),`\n`,(0,n.jsxDEV)(e.h2,{id:\"basic-usage\",children:[(0,n.jsxDEV)(e.a,{className:\"subheading-anchor\",\"aria-label\":\"Link to section\",href:\"#basic-usage\",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-93a1e3d2-f694-441c-8926-7ce5fc1adfb7.mdx\"},this)},void 0,!1,{fileName:\"/Users/andreasthomas/github/chronark/chronark.com/content/projects/_mdx_bundler_entry_point-93a1e3d2-f694-441c-8926-7ce5fc1adfb7.mdx\"},this),\"Basic Usage:\"]},void 0,!0,{fileName:\"/Users/andreasthomas/github/chronark/chronark.com/content/projects/_mdx_bundler_entry_point-93a1e3d2-f694-441c-8926-7ce5fc1adfb7.mdx\",lineNumber:51,columnNumber:1},this),`\n`,(0,n.jsxDEV)(e.div,{\"data-rehype-pretty-code-fragment\":\"\",children:(0,n.jsxDEV)(e.pre,{\"data-language\":\"ts\",\"data-theme\":\"default\",children:(0,n.jsxDEV)(e.code,{\"data-language\":\"ts\",\"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-93a1e3d2-f694-441c-8926-7ce5fc1adfb7.mdx\",lineNumber:1,columnNumber:104},this),(0,n.jsxDEV)(e.span,{style:{color:\"#E1E4E8\"},children:\" { Redis } \"},void 0,!1,{fileName:\"/Users/andreasthomas/github/chronark/chronark.com/content/projects/_mdx_bundler_entry_point-93a1e3d2-f694-441c-8926-7ce5fc1adfb7.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-93a1e3d2-f694-441c-8926-7ce5fc1adfb7.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-93a1e3d2-f694-441c-8926-7ce5fc1adfb7.mdx\",lineNumber:1,columnNumber:233},this),(0,n.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-93a1e3d2-f694-441c-8926-7ce5fc1adfb7.mdx\",lineNumber:1,columnNumber:270},this)]},void 0,!0,{fileName:\"/Users/andreasthomas/github/chronark/chronark.com/content/projects/_mdx_bundler_entry_point-93a1e3d2-f694-441c-8926-7ce5fc1adfb7.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-93a1e3d2-f694-441c-8926-7ce5fc1adfb7.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-93a1e3d2-f694-441c-8926-7ce5fc1adfb7.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-93a1e3d2-f694-441c-8926-7ce5fc1adfb7.mdx\",lineNumber:3,columnNumber:61},this),(0,n.jsxDEV)(e.span,{style:{color:\"#79B8FF\"},children:\"redis\"},void 0,!1,{fileName:\"/Users/andreasthomas/github/chronark/chronark.com/content/projects/_mdx_bundler_entry_point-93a1e3d2-f694-441c-8926-7ce5fc1adfb7.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-93a1e3d2-f694-441c-8926-7ce5fc1adfb7.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-93a1e3d2-f694-441c-8926-7ce5fc1adfb7.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-93a1e3d2-f694-441c-8926-7ce5fc1adfb7.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-93a1e3d2-f694-441c-8926-7ce5fc1adfb7.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-93a1e3d2-f694-441c-8926-7ce5fc1adfb7.mdx\",lineNumber:3,columnNumber:289},this),(0,n.jsxDEV)(e.span,{style:{color:\"#B392F0\"},children:\"Redis\"},void 0,!1,{fileName:\"/Users/andreasthomas/github/chronark/chronark.com/content/projects/_mdx_bundler_entry_point-93a1e3d2-f694-441c-8926-7ce5fc1adfb7.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-93a1e3d2-f694-441c-8926-7ce5fc1adfb7.mdx\",lineNumber:3,columnNumber:367},this)]},void 0,!0,{fileName:\"/Users/andreasthomas/github/chronark/chronark.com/content/projects/_mdx_bundler_entry_point-93a1e3d2-f694-441c-8926-7ce5fc1adfb7.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-93a1e3d2-f694-441c-8926-7ce5fc1adfb7.mdx\",lineNumber:4,columnNumber:20},this),(0,n.jsxDEV)(e.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-93a1e3d2-f694-441c-8926-7ce5fc1adfb7.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-93a1e3d2-f694-441c-8926-7ce5fc1adfb7.mdx\",lineNumber:4,columnNumber:125},this)]},void 0,!0,{fileName:\"/Users/andreasthomas/github/chronark/chronark.com/content/projects/_mdx_bundler_entry_point-93a1e3d2-f694-441c-8926-7ce5fc1adfb7.mdx\",lineNumber:4,columnNumber:1},this),`\n`,(0,n.jsxDEV)(e.span,{className:\"line\",children:[(0,n.jsxDEV)(e.span,{style:{color:\"#E1E4E8\"},children:\" token: <\"},void 0,!1,{fileName:\"/Users/andreasthomas/github/chronark/chronark.com/content/projects/_mdx_bundler_entry_point-93a1e3d2-f694-441c-8926-7ce5fc1adfb7.mdx\",lineNumber:5,columnNumber:20},this),(0,n.jsxDEV)(e.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-93a1e3d2-f694-441c-8926-7ce5fc1adfb7.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-93a1e3d2-f694-441c-8926-7ce5fc1adfb7.mdx\",lineNumber:5,columnNumber:129},this)]},void 0,!0,{fileName:\"/Users/andreasthomas/github/chronark/chronark.com/content/projects/_mdx_bundler_entry_point-93a1e3d2-f694-441c-8926-7ce5fc1adfb7.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-93a1e3d2-f694-441c-8926-7ce5fc1adfb7.mdx\",lineNumber:6,columnNumber:20},this)},void 0,!1,{fileName:\"/Users/andreasthomas/github/chronark/chronark.com/content/projects/_mdx_bundler_entry_point-93a1e3d2-f694-441c-8926-7ce5fc1adfb7.mdx\",lineNumber:6,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-93a1e3d2-f694-441c-8926-7ce5fc1adfb7.mdx\",lineNumber:7,columnNumber:1},this),`\n`,(0,n.jsxDEV)(e.span,{className:\"line\",children:(0,n.jsxDEV)(e.span,{style:{color:\"#6A737D\"},children:\"// string\"},void 0,!1,{fileName:\"/Users/andreasthomas/github/chronark/chronark.com/content/projects/_mdx_bundler_entry_point-93a1e3d2-f694-441c-8926-7ce5fc1adfb7.mdx\",lineNumber:8,columnNumber:20},this)},void 0,!1,{fileName:\"/Users/andreasthomas/github/chronark/chronark.com/content/projects/_mdx_bundler_entry_point-93a1e3d2-f694-441c-8926-7ce5fc1adfb7.mdx\",lineNumber:8,columnNumber:1},this),`\n`,(0,n.jsxDEV)(e.span,{className:\"line\",children:[(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-93a1e3d2-f694-441c-8926-7ce5fc1adfb7.mdx\",lineNumber:9,columnNumber:20},this),(0,n.jsxDEV)(e.span,{style:{color:\"#E1E4E8\"},children:\" redis.\"},void 0,!1,{fileName:\"/Users/andreasthomas/github/chronark/chronark.com/content/projects/_mdx_bundler_entry_point-93a1e3d2-f694-441c-8926-7ce5fc1adfb7.mdx\",lineNumber:9,columnNumber:61},this),(0,n.jsxDEV)(e.span,{style:{color:\"#B392F0\"},children:\"set\"},void 0,!1,{fileName:\"/Users/andreasthomas/github/chronark/chronark.com/content/projects/_mdx_bundler_entry_point-93a1e3d2-f694-441c-8926-7ce5fc1adfb7.mdx\",lineNumber:9,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-93a1e3d2-f694-441c-8926-7ce5fc1adfb7.mdx\",lineNumber:9,columnNumber:143},this),(0,n.jsxDEV)(e.span,{style:{color:\"#9ECBFF\"},children:\"'key'\"},void 0,!1,{fileName:\"/Users/andreasthomas/github/chronark/chronark.com/content/projects/_mdx_bundler_entry_point-93a1e3d2-f694-441c-8926-7ce5fc1adfb7.mdx\",lineNumber:9,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-93a1e3d2-f694-441c-8926-7ce5fc1adfb7.mdx\",lineNumber:9,columnNumber:229},this),(0,n.jsxDEV)(e.span,{style:{color:\"#9ECBFF\"},children:\"'value'\"},void 0,!1,{fileName:\"/Users/andreasthomas/github/chronark/chronark.com/content/projects/_mdx_bundler_entry_point-93a1e3d2-f694-441c-8926-7ce5fc1adfb7.mdx\",lineNumber:9,columnNumber:267},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-93a1e3d2-f694-441c-8926-7ce5fc1adfb7.mdx\",lineNumber:9,columnNumber:318},this)]},void 0,!0,{fileName:\"/Users/andreasthomas/github/chronark/chronark.com/content/projects/_mdx_bundler_entry_point-93a1e3d2-f694-441c-8926-7ce5fc1adfb7.mdx\",lineNumber:9,columnNumber:1},this),`\n`,(0,n.jsxDEV)(e.span,{className:\"line\",children:[(0,n.jsxDEV)(e.span,{style:{color:\"#F97583\"},children:\"let\"},void 0,!1,{fileName:\"/Users/andreasthomas/github/chronark/chronark.com/content/projects/_mdx_bundler_entry_point-93a1e3d2-f694-441c-8926-7ce5fc1adfb7.mdx\",lineNumber:10,columnNumber:20},this),(0,n.jsxDEV)(e.span,{style:{color:\"#E1E4E8\"},children:\" data \"},void 0,!1,{fileName:\"/Users/andreasthomas/github/chronark/chronark.com/content/projects/_mdx_bundler_entry_point-93a1e3d2-f694-441c-8926-7ce5fc1adfb7.mdx\",lineNumber:10,columnNumber:59},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-93a1e3d2-f694-441c-8926-7ce5fc1adfb7.mdx\",lineNumber:10,columnNumber:101},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-93a1e3d2-f694-441c-8926-7ce5fc1adfb7.mdx\",lineNumber:10,columnNumber:138},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-93a1e3d2-f694-441c-8926-7ce5fc1adfb7.mdx\",lineNumber:10,columnNumber:175},this),(0,n.jsxDEV)(e.span,{style:{color:\"#E1E4E8\"},children:\" redis.\"},void 0,!1,{fileName:\"/Users/andreasthomas/github/chronark/chronark.com/content/projects/_mdx_bundler_entry_point-93a1e3d2-f694-441c-8926-7ce5fc1adfb7.mdx\",lineNumber:10,columnNumber:216},this),(0,n.jsxDEV)(e.span,{style:{color:\"#B392F0\"},children:\"get\"},void 0,!1,{fileName:\"/Users/andreasthomas/github/chronark/chronark.com/content/projects/_mdx_bundler_entry_point-93a1e3d2-f694-441c-8926-7ce5fc1adfb7.mdx\",lineNumber:10,columnNumber:259},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-93a1e3d2-f694-441c-8926-7ce5fc1adfb7.mdx\",lineNumber:10,columnNumber:298},this),(0,n.jsxDEV)(e.span,{style:{color:\"#9ECBFF\"},children:\"'key'\"},void 0,!1,{fileName:\"/Users/andreasthomas/github/chronark/chronark.com/content/projects/_mdx_bundler_entry_point-93a1e3d2-f694-441c-8926-7ce5fc1adfb7.mdx\",lineNumber:10,columnNumber:335},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-93a1e3d2-f694-441c-8926-7ce5fc1adfb7.mdx\",lineNumber:10,columnNumber:384},this)]},void 0,!0,{fileName:\"/Users/andreasthomas/github/chronark/chronark.com/content/projects/_mdx_bundler_entry_point-93a1e3d2-f694-441c-8926-7ce5fc1adfb7.mdx\",lineNumber:10,columnNumber:1},this),`\n`,(0,n.jsxDEV)(e.span,{className:\"line\",children:[(0,n.jsxDEV)(e.span,{style:{color:\"#E1E4E8\"},children:\"console.\"},void 0,!1,{fileName:\"/Users/andreasthomas/github/chronark/chronark.com/content/projects/_mdx_bundler_entry_point-93a1e3d2-f694-441c-8926-7ce5fc1adfb7.mdx\",lineNumber:11,columnNumber:20},this),(0,n.jsxDEV)(e.span,{style:{color:\"#B392F0\"},children:\"log\"},void 0,!1,{fileName:\"/Users/andreasthomas/github/chronark/chronark.com/content/projects/_mdx_bundler_entry_point-93a1e3d2-f694-441c-8926-7ce5fc1adfb7.mdx\",lineNumber:11,columnNumber:64},this),(0,n.jsxDEV)(e.span,{style:{color:\"#E1E4E8\"},children:\"(data)\"},void 0,!1,{fileName:\"/Users/andreasthomas/github/chronark/chronark.com/content/projects/_mdx_bundler_entry_point-93a1e3d2-f694-441c-8926-7ce5fc1adfb7.mdx\",lineNumber:11,columnNumber:103},this)]},void 0,!0,{fileName:\"/Users/andreasthomas/github/chronark/chronark.com/content/projects/_mdx_bundler_entry_point-93a1e3d2-f694-441c-8926-7ce5fc1adfb7.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-93a1e3d2-f694-441c-8926-7ce5fc1adfb7.mdx\",lineNumber:12,columnNumber:1},this),`\n`,(0,n.jsxDEV)(e.span,{className:\"line\",children:[(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-93a1e3d2-f694-441c-8926-7ce5fc1adfb7.mdx\",lineNumber:13,columnNumber:20},this),(0,n.jsxDEV)(e.span,{style:{color:\"#E1E4E8\"},children:\" redis.\"},void 0,!1,{fileName:\"/Users/andreasthomas/github/chronark/chronark.com/content/projects/_mdx_bundler_entry_point-93a1e3d2-f694-441c-8926-7ce5fc1adfb7.mdx\",lineNumber:13,columnNumber:61},this),(0,n.jsxDEV)(e.span,{style:{color:\"#B392F0\"},children:\"set\"},void 0,!1,{fileName:\"/Users/andreasthomas/github/chronark/chronark.com/content/projects/_mdx_bundler_entry_point-93a1e3d2-f694-441c-8926-7ce5fc1adfb7.mdx\",lineNumber:13,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-93a1e3d2-f694-441c-8926-7ce5fc1adfb7.mdx\",lineNumber:13,columnNumber:143},this),(0,n.jsxDEV)(e.span,{style:{color:\"#9ECBFF\"},children:\"'key2'\"},void 0,!1,{fileName:\"/Users/andreasthomas/github/chronark/chronark.com/content/projects/_mdx_bundler_entry_point-93a1e3d2-f694-441c-8926-7ce5fc1adfb7.mdx\",lineNumber:13,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-93a1e3d2-f694-441c-8926-7ce5fc1adfb7.mdx\",lineNumber:13,columnNumber:230},this),(0,n.jsxDEV)(e.span,{style:{color:\"#9ECBFF\"},children:\"'value2'\"},void 0,!1,{fileName:\"/Users/andreasthomas/github/chronark/chronark.com/content/projects/_mdx_bundler_entry_point-93a1e3d2-f694-441c-8926-7ce5fc1adfb7.mdx\",lineNumber:13,columnNumber:268},this),(0,n.jsxDEV)(e.span,{style:{color:\"#E1E4E8\"},children:\", {ex: \"},void 0,!1,{fileName:\"/Users/andreasthomas/github/chronark/chronark.com/content/projects/_mdx_bundler_entry_point-93a1e3d2-f694-441c-8926-7ce5fc1adfb7.mdx\",lineNumber:13,columnNumber:320},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-93a1e3d2-f694-441c-8926-7ce5fc1adfb7.mdx\",lineNumber:13,columnNumber:363},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-93a1e3d2-f694-441c-8926-7ce5fc1adfb7.mdx\",lineNumber:13,columnNumber:400},this)]},void 0,!0,{fileName:\"/Users/andreasthomas/github/chronark/chronark.com/content/projects/_mdx_bundler_entry_point-93a1e3d2-f694-441c-8926-7ce5fc1adfb7.mdx\",lineNumber:13,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-93a1e3d2-f694-441c-8926-7ce5fc1adfb7.mdx\",lineNumber:14,columnNumber:1},this),`\n`,(0,n.jsxDEV)(e.span,{className:\"line\",children:(0,n.jsxDEV)(e.span,{style:{color:\"#6A737D\"},children:\"// sorted set\"},void 0,!1,{fileName:\"/Users/andreasthomas/github/chronark/chronark.com/content/projects/_mdx_bundler_entry_point-93a1e3d2-f694-441c-8926-7ce5fc1adfb7.mdx\",lineNumber:15,columnNumber:20},this)},void 0,!1,{fileName:\"/Users/andreasthomas/github/chronark/chronark.com/content/projects/_mdx_bundler_entry_point-93a1e3d2-f694-441c-8926-7ce5fc1adfb7.mdx\",lineNumber:15,columnNumber:1},this),`\n`,(0,n.jsxDEV)(e.span,{className:\"line\",children:[(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-93a1e3d2-f694-441c-8926-7ce5fc1adfb7.mdx\",lineNumber:16,columnNumber:20},this),(0,n.jsxDEV)(e.span,{style:{color:\"#E1E4E8\"},children:\" redis.\"},void 0,!1,{fileName:\"/Users/andreasthomas/github/chronark/chronark.com/content/projects/_mdx_bundler_entry_point-93a1e3d2-f694-441c-8926-7ce5fc1adfb7.mdx\",lineNumber:16,columnNumber:61},this),(0,n.jsxDEV)(e.span,{style:{color:\"#B392F0\"},children:\"zadd\"},void 0,!1,{fileName:\"/Users/andreasthomas/github/chronark/chronark.com/content/projects/_mdx_bundler_entry_point-93a1e3d2-f694-441c-8926-7ce5fc1adfb7.mdx\",lineNumber:16,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-93a1e3d2-f694-441c-8926-7ce5fc1adfb7.mdx\",lineNumber:16,columnNumber:144},this),(0,n.jsxDEV)(e.span,{style:{color:\"#9ECBFF\"},children:\"'scores'\"},void 0,!1,{fileName:\"/Users/andreasthomas/github/chronark/chronark.com/content/projects/_mdx_bundler_entry_point-93a1e3d2-f694-441c-8926-7ce5fc1adfb7.mdx\",lineNumber:16,columnNumber:181},this),(0,n.jsxDEV)(e.span,{style:{color:\"#E1E4E8\"},children:\", { score: \"},void 0,!1,{fileName:\"/Users/andreasthomas/github/chronark/chronark.com/content/projects/_mdx_bundler_entry_point-93a1e3d2-f694-441c-8926-7ce5fc1adfb7.mdx\",lineNumber:16,columnNumber:233},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-93a1e3d2-f694-441c-8926-7ce5fc1adfb7.mdx\",lineNumber:16,columnNumber:280},this),(0,n.jsxDEV)(e.span,{style:{color:\"#E1E4E8\"},children:\", member: \"},void 0,!1,{fileName:\"/Users/andreasthomas/github/chronark/chronark.com/content/projects/_mdx_bundler_entry_point-93a1e3d2-f694-441c-8926-7ce5fc1adfb7.mdx\",lineNumber:16,columnNumber:317},this),(0,n.jsxDEV)(e.span,{style:{color:\"#9ECBFF\"},children:\"'team1'\"},void 0,!1,{fileName:\"/Users/andreasthomas/github/chronark/chronark.com/content/projects/_mdx_bundler_entry_point-93a1e3d2-f694-441c-8926-7ce5fc1adfb7.mdx\",lineNumber:16,columnNumber:363},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-93a1e3d2-f694-441c-8926-7ce5fc1adfb7.mdx\",lineNumber:16,columnNumber:414},this)]},void 0,!0,{fileName:\"/Users/andreasthomas/github/chronark/chronark.com/content/projects/_mdx_bundler_entry_point-93a1e3d2-f694-441c-8926-7ce5fc1adfb7.mdx\",lineNumber:16,columnNumber:1},this),`\n`,(0,n.jsxDEV)(e.span,{className:\"line\",children:[(0,n.jsxDEV)(e.span,{style:{color:\"#E1E4E8\"},children:\"data \"},void 0,!1,{fileName:\"/Users/andreasthomas/github/chronark/chronark.com/content/projects/_mdx_bundler_entry_point-93a1e3d2-f694-441c-8926-7ce5fc1adfb7.mdx\",lineNumber:17,columnNumber:20},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-93a1e3d2-f694-441c-8926-7ce5fc1adfb7.mdx\",lineNumber:17,columnNumber:61},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-93a1e3d2-f694-441c-8926-7ce5fc1adfb7.mdx\",lineNumber:17,columnNumber:98},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-93a1e3d2-f694-441c-8926-7ce5fc1adfb7.mdx\",lineNumber:17,columnNumber:135},this),(0,n.jsxDEV)(e.span,{style:{color:\"#E1E4E8\"},children:\" redis.\"},void 0,!1,{fileName:\"/Users/andreasthomas/github/chronark/chronark.com/content/projects/_mdx_bundler_entry_point-93a1e3d2-f694-441c-8926-7ce5fc1adfb7.mdx\",lineNumber:17,columnNumber:176},this),(0,n.jsxDEV)(e.span,{style:{color:\"#B392F0\"},children:\"zrange\"},void 0,!1,{fileName:\"/Users/andreasthomas/github/chronark/chronark.com/content/projects/_mdx_bundler_entry_point-93a1e3d2-f694-441c-8926-7ce5fc1adfb7.mdx\",lineNumber:17,columnNumber:219},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-93a1e3d2-f694-441c-8926-7ce5fc1adfb7.mdx\",lineNumber:17,columnNumber:261},this),(0,n.jsxDEV)(e.span,{style:{color:\"#9ECBFF\"},children:\"'scores'\"},void 0,!1,{fileName:\"/Users/andreasthomas/github/chronark/chronark.com/content/projects/_mdx_bundler_entry_point-93a1e3d2-f694-441c-8926-7ce5fc1adfb7.mdx\",lineNumber:17,columnNumber:298},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-93a1e3d2-f694-441c-8926-7ce5fc1adfb7.mdx\",lineNumber:17,columnNumber:350},this),(0,n.jsxDEV)(e.span,{style:{color:\"#79B8FF\"},children:\"0\"},void 0,!1,{fileName:\"/Users/andreasthomas/github/chronark/chronark.com/content/projects/_mdx_bundler_entry_point-93a1e3d2-f694-441c-8926-7ce5fc1adfb7.mdx\",lineNumber:17,columnNumber:388},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-93a1e3d2-f694-441c-8926-7ce5fc1adfb7.mdx\",lineNumber:17,columnNumber:425},this),(0,n.jsxDEV)(e.span,{style:{color:\"#79B8FF\"},children:\"100\"},void 0,!1,{fileName:\"/Users/andreasthomas/github/chronark/chronark.com/content/projects/_mdx_bundler_entry_point-93a1e3d2-f694-441c-8926-7ce5fc1adfb7.mdx\",lineNumber:17,columnNumber:463},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-93a1e3d2-f694-441c-8926-7ce5fc1adfb7.mdx\",lineNumber:17,columnNumber:502},this)]},void 0,!0,{fileName:\"/Users/andreasthomas/github/chronark/chronark.com/content/projects/_mdx_bundler_entry_point-93a1e3d2-f694-441c-8926-7ce5fc1adfb7.mdx\",lineNumber:17,columnNumber:1},this),`\n`,(0,n.jsxDEV)(e.span,{className:\"line\",children:[(0,n.jsxDEV)(e.span,{style:{color:\"#E1E4E8\"},children:\"console.\"},void 0,!1,{fileName:\"/Users/andreasthomas/github/chronark/chronark.com/content/projects/_mdx_bundler_entry_point-93a1e3d2-f694-441c-8926-7ce5fc1adfb7.mdx\",lineNumber:18,columnNumber:20},this),(0,n.jsxDEV)(e.span,{style:{color:\"#B392F0\"},children:\"log\"},void 0,!1,{fileName:\"/Users/andreasthomas/github/chronark/chronark.com/content/projects/_mdx_bundler_entry_point-93a1e3d2-f694-441c-8926-7ce5fc1adfb7.mdx\",lineNumber:18,columnNumber:64},this),(0,n.jsxDEV)(e.span,{style:{color:\"#E1E4E8\"},children:\"(data)\"},void 0,!1,{fileName:\"/Users/andreasthomas/github/chronark/chronark.com/content/projects/_mdx_bundler_entry_point-93a1e3d2-f694-441c-8926-7ce5fc1adfb7.mdx\",lineNumber:18,columnNumber:103},this)]},void 0,!0,{fileName:\"/Users/andreasthomas/github/chronark/chronark.com/content/projects/_mdx_bundler_entry_point-93a1e3d2-f694-441c-8926-7ce5fc1adfb7.mdx\",lineNumber:18,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-93a1e3d2-f694-441c-8926-7ce5fc1adfb7.mdx\",lineNumber:19,columnNumber:1},this),`\n`,(0,n.jsxDEV)(e.span,{className:\"line\",children:(0,n.jsxDEV)(e.span,{style:{color:\"#6A737D\"},children:\"// list\"},void 0,!1,{fileName:\"/Users/andreasthomas/github/chronark/chronark.com/content/projects/_mdx_bundler_entry_point-93a1e3d2-f694-441c-8926-7ce5fc1adfb7.mdx\",lineNumber:20,columnNumber:20},this)},void 0,!1,{fileName:\"/Users/andreasthomas/github/chronark/chronark.com/content/projects/_mdx_bundler_entry_point-93a1e3d2-f694-441c-8926-7ce5fc1adfb7.mdx\",lineNumber:20,columnNumber:1},this),`\n`,(0,n.jsxDEV)(e.span,{className:\"line\",children:[(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-93a1e3d2-f694-441c-8926-7ce5fc1adfb7.mdx\",lineNumber:21,columnNumber:20},this),(0,n.jsxDEV)(e.span,{style:{color:\"#E1E4E8\"},children:\" redis.\"},void 0,!1,{fileName:\"/Users/andreasthomas/github/chronark/chronark.com/content/projects/_mdx_bundler_entry_point-93a1e3d2-f694-441c-8926-7ce5fc1adfb7.mdx\",lineNumber:21,columnNumber:61},this),(0,n.jsxDEV)(e.span,{style:{color:\"#B392F0\"},children:\"lpush\"},void 0,!1,{fileName:\"/Users/andreasthomas/github/chronark/chronark.com/content/projects/_mdx_bundler_entry_point-93a1e3d2-f694-441c-8926-7ce5fc1adfb7.mdx\",lineNumber:21,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-93a1e3d2-f694-441c-8926-7ce5fc1adfb7.mdx\",lineNumber:21,columnNumber:145},this),(0,n.jsxDEV)(e.span,{style:{color:\"#9ECBFF\"},children:\"'elements'\"},void 0,!1,{fileName:\"/Users/andreasthomas/github/chronark/chronark.com/content/projects/_mdx_bundler_entry_point-93a1e3d2-f694-441c-8926-7ce5fc1adfb7.mdx\",lineNumber:21,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-93a1e3d2-f694-441c-8926-7ce5fc1adfb7.mdx\",lineNumber:21,columnNumber:236},this),(0,n.jsxDEV)(e.span,{style:{color:\"#9ECBFF\"},children:\"'magnesium'\"},void 0,!1,{fileName:\"/Users/andreasthomas/github/chronark/chronark.com/content/projects/_mdx_bundler_entry_point-93a1e3d2-f694-441c-8926-7ce5fc1adfb7.mdx\",lineNumber:21,columnNumber:274},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-93a1e3d2-f694-441c-8926-7ce5fc1adfb7.mdx\",lineNumber:21,columnNumber:329},this)]},void 0,!0,{fileName:\"/Users/andreasthomas/github/chronark/chronark.com/content/projects/_mdx_bundler_entry_point-93a1e3d2-f694-441c-8926-7ce5fc1adfb7.mdx\",lineNumber:21,columnNumber:1},this),`\n`,(0,n.jsxDEV)(e.span,{className:\"line\",children:[(0,n.jsxDEV)(e.span,{style:{color:\"#E1E4E8\"},children:\"data \"},void 0,!1,{fileName:\"/Users/andreasthomas/github/chronark/chronark.com/content/projects/_mdx_bundler_entry_point-93a1e3d2-f694-441c-8926-7ce5fc1adfb7.mdx\",lineNumber:22,columnNumber:20},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-93a1e3d2-f694-441c-8926-7ce5fc1adfb7.mdx\",lineNumber:22,columnNumber:61},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-93a1e3d2-f694-441c-8926-7ce5fc1adfb7.mdx\",lineNumber:22,columnNumber:98},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-93a1e3d2-f694-441c-8926-7ce5fc1adfb7.mdx\",lineNumber:22,columnNumber:135},this),(0,n.jsxDEV)(e.span,{style:{color:\"#E1E4E8\"},children:\" redis.\"},void 0,!1,{fileName:\"/Users/andreasthomas/github/chronark/chronark.com/content/projects/_mdx_bundler_entry_point-93a1e3d2-f694-441c-8926-7ce5fc1adfb7.mdx\",lineNumber:22,columnNumber:176},this),(0,n.jsxDEV)(e.span,{style:{color:\"#B392F0\"},children:\"lrange\"},void 0,!1,{fileName:\"/Users/andreasthomas/github/chronark/chronark.com/content/projects/_mdx_bundler_entry_point-93a1e3d2-f694-441c-8926-7ce5fc1adfb7.mdx\",lineNumber:22,columnNumber:219},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-93a1e3d2-f694-441c-8926-7ce5fc1adfb7.mdx\",lineNumber:22,columnNumber:261},this),(0,n.jsxDEV)(e.span,{style:{color:\"#9ECBFF\"},children:\"'elements'\"},void 0,!1,{fileName:\"/Users/andreasthomas/github/chronark/chronark.com/content/projects/_mdx_bundler_entry_point-93a1e3d2-f694-441c-8926-7ce5fc1adfb7.mdx\",lineNumber:22,columnNumber:298},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-93a1e3d2-f694-441c-8926-7ce5fc1adfb7.mdx\",lineNumber:22,columnNumber:352},this),(0,n.jsxDEV)(e.span,{style:{color:\"#79B8FF\"},children:\"0\"},void 0,!1,{fileName:\"/Users/andreasthomas/github/chronark/chronark.com/content/projects/_mdx_bundler_entry_point-93a1e3d2-f694-441c-8926-7ce5fc1adfb7.mdx\",lineNumber:22,columnNumber:390},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-93a1e3d2-f694-441c-8926-7ce5fc1adfb7.mdx\",lineNumber:22,columnNumber:427},this),(0,n.jsxDEV)(e.span,{style:{color:\"#79B8FF\"},children:\"100\"},void 0,!1,{fileName:\"/Users/andreasthomas/github/chronark/chronark.com/content/projects/_mdx_bundler_entry_point-93a1e3d2-f694-441c-8926-7ce5fc1adfb7.mdx\",lineNumber:22,columnNumber:465},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-93a1e3d2-f694-441c-8926-7ce5fc1adfb7.mdx\",lineNumber:22,columnNumber:504},this)]},void 0,!0,{fileName:\"/Users/andreasthomas/github/chronark/chronark.com/content/projects/_mdx_bundler_entry_point-93a1e3d2-f694-441c-8926-7ce5fc1adfb7.mdx\",lineNumber:22,columnNumber:1},this),`\n`,(0,n.jsxDEV)(e.span,{className:\"line\",children:[(0,n.jsxDEV)(e.span,{style:{color:\"#E1E4E8\"},children:\"console.\"},void 0,!1,{fileName:\"/Users/andreasthomas/github/chronark/chronark.com/content/projects/_mdx_bundler_entry_point-93a1e3d2-f694-441c-8926-7ce5fc1adfb7.mdx\",lineNumber:23,columnNumber:20},this),(0,n.jsxDEV)(e.span,{style:{color:\"#B392F0\"},children:\"log\"},void 0,!1,{fileName:\"/Users/andreasthomas/github/chronark/chronark.com/content/projects/_mdx_bundler_entry_point-93a1e3d2-f694-441c-8926-7ce5fc1adfb7.mdx\",lineNumber:23,columnNumber:64},this),(0,n.jsxDEV)(e.span,{style:{color:\"#E1E4E8\"},children:\"(data)\"},void 0,!1,{fileName:\"/Users/andreasthomas/github/chronark/chronark.com/content/projects/_mdx_bundler_entry_point-93a1e3d2-f694-441c-8926-7ce5fc1adfb7.mdx\",lineNumber:23,columnNumber:103},this)]},void 0,!0,{fileName:\"/Users/andreasthomas/github/chronark/chronark.com/content/projects/_mdx_bundler_entry_point-93a1e3d2-f694-441c-8926-7ce5fc1adfb7.mdx\",lineNumber:23,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-93a1e3d2-f694-441c-8926-7ce5fc1adfb7.mdx\",lineNumber:24,columnNumber:1},this),`\n`,(0,n.jsxDEV)(e.span,{className:\"line\",children:(0,n.jsxDEV)(e.span,{style:{color:\"#6A737D\"},children:\"// hash\"},void 0,!1,{fileName:\"/Users/andreasthomas/github/chronark/chronark.com/content/projects/_mdx_bundler_entry_point-93a1e3d2-f694-441c-8926-7ce5fc1adfb7.mdx\",lineNumber:25,columnNumber:20},this)},void 0,!1,{fileName:\"/Users/andreasthomas/github/chronark/chronark.com/content/projects/_mdx_bundler_entry_point-93a1e3d2-f694-441c-8926-7ce5fc1adfb7.mdx\",lineNumber:25,columnNumber:1},this),`\n`,(0,n.jsxDEV)(e.span,{className:\"line\",children:[(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-93a1e3d2-f694-441c-8926-7ce5fc1adfb7.mdx\",lineNumber:26,columnNumber:20},this),(0,n.jsxDEV)(e.span,{style:{color:\"#E1E4E8\"},children:\" redis.\"},void 0,!1,{fileName:\"/Users/andreasthomas/github/chronark/chronark.com/content/projects/_mdx_bundler_entry_point-93a1e3d2-f694-441c-8926-7ce5fc1adfb7.mdx\",lineNumber:26,columnNumber:61},this),(0,n.jsxDEV)(e.span,{style:{color:\"#B392F0\"},children:\"hset\"},void 0,!1,{fileName:\"/Users/andreasthomas/github/chronark/chronark.com/content/projects/_mdx_bundler_entry_point-93a1e3d2-f694-441c-8926-7ce5fc1adfb7.mdx\",lineNumber:26,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-93a1e3d2-f694-441c-8926-7ce5fc1adfb7.mdx\",lineNumber:26,columnNumber:144},this),(0,n.jsxDEV)(e.span,{style:{color:\"#9ECBFF\"},children:\"'people'\"},void 0,!1,{fileName:\"/Users/andreasthomas/github/chronark/chronark.com/content/projects/_mdx_bundler_entry_point-93a1e3d2-f694-441c-8926-7ce5fc1adfb7.mdx\",lineNumber:26,columnNumber:181},this),(0,n.jsxDEV)(e.span,{style:{color:\"#E1E4E8\"},children:\", {name: \"},void 0,!1,{fileName:\"/Users/andreasthomas/github/chronark/chronark.com/content/projects/_mdx_bundler_entry_point-93a1e3d2-f694-441c-8926-7ce5fc1adfb7.mdx\",lineNumber:26,columnNumber:233},this),(0,n.jsxDEV)(e.span,{style:{color:\"#9ECBFF\"},children:\"'joe'\"},void 0,!1,{fileName:\"/Users/andreasthomas/github/chronark/chronark.com/content/projects/_mdx_bundler_entry_point-93a1e3d2-f694-441c-8926-7ce5fc1adfb7.mdx\",lineNumber:26,columnNumber:278},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-93a1e3d2-f694-441c-8926-7ce5fc1adfb7.mdx\",lineNumber:26,columnNumber:327},this)]},void 0,!0,{fileName:\"/Users/andreasthomas/github/chronark/chronark.com/content/projects/_mdx_bundler_entry_point-93a1e3d2-f694-441c-8926-7ce5fc1adfb7.mdx\",lineNumber:26,columnNumber:1},this),`\n`,(0,n.jsxDEV)(e.span,{className:\"line\",children:[(0,n.jsxDEV)(e.span,{style:{color:\"#E1E4E8\"},children:\"data \"},void 0,!1,{fileName:\"/Users/andreasthomas/github/chronark/chronark.com/content/projects/_mdx_bundler_entry_point-93a1e3d2-f694-441c-8926-7ce5fc1adfb7.mdx\",lineNumber:27,columnNumber:20},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-93a1e3d2-f694-441c-8926-7ce5fc1adfb7.mdx\",lineNumber:27,columnNumber:61},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-93a1e3d2-f694-441c-8926-7ce5fc1adfb7.mdx\",lineNumber:27,columnNumber:98},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-93a1e3d2-f694-441c-8926-7ce5fc1adfb7.mdx\",lineNumber:27,columnNumber:135},this),(0,n.jsxDEV)(e.span,{style:{color:\"#E1E4E8\"},children:\" redis.\"},void 0,!1,{fileName:\"/Users/andreasthomas/github/chronark/chronark.com/content/projects/_mdx_bundler_entry_point-93a1e3d2-f694-441c-8926-7ce5fc1adfb7.mdx\",lineNumber:27,columnNumber:176},this),(0,n.jsxDEV)(e.span,{style:{color:\"#B392F0\"},children:\"hget\"},void 0,!1,{fileName:\"/Users/andreasthomas/github/chronark/chronark.com/content/projects/_mdx_bundler_entry_point-93a1e3d2-f694-441c-8926-7ce5fc1adfb7.mdx\",lineNumber:27,columnNumber:219},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-93a1e3d2-f694-441c-8926-7ce5fc1adfb7.mdx\",lineNumber:27,columnNumber:259},this),(0,n.jsxDEV)(e.span,{style:{color:\"#9ECBFF\"},children:\"'people'\"},void 0,!1,{fileName:\"/Users/andreasthomas/github/chronark/chronark.com/content/projects/_mdx_bundler_entry_point-93a1e3d2-f694-441c-8926-7ce5fc1adfb7.mdx\",lineNumber:27,columnNumber:296},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-93a1e3d2-f694-441c-8926-7ce5fc1adfb7.mdx\",lineNumber:27,columnNumber:348},this),(0,n.jsxDEV)(e.span,{style:{color:\"#9ECBFF\"},children:\"'name'\"},void 0,!1,{fileName:\"/Users/andreasthomas/github/chronark/chronark.com/content/projects/_mdx_bundler_entry_point-93a1e3d2-f694-441c-8926-7ce5fc1adfb7.mdx\",lineNumber:27,columnNumber:386},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-93a1e3d2-f694-441c-8926-7ce5fc1adfb7.mdx\",lineNumber:27,columnNumber:436},this)]},void 0,!0,{fileName:\"/Users/andreasthomas/github/chronark/chronark.com/content/projects/_mdx_bundler_entry_point-93a1e3d2-f694-441c-8926-7ce5fc1adfb7.mdx\",lineNumber:27,columnNumber:1},this),`\n`,(0,n.jsxDEV)(e.span,{className:\"line\",children:[(0,n.jsxDEV)(e.span,{style:{color:\"#E1E4E8\"},children:\"console.\"},void 0,!1,{fileName:\"/Users/andreasthomas/github/chronark/chronark.com/content/projects/_mdx_bundler_entry_point-93a1e3d2-f694-441c-8926-7ce5fc1adfb7.mdx\",lineNumber:28,columnNumber:20},this),(0,n.jsxDEV)(e.span,{style:{color:\"#B392F0\"},children:\"log\"},void 0,!1,{fileName:\"/Users/andreasthomas/github/chronark/chronark.com/content/projects/_mdx_bundler_entry_point-93a1e3d2-f694-441c-8926-7ce5fc1adfb7.mdx\",lineNumber:28,columnNumber:64},this),(0,n.jsxDEV)(e.span,{style:{color:\"#E1E4E8\"},children:\"(data)\"},void 0,!1,{fileName:\"/Users/andreasthomas/github/chronark/chronark.com/content/projects/_mdx_bundler_entry_point-93a1e3d2-f694-441c-8926-7ce5fc1adfb7.mdx\",lineNumber:28,columnNumber:103},this)]},void 0,!0,{fileName:\"/Users/andreasthomas/github/chronark/chronark.com/content/projects/_mdx_bundler_entry_point-93a1e3d2-f694-441c-8926-7ce5fc1adfb7.mdx\",lineNumber:28,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-93a1e3d2-f694-441c-8926-7ce5fc1adfb7.mdx\",lineNumber:29,columnNumber:1},this),`\n`,(0,n.jsxDEV)(e.span,{className:\"line\",children:(0,n.jsxDEV)(e.span,{style:{color:\"#6A737D\"},children:\"// sets\"},void 0,!1,{fileName:\"/Users/andreasthomas/github/chronark/chronark.com/content/projects/_mdx_bundler_entry_point-93a1e3d2-f694-441c-8926-7ce5fc1adfb7.mdx\",lineNumber:30,columnNumber:20},this)},void 0,!1,{fileName:\"/Users/andreasthomas/github/chronark/chronark.com/content/projects/_mdx_bundler_entry_point-93a1e3d2-f694-441c-8926-7ce5fc1adfb7.mdx\",lineNumber:30,columnNumber:1},this),`\n`,(0,n.jsxDEV)(e.span,{className:\"line\",children:[(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-93a1e3d2-f694-441c-8926-7ce5fc1adfb7.mdx\",lineNumber:31,columnNumber:20},this),(0,n.jsxDEV)(e.span,{style:{color:\"#E1E4E8\"},children:\" redis.\"},void 0,!1,{fileName:\"/Users/andreasthomas/github/chronark/chronark.com/content/projects/_mdx_bundler_entry_point-93a1e3d2-f694-441c-8926-7ce5fc1adfb7.mdx\",lineNumber:31,columnNumber:61},this),(0,n.jsxDEV)(e.span,{style:{color:\"#B392F0\"},children:\"sadd\"},void 0,!1,{fileName:\"/Users/andreasthomas/github/chronark/chronark.com/content/projects/_mdx_bundler_entry_point-93a1e3d2-f694-441c-8926-7ce5fc1adfb7.mdx\",lineNumber:31,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-93a1e3d2-f694-441c-8926-7ce5fc1adfb7.mdx\",lineNumber:31,columnNumber:144},this),(0,n.jsxDEV)(e.span,{style:{color:\"#9ECBFF\"},children:\"'animals'\"},void 0,!1,{fileName:\"/Users/andreasthomas/github/chronark/chronark.com/content/projects/_mdx_bundler_entry_point-93a1e3d2-f694-441c-8926-7ce5fc1adfb7.mdx\",lineNumber:31,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-93a1e3d2-f694-441c-8926-7ce5fc1adfb7.mdx\",lineNumber:31,columnNumber:234},this),(0,n.jsxDEV)(e.span,{style:{color:\"#9ECBFF\"},children:\"'cat'\"},void 0,!1,{fileName:\"/Users/andreasthomas/github/chronark/chronark.com/content/projects/_mdx_bundler_entry_point-93a1e3d2-f694-441c-8926-7ce5fc1adfb7.mdx\",lineNumber:31,columnNumber:272},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-93a1e3d2-f694-441c-8926-7ce5fc1adfb7.mdx\",lineNumber:31,columnNumber:321},this)]},void 0,!0,{fileName:\"/Users/andreasthomas/github/chronark/chronark.com/content/projects/_mdx_bundler_entry_point-93a1e3d2-f694-441c-8926-7ce5fc1adfb7.mdx\",lineNumber:31,columnNumber:1},this),`\n`,(0,n.jsxDEV)(e.span,{className:\"line\",children:[(0,n.jsxDEV)(e.span,{style:{color:\"#E1E4E8\"},children:\"data \"},void 0,!1,{fileName:\"/Users/andreasthomas/github/chronark/chronark.com/content/projects/_mdx_bundler_entry_point-93a1e3d2-f694-441c-8926-7ce5fc1adfb7.mdx\",lineNumber:32,columnNumber:20},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-93a1e3d2-f694-441c-8926-7ce5fc1adfb7.mdx\",lineNumber:32,columnNumber:62},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-93a1e3d2-f694-441c-8926-7ce5fc1adfb7.mdx\",lineNumber:32,columnNumber:99},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-93a1e3d2-f694-441c-8926-7ce5fc1adfb7.mdx\",lineNumber:32,columnNumber:136},this),(0,n.jsxDEV)(e.span,{style:{color:\"#E1E4E8\"},children:\" redis.\"},void 0,!1,{fileName:\"/Users/andreasthomas/github/chronark/chronark.com/content/projects/_mdx_bundler_entry_point-93a1e3d2-f694-441c-8926-7ce5fc1adfb7.mdx\",lineNumber:32,columnNumber:177},this),(0,n.jsxDEV)(e.span,{style:{color:\"#B392F0\"},children:\"spop\"},void 0,!1,{fileName:\"/Users/andreasthomas/github/chronark/chronark.com/content/projects/_mdx_bundler_entry_point-93a1e3d2-f694-441c-8926-7ce5fc1adfb7.mdx\",lineNumber:32,columnNumber:220},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-93a1e3d2-f694-441c-8926-7ce5fc1adfb7.mdx\",lineNumber:32,columnNumber:260},this),(0,n.jsxDEV)(e.span,{style:{color:\"#9ECBFF\"},children:\"'animals'\"},void 0,!1,{fileName:\"/Users/andreasthomas/github/chronark/chronark.com/content/projects/_mdx_bundler_entry_point-93a1e3d2-f694-441c-8926-7ce5fc1adfb7.mdx\",lineNumber:32,columnNumber:297},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-93a1e3d2-f694-441c-8926-7ce5fc1adfb7.mdx\",lineNumber:32,columnNumber:350},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-93a1e3d2-f694-441c-8926-7ce5fc1adfb7.mdx\",lineNumber:32,columnNumber:388},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-93a1e3d2-f694-441c-8926-7ce5fc1adfb7.mdx\",lineNumber:32,columnNumber:425},this)]},void 0,!0,{fileName:\"/Users/andreasthomas/github/chronark/chronark.com/content/projects/_mdx_bundler_entry_point-93a1e3d2-f694-441c-8926-7ce5fc1adfb7.mdx\",lineNumber:32,columnNumber:1},this),`\n`,(0,n.jsxDEV)(e.span,{className:\"line\",children:[(0,n.jsxDEV)(e.span,{style:{color:\"#E1E4E8\"},children:\"console.\"},void 0,!1,{fileName:\"/Users/andreasthomas/github/chronark/chronark.com/content/projects/_mdx_bundler_entry_point-93a1e3d2-f694-441c-8926-7ce5fc1adfb7.mdx\",lineNumber:33,columnNumber:20},this),(0,n.jsxDEV)(e.span,{style:{color:\"#B392F0\"},children:\"log\"},void 0,!1,{fileName:\"/Users/andreasthomas/github/chronark/chronark.com/content/projects/_mdx_bundler_entry_point-93a1e3d2-f694-441c-8926-7ce5fc1adfb7.mdx\",lineNumber:33,columnNumber:64},this),(0,n.jsxDEV)(e.span,{style:{color:\"#E1E4E8\"},children:\"(data)\"},void 0,!1,{fileName:\"/Users/andreasthomas/github/chronark/chronark.com/content/projects/_mdx_bundler_entry_point-93a1e3d2-f694-441c-8926-7ce5fc1adfb7.mdx\",lineNumber:33,columnNumber:103},this)]},void 0,!0,{fileName:\"/Users/andreasthomas/github/chronark/chronark.com/content/projects/_mdx_bundler_entry_point-93a1e3d2-f694-441c-8926-7ce5fc1adfb7.mdx\",lineNumber:33,columnNumber:1},this)]},void 0,!0,{fileName:\"/Users/andreasthomas/github/chronark/chronark.com/content/projects/_mdx_bundler_entry_point-93a1e3d2-f694-441c-8926-7ce5fc1adfb7.mdx\",lineNumber:1,columnNumber:79},this)},void 0,!1,{fileName:\"/Users/andreasthomas/github/chronark/chronark.com/content/projects/_mdx_bundler_entry_point-93a1e3d2-f694-441c-8926-7ce5fc1adfb7.mdx\",lineNumber:1,columnNumber:1},this)},void 0,!1,{fileName:\"/Users/andreasthomas/github/chronark/chronark.com/content/projects/_mdx_bundler_entry_point-93a1e3d2-f694-441c-8926-7ce5fc1adfb7.mdx\",lineNumber:53,columnNumber:1},this)]},void 0,!0,{fileName:\"/Users/andreasthomas/github/chronark/chronark.com/content/projects/_mdx_bundler_entry_point-93a1e3d2-f694-441c-8926-7ce5fc1adfb7.mdx\",lineNumber:1,columnNumber:1},this)}function Nn(l={}){let{wrapper:e}=l.components||{};return e?(0,n.jsxDEV)(e,Object.assign({},l,{children:(0,n.jsxDEV)(Fe,l,void 0,!1,{fileName:\"/Users/andreasthomas/github/chronark/chronark.com/content/projects/_mdx_bundler_entry_point-93a1e3d2-f694-441c-8926-7ce5fc1adfb7.mdx\"},this)}),void 0,!1,{fileName:\"/Users/andreasthomas/github/chronark/chronark.com/content/projects/_mdx_bundler_entry_point-93a1e3d2-f694-441c-8926-7ce5fc1adfb7.mdx\"},this):Fe(l)}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;" + "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: ,\n 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=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(\"\")&&(f=f.replace(\"\",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\",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{\"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": { diff --git a/.contentlayer/generated/Project/projects__upstash-web-analytics.mdx.json b/.contentlayer/generated/Project/projects__upstash-web-analytics.mdx.json index 60f4eb2..d0fd40b 100644 --- a/.contentlayer/generated/Project/projects__upstash-web-analytics.mdx.json +++ b/.contentlayer/generated/Project/projects__upstash-web-analytics.mdx.json @@ -4,8 +4,8 @@ "description": "A library to record and analyse web page traffic and user behaviour", "repository": "upstash/web-analytics", "body": { - "raw": "\nTODO:", - "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=(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 lr(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(fr(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\"),w=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=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(\"\")&&(p=p.replace(\"\",e.displayName)),typeof e==\"function\"&&j.set(e,p),p}while(l>=1&&f>=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 w: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={},le=_.ReactDebugCurrentFrame;function D(e){if(e){var r=e._owner,t=x(e.type,e._source,r?r.type:null);le.setExtraStackFrame(t)}else le.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(l){a=l}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 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,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=h(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',h(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: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 l=e.defaultProps;for(u in l)o[u]===void 0&&(o[u]=l[u])}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 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\",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,u);if(f==null)return f;if(o){var p=r.children;if(p!==void 0)if(n)if(V(p)){for(var T=0;T{\"use strict\";Oe.exports=Ce()});var Er={};vr(Er,{default:()=>mr,frontmatter:()=>hr});var F=pr(we()),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:\"TODO:\"},void 0,!1,{fileName:\"/Users/andreasthomas/github/chronark/chronark.com/content/projects/_mdx_bundler_entry_point-6692e122-da3d-46ed-b1b6-14cd52b3c074.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-6692e122-da3d-46ed-b1b6-14cd52b3c074.mdx\"},this)}),void 0,!1,{fileName:\"/Users/andreasthomas/github/chronark/chronark.com/content/projects/_mdx_bundler_entry_point-6692e122-da3d-46ed-b1b6-14cd52b3c074.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;" + "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=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(\"\")&&(p=p.replace(\"\",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\",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{\"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": { diff --git a/.contentlayer/generated/index.d.ts b/.contentlayer/generated/index.d.ts index 5759d7b..5b3de12 100644 --- a/.contentlayer/generated/index.d.ts +++ b/.contentlayer/generated/index.d.ts @@ -1,11 +1,10 @@ // NOTE This file is auto-generated by Contentlayer -import { Page, Project, DocumentTypes } from './types' +import { Page, Project, DocumentTypes } from "./types"; -export * from './types' +export * from "./types"; -export declare const allPages: Page[] -export declare const allProjects: Project[] - -export declare const allDocuments: DocumentTypes[] +export declare const allPages: Page[]; +export declare const allProjects: Project[]; +export declare const allDocuments: DocumentTypes[]; diff --git a/.contentlayer/generated/index.mjs b/.contentlayer/generated/index.mjs index d181467..301efc4 100644 --- a/.contentlayer/generated/index.mjs +++ b/.contentlayer/generated/index.mjs @@ -1,12 +1,12 @@ // NOTE This file is auto-generated by Contentlayer -export { isType } from 'contentlayer/client' +export { isType } from "contentlayer/client"; // NOTE During development Contentlayer imports from `.mjs` files to improve HMR speeds. // During (production) builds Contentlayer it imports from `.json` files to improve build performance. -import { allPages } from './Page/_index.mjs' -import { allProjects } from './Project/_index.mjs' +import allPages from "./Page/_index.json" assert { type: "json" }; +import allProjects from "./Project/_index.json" assert { type: "json" }; -export { allPages, allProjects } +export { allPages, allProjects }; -export const allDocuments = [...allPages, ...allProjects] +export const allDocuments = [...allPages, ...allProjects]; diff --git a/.contentlayer/generated/types.d.ts b/.contentlayer/generated/types.d.ts index 787e9fd..e718afa 100644 --- a/.contentlayer/generated/types.d.ts +++ b/.contentlayer/generated/types.d.ts @@ -1,79 +1,78 @@ // NOTE This file is auto-generated by Contentlayer -import type { Markdown, MDX, ImageFieldData, IsoDateTimeString } from 'contentlayer/core' -import * as Local from 'contentlayer/source-files' +import type { + Markdown, + MDX, + ImageFieldData, + IsoDateTimeString, +} from "contentlayer/core"; +import * as Local from "contentlayer/source-files"; -export { isType } from 'contentlayer/client' +export { isType } from "contentlayer/client"; -export type { Markdown, MDX, ImageFieldData, IsoDateTimeString } +export type { Markdown, MDX, ImageFieldData, IsoDateTimeString }; /** Document types */ export type Page = { - /** File path relative to `contentDirPath` */ - _id: string - _raw: Local.RawDocumentData - type: 'Page' - title: string - description?: string | undefined - /** MDX file body */ - body: MDX - path: string - slug: string -} + /** File path relative to `contentDirPath` */ + _id: string; + _raw: Local.RawDocumentData; + type: "Page"; + title: string; + description?: string | undefined; + /** MDX file body */ + body: MDX; + path: string; + slug: string; +}; export type Project = { - /** File path relative to `contentDirPath` */ - _id: string - _raw: Local.RawDocumentData - type: 'Project' - published?: boolean | undefined - title: string - description: string - date?: IsoDateTimeString | undefined - url?: string | undefined - repository?: string | undefined - /** MDX file body */ - body: MDX - path: string - slug: string -} + /** File path relative to `contentDirPath` */ + _id: string; + _raw: Local.RawDocumentData; + type: "Project"; + published?: boolean | undefined; + title: string; + description: string; + date?: IsoDateTimeString | undefined; + url?: string | undefined; + repository?: string | undefined; + /** MDX file body */ + body: MDX; + path: string; + slug: string; +}; /** Nested types */ - /** Helper types */ -export type AllTypes = DocumentTypes | NestedTypes -export type AllTypeNames = DocumentTypeNames | NestedTypeNames +export type AllTypes = DocumentTypes | NestedTypes; +export type AllTypeNames = DocumentTypeNames | NestedTypeNames; -export type DocumentTypes = Page | Project -export type DocumentTypeNames = 'Page' | 'Project' - -export type NestedTypes = never -export type NestedTypeNames = never +export type DocumentTypes = Page | Project; +export type DocumentTypeNames = "Page" | "Project"; +export type NestedTypes = never; +export type NestedTypeNames = never; export interface ContentlayerGenTypes { - documentTypes: DocumentTypes - documentTypeMap: DocumentTypeMap - documentTypeNames: DocumentTypeNames - nestedTypes: NestedTypes - nestedTypeMap: NestedTypeMap - nestedTypeNames: NestedTypeNames - allTypeNames: AllTypeNames + documentTypes: DocumentTypes; + documentTypeMap: DocumentTypeMap; + documentTypeNames: DocumentTypeNames; + nestedTypes: NestedTypes; + nestedTypeMap: NestedTypeMap; + nestedTypeNames: NestedTypeNames; + allTypeNames: AllTypeNames; } declare global { - interface ContentlayerGen extends ContentlayerGenTypes {} + interface ContentlayerGen extends ContentlayerGenTypes {} } export type DocumentTypeMap = { - Page: Page - Project: Project -} + Page: Page; + Project: Project; +}; -export type NestedTypeMap = { - -} - - \ No newline at end of file +export type NestedTypeMap = {}; diff --git a/app/projects/[slug]/header.tsx b/app/projects/[slug]/header.tsx index ddaf35d..8b3ff0f 100644 --- a/app/projects/[slug]/header.tsx +++ b/app/projects/[slug]/header.tsx @@ -1,9 +1,8 @@ "use client"; import { ArrowLeft, Github, Twitter } from "lucide-react"; import Link from "next/link"; -import React, { useEffect, useMemo, useRef, useState } from "react"; +import React, { useEffect, useRef, useState } from "react"; import { usePathname } from "next/navigation"; -import Balancer from "react-wrap-balancer"; type Props = { project: { @@ -27,7 +26,7 @@ export const Header: React.FC = ({ project }) => { } if (project.url) { links.push({ - label: "Live", + label: "Website", href: project.url, }); } @@ -91,7 +90,7 @@ export const Header: React.FC = ({ project }) => {

- {project.title} + {project.title}

{project.description} diff --git a/app/projects/[slug]/page.tsx b/app/projects/[slug]/page.tsx index f571ef8..7f5d541 100644 --- a/app/projects/[slug]/page.tsx +++ b/app/projects/[slug]/page.tsx @@ -33,7 +33,7 @@ export default async function PostPage({ params }: Props) {

-
+
diff --git a/content/projects/upstash-cli.mdx b/content/projects/upstash-cli.mdx index ee195db..10c3e69 100644 --- a/content/projects/upstash-cli.mdx +++ b/content/projects/upstash-cli.mdx @@ -8,4 +8,109 @@ published: true --- -TODO: \ No newline at end of file + +Manage Upstash resources in your terminal or CI. + +![](https://raw.githubusercontent.com/upstash/cli/main/img/banner.svg) + +![GitHub release (latest SemVer)](https://img.shields.io/github/v/release/upstash/cli) +[![Downloads/week](https://img.shields.io/npm/dw/lstr.svg)](https://npmjs.org/package/@upstash/cli) + +# Installation + +## npm + +You can install upstash's cli directly from npm + +```bash +npm i -g @upstash/cli +``` + +It will be added as `upstash` to your system's path. + +## Compiled binaries: + +`upstash` is also available from the +[releases page](https://github.com/upstash/upstash-cli/releases/latest) compiled +for windows, linux and mac (both intel and m1). + +# Usage + +```bash +> upstash + + Usage: upstash + Version: development + + Description: + + Official cli for Upstash products + + Options: + + -h, --help - Show this help. + -V, --version - Show the version number for this program. + -c, --config - Path to .upstash.json file + + Commands: + + auth - Login and logout + redis - Manage redis database instances + kafka - Manage kafka clusters and topics + team - Manage your teams and their members + + Environment variables: + + UPSTASH_EMAIL - The email you use on upstash + UPSTASH_API_KEY - The api key from upstash +``` + +## Authentication + +When running `upstash` for the first time, you should log in using +`upstash auth login`. Provide your email and an api key. +[See here for how to get a key.](https://docs.upstash.com/redis/howto/developerapi#api-development) + +As an alternative to logging in, you can provide `UPSTASH_EMAIL` and +`UPSTASH_API_KEY` as environment variables. + +## Usage + +Let's create a new redis database: + +``` +> upstash redis create --name=my-db --region=eu-west-1 + Database has been created + + database_id a3e25299-132a-45b9-b026-c73f5a807859 + database_name my-db + database_type Pay as You Go + region eu-west-1 + type paid + port 37090 + creation_time 1652687630 + state active + password 88ae6392a1084d1186a3da37fb5f5a30 + user_email andreas@upstash.com + endpoint eu1-magnetic-lacewing-37090.upstash.io + edge false + multizone false + rest_token AZDiASQgYTNlMjUyOTktMTMyYS00NWI5LWIwMjYtYzczZjVhODA3ODU5ODhhZTYzOTJhMTA4NGQxMTg2YTNkYTM3ZmI1ZjVhMzA= + read_only_rest_token ApDiASQgYTNlMjUyOTktMTMyYS00NWI5LWIwMjYtYzczZjVhODA3ODU5O_InFjRVX1XHsaSjq1wSerFCugZ8t8O1aTfbF6Jhq1I= + + + You can visit your database details page: https://console.upstash.com/redis/a3e25299-132a-45b9-b026-c73f5a807859 + + Connect to your database with redis-cli: redis-cli -u redis://88ae6392a1084d1186a3da37fb5f5a30@eu1-magnetic-lacewing-37090.upstash.io:37090 +``` + +## Output + +Most commands support the `--json` flag to return the raw api response as json, +which you can parse and automate your system. + +```bash +> upstash redis create --name=test2113 --region=us-central1 --json | jq '.endpoint' + + "gusc1-clean-gelding-30208.upstash.io" +``` diff --git a/content/projects/upstash-core-analytics.mdx b/content/projects/upstash-core-analytics.mdx index ea41356..d656886 100644 --- a/content/projects/upstash-core-analytics.mdx +++ b/content/projects/upstash-core-analytics.mdx @@ -8,4 +8,93 @@ published: true --- -TODO: \ No newline at end of file + +This library offers some low level building blocks to record and analyze custom events in Redis. +It'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. + +## Quickstart + + +1. Create a redis database + +Go to [console.upstash.com/redis](https://console.upstash.com/redis) and create +a new global database. + +After creating the db, copy the `UPSTASH_REDIS_REST_URL` and `UPSTASH_REDIS_REST_TOKEN` to your `.env` file. + +3. Install `@upstash/analytics` in your project + +```bash +npm install @upstash/analytics @upstash/redis +``` + +4. Create an analytics client + +```ts +import { Analytyics } from "@upstash/analytics"; +import { Redis } from "@upstash/redis"; + +const analytics = new Analytics({ + redis: Redis.fromEnv(), + window: "1d", +}); +``` + + +5. Ingest some events + +An event consists of a `time` field and any additional key-value pairs that you can use to record any information you want. + +```ts +const event = { + time: Date.now() // optional (default: Date.now()) + userId: "chronark", + page: "/auth/login", + country: "DE", +} + +await analytics.ingest("pageviews", event); +``` + +4. Query your events + +```ts + +const result = await analytics.query("pageviews"); + +``` + +## Development + +This project uses `pnpm` for dependency management. + +#### Install dependencies + +```bash +pnpm install +``` + +#### Build + +```bash +pnpm build +``` + + +## Database Schema + +All metrics are stored in Redis `Hash` data types and sharded into buckets based on the `window` option. +``` +@upstash/analytics:{TABLE}:{TIMESTAMP} +``` +- `TABLE` is a namespace to group events together. ie for managing multiple projects int a single database +- `TIMESTAMP` is the starting timestamp of each window + +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. + +```json +{ + '{"page": "/auth/login","country": "DE"}': 5, + '{"page": "/auth/login","country": "US"}': 2 +} +``` diff --git a/content/projects/upstash-edge-flags.mdx b/content/projects/upstash-edge-flags.mdx index 8eccf1a..68cd1ba 100644 --- a/content/projects/upstash-edge-flags.mdx +++ b/content/projects/upstash-edge-flags.mdx @@ -8,4 +8,22 @@ published: true --- -TODO: \ No newline at end of file + +Whether you want to ship without breaking things, run A/B tests or just want to test in production, +feature flags are a great way to dynamically change the behaviour of your app without redeploying. We're excited to announce the public +beta release of our new feature flagging library: [@upstash/edge-flags](https://github.com/upstash/edge-flags). + +*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 +designed 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! + +With the ability to toggle features on and off at the edge, you can quickly respond +to user feedback and optimize the user experience. Whether you are looking to +perform A/B testing, gradually roll out a new feature, or simply have the +ability to turn things off in case of an issue, our feature flagging library has +you covered. + + + +## Reference + +Check out the full announcement on [upstash.com](https://upstash.com/blog/edge-flags-beta) for more details. \ No newline at end of file diff --git a/content/projects/upstash-qstash-sdk.mdx b/content/projects/upstash-qstash-sdk.mdx index 3249a01..3d3e24a 100644 --- a/content/projects/upstash-qstash-sdk.mdx +++ b/content/projects/upstash-qstash-sdk.mdx @@ -7,4 +7,15 @@ repository: upstash/sdk-qstash-ts published: true --- -TODO: \ No newline at end of file + +@upstash/qstash is the official client and consumer for [QStash](https://chronark.com/projects/qstash). + +QStash is the message broker between your serverless apps. You send an HTTP +request to QStash, that includes a destination, a payload and optional settings. +We durably store your message and will deliver it to the destination API via +HTTP. In case the destination is not ready to receive the message, we will retry +the message later, to guarentee at-least-once delivery. + +```bash +npm install @upstash/qstash +``` diff --git a/content/projects/upstash-ratelimit-analytics b/content/projects/upstash-ratelimit-analytics index 59a549b..748f3c2 100644 --- a/content/projects/upstash-ratelimit-analytics +++ b/content/projects/upstash-ratelimit-analytics @@ -1,8 +1,7 @@ --- title: Upstash Ratelimit Analytics description: Near realtime analytics for your ratelimits. Integrated into the @upstash/ratelimit library. -repository: upstash/ratelimit -date: "2023-03-01" +repository: upstash/ratelimit" website: https://console.upstash.com/ratelimit published: true diff --git a/content/projects/upstash-ratelimit.mdx b/content/projects/upstash-ratelimit.mdx index d294b9c..9a6fd6d 100644 --- a/content/projects/upstash-ratelimit.mdx +++ b/content/projects/upstash-ratelimit.mdx @@ -8,4 +8,42 @@ published: true --- -TODO: \ No newline at end of file +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. + +Upstash is a managed Redis-compatible database service designed for serverless applications. + +`@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: + +- Fixed window +- Sliding window +- Leaky bucket + + +Using `@upstash/ratelimit` is straightforward. First, you need to install the package using npm: + +```bash +npm install @upstash/ratelimit @upstash/redis +``` +Then, you can use it in your application: + +```ts +import { Ratelimit } from "@upstash/ratelimit" +import { Redis } from "@upstash/redis" + +const ratelimit = new Ratelimit({ + redis: new Redis({ + url: "", + token: "" + }), + limiter: Ratelimit.slidingWindow(10, "10s"), + analytics: true +}) + + +// Check if the client has exceeded the rate limit +const { success } = await ratelimit.limit("identifier") +``` + +In 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. + +`@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. \ No newline at end of file diff --git a/content/projects/upstash-react-ui.mdx b/content/projects/upstash-react-ui.mdx index 75d5b04..dce9472 100644 --- a/content/projects/upstash-react-ui.mdx +++ b/content/projects/upstash-react-ui.mdx @@ -8,4 +8,5 @@ published: true --- -TODO: \ No newline at end of file + +`@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. \ No newline at end of file diff --git a/content/projects/upstash-redis.mdx b/content/projects/upstash-redis.mdx index 12aa1fb..b373290 100644 --- a/content/projects/upstash-redis.mdx +++ b/content/projects/upstash-redis.mdx @@ -8,47 +8,15 @@ published: true --- +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 `@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. -`@upstash/redis` is an HTTP/REST based Redis client for typescript, built on top -of [Upstash REST API](https://docs.upstash.com/features/restapi). +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. -It is the only connectionless (HTTP based) Redis client and designed for: +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 `@upstash/redis` comes in handy. Instead of using TCP, it uses HTTP to communicate with the servers. -- Serverless functions (AWS Lambda ...) -- Cloudflare Workers (see - [the example](https://github.com/upstash/upstash-redis/tree/main/examples/cloudflare-workers)) -- Fastly Compute@Edge (see - [the example](https://github.com/upstash/upstash-redis/tree/main/examples/fastly)) -- Next.js, Jamstack ... -- Client side web/mobile applications -- WebAssembly -- and other environments where HTTP is preferred over TCP. +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. -See -[the list of APIs](https://docs.upstash.com/features/restapi#rest---redis-api-compatibility) -supported. - -## Quick Start - -### Install - -#### Node.js - -```bash -npm install @upstash/redis -``` - -#### Deno - -```ts -import { Redis } from "https://deno.land/x/upstash_redis/mod.ts"; -``` - -### Create database - -Create a new redis database on [upstash](https://console.upstash.com/) - -## Basic Usage: +One 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. ```ts import { Redis } from "@upstash/redis" @@ -74,14 +42,4 @@ console.log(data) await redis.lpush('elements', 'magnesium') data = await redis.lrange('elements', 0, 100 ) console.log(data) - -// hash -await redis.hset('people', {name: 'joe'}) -data = await redis.hget('people', 'name' ) -console.log(data) - -// sets -await redis.sadd('animals', 'cat') -data = await redis.spop('animals', 1) -console.log(data) -``` +``` \ No newline at end of file diff --git a/content/projects/upstash-web-analytics.mdx b/content/projects/upstash-web-analytics.mdx index 80db94c..0cc58dc 100644 --- a/content/projects/upstash-web-analytics.mdx +++ b/content/projects/upstash-web-analytics.mdx @@ -5,4 +5,4 @@ repository: upstash/web-analytics published: true --- -TODO: \ No newline at end of file +Coming soon \ No newline at end of file diff --git a/tailwind.config.js b/tailwind.config.js index d014984..4fc40bf 100644 --- a/tailwind.config.js +++ b/tailwind.config.js @@ -2,10 +2,22 @@ const defaultTheme = require("tailwindcss/defaultTheme"); /** @type {import('tailwindcss').Config} */ module.exports = { - content: ["./app/**/*.{js,ts,jsx,tsx}", "./mdx-components.tsx"], + content: [ + "./app/**/*.{js,ts,jsx,tsx}", + "./mdx-components.tsx", + "content/**/*.mdx", + ], theme: { extend: { + typography: { + quoteless: { + css: { + "blockquote p:first-of-type::before": { content: "none" }, + "blockquote p:first-of-type::after": { content: "none" }, + }, + }, + }, fontFamily: { sans: ["var(--font-inter)", ...defaultTheme.fontFamily.sans], display: ["var(--font-grotesk)"],