Liu Song’s Projects


~/Projects/cloudflare-workers-app

git clone https://code.lsong.org/cloudflare-workers-app

Blob

ref
master
path
./cloudflare-workers.min.js

const CloudflareWorker=()=>{const t=[],e=async(t,e)=>{if(!t)return(()=>new Response("Not Found",{status:404}))();const{action:n}=t,{method:o,path:s}=e;console.debug("[cfwjs]",o,s);var a=await n(e);if(a instanceof Response)return a;const r={};return"object"==typeof a&&(r["Content-Type"]="application/json",a=JSON.stringify(a)),new Response(a,{status:200,headers:r})},n=n=>{const{request:o}=n,{method:s,url:a}=o,{pathname:r,searchParams:p}=new URL(a);o.path=r,o.query=p;const c=((e,n)=>t.find(t=>(!e||t.method===e)&&(t.path instanceof RegExp?t.path.test(n):t.path===n)))(s,r);n.respondWith(e(c,o))};return n.route=((e,n,o)=>t.push({method:e,path:n,action:o})),n.get=((t,e)=>n.route("GET",t,e)),n.post=((t,e)=>n.route("POST",t,e)),n};