riverforecastsystem 0.0.2
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/chunks/CKkf73Fh.mjs +1 -0
- package/dist/chunks/CUbw7lj6.mjs +1 -0
- package/dist/chunks/CYqy14ta.mjs +1 -0
- package/dist/chunks/DAknFzIV.mjs +1 -0
- package/dist/index.mjs +1 -0
- package/package.json +23 -0
- package/src/index.js +6 -0
- package/src/v2/forecast.js +77 -0
- package/src/v2/index.js +11 -0
- package/src/v2/retrospective.js +33 -0
- package/src/v2/returnPeriods.js +29 -0
- package/src/v2/zarrFetchers.js +61 -0
|
@@ -0,0 +1 @@
|
|
|
1
|
+
var r=(()=>{for(var r=new Uint8Array(128),a=0;a<64;a++)r[a<26?a+65:a<52?a+71:a<62?a-4:4*a-205]=a;return a=>{for(var e=a.length,t=new Uint8Array(3*(e-("="==a[e-1])-("="==a[e-2]))/4|0),n=0,o=0;n<e;){var A=r[a.charCodeAt(n++)],h=r[a.charCodeAt(n++)],c=r[a.charCodeAt(n++)],d=r[a.charCodeAt(n++)];t[o++]=A<<2|h>>4,t[o++]=h<<4|c>>2,t[o++]=c<<6|d}return t}})();export{r as _};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import{_ as A}from"./CYqy14ta.mjs";var I,B=("undefined"!=typeof document&&document.currentScript&&document.currentScript.src,function(A={}){var I,B,g=A;g.ready=new Promise((A,g)=>{I=A,B=g});var Q,C=Object.assign({},g),E=g.printErr||console.error.bind(console);Object.assign(g,C),C=null,g.wasmBinary&&(Q=g.wasmBinary),"object"!=typeof WebAssembly&&d("no native wasm support detected");var i,r,t,e,a,o,n,s,h,c=!1;function D(){var A=i.buffer;g.HEAP8=r=new Int8Array(A),g.HEAP16=e=new Int16Array(A),g.HEAPU8=t=new Uint8Array(A),g.HEAPU16=a=new Uint16Array(A),g.HEAP32=o=new Int32Array(A),g.HEAPU32=n=new Uint32Array(A),g.HEAPF32=s=new Float32Array(A),g.HEAPF64=h=new Float64Array(A)}var w=[],f=[],l=[];function F(){var A=g.preRun.shift();w.unshift(A)}var y=0,u=null;function d(A){throw g.onAbort?.(A),E(A="Aborted("+A+")"),c=!0,A=new WebAssembly.RuntimeError(A+". Build with -sASSERTIONS for more info."),B(A),A}var R,N=A=>A.startsWith("data:application/octet-stream;base64,");if(!N(R="lz4_codec.wasm")){var G=R;R=g.locateFile?g.locateFile(G,""):""+G}function p(A,I,B){return function(A){return Promise.resolve().then(()=>{if(A!=R||!Q)throw"both async and sync fetching of the wasm failed";return new Uint8Array(Q)})}(A).then(A=>WebAssembly.instantiate(A,I)).then(A=>A).then(B,A=>{E(`failed to asynchronously prepare wasm: ${A}`),d(A)})}var J=A=>{for(;0<A.length;)A.shift()(g)};function U(A){this.D=A-24,this.K=function(A){n[this.D+4>>2]=A},this.J=function(A){n[this.D+8>>2]=A},this.F=function(A,I){this.G(),this.K(A),this.J(I)},this.G=function(){n[this.D+16>>2]=0}}var k,m,W,S=A=>{for(var I="";t[A];)I+=k[t[A++]];return I},Y={},H={},M={},b=A=>{throw new m(A)};function v(A,I,B={}){if(!("argPackAdvance"in I))throw new TypeError("registerType registeredInstance requires argPackAdvance");!function(A,I,B={}){var g=I.name;if(!A)throw new m(`type "${g}" must have a positive integer typeid pointer`);if(H.hasOwnProperty(A)){if(B.M)return;throw new m(`Cannot register type '${g}' twice`)}H[A]=I,delete M[A],Y.hasOwnProperty(A)&&(I=Y[A],delete Y[A],I.forEach(A=>A()))}(A,I,B)}function L(){this.B=[void 0],this.H=[]}var Z=new L,T=A=>{A>=Z.D&&0===--Z.get(A).I&&Z.G(A)},q=A=>{switch(A){case void 0:return 1;case null:return 2;case!0:return 3;case!1:return 4;default:return Z.F({I:1,value:A})}};function X(A){return this.fromWireType(o[A>>2])}var P=(A,I)=>{switch(I){case 4:return function(A){return this.fromWireType(s[A>>2])};case 8:return function(A){return this.fromWireType(h[A>>3])};default:throw new TypeError(`invalid float width (${I}): ${A}`)}},K=(A,I)=>Object.defineProperty(I,"name",{value:A}),j=A=>{for(;A.length;){var I=A.pop();A.pop()(I)}};function O(A){for(var I=1;I<A.length;++I)if(null!==A[I]&&void 0===A[I].C)return!0;return!1}var V,x,z,$,_,AA=(A,I)=>{if(void 0===g[A].A){var B=g[A];g[A]=function(){if(!g[A].A.hasOwnProperty(arguments.length))throw new m(`Function '${I}' called with an invalid number of arguments (${arguments.length}) - expects one of (${g[A].A})!`);return g[A].A[arguments.length].apply(this,arguments)},g[A].A=[],g[A].A[B.L]=B}},IA=(A,I)=>{var B=(A=S(A)).includes("j")?((A,I)=>{var B=[];return function(){if(B.length=0,Object.assign(B,arguments),A.includes("j")){var Q=g["dynCall_"+A];Q=B&&B.length?Q.apply(null,[I].concat(B)):Q.call(null,I)}else Q=V.get(I).apply(null,B);return Q}})(A,I):V.get(I);if("function"!=typeof B)throw new m(`unknown function pointer with signature ${A}: ${I}`);return B},BA=A=>{A=lA(A);var I=S(A);return fA(A),I},gA=(A,I,B)=>{switch(I){case 1:return B?A=>r[0|A]:A=>t[0|A];case 2:return B?A=>e[A>>1]:A=>a[A>>1];case 4:return B?A=>o[A>>2]:A=>n[A>>2];default:throw new TypeError(`invalid integer width (${I}): ${A}`)}};function QA(A){return this.fromWireType(n[A>>2])}for(var CA="undefined"!=typeof TextDecoder?new TextDecoder("utf8"):void 0,EA="undefined"!=typeof TextDecoder?new TextDecoder("utf-16le"):void 0,iA=(A,I)=>{for(var B=A>>1,g=B+I/2;!(B>=g)&&a[B];)++B;if(32<(B<<=1)-A&&EA)return EA.decode(t.subarray(A,B));for(B="",g=0;!(g>=I/2);++g){var Q=e[A+2*g>>1];if(0==Q)break;B+=String.fromCharCode(Q)}return B},rA=(A,I,B)=>{if(B??=2147483647,2>B)return 0;var g=I;B=(B-=2)<2*A.length?B/2:A.length;for(var Q=0;Q<B;++Q)e[I>>1]=A.charCodeAt(Q),I+=2;return e[I>>1]=0,I-g},tA=A=>2*A.length,eA=(A,I)=>{for(var B=0,g="";!(B>=I/4);){var Q=o[A+4*B>>2];if(0==Q)break;++B,65536<=Q?(Q-=65536,g+=String.fromCharCode(55296|Q>>10,56320|1023&Q)):g+=String.fromCharCode(Q)}return g},aA=(A,I,B)=>{if(B??=2147483647,4>B)return 0;var g=I;B=g+B-4;for(var Q=0;Q<A.length;++Q){var C=A.charCodeAt(Q);if(55296<=C&&57343>=C&&(C=65536+((1023&C)<<10)|1023&A.charCodeAt(++Q)),o[I>>2]=C,(I+=4)+4>B)break}return o[I>>2]=0,I-g},oA=A=>{for(var I=0,B=0;B<A.length;++B){var g=A.charCodeAt(B);55296<=g&&57343>=g&&++B,I+=4}return I},nA=Array(256),sA=0;256>sA;++sA)nA[sA]=String.fromCharCode(sA);k=nA,m=g.BindingError=class extends Error{constructor(A){super(A),this.name="BindingError"}},W=g.InternalError=class extends Error{constructor(A){super(A),this.name="InternalError"}},Object.assign(L.prototype,{get(A){return this.B[A]},has(A){return void 0!==this.B[A]},F(A){var I=this.H.pop()||this.B.length;return this.B[I]=A,I},G(A){this.B[A]=void 0,this.H.push(A)}}),Z.B.push({value:void 0},{value:null},{value:!0},{value:!1}),Z.D=Z.B.length,g.count_emval_handles=()=>{for(var A=0,I=Z.D;I<Z.B.length;++I)void 0!==Z.B[I]&&++A;return A},x=g.UnboundTypeError=(z=Error,(_=K($="UnboundTypeError",function(A){this.name=$,this.message=A,void 0!==(A=Error(A).stack)&&(this.stack=this.toString()+"\n"+A.replace(/^Error(:[^\n]*)?\n/,""))})).prototype=Object.create(z.prototype),_.prototype.constructor=_,_.prototype.toString=function(){return void 0===this.message?this.name:`${this.name}: ${this.message}`},_);var hA,cA={n:(A,I,B)=>{throw new U(A).F(I,B),A},o:()=>{},l:(A,I,B,g)=>{v(A,{name:I=S(I),fromWireType:function(A){return!!A},toWireType:function(A,I){return I?B:g},argPackAdvance:8,readValueFromPointer:function(A){return this.fromWireType(t[A])},C:null})},k:(A,I)=>{v(A,{name:I=S(I),fromWireType:A=>{if(!A)throw new m("Cannot use deleted val. handle = "+A);var I=Z.get(A).value;return T(A),I},toWireType:(A,I)=>q(I),argPackAdvance:8,readValueFromPointer:X,C:null})},i:(A,I,B)=>{v(A,{name:I=S(I),fromWireType:A=>A,toWireType:(A,I)=>I,argPackAdvance:8,readValueFromPointer:P(I,B),C:null})},d:(A,I,B,Q,C,E,i)=>{var r=((A,I)=>{for(var B=[],g=0;g<A;g++)B.push(n[I+4*g>>2]);return B})(I,B);A=(A=>{const I=(A=A.trim()).indexOf("(");return-1!==I?A.substr(0,I):A})(A=S(A)),C=IA(Q,C),((A,I,B)=>{if(g.hasOwnProperty(A)){if(void 0===B||void 0!==g[A].A&&void 0!==g[A].A[B])throw new m(`Cannot register public name '${A}' twice`);if(AA(A,A),g.hasOwnProperty(B))throw new m(`Cannot register multiple overloads of a function with the same number of arguments (${B})!`);g[A].A[B]=I}else g[A]=I,void 0!==B&&(g[A].O=B)})(A,function(){((A,I)=>{var B=[],g={};throw I.forEach(function A(I){g[I]||H[I]||(M[I]?M[I].forEach(A):(B.push(I),g[I]=!0))}),new x(`${A}: `+B.map(BA).join([", "]))})(`Cannot call ${A} due to unbound types`,r)},I-1),((A,I)=>{function B(A){if((A=I(A)).length!==g.length)throw new W("Mismatched type converter count");for(var B=0;B<g.length;++B)v(g[B],A[B])}var g=[];g.forEach(function(I){M[I]=A});var Q=Array(A.length),C=[],E=0;A.forEach((A,I)=>{H.hasOwnProperty(A)?Q[I]=H[A]:(C.push(A),Y.hasOwnProperty(A)||(Y[A]=[]),Y[A].push(()=>{Q[I]=H[A],++E===C.length&&B(Q)}))}),0===C.length&&B(Q)})(r,function(B){var Q=A,r=A;B=[B[0],null].concat(B.slice(1));var t=C,e=B.length;if(2>e)throw new m("argTypes array size mismatch! Must at least get return value and 'this' types!");var a=null!==B[1]&&!1,o=O(B),n="void"!==B[0].name;t=[b,t,E,j,B[0],B[1]];for(var s=0;s<e-2;++s)t.push(B[s+2]);if(!o)for(s=a?1:2;s<B.length;++s)null!==B[s].C&&t.push(B[s].C);o=O(B),s=B.length;var h="",c="";for(e=0;e<s-2;++e)h+=(0!==e?", ":"")+"arg"+e,c+=(0!==e?", ":"")+"arg"+e+"Wired";h=`\n return function (${h}) {\n if (arguments.length !== ${s-2}) {\n throwBindingError('function ${r} called with ' + arguments.length + ' arguments, expected ${s-2}');\n }`,o&&(h+="var destructors = [];\n");var D=o?"destructors":"null",w="throwBindingError invoker fn runDestructors retType classParam".split(" ");for(a&&(h+="var thisWired = classParam['toWireType']("+D+", this);\n"),e=0;e<s-2;++e)h+="var arg"+e+"Wired = argType"+e+"['toWireType']("+D+", arg"+e+"); // "+B[e+2].name+"\n",w.push("argType"+e);if(a&&(c="thisWired"+(0<c.length?", ":"")+c),h+=(n||i?"var rv = ":"")+"invoker(fn"+(0<c.length?", ":"")+c+");\n",o)h+="runDestructors(destructors);\n";else for(e=a?1:2;e<B.length;++e)a=1===e?"thisWired":"arg"+(e-2)+"Wired",null!==B[e].C&&(h+=a+"_dtor("+a+"); // "+B[e].name+"\n",w.push(a+"_dtor"));n&&(h+="var ret = retType['fromWireType'](rv);\nreturn ret;\n");let[f,l]=[w,h+"}\n"];if(f.push(l),B=function(A){var I=Function;if(!(I instanceof Function))throw new TypeError(`new_ called with constructor type ${typeof I} which is not a function`);var B=K(I.name||"unknownFunctionName",function(){});return B.prototype=I.prototype,B=new B,(A=I.apply(B,A))instanceof Object?A:B}(f).apply(null,t),r=K(r,B),B=I-1,!g.hasOwnProperty(Q))throw new W("Replacing nonexistant public symbol");return void 0!==g[Q].A&&void 0!==B?g[Q].A[B]=r:(g[Q]=r,g[Q].L=B),[]})},b:(A,I,B,g,Q)=>{if(I=S(I),-1===Q&&(Q=4294967295),Q=A=>A,0===g){var C=32-8*B;Q=A=>A<<C>>>C}var E=I.includes("unsigned")?function(A,I){return I>>>0}:function(A,I){return I};v(A,{name:I,fromWireType:Q,toWireType:E,argPackAdvance:8,readValueFromPointer:gA(I,B,0!==g),C:null})},a:(A,I,B)=>{function g(A){return new Q(r.buffer,n[A+4>>2],n[A>>2])}var Q=[Int8Array,Uint8Array,Int16Array,Uint16Array,Int32Array,Uint32Array,Float32Array,Float64Array][I];v(A,{name:B=S(B),fromWireType:g,argPackAdvance:8,readValueFromPointer:g},{M:!0})},e:(A,I)=>{var B="std::string"===(I=S(I));v(A,{name:I,fromWireType:function(A){var I=n[A>>2],g=A+4;if(B)for(var Q=g,C=0;C<=I;++C){var E=g+C;if(C==I||0==t[E]){if(Q){var i=Q,r=t,e=i+(E-Q);for(Q=i;r[Q]&&!(Q>=e);)++Q;if(16<Q-i&&r.buffer&&CA)i=CA.decode(r.subarray(i,Q));else{for(e="";i<Q;){var a=r[i++];if(128&a){var o=63&r[i++];if(192==(224&a))e+=String.fromCharCode((31&a)<<6|o);else{var s=63&r[i++];65536>(a=224==(240&a)?(15&a)<<12|o<<6|s:(7&a)<<18|o<<12|s<<6|63&r[i++])?e+=String.fromCharCode(a):(a-=65536,e+=String.fromCharCode(55296|a>>10,56320|1023&a))}}else e+=String.fromCharCode(a)}i=e}}else i="";if(void 0===h)var h=i;else h+=String.fromCharCode(0),h+=i;Q=E+1}}else{for(h=Array(I),C=0;C<I;++C)h[C]=String.fromCharCode(t[g+C]);h=h.join("")}return fA(A),h},toWireType:function(A,I){I instanceof ArrayBuffer&&(I=new Uint8Array(I));var g,Q,C="string"==typeof I;if(!(C||I instanceof Uint8Array||I instanceof Uint8ClampedArray||I instanceof Int8Array))throw new m("Cannot pass non-string to std::string");if(B&&C)for(g=Q=0;g<I.length;++g){var E=I.charCodeAt(g);127>=E?Q++:2047>=E?Q+=2:55296<=E&&57343>=E?(Q+=4,++g):Q+=3}else Q=I.length;if(E=(Q=wA(4+(g=Q)+1))+4,n[Q>>2]=g,B&&C){if(C=E,E=g+1,g=t,0<E){E=C+E-1;for(var i=0;i<I.length;++i){var r=I.charCodeAt(i);if(55296<=r&&57343>=r&&(r=65536+((1023&r)<<10)|1023&I.charCodeAt(++i)),127>=r){if(C>=E)break;g[C++]=r}else{if(2047>=r){if(C+1>=E)break;g[C++]=192|r>>6}else{if(65535>=r){if(C+2>=E)break;g[C++]=224|r>>12}else{if(C+3>=E)break;g[C++]=240|r>>18,g[C++]=128|r>>12&63}g[C++]=128|r>>6&63}g[C++]=128|63&r}}g[C]=0}}else if(C)for(C=0;C<g;++C){if(255<(i=I.charCodeAt(C)))throw fA(E),new m("String has UTF-16 code units that do not fit in 8 bits");t[E+C]=i}else for(C=0;C<g;++C)t[E+C]=I[C];return null!==A&&A.push(fA,Q),Q},argPackAdvance:8,readValueFromPointer:QA,C(A){fA(A)}})},c:(A,I,B)=>{if(B=S(B),2===I)var g=iA,Q=rA,C=tA,E=()=>a,i=1;else 4===I&&(g=eA,Q=aA,C=oA,E=()=>n,i=2);v(A,{name:B,fromWireType:A=>{for(var B,Q=n[A>>2],C=E(),r=A+4,t=0;t<=Q;++t){var e=A+4+t*I;t!=Q&&0!=C[e>>i]||(r=g(r,e-r),void 0===B?B=r:(B+=String.fromCharCode(0),B+=r),r=e+I)}return fA(A),B},toWireType:(A,g)=>{if("string"!=typeof g)throw new m(`Cannot pass non-string to C++ string type ${B}`);var E=C(g),r=wA(4+E+I);return n[r>>2]=E>>i,Q(g,r+4,E+I),null!==A&&A.push(fA,r),r},argPackAdvance:8,readValueFromPointer:X,C(A){fA(A)}})},m:(A,I)=>{v(A,{N:!0,name:I=S(I),argPackAdvance:0,fromWireType:()=>{},toWireType:()=>{}})},g:T,j:A=>{4<A&&(Z.get(A).I+=1)},f:(A,I)=>{var B=H[A];if(void 0===B)throw A="_emval_take_value has unknown type "+BA(A),new m(A);return A=(A=B).readValueFromPointer(I),q(A)},h:()=>{d("")},q:(A,I,B)=>t.copyWithin(A,I,I+B),p:A=>{var I=t.length;if(2147483648<(A>>>=0))return!1;for(var B=1;4>=B;B*=2){var g=I*(1+.2/B);g=Math.min(g,A+100663296);var Q=Math;g=Math.max(A,g);A:{Q=(Q.min.call(Q,2147483648,g+(65536-g%65536)%65536)-i.buffer.byteLength+65535)/65536;try{i.grow(Q),D();var C=1;break A}catch(A){}C=void 0}if(C)return!0}return!1}},DA=function(){function A(A){return DA=A.exports,i=DA.r,D(),V=DA.w,f.unshift(DA.s),y--,g.monitorRunDependencies?.(y),0==y&&u&&(A=u,u=null,A()),DA}var I={a:cA};if(y++,g.monitorRunDependencies?.(y),g.instantiateWasm)try{return g.instantiateWasm(I,A)}catch(A){E(`Module.instantiateWasm callback failed with error: ${A}`),B(A)}return function(A,I){var B=R;return Q||"function"!=typeof WebAssembly.instantiateStreaming||N(B)||(A=>A.startsWith("file://"))(B)||"function"!=typeof fetch?p(B,A,I):fetch(B,{credentials:"same-origin"}).then(g=>WebAssembly.instantiateStreaming(g,A).then(I,function(g){return E(`wasm streaming compile failed: ${g}`),E("falling back to ArrayBuffer instantiation"),p(B,A,I)}))}(I,function(I){A(I.instance)}).catch(B),{}}(),wA=A=>(wA=DA.t)(A),fA=A=>(fA=DA.u)(A),lA=A=>(lA=DA.v)(A);function FA(){function A(){if(!hA&&(hA=!0,g.calledRun=!0,!c)){if(J(f),I(g),g.onRuntimeInitialized&&g.onRuntimeInitialized(),g.postRun)for("function"==typeof g.postRun&&(g.postRun=[g.postRun]);g.postRun.length;){var A=g.postRun.shift();l.unshift(A)}J(l)}}if(!(0<y)){if(g.preRun)for("function"==typeof g.preRun&&(g.preRun=[g.preRun]);g.preRun.length;)F();J(w),0<y||(g.setStatus?(g.setStatus("Running..."),setTimeout(function(){setTimeout(function(){g.setStatus("")},1),A()},1)):A())}}if(u=function A(){hA||FA(),hA||(u=A)},g.preInit)for("function"==typeof g.preInit&&(g.preInit=[g.preInit]);0<g.preInit.length;)g.preInit.pop()();return FA(),A.ready}),g=A("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ZW1zY3JpcHRlbjo6bWVtb3J5X3ZpZXc8dW5zaWduZWQgaW50PgBlbXNjcmlwdGVuOjptZW1vcnlfdmlldzxmbG9hdD4AZW1zY3JpcHRlbjo6bWVtb3J5X3ZpZXc8dWludDhfdD4AZW1zY3JpcHRlbjo6bWVtb3J5X3ZpZXc8aW50OF90PgBlbXNjcmlwdGVuOjptZW1vcnlfdmlldzx1aW50MTZfdD4AZW1zY3JpcHRlbjo6bWVtb3J5X3ZpZXc8aW50MTZfdD4AZW1zY3JpcHRlbjo6bWVtb3J5X3ZpZXc8dWludDY0X3Q+AGVtc2NyaXB0ZW46Om1lbW9yeV92aWV3PGludDY0X3Q+AGVtc2NyaXB0ZW46Om1lbW9yeV92aWV3PHVpbnQzMl90PgBlbXNjcmlwdGVuOjptZW1vcnlfdmlldzxpbnQzMl90PgBlbXNjcmlwdGVuOjptZW1vcnlfdmlldzxjaGFyPgBlbXNjcmlwdGVuOjptZW1vcnlfdmlldzx1bnNpZ25lZCBjaGFyPgBzdGQ6OmJhc2ljX3N0cmluZzx1bnNpZ25lZCBjaGFyPgBlbXNjcmlwdGVuOjptZW1vcnlfdmlldzxzaWduZWQgY2hhcj4AZW1zY3JpcHRlbjo6bWVtb3J5X3ZpZXc8bG9uZz4AZW1zY3JpcHRlbjo6bWVtb3J5X3ZpZXc8dW5zaWduZWQgbG9uZz4AZW1zY3JpcHRlbjo6bWVtb3J5X3ZpZXc8ZG91YmxlPgAAAABkCQAAIAgAAGlpaQBkCQAAIAgAANwMAABpaWlpAAAAAIgMAAB2aQAAAAAAAAEAAAACAAAAAQAAAAAAAAAEAAAABAAAAAQAQcwPC5UN//////z///8BAAAAAgAAAAMAAABOU3QzX18yMTJiYXNpY19zdHJpbmdJY05TXzExY2hhcl90cmFpdHNJY0VFTlNfOWFsbG9jYXRvckljRUVFRQAA6A0AAOAHAABOU3QzX18yMTJiYXNpY19zdHJpbmdJaE5TXzExY2hhcl90cmFpdHNJaEVFTlNfOWFsbG9jYXRvckloRUVFRQAA6A0AACgIAABOU3QzX18yMTJiYXNpY19zdHJpbmdJd05TXzExY2hhcl90cmFpdHNJd0VFTlNfOWFsbG9jYXRvckl3RUVFRQAA6A0AAHAIAABOU3QzX18yMTJiYXNpY19zdHJpbmdJRHNOU18xMWNoYXJfdHJhaXRzSURzRUVOU185YWxsb2NhdG9ySURzRUVFRQAAAOgNAAC4CAAATlN0M19fMjEyYmFzaWNfc3RyaW5nSURpTlNfMTFjaGFyX3RyYWl0c0lEaUVFTlNfOWFsbG9jYXRvcklEaUVFRUUAAADoDQAABAkAAE4xMGVtc2NyaXB0ZW4zdmFsRQAA6A0AAFAJAABOMTBlbXNjcmlwdGVuMTFtZW1vcnlfdmlld0ljRUUAAOgNAABsCQAATjEwZW1zY3JpcHRlbjExbWVtb3J5X3ZpZXdJYUVFAADoDQAAlAkAAE4xMGVtc2NyaXB0ZW4xMW1lbW9yeV92aWV3SWhFRQAA6A0AALwJAABOMTBlbXNjcmlwdGVuMTFtZW1vcnlfdmlld0lzRUUAAOgNAADkCQAATjEwZW1zY3JpcHRlbjExbWVtb3J5X3ZpZXdJdEVFAADoDQAADAoAAE4xMGVtc2NyaXB0ZW4xMW1lbW9yeV92aWV3SWlFRQAA6A0AADQKAABOMTBlbXNjcmlwdGVuMTFtZW1vcnlfdmlld0lqRUUAAOgNAABcCgAATjEwZW1zY3JpcHRlbjExbWVtb3J5X3ZpZXdJbEVFAADoDQAAhAoAAE4xMGVtc2NyaXB0ZW4xMW1lbW9yeV92aWV3SW1FRQAA6A0AAKwKAABOMTBlbXNjcmlwdGVuMTFtZW1vcnlfdmlld0l4RUUAAOgNAADUCgAATjEwZW1zY3JpcHRlbjExbWVtb3J5X3ZpZXdJeUVFAADoDQAA/AoAAE4xMGVtc2NyaXB0ZW4xMW1lbW9yeV92aWV3SWZFRQAA6A0AACQLAABOMTBlbXNjcmlwdGVuMTFtZW1vcnlfdmlld0lkRUUAAOgNAABMCwAATjEwX19jeHhhYml2MTE2X19zaGltX3R5cGVfaW5mb0UAAAAAKA4AAHQLAAAYDgAATjEwX19jeHhhYml2MTE3X19jbGFzc190eXBlX2luZm9FAAAAKA4AAKQLAACYCwAATjEwX19jeHhhYml2MTE3X19wYmFzZV90eXBlX2luZm9FAAAAKA4AANQLAACYCwAATjEwX19jeHhhYml2MTE5X19wb2ludGVyX3R5cGVfaW5mb0UAKA4AAAQMAAD4CwAAAAAAAHgMAAALAAAADAAAAA0AAAAOAAAADwAAAE4xMF9fY3h4YWJpdjEyM19fZnVuZGFtZW50YWxfdHlwZV9pbmZvRQAoDgAAUAwAAJgLAAB2AAAAPAwAAIQMAABiAAAAPAwAAJAMAABjAAAAPAwAAJwMAABoAAAAPAwAAKgMAABhAAAAPAwAALQMAABzAAAAPAwAAMAMAAB0AAAAPAwAAMwMAABpAAAAPAwAANgMAABqAAAAPAwAAOQMAABsAAAAPAwAAPAMAABtAAAAPAwAAPwMAAB4AAAAPAwAAAgNAAB5AAAAPAwAABQNAABmAAAAPAwAACANAABkAAAAPAwAACwNAABOMTBfX2N4eGFiaXYxMjBfX3NpX2NsYXNzX3R5cGVfaW5mb0UAAAAAKA4AADgNAADICwAAU3Q5ZXhjZXB0aW9uAAAAAAAAAACgDQAACAAAABAAAAARAAAAU3QxMWxvZ2ljX2Vycm9yACgOAACQDQAASA4AAAAAAADUDQAACAAAABIAAAARAAAAU3QxMmxlbmd0aF9lcnJvcgAAAAAoDgAAwA0AAKANAAAAAAAAyAsAAAsAAAATAAAADQAAAA4AAAAUAAAAFQAAABYAAAAXAAAAU3Q5dHlwZV9pbmZvAAAAAOgNAAAIDgAAAAAAAGANAAALAAAAGAAAAA0AAAAOAAAAFAAAABkAAAAaAAAAGwAAAOgNAABsDQAAAAAAAEgOAAAcAAAAHQAAAB4AQeQcCwNwEwEAQYAdCwEqAEHIHQsCSBMAQewdCwEK"),Q=2113929216,C=()=>B({noInitialRun:!0,wasmBinary:g}),E=class A{static codecId="lz4";static DEFAULT_ACCELERATION=1;static max_buffer_size=Q;max_buffer_size=Q;acceleration;constructor(A=1){if(!Number.isInteger(A))throw Error(`Invalid acceleration "${A}". Must be a positive integer.`);this.acceleration=A<=0?1:A}static fromConfig({acceleration:I}){return new A(I)}async encode(A){if(I||(I=C()),A.length>Q)throw Error("Codec does not support buffers of > 2113929216 bytes.");const B=await I,g=B.compress(A,this.acceleration),E=new Uint8Array(g);return B.free_result(),E}async decode(A,B){if(I||(I=C()),A.length>Q)throw Error("Codec does not support buffers of > 2113929216 bytes.");const g=await I,E=g.decompress(A),i=new Uint8Array(E);return g.free_result(),void 0!==B?(B.set(i),B):i}};export{E as default};
|
package/dist/index.mjs
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
function t(t,e,r,n={}){return void 0!==e&&void 0!==r&&(n={...n,headers:{...n.headers,Range:`bytes=${e}-${e+r-1}`}}),fetch(t,n)}function e(t,e){const r="string"==typeof t?new URL(t):t;r.pathname.endsWith("/")||(r.pathname+="/");const n=new URL(e.slice(1),r);return n.search=r.search,n}async function r(t){if(404!==t.status){if(200===t.status||206===t.status)return new Uint8Array(await t.arrayBuffer());throw new Error(`Unexpected response status ${t.status} ${t.statusText}`)}}class n{url;#t;#e;constructor(t,e={}){this.url=t,this.#t=e.overrides??{},this.#e=e.useSuffixRequest??!1}#r(t){return e=this.#t,r=t,{...e,...r,headers:{...e.headers,...r.headers}};var e,r}async get(t,n={}){let a=e(this.url,t).href;return r(await fetch(a,this.#r(n)))}async getRange(n,a,s={}){let i,o=e(this.url,n),c=this.#r(s);return i="suffixLength"in a?await async function(e,r,n,a){if(a)return fetch(e,{...n,headers:{...n.headers,Range:`bytes=-${r}`}});let s=await fetch(e,{...n,method:"HEAD"});if(!s.ok)return s;let i=s.headers.get("Content-Length"),o=Number(i);return t(e,o-r,o,n)}(o,a.suffixLength,c,this.#e):await t(o,a.offset,a.length,c),r(i)}}class a{#n;constructor(t,e,r){"number"==typeof t?this.#n=new Uint8Array(t):t instanceof ArrayBuffer?this.#n=new Uint8Array(t,e,r):this.#n=new Uint8Array(Array.from(t,t=>t?1:0))}get BYTES_PER_ELEMENT(){return 1}get byteOffset(){return this.#n.byteOffset}get byteLength(){return this.#n.byteLength}get buffer(){return this.#n.buffer}get length(){return this.#n.length}get(t){let e=this.#n[t];return"number"==typeof e?0!==e:e}set(t,e){this.#n[t]=e?1:0}fill(t){this.#n.fill(t?1:0)}*[Symbol.iterator](){for(let t=0;t<this.length;t++)yield this.get(t)}}class s{_data;chars;#a;constructor(t,e,r,n){if(this.chars=t,this.#a=new TextEncoder,"number"==typeof e)this._data=new Uint8Array(e*t);else if(e instanceof ArrayBuffer)n&&(n*=t),this._data=new Uint8Array(e,r,n);else{let r=Array.from(e);this._data=new Uint8Array(r.length*t);for(let t=0;t<r.length;t++)this.set(t,r[t])}}get BYTES_PER_ELEMENT(){return this.chars}get byteOffset(){return this._data.byteOffset}get byteLength(){return this._data.byteLength}get buffer(){return this._data.buffer}get length(){return this.byteLength/this.BYTES_PER_ELEMENT}get(t){const e=new Uint8Array(this.buffer,this.byteOffset+this.chars*t,this.chars);return(new TextDecoder).decode(e).replace(/\x00/g,"")}set(t,e){const r=new Uint8Array(this.buffer,this.byteOffset+this.chars*t,this.chars);r.fill(0),r.set(this.#a.encode(e))}fill(t){const e=this.#a.encode(t);for(let t=0;t<this.length;t++)this._data.set(e,t*this.chars)}*[Symbol.iterator](){for(let t=0;t<this.length;t++)yield this.get(t)}}class i{#s;chars;constructor(t,e,r,n){if(this.chars=t,"number"==typeof e)this.#s=new Int32Array(e*t);else if(e instanceof ArrayBuffer)n&&(n*=t),this.#s=new Int32Array(e,r,n);else{const r=e,n=new i(t,1);this.#s=new Int32Array(function*(){for(let t of r)n.set(0,t),yield*n.#s}())}}get BYTES_PER_ELEMENT(){return this.#s.BYTES_PER_ELEMENT*this.chars}get byteLength(){return this.#s.byteLength}get byteOffset(){return this.#s.byteOffset}get buffer(){return this.#s.buffer}get length(){return this.#s.length/this.chars}get(t){const e=this.chars*t;let r="";for(let t=0;t<this.chars;t++)r+=String.fromCodePoint(this.#s[e+t]);return r.replace(/\u0000/g,"")}set(t,e){const r=this.chars*t,n=this.#s.subarray(r,r+this.chars);n.fill(0);for(let t=0;t<this.chars;t++)n[t]=e.codePointAt(t)??0}fill(t){this.set(0,t);let e=this.#s.subarray(0,this.chars);for(let t=1;t<this.length;t++)this.#s.set(e,t*this.chars)}*[Symbol.iterator](){for(let t=0;t<this.length;t++)yield this.get(t)}}function o(t){const e=(new TextDecoder).decode(t);return JSON.parse(e)}function c(t,e){const r=e/2,n=e-1;let a=0;for(let s=0;s<t.length;s+=e)for(let e=0;e<r;e+=1)a=t[s+e],t[s+e]=t[s+n-e],t[s+n-e]=a}function d(t){if("v2:object"===t)return globalThis.Array;let e=t.match(/v2:([US])(\d+)/);if(e){let[,t,r]=e;return("U"===t?i:s).bind(null,Number(r))}let r={int8:Int8Array,int16:Int16Array,int32:Int32Array,int64:globalThis.BigInt64Array,uint8:Uint8Array,uint16:Uint16Array,uint32:Uint32Array,uint64:globalThis.BigUint64Array,float16:globalThis.Float16Array,float32:Float32Array,float64:Float64Array,bool:a}[t];return _(r,`Unknown or unsupported data_type: ${t}`),r}function l(t,e){const r=t.length;"string"==typeof e&&(e="C"===e?Array.from({length:r},(t,e)=>e):Array.from({length:r},(t,e)=>r-1-e)),_(r===e.length,"Order length must match the number of dimensions.");let n=1,a=new Array(r);for(let r=e.length-1;r>=0;r--)a[e[r]]=n,n*=t[e[r]];return a}function u({name:t,configuration:e}){if("default"===t){const t=e?.separator??"/";return e=>["c",...e].join(t)}if("v2"===t){const t=e?.separator??".";return e=>e.join(t)||"0"}throw new Error(`Unknown chunk key encoding: ${t}`)}function h(t,e={}){let r=[],n=function(t){if("|O"===t)return{data_type:"v2:object"};let e=t.match(/^([<|>])(.*)$/);_(e,`Invalid dtype: ${t}`);let[,r,n]=e,a={b1:"bool",i1:"int8",u1:"uint8",i2:"int16",u2:"uint16",i4:"int32",u4:"uint32",i8:"int64",u8:"uint64",f2:"float16",f4:"float32",f8:"float64"}[n]??(n.startsWith("S")||n.startsWith("U")?`v2:${n}`:void 0);return _(a,`Unsupported or unknown dtype: ${t}`),"|"===r?{data_type:a}:{data_type:a,endian:"<"===r?"little":"big"}}(t.dtype);"F"===t.order&&r.push({name:"transpose",configuration:{order:"F"}}),"endian"in n&&"big"===n.endian&&r.push({name:"bytes",configuration:{endian:"big"}});for(let{id:e,...n}of t.filters??[])r.push({name:e,configuration:n});if(t.compressor){let{id:e,...n}=t.compressor;r.push({name:e,configuration:n})}return{zarr_format:3,node_type:"array",shape:t.shape,data_type:n.data_type,chunk_grid:{name:"regular",configuration:{chunk_shape:t.chunks}},chunk_key_encoding:{name:"v2",configuration:{separator:t.dimension_separator??"."}},codecs:r,fill_value:t.fill_value,attributes:e}}function f(t){return"sharding_indexed"===t?.name}function y(t){return"uint64"!==t.data_type&&"int64"!==t.data_type||null==t.fill_value?t.fill_value:BigInt(t.fill_value)}function p(t,...e){if(!e.some(e=>t instanceof e))throw t}function _(t,e=""){if(!t)throw new Error(e)}async function g(t,{format:e,signal:r}){const n=t instanceof Response?t:new Response(t);_(n.body,"Response does not contain body.");try{const t=new Response(n.body.pipeThrough(new DecompressionStream(e),{signal:r}));return await t.arrayBuffer()}catch{throw r?.throwIfAborted(),new Error(`Failed to decode ${e}`)}}class m{kind="array_to_array";constructor(t,e){_(t.keepbits>=0,"keepbits must be zero or positive")}static fromConfig(t,e){return new m(t,e)}encode(t){throw new Error("`BitroundCodec.encode` is not implemented. Please open an issue at https://github.com/manzt/zarrita.js/issues.")}decode(t){return t}}const b=function(){const t=new Uint32Array([305419896]);return!(18===new Uint8Array(t.buffer,t.byteOffset,t.byteLength)[0])}();function w(t){return"BYTES_PER_ELEMENT"in t?t.BYTES_PER_ELEMENT:4}class v{kind="array_to_bytes";#i;#o;#c;#d;#l;constructor(t,e){this.#l=t?.endian,this.#o=d(e.data_type),this.#d=e.shape,this.#i=l(e.shape,"C");const r=new this.#o(0);this.#c=r.BYTES_PER_ELEMENT}static fromConfig(t,e){return new v(t,e)}encode(t){let e=new Uint8Array(t.data.buffer);return b&&"big"===this.#l&&c(e,w(this.#o)),e}decode(t){return b&&"big"===this.#l&&c(t,w(this.#o)),{data:new this.#o(t.buffer,t.byteOffset,t.byteLength/this.#c),shape:this.#d,stride:this.#i}}}class k{kind="bytes_to_bytes";static fromConfig(){return new k}encode(t){throw new Error("Not implemented")}decode(t){return new Uint8Array(t.buffer,t.byteOffset,t.byteLength-4)}}class E{kind="bytes_to_bytes";static fromConfig(t){return new E}encode(t){throw new Error("Gzip encoding is not enabled by default. Please register a custom codec with `numcodecs/gzip`.")}async decode(t){const e=await g(t,{format:"gzip"});return new Uint8Array(e)}}function A(t,e){return _(!Number.isNaN(e),"JsonCodec allow_nan is false but NaN was encountered during encoding."),_(e!==Number.POSITIVE_INFINITY,"JsonCodec allow_nan is false but Infinity was encountered during encoding."),_(e!==Number.NEGATIVE_INFINITY,"JsonCodec allow_nan is false but -Infinity was encountered during encoding."),e}function U(t,e){return e instanceof Object&&!Array.isArray(e)?Object.keys(e).sort().reduce((t,r)=>(t[r]=e[r],t),{}):e}class x{configuration;kind="array_to_bytes";#u;#h;constructor(t={}){this.configuration=t;const{encoding:e="utf-8",skipkeys:r=!1,ensure_ascii:n=!0,check_circular:a=!0,allow_nan:s=!0,sort_keys:i=!0,indent:o,strict:c=!0}=t;let d=t.separators;d||(d=o?[", ",": "]:[",",":"]),this.#u={encoding:e,skipkeys:r,ensure_ascii:n,check_circular:a,allow_nan:s,indent:o,separators:d,sort_keys:i},this.#h={strict:c}}static fromConfig(t){return new x(t)}encode(t){const{indent:e,encoding:r,ensure_ascii:n,check_circular:a,allow_nan:s,sort_keys:i}=this.#u;_("utf-8"===r,"JsonCodec does not yet support non-utf-8 encoding.");const o=[];_(a,"JsonCodec does not yet support skipping the check for circular references during encoding."),s||o.push(A),i&&o.push(U);const c=Array.from(t.data);let d;c.push("|O"),c.push(t.shape),o.length&&(d=(t,e)=>{let r=e;for(let e of o)r=e(t,r);return r});let l=JSON.stringify(c,d,e);return n&&(l=l.replace(/[\u007F-\uFFFF]/g,t=>{const e=`0000${t.charCodeAt(0).toString(16)}`;return`\\u${e.substring(e.length-4)}`})),(new TextEncoder).encode(l)}decode(t){const{strict:e}=this.#h;_(e,"JsonCodec does not yet support non-strict decoding.");const r=o(t),n=r.pop();r.pop(),_(n,"0D not implemented for JsonCodec.");return{data:r,shape:n,stride:l(n,"C")}}}function T(t){if(t instanceof a||t instanceof s||t instanceof i){return new Proxy(t,{get:(t,e)=>t.get(Number(e)),set:(t,e,r)=>(t.set(Number(e),r),!0)})}return t}function z(t,e){let r=function(t,e){let r;return r=t.data instanceof s||t.data instanceof i?new t.constructor(t.data.length,t.data.chars):new t.constructor(t.data.length),{data:r,shape:t.shape,stride:l(t.shape,e)}}(t,e),n=t.shape.length,a=t.data.length,o=Array(n).fill(0),c=T(t.data),d=T(r.data);for(let e=0;e<a;e++){let a=0;for(let t=0;t<n;t++)a+=o[t]*r.stride[t];d[a]=c[e],o[0]+=1;for(let e=0;e<n;e++)if(o[e]===t.shape[e]){if(e+1===n)break;o[e]=0,o[e+1]+=1}}return r}function N(t,e){let r=function(t){return _(t.shape.length===t.stride.length,"Shape and stride must have the same length."),t.stride.map((t,e)=>({stride:t,index:e})).sort((t,e)=>e.stride-t.stride).map(t=>t.index)}(t);return _(r.length===e.length,"Orders must match"),r.every((t,r)=>t===e[r])}class M{kind="array_to_array";#f;#y;constructor(t,e){let r=t.order??"C",n=e.shape.length,a=new Array(n),s=new Array(n);if("C"===r)for(let t=0;t<n;++t)a[t]=t,s[t]=t;else if("F"===r)for(let t=0;t<n;++t)a[t]=n-t-1,s[t]=n-t-1;else a=r,a.forEach((t,e)=>{_(void 0===s[t],`Invalid permutation: ${JSON.stringify(r)}`),s[t]=e});this.#f=a,this.#y=s}static fromConfig(t,e){return new M(t,e)}encode(t){return N(t,this.#y)?t:z(t,this.#y)}decode(t){return{data:t.data,shape:t.shape,stride:l(t.shape,this.#f)}}}class ${kind="array_to_bytes";#d;#p;constructor(t){this.#d=t,this.#p=l(t,"C")}static fromConfig(t,e){return new $(e.shape)}encode(t){throw new Error("Method not implemented.")}decode(t){let e=new TextDecoder,r=new DataView(t.buffer),n=Array(r.getUint32(0,!0)),a=4;for(let s=0;s<n.length;s++){let i=r.getUint32(a,!0);a+=4,n[s]=e.decode(t.buffer.slice(a,a+i)),a+=i}return{data:n,shape:this.#d,stride:this.#p}}}class I{kind="bytes_to_bytes";static fromConfig(t){return new I}encode(t){throw new Error("Zlib encoding is not enabled by default. Please register a codec with `numcodecs/zlib`.")}async decode(t){const e=await g(t,{format:"deflate"});return new Uint8Array(e)}}const S=(new Map).set("blosc",()=>import("./chunks/CKkf73Fh.mjs").then(t=>t.default)).set("lz4",()=>import("./chunks/DAknFzIV.mjs").then(t=>t.default)).set("zstd",()=>import("./chunks/CUbw7lj6.mjs").then(t=>t.default)).set("gzip",()=>E).set("zlib",()=>I).set("transpose",()=>M).set("bytes",()=>v).set("crc32c",()=>k).set("vlen-utf8",()=>$).set("json2",()=>x).set("bitround",()=>m);function C(t){let e;return{async encode(r){e||(e=await L(t));for(const t of e.array_to_array)r=await t.encode(r);let n=await e.array_to_bytes.encode(r);for(const t of e.bytes_to_bytes)n=await t.encode(n);return n},async decode(r){e||(e=await L(t));for(let t=e.bytes_to_bytes.length-1;t>=0;t--)r=await e.bytes_to_bytes[t].decode(r);let n=await e.array_to_bytes.decode(r);for(let t=e.array_to_array.length-1;t>=0;t--)n=await e.array_to_array[t].decode(n);return n}}}async function L(t){let e,r=t.codecs.map(async t=>{let e=await(S.get(t.name)?.());return _(e,`Unknown codec: ${t.name}`),{Codec:e,meta:t}}),n=[],a=[];for await(let{Codec:s,meta:i}of r){let r=s.fromConfig(i.configuration,t);switch(r.kind){case"array_to_array":n.push(r);break;case"array_to_bytes":e=r;break;default:a.push(r)}}return e||(_("v2:object"!==t.data_type,`Cannot encode ${t.data_type} to bytes without a codec`),e=v.fromConfig({endian:"little"},t)),{array_to_array:n,array_to_bytes:e,bytes_to_bytes:a}}class O extends Error{constructor(t,e={}){super(`Node not found: ${t}`,e),this.name="NodeNotFoundError"}}class R extends Error{constructor(t){super(`Missing key: ${t}`),this.name="KeyError"}}const P=18446744073709551615n;function B(t,e,r,n){_(t.store.getRange,"Store does not support range requests");let a=t.store.getRange.bind(t.store),s=e.map((t,e)=>t/n.chunk_shape[e]),i=C({data_type:"uint64",shape:[...s,2],codecs:n.index_codecs}),o={};return async e=>{let n,c=e.map((t,e)=>Math.floor(t/s[e])),d=t.resolve(r(c)).path;if(d in o)n=o[d];else{let t=4,e=16*s.reduce((t,e)=>t*e,1),r=await a(d,{suffixLength:e+t});n=o[d]=r?await i.decode(r):null}if(null===n)return;let{data:l,shape:u,stride:h}=n,f=e.map((t,e)=>t%u[e]).reduce((t,e,r)=>t+e*h[r],0),y=l[f],p=l[f+1];return y!==P||p!==P?a(d,{offset:Number(y),length:Number(p)}):void 0}}class Y{store;path;constructor(t,e="/"){this.store=t,this.path=e}resolve(t){let e=new URL(`file://${this.path.endsWith("/")?this.path:`${this.path}/`}`);return new Y(this.store,decodeURIComponent(new URL(t,e).pathname))}}class j extends Y{kind="group";#_;constructor(t,e,r){super(t,e),this.#_=r}get attrs(){return this.#_.attributes}}function F(t){const e=t.find(t=>"transpose"===t.name);return e?.configuration?.order??"C"}const D=Symbol("zarrita.context");let J=class extends Y{kind="array";#_;[D];constructor(t,e,r){super(t,e),this.#_={...r,fill_value:y(r)},this[D]=function(t,e){let{configuration:r}=e.codecs.find(f)??{},n={encode_chunk_key:u(e.chunk_key_encoding),TypedArray:d(e.data_type),fill_value:e.fill_value};if(r){let a=F(r.codecs);return{...n,kind:"sharded",chunk_shape:r.chunk_shape,codec:C({data_type:e.data_type,shape:r.chunk_shape,codecs:r.codecs}),get_strides:t=>l(t,a),get_chunk_bytes:B(t,e.chunk_grid.configuration.chunk_shape,n.encode_chunk_key,r)}}let a=F(e.codecs);return{...n,kind:"regular",chunk_shape:e.chunk_grid.configuration.chunk_shape,codec:C({data_type:e.data_type,shape:e.chunk_grid.configuration.chunk_shape,codecs:e.codecs}),get_strides:t=>l(t,a),async get_chunk_bytes(e,r){let a=n.encode_chunk_key(e),s=t.resolve(a).path;return t.store.get(s,r)}}}(this,r)}get attrs(){return this.#_.attributes}get shape(){return this.#_.shape}get chunks(){return this[D].chunk_shape}get dtype(){return this.#_.data_type}async getChunk(t,e){let r=this[D],n=await r.get_chunk_bytes(t,e);if(!n){let t=r.chunk_shape.reduce((t,e)=>t*e,1),e=new r.TypedArray(t);return e.fill(r.fill_value),{data:e,shape:r.chunk_shape,stride:r.get_strides(r.chunk_shape)}}return r.codec.decode(n)}is(t){return function(t,e){if("number"!==e&&"bigint"!==e&&"boolean"!==e&&"object"!==e&&"string"!==e)return t===e;let r="bool"===t;if("boolean"===e)return r;let n=t.startsWith("v2:U")||t.startsWith("v2:S");if("string"===e)return n;let a="int64"===t||"uint64"===t;if("bigint"===e)return a;let s="v2:object"===t;return"object"===e?s:!(n||a||r||s)}(this.dtype,t)}};function V(t,e,r=null){return void 0===e&&(e=t,t=null),{start:t,stop:e,step:r}}class W extends Error{constructor(t){super(t),this.name="IndexError"}}function q(t,e){t.length>e.length&&function(t,e){throw new W(`too many indicies for array; expected ${e.length}, got ${t.length}`)}(t,e)}function G(t,e){return(t=Math.trunc(t))<0&&(t=e+t),(t>=e||t<0)&&function(t){throw new W(`index out of bounds for dimension with length ${t}`)}(e),t}class Q{dim_sel;dim_len;dim_chunk_len;nitems;constructor({dim_sel:t,dim_len:e,dim_chunk_len:r}){t=G(t,e),this.dim_sel=t,this.dim_len=e,this.dim_chunk_len=r,this.nitems=1}*[Symbol.iterator](){const t=Math.floor(this.dim_sel/this.dim_chunk_len),e=t*this.dim_chunk_len,r=this.dim_sel-e;yield{dim_chunk_ix:t,dim_chunk_sel:r}}}class H{start;stop;step;dim_len;dim_chunk_len;nitems;nchunks;constructor({dim_sel:t,dim_len:e,dim_chunk_len:r}){const[n,a,s]=function({start:t,stop:e,step:r},n){if(0===r)throw new Error("slice step cannot be zero");const a=(r=r??1)<0,[s,i]=a?[-1,n-1]:[0,n];return null===t?t=a?i:s:t<0?(t+=n)<s&&(t=s):t>i&&(t=i),null===e?e=a?s:i:e<0?(e+=n)<s&&(e=s):e>i&&(e=i),[t,e,r]}(t,e);this.start=n,this.stop=a,this.step=s,this.step<1&&function(){throw new W("only slices with step >= 1 are supported")}(),this.dim_len=e,this.dim_chunk_len=r,this.nitems=Math.max(0,Math.ceil((this.stop-this.start)/this.step)),this.nchunks=Math.ceil(this.dim_len/this.dim_chunk_len)}*[Symbol.iterator](){const t=Math.floor(this.start/this.dim_chunk_len),e=Math.ceil(this.stop/this.dim_chunk_len);for(const r of function*(t,e,r=1){void 0===e&&(e=t,t=0);for(let n=t;n<e;n+=r)yield n}(t,e)){const t=r*this.dim_chunk_len,e=Math.min(this.dim_len,(r+1)*this.dim_chunk_len),n=e-t;let a=0,s=0;if(this.start<t){const e=(t-this.start)%this.step;e&&(s+=this.step-e),a=Math.ceil((t-this.start)/this.step)}else s=this.start-t;const i=this.stop>e?n:this.stop-t,o=[s,i,this.step],c=[a,a+Math.ceil((i-s)/this.step),1];yield{dim_chunk_ix:r,dim_chunk_sel:o,dim_out_sel:c}}}}class K{dim_indexers;shape;constructor({selection:t,shape:e,chunk_shape:r}){this.dim_indexers=function(t,e){let r=[];return null===t?r=e.map(t=>V(null)):Array.isArray(t)&&(r=t.map(t=>t??V(null))),q(r,e),r}(t,e).map((t,n)=>new("number"==typeof t?Q:H)({dim_sel:t,dim_len:e[n],dim_chunk_len:r[n]})),this.shape=this.dim_indexers.filter(t=>t instanceof H).map(t=>t.nitems)}*[Symbol.iterator](){for(const t of function*(...t){if(0===t.length)return;const e=t.map(t=>t[Symbol.iterator]()),r=e.map(t=>t.next());if(r.some(t=>t.done))throw new Error("Input contains an empty iterator.");for(let n=0;;){if(r[n].done){if(e[n]=t[n][Symbol.iterator](),r[n]=e[n].next(),++n>=e.length)return}else yield r.map(({value:t})=>t),n=0;r[n]=e[n].next()}}(...this.dim_indexers)){const e=t.map(t=>t.dim_chunk_ix),r=t.map(t=>"dim_out_sel"in t?{from:t.dim_chunk_sel,to:t.dim_out_sel}:{from:t.dim_chunk_sel,to:null});yield{chunk_coords:e,mapping:r}}}}async function Z(t,e,r,n){let a=t[D];let s=new K({selection:e,shape:t.shape,chunk_shape:t.chunks}),i=n.prepare(new a.TypedArray(s.shape.reduce((t,e)=>t*e,1)),s.shape,a.get_strides(s.shape)),o=r.create_queue?.()??function(){const t=[];return{add:e=>t.push(e()),onIdle:()=>Promise.all(t)}}();for(const{chunk_coords:e,mapping:a}of s)o.add(async()=>{let{data:s,shape:o,stride:c}=await t.getChunk(e,r.opts),d=n.prepare(s,o,c);n.set_from_chunk(i,d,a)});return await o.onIdle(),0===s.shape.length?function(t,e){return"get"in t?t.get(e):t[e]}(i.data,0):i}function X(t,e=0,r){let n=r??t.length-e;return{length:n,subarray:(r,a=n)=>X(t,e+r,a-r),set(r,n=0){for(let a=0;a<r.length;a++)t[e+n+a]=r.get(a)},get:r=>t[e+r]}}function tt(t){return globalThis.Array.isArray(t.data)?{data:X(t.data),stride:t.stride,bytes_per_element:1}:{data:new Uint8Array(t.data.buffer,t.data.byteOffset,t.data.byteLength),stride:t.stride,bytes_per_element:t.data.BYTES_PER_ELEMENT}}const et={prepare:(t,e,r)=>({data:t,shape:e,stride:r}),set_scalar(t,e,r){let n=tt(t);at(n,e,function(t,e){if(globalThis.Array.isArray(t.data))return X([e]);let r=new(function(t){return"chars"in t?t.constructor.bind(null,t.chars):t.constructor}(t.data))([e]);return new Uint8Array(r.buffer,r.byteOffset,r.byteLength)}(t,r),n.bytes_per_element)},set_from_chunk(t,e,r){let n=tt(t);st(n,tt(e),n.bytes_per_element,r)}};async function rt(t,e=null,r={}){return Z(t,e,r,et)}function nt(t,e,r){return r<0&&e<t?Math.floor((t-e-1)/-r)+1:t<e?Math.floor((e-t-1)/r)+1:0}function at(t,e,r,n){if(0===e.length)return void t.data.set(r,0);const[a,...s]=e,[i,...o]=t.stride;if("number"==typeof a){return void at({data:t.data.subarray(i*a*n),stride:o},s,r,n)}const[c,d,l]=a,u=nt(c,d,l);if(0!==s.length)for(let e=0;e<u;e++){at({data:t.data.subarray(i*(c+l*e)*n),stride:o},s,r,n)}else for(let e=0;e<u;e++)t.data.set(r,i*(c+l*e)*n)}function st(t,e,r,n){const[a,...s]=n,[i,...o]=t.stride,[c,...d]=e.stride;if(null===a.from)return 0===s.length?void t.data.set(e.data.subarray(0,r),a.to*r):void st({data:t.data.subarray(i*a.to*r),stride:o},e,r,s);if(null===a.to){if(0===s.length){let n=a.from*r;return void t.data.set(e.data.subarray(n,n+r),0)}return void st(t,{data:e.data.subarray(c*a.from*r),stride:d},r,s)}const[l,u,h]=a.to,[f,y,p]=a.from,_=nt(l,u,h);if(0!==s.length)for(let n=0;n<_;n++)st({data:t.data.subarray(i*(l+n*h)*r),stride:o},{data:e.data.subarray(c*(f+n*p)*r),stride:d},r,s);else{if(1===h&&1===p&&1===i&&1===c){let n=f*r,a=_*r;return void t.data.set(e.data.subarray(n,n+a),l*r)}for(let n=0;n<_;n++){let a=c*(f+p*n)*r;t.data.set(e.data.subarray(a,a+r),i*(l+h*n)*r)}}}let it=function(){let t=new WeakMap;function e(e){let r=t.get(e)??{v2:0,v3:0};return t.set(e,r),r}return{increment(t,r){e(t)[r]+=1},version_max(t){let r=e(t);return r.v3>r.v2?"v3":"v2"}}}();async function ot(t,e){let{path:r}=t.resolve(".zarray"),n=await t.store.get(r);if(!n)throw new O("v2 array",{cause:new R(r)});return it.increment(t.store,"v2"),new J(t.store,t.path,h(o(n),e))}async function ct(t,e){let{path:r}=t.resolve(".zgroup"),n=await t.store.get(r);if(!n)throw new O("v2 group",{cause:new R(r)});return it.increment(t.store,"v2"),new j(t.store,t.path,function(t,e={}){return{zarr_format:3,node_type:"group",attributes:e}}(o(n),e))}async function dt(t,e={}){let r="store"in t?t.store:t,n=it.version_max(r),a="v2"===n?dt.v2:dt.v3,s="v2"===n?dt.v3:dt.v2;return a(t,e).catch(r=>(p(r,O),s(t,e)))}dt.v2=async function(t,e={}){let r="store"in t?t:new Y(t),n={};return(e.attrs??1)&&(n=await async function(t){let e=await t.store.get(t.resolve(".zattrs").path);return e?o(e):{}}(r)),"array"===e.kind?ot(r,n):"group"===e.kind?ct(r,n):ot(r,n).catch(t=>(p(t,O),ct(r,n)))},dt.v3=async function(t,e={}){let r="store"in t?t:new Y(t),n=await async function(t){let{store:e,path:r}=t.resolve("zarr.json"),n=await t.store.get(r);if(!n)throw new O("v3 array or group",{cause:new R(r)});let a=o(n);return"array"===a.node_type&&(a.fill_value=y(a)),"array"===a.node_type?new J(e,t.path,a):new j(e,t.path,a)}(r);if(it.increment(r.store,"v3"),void 0===e.kind)return n;if("array"===e.kind&&n instanceof J)return n;if("group"===e.kind&&n instanceof j)return n;let a=n instanceof J?"array":"group";throw new Error(`Expected node of kind ${e.kind}, found ${a}.`)};const lt=async({zarrUrl:t,riverId:e,idx:r,idVariable:n})=>{if(void 0===r&&void 0===e)throw new Error("Either 'riverId' or 'idx' must be provided.");return void 0===r&&(r=await ft({zarrUrl:t,variable:n,value:e})),r},ut=async({zarrUrl:t,variable:e,selection:r=null})=>{const a=new n(`${t}/${e}`),s=await dt.v2(a);return[...(await rt(s,r)).data]},ht=async({zarrUrl:t,variable:e})=>await ut({zarrUrl:t,variable:e,selection:[null]}),ft=async({zarrUrl:t,variable:e,value:r})=>(await ht({zarrUrl:t,variable:e})).indexOf(r),yt=async({zarrUrl:t})=>{const e=new n(`${t}/time`),r=await dt.v2(e),a=await rt(r,[null]),s=r.attrs.units,i=new Date(s.split("since")[1].trim()),o={seconds:1,minutes:60,hours:3600,days:86400}[s.split("since")[0].trim()];return[...a.data].map(t=>{let e=new Date(i);return e.setSeconds(e.getSeconds()+Number(t)*o),e})};var pt=Object.freeze({__proto__:null,forecast:async function({baseUrl:t,date:e,riverId:r,idx:n}){if(!/^\d{8}$/.test(e))throw new Error(`Invalid date format: ${e}. Must be YYYYMMDD.`);const a=`${t||"http://geoglows-v2-forecasts.s3-website-us-west-2.amazonaws.com"}/${e}00.zarr`,s=await lt({zarrUrl:a,riverId:r,idx:n,idVariable:"rivid"});let[i,o]=await Promise.all([yt({zarrUrl:a}),ut({zarrUrl:a,variable:"Qout",selection:[{start:0,stop:51,step:1},null,s]})]);const c=o.slice(0,i.length).map((t,e)=>isNaN(t)?-1:e).filter(t=>-1!==t),d=Array(51).fill(0).map((t,e)=>e*i.length);o=d.map(t=>o.slice(t,t+i.length)).map(t=>c.map(e=>t[e])),i=c.map(t=>i[t]);const l=(t=>{const e=t.length,r=t[0].length;let n={min:Array(r).fill(0),p20:Array(r).fill(0),p25:Array(r).fill(0),median:Array(r).fill(0),p75:Array(r).fill(0),p80:Array(r).fill(0),max:Array(r).fill(0),average:Array(r).fill(0)};return Array(r).fill(0).forEach((r,a)=>{const s=t.map(t=>t[a]).sort((t,e)=>t-e);n.min[a]=s[0],n.p20[a]=s[Math.floor(.2*e)],n.p25[a]=s[Math.floor(.25*e)],n.median[a]=s[Math.floor(.5*e)],n.p75[a]=s[Math.floor(.75*e)],n.p80[a]=s[Math.floor(.8*e)],n.max[a]=s[e-1],n.average[a]=s.reduce((t,e)=>t+e,0)/e}),n})(o);return{time:i,discharge:o,stats:l}},retrospective:async function({baseUrl:t,resolution:e="daily",riverId:r,idx:n}){if(!["hourly","daily","monthly","yearly"].includes(e))throw new Error(`Invalid resolution: ${e}. Must be one of 'hourly', 'daily', 'monthly', 'yearly'.`);["monthly","yearly"].includes(e)&&(e=`${e}-timeseries`);const a=`${t||"http://geoglows-v2.s3-us-west-2.amazonaws.com"}/retrospective/${e}.zarr`,s=await lt({zarrUrl:a,riverId:r,idx:n,idVariable:"river_id"}),[i,o]=await Promise.all([yt({zarrUrl:a}),ut({zarrUrl:a,variable:"Q",selection:[null,s]})]);return{time:i,discharge:o}},returnPeriods:async function({baseUrl:t,riverId:e,idx:r}){const n=`${t||"http://geoglows-v2.s3-us-west-2.amazonaws.com"}/retrospective/return-periods.zarr`,a=await lt({zarrUrl:n,riverId:e,idx:r,idVariable:"river_id"}),[s,i]=await Promise.all([ht({zarrUrl:n,variable:"return_period"}),ut({zarrUrl:n,variable:"gumbel",selection:[null,a]})]);return s.reduce((t,e,r)=>(t[Number(e)]=Number(i[r]),t),{})}});const _t={v2:pt};export{_t as default,pt as v2};
|
package/package.json
ADDED
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
{
|
|
2
|
+
"name": "riverforecastsystem",
|
|
3
|
+
"version": "0.0.2",
|
|
4
|
+
"description": "Client for reading GEOGLOWS RFS data from publicly archived Zarr data on S3.",
|
|
5
|
+
"license": "ISC",
|
|
6
|
+
"author": "Riley Hales",
|
|
7
|
+
"type": "module",
|
|
8
|
+
"sideEffects": false,
|
|
9
|
+
"scripts": {
|
|
10
|
+
"test": "node test/test.js",
|
|
11
|
+
"build": "rollup -c rollup.config.js",
|
|
12
|
+
"deploy": "npm run build && npm publish --access public"
|
|
13
|
+
},
|
|
14
|
+
"dependencies": {
|
|
15
|
+
"zarrita": "^0.5.4"
|
|
16
|
+
},
|
|
17
|
+
"devDependencies": {
|
|
18
|
+
"@rollup/plugin-commonjs": "^29.0.0",
|
|
19
|
+
"@rollup/plugin-node-resolve": "^16.0.3",
|
|
20
|
+
"@rollup/plugin-terser": "^0.4.4",
|
|
21
|
+
"rollup": "^4.53.3"
|
|
22
|
+
}
|
|
23
|
+
}
|
package/src/index.js
ADDED
|
@@ -0,0 +1,77 @@
|
|
|
1
|
+
'use strict';
|
|
2
|
+
|
|
3
|
+
import {fetchZarrValues, getTimeCoordinateValues, resolveRiverIdToIndex} from "./zarrFetchers.js";
|
|
4
|
+
|
|
5
|
+
const s3Uri = "http://geoglows-v2-forecasts.s3-website-us-west-2.amazonaws.com"
|
|
6
|
+
const cloudfrontUri = "https://d14ritg1bypdp7.cloudfront.net"
|
|
7
|
+
const forecastDischargeVariable = "Qout"
|
|
8
|
+
|
|
9
|
+
const _membersToStats = membersArray => {
|
|
10
|
+
// takes an array of equally sized subarrays (one for each member) and computes timestep-wise statistics
|
|
11
|
+
const nMembers = membersArray.length
|
|
12
|
+
const nTimesteps = membersArray[0].length
|
|
13
|
+
let stats = {
|
|
14
|
+
min: Array(nTimesteps).fill(0),
|
|
15
|
+
p20: Array(nTimesteps).fill(0),
|
|
16
|
+
p25: Array(nTimesteps).fill(0),
|
|
17
|
+
median: Array(nTimesteps).fill(0),
|
|
18
|
+
p75: Array(nTimesteps).fill(0),
|
|
19
|
+
p80: Array(nTimesteps).fill(0),
|
|
20
|
+
max: Array(nTimesteps).fill(0),
|
|
21
|
+
average: Array(nTimesteps).fill(0),
|
|
22
|
+
}
|
|
23
|
+
Array(nTimesteps).fill(0).forEach((_, idx) => {
|
|
24
|
+
const timestepValues = membersArray.map(member => member[idx]).sort((a, b) => a - b)
|
|
25
|
+
stats.min[idx] = timestepValues[0]
|
|
26
|
+
stats.p20[idx] = timestepValues[Math.floor(0.20 * nMembers)]
|
|
27
|
+
stats.p25[idx] = timestepValues[Math.floor(0.25 * nMembers)]
|
|
28
|
+
stats.median[idx] = timestepValues[Math.floor(0.5 * nMembers)]
|
|
29
|
+
stats.p75[idx] = timestepValues[Math.floor(0.75 * nMembers)]
|
|
30
|
+
stats.p80[idx] = timestepValues[Math.floor(0.80 * nMembers)]
|
|
31
|
+
stats.max[idx] = timestepValues[nMembers - 1]
|
|
32
|
+
stats.average[idx] = timestepValues.reduce((a, b) => a + b, 0) / nMembers
|
|
33
|
+
})
|
|
34
|
+
return stats
|
|
35
|
+
}
|
|
36
|
+
|
|
37
|
+
export default async function ({baseUrl, date, riverId, idx}) {
|
|
38
|
+
/*
|
|
39
|
+
The dimension order is (memberNumber, time, riverId)
|
|
40
|
+
Retrieves 51 member ensemble forecast discharge for a given riverId and initialization date (YYYYMMDD). The returns an object of structure:
|
|
41
|
+
{
|
|
42
|
+
datetime: [Date, Date, ...],
|
|
43
|
+
discharge: [
|
|
44
|
+
[Number, Number, ...],
|
|
45
|
+
[Number, Number, ...],
|
|
46
|
+
...
|
|
47
|
+
], // array of arrays, one per ensemble member (51 total)
|
|
48
|
+
stats: {
|
|
49
|
+
min: [Number, Number, ...],
|
|
50
|
+
p20: [Number, Number, ...],
|
|
51
|
+
... // etc, see _membersToStats function
|
|
52
|
+
}
|
|
53
|
+
}
|
|
54
|
+
*/
|
|
55
|
+
const nEnsMems = 51;
|
|
56
|
+
if (!/^\d{8}$/.test(date)) {
|
|
57
|
+
// check that dates are in YYYYMMDD format. the function will add in the 00 hour
|
|
58
|
+
throw new Error(`Invalid date format: ${date}. Must be YYYYMMDD.`);
|
|
59
|
+
}
|
|
60
|
+
|
|
61
|
+
const zarrUrl = `${baseUrl ? baseUrl : s3Uri}/${date}00.zarr`;
|
|
62
|
+
const resolvedIdx = await resolveRiverIdToIndex({zarrUrl, riverId, idx, idVariable: 'rivid'});
|
|
63
|
+
let [time, discharge] = await Promise.all([
|
|
64
|
+
getTimeCoordinateValues({zarrUrl}),
|
|
65
|
+
fetchZarrValues({zarrUrl, variable: forecastDischargeVariable, selection: [{start: 0, stop: 51, step: 1}, null, resolvedIdx]})
|
|
66
|
+
]);
|
|
67
|
+
// discharge has shape of [nEnsMems, datetime.length] but it's flattened. find out which discharges are nan in the first ensemble member for reference in filtering the rest
|
|
68
|
+
const validTimeIndices = discharge.slice(0, time.length).map((val, i) => !isNaN(val) ? i : -1).filter(i => i !== -1);
|
|
69
|
+
// split the discharge array into the correct number of subarrays
|
|
70
|
+
const memberStartIndices = Array(nEnsMems).fill(0).map((_, i) => i * time.length);
|
|
71
|
+
discharge = memberStartIndices
|
|
72
|
+
.map(startIdx => discharge.slice(startIdx, startIdx + time.length)) // array of nEnsMems subarrays
|
|
73
|
+
.map(memberArray => validTimeIndices.map(i => memberArray[i])) // for each member array, select only the valid time indices
|
|
74
|
+
time = validTimeIndices.map(i => time[i]);
|
|
75
|
+
const stats = _membersToStats(discharge);
|
|
76
|
+
return {time, discharge, stats}
|
|
77
|
+
}
|
package/src/v2/index.js
ADDED
|
@@ -0,0 +1,33 @@
|
|
|
1
|
+
'use strict';
|
|
2
|
+
|
|
3
|
+
import {fetchZarrValues, getTimeCoordinateValues, resolveRiverIdToIndex} from "./zarrFetchers.js";
|
|
4
|
+
|
|
5
|
+
const retrospectiveDischargeVariable = "Q"
|
|
6
|
+
|
|
7
|
+
const s3Uri = "http://geoglows-v2.s3-us-west-2.amazonaws.com"
|
|
8
|
+
const cloudfrontUri = "https://d2grb3c773p1iz.cloudfront.net"
|
|
9
|
+
|
|
10
|
+
export default async function ({baseUrl, resolution = 'daily', riverId, idx}) {
|
|
11
|
+
/*
|
|
12
|
+
The dimension order is (time, riverId)
|
|
13
|
+
Retrieves retrospective discharge for a given riverId. The returns an object of structure:
|
|
14
|
+
{
|
|
15
|
+
datetime: [Date, Date, ...],
|
|
16
|
+
discharge: [Number, Number, ...],
|
|
17
|
+
}
|
|
18
|
+
*/
|
|
19
|
+
// resolution should be hourly, daily, monthly, yearly
|
|
20
|
+
if (!['hourly', 'daily', 'monthly', 'yearly'].includes(resolution)) {
|
|
21
|
+
throw new Error(`Invalid resolution: ${resolution}. Must be one of 'hourly', 'daily', 'monthly', 'yearly'.`)
|
|
22
|
+
}
|
|
23
|
+
if (['monthly', 'yearly'].includes(resolution)) {
|
|
24
|
+
resolution = `${resolution}-timeseries`;
|
|
25
|
+
}
|
|
26
|
+
const zarrUrl = `${baseUrl ? baseUrl : s3Uri}/retrospective/${resolution}.zarr`;
|
|
27
|
+
const resolvedIdx = await resolveRiverIdToIndex({zarrUrl, riverId, idx, idVariable: 'river_id'});
|
|
28
|
+
const [time, discharge] = await Promise.all([
|
|
29
|
+
getTimeCoordinateValues({zarrUrl}),
|
|
30
|
+
fetchZarrValues({zarrUrl, variable: retrospectiveDischargeVariable, selection: [null, resolvedIdx]})
|
|
31
|
+
])
|
|
32
|
+
return {time, discharge}
|
|
33
|
+
}
|
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
'use strict';
|
|
2
|
+
|
|
3
|
+
import {fetchZarrValues, getCoordinateValues, resolveRiverIdToIndex} from "./zarrFetchers.js";
|
|
4
|
+
|
|
5
|
+
const s3Uri = "http://geoglows-v2.s3-us-west-2.amazonaws.com"
|
|
6
|
+
const cloudfrontUri = "https://d2grb3c773p1iz.cloudfront.net"
|
|
7
|
+
|
|
8
|
+
export default async function ({baseUrl, riverId, idx}) {
|
|
9
|
+
/*
|
|
10
|
+
The dimension order is (returnPeriod, riverId)
|
|
11
|
+
Retrieves return period discharge values for a given riverId.
|
|
12
|
+
The returns an object where the keys are integer return period values (in years) and the values are discharge values (in m3/s) of structure:
|
|
13
|
+
{
|
|
14
|
+
[returnPeriod]: dischargeValue,
|
|
15
|
+
...
|
|
16
|
+
}
|
|
17
|
+
*/
|
|
18
|
+
const zarrUrl = `${baseUrl ? baseUrl : s3Uri}/retrospective/return-periods.zarr`;
|
|
19
|
+
|
|
20
|
+
const resolvedIdx = await resolveRiverIdToIndex({zarrUrl, riverId, idx, idVariable: 'river_id'});
|
|
21
|
+
const [labels, returnPeriods] = await Promise.all([
|
|
22
|
+
getCoordinateValues({zarrUrl, variable: 'return_period'}),
|
|
23
|
+
fetchZarrValues({zarrUrl, variable: 'gumbel', selection: [null, resolvedIdx]})
|
|
24
|
+
]);
|
|
25
|
+
return labels.reduce((acc, label, i) => {
|
|
26
|
+
acc[Number(label)] = Number(returnPeriods[i]);
|
|
27
|
+
return acc;
|
|
28
|
+
}, {});
|
|
29
|
+
}
|
|
@@ -0,0 +1,61 @@
|
|
|
1
|
+
'use strict';
|
|
2
|
+
|
|
3
|
+
// all data from rfsv2 are zarr version/format 2
|
|
4
|
+
import {FetchStore, get, open} from "zarrita"
|
|
5
|
+
|
|
6
|
+
const resolveRiverIdToIndex = async ({zarrUrl, riverId, idx, idVariable}) => {
|
|
7
|
+
// idx is preferred. if not provided, riverId must be given to look up the index.
|
|
8
|
+
// validate that at least one of riverId or idx is provided
|
|
9
|
+
if (idx === undefined && riverId === undefined) {
|
|
10
|
+
throw new Error("Either 'riverId' or 'idx' must be provided.");
|
|
11
|
+
}
|
|
12
|
+
if (idx === undefined) {
|
|
13
|
+
idx = await getCoordinateIndex({zarrUrl, variable: idVariable, value: riverId})
|
|
14
|
+
}
|
|
15
|
+
return idx;
|
|
16
|
+
}
|
|
17
|
+
|
|
18
|
+
const fetchZarrValues = async ({zarrUrl, variable, selection = null}) => {
|
|
19
|
+
const store = new FetchStore(`${zarrUrl}/${variable}`);
|
|
20
|
+
const node = await open.v2(store);
|
|
21
|
+
const array = await get(node, selection);
|
|
22
|
+
return [...array.data];
|
|
23
|
+
}
|
|
24
|
+
|
|
25
|
+
const getCoordinateValues = async ({zarrUrl, variable}) => {
|
|
26
|
+
return await fetchZarrValues({zarrUrl, variable, selection: [null]});
|
|
27
|
+
}
|
|
28
|
+
|
|
29
|
+
const getCoordinateIndex = async ({zarrUrl, variable, value}) => {
|
|
30
|
+
let coordinates = await getCoordinateValues({zarrUrl, variable});
|
|
31
|
+
return coordinates.indexOf(value);
|
|
32
|
+
}
|
|
33
|
+
|
|
34
|
+
const getTimeCoordinateValues = async ({zarrUrl}) => {
|
|
35
|
+
const store = new FetchStore(`${zarrUrl}/time`);
|
|
36
|
+
const node = await open.v2(store);
|
|
37
|
+
const array = await get(node, [null]);
|
|
38
|
+
|
|
39
|
+
const units = node.attrs.units;
|
|
40
|
+
const originTime = new Date(units.split("since")[1].trim());
|
|
41
|
+
const conversionFactor = {
|
|
42
|
+
seconds: 1,
|
|
43
|
+
minutes: 60,
|
|
44
|
+
hours: 60 * 60,
|
|
45
|
+
days: 60 * 60 * 24,
|
|
46
|
+
}[units.split("since")[0].trim()];
|
|
47
|
+
|
|
48
|
+
return [...array.data].map(t => {
|
|
49
|
+
let origin = new Date(originTime);
|
|
50
|
+
origin.setSeconds(origin.getSeconds() + (Number(t) * conversionFactor));
|
|
51
|
+
return origin;
|
|
52
|
+
});
|
|
53
|
+
}
|
|
54
|
+
|
|
55
|
+
export {
|
|
56
|
+
fetchZarrValues,
|
|
57
|
+
getCoordinateValues,
|
|
58
|
+
getCoordinateIndex,
|
|
59
|
+
getTimeCoordinateValues,
|
|
60
|
+
resolveRiverIdToIndex,
|
|
61
|
+
}
|