@adonix.org/cloud-spark 2.0.8 → 2.1.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/dist/cache.d.ts CHANGED
@@ -14,6 +14,12 @@ interface CacheInit {
14
14
  * to a cache key.
15
15
  */
16
16
  getKey: (request: Request) => URL;
17
+ /**
18
+ * Enables debug information in response headers.
19
+ * Currently adds the cache key header on cache hits.
20
+ * Default: FALSE
21
+ */
22
+ debug?: boolean;
17
23
  }
18
24
 
19
25
  /**
package/dist/cache.js CHANGED
@@ -1,3 +1,3 @@
1
- import F from'cache-control-parser';function G(n){return typeof n=="string"}function v(n){if(typeof n!="object"||n===null)throw new TypeError("CacheInit must be an object.");let{name:r,getKey:t}=n;S(r),z(t);}function S(n){if(n!==void 0&&!G(n))throw new TypeError("Cache name must be a string.")}function z(n){if(n!==void 0&&typeof n!="function")throw new TypeError("getKey must be a function.")}function M(n){if(!(n instanceof URL))throw new TypeError("getKey must return a URL.")}var f={parse:F.parse,stringify:F.stringify,DISABLE:Object.freeze({"no-cache":true,"no-store":true,"must-revalidate":true,"max-age":0})};var V=(E=>(E.GET="GET",E.PUT="PUT",E.HEAD="HEAD",E.POST="POST",E.PATCH="PATCH",E.DELETE="DELETE",E.OPTIONS="OPTIONS",E))(V||{}),{GET:A,PUT:se,HEAD:K,POST:oe,PATCH:ae,DELETE:ce,OPTIONS:Ee}=V;var _=(e=>(e[e.CONTINUE=100]="CONTINUE",e[e.SWITCHING_PROTOCOLS=101]="SWITCHING_PROTOCOLS",e[e.PROCESSING=102]="PROCESSING",e[e.EARLY_HINTS=103]="EARLY_HINTS",e[e.OK=200]="OK",e[e.CREATED=201]="CREATED",e[e.ACCEPTED=202]="ACCEPTED",e[e.NON_AUTHORITATIVE_INFORMATION=203]="NON_AUTHORITATIVE_INFORMATION",e[e.NO_CONTENT=204]="NO_CONTENT",e[e.RESET_CONTENT=205]="RESET_CONTENT",e[e.PARTIAL_CONTENT=206]="PARTIAL_CONTENT",e[e.MULTI_STATUS=207]="MULTI_STATUS",e[e.MULTIPLE_CHOICES=300]="MULTIPLE_CHOICES",e[e.MOVED_PERMANENTLY=301]="MOVED_PERMANENTLY",e[e.FOUND=302]="FOUND",e[e.SEE_OTHER=303]="SEE_OTHER",e[e.NOT_MODIFIED=304]="NOT_MODIFIED",e[e.USE_PROXY=305]="USE_PROXY",e[e.TEMPORARY_REDIRECT=307]="TEMPORARY_REDIRECT",e[e.PERMANENT_REDIRECT=308]="PERMANENT_REDIRECT",e[e.BAD_REQUEST=400]="BAD_REQUEST",e[e.UNAUTHORIZED=401]="UNAUTHORIZED",e[e.PAYMENT_REQUIRED=402]="PAYMENT_REQUIRED",e[e.FORBIDDEN=403]="FORBIDDEN",e[e.NOT_FOUND=404]="NOT_FOUND",e[e.METHOD_NOT_ALLOWED=405]="METHOD_NOT_ALLOWED",e[e.NOT_ACCEPTABLE=406]="NOT_ACCEPTABLE",e[e.PROXY_AUTHENTICATION_REQUIRED=407]="PROXY_AUTHENTICATION_REQUIRED",e[e.REQUEST_TIMEOUT=408]="REQUEST_TIMEOUT",e[e.CONFLICT=409]="CONFLICT",e[e.GONE=410]="GONE",e[e.LENGTH_REQUIRED=411]="LENGTH_REQUIRED",e[e.PRECONDITION_FAILED=412]="PRECONDITION_FAILED",e[e.REQUEST_TOO_LONG=413]="REQUEST_TOO_LONG",e[e.REQUEST_URI_TOO_LONG=414]="REQUEST_URI_TOO_LONG",e[e.UNSUPPORTED_MEDIA_TYPE=415]="UNSUPPORTED_MEDIA_TYPE",e[e.REQUESTED_RANGE_NOT_SATISFIABLE=416]="REQUESTED_RANGE_NOT_SATISFIABLE",e[e.EXPECTATION_FAILED=417]="EXPECTATION_FAILED",e[e.IM_A_TEAPOT=418]="IM_A_TEAPOT",e[e.INSUFFICIENT_SPACE_ON_RESOURCE=419]="INSUFFICIENT_SPACE_ON_RESOURCE",e[e.METHOD_FAILURE=420]="METHOD_FAILURE",e[e.MISDIRECTED_REQUEST=421]="MISDIRECTED_REQUEST",e[e.UNPROCESSABLE_ENTITY=422]="UNPROCESSABLE_ENTITY",e[e.LOCKED=423]="LOCKED",e[e.FAILED_DEPENDENCY=424]="FAILED_DEPENDENCY",e[e.UPGRADE_REQUIRED=426]="UPGRADE_REQUIRED",e[e.PRECONDITION_REQUIRED=428]="PRECONDITION_REQUIRED",e[e.TOO_MANY_REQUESTS=429]="TOO_MANY_REQUESTS",e[e.REQUEST_HEADER_FIELDS_TOO_LARGE=431]="REQUEST_HEADER_FIELDS_TOO_LARGE",e[e.UNAVAILABLE_FOR_LEGAL_REASONS=451]="UNAVAILABLE_FOR_LEGAL_REASONS",e[e.INTERNAL_SERVER_ERROR=500]="INTERNAL_SERVER_ERROR",e[e.NOT_IMPLEMENTED=501]="NOT_IMPLEMENTED",e[e.BAD_GATEWAY=502]="BAD_GATEWAY",e[e.SERVICE_UNAVAILABLE=503]="SERVICE_UNAVAILABLE",e[e.GATEWAY_TIMEOUT=504]="GATEWAY_TIMEOUT",e[e.HTTP_VERSION_NOT_SUPPORTED=505]="HTTP_VERSION_NOT_SUPPORTED",e[e.INSUFFICIENT_STORAGE=507]="INSUFFICIENT_STORAGE",e[e.NETWORK_AUTHENTICATION_REQUIRED=511]="NETWORK_AUTHENTICATION_REQUIRED",e))(_||{});var s={ACCEPT:"accept",ACCEPT_ENCODING:"accept-encoding",ACCEPT_LANGUAGE:"accept-language",AUTHORIZATION:"authorization",CACHE_CONTROL:"cache-control",CONTENT_DISPOSITION:"content-disposition",CONTENT_ENCODING:"content-encoding",CONTENT_LANGUAGE:"content-language",CONTENT_LENGTH:"content-length",CONTENT_RANGE:"content-range",CONTENT_TYPE:"content-type",CONTENT_MD5:"content-md5",COOKIE:"cookie",IF_MODIFIED_SINCE:"if-modified-since",IF_NONE_MATCH:"if-none-match",ORIGIN:"origin",RANGE:"range",SET_COOKIE:"set-cookie",VARY:"vary",UPGRADE:"upgrade",INTERNAL_VARIANT_SET:"internal-variant-set"},W=[s.CONTENT_TYPE,s.CONTENT_LENGTH,s.CONTENT_RANGE,s.CONTENT_ENCODING,s.CONTENT_LANGUAGE,s.CONTENT_DISPOSITION,s.CONTENT_MD5],k=[s.CONTENT_LENGTH,s.CONTENT_RANGE];function q(n){let r=new URL(n.url);return r.searchParams.sort(),r.hash="",r}function he(n){let r=new URL(n.url);return r.search="",r.hash="",r}var I=class{rules=[];use(...r){return this.rules.push(...r),this}execute(r,t){return this.rules.reduceRight((o,a)=>()=>a.apply(r,o),()=>t())()}};function N(n,r){return n<r?-1:n>r?1:0}function L(n,r,t){let i=Array.isArray(t)?t:[t],o=Array.from(new Set(i.map(a=>a.trim()))).filter(a=>a.length).sort(N);if(!o.length){n.delete(r);return}n.set(r,o.join(", "));}function Y(n,r,t){let i=Array.isArray(t)?t:[t];if(i.length===0)return;let a=h(n,r).concat(i.map(c=>c.trim()));L(n,r,a);}function h(n,r){let t=n.get(r)?.split(",").map(i=>i.trim()).filter(i=>i.length>0)??[];return Array.from(new Set(t)).sort(N)}function D(n,r){for(let t of r)n.delete(t);}var X="https://vary",$="*",j=[s.IF_NONE_MATCH,s.IF_MODIFIED_SINCE];function B(n,r){if(r.status!==200||n.method!==A||n.headers.has(s.AUTHORIZATION)||n.headers.has(s.COOKIE)||l(n.headers)["no-store"]||!r.headers.has(s.CACHE_CONTROL))return false;let i=l(r.headers),o=i["s-maxage"]??i["max-age"];if(o===void 0||o===0||i["no-store"]||i["no-cache"]||i.private||r.headers.has(s.SET_COOKIE)||P(r).includes($))return false;if(r.headers.has(s.INTERNAL_VARIANT_SET))throw new Error("Found conflicting vary header.");if(r.headers.has(s.CONTENT_RANGE))throw new Error("Found content-range header on 200 OK. Must use 206 Partial Content");return true}function l(n){return f.parse(n.get(s.CACHE_CONTROL)??"")}function w(n,r){let t=new Request(r.toString());for(let i of j){let o=n.get(i);o!==null&&t.headers.set(i,o);}return t}function P(n){return m(h(n.headers,s.VARY))}function m(n){let r=n.map(t=>t.toLowerCase()).filter(t=>t!==s.ACCEPT_ENCODING).sort(N);return Array.from(new Set(r))}function R(n,r,t){let i=[],o=m(t);for(let c of o){let E=n.get(c);E!==null&&i.push([c,Z(c,E)]);}let a=J(JSON.stringify([r.toString(),i]));return new URL(a,X)}function Z(n,r){switch(n.toLowerCase()){case s.ACCEPT:case s.ACCEPT_LANGUAGE:case s.ORIGIN:return r.toLowerCase();default:return r}}function J(n){let r=new TextEncoder().encode(n),t="";for(let i of r)t+=String.fromCodePoint(i);return btoa(t).replaceAll("+","-").replaceAll("/","_").replace(/={1,2}$/,"")}var d=class{async apply(r,t){let i=l(r.request.headers);if(!(i["no-store"]||(i["no-cache"]||i["max-age"]===0)&&!(r.request.headers.has(s.IF_NONE_MATCH)||r.request.headers.has(s.IF_MODIFIED_SINCE))))return t()}};function Q(n){return _[n].toLowerCase().replaceAll("_"," ").replaceAll(/\b\w/g,r=>r.toUpperCase())}var b=class{headers=new Headers;status=200;statusText;webSocket;mediaType="text/plain; charset=utf-8";get responseInit(){return {headers:this.headers,status:this.status,statusText:this.statusText??Q(this.status),webSocket:this.webSocket,encodeBody:"automatic"}}setHeader(r,t){L(this.headers,r,t);}mergeHeader(r,t){Y(this.headers,r,t);}addContentType(){this.headers.get(s.CONTENT_TYPE)||this.setHeader(s.CONTENT_TYPE,this.mediaType);}filterHeaders(){this.status===204?D(this.headers,k):this.status===304&&D(this.headers,W);}},U=class extends b{constructor(t){super();this.cache=t;}addCacheHeader(){this.cache&&this.setHeader(s.CACHE_CONTROL,f.stringify(this.cache));}},O=class extends U{constructor(t=null,i){super(i);this.body=t;}async response(){this.addCacheHeader();let t=[204,304].includes(this.status)?null:this.body;return t&&this.addContentType(),this.filterHeaders(),new Response(t,this.responseInit)}};var g=class extends O{constructor(r){super(),this.status=r.status,this.statusText=r.statusText,this.headers=new Headers(r.headers);}};var C=class{async apply(r,t){if(r.request.method===A)return t();if(r.request.method===K){let i=await t();return i?new g(i).response():void 0}}};var y=class{async apply(r,t){let i=r.request.headers;if(!i.has(s.AUTHORIZATION)&&!i.has(s.COOKIE))return t()}};var H=class{async apply(r,t){if(!r.request.headers.has(s.UPGRADE))return t()}};var T=class n extends O{_isModified=false;constructor(r){let t=m(r);if(t.length===0)throw new Error("The filtered vary array is empty.");super(),this.setHeader(s.INTERNAL_VARIANT_SET,t);}static new(r){return new n(m(r))}static restore(r){if(!n.isVariantResponse(r))throw new Error("The source response is not a variant response");let t=n.new(h(r.headers,s.INTERNAL_VARIANT_SET)),i=r.headers.get(s.CACHE_CONTROL);return i&&(t.cache=f.parse(i)),t}get vary(){return h(this.headers,s.INTERNAL_VARIANT_SET)}get isModified(){return this._isModified}append(r){let t=this.vary.length;this.mergeHeader(s.INTERNAL_VARIANT_SET,m(r)),this._isModified=this.vary.length!==t;}static isVariantResponse(r){return r.headers.has(s.INTERNAL_VARIANT_SET)}expireAfter(r){let t=l(r.headers),i=t["s-maxage"]??t["max-age"];if(i===void 0)return;let o=this.cache?.["s-maxage"];(o===void 0||i>o)&&(this.cache={"s-maxage":i},this._isModified=true);}};var x=class{init;constructor(r){let{name:t,getKey:i=q}=r;this.init={name:t?.trim()||void 0,getKey:i};}async handle(r,t){let i=this.init.name?await caches.open(this.init.name):caches.default,a=await new I().use(new d).use(new C).use(new H).use(new y).execute(r,()=>this.getCached(i,r.request));if(a)return a;let c=await t();return r.ctx.waitUntil(this.setCached(i,r.request,c)),c}async getCached(r,t){let i=this.getCacheKey(t),o=w(t.headers,i),a=await r.match(o);if(!a)return;if(a.status!==200)return a;let c=t.headers.get(s.RANGE);if(!T.isVariantResponse(a))return c===null?a:(o.headers.set(s.RANGE,c),await r.match(o));let E=T.restore(a).vary,u=R(t.headers,i,E),p=w(t.headers,u);return c!==null&&p.headers.set(s.RANGE,c),await r.match(p)}async setCached(r,t,i){if(!B(t,i))return;let o=this.getCacheKey(t),a=i.clone(),c=P(a),E=await r.match(o);if(!E){if(c.length===0){await r.put(o,a);return}let p=T.new(c);p.expireAfter(a),await r.put(o,await p.response()),await r.put(R(t.headers,o,p.vary),a);return}if(T.isVariantResponse(E)){let p=T.restore(E);p.expireAfter(a),c.length>0&&(p.append(c),p.isModified&&await r.put(o,await p.response())),await r.put(R(t.headers,o,p.vary),a);return}if(c.length===0){await r.put(o,a);return}let u=T.new(c);u.expireAfter(a),await r.put(o,await u.response()),await r.put(R(t.headers,o,u.vary),a);}getCacheKey(r){let t=this.init.getKey(r);return M(t),t.hash="",t}};function or(n={}){return v(n),new x(n)}
2
- export{or as cache,q as sortSearchParams,he as stripSearchParams};//# sourceMappingURL=cache.js.map
1
+ import W from'cache-control-parser';function G(n){return typeof n=="string"}function v(n){return typeof n=="boolean"}function M(n){if(typeof n!="object"||n===null)throw new TypeError("CacheInit must be an object.");let{name:r,debug:t,getKey:i}=n;X(r),j(i),Z(t);}function X(n){if(n!==void 0&&!G(n))throw new TypeError("Cache name must be a string.")}function j(n){if(n!==void 0&&typeof n!="function")throw new TypeError("getKey must be a function.")}function F(n){if(!(n instanceof URL))throw new TypeError("getKey must return a URL.")}function Z(n){if(n!==void 0&&!v(n))throw new TypeError("Cache debug must be a boolean.")}var s={ACCEPT:"accept",ACCEPT_ENCODING:"accept-encoding",ACCEPT_LANGUAGE:"accept-language",AUTHORIZATION:"authorization",CACHE_CONTROL:"cache-control",CONTENT_DISPOSITION:"content-disposition",CONTENT_ENCODING:"content-encoding",CONTENT_LANGUAGE:"content-language",CONTENT_LENGTH:"content-length",CONTENT_RANGE:"content-range",CONTENT_TYPE:"content-type",CONTENT_MD5:"content-md5",COOKIE:"cookie",IF_MODIFIED_SINCE:"if-modified-since",IF_NONE_MATCH:"if-none-match",ORIGIN:"origin",RANGE:"range",SET_COOKIE:"set-cookie",VARY:"vary",UPGRADE:"upgrade",INTERNAL_VARIANT_SET:"cs-internal-variant-set",CACHE_KEY:"cs-cache-key",CACHE_DECODED_KEY:"cs-cache-decoded-key",CACHE_REQUEST_HEADERS:"cs-cache-req-headers"},K=[s.CONTENT_TYPE,s.CONTENT_LENGTH,s.CONTENT_RANGE,s.CONTENT_ENCODING,s.CONTENT_LANGUAGE,s.CONTENT_DISPOSITION,s.CONTENT_MD5],V=[s.CONTENT_LENGTH,s.CONTENT_RANGE];function k(n){let r=new URL(n.url);return r.searchParams.sort(),r.hash="",r}function ce(n){let r=new URL(n.url);return r.search="",r.hash="",r}var d=class{rules=[];use(...r){return this.rules.push(...r),this}execute(r,t){return this.rules.reduceRight((o,a)=>()=>a.apply(r,o),()=>t())()}};var h={parse:W.parse,stringify:W.stringify,DISABLE:Object.freeze({"no-cache":true,"no-store":true,"must-revalidate":true,"max-age":0})};var Y=(E=>(E.GET="GET",E.PUT="PUT",E.HEAD="HEAD",E.POST="POST",E.PATCH="PATCH",E.DELETE="DELETE",E.OPTIONS="OPTIONS",E))(Y||{}),{GET:A,PUT:le,HEAD:q,POST:Te,PATCH:ue,DELETE:me,OPTIONS:Re}=Y;var _=(e=>(e[e.CONTINUE=100]="CONTINUE",e[e.SWITCHING_PROTOCOLS=101]="SWITCHING_PROTOCOLS",e[e.PROCESSING=102]="PROCESSING",e[e.EARLY_HINTS=103]="EARLY_HINTS",e[e.OK=200]="OK",e[e.CREATED=201]="CREATED",e[e.ACCEPTED=202]="ACCEPTED",e[e.NON_AUTHORITATIVE_INFORMATION=203]="NON_AUTHORITATIVE_INFORMATION",e[e.NO_CONTENT=204]="NO_CONTENT",e[e.RESET_CONTENT=205]="RESET_CONTENT",e[e.PARTIAL_CONTENT=206]="PARTIAL_CONTENT",e[e.MULTI_STATUS=207]="MULTI_STATUS",e[e.MULTIPLE_CHOICES=300]="MULTIPLE_CHOICES",e[e.MOVED_PERMANENTLY=301]="MOVED_PERMANENTLY",e[e.FOUND=302]="FOUND",e[e.SEE_OTHER=303]="SEE_OTHER",e[e.NOT_MODIFIED=304]="NOT_MODIFIED",e[e.USE_PROXY=305]="USE_PROXY",e[e.TEMPORARY_REDIRECT=307]="TEMPORARY_REDIRECT",e[e.PERMANENT_REDIRECT=308]="PERMANENT_REDIRECT",e[e.BAD_REQUEST=400]="BAD_REQUEST",e[e.UNAUTHORIZED=401]="UNAUTHORIZED",e[e.PAYMENT_REQUIRED=402]="PAYMENT_REQUIRED",e[e.FORBIDDEN=403]="FORBIDDEN",e[e.NOT_FOUND=404]="NOT_FOUND",e[e.METHOD_NOT_ALLOWED=405]="METHOD_NOT_ALLOWED",e[e.NOT_ACCEPTABLE=406]="NOT_ACCEPTABLE",e[e.PROXY_AUTHENTICATION_REQUIRED=407]="PROXY_AUTHENTICATION_REQUIRED",e[e.REQUEST_TIMEOUT=408]="REQUEST_TIMEOUT",e[e.CONFLICT=409]="CONFLICT",e[e.GONE=410]="GONE",e[e.LENGTH_REQUIRED=411]="LENGTH_REQUIRED",e[e.PRECONDITION_FAILED=412]="PRECONDITION_FAILED",e[e.REQUEST_TOO_LONG=413]="REQUEST_TOO_LONG",e[e.REQUEST_URI_TOO_LONG=414]="REQUEST_URI_TOO_LONG",e[e.UNSUPPORTED_MEDIA_TYPE=415]="UNSUPPORTED_MEDIA_TYPE",e[e.REQUESTED_RANGE_NOT_SATISFIABLE=416]="REQUESTED_RANGE_NOT_SATISFIABLE",e[e.EXPECTATION_FAILED=417]="EXPECTATION_FAILED",e[e.IM_A_TEAPOT=418]="IM_A_TEAPOT",e[e.INSUFFICIENT_SPACE_ON_RESOURCE=419]="INSUFFICIENT_SPACE_ON_RESOURCE",e[e.METHOD_FAILURE=420]="METHOD_FAILURE",e[e.MISDIRECTED_REQUEST=421]="MISDIRECTED_REQUEST",e[e.UNPROCESSABLE_ENTITY=422]="UNPROCESSABLE_ENTITY",e[e.LOCKED=423]="LOCKED",e[e.FAILED_DEPENDENCY=424]="FAILED_DEPENDENCY",e[e.UPGRADE_REQUIRED=426]="UPGRADE_REQUIRED",e[e.PRECONDITION_REQUIRED=428]="PRECONDITION_REQUIRED",e[e.TOO_MANY_REQUESTS=429]="TOO_MANY_REQUESTS",e[e.REQUEST_HEADER_FIELDS_TOO_LARGE=431]="REQUEST_HEADER_FIELDS_TOO_LARGE",e[e.UNAVAILABLE_FOR_LEGAL_REASONS=451]="UNAVAILABLE_FOR_LEGAL_REASONS",e[e.INTERNAL_SERVER_ERROR=500]="INTERNAL_SERVER_ERROR",e[e.NOT_IMPLEMENTED=501]="NOT_IMPLEMENTED",e[e.BAD_GATEWAY=502]="BAD_GATEWAY",e[e.SERVICE_UNAVAILABLE=503]="SERVICE_UNAVAILABLE",e[e.GATEWAY_TIMEOUT=504]="GATEWAY_TIMEOUT",e[e.HTTP_VERSION_NOT_SUPPORTED=505]="HTTP_VERSION_NOT_SUPPORTED",e[e.INSUFFICIENT_STORAGE=507]="INSUFFICIENT_STORAGE",e[e.NETWORK_AUTHENTICATION_REQUIRED=511]="NETWORK_AUTHENTICATION_REQUIRED",e))(_||{});function R(n,r){return n<r?-1:n>r?1:0}function D(n,r,t){let i=Array.isArray(t)?t:[t],o=Array.from(new Set(i.map(a=>a.trim()))).filter(a=>a.length).sort(R);if(!o.length){n.delete(r);return}n.set(r,o.join(", "));}function B(n,r,t){let i=Array.isArray(t)?t:[t];if(i.length===0)return;let a=l(n,r).concat(i.map(c=>c.trim()));D(n,r,a);}function l(n,r){let t=n.get(r)?.split(",").map(i=>i.trim()).filter(i=>i.length>0)??[];return Array.from(new Set(t)).sort(R)}function L(n,r){for(let t of r)n.delete(t);}var Q="https://vary",J="*",ee=[s.IF_NONE_MATCH,s.IF_MODIFIED_SINCE];function S(n,r){if(r.status!==200||n.method!==A||n.headers.has(s.AUTHORIZATION)||n.headers.has(s.COOKIE)||T(n.headers)["no-store"]||!r.headers.has(s.CACHE_CONTROL))return false;let i=T(r.headers),o=i["s-maxage"]??i["max-age"];if(o===void 0||o===0||i["no-store"]||i["no-cache"]||i.private||r.headers.has(s.SET_COOKIE)||b(r).includes(J))return false;if(r.headers.has(s.INTERNAL_VARIANT_SET))throw new Error("Found conflicting vary header.");if(r.headers.has(s.CONTENT_RANGE))throw new Error("Found content-range header on 200 OK. Must use 206 Partial Content");return true}function T(n){return h.parse(n.get(s.CACHE_CONTROL)??"")}function w(n,r){let t=new Request(r.toString());for(let i of ee){let o=n.get(i);o!==null&&t.headers.set(i,o);}return t}function b(n){return u(l(n.headers,s.VARY))}function u(n){let r=n.map(t=>t.toLowerCase()).filter(t=>t!==s.ACCEPT_ENCODING).sort(R);return Array.from(new Set(r))}function N(n,r,t){let i=[],o=u(t);for(let c of o){let E=n.get(c);E!==null&&i.push([c,re(c,E)]);}let a=te(JSON.stringify([r.toString(),i]));return new URL(a,Q)}function re(n,r){switch(n.toLowerCase()){case s.ACCEPT:case s.ACCEPT_LANGUAGE:case s.ORIGIN:return r.toLowerCase();default:return r}}function te(n){let r=new TextEncoder().encode(n),t="";for(let i of r)t+=String.fromCodePoint(i);return btoa(t).replaceAll("+","-").replaceAll("/","_").replace(/={1,2}$/,"")}function ne(n){let r=n.replace(/-/g,"+").replace(/_/g,"/").padEnd(Math.ceil(n.length/4)*4,"=");return new TextDecoder().decode(Uint8Array.from(atob(r),t=>t.charCodeAt(0)))}function $(n,r){let t=new Headers(r.headers),i=new URL(n.url);return t.append(s.CACHE_KEY,i.toString()),t.append(s.CACHE_REQUEST_HEADERS,[...n.headers].map(([o,a])=>`${o}: ${a}`).join(", ")||"none"),i.origin===Q&&t.append(s.CACHE_DECODED_KEY,ne(i.pathname.slice(1))),new Response(r.body,{status:r.status,statusText:r.statusText,headers:t})}var I=class{async apply(r,t){let i=T(r.request.headers);if(!(i["no-store"]||(i["no-cache"]||i["max-age"]===0)&&!(r.request.headers.has(s.IF_NONE_MATCH)||r.request.headers.has(s.IF_MODIFIED_SINCE))))return t()}};function z(n){return _[n].toLowerCase().replaceAll("_"," ").replaceAll(/\b\w/g,r=>r.toUpperCase())}var P=class{headers=new Headers;status=200;statusText;webSocket;mediaType="text/plain; charset=utf-8";get responseInit(){return {headers:this.headers,status:this.status,statusText:this.statusText??z(this.status),webSocket:this.webSocket,encodeBody:"automatic"}}setHeader(r,t){D(this.headers,r,t);}mergeHeader(r,t){B(this.headers,r,t);}addContentType(){this.headers.get(s.CONTENT_TYPE)||this.setHeader(s.CONTENT_TYPE,this.mediaType);}filterHeaders(){this.status===204?L(this.headers,V):this.status===304&&L(this.headers,K);}},U=class extends P{constructor(t){super();this.cache=t;}addCacheHeader(){this.cache&&this.setHeader(s.CACHE_CONTROL,h.stringify(this.cache));}},O=class extends U{constructor(t=null,i){super(i);this.body=t;}async response(){this.addCacheHeader();let t=[204,304].includes(this.status)?null:this.body;return t&&this.addContentType(),this.filterHeaders(),new Response(t,this.responseInit)}};var g=class extends O{constructor(r){super(),this.status=r.status,this.statusText=r.statusText,this.headers=new Headers(r.headers);}};var C=class{async apply(r,t){if(r.request.method===A)return t();if(r.request.method===q){let i=await t();return i?new g(i).response():void 0}}};var y=class{async apply(r,t){let i=r.request.headers;if(!i.has(s.AUTHORIZATION)&&!i.has(s.COOKIE))return t()}};var H=class{async apply(r,t){if(!r.request.headers.has(s.UPGRADE))return t()}};var f=class n extends O{_isModified=false;constructor(r){let t=u(r);if(t.length===0)throw new Error("The filtered vary array is empty.");super(),this.setHeader(s.INTERNAL_VARIANT_SET,t);}static new(r){return new n(u(r))}static restore(r){if(!n.isVariantResponse(r))throw new Error("The source response is not a variant response");let t=n.new(l(r.headers,s.INTERNAL_VARIANT_SET)),i=r.headers.get(s.CACHE_CONTROL);return i&&(t.cache=h.parse(i)),t}get vary(){return l(this.headers,s.INTERNAL_VARIANT_SET)}get isModified(){return this._isModified}append(r){let t=this.vary.length;this.mergeHeader(s.INTERNAL_VARIANT_SET,u(r)),this._isModified=this.vary.length!==t;}static isVariantResponse(r){return r.headers.has(s.INTERNAL_VARIANT_SET)}expireAfter(r){let t=T(r.headers),i=t["s-maxage"]??t["max-age"];if(i===void 0)return;let o=this.cache?.["s-maxage"];(o===void 0||i>o)&&(this.cache={"s-maxage":i},this._isModified=true);}};var x=class{init;constructor(r){let{name:t,getKey:i=k,debug:o=false}=r;this.init={name:t?.trim()||void 0,getKey:i,debug:o};}async handle(r,t){let i=this.init.name?await caches.open(this.init.name):caches.default,a=await new d().use(new I).use(new C).use(new H).use(new y).execute(r,()=>this.getCached(i,r.request));if(a)return a;let c=await t();return r.ctx.waitUntil(this.setCached(i,r.request,c)),c}async getCached(r,t){let i=this.getCacheKey(t),o=w(t.headers,i),a=await this.match(r,o);if(!a)return;let c=t.headers.get(s.RANGE);if(f.isVariantResponse(a)){let E=f.restore(a).vary,m=N(t.headers,i,E),p=w(t.headers,m);return c!==null&&p.headers.set(s.RANGE,c),await this.match(r,p)}return c===null?a:(o.headers.set(s.RANGE,c),await this.match(r,o))}async match(r,t){let i=await r.match(t);if(i)return this.init.debug?$(t,i):i}async setCached(r,t,i){if(!S(t,i))return;let o=this.getCacheKey(t),a=i.clone(),c=b(a),E=await r.match(o);if(!E){if(c.length===0){await r.put(o,a);return}let p=f.new(c);p.expireAfter(a),await r.put(o,await p.response()),await r.put(N(t.headers,o,p.vary),a);return}if(f.isVariantResponse(E)){let p=f.restore(E);p.expireAfter(a),c.length>0&&(p.append(c),p.isModified&&await r.put(o,await p.response())),await r.put(N(t.headers,o,p.vary),a);return}if(c.length===0){await r.put(o,a);return}let m=f.new(c);m.expireAfter(a),await r.put(o,await m.response()),await r.put(N(t.headers,o,m.vary),a);}getCacheKey(r){let t=this.init.getKey(r);return F(t),t.hash="",t}};function pr(n={}){return M(n),new x(n)}
2
+ export{pr as cache,k as sortSearchParams,ce as stripSearchParams};//# sourceMappingURL=cache.js.map
3
3
  //# sourceMappingURL=cache.js.map