UNPKG

cross-cf

Version:

Cross-environment DO and KV access

4 lines (3 loc) 21.1 kB
#!/usr/bin/env npx -y esno import e from"path";import{KVNamespace as t}from"@miniflare/kv";import{FileStorage as r}from"@miniflare/storage-file";import s from"assert";import n from"async_hooks";import i from"timers/promises";function a(){return a=Object.assign||function(e){for(var t=1;t<arguments.length;t++){var r=arguments[t];for(var s in r)Object.prototype.hasOwnProperty.call(r,s)&&(e[s]=r[s])}return e},a.apply(this,arguments)}function o(e,t){if(null==e)return{};var r,s,n={},i=Object.keys(e);for(s=0;s<i.length;s++)t.indexOf(r=i[s])>=0||(n[r]=e[r]);return n}function l(e){var t={exports:{}};return e(t,t.exports),t.exports}function u(e){return Array.isArray(e)?e:[e]}const c=/^\s+$/,h=/^\\!/,p=/^\\#/,d=/\r?\n/g,f=/^\.*\/|^\.+$/,g="undefined"!=typeof Symbol?Symbol.for("node-ignore"):"node-ignore",b=/([0-z])-([0-z])/g,m=()=>!1,y=[[/\\?\s+$/,e=>0===e.indexOf("\\")?" ":""],[/\\\s/g,()=>" "],[/[\\$.|*+(){^]/g,e=>`\\${e}`],[/(?!\\)\?/g,()=>"[^/]"],[/^\//,()=>"^"],[/\//g,()=>"\\/"],[/^\^*\\\*\\\*\\\//,()=>"^(?:.*\\/)?"],[/^(?=[^^])/,function(){return/\/(?!$)/.test(this)?"^":"(?:^|\\/)"}],[/\\\/\\\*\\\*(?=\\\/|$)/g,(e,t,r)=>t+6<r.length?"(?:\\/[^\\/]+)*":"\\/.+"],[/(^|[^\\]+)\\\*(?=.+)/g,(e,t)=>`${t}[^\\/]*`],[/\\\\\\(?=[$.|*+(){^])/g,()=>"\\"],[/\\\\/g,()=>"\\"],[/(\\)?\[([^\]/]*?)(\\*)($|\])/g,(e,t,r,s,n)=>"\\"===t?`\\[${r}${(e=>{const{length:t}=e;return e.slice(0,t-t%2)})(s)}${n}`:"]"===n&&s.length%2==0?`[${(e=>e.replace(b,(e,t,r)=>t.charCodeAt(0)<=r.charCodeAt(0)?e:""))(r)}${s}]`:"[]"],[/(?:[^*])$/,e=>/\/$/.test(e)?`${e}$`:`${e}(?=$|\\/$)`],[/(\^|\\\/)?\\\*$/,(e,t)=>(t?`${t}[^/]+`:"[^/]*")+"(?=$|\\/$)"]],v=Object.create(null),w=e=>"string"==typeof e;class O{constructor(e,t,r,s){this.origin=e,this.pattern=t,this.negative=r,this.regex=s}}const _=(e,t)=>{throw new t(e)},E=(e,t,r)=>w(e)?e?!E.isNotRelative(e)||r(`path should be a \`path.relative()\`d string, but got "${t}"`,RangeError):r("path must not be empty",TypeError):r(`path must be a string, but got \`${t}\``,TypeError),k=e=>f.test(e);E.isNotRelative=k,E.convert=e=>e;class ${constructor({ignorecase:e=!0,ignoreCase:t=e,allowRelativePaths:r=!1}={}){Object.defineProperty(this,g,{value:!0}),this._rules=[],this._ignoreCase=t,this._allowRelativePaths=r,this._initCache()}_initCache(){this._ignoreCache=Object.create(null),this._testCache=Object.create(null)}_addPattern(e){if(e&&e[g])return this._rules=this._rules.concat(e._rules),void(this._added=!0);if((e=>e&&w(e)&&!c.test(e)&&0!==e.indexOf("#"))(e)){const t=((e,t)=>{const r=e;let s=!1;0===e.indexOf("!")&&(s=!0,e=e.substr(1));const n=((e,t)=>{let r=v[e];return r||(r=y.reduce((t,r)=>t.replace(r[0],r[1].bind(e)),e),v[e]=r),t?new RegExp(r,"i"):new RegExp(r)})(e=e.replace(h,"!").replace(p,"#"),t);return new O(r,e,s,n)})(e,this._ignoreCase);this._added=!0,this._rules.push(t)}}add(e){return this._added=!1,u(w(e)?(e=>e.split(d))(e):e).forEach(this._addPattern,this),this._added&&this._initCache(),this}addPattern(e){return this.add(e)}_testOne(e,t){let r=!1,s=!1;return this._rules.forEach(n=>{const{negative:i}=n;s===i&&r!==s||i&&!r&&!s&&!t||n.regex.test(e)&&(r=!i,s=i)}),{ignored:r,unignored:s}}_test(e,t,r,s){const n=e&&E.convert(e);return E(n,e,this._allowRelativePaths?m:_),this._t(n,t,r,s)}_t(e,t,r,s){if(e in t)return t[e];if(s||(s=e.split("/")),s.pop(),!s.length)return t[e]=this._testOne(e,r);const n=this._t(s.join("/")+"/",t,r,s);return t[e]=n.ignored?n:this._testOne(e,r)}ignores(e){return this._test(e,this._ignoreCache,!1).ignored}createFilter(){return e=>!this.ignores(e)}filter(e){return u(e).filter(this.createFilter())}test(e){return this._test(e,this._testCache,!0)}}const x=e=>new $(e);x.isPathValid=e=>E(e&&E.convert(e),e,m),x.default=x;var S=x;if("undefined"!=typeof process&&(process.env&&process.env.IGNORE_TEST_WIN32||"win32"===process.platform)){E.convert=e=>/^\\\\\?\\/.test(e)||/["<>|\u0000-\u001F]+/u.test(e)?e:e.replace(/\\/g,"/");const e=/^[a-z]:\//i;E.isNotRelative=t=>e.test(t)||k(t)}var R=l(function(e,t){let r,s,n,i,a=!0;"undefined"!=typeof process&&(({FORCE_COLOR:r,NODE_DISABLE_COLORS:s,NO_COLOR:n,TERM:i}=process.env),a=process.stdout&&process.stdout.isTTY);const o=t.$={enabled:!s&&null==n&&"dumb"!==i&&(null!=r&&"0"!==r||a)};function l(e,t){let r=new RegExp(`\\x1b\\[${t}m`,"g"),s=`[${e}m`,n=`[${t}m`;return function(e){return o.enabled&&null!=e?s+(~(""+e).indexOf(n)?e.replace(r,n+s):e)+n:e}}t.reset=l(0,0),t.bold=l(1,22),t.dim=l(2,22),t.italic=l(3,23),t.underline=l(4,24),t.inverse=l(7,27),t.hidden=l(8,28),t.strikethrough=l(9,29),t.black=l(30,39),t.red=l(31,39),t.green=l(32,39),t.yellow=l(33,39),t.blue=l(34,39),t.magenta=l(35,39),t.cyan=l(36,39),t.white=l(37,39),t.gray=l(90,39),t.grey=l(90,39),t.bgBlack=l(40,49),t.bgRed=l(41,49),t.bgGreen=l(42,49),t.bgYellow=l(43,49),t.bgBlue=l(44,49),t.bgMagenta=l(45,49),t.bgCyan=l(46,49),t.bgWhite=l(47,49)}),C=l(function(t,r){var a=Object.create,o=Object.defineProperty,l=Object.getOwnPropertyDescriptor,u=Object.getOwnPropertyNames,c=Object.getPrototypeOf,h=Object.prototype.hasOwnProperty,p=e=>o(e,"__esModule",{value:!0}),d=e=>((e,t,r)=>{if(t&&"object"==typeof t||"function"==typeof t)for(let s of u(t))h.call(e,s)||"default"===s||o(e,s,{get:()=>t[s],enumerable:!(r=l(t,s))||r.enumerable});return e})(p(o(null!=e?a(c(e)):{},"default",e&&e.__esModule&&"default"in e?{get:()=>e.default,enumerable:!0}:{value:e,enumerable:!0})),e);((e,t)=>{for(var r in p(e),t)o(e,r,{get:t[r],enumerable:!0})})(r,{Compatibility:()=>b,InputGate:()=>Pe,InputGatedEventTarget:()=>Le,Log:()=>fe,LogLevel:()=>ee,MiniflareError:()=>H,Mutex:()=>Ae,NoOpLog:()=>ge,Option:()=>be,OptionType:()=>pe,OutputGate:()=>Ie,Plugin:()=>me,RequestContext:()=>$,STRING_SCRIPT_PATH:()=>ve,Storage:()=>we,ThrowingEventTarget:()=>ne,TypedEventTarget:()=>se,addAll:()=>T,assertInRequest:()=>k,base64Decode:()=>j,base64Encode:()=>L,defaultClock:()=>Oe,getRequestContext:()=>E,globsToMatcher:()=>M,kWrapListener:()=>re,kebabCase:()=>F,logOptions:()=>ye,millisToSeconds:()=>_e,nonCircularClone:()=>N,prefixError:()=>X,randomHex:()=>A,resolveStoragePersist:()=>U,runWithInputGateClosed:()=>Ce,sanitisePath:()=>Z,spaceCase:()=>D,titleCase:()=>W,viewToArray:()=>P,viewToBuffer:()=>I,waitForOpenInputGate:()=>Re,waitForOpenOutputGate:()=>Ne,waitUntilOnOutputGate:()=>Te});var f=[{defaultAsOf:"2021-11-10",enableFlag:"durable_object_fetch_requires_full_url",disableFlag:"durable_object_fetch_allows_relative_url"},{defaultAsOf:"2021-11-10",enableFlag:"fetch_refuses_unknown_protocols",disableFlag:"fetch_treats_unknown_protocols_as_http"},{defaultAsOf:"2021-11-03",enableFlag:"formdata_parser_supports_files",disableFlag:"formdata_parser_converts_files_to_strings"},{enableFlag:"html_rewriter_treats_esi_include_as_void_tag"}],g=new Intl.Collator(void 0,{numeric:!0}),b=class{constructor(e="1970-01-01",t=[]){this.compatibilityDate=e,this.compatibilityFlags=t,this.#e()}#t=new Set;#e(){this.#t.clear();const e=new Set(this.compatibilityFlags);for(const{defaultAsOf:t,enableFlag:r,disableFlag:s}of f){if(s&&e.has(s))continue;const n=e.has(r),i=t&&g.compare(t,this.compatibilityDate)<=0;(n||i)&&this.#t.add(r)}}isEnabled(e){return this.#t.has(e)}update(e="1970-01-01",t=[]){return!(this.compatibilityDate===e&&this.compatibilityFlags.length===t.length&&this.compatibilityFlags.every((e,r)=>t[r]===e)||(this.compatibilityDate=e,this.compatibilityFlags=t,this.#e(),0))}get enabled(){return[...this.#t]}},m=d(s),y=d(n),v=parseInt(process.env.MINIFLARE_SUBREQUEST_LIMIT),w=isNaN(v)?50:v,O="Subrequest depth limit exceeded. This request recursed through Workers too many times. This can happen e.g. if you have a Worker or Durable Object that calls other Workers or objects recursively.",_=new y.AsyncLocalStorage;function E(){return _.getStore()}function k(){if(!E())throw new Error("Some functionality, such as asynchronous I/O (fetch, Cache API, KV), timeouts (setTimeout, setInterval), and generating random values (crypto.getRandomValues, crypto.subtle.generateKey), can only be performed while handling a request.")}var $=class{requestDepth;pipelineDepth;durableObject;constructor({requestDepth:e=1,pipelineDepth:t=1,durableObject:r=!1}={}){if((0,m.default)(e>=1),(0,m.default)(t>=1),e>16)throw new Error(`${O}\nWorkers and objects can recurse up to 16 times.\nIf you're trying to fetch from an origin server, make sure you've set the \`upstream\` option.`);if(t>32)throw new Error(`${O}\nService bindings can recurse up to 32 times.`);this.requestDepth=e,this.pipelineDepth=t,this.durableObject=r}runWith(e){return _.run(this,e)}#r=0;get subrequests(){return this.#r}incrementSubrequests(e=1){if(this.#r+=e,w>=0&&this.#r>w)throw new Error(`Too many subrequests. Workers can make up to ${w} subrequests per request.\nA subrequest is a call to fetch(), a redirect, or a call to any Cache API method.`)}},x=d(e),C=d(S);function N(e){return JSON.parse(JSON.stringify(e))}function T(e,t){for(const r of t)e.add(r)}function P(e){return new Uint8Array(e.buffer,e.byteOffset,e.byteLength)}function I(e){return e.buffer.slice(e.byteOffset,e.byteOffset+e.byteLength)}function L(e){return Buffer.from(e,"utf8").toString("base64")}function j(e){return Buffer.from(e,"base64").toString("utf8")}function A(e=8){return Array.from(Array(e)).map(()=>Math.floor(16*Math.random()).toString(16)).join("")}function M(e){const t=(0,C.default)();return e&&t.add(e),{test:e=>t.ignores(e),toString:()=>e?.join(", ")??""}}function F(e){return e.replace(/[A-Z]/g,e=>`-${e.toLowerCase()}`)}function D(e){return(e=e.replace(/(.)([A-Z][a-z]+)/g,"$1 $2")).replace(/([a-z0-9])([A-Z])/g,"$1 $2")}function W(e){return D(e).split(" ").map(e=>e?e[0].toUpperCase()+e.substring(1):e).join(" ")}var B=/^([a-z]+:)?\/\//i;function U(e,t){return"string"==typeof t?B.test(t)?t:x.default.resolve(e,t):t}var q=/[/\\:|]/g,G=/(^|\/|\\)(\.+)(\/|\\|$)/g,Q=/[?<>*"'^\x00-\x1f\x80-\x9f]/g,V=/^(con|prn|aux|nul|com[0-9]|lpt[0-9])(\..*)?$/i,z=/^[ /\\]+/,K=/[ /\\]+$/;function J(e,t,r,s){return`${t}${"".padStart(r.length,"_")}${s}`}function Y(e){return"".padStart(e.length,"_")}function Z(e){return e.replace(q,x.default.sep).replace(G,J).replace(G,J).replace(Q,"_").replace(V,"_").replace(z,Y).replace(K,Y).substring(0,255)}var H=class extends Error{constructor(e,t,r){super(t),this.code=e,this.cause=r,Object.setPrototypeOf(this,new.target.prototype),this.name=`${new.target.name} [${e}]`}};function X(e,t){return t.stack?new Proxy(t,{get(t,r,s){const n=Reflect.get(t,r,s);return"stack"===r?`${e}: ${n}`:n}}):t}var ee,te,re=Symbol("kWrapListener"),se=class extends EventTarget{#s=new WeakMap;#n(e){if(!e)return null;let t=this.#s.get(e);return t||(t=this[re](t=>{"function"==typeof e?e(t):e.handleEvent(t)}),this.#s.set(e,t),t)}addEventListener(e,t,r){super.addEventListener(e,this[re]?this.#n(t):t,r)}removeEventListener(e,t,r){super.removeEventListener(e,this[re]?this.#n(t):t,r)}dispatchEvent(e){return super.dispatchEvent(e)}},ne=class extends se{#i;[re](e){return t=>{try{e(t)}catch(e){t.stopImmediatePropagation(),this.#i=e}}}dispatchEvent(e){this.#i=void 0;const t=super.dispatchEvent(e);if(void 0!==this.#i)throw this.#i;return t}},ie=d(e),ae=d(R),oe=process.cwd(),le=ie.default.join(oe,"node_modules");(te=ee||(ee={}))[te.NONE=0]="NONE",te[te.ERROR=1]="ERROR",te[te.WARN=2]="WARN",te[te.INFO=3]="INFO",te[te.DEBUG=4]="DEBUG",te[te.VERBOSE=5]="VERBOSE";var ue={0:"",1:"err",2:"wrn",3:"inf",4:"dbg",5:"vrb"},ce={0:ae.reset,1:ae.red,2:ae.yellow,3:ae.green,4:ae.grey,5:e=>(0,ae.dim)((0,ae.grey)(e))};function he(e){return!e.startsWith(" at")||e.includes(oe)&&!e.includes(le)?e:(0,ae.dim)(e)}var pe,de,fe=class{constructor(e=3,t={}){this.level=e;const r=t.prefix??"mf",s=t.suffix??"";this.#a=r?r+":":"",this.#o=s?":"+s:""}#a;#o;log(e){console.log(e)}logWithLevel(e,t){if(e<=this.level){const r=`[${this.#a}${ue[e]}${this.#o}]`;this.log(ce[e](`${r} ${t}`))}}error(e){if(this.level<1)throw e;if(e.stack){const t=e.stack.split("\n").map(he);this.logWithLevel(1,t.join("\n"))}else this.logWithLevel(1,e.toString());e.cause&&this.error(X("Cause",e.cause))}warn(e){this.logWithLevel(2,e)}info(e){this.logWithLevel(3,e)}debug(e){this.logWithLevel(4,e)}verbose(e){this.logWithLevel(5,e)}},ge=class extends fe{log(){}error(e){throw e}};function be(e){return function(t,r){(t.opts??=new Map).set(r,e)}}(de=pe||(pe={}))[de.NONE=0]="NONE",de[de.BOOLEAN=1]="BOOLEAN",de[de.NUMBER=2]="NUMBER",de[de.STRING=3]="STRING",de[de.STRING_POSITIONAL=4]="STRING_POSITIONAL",de[de.BOOLEAN_STRING=5]="BOOLEAN_STRING",de[de.BOOLEAN_NUMBER=6]="BOOLEAN_NUMBER",de[de.ARRAY=7]="ARRAY",de[de.OBJECT=8]="OBJECT";var me=class{constructor(e){this.ctx=e,this.opts=new.target.prototype.opts}#l;opts;assignOptions(e){if(void 0!==e&&void 0!==this.opts)for(const t of this.opts.keys())this[t]=e[t]}};function ye(e,t,r){t.debug("Options:");for(const[s,n]of e){const e=r[s];for(const[r,s]of n.prototype.opts?.entries()??[]){const n=e[r];if(void 0===n||0===s.type)continue;const i=s?.logName??W("symbol"==typeof r?"<symbol>":r);let a;if(s.logValue){if(a=s.logValue(n),void 0===a)continue}else a=8===s.type?Object.keys(n).join(", "):7===s.type?n.join(", "):n.toString();t.debug(`- ${i}: ${a}`)}}}var ve="<script>",we=class{async hasMany(e){const t=e.map(this.has.bind(this));let r=0;for(const e of await Promise.all(t))e&&r++;return r}getMany(e,t){return Promise.all(e.map(e=>this.get(e,t)))}async putMany(e){await Promise.all(e.map(([e,t])=>this.put(e,t)))}async deleteMany(e){const t=e.map(this.delete.bind(this));let r=0;for(const e of await Promise.all(t))e&&r++;return r}},Oe=()=>Date.now();function _e(e){return Math.floor(e/1e3)}var Ee=d(s),ke=d(n),$e=d(i),xe=new ke.AsyncLocalStorage,Se=new ke.AsyncLocalStorage;function Re(){return xe.getStore()?.waitForOpen()}function Ce(e,t=!1){if(t)return e();const r=xe.getStore();return void 0===r?e():r.runWithClosed(e)}function Ne(){return Se.getStore()?.waitForOpen()}function Te(e,t=!1){return t||Se.getStore()?.waitUntil(e),e}var Pe=class{#u=0;#c=[];#h;constructor(e){this.#h=e}async runWith(e){return await this.waitForOpen(),xe.run(this,e)}async waitForOpen(){if(await(0,$e.setImmediate)(),0!==this.#u)return new Promise(e=>this.#c.push(e))}async runWithClosed(e){this.#p(),await Promise.resolve();const t=new Pe(this);try{return await xe.run(t,e)}finally{setImmediate(this.#d)}}#p(){this.#u++,this.#h&&this.#h.#p()}#d=async()=>{for((0,Ee.default)(this.#u>0),this.#u--;0===this.#u&&this.#c.length;)this.#c.shift()(),await(0,$e.setImmediate)();if(this.#h)return this.#h.#d()}},Ie=class{#f=[];async runWith(e){try{return await Se.run(this,e)}finally{await this.waitForOpen()}}async waitForOpen(){await Promise.all(this.#f)}waitUntil(e){this.#f.push(e)}},Le=class extends se{[re](e){const t=xe.getStore();return t?async r=>{await t.waitForOpen(),e(r)}:e}},je=d(s),Ae=class{locked=!1;resolveQueue=[];lock(){if(this.locked)return new Promise(e=>this.resolveQueue.push(e));this.locked=!0}unlock(){(0,je.default)(this.locked),this.resolveQueue.length>0?this.resolveQueue.shift()?.():this.locked=!1}get hasWaiting(){return this.resolveQueue.length>0}async runWith(e){const t=this.lock();t instanceof Promise&&await t;try{const t=e();return t instanceof Promise?await t:t}finally{this.unlock()}}}}),N=l(function(e,t){var r=Object.create,s=Object.defineProperty,n=Object.getOwnPropertyDescriptor,i=Object.getOwnPropertyNames,a=Object.getPrototypeOf,o=Object.prototype.hasOwnProperty,l=e=>s(e,"__esModule",{value:!0}),u=e=>((e,t,r)=>{if(t&&"object"==typeof t||"function"==typeof t)for(let a of i(t))o.call(e,a)||"default"===a||s(e,a,{get:()=>t[a],enumerable:!(r=n(t,a))||r.enumerable});return e})(l(s(null!=e?r(a(e)):{},"default",e&&e.__esModule&&"default"in e?{get:()=>e.default,enumerable:!0}:{value:e,enumerable:!0})),e);((e,t)=>{for(var r in l(e),t)s(e,r,{get:t[r],enumerable:!0})})(t,{LocalStorage:()=>b,MemoryStorage:()=>y,cloneMetadata:()=>h,listFilterMatch:()=>d,listPaginate:()=>f});var c=u(C);function h(e){return e&&(0,c.nonCircularClone)(e)}var p=new Intl.Collator;function d(e,t){return!(e?.prefix&&!t.startsWith(e.prefix)||e?.start&&p.compare(t,e.start)<0||e?.end&&p.compare(t,e.end)>=0)}function f(e,t){const r=e?.reverse?-1:1;t.sort((e,t)=>r*p.compare(e.name,t.name));const s=e?.cursor?(0,c.base64Decode)(e.cursor):"";let n=0;""!==s&&(n=t.findIndex(({name:e})=>e===s),-1===n&&(n=t.length),n++);const i=void 0===e?.limit?t.length:n+e.limit,a=i<t.length?(0,c.base64Encode)(t[i-1].name):"";return{keys:t=t.slice(n,i),cursor:a}}var g=u(C),b=class extends g.Storage{constructor(e=g.defaultClock){super(),this.clock=e}expired({expiration:e},t=this.clock()){return void 0!==e&&e<=(0,g.millisToSeconds)(t)}async has(e){const t=await this.hasMaybeExpired(e);return!(void 0===t||this.expired(t)&&(await this.deleteMaybeExpired(e),1))}async get(e){const t=await this.getMaybeExpired(e);if(void 0!==t){if(!this.expired(t))return t;await this.deleteMaybeExpired(e)}}async delete(e){const t=await this.hasMaybeExpired(e),r=void 0!==t&&this.expired(t);return!!await this.deleteMaybeExpired(e)&&!r}async list(e){const t=this.clock(),r=[];let s=await this.listAllMaybeExpired();s=s.filter(s=>this.expired(s,t)?(r.push(this.deleteMaybeExpired(s.name)),!1):d(e,s.name));const n=f(e,s);return await Promise.all(r),n}},m=u(C),y=class extends b{constructor(e=new Map,t=m.defaultClock){super(t),this.map=e}hasMaybeExpired(e){const t=this.map.get(e);return t&&{expiration:t.expiration,metadata:h(t.metadata)}}getMaybeExpired(e){const t=this.map.get(e);return t&&{value:t.value.slice(),expiration:t.expiration,metadata:h(t.metadata)}}put(e,t){this.map.set(e,{value:t.value.slice(),expiration:t.expiration,metadata:h(t.metadata)})}deleteMaybeExpired(e){return this.map.delete(e)}static entryToStoredKey([e,{expiration:t,metadata:r}]){return{name:e,expiration:t,metadata:h(r)}}listAllMaybeExpired(){return Array.from(this.map.entries()).map(y.entryToStoredKey)}}});const T=["key","value"],P=["type"],I=["headers","body"];function L(e,t){for(const r of e)if(!t[r]||""===t[r])throw new Error(`${r} is required.`)}class j{constructor(s,n={}){var i;const{CF_TOKEN:l,CF_ACCOUNTID:u,CLOUDFLARE_TOKEN:c}=(null==(i=process)?void 0:i.env)||{};if(this.options=a({},n,{target:n.target||"local",filepath:e.resolve(n.filepath||"./.mf/kv",s),accountToken:n.accountToken||l||c,accountID:n.accountID||u,env:n.env||{},name:s}),"local"===this.options.target)L(["filepath"],this.options),this._db=new t(new r(this.options.filepath));else if("cf"===this.options.target){if(this._db=this.options.env[s]||global[s],!this._db)throw new Error(`You chose "cf" for target, but env does not have "${s}" KV.`)}else"remote"===this.options.target?L(["kvID","accountToken","accountID"],this.options):"memory"===this.options.target&&(this._db=new t(new N.MemoryStorage));this._db&&(this.get=this._db.get.bind(this._db),this.getWithMetadata=this._db.getWithMetadata.bind(this._db),this.list=this._db.list.bind(this._db),this.put=this._db.put.bind(this._db),this.delete=this._db.delete.bind(this._db),this.bulkdelete=(e,t={})=>Promise.all(e.map(e=>this.delete(e,t))),this.bulkput=(e,t={})=>Promise.all(e.map(e=>{let{key:r,value:s}=e,n=o(e,T);return this.put(r,s,a({},t,n))})))}async get(e,t={}){const{type:r}=t,s=o(t,P),n=new URLSearchParams(s).toString(),i=await this.api(`/storage/kv/namespaces/${this.options.kvID}/values/${e}?${n}`);return"json"===r?i.json():"arrayBuffer"!==r?"stream"===r?i.body.getReader():i.text():void i.arrayBuffer()}async getWithMetadata(e,t={}){return{value:await this.get(e,t),metadata:(await this.api(`/storage/kv/namespaces/${this.options.kvID}/metadata/${e}`).then(e=>e.json())).result}}async list(e={}){const t=new URLSearchParams(e).toString(),r=await this.api(`/storage/kv/namespaces/${this.options.kvID}/keys?${t}`).then(e=>e.json());return{keys:r.result,cursor:r.result_info.cursor,list_complete:r.result.length===r.result_info.count}}put(e,t,r={}){const s=new URLSearchParams(r).toString();return this.api(`/storage/kv/namespaces/${this.options.kvID}/values/${e}?${s}`,"PUT",{body:t}).then(e=>e.json())}delete(e,t={}){const r=new URLSearchParams(t).toString();return this.api(`/storage/kv/namespaces/${this.options.kvID}/values/${e}?${r}`,"DELETE").then(e=>e.json())}async bulkput(e,t={}){const r=new URLSearchParams(t).toString();await this.api(`/storage/kv/namespaces/${this.options.kvID}/bulk?${r}`,"PUT",{body:JSON.stringify(e),headers:{"Content-Type":"application/json"}}).then(e=>e.json())}async bulkdelete(e,t={}){const r=new URLSearchParams(t).toString();await this.api(`/storage/kv/namespaces/${this.options.kvID}/bulk?${r}`,"DELETE",{body:JSON.stringify(e),headers:{"Content-Type":"application/json"}}).then(e=>e.json())}api(e,t="GET",r={}){const{headers:s={},body:n}=r,i=o(r,I);return fetch(`https://api.cloudflare.com/client/v4/accounts/${this.options.accountID}${e}`,a({headers:a({Authorization:`Bearer ${this.options.accountToken}`},s)},i,{method:t,body:n})).then(e=>{if(200!==e.status)throw new Error(`Error ${e.status}`);return e})}}class A{constructor(e){this.url=e,"object"==typeof e&&(this.get=e.get.bind(e),this.idFromName=e.idFromName.bind(e))}get(e){return{fetch(e,t){return fetch(this.url,t)}}}idFromName(e){return e}}export{A as CrossDO,j as CrossKV}; //# sourceMappingURL=cross-cf.modern.js.map