@uploadista/core 0.0.17 → 0.0.18-beta.10

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.
Files changed (117) hide show
  1. package/README.md +102 -0
  2. package/dist/{checksum-DaCqP8Qa.mjs → checksum-COoD-F1l.mjs} +2 -2
  3. package/dist/{checksum-DaCqP8Qa.mjs.map → checksum-COoD-F1l.mjs.map} +1 -1
  4. package/dist/{checksum-BIlVW8bD.cjs → checksum-YLW4hVY7.cjs} +1 -1
  5. package/dist/errors/index.cjs +1 -1
  6. package/dist/errors/index.d.cts +1 -1
  7. package/dist/errors/index.d.mts +1 -1
  8. package/dist/errors/index.mjs +1 -1
  9. package/dist/flow/index.cjs +1 -1
  10. package/dist/flow/index.d.cts +5 -5
  11. package/dist/flow/index.d.mts +5 -5
  12. package/dist/flow/index.mjs +1 -1
  13. package/dist/flow-BLGpxdEm.mjs +2 -0
  14. package/dist/flow-BLGpxdEm.mjs.map +1 -0
  15. package/dist/flow-DaBzRGmY.cjs +1 -0
  16. package/dist/{index-BGi1r_fi.d.mts → index-9gyMMEIB.d.cts} +2 -2
  17. package/dist/{index-BGi1r_fi.d.mts.map → index-9gyMMEIB.d.cts.map} +1 -1
  18. package/dist/{index-B_SvQ0MU.d.cts → index-B9V5SSxl.d.mts} +2 -2
  19. package/dist/{index-B_SvQ0MU.d.cts.map → index-B9V5SSxl.d.mts.map} +1 -1
  20. package/dist/{index-DIWuZlxd.d.mts → index-BFSHumky.d.mts} +2 -2
  21. package/dist/{index-DIWuZlxd.d.mts.map → index-BFSHumky.d.mts.map} +1 -1
  22. package/dist/{index-BQ5luyME.d.cts → index-D7i4bgl3.d.mts} +2747 -828
  23. package/dist/index-D7i4bgl3.d.mts.map +1 -0
  24. package/dist/{index-qIN6ULCb.d.cts → index-DFbu_-zn.d.cts} +2 -2
  25. package/dist/{index-qIN6ULCb.d.cts.map → index-DFbu_-zn.d.cts.map} +1 -1
  26. package/dist/{index-BtnCNLsH.d.mts → index-fF-j_WhY.d.cts} +2747 -828
  27. package/dist/index-fF-j_WhY.d.cts.map +1 -0
  28. package/dist/index.cjs +1 -1
  29. package/dist/index.d.cts +5 -5
  30. package/dist/index.d.mts +5 -5
  31. package/dist/index.mjs +1 -1
  32. package/dist/{stream-limiter-D2Y8Z_Kv.mjs → stream-limiter-B9nsn2gb.mjs} +2 -2
  33. package/dist/{stream-limiter-D2Y8Z_Kv.mjs.map → stream-limiter-B9nsn2gb.mjs.map} +1 -1
  34. package/dist/{stream-limiter-By0fxkAh.cjs → stream-limiter-DyWOdil4.cjs} +1 -1
  35. package/dist/streams/index.cjs +1 -1
  36. package/dist/streams/index.d.cts +2 -2
  37. package/dist/streams/index.d.mts +2 -2
  38. package/dist/streams/index.mjs +1 -1
  39. package/dist/testing/index.cjs +1 -1
  40. package/dist/testing/index.d.cts +4 -4
  41. package/dist/testing/index.d.mts +4 -4
  42. package/dist/testing/index.mjs +1 -1
  43. package/dist/types/index.cjs +1 -1
  44. package/dist/types/index.d.cts +5 -5
  45. package/dist/types/index.d.mts +5 -5
  46. package/dist/types/index.mjs +1 -1
  47. package/dist/types-CH0BgiJN.mjs +2 -0
  48. package/dist/types-CH0BgiJN.mjs.map +1 -0
  49. package/dist/types-DUYVoR13.cjs +1 -0
  50. package/dist/upload/index.cjs +1 -1
  51. package/dist/upload/index.d.cts +4 -4
  52. package/dist/upload/index.d.mts +4 -4
  53. package/dist/upload/index.mjs +1 -1
  54. package/dist/{upload-bBgM3QFI.cjs → upload-CFT-dWPB.cjs} +1 -1
  55. package/dist/{upload-Bq9h95w6.mjs → upload-ggK-0ZBM.mjs} +2 -2
  56. package/dist/{upload-Bq9h95w6.mjs.map → upload-ggK-0ZBM.mjs.map} +1 -1
  57. package/dist/{uploadista-error-DCRIscEv.cjs → uploadista-error-BxBLmQtX.cjs} +4 -1
  58. package/dist/{uploadista-error-Bb-qIIKM.d.cts → uploadista-error-CYCmAtkZ.d.cts} +2 -2
  59. package/dist/uploadista-error-CYCmAtkZ.d.cts.map +1 -0
  60. package/dist/{uploadista-error-djFxVTLh.mjs → uploadista-error-CkSxSyNo.mjs} +4 -1
  61. package/dist/uploadista-error-CkSxSyNo.mjs.map +1 -0
  62. package/dist/{uploadista-error-D7Gubrr1.d.mts → uploadista-error-DR0XimpE.d.mts} +2 -2
  63. package/dist/uploadista-error-DR0XimpE.d.mts.map +1 -0
  64. package/dist/utils/index.cjs +1 -1
  65. package/dist/utils/index.d.cts +2 -2
  66. package/dist/utils/index.d.mts +2 -2
  67. package/dist/utils/index.mjs +1 -1
  68. package/dist/{utils-MQUZyB9S.mjs → utils-B-ZhQ6b0.mjs} +2 -2
  69. package/dist/{utils-MQUZyB9S.mjs.map → utils-B-ZhQ6b0.mjs.map} +1 -1
  70. package/dist/{utils-DxLVhlLd.cjs → utils-Dhq3vPqp.cjs} +1 -1
  71. package/docs/CIRCUIT_BREAKER.md +381 -0
  72. package/docs/DEAD-LETTER-QUEUE.md +374 -0
  73. package/package.json +11 -6
  74. package/src/errors/uploadista-error.ts +16 -1
  75. package/src/flow/README.md +102 -0
  76. package/src/flow/circuit-breaker-store.ts +382 -0
  77. package/src/flow/circuit-breaker.ts +99 -0
  78. package/src/flow/dead-letter-queue.ts +573 -0
  79. package/src/flow/distributed-circuit-breaker.ts +437 -0
  80. package/src/flow/event.ts +105 -1
  81. package/src/flow/flow-server.ts +70 -0
  82. package/src/flow/flow.ts +141 -3
  83. package/src/flow/index.ts +14 -2
  84. package/src/flow/input-type-registry.ts +229 -0
  85. package/src/flow/node-types/index.ts +26 -20
  86. package/src/flow/node.ts +48 -26
  87. package/src/flow/nodes/input-node.ts +4 -2
  88. package/src/flow/nodes/transform-node.ts +64 -6
  89. package/src/flow/output-type-registry.ts +231 -0
  90. package/src/flow/type-guards.ts +38 -22
  91. package/src/flow/typed-flow.ts +26 -0
  92. package/src/flow/types/dead-letter-item.ts +258 -0
  93. package/src/flow/types/flow-types.ts +320 -2
  94. package/src/flow/types/retry-policy.ts +260 -0
  95. package/src/flow/utils/file-naming.ts +308 -0
  96. package/src/types/circuit-breaker-store.ts +222 -0
  97. package/src/types/health-check.ts +204 -0
  98. package/src/types/index.ts +2 -0
  99. package/src/types/kv-store.ts +82 -2
  100. package/tests/flow/dead-letter-item.test.ts +283 -0
  101. package/tests/flow/dead-letter-queue.test.ts +613 -0
  102. package/tests/flow/file-naming.test.ts +390 -0
  103. package/tests/flow/retry-policy.test.ts +284 -0
  104. package/tests/flow/type-registry.test.ts +1 -1
  105. package/tests/flow/type-system.test.ts +17 -14
  106. package/dist/flow-BiUCrFTv.cjs +0 -1
  107. package/dist/flow-vXXjtBBv.mjs +0 -2
  108. package/dist/flow-vXXjtBBv.mjs.map +0 -1
  109. package/dist/index-BQ5luyME.d.cts.map +0 -1
  110. package/dist/index-BtnCNLsH.d.mts.map +0 -1
  111. package/dist/types-B5I4BioZ.cjs +0 -1
  112. package/dist/types-f6w5J3UD.mjs +0 -2
  113. package/dist/types-f6w5J3UD.mjs.map +0 -1
  114. package/dist/uploadista-error-Bb-qIIKM.d.cts.map +0 -1
  115. package/dist/uploadista-error-D7Gubrr1.d.mts.map +0 -1
  116. package/dist/uploadista-error-djFxVTLh.mjs.map +0 -1
  117. package/src/flow/type-registry.ts +0 -379
@@ -1 +1 @@
1
- import"../uploadista-error-djFxVTLh.mjs";import{a as e,i as t,n,o as r,r as i,s as a,t as o}from"../checksum-DaCqP8Qa.mjs";import{a as s,i as c,n as l,r as u,t as d}from"../utils-MQUZyB9S.mjs";export{i as GenerateId,t as GenerateIdLive,e as GenerateIdRandom,r as GenerateIdService,a as GenerateIdTimestamp,s as Md5,u as OnceEffect,d as ThrottleEffect,o as computeChecksum,n as isSupportedAlgorithm,c as once,l as throttle};
1
+ import"../uploadista-error-CkSxSyNo.mjs";import{a as e,i as t,n,o as r,r as i,s as a,t as o}from"../checksum-COoD-F1l.mjs";import{a as s,i as c,n as l,r as u,t as d}from"../utils-B-ZhQ6b0.mjs";export{i as GenerateId,t as GenerateIdLive,e as GenerateIdRandom,r as GenerateIdService,a as GenerateIdTimestamp,s as Md5,u as OnceEffect,d as ThrottleEffect,o as computeChecksum,n as isSupportedAlgorithm,c as once,l as throttle};
@@ -1,2 +1,2 @@
1
- import{n as e}from"./uploadista-error-djFxVTLh.mjs";import{Effect as t}from"effect";var n=class e{static hashStr(t,n=!1){return e.onePassHasher.start().appendStr(t).end(n)}static hashAsciiStr(t,n=!1){return e.onePassHasher.start().appendAsciiStr(t).end(n)}static stateIdentity=new Int32Array([1732584193,-271733879,-1732584194,271733878]);static buffer32Identity=new Int32Array([0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]);static hexChars=`0123456789abcdef`;static hexOut=[];static onePassHasher=new e;static _hex(t){let n=e.hexChars,r=e.hexOut,i,a,o,s;for(s=0;s<4;s+=1)for(a=s*8,i=t[s]??0,o=0;o<8;o+=2)r[a+1+o]=n.charAt(i&15),i>>>=4,r[a+0+o]=n.charAt(i&15),i>>>=4;return r.join(``)}static _md5cycle(e,t){let n=e[0]??0,r=e[1]??0,i=e[2]??0,a=e[3]??0;n+=(r&i|~r&a)+(t[0]??0)-680876936|0,n=(n<<7|n>>>25)+r|0,a+=(n&r|~n&i)+(t[1]??0)-389564586|0,a=(a<<12|a>>>20)+n|0,i+=(a&n|~a&r)+(t[2]??0)+606105819|0,i=(i<<17|i>>>15)+a|0,r+=(i&a|~i&n)+(t[3]??0)-1044525330|0,r=(r<<22|r>>>10)+i|0,n+=(r&i|~r&a)+(t[4]??0)-176418897|0,n=(n<<7|n>>>25)+r|0,a+=(n&r|~n&i)+(t[5]??0)+1200080426|0,a=(a<<12|a>>>20)+n|0,i+=(a&n|~a&r)+(t[6]??0)-1473231341|0,i=(i<<17|i>>>15)+a|0,r+=(i&a|~i&n)+(t[7]??0)-45705983|0,r=(r<<22|r>>>10)+i|0,n+=(r&i|~r&a)+(t[8]??0)+1770035416|0,n=(n<<7|n>>>25)+r|0,a+=(n&r|~n&i)+(t[9]??0)-1958414417|0,a=(a<<12|a>>>20)+n|0,i+=(a&n|~a&r)+(t[10]??0)-42063|0,i=(i<<17|i>>>15)+a|0,r+=(i&a|~i&n)+(t[11]??0)-1990404162|0,r=(r<<22|r>>>10)+i|0,n+=(r&i|~r&a)+(t[12]??0)+1804603682|0,n=(n<<7|n>>>25)+r|0,a+=(n&r|~n&i)+(t[13]??0)-40341101|0,a=(a<<12|a>>>20)+n|0,i+=(a&n|~a&r)+(t[14]??0)-1502002290|0,i=(i<<17|i>>>15)+a|0,r+=(i&a|~i&n)+(t[15]??0)+1236535329|0,r=(r<<22|r>>>10)+i|0,n+=(r&a|i&~a)+(t[1]??0)-165796510|0,n=(n<<5|n>>>27)+r|0,a+=(n&i|r&~i)+(t[6]??0)-1069501632|0,a=(a<<9|a>>>23)+n|0,i+=(a&r|n&~r)+(t[11]??0)+643717713|0,i=(i<<14|i>>>18)+a|0,r+=(i&n|a&~n)+(t[0]??0)-373897302|0,r=(r<<20|r>>>12)+i|0,n+=(r&a|i&~a)+(t[5]??0)-701558691|0,n=(n<<5|n>>>27)+r|0,a+=(n&i|r&~i)+(t[10]??0)+38016083|0,a=(a<<9|a>>>23)+n|0,i+=(a&r|n&~r)+(t[15]??0)-660478335|0,i=(i<<14|i>>>18)+a|0,r+=(i&n|a&~n)+(t[4]??0)-405537848|0,r=(r<<20|r>>>12)+i|0,n+=(r&a|i&~a)+(t[9]??0)+568446438|0,n=(n<<5|n>>>27)+r|0,a+=(n&i|r&~i)+(t[14]??0)-1019803690|0,a=(a<<9|a>>>23)+n|0,i+=(a&r|n&~r)+(t[3]??0)-187363961|0,i=(i<<14|i>>>18)+a|0,r+=(i&n|a&~n)+(t[8]??0)+1163531501|0,r=(r<<20|r>>>12)+i|0,n+=(r&a|i&~a)+(t[13]??0)-1444681467|0,n=(n<<5|n>>>27)+r|0,a+=(n&i|r&~i)+(t[2]??0)-51403784|0,a=(a<<9|a>>>23)+n|0,i+=(a&r|n&~r)+(t[7]??0)+1735328473|0,i=(i<<14|i>>>18)+a|0,r+=(i&n|a&~n)+(t[12]??0)-1926607734|0,r=(r<<20|r>>>12)+i|0,n+=(r^i^a)+(t[5]??0)-378558|0,n=(n<<4|n>>>28)+r|0,a+=(n^r^i)+(t[8]??0)-2022574463|0,a=(a<<11|a>>>21)+n|0,i+=(a^n^r)+(t[11]??0)+1839030562|0,i=(i<<16|i>>>16)+a|0,r+=(i^a^n)+(t[14]??0)-35309556|0,r=(r<<23|r>>>9)+i|0,n+=(r^i^a)+(t[1]??0)-1530992060|0,n=(n<<4|n>>>28)+r|0,a+=(n^r^i)+(t[4]??0)+1272893353|0,a=(a<<11|a>>>21)+n|0,i+=(a^n^r)+(t[7]??0)-155497632|0,i=(i<<16|i>>>16)+a|0,r+=(i^a^n)+(t[10]??0)-1094730640|0,r=(r<<23|r>>>9)+i|0,n+=(r^i^a)+(t[13]??0)+681279174|0,n=(n<<4|n>>>28)+r|0,a+=(n^r^i)+(t[0]??0)-358537222|0,a=(a<<11|a>>>21)+n|0,i+=(a^n^r)+(t[3]??0)-722521979|0,i=(i<<16|i>>>16)+a|0,r+=(i^a^n)+(t[6]??0)+76029189|0,r=(r<<23|r>>>9)+i|0,n+=(r^i^a)+(t[9]??0)-640364487|0,n=(n<<4|n>>>28)+r|0,a+=(n^r^i)+(t[12]??0)-421815835|0,a=(a<<11|a>>>21)+n|0,i+=(a^n^r)+(t[15]??0)+530742520|0,i=(i<<16|i>>>16)+a|0,r+=(i^a^n)+(t[2]??0)-995338651|0,r=(r<<23|r>>>9)+i|0,n+=(i^(r|~a))+(t[0]??0)-198630844|0,n=(n<<6|n>>>26)+r|0,a+=(r^(n|~i))+(t[7]??0)+1126891415|0,a=(a<<10|a>>>22)+n|0,i+=(n^(a|~r))+(t[14]??0)-1416354905|0,i=(i<<15|i>>>17)+a|0,r+=(a^(i|~n))+(t[5]??0)-57434055|0,r=(r<<21|r>>>11)+i|0,n+=(i^(r|~a))+(t[12]??0)+1700485571|0,n=(n<<6|n>>>26)+r|0,a+=(r^(n|~i))+(t[3]??0)-1894986606|0,a=(a<<10|a>>>22)+n|0,i+=(n^(a|~r))+(t[10]??0)-1051523|0,i=(i<<15|i>>>17)+a|0,r+=(a^(i|~n))+(t[1]??0)-2054922799|0,r=(r<<21|r>>>11)+i|0,n+=(i^(r|~a))+(t[8]??0)+1873313359|0,n=(n<<6|n>>>26)+r|0,a+=(r^(n|~i))+(t[15]??0)-30611744|0,a=(a<<10|a>>>22)+n|0,i+=(n^(a|~r))+(t[6]??0)-1560198380|0,i=(i<<15|i>>>17)+a|0,r+=(a^(i|~n))+(t[13]??0)+1309151649|0,r=(r<<21|r>>>11)+i|0,n+=(i^(r|~a))+(t[4]??0)-145523070|0,n=(n<<6|n>>>26)+r|0,a+=(r^(n|~i))+(t[11]??0)-1120210379|0,a=(a<<10|a>>>22)+n|0,i+=(n^(a|~r))+(t[2]??0)+718787259|0,i=(i<<15|i>>>17)+a|0,r+=(a^(i|~n))+(t[9]??0)-343485551|0,r=(r<<21|r>>>11)+i|0,e[0]=n+(e[0]??0)|0,e[1]=r+(e[1]??0)|0,e[2]=i+(e[2]??0)|0,e[3]=a+(e[3]??0)|0}_dataLength=0;_bufferLength=0;_state=new Int32Array(4);_buffer=new ArrayBuffer(68);_buffer8;_buffer32;constructor(){this._buffer8=new Uint8Array(this._buffer,0,68),this._buffer32=new Uint32Array(this._buffer,0,17),this.start()}start(){return this._dataLength=0,this._bufferLength=0,this._state.set(e.stateIdentity),this}appendStr(t){let n=this._buffer8,r=this._buffer32,i=this._bufferLength,a,o;for(o=0;o<t.length;o+=1){if(a=t.charCodeAt(o),a<128)n[i++]=a;else if(a<2048)n[i++]=(a>>>6)+192,n[i++]=a&63|128;else if(a<55296||a>56319)n[i++]=(a>>>12)+224,n[i++]=a>>>6&63|128,n[i++]=a&63|128;else{if(a=(a-55296)*1024+(t.charCodeAt(++o)-56320)+65536,a>1114111)throw Error(`Unicode standard supports code points up to U+10FFFF`);n[i++]=(a>>>18)+240,n[i++]=a>>>12&63|128,n[i++]=a>>>6&63|128,n[i++]=a&63|128}i>=64&&(this._dataLength+=64,e._md5cycle(this._state,r),i-=64,r[0]=r[16]??0)}return this._bufferLength=i,this}appendAsciiStr(t){let n=this._buffer8,r=this._buffer32,i=this._bufferLength,a,o=0;for(;;){for(a=Math.min(t.length-o,64-i);a--;)n[i++]=t.charCodeAt(o++);if(i<64)break;this._dataLength+=64,e._md5cycle(this._state,r),i=0}return this._bufferLength=i,this}appendByteArray(t){let n=this._buffer8,r=this._buffer32,i=this._bufferLength,a,o=0;for(;;){for(a=Math.min(t.length-o,64-i);a--;)n[i++]=t[o++]??0;if(i<64)break;this._dataLength+=64,e._md5cycle(this._state,r),i=0}return this._bufferLength=i,this}getState(){let e=this._state;return{buffer:String.fromCharCode.apply(null,Array.from(this._buffer8)),buflen:this._bufferLength,length:this._dataLength,state:[e[0]??0,e[1]??0,e[2]??0,e[3]??0]}}setState(e){let t=e.buffer,n=e.state,r=this._state,i;for(this._dataLength=e.length,this._bufferLength=e.buflen,r[0]=n[0]??0,r[1]=n[1]??0,r[2]=n[2]??0,r[3]=n[3]??0,i=0;i<t.length;i+=1)this._buffer8[i]=t.charCodeAt(i)}end(t=!1){let n=this._bufferLength,r=this._buffer8,i=this._buffer32,a=(n>>2)+1;this._dataLength+=n;let o=this._dataLength*8;if(r[n]=128,r[n+1]=r[n+2]=r[n+3]=0,i.set(e.buffer32Identity.subarray(a),a),n>55&&(e._md5cycle(this._state,i),i.set(e.buffer32Identity)),o<=4294967295)i[14]=o;else{let e=o.toString(16).match(/(.*?)(.{0,8})$/);if(e===null)return;let t=Number.parseInt(e[2]??``,16),n=Number.parseInt(e[1]??``,16)||0;i[14]=t,i[15]=n}return e._md5cycle(this._state,i),t?this._state:e._hex(this._state)}};if(n.hashStr(`hello`)!==`5d41402abc4b2a76b9719d911017c592`)throw Error(`Md5 self test failed.`);function r(e){let t=!1,n;return function(...r){if(t){if(n)return n;throw Error(`Function called more than once`)}return t=!0,n=e.apply(this,r),n}}const i={make:n=>{let r,i=!1;return t.gen(function*(){if(i){if(r!==void 0)return r;yield*new e({code:`UNKNOWN_ERROR`,status:500,body:`Effect called more than once with undefined result`}).toEffect()}return i=!0,r=yield*n,r})},legacy:r},a={leading:!1,trailing:!0};function o(e,t,n={}){let r={...a,...n},i;return function(...n){r.leading&&!i?(console.log(`leading`),e.apply(this,n),i=setTimeout(()=>{i=void 0},t)):(clearTimeout(i),i=setTimeout(()=>{r.trailing?(e.apply(this,n),r.leading&&setTimeout(()=>{i=void 0},t)):i=void 0},t))}}function s(e,t,{leading:n=!0,trailing:r=!0}={}){return o(e,t,{leading:n,trailing:r})}const c={legacy:s};export{n as a,r as i,s as n,i as r,c as t};
2
- //# sourceMappingURL=utils-MQUZyB9S.mjs.map
1
+ import{n as e}from"./uploadista-error-CkSxSyNo.mjs";import{Effect as t}from"effect";var n=class e{static hashStr(t,n=!1){return e.onePassHasher.start().appendStr(t).end(n)}static hashAsciiStr(t,n=!1){return e.onePassHasher.start().appendAsciiStr(t).end(n)}static stateIdentity=new Int32Array([1732584193,-271733879,-1732584194,271733878]);static buffer32Identity=new Int32Array([0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]);static hexChars=`0123456789abcdef`;static hexOut=[];static onePassHasher=new e;static _hex(t){let n=e.hexChars,r=e.hexOut,i,a,o,s;for(s=0;s<4;s+=1)for(a=s*8,i=t[s]??0,o=0;o<8;o+=2)r[a+1+o]=n.charAt(i&15),i>>>=4,r[a+0+o]=n.charAt(i&15),i>>>=4;return r.join(``)}static _md5cycle(e,t){let n=e[0]??0,r=e[1]??0,i=e[2]??0,a=e[3]??0;n+=(r&i|~r&a)+(t[0]??0)-680876936|0,n=(n<<7|n>>>25)+r|0,a+=(n&r|~n&i)+(t[1]??0)-389564586|0,a=(a<<12|a>>>20)+n|0,i+=(a&n|~a&r)+(t[2]??0)+606105819|0,i=(i<<17|i>>>15)+a|0,r+=(i&a|~i&n)+(t[3]??0)-1044525330|0,r=(r<<22|r>>>10)+i|0,n+=(r&i|~r&a)+(t[4]??0)-176418897|0,n=(n<<7|n>>>25)+r|0,a+=(n&r|~n&i)+(t[5]??0)+1200080426|0,a=(a<<12|a>>>20)+n|0,i+=(a&n|~a&r)+(t[6]??0)-1473231341|0,i=(i<<17|i>>>15)+a|0,r+=(i&a|~i&n)+(t[7]??0)-45705983|0,r=(r<<22|r>>>10)+i|0,n+=(r&i|~r&a)+(t[8]??0)+1770035416|0,n=(n<<7|n>>>25)+r|0,a+=(n&r|~n&i)+(t[9]??0)-1958414417|0,a=(a<<12|a>>>20)+n|0,i+=(a&n|~a&r)+(t[10]??0)-42063|0,i=(i<<17|i>>>15)+a|0,r+=(i&a|~i&n)+(t[11]??0)-1990404162|0,r=(r<<22|r>>>10)+i|0,n+=(r&i|~r&a)+(t[12]??0)+1804603682|0,n=(n<<7|n>>>25)+r|0,a+=(n&r|~n&i)+(t[13]??0)-40341101|0,a=(a<<12|a>>>20)+n|0,i+=(a&n|~a&r)+(t[14]??0)-1502002290|0,i=(i<<17|i>>>15)+a|0,r+=(i&a|~i&n)+(t[15]??0)+1236535329|0,r=(r<<22|r>>>10)+i|0,n+=(r&a|i&~a)+(t[1]??0)-165796510|0,n=(n<<5|n>>>27)+r|0,a+=(n&i|r&~i)+(t[6]??0)-1069501632|0,a=(a<<9|a>>>23)+n|0,i+=(a&r|n&~r)+(t[11]??0)+643717713|0,i=(i<<14|i>>>18)+a|0,r+=(i&n|a&~n)+(t[0]??0)-373897302|0,r=(r<<20|r>>>12)+i|0,n+=(r&a|i&~a)+(t[5]??0)-701558691|0,n=(n<<5|n>>>27)+r|0,a+=(n&i|r&~i)+(t[10]??0)+38016083|0,a=(a<<9|a>>>23)+n|0,i+=(a&r|n&~r)+(t[15]??0)-660478335|0,i=(i<<14|i>>>18)+a|0,r+=(i&n|a&~n)+(t[4]??0)-405537848|0,r=(r<<20|r>>>12)+i|0,n+=(r&a|i&~a)+(t[9]??0)+568446438|0,n=(n<<5|n>>>27)+r|0,a+=(n&i|r&~i)+(t[14]??0)-1019803690|0,a=(a<<9|a>>>23)+n|0,i+=(a&r|n&~r)+(t[3]??0)-187363961|0,i=(i<<14|i>>>18)+a|0,r+=(i&n|a&~n)+(t[8]??0)+1163531501|0,r=(r<<20|r>>>12)+i|0,n+=(r&a|i&~a)+(t[13]??0)-1444681467|0,n=(n<<5|n>>>27)+r|0,a+=(n&i|r&~i)+(t[2]??0)-51403784|0,a=(a<<9|a>>>23)+n|0,i+=(a&r|n&~r)+(t[7]??0)+1735328473|0,i=(i<<14|i>>>18)+a|0,r+=(i&n|a&~n)+(t[12]??0)-1926607734|0,r=(r<<20|r>>>12)+i|0,n+=(r^i^a)+(t[5]??0)-378558|0,n=(n<<4|n>>>28)+r|0,a+=(n^r^i)+(t[8]??0)-2022574463|0,a=(a<<11|a>>>21)+n|0,i+=(a^n^r)+(t[11]??0)+1839030562|0,i=(i<<16|i>>>16)+a|0,r+=(i^a^n)+(t[14]??0)-35309556|0,r=(r<<23|r>>>9)+i|0,n+=(r^i^a)+(t[1]??0)-1530992060|0,n=(n<<4|n>>>28)+r|0,a+=(n^r^i)+(t[4]??0)+1272893353|0,a=(a<<11|a>>>21)+n|0,i+=(a^n^r)+(t[7]??0)-155497632|0,i=(i<<16|i>>>16)+a|0,r+=(i^a^n)+(t[10]??0)-1094730640|0,r=(r<<23|r>>>9)+i|0,n+=(r^i^a)+(t[13]??0)+681279174|0,n=(n<<4|n>>>28)+r|0,a+=(n^r^i)+(t[0]??0)-358537222|0,a=(a<<11|a>>>21)+n|0,i+=(a^n^r)+(t[3]??0)-722521979|0,i=(i<<16|i>>>16)+a|0,r+=(i^a^n)+(t[6]??0)+76029189|0,r=(r<<23|r>>>9)+i|0,n+=(r^i^a)+(t[9]??0)-640364487|0,n=(n<<4|n>>>28)+r|0,a+=(n^r^i)+(t[12]??0)-421815835|0,a=(a<<11|a>>>21)+n|0,i+=(a^n^r)+(t[15]??0)+530742520|0,i=(i<<16|i>>>16)+a|0,r+=(i^a^n)+(t[2]??0)-995338651|0,r=(r<<23|r>>>9)+i|0,n+=(i^(r|~a))+(t[0]??0)-198630844|0,n=(n<<6|n>>>26)+r|0,a+=(r^(n|~i))+(t[7]??0)+1126891415|0,a=(a<<10|a>>>22)+n|0,i+=(n^(a|~r))+(t[14]??0)-1416354905|0,i=(i<<15|i>>>17)+a|0,r+=(a^(i|~n))+(t[5]??0)-57434055|0,r=(r<<21|r>>>11)+i|0,n+=(i^(r|~a))+(t[12]??0)+1700485571|0,n=(n<<6|n>>>26)+r|0,a+=(r^(n|~i))+(t[3]??0)-1894986606|0,a=(a<<10|a>>>22)+n|0,i+=(n^(a|~r))+(t[10]??0)-1051523|0,i=(i<<15|i>>>17)+a|0,r+=(a^(i|~n))+(t[1]??0)-2054922799|0,r=(r<<21|r>>>11)+i|0,n+=(i^(r|~a))+(t[8]??0)+1873313359|0,n=(n<<6|n>>>26)+r|0,a+=(r^(n|~i))+(t[15]??0)-30611744|0,a=(a<<10|a>>>22)+n|0,i+=(n^(a|~r))+(t[6]??0)-1560198380|0,i=(i<<15|i>>>17)+a|0,r+=(a^(i|~n))+(t[13]??0)+1309151649|0,r=(r<<21|r>>>11)+i|0,n+=(i^(r|~a))+(t[4]??0)-145523070|0,n=(n<<6|n>>>26)+r|0,a+=(r^(n|~i))+(t[11]??0)-1120210379|0,a=(a<<10|a>>>22)+n|0,i+=(n^(a|~r))+(t[2]??0)+718787259|0,i=(i<<15|i>>>17)+a|0,r+=(a^(i|~n))+(t[9]??0)-343485551|0,r=(r<<21|r>>>11)+i|0,e[0]=n+(e[0]??0)|0,e[1]=r+(e[1]??0)|0,e[2]=i+(e[2]??0)|0,e[3]=a+(e[3]??0)|0}_dataLength=0;_bufferLength=0;_state=new Int32Array(4);_buffer=new ArrayBuffer(68);_buffer8;_buffer32;constructor(){this._buffer8=new Uint8Array(this._buffer,0,68),this._buffer32=new Uint32Array(this._buffer,0,17),this.start()}start(){return this._dataLength=0,this._bufferLength=0,this._state.set(e.stateIdentity),this}appendStr(t){let n=this._buffer8,r=this._buffer32,i=this._bufferLength,a,o;for(o=0;o<t.length;o+=1){if(a=t.charCodeAt(o),a<128)n[i++]=a;else if(a<2048)n[i++]=(a>>>6)+192,n[i++]=a&63|128;else if(a<55296||a>56319)n[i++]=(a>>>12)+224,n[i++]=a>>>6&63|128,n[i++]=a&63|128;else{if(a=(a-55296)*1024+(t.charCodeAt(++o)-56320)+65536,a>1114111)throw Error(`Unicode standard supports code points up to U+10FFFF`);n[i++]=(a>>>18)+240,n[i++]=a>>>12&63|128,n[i++]=a>>>6&63|128,n[i++]=a&63|128}i>=64&&(this._dataLength+=64,e._md5cycle(this._state,r),i-=64,r[0]=r[16]??0)}return this._bufferLength=i,this}appendAsciiStr(t){let n=this._buffer8,r=this._buffer32,i=this._bufferLength,a,o=0;for(;;){for(a=Math.min(t.length-o,64-i);a--;)n[i++]=t.charCodeAt(o++);if(i<64)break;this._dataLength+=64,e._md5cycle(this._state,r),i=0}return this._bufferLength=i,this}appendByteArray(t){let n=this._buffer8,r=this._buffer32,i=this._bufferLength,a,o=0;for(;;){for(a=Math.min(t.length-o,64-i);a--;)n[i++]=t[o++]??0;if(i<64)break;this._dataLength+=64,e._md5cycle(this._state,r),i=0}return this._bufferLength=i,this}getState(){let e=this._state;return{buffer:String.fromCharCode.apply(null,Array.from(this._buffer8)),buflen:this._bufferLength,length:this._dataLength,state:[e[0]??0,e[1]??0,e[2]??0,e[3]??0]}}setState(e){let t=e.buffer,n=e.state,r=this._state,i;for(this._dataLength=e.length,this._bufferLength=e.buflen,r[0]=n[0]??0,r[1]=n[1]??0,r[2]=n[2]??0,r[3]=n[3]??0,i=0;i<t.length;i+=1)this._buffer8[i]=t.charCodeAt(i)}end(t=!1){let n=this._bufferLength,r=this._buffer8,i=this._buffer32,a=(n>>2)+1;this._dataLength+=n;let o=this._dataLength*8;if(r[n]=128,r[n+1]=r[n+2]=r[n+3]=0,i.set(e.buffer32Identity.subarray(a),a),n>55&&(e._md5cycle(this._state,i),i.set(e.buffer32Identity)),o<=4294967295)i[14]=o;else{let e=o.toString(16).match(/(.*?)(.{0,8})$/);if(e===null)return;let t=Number.parseInt(e[2]??``,16),n=Number.parseInt(e[1]??``,16)||0;i[14]=t,i[15]=n}return e._md5cycle(this._state,i),t?this._state:e._hex(this._state)}};if(n.hashStr(`hello`)!==`5d41402abc4b2a76b9719d911017c592`)throw Error(`Md5 self test failed.`);function r(e){let t=!1,n;return function(...r){if(t){if(n)return n;throw Error(`Function called more than once`)}return t=!0,n=e.apply(this,r),n}}const i={make:n=>{let r,i=!1;return t.gen(function*(){if(i){if(r!==void 0)return r;yield*new e({code:`UNKNOWN_ERROR`,status:500,body:`Effect called more than once with undefined result`}).toEffect()}return i=!0,r=yield*n,r})},legacy:r},a={leading:!1,trailing:!0};function o(e,t,n={}){let r={...a,...n},i;return function(...n){r.leading&&!i?(console.log(`leading`),e.apply(this,n),i=setTimeout(()=>{i=void 0},t)):(clearTimeout(i),i=setTimeout(()=>{r.trailing?(e.apply(this,n),r.leading&&setTimeout(()=>{i=void 0},t)):i=void 0},t))}}function s(e,t,{leading:n=!0,trailing:r=!0}={}){return o(e,t,{leading:n,trailing:r})}const c={legacy:s};export{n as a,r as i,s as n,i as r,c as t};
2
+ //# sourceMappingURL=utils-B-ZhQ6b0.mjs.map
@@ -1 +1 @@
1
- {"version":3,"file":"utils-MQUZyB9S.mjs","names":["n: number","offset: number","j: number","i: number","a: number","b: number","c: number","d: number","code: number","value: Return | undefined","cached: A | undefined","defaultDebounceOptions: DebounceOptions","timer: ReturnType<typeof setTimeout> | undefined"],"sources":["../src/utils/md5.ts","../src/utils/once.ts","../src/utils/debounce.ts","../src/utils/throttle.ts"],"sourcesContent":["/*\n\nTypeScript Md5\n==============\n\nBased on work by\n* Joseph Myers: http://www.myersdaily.org/joseph/javascript/md5-text.html\n* André Cruz: https://github.com/satazor/SparkMD5\n* Raymond Hill: https://github.com/gorhill/yamd5.js\n\nEffectively a TypeScrypt re-write of Raymond Hill JS Library\n\nThe MIT License (MIT)\n\nCopyright (C) 2014 Raymond Hill\n\nPermission is hereby granted, free of charge, to any person obtaining a copy\nof this software and associated documentation files (the \"Software\"), to deal\nin the Software without restriction, including without limitation the rights\nto use, copy, modify, merge, publish, distribute, sublicense, and/or sell\ncopies of the Software, and to permit persons to whom the Software is\nfurnished to do so, subject to the following conditions:\n\nThe above copyright notice and this permission notice shall be included in\nall copies or substantial portions of the Software.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\nIMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\nFITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\nAUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\nLIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\nOUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\nTHE SOFTWARE.\n\n DO WHAT YOU WANT TO PUBLIC LICENSE\n Version 2, December 2004\n\n Copyright (C) 2015 André Cruz <amdfcruz@gmail.com>\n\n Everyone is permitted to copy and distribute verbatim or modified\n copies of this license document, and changing it is allowed as long\n as the name is changed.\n\n DO WHAT YOU WANT TO PUBLIC LICENSE\n TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION\n\n 0. You just DO WHAT YOU WANT TO.\n\n*/\n\ntype HasherState = {\n buffer: string;\n buflen: number;\n length: number;\n state: number[];\n};\n\nexport class Md5 {\n /**\n * Hash a UTF-8 string on the spot\n * @param str String to hash\n * @param raw Whether to return the value as an `Int32Array`\n */\n public static hashStr(str: string, raw?: false): string;\n public static hashStr(str: string, raw: true): Int32Array;\n public static hashStr(str: string, raw = false) {\n return Md5.onePassHasher.start().appendStr(str).end(raw);\n }\n\n /**\n * Hash a ASCII string on the spot\n * @param str String to hash\n * @param raw Whether to return the value as an `Int32Array`\n */\n public static hashAsciiStr(str: string, raw?: false): string;\n public static hashAsciiStr(str: string, raw: true): Int32Array;\n public static hashAsciiStr(str: string, raw = false) {\n return Md5.onePassHasher.start().appendAsciiStr(str).end(raw);\n }\n\n // Private Static Variables\n private static stateIdentity = new Int32Array([\n 1732584193, -271733879, -1732584194, 271733878,\n ]);\n\n private static buffer32Identity = new Int32Array([\n 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,\n ]);\n\n private static hexChars = \"0123456789abcdef\";\n private static hexOut: string[] = [];\n\n // Permanent instance is to use for one-call hashing\n private static onePassHasher = new Md5();\n\n private static _hex(x: Int32Array): string {\n const hc = Md5.hexChars;\n const ho = Md5.hexOut;\n let n: number;\n let offset: number;\n let j: number;\n let i: number;\n\n for (i = 0; i < 4; i += 1) {\n offset = i * 8;\n n = x[i] ?? 0;\n for (j = 0; j < 8; j += 2) {\n ho[offset + 1 + j] = hc.charAt(n & 0x0f);\n n >>>= 4;\n ho[offset + 0 + j] = hc.charAt(n & 0x0f);\n n >>>= 4;\n }\n }\n return ho.join(\"\");\n }\n\n private static _md5cycle(\n x: Int32Array | Uint32Array,\n k: Int32Array | Uint32Array,\n ) {\n let a: number = x[0] ?? 0;\n let b: number = x[1] ?? 0;\n let c: number = x[2] ?? 0;\n let d: number = x[3] ?? 0;\n // ff()\n a += (((b & c) | (~b & d)) + (k[0] ?? 0) - 680876936) | 0;\n a = (((a << 7) | (a >>> 25)) + b) | 0;\n d += (((a & b) | (~a & c)) + (k[1] ?? 0) - 389564586) | 0;\n d = (((d << 12) | (d >>> 20)) + a) | 0;\n c += (((d & a) | (~d & b)) + (k[2] ?? 0) + 606105819) | 0;\n c = (((c << 17) | (c >>> 15)) + d) | 0;\n b += (((c & d) | (~c & a)) + (k[3] ?? 0) - 1044525330) | 0;\n b = (((b << 22) | (b >>> 10)) + c) | 0;\n a += (((b & c) | (~b & d)) + (k[4] ?? 0) - 176418897) | 0;\n a = (((a << 7) | (a >>> 25)) + b) | 0;\n d += (((a & b) | (~a & c)) + (k[5] ?? 0) + 1200080426) | 0;\n d = (((d << 12) | (d >>> 20)) + a) | 0;\n c += (((d & a) | (~d & b)) + (k[6] ?? 0) - 1473231341) | 0;\n c = (((c << 17) | (c >>> 15)) + d) | 0;\n b += (((c & d) | (~c & a)) + (k[7] ?? 0) - 45705983) | 0;\n b = (((b << 22) | (b >>> 10)) + c) | 0;\n a += (((b & c) | (~b & d)) + (k[8] ?? 0) + 1770035416) | 0;\n a = (((a << 7) | (a >>> 25)) + b) | 0;\n d += (((a & b) | (~a & c)) + (k[9] ?? 0) - 1958414417) | 0;\n d = (((d << 12) | (d >>> 20)) + a) | 0;\n c += (((d & a) | (~d & b)) + (k[10] ?? 0) - 42063) | 0;\n c = (((c << 17) | (c >>> 15)) + d) | 0;\n b += (((c & d) | (~c & a)) + (k[11] ?? 0) - 1990404162) | 0;\n b = (((b << 22) | (b >>> 10)) + c) | 0;\n a += (((b & c) | (~b & d)) + (k[12] ?? 0) + 1804603682) | 0;\n a = (((a << 7) | (a >>> 25)) + b) | 0;\n d += (((a & b) | (~a & c)) + (k[13] ?? 0) - 40341101) | 0;\n d = (((d << 12) | (d >>> 20)) + a) | 0;\n c += (((d & a) | (~d & b)) + (k[14] ?? 0) - 1502002290) | 0;\n c = (((c << 17) | (c >>> 15)) + d) | 0;\n b += (((c & d) | (~c & a)) + (k[15] ?? 0) + 1236535329) | 0;\n b = (((b << 22) | (b >>> 10)) + c) | 0;\n // gg()\n a += (((b & d) | (c & ~d)) + (k[1] ?? 0) - 165796510) | 0;\n a = (((a << 5) | (a >>> 27)) + b) | 0;\n d += (((a & c) | (b & ~c)) + (k[6] ?? 0) - 1069501632) | 0;\n d = (((d << 9) | (d >>> 23)) + a) | 0;\n c += (((d & b) | (a & ~b)) + (k[11] ?? 0) + 643717713) | 0;\n c = (((c << 14) | (c >>> 18)) + d) | 0;\n b += (((c & a) | (d & ~a)) + (k[0] ?? 0) - 373897302) | 0;\n b = (((b << 20) | (b >>> 12)) + c) | 0;\n a += (((b & d) | (c & ~d)) + (k[5] ?? 0) - 701558691) | 0;\n a = (((a << 5) | (a >>> 27)) + b) | 0;\n d += (((a & c) | (b & ~c)) + (k[10] ?? 0) + 38016083) | 0;\n d = (((d << 9) | (d >>> 23)) + a) | 0;\n c += (((d & b) | (a & ~b)) + (k[15] ?? 0) - 660478335) | 0;\n c = (((c << 14) | (c >>> 18)) + d) | 0;\n b += (((c & a) | (d & ~a)) + (k[4] ?? 0) - 405537848) | 0;\n b = (((b << 20) | (b >>> 12)) + c) | 0;\n a += (((b & d) | (c & ~d)) + (k[9] ?? 0) + 568446438) | 0;\n a = (((a << 5) | (a >>> 27)) + b) | 0;\n d += (((a & c) | (b & ~c)) + (k[14] ?? 0) - 1019803690) | 0;\n d = (((d << 9) | (d >>> 23)) + a) | 0;\n c += (((d & b) | (a & ~b)) + (k[3] ?? 0) - 187363961) | 0;\n c = (((c << 14) | (c >>> 18)) + d) | 0;\n b += (((c & a) | (d & ~a)) + (k[8] ?? 0) + 1163531501) | 0;\n b = (((b << 20) | (b >>> 12)) + c) | 0;\n a += (((b & d) | (c & ~d)) + (k[13] ?? 0) - 1444681467) | 0;\n a = (((a << 5) | (a >>> 27)) + b) | 0;\n d += (((a & c) | (b & ~c)) + (k[2] ?? 0) - 51403784) | 0;\n d = (((d << 9) | (d >>> 23)) + a) | 0;\n c += (((d & b) | (a & ~b)) + (k[7] ?? 0) + 1735328473) | 0;\n c = (((c << 14) | (c >>> 18)) + d) | 0;\n b += (((c & a) | (d & ~a)) + (k[12] ?? 0) - 1926607734) | 0;\n b = (((b << 20) | (b >>> 12)) + c) | 0;\n // hh()\n a += ((b ^ c ^ d) + (k[5] ?? 0) - 378558) | 0;\n a = (((a << 4) | (a >>> 28)) + b) | 0;\n d += ((a ^ b ^ c) + (k[8] ?? 0) - 2022574463) | 0;\n d = (((d << 11) | (d >>> 21)) + a) | 0;\n c += ((d ^ a ^ b) + (k[11] ?? 0) + 1839030562) | 0;\n c = (((c << 16) | (c >>> 16)) + d) | 0;\n b += ((c ^ d ^ a) + (k[14] ?? 0) - 35309556) | 0;\n b = (((b << 23) | (b >>> 9)) + c) | 0;\n a += ((b ^ c ^ d) + (k[1] ?? 0) - 1530992060) | 0;\n a = (((a << 4) | (a >>> 28)) + b) | 0;\n d += ((a ^ b ^ c) + (k[4] ?? 0) + 1272893353) | 0;\n d = (((d << 11) | (d >>> 21)) + a) | 0;\n c += ((d ^ a ^ b) + (k[7] ?? 0) - 155497632) | 0;\n c = (((c << 16) | (c >>> 16)) + d) | 0;\n b += ((c ^ d ^ a) + (k[10] ?? 0) - 1094730640) | 0;\n b = (((b << 23) | (b >>> 9)) + c) | 0;\n a += ((b ^ c ^ d) + (k[13] ?? 0) + 681279174) | 0;\n a = (((a << 4) | (a >>> 28)) + b) | 0;\n d += ((a ^ b ^ c) + (k[0] ?? 0) - 358537222) | 0;\n d = (((d << 11) | (d >>> 21)) + a) | 0;\n c += ((d ^ a ^ b) + (k[3] ?? 0) - 722521979) | 0;\n c = (((c << 16) | (c >>> 16)) + d) | 0;\n b += ((c ^ d ^ a) + (k[6] ?? 0) + 76029189) | 0;\n b = (((b << 23) | (b >>> 9)) + c) | 0;\n a += ((b ^ c ^ d) + (k[9] ?? 0) - 640364487) | 0;\n a = (((a << 4) | (a >>> 28)) + b) | 0;\n d += ((a ^ b ^ c) + (k[12] ?? 0) - 421815835) | 0;\n d = (((d << 11) | (d >>> 21)) + a) | 0;\n c += ((d ^ a ^ b) + (k[15] ?? 0) + 530742520) | 0;\n c = (((c << 16) | (c >>> 16)) + d) | 0;\n b += ((c ^ d ^ a) + (k[2] ?? 0) - 995338651) | 0;\n b = (((b << 23) | (b >>> 9)) + c) | 0;\n // ii()\n a += ((c ^ (b | ~d)) + (k[0] ?? 0) - 198630844) | 0;\n a = (((a << 6) | (a >>> 26)) + b) | 0;\n d += ((b ^ (a | ~c)) + (k[7] ?? 0) + 1126891415) | 0;\n d = (((d << 10) | (d >>> 22)) + a) | 0;\n c += ((a ^ (d | ~b)) + (k[14] ?? 0) - 1416354905) | 0;\n c = (((c << 15) | (c >>> 17)) + d) | 0;\n b += ((d ^ (c | ~a)) + (k[5] ?? 0) - 57434055) | 0;\n b = (((b << 21) | (b >>> 11)) + c) | 0;\n a += ((c ^ (b | ~d)) + (k[12] ?? 0) + 1700485571) | 0;\n a = (((a << 6) | (a >>> 26)) + b) | 0;\n d += ((b ^ (a | ~c)) + (k[3] ?? 0) - 1894986606) | 0;\n d = (((d << 10) | (d >>> 22)) + a) | 0;\n c += ((a ^ (d | ~b)) + (k[10] ?? 0) - 1051523) | 0;\n c = (((c << 15) | (c >>> 17)) + d) | 0;\n b += ((d ^ (c | ~a)) + (k[1] ?? 0) - 2054922799) | 0;\n b = (((b << 21) | (b >>> 11)) + c) | 0;\n a += ((c ^ (b | ~d)) + (k[8] ?? 0) + 1873313359) | 0;\n a = (((a << 6) | (a >>> 26)) + b) | 0;\n d += ((b ^ (a | ~c)) + (k[15] ?? 0) - 30611744) | 0;\n d = (((d << 10) | (d >>> 22)) + a) | 0;\n c += ((a ^ (d | ~b)) + (k[6] ?? 0) - 1560198380) | 0;\n c = (((c << 15) | (c >>> 17)) + d) | 0;\n b += ((d ^ (c | ~a)) + (k[13] ?? 0) + 1309151649) | 0;\n b = (((b << 21) | (b >>> 11)) + c) | 0;\n a += ((c ^ (b | ~d)) + (k[4] ?? 0) - 145523070) | 0;\n a = (((a << 6) | (a >>> 26)) + b) | 0;\n d += ((b ^ (a | ~c)) + (k[11] ?? 0) - 1120210379) | 0;\n d = (((d << 10) | (d >>> 22)) + a) | 0;\n c += ((a ^ (d | ~b)) + (k[2] ?? 0) + 718787259) | 0;\n c = (((c << 15) | (c >>> 17)) + d) | 0;\n b += ((d ^ (c | ~a)) + (k[9] ?? 0) - 343485551) | 0;\n b = (((b << 21) | (b >>> 11)) + c) | 0;\n\n x[0] = (a + (x[0] ?? 0)) | 0;\n x[1] = (b + (x[1] ?? 0)) | 0;\n x[2] = (c + (x[2] ?? 0)) | 0;\n x[3] = (d + (x[3] ?? 0)) | 0;\n }\n\n private _dataLength = 0;\n private _bufferLength = 0;\n\n private _state: Int32Array = new Int32Array(4);\n private _buffer: ArrayBuffer = new ArrayBuffer(68);\n private _buffer8: Uint8Array;\n private _buffer32: Uint32Array;\n\n constructor() {\n this._buffer8 = new Uint8Array(this._buffer, 0, 68);\n this._buffer32 = new Uint32Array(this._buffer, 0, 17);\n this.start();\n }\n\n /**\n * Initialise buffer to be hashed\n */\n public start() {\n this._dataLength = 0;\n this._bufferLength = 0;\n this._state.set(Md5.stateIdentity);\n return this;\n }\n\n // Char to code point to to array conversion:\n // https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/String/charCodeAt\n // #Example.3A_Fixing_charCodeAt_to_handle_non-Basic-Multilingual-Plane_characters_if_their_presence_earlier_in_the_string_is_unknown\n\n /**\n * Append a UTF-8 string to the hash buffer\n * @param str String to append\n */\n public appendStr(str: string) {\n const buf8 = this._buffer8;\n const buf32 = this._buffer32;\n let bufLen = this._bufferLength;\n let code: number;\n let i: number;\n\n for (i = 0; i < str.length; i += 1) {\n code = str.charCodeAt(i);\n if (code < 128) {\n buf8[bufLen++] = code;\n } else if (code < 0x800) {\n buf8[bufLen++] = (code >>> 6) + 0xc0;\n buf8[bufLen++] = (code & 0x3f) | 0x80;\n } else if (code < 0xd800 || code > 0xdbff) {\n buf8[bufLen++] = (code >>> 12) + 0xe0;\n buf8[bufLen++] = ((code >>> 6) & 0x3f) | 0x80;\n buf8[bufLen++] = (code & 0x3f) | 0x80;\n } else {\n code =\n (code - 0xd800) * 0x400 + (str.charCodeAt(++i) - 0xdc00) + 0x10000;\n if (code > 0x10ffff) {\n throw new Error(\n \"Unicode standard supports code points up to U+10FFFF\",\n );\n }\n buf8[bufLen++] = (code >>> 18) + 0xf0;\n buf8[bufLen++] = ((code >>> 12) & 0x3f) | 0x80;\n buf8[bufLen++] = ((code >>> 6) & 0x3f) | 0x80;\n buf8[bufLen++] = (code & 0x3f) | 0x80;\n }\n if (bufLen >= 64) {\n this._dataLength += 64;\n Md5._md5cycle(this._state, buf32);\n bufLen -= 64;\n buf32[0] = buf32[16] ?? 0;\n }\n }\n this._bufferLength = bufLen;\n return this;\n }\n\n /**\n * Append an ASCII string to the hash buffer\n * @param str String to append\n */\n public appendAsciiStr(str: string) {\n const buf8 = this._buffer8;\n const buf32 = this._buffer32;\n let bufLen = this._bufferLength;\n let i: number;\n let j = 0;\n\n for (;;) {\n i = Math.min(str.length - j, 64 - bufLen);\n while (i--) {\n buf8[bufLen++] = str.charCodeAt(j++);\n }\n if (bufLen < 64) {\n break;\n }\n this._dataLength += 64;\n Md5._md5cycle(this._state, buf32);\n bufLen = 0;\n }\n this._bufferLength = bufLen;\n return this;\n }\n\n /**\n * Append a byte array to the hash buffer\n * @param input array to append\n */\n public appendByteArray(input: Uint8Array) {\n const buf8 = this._buffer8;\n const buf32 = this._buffer32;\n let bufLen = this._bufferLength;\n let i: number;\n let j = 0;\n\n for (;;) {\n i = Math.min(input.length - j, 64 - bufLen);\n while (i--) {\n buf8[bufLen++] = input[j++] ?? 0;\n }\n if (bufLen < 64) {\n break;\n }\n this._dataLength += 64;\n Md5._md5cycle(this._state, buf32);\n bufLen = 0;\n }\n this._bufferLength = bufLen;\n return this;\n }\n\n /**\n * Get the state of the hash buffer\n */\n public getState(): HasherState {\n const s = this._state;\n\n return {\n buffer: String.fromCharCode.apply(null, Array.from(this._buffer8)),\n buflen: this._bufferLength,\n length: this._dataLength,\n state: [s[0] ?? 0, s[1] ?? 0, s[2] ?? 0, s[3] ?? 0],\n };\n }\n\n /**\n * Override the current state of the hash buffer\n * @param state New hash buffer state\n */\n public setState(state: HasherState) {\n const buf = state.buffer;\n const x = state.state;\n const s = this._state;\n let i: number;\n\n this._dataLength = state.length;\n this._bufferLength = state.buflen;\n s[0] = x[0] ?? 0;\n s[1] = x[1] ?? 0;\n s[2] = x[2] ?? 0;\n s[3] = x[3] ?? 0;\n\n for (i = 0; i < buf.length; i += 1) {\n this._buffer8[i] = buf.charCodeAt(i);\n }\n }\n\n /**\n * Hash the current state of the hash buffer and return the result\n * @param raw Whether to return the value as an `Int32Array`\n */\n public end(raw = false) {\n const bufLen = this._bufferLength;\n const buf8 = this._buffer8;\n const buf32 = this._buffer32;\n const i = (bufLen >> 2) + 1;\n\n this._dataLength += bufLen;\n const dataBitsLen = this._dataLength * 8;\n\n buf8[bufLen] = 0x80;\n buf8[bufLen + 1] = buf8[bufLen + 2] = buf8[bufLen + 3] = 0;\n buf32.set(Md5.buffer32Identity.subarray(i), i);\n\n if (bufLen > 55) {\n Md5._md5cycle(this._state, buf32);\n buf32.set(Md5.buffer32Identity);\n }\n\n // Do the final computation based on the tail and length\n // Beware that the final length may not fit in 32 bits so we take care of that\n if (dataBitsLen <= 0xffffffff) {\n buf32[14] = dataBitsLen;\n } else {\n const matches = dataBitsLen.toString(16).match(/(.*?)(.{0,8})$/);\n if (matches === null) {\n return;\n }\n\n const lo = Number.parseInt(matches[2] ?? \"\", 16);\n const hi = Number.parseInt(matches[1] ?? \"\", 16) || 0;\n\n buf32[14] = lo;\n buf32[15] = hi;\n }\n\n Md5._md5cycle(this._state, buf32);\n\n return raw ? this._state : Md5._hex(this._state);\n }\n}\n\nif (Md5.hashStr(\"hello\") !== \"5d41402abc4b2a76b9719d911017c592\") {\n throw new Error(\"Md5 self test failed.\");\n}\n","import { Effect } from \"effect\";\nimport { UploadistaError } from \"../errors/uploadista-error\";\n\n// only call a function once\nexport function once<T, A extends unknown[], Return>(\n fn: (this: T, ...args: A) => Return,\n) {\n let called = false;\n let value: Return | undefined;\n const f = function (this: T, ...args: A): Return {\n if (called) {\n if (value) {\n return value;\n }\n throw new Error(\"Function called more than once\");\n }\n called = true;\n value = fn.apply(this, args);\n return value;\n };\n return f;\n}\n\n/**\n * Effect-based once utilities\n */\nexport const OnceEffect = {\n /**\n * Creates an Effect-based once function that only executes once\n * @param effect - The effect to execute only once\n * @returns Effect that caches the result after first execution\n */\n make: <A, E, R>(\n effect: Effect.Effect<A, E, R>,\n ): Effect.Effect<A, E | UploadistaError, R> => {\n let cached: A | undefined;\n let called = false;\n\n return Effect.gen(function* () {\n if (called) {\n if (cached !== undefined) {\n return cached;\n }\n yield* new UploadistaError({\n code: \"UNKNOWN_ERROR\",\n status: 500,\n body: \"Effect called more than once with undefined result\",\n }).toEffect();\n }\n\n called = true;\n cached = yield* effect;\n return cached;\n });\n },\n\n /**\n * Creates a legacy once function wrapper\n * @param fn - Function to wrap\n * @returns Once-wrapped function\n */\n legacy: once,\n};\n","type DebounceOptions = {\n // Whether the first call to the debounced function is run immediately.\n leading?: boolean;\n\n // Whether the last call to the debounced function is run after delay\n // milliseconds have elapsed since the last call.\n trailing?: boolean;\n};\n\nconst defaultDebounceOptions: DebounceOptions = {\n leading: false,\n trailing: true,\n};\n\n/**\n * Returns `fn` wrapped by a function that delays invoking `fn` for `delay`\n * milliseconds since the last call. Set `options.leading` to invoke `fn` on\n * the leading edge of the delay, and/or set `options.trailing` to invoke `fn`\n * on the trailing edge of the delay (true by default).\n *\n * Example for `debounce(fn, 30, {leading: true, trailing: true})`,\n * where `fn` is called twice, with the second call made 20 ms after the first:\n *\n * Time: 0 20 50 (ms)\n * Timeline: |----------------------------------------------------------------|\n * ^ ^ ^\n * | | |\n * | First call. | Second call 20ms after the | End of delay.\n * | (instant leading | first. | (trailing edge\n * | edge call) | | call)\n * |-----------------------------|\n * | 30 ms delay for debounce. |\n *\n *\n * Note that if both `options.leading` and `options.trailing` are true, `fn`\n * will only be invoked on the trailing edge if the debounced function is called\n * more than once during the delay.\n *\n * @param fn - Function to debounce.\n * @param delay - Milliseconds to delay calling `fn` since the last call.\n * @param debounceOptions - See `DebounceOptions` and `defaultDebounceOptions`.\n * @returns A debounced `fn`.\n */\nexport function debounce<T, A extends unknown[]>(\n fn: (this: T, ...args: A) => void,\n delay: number,\n debounceOptions: DebounceOptions = {},\n): (this: T, ...args: A) => void {\n const options = { ...defaultDebounceOptions, ...debounceOptions };\n\n let timer: ReturnType<typeof setTimeout> | undefined;\n\n return function (this: T, ...args: A): void {\n if (options.leading && !timer) {\n // Leading edge.\n // Call fn on the leading edge, when debouncing hasn't started yet.\n console.log(\"leading\");\n fn.apply(this, args);\n\n // Debounce the next call.\n timer = setTimeout(() => {\n timer = undefined;\n }, delay);\n } else {\n // Trailing edge.\n // Postpone calling fn until the delay has elapsed since the last call.\n // Each call clears any previously delayed call and resets the delay, so\n // the postponed call will always be the last one.\n clearTimeout(timer);\n timer = setTimeout(() => {\n if (options.trailing) {\n // Call fn on the trailing edge.\n fn.apply(this, args);\n\n if (options.leading) {\n // Debounce next leading call since a trailing call was just made.\n setTimeout(() => {\n timer = undefined;\n }, delay);\n }\n } else {\n // No trailing call. Since the delay has elapsed since the last call,\n // immediately reset the debouncing delay.\n timer = undefined;\n }\n }, delay);\n }\n };\n}\n","import { debounce } from \"./debounce.js\";\n\nexport function throttle<T, A extends unknown[], Return>(\n fn: (this: T, ...args: A) => Return,\n wait: number,\n {\n leading = true,\n trailing = true,\n }: { leading?: boolean; trailing?: boolean } = {},\n) {\n return debounce(fn, wait, {\n leading,\n trailing,\n });\n}\n\n/**\n * Effect-based throttle utilities\n */\nexport const ThrottleEffect = {\n /**\n * Creates a legacy throttle function wrapper\n * @param fn - Function to throttle\n * @param wait - Wait time in milliseconds\n * @param options - Throttle options\n * @returns Throttled function\n */\n legacy: throttle,\n};\n"],"mappings":"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"}
1
+ {"version":3,"file":"utils-B-ZhQ6b0.mjs","names":["n: number","offset: number","j: number","i: number","a: number","b: number","c: number","d: number","code: number","value: Return | undefined","cached: A | undefined","defaultDebounceOptions: DebounceOptions","timer: ReturnType<typeof setTimeout> | undefined"],"sources":["../src/utils/md5.ts","../src/utils/once.ts","../src/utils/debounce.ts","../src/utils/throttle.ts"],"sourcesContent":["/*\n\nTypeScript Md5\n==============\n\nBased on work by\n* Joseph Myers: http://www.myersdaily.org/joseph/javascript/md5-text.html\n* André Cruz: https://github.com/satazor/SparkMD5\n* Raymond Hill: https://github.com/gorhill/yamd5.js\n\nEffectively a TypeScrypt re-write of Raymond Hill JS Library\n\nThe MIT License (MIT)\n\nCopyright (C) 2014 Raymond Hill\n\nPermission is hereby granted, free of charge, to any person obtaining a copy\nof this software and associated documentation files (the \"Software\"), to deal\nin the Software without restriction, including without limitation the rights\nto use, copy, modify, merge, publish, distribute, sublicense, and/or sell\ncopies of the Software, and to permit persons to whom the Software is\nfurnished to do so, subject to the following conditions:\n\nThe above copyright notice and this permission notice shall be included in\nall copies or substantial portions of the Software.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\nIMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\nFITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\nAUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\nLIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\nOUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\nTHE SOFTWARE.\n\n DO WHAT YOU WANT TO PUBLIC LICENSE\n Version 2, December 2004\n\n Copyright (C) 2015 André Cruz <amdfcruz@gmail.com>\n\n Everyone is permitted to copy and distribute verbatim or modified\n copies of this license document, and changing it is allowed as long\n as the name is changed.\n\n DO WHAT YOU WANT TO PUBLIC LICENSE\n TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION\n\n 0. You just DO WHAT YOU WANT TO.\n\n*/\n\ntype HasherState = {\n buffer: string;\n buflen: number;\n length: number;\n state: number[];\n};\n\nexport class Md5 {\n /**\n * Hash a UTF-8 string on the spot\n * @param str String to hash\n * @param raw Whether to return the value as an `Int32Array`\n */\n public static hashStr(str: string, raw?: false): string;\n public static hashStr(str: string, raw: true): Int32Array;\n public static hashStr(str: string, raw = false) {\n return Md5.onePassHasher.start().appendStr(str).end(raw);\n }\n\n /**\n * Hash a ASCII string on the spot\n * @param str String to hash\n * @param raw Whether to return the value as an `Int32Array`\n */\n public static hashAsciiStr(str: string, raw?: false): string;\n public static hashAsciiStr(str: string, raw: true): Int32Array;\n public static hashAsciiStr(str: string, raw = false) {\n return Md5.onePassHasher.start().appendAsciiStr(str).end(raw);\n }\n\n // Private Static Variables\n private static stateIdentity = new Int32Array([\n 1732584193, -271733879, -1732584194, 271733878,\n ]);\n\n private static buffer32Identity = new Int32Array([\n 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,\n ]);\n\n private static hexChars = \"0123456789abcdef\";\n private static hexOut: string[] = [];\n\n // Permanent instance is to use for one-call hashing\n private static onePassHasher = new Md5();\n\n private static _hex(x: Int32Array): string {\n const hc = Md5.hexChars;\n const ho = Md5.hexOut;\n let n: number;\n let offset: number;\n let j: number;\n let i: number;\n\n for (i = 0; i < 4; i += 1) {\n offset = i * 8;\n n = x[i] ?? 0;\n for (j = 0; j < 8; j += 2) {\n ho[offset + 1 + j] = hc.charAt(n & 0x0f);\n n >>>= 4;\n ho[offset + 0 + j] = hc.charAt(n & 0x0f);\n n >>>= 4;\n }\n }\n return ho.join(\"\");\n }\n\n private static _md5cycle(\n x: Int32Array | Uint32Array,\n k: Int32Array | Uint32Array,\n ) {\n let a: number = x[0] ?? 0;\n let b: number = x[1] ?? 0;\n let c: number = x[2] ?? 0;\n let d: number = x[3] ?? 0;\n // ff()\n a += (((b & c) | (~b & d)) + (k[0] ?? 0) - 680876936) | 0;\n a = (((a << 7) | (a >>> 25)) + b) | 0;\n d += (((a & b) | (~a & c)) + (k[1] ?? 0) - 389564586) | 0;\n d = (((d << 12) | (d >>> 20)) + a) | 0;\n c += (((d & a) | (~d & b)) + (k[2] ?? 0) + 606105819) | 0;\n c = (((c << 17) | (c >>> 15)) + d) | 0;\n b += (((c & d) | (~c & a)) + (k[3] ?? 0) - 1044525330) | 0;\n b = (((b << 22) | (b >>> 10)) + c) | 0;\n a += (((b & c) | (~b & d)) + (k[4] ?? 0) - 176418897) | 0;\n a = (((a << 7) | (a >>> 25)) + b) | 0;\n d += (((a & b) | (~a & c)) + (k[5] ?? 0) + 1200080426) | 0;\n d = (((d << 12) | (d >>> 20)) + a) | 0;\n c += (((d & a) | (~d & b)) + (k[6] ?? 0) - 1473231341) | 0;\n c = (((c << 17) | (c >>> 15)) + d) | 0;\n b += (((c & d) | (~c & a)) + (k[7] ?? 0) - 45705983) | 0;\n b = (((b << 22) | (b >>> 10)) + c) | 0;\n a += (((b & c) | (~b & d)) + (k[8] ?? 0) + 1770035416) | 0;\n a = (((a << 7) | (a >>> 25)) + b) | 0;\n d += (((a & b) | (~a & c)) + (k[9] ?? 0) - 1958414417) | 0;\n d = (((d << 12) | (d >>> 20)) + a) | 0;\n c += (((d & a) | (~d & b)) + (k[10] ?? 0) - 42063) | 0;\n c = (((c << 17) | (c >>> 15)) + d) | 0;\n b += (((c & d) | (~c & a)) + (k[11] ?? 0) - 1990404162) | 0;\n b = (((b << 22) | (b >>> 10)) + c) | 0;\n a += (((b & c) | (~b & d)) + (k[12] ?? 0) + 1804603682) | 0;\n a = (((a << 7) | (a >>> 25)) + b) | 0;\n d += (((a & b) | (~a & c)) + (k[13] ?? 0) - 40341101) | 0;\n d = (((d << 12) | (d >>> 20)) + a) | 0;\n c += (((d & a) | (~d & b)) + (k[14] ?? 0) - 1502002290) | 0;\n c = (((c << 17) | (c >>> 15)) + d) | 0;\n b += (((c & d) | (~c & a)) + (k[15] ?? 0) + 1236535329) | 0;\n b = (((b << 22) | (b >>> 10)) + c) | 0;\n // gg()\n a += (((b & d) | (c & ~d)) + (k[1] ?? 0) - 165796510) | 0;\n a = (((a << 5) | (a >>> 27)) + b) | 0;\n d += (((a & c) | (b & ~c)) + (k[6] ?? 0) - 1069501632) | 0;\n d = (((d << 9) | (d >>> 23)) + a) | 0;\n c += (((d & b) | (a & ~b)) + (k[11] ?? 0) + 643717713) | 0;\n c = (((c << 14) | (c >>> 18)) + d) | 0;\n b += (((c & a) | (d & ~a)) + (k[0] ?? 0) - 373897302) | 0;\n b = (((b << 20) | (b >>> 12)) + c) | 0;\n a += (((b & d) | (c & ~d)) + (k[5] ?? 0) - 701558691) | 0;\n a = (((a << 5) | (a >>> 27)) + b) | 0;\n d += (((a & c) | (b & ~c)) + (k[10] ?? 0) + 38016083) | 0;\n d = (((d << 9) | (d >>> 23)) + a) | 0;\n c += (((d & b) | (a & ~b)) + (k[15] ?? 0) - 660478335) | 0;\n c = (((c << 14) | (c >>> 18)) + d) | 0;\n b += (((c & a) | (d & ~a)) + (k[4] ?? 0) - 405537848) | 0;\n b = (((b << 20) | (b >>> 12)) + c) | 0;\n a += (((b & d) | (c & ~d)) + (k[9] ?? 0) + 568446438) | 0;\n a = (((a << 5) | (a >>> 27)) + b) | 0;\n d += (((a & c) | (b & ~c)) + (k[14] ?? 0) - 1019803690) | 0;\n d = (((d << 9) | (d >>> 23)) + a) | 0;\n c += (((d & b) | (a & ~b)) + (k[3] ?? 0) - 187363961) | 0;\n c = (((c << 14) | (c >>> 18)) + d) | 0;\n b += (((c & a) | (d & ~a)) + (k[8] ?? 0) + 1163531501) | 0;\n b = (((b << 20) | (b >>> 12)) + c) | 0;\n a += (((b & d) | (c & ~d)) + (k[13] ?? 0) - 1444681467) | 0;\n a = (((a << 5) | (a >>> 27)) + b) | 0;\n d += (((a & c) | (b & ~c)) + (k[2] ?? 0) - 51403784) | 0;\n d = (((d << 9) | (d >>> 23)) + a) | 0;\n c += (((d & b) | (a & ~b)) + (k[7] ?? 0) + 1735328473) | 0;\n c = (((c << 14) | (c >>> 18)) + d) | 0;\n b += (((c & a) | (d & ~a)) + (k[12] ?? 0) - 1926607734) | 0;\n b = (((b << 20) | (b >>> 12)) + c) | 0;\n // hh()\n a += ((b ^ c ^ d) + (k[5] ?? 0) - 378558) | 0;\n a = (((a << 4) | (a >>> 28)) + b) | 0;\n d += ((a ^ b ^ c) + (k[8] ?? 0) - 2022574463) | 0;\n d = (((d << 11) | (d >>> 21)) + a) | 0;\n c += ((d ^ a ^ b) + (k[11] ?? 0) + 1839030562) | 0;\n c = (((c << 16) | (c >>> 16)) + d) | 0;\n b += ((c ^ d ^ a) + (k[14] ?? 0) - 35309556) | 0;\n b = (((b << 23) | (b >>> 9)) + c) | 0;\n a += ((b ^ c ^ d) + (k[1] ?? 0) - 1530992060) | 0;\n a = (((a << 4) | (a >>> 28)) + b) | 0;\n d += ((a ^ b ^ c) + (k[4] ?? 0) + 1272893353) | 0;\n d = (((d << 11) | (d >>> 21)) + a) | 0;\n c += ((d ^ a ^ b) + (k[7] ?? 0) - 155497632) | 0;\n c = (((c << 16) | (c >>> 16)) + d) | 0;\n b += ((c ^ d ^ a) + (k[10] ?? 0) - 1094730640) | 0;\n b = (((b << 23) | (b >>> 9)) + c) | 0;\n a += ((b ^ c ^ d) + (k[13] ?? 0) + 681279174) | 0;\n a = (((a << 4) | (a >>> 28)) + b) | 0;\n d += ((a ^ b ^ c) + (k[0] ?? 0) - 358537222) | 0;\n d = (((d << 11) | (d >>> 21)) + a) | 0;\n c += ((d ^ a ^ b) + (k[3] ?? 0) - 722521979) | 0;\n c = (((c << 16) | (c >>> 16)) + d) | 0;\n b += ((c ^ d ^ a) + (k[6] ?? 0) + 76029189) | 0;\n b = (((b << 23) | (b >>> 9)) + c) | 0;\n a += ((b ^ c ^ d) + (k[9] ?? 0) - 640364487) | 0;\n a = (((a << 4) | (a >>> 28)) + b) | 0;\n d += ((a ^ b ^ c) + (k[12] ?? 0) - 421815835) | 0;\n d = (((d << 11) | (d >>> 21)) + a) | 0;\n c += ((d ^ a ^ b) + (k[15] ?? 0) + 530742520) | 0;\n c = (((c << 16) | (c >>> 16)) + d) | 0;\n b += ((c ^ d ^ a) + (k[2] ?? 0) - 995338651) | 0;\n b = (((b << 23) | (b >>> 9)) + c) | 0;\n // ii()\n a += ((c ^ (b | ~d)) + (k[0] ?? 0) - 198630844) | 0;\n a = (((a << 6) | (a >>> 26)) + b) | 0;\n d += ((b ^ (a | ~c)) + (k[7] ?? 0) + 1126891415) | 0;\n d = (((d << 10) | (d >>> 22)) + a) | 0;\n c += ((a ^ (d | ~b)) + (k[14] ?? 0) - 1416354905) | 0;\n c = (((c << 15) | (c >>> 17)) + d) | 0;\n b += ((d ^ (c | ~a)) + (k[5] ?? 0) - 57434055) | 0;\n b = (((b << 21) | (b >>> 11)) + c) | 0;\n a += ((c ^ (b | ~d)) + (k[12] ?? 0) + 1700485571) | 0;\n a = (((a << 6) | (a >>> 26)) + b) | 0;\n d += ((b ^ (a | ~c)) + (k[3] ?? 0) - 1894986606) | 0;\n d = (((d << 10) | (d >>> 22)) + a) | 0;\n c += ((a ^ (d | ~b)) + (k[10] ?? 0) - 1051523) | 0;\n c = (((c << 15) | (c >>> 17)) + d) | 0;\n b += ((d ^ (c | ~a)) + (k[1] ?? 0) - 2054922799) | 0;\n b = (((b << 21) | (b >>> 11)) + c) | 0;\n a += ((c ^ (b | ~d)) + (k[8] ?? 0) + 1873313359) | 0;\n a = (((a << 6) | (a >>> 26)) + b) | 0;\n d += ((b ^ (a | ~c)) + (k[15] ?? 0) - 30611744) | 0;\n d = (((d << 10) | (d >>> 22)) + a) | 0;\n c += ((a ^ (d | ~b)) + (k[6] ?? 0) - 1560198380) | 0;\n c = (((c << 15) | (c >>> 17)) + d) | 0;\n b += ((d ^ (c | ~a)) + (k[13] ?? 0) + 1309151649) | 0;\n b = (((b << 21) | (b >>> 11)) + c) | 0;\n a += ((c ^ (b | ~d)) + (k[4] ?? 0) - 145523070) | 0;\n a = (((a << 6) | (a >>> 26)) + b) | 0;\n d += ((b ^ (a | ~c)) + (k[11] ?? 0) - 1120210379) | 0;\n d = (((d << 10) | (d >>> 22)) + a) | 0;\n c += ((a ^ (d | ~b)) + (k[2] ?? 0) + 718787259) | 0;\n c = (((c << 15) | (c >>> 17)) + d) | 0;\n b += ((d ^ (c | ~a)) + (k[9] ?? 0) - 343485551) | 0;\n b = (((b << 21) | (b >>> 11)) + c) | 0;\n\n x[0] = (a + (x[0] ?? 0)) | 0;\n x[1] = (b + (x[1] ?? 0)) | 0;\n x[2] = (c + (x[2] ?? 0)) | 0;\n x[3] = (d + (x[3] ?? 0)) | 0;\n }\n\n private _dataLength = 0;\n private _bufferLength = 0;\n\n private _state: Int32Array = new Int32Array(4);\n private _buffer: ArrayBuffer = new ArrayBuffer(68);\n private _buffer8: Uint8Array;\n private _buffer32: Uint32Array;\n\n constructor() {\n this._buffer8 = new Uint8Array(this._buffer, 0, 68);\n this._buffer32 = new Uint32Array(this._buffer, 0, 17);\n this.start();\n }\n\n /**\n * Initialise buffer to be hashed\n */\n public start() {\n this._dataLength = 0;\n this._bufferLength = 0;\n this._state.set(Md5.stateIdentity);\n return this;\n }\n\n // Char to code point to to array conversion:\n // https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/String/charCodeAt\n // #Example.3A_Fixing_charCodeAt_to_handle_non-Basic-Multilingual-Plane_characters_if_their_presence_earlier_in_the_string_is_unknown\n\n /**\n * Append a UTF-8 string to the hash buffer\n * @param str String to append\n */\n public appendStr(str: string) {\n const buf8 = this._buffer8;\n const buf32 = this._buffer32;\n let bufLen = this._bufferLength;\n let code: number;\n let i: number;\n\n for (i = 0; i < str.length; i += 1) {\n code = str.charCodeAt(i);\n if (code < 128) {\n buf8[bufLen++] = code;\n } else if (code < 0x800) {\n buf8[bufLen++] = (code >>> 6) + 0xc0;\n buf8[bufLen++] = (code & 0x3f) | 0x80;\n } else if (code < 0xd800 || code > 0xdbff) {\n buf8[bufLen++] = (code >>> 12) + 0xe0;\n buf8[bufLen++] = ((code >>> 6) & 0x3f) | 0x80;\n buf8[bufLen++] = (code & 0x3f) | 0x80;\n } else {\n code =\n (code - 0xd800) * 0x400 + (str.charCodeAt(++i) - 0xdc00) + 0x10000;\n if (code > 0x10ffff) {\n throw new Error(\n \"Unicode standard supports code points up to U+10FFFF\",\n );\n }\n buf8[bufLen++] = (code >>> 18) + 0xf0;\n buf8[bufLen++] = ((code >>> 12) & 0x3f) | 0x80;\n buf8[bufLen++] = ((code >>> 6) & 0x3f) | 0x80;\n buf8[bufLen++] = (code & 0x3f) | 0x80;\n }\n if (bufLen >= 64) {\n this._dataLength += 64;\n Md5._md5cycle(this._state, buf32);\n bufLen -= 64;\n buf32[0] = buf32[16] ?? 0;\n }\n }\n this._bufferLength = bufLen;\n return this;\n }\n\n /**\n * Append an ASCII string to the hash buffer\n * @param str String to append\n */\n public appendAsciiStr(str: string) {\n const buf8 = this._buffer8;\n const buf32 = this._buffer32;\n let bufLen = this._bufferLength;\n let i: number;\n let j = 0;\n\n for (;;) {\n i = Math.min(str.length - j, 64 - bufLen);\n while (i--) {\n buf8[bufLen++] = str.charCodeAt(j++);\n }\n if (bufLen < 64) {\n break;\n }\n this._dataLength += 64;\n Md5._md5cycle(this._state, buf32);\n bufLen = 0;\n }\n this._bufferLength = bufLen;\n return this;\n }\n\n /**\n * Append a byte array to the hash buffer\n * @param input array to append\n */\n public appendByteArray(input: Uint8Array) {\n const buf8 = this._buffer8;\n const buf32 = this._buffer32;\n let bufLen = this._bufferLength;\n let i: number;\n let j = 0;\n\n for (;;) {\n i = Math.min(input.length - j, 64 - bufLen);\n while (i--) {\n buf8[bufLen++] = input[j++] ?? 0;\n }\n if (bufLen < 64) {\n break;\n }\n this._dataLength += 64;\n Md5._md5cycle(this._state, buf32);\n bufLen = 0;\n }\n this._bufferLength = bufLen;\n return this;\n }\n\n /**\n * Get the state of the hash buffer\n */\n public getState(): HasherState {\n const s = this._state;\n\n return {\n buffer: String.fromCharCode.apply(null, Array.from(this._buffer8)),\n buflen: this._bufferLength,\n length: this._dataLength,\n state: [s[0] ?? 0, s[1] ?? 0, s[2] ?? 0, s[3] ?? 0],\n };\n }\n\n /**\n * Override the current state of the hash buffer\n * @param state New hash buffer state\n */\n public setState(state: HasherState) {\n const buf = state.buffer;\n const x = state.state;\n const s = this._state;\n let i: number;\n\n this._dataLength = state.length;\n this._bufferLength = state.buflen;\n s[0] = x[0] ?? 0;\n s[1] = x[1] ?? 0;\n s[2] = x[2] ?? 0;\n s[3] = x[3] ?? 0;\n\n for (i = 0; i < buf.length; i += 1) {\n this._buffer8[i] = buf.charCodeAt(i);\n }\n }\n\n /**\n * Hash the current state of the hash buffer and return the result\n * @param raw Whether to return the value as an `Int32Array`\n */\n public end(raw = false) {\n const bufLen = this._bufferLength;\n const buf8 = this._buffer8;\n const buf32 = this._buffer32;\n const i = (bufLen >> 2) + 1;\n\n this._dataLength += bufLen;\n const dataBitsLen = this._dataLength * 8;\n\n buf8[bufLen] = 0x80;\n buf8[bufLen + 1] = buf8[bufLen + 2] = buf8[bufLen + 3] = 0;\n buf32.set(Md5.buffer32Identity.subarray(i), i);\n\n if (bufLen > 55) {\n Md5._md5cycle(this._state, buf32);\n buf32.set(Md5.buffer32Identity);\n }\n\n // Do the final computation based on the tail and length\n // Beware that the final length may not fit in 32 bits so we take care of that\n if (dataBitsLen <= 0xffffffff) {\n buf32[14] = dataBitsLen;\n } else {\n const matches = dataBitsLen.toString(16).match(/(.*?)(.{0,8})$/);\n if (matches === null) {\n return;\n }\n\n const lo = Number.parseInt(matches[2] ?? \"\", 16);\n const hi = Number.parseInt(matches[1] ?? \"\", 16) || 0;\n\n buf32[14] = lo;\n buf32[15] = hi;\n }\n\n Md5._md5cycle(this._state, buf32);\n\n return raw ? this._state : Md5._hex(this._state);\n }\n}\n\nif (Md5.hashStr(\"hello\") !== \"5d41402abc4b2a76b9719d911017c592\") {\n throw new Error(\"Md5 self test failed.\");\n}\n","import { Effect } from \"effect\";\nimport { UploadistaError } from \"../errors/uploadista-error\";\n\n// only call a function once\nexport function once<T, A extends unknown[], Return>(\n fn: (this: T, ...args: A) => Return,\n) {\n let called = false;\n let value: Return | undefined;\n const f = function (this: T, ...args: A): Return {\n if (called) {\n if (value) {\n return value;\n }\n throw new Error(\"Function called more than once\");\n }\n called = true;\n value = fn.apply(this, args);\n return value;\n };\n return f;\n}\n\n/**\n * Effect-based once utilities\n */\nexport const OnceEffect = {\n /**\n * Creates an Effect-based once function that only executes once\n * @param effect - The effect to execute only once\n * @returns Effect that caches the result after first execution\n */\n make: <A, E, R>(\n effect: Effect.Effect<A, E, R>,\n ): Effect.Effect<A, E | UploadistaError, R> => {\n let cached: A | undefined;\n let called = false;\n\n return Effect.gen(function* () {\n if (called) {\n if (cached !== undefined) {\n return cached;\n }\n yield* new UploadistaError({\n code: \"UNKNOWN_ERROR\",\n status: 500,\n body: \"Effect called more than once with undefined result\",\n }).toEffect();\n }\n\n called = true;\n cached = yield* effect;\n return cached;\n });\n },\n\n /**\n * Creates a legacy once function wrapper\n * @param fn - Function to wrap\n * @returns Once-wrapped function\n */\n legacy: once,\n};\n","type DebounceOptions = {\n // Whether the first call to the debounced function is run immediately.\n leading?: boolean;\n\n // Whether the last call to the debounced function is run after delay\n // milliseconds have elapsed since the last call.\n trailing?: boolean;\n};\n\nconst defaultDebounceOptions: DebounceOptions = {\n leading: false,\n trailing: true,\n};\n\n/**\n * Returns `fn` wrapped by a function that delays invoking `fn` for `delay`\n * milliseconds since the last call. Set `options.leading` to invoke `fn` on\n * the leading edge of the delay, and/or set `options.trailing` to invoke `fn`\n * on the trailing edge of the delay (true by default).\n *\n * Example for `debounce(fn, 30, {leading: true, trailing: true})`,\n * where `fn` is called twice, with the second call made 20 ms after the first:\n *\n * Time: 0 20 50 (ms)\n * Timeline: |----------------------------------------------------------------|\n * ^ ^ ^\n * | | |\n * | First call. | Second call 20ms after the | End of delay.\n * | (instant leading | first. | (trailing edge\n * | edge call) | | call)\n * |-----------------------------|\n * | 30 ms delay for debounce. |\n *\n *\n * Note that if both `options.leading` and `options.trailing` are true, `fn`\n * will only be invoked on the trailing edge if the debounced function is called\n * more than once during the delay.\n *\n * @param fn - Function to debounce.\n * @param delay - Milliseconds to delay calling `fn` since the last call.\n * @param debounceOptions - See `DebounceOptions` and `defaultDebounceOptions`.\n * @returns A debounced `fn`.\n */\nexport function debounce<T, A extends unknown[]>(\n fn: (this: T, ...args: A) => void,\n delay: number,\n debounceOptions: DebounceOptions = {},\n): (this: T, ...args: A) => void {\n const options = { ...defaultDebounceOptions, ...debounceOptions };\n\n let timer: ReturnType<typeof setTimeout> | undefined;\n\n return function (this: T, ...args: A): void {\n if (options.leading && !timer) {\n // Leading edge.\n // Call fn on the leading edge, when debouncing hasn't started yet.\n console.log(\"leading\");\n fn.apply(this, args);\n\n // Debounce the next call.\n timer = setTimeout(() => {\n timer = undefined;\n }, delay);\n } else {\n // Trailing edge.\n // Postpone calling fn until the delay has elapsed since the last call.\n // Each call clears any previously delayed call and resets the delay, so\n // the postponed call will always be the last one.\n clearTimeout(timer);\n timer = setTimeout(() => {\n if (options.trailing) {\n // Call fn on the trailing edge.\n fn.apply(this, args);\n\n if (options.leading) {\n // Debounce next leading call since a trailing call was just made.\n setTimeout(() => {\n timer = undefined;\n }, delay);\n }\n } else {\n // No trailing call. Since the delay has elapsed since the last call,\n // immediately reset the debouncing delay.\n timer = undefined;\n }\n }, delay);\n }\n };\n}\n","import { debounce } from \"./debounce.js\";\n\nexport function throttle<T, A extends unknown[], Return>(\n fn: (this: T, ...args: A) => Return,\n wait: number,\n {\n leading = true,\n trailing = true,\n }: { leading?: boolean; trailing?: boolean } = {},\n) {\n return debounce(fn, wait, {\n leading,\n trailing,\n });\n}\n\n/**\n * Effect-based throttle utilities\n */\nexport const ThrottleEffect = {\n /**\n * Creates a legacy throttle function wrapper\n * @param fn - Function to throttle\n * @param wait - Wait time in milliseconds\n * @param options - Throttle options\n * @returns Throttled function\n */\n legacy: throttle,\n};\n"],"mappings":"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"}
@@ -1 +1 @@
1
- const e=require(`./types-B5I4BioZ.cjs`),t=require(`./uploadista-error-DCRIscEv.cjs`);let n=require(`effect`);var r=class e{static hashStr(t,n=!1){return e.onePassHasher.start().appendStr(t).end(n)}static hashAsciiStr(t,n=!1){return e.onePassHasher.start().appendAsciiStr(t).end(n)}static stateIdentity=new Int32Array([1732584193,-271733879,-1732584194,271733878]);static buffer32Identity=new Int32Array([0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]);static hexChars=`0123456789abcdef`;static hexOut=[];static onePassHasher=new e;static _hex(t){let n=e.hexChars,r=e.hexOut,i,a,o,s;for(s=0;s<4;s+=1)for(a=s*8,i=t[s]??0,o=0;o<8;o+=2)r[a+1+o]=n.charAt(i&15),i>>>=4,r[a+0+o]=n.charAt(i&15),i>>>=4;return r.join(``)}static _md5cycle(e,t){let n=e[0]??0,r=e[1]??0,i=e[2]??0,a=e[3]??0;n+=(r&i|~r&a)+(t[0]??0)-680876936|0,n=(n<<7|n>>>25)+r|0,a+=(n&r|~n&i)+(t[1]??0)-389564586|0,a=(a<<12|a>>>20)+n|0,i+=(a&n|~a&r)+(t[2]??0)+606105819|0,i=(i<<17|i>>>15)+a|0,r+=(i&a|~i&n)+(t[3]??0)-1044525330|0,r=(r<<22|r>>>10)+i|0,n+=(r&i|~r&a)+(t[4]??0)-176418897|0,n=(n<<7|n>>>25)+r|0,a+=(n&r|~n&i)+(t[5]??0)+1200080426|0,a=(a<<12|a>>>20)+n|0,i+=(a&n|~a&r)+(t[6]??0)-1473231341|0,i=(i<<17|i>>>15)+a|0,r+=(i&a|~i&n)+(t[7]??0)-45705983|0,r=(r<<22|r>>>10)+i|0,n+=(r&i|~r&a)+(t[8]??0)+1770035416|0,n=(n<<7|n>>>25)+r|0,a+=(n&r|~n&i)+(t[9]??0)-1958414417|0,a=(a<<12|a>>>20)+n|0,i+=(a&n|~a&r)+(t[10]??0)-42063|0,i=(i<<17|i>>>15)+a|0,r+=(i&a|~i&n)+(t[11]??0)-1990404162|0,r=(r<<22|r>>>10)+i|0,n+=(r&i|~r&a)+(t[12]??0)+1804603682|0,n=(n<<7|n>>>25)+r|0,a+=(n&r|~n&i)+(t[13]??0)-40341101|0,a=(a<<12|a>>>20)+n|0,i+=(a&n|~a&r)+(t[14]??0)-1502002290|0,i=(i<<17|i>>>15)+a|0,r+=(i&a|~i&n)+(t[15]??0)+1236535329|0,r=(r<<22|r>>>10)+i|0,n+=(r&a|i&~a)+(t[1]??0)-165796510|0,n=(n<<5|n>>>27)+r|0,a+=(n&i|r&~i)+(t[6]??0)-1069501632|0,a=(a<<9|a>>>23)+n|0,i+=(a&r|n&~r)+(t[11]??0)+643717713|0,i=(i<<14|i>>>18)+a|0,r+=(i&n|a&~n)+(t[0]??0)-373897302|0,r=(r<<20|r>>>12)+i|0,n+=(r&a|i&~a)+(t[5]??0)-701558691|0,n=(n<<5|n>>>27)+r|0,a+=(n&i|r&~i)+(t[10]??0)+38016083|0,a=(a<<9|a>>>23)+n|0,i+=(a&r|n&~r)+(t[15]??0)-660478335|0,i=(i<<14|i>>>18)+a|0,r+=(i&n|a&~n)+(t[4]??0)-405537848|0,r=(r<<20|r>>>12)+i|0,n+=(r&a|i&~a)+(t[9]??0)+568446438|0,n=(n<<5|n>>>27)+r|0,a+=(n&i|r&~i)+(t[14]??0)-1019803690|0,a=(a<<9|a>>>23)+n|0,i+=(a&r|n&~r)+(t[3]??0)-187363961|0,i=(i<<14|i>>>18)+a|0,r+=(i&n|a&~n)+(t[8]??0)+1163531501|0,r=(r<<20|r>>>12)+i|0,n+=(r&a|i&~a)+(t[13]??0)-1444681467|0,n=(n<<5|n>>>27)+r|0,a+=(n&i|r&~i)+(t[2]??0)-51403784|0,a=(a<<9|a>>>23)+n|0,i+=(a&r|n&~r)+(t[7]??0)+1735328473|0,i=(i<<14|i>>>18)+a|0,r+=(i&n|a&~n)+(t[12]??0)-1926607734|0,r=(r<<20|r>>>12)+i|0,n+=(r^i^a)+(t[5]??0)-378558|0,n=(n<<4|n>>>28)+r|0,a+=(n^r^i)+(t[8]??0)-2022574463|0,a=(a<<11|a>>>21)+n|0,i+=(a^n^r)+(t[11]??0)+1839030562|0,i=(i<<16|i>>>16)+a|0,r+=(i^a^n)+(t[14]??0)-35309556|0,r=(r<<23|r>>>9)+i|0,n+=(r^i^a)+(t[1]??0)-1530992060|0,n=(n<<4|n>>>28)+r|0,a+=(n^r^i)+(t[4]??0)+1272893353|0,a=(a<<11|a>>>21)+n|0,i+=(a^n^r)+(t[7]??0)-155497632|0,i=(i<<16|i>>>16)+a|0,r+=(i^a^n)+(t[10]??0)-1094730640|0,r=(r<<23|r>>>9)+i|0,n+=(r^i^a)+(t[13]??0)+681279174|0,n=(n<<4|n>>>28)+r|0,a+=(n^r^i)+(t[0]??0)-358537222|0,a=(a<<11|a>>>21)+n|0,i+=(a^n^r)+(t[3]??0)-722521979|0,i=(i<<16|i>>>16)+a|0,r+=(i^a^n)+(t[6]??0)+76029189|0,r=(r<<23|r>>>9)+i|0,n+=(r^i^a)+(t[9]??0)-640364487|0,n=(n<<4|n>>>28)+r|0,a+=(n^r^i)+(t[12]??0)-421815835|0,a=(a<<11|a>>>21)+n|0,i+=(a^n^r)+(t[15]??0)+530742520|0,i=(i<<16|i>>>16)+a|0,r+=(i^a^n)+(t[2]??0)-995338651|0,r=(r<<23|r>>>9)+i|0,n+=(i^(r|~a))+(t[0]??0)-198630844|0,n=(n<<6|n>>>26)+r|0,a+=(r^(n|~i))+(t[7]??0)+1126891415|0,a=(a<<10|a>>>22)+n|0,i+=(n^(a|~r))+(t[14]??0)-1416354905|0,i=(i<<15|i>>>17)+a|0,r+=(a^(i|~n))+(t[5]??0)-57434055|0,r=(r<<21|r>>>11)+i|0,n+=(i^(r|~a))+(t[12]??0)+1700485571|0,n=(n<<6|n>>>26)+r|0,a+=(r^(n|~i))+(t[3]??0)-1894986606|0,a=(a<<10|a>>>22)+n|0,i+=(n^(a|~r))+(t[10]??0)-1051523|0,i=(i<<15|i>>>17)+a|0,r+=(a^(i|~n))+(t[1]??0)-2054922799|0,r=(r<<21|r>>>11)+i|0,n+=(i^(r|~a))+(t[8]??0)+1873313359|0,n=(n<<6|n>>>26)+r|0,a+=(r^(n|~i))+(t[15]??0)-30611744|0,a=(a<<10|a>>>22)+n|0,i+=(n^(a|~r))+(t[6]??0)-1560198380|0,i=(i<<15|i>>>17)+a|0,r+=(a^(i|~n))+(t[13]??0)+1309151649|0,r=(r<<21|r>>>11)+i|0,n+=(i^(r|~a))+(t[4]??0)-145523070|0,n=(n<<6|n>>>26)+r|0,a+=(r^(n|~i))+(t[11]??0)-1120210379|0,a=(a<<10|a>>>22)+n|0,i+=(n^(a|~r))+(t[2]??0)+718787259|0,i=(i<<15|i>>>17)+a|0,r+=(a^(i|~n))+(t[9]??0)-343485551|0,r=(r<<21|r>>>11)+i|0,e[0]=n+(e[0]??0)|0,e[1]=r+(e[1]??0)|0,e[2]=i+(e[2]??0)|0,e[3]=a+(e[3]??0)|0}_dataLength=0;_bufferLength=0;_state=new Int32Array(4);_buffer=new ArrayBuffer(68);_buffer8;_buffer32;constructor(){this._buffer8=new Uint8Array(this._buffer,0,68),this._buffer32=new Uint32Array(this._buffer,0,17),this.start()}start(){return this._dataLength=0,this._bufferLength=0,this._state.set(e.stateIdentity),this}appendStr(t){let n=this._buffer8,r=this._buffer32,i=this._bufferLength,a,o;for(o=0;o<t.length;o+=1){if(a=t.charCodeAt(o),a<128)n[i++]=a;else if(a<2048)n[i++]=(a>>>6)+192,n[i++]=a&63|128;else if(a<55296||a>56319)n[i++]=(a>>>12)+224,n[i++]=a>>>6&63|128,n[i++]=a&63|128;else{if(a=(a-55296)*1024+(t.charCodeAt(++o)-56320)+65536,a>1114111)throw Error(`Unicode standard supports code points up to U+10FFFF`);n[i++]=(a>>>18)+240,n[i++]=a>>>12&63|128,n[i++]=a>>>6&63|128,n[i++]=a&63|128}i>=64&&(this._dataLength+=64,e._md5cycle(this._state,r),i-=64,r[0]=r[16]??0)}return this._bufferLength=i,this}appendAsciiStr(t){let n=this._buffer8,r=this._buffer32,i=this._bufferLength,a,o=0;for(;;){for(a=Math.min(t.length-o,64-i);a--;)n[i++]=t.charCodeAt(o++);if(i<64)break;this._dataLength+=64,e._md5cycle(this._state,r),i=0}return this._bufferLength=i,this}appendByteArray(t){let n=this._buffer8,r=this._buffer32,i=this._bufferLength,a,o=0;for(;;){for(a=Math.min(t.length-o,64-i);a--;)n[i++]=t[o++]??0;if(i<64)break;this._dataLength+=64,e._md5cycle(this._state,r),i=0}return this._bufferLength=i,this}getState(){let e=this._state;return{buffer:String.fromCharCode.apply(null,Array.from(this._buffer8)),buflen:this._bufferLength,length:this._dataLength,state:[e[0]??0,e[1]??0,e[2]??0,e[3]??0]}}setState(e){let t=e.buffer,n=e.state,r=this._state,i;for(this._dataLength=e.length,this._bufferLength=e.buflen,r[0]=n[0]??0,r[1]=n[1]??0,r[2]=n[2]??0,r[3]=n[3]??0,i=0;i<t.length;i+=1)this._buffer8[i]=t.charCodeAt(i)}end(t=!1){let n=this._bufferLength,r=this._buffer8,i=this._buffer32,a=(n>>2)+1;this._dataLength+=n;let o=this._dataLength*8;if(r[n]=128,r[n+1]=r[n+2]=r[n+3]=0,i.set(e.buffer32Identity.subarray(a),a),n>55&&(e._md5cycle(this._state,i),i.set(e.buffer32Identity)),o<=4294967295)i[14]=o;else{let e=o.toString(16).match(/(.*?)(.{0,8})$/);if(e===null)return;let t=Number.parseInt(e[2]??``,16),n=Number.parseInt(e[1]??``,16)||0;i[14]=t,i[15]=n}return e._md5cycle(this._state,i),t?this._state:e._hex(this._state)}};if(r.hashStr(`hello`)!==`5d41402abc4b2a76b9719d911017c592`)throw Error(`Md5 self test failed.`);function i(e){let t=!1,n;return function(...r){if(t){if(n)return n;throw Error(`Function called more than once`)}return t=!0,n=e.apply(this,r),n}}const a={make:e=>{let r,i=!1;return n.Effect.gen(function*(){if(i){if(r!==void 0)return r;yield*new t.n({code:`UNKNOWN_ERROR`,status:500,body:`Effect called more than once with undefined result`}).toEffect()}return i=!0,r=yield*e,r})},legacy:i},o={leading:!1,trailing:!0};function s(e,t,n={}){let r={...o,...n},i;return function(...n){r.leading&&!i?(console.log(`leading`),e.apply(this,n),i=setTimeout(()=>{i=void 0},t)):(clearTimeout(i),i=setTimeout(()=>{r.trailing?(e.apply(this,n),r.leading&&setTimeout(()=>{i=void 0},t)):i=void 0},t))}}function c(e,t,{leading:n=!0,trailing:r=!0}={}){return s(e,t,{leading:n,trailing:r})}const l={legacy:c};Object.defineProperty(exports,`a`,{enumerable:!0,get:function(){return r}}),Object.defineProperty(exports,`i`,{enumerable:!0,get:function(){return i}}),Object.defineProperty(exports,`n`,{enumerable:!0,get:function(){return c}}),Object.defineProperty(exports,`r`,{enumerable:!0,get:function(){return a}}),Object.defineProperty(exports,`t`,{enumerable:!0,get:function(){return l}});
1
+ const e=require(`./types-DUYVoR13.cjs`),t=require(`./uploadista-error-BxBLmQtX.cjs`);let n=require(`effect`);var r=class e{static hashStr(t,n=!1){return e.onePassHasher.start().appendStr(t).end(n)}static hashAsciiStr(t,n=!1){return e.onePassHasher.start().appendAsciiStr(t).end(n)}static stateIdentity=new Int32Array([1732584193,-271733879,-1732584194,271733878]);static buffer32Identity=new Int32Array([0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]);static hexChars=`0123456789abcdef`;static hexOut=[];static onePassHasher=new e;static _hex(t){let n=e.hexChars,r=e.hexOut,i,a,o,s;for(s=0;s<4;s+=1)for(a=s*8,i=t[s]??0,o=0;o<8;o+=2)r[a+1+o]=n.charAt(i&15),i>>>=4,r[a+0+o]=n.charAt(i&15),i>>>=4;return r.join(``)}static _md5cycle(e,t){let n=e[0]??0,r=e[1]??0,i=e[2]??0,a=e[3]??0;n+=(r&i|~r&a)+(t[0]??0)-680876936|0,n=(n<<7|n>>>25)+r|0,a+=(n&r|~n&i)+(t[1]??0)-389564586|0,a=(a<<12|a>>>20)+n|0,i+=(a&n|~a&r)+(t[2]??0)+606105819|0,i=(i<<17|i>>>15)+a|0,r+=(i&a|~i&n)+(t[3]??0)-1044525330|0,r=(r<<22|r>>>10)+i|0,n+=(r&i|~r&a)+(t[4]??0)-176418897|0,n=(n<<7|n>>>25)+r|0,a+=(n&r|~n&i)+(t[5]??0)+1200080426|0,a=(a<<12|a>>>20)+n|0,i+=(a&n|~a&r)+(t[6]??0)-1473231341|0,i=(i<<17|i>>>15)+a|0,r+=(i&a|~i&n)+(t[7]??0)-45705983|0,r=(r<<22|r>>>10)+i|0,n+=(r&i|~r&a)+(t[8]??0)+1770035416|0,n=(n<<7|n>>>25)+r|0,a+=(n&r|~n&i)+(t[9]??0)-1958414417|0,a=(a<<12|a>>>20)+n|0,i+=(a&n|~a&r)+(t[10]??0)-42063|0,i=(i<<17|i>>>15)+a|0,r+=(i&a|~i&n)+(t[11]??0)-1990404162|0,r=(r<<22|r>>>10)+i|0,n+=(r&i|~r&a)+(t[12]??0)+1804603682|0,n=(n<<7|n>>>25)+r|0,a+=(n&r|~n&i)+(t[13]??0)-40341101|0,a=(a<<12|a>>>20)+n|0,i+=(a&n|~a&r)+(t[14]??0)-1502002290|0,i=(i<<17|i>>>15)+a|0,r+=(i&a|~i&n)+(t[15]??0)+1236535329|0,r=(r<<22|r>>>10)+i|0,n+=(r&a|i&~a)+(t[1]??0)-165796510|0,n=(n<<5|n>>>27)+r|0,a+=(n&i|r&~i)+(t[6]??0)-1069501632|0,a=(a<<9|a>>>23)+n|0,i+=(a&r|n&~r)+(t[11]??0)+643717713|0,i=(i<<14|i>>>18)+a|0,r+=(i&n|a&~n)+(t[0]??0)-373897302|0,r=(r<<20|r>>>12)+i|0,n+=(r&a|i&~a)+(t[5]??0)-701558691|0,n=(n<<5|n>>>27)+r|0,a+=(n&i|r&~i)+(t[10]??0)+38016083|0,a=(a<<9|a>>>23)+n|0,i+=(a&r|n&~r)+(t[15]??0)-660478335|0,i=(i<<14|i>>>18)+a|0,r+=(i&n|a&~n)+(t[4]??0)-405537848|0,r=(r<<20|r>>>12)+i|0,n+=(r&a|i&~a)+(t[9]??0)+568446438|0,n=(n<<5|n>>>27)+r|0,a+=(n&i|r&~i)+(t[14]??0)-1019803690|0,a=(a<<9|a>>>23)+n|0,i+=(a&r|n&~r)+(t[3]??0)-187363961|0,i=(i<<14|i>>>18)+a|0,r+=(i&n|a&~n)+(t[8]??0)+1163531501|0,r=(r<<20|r>>>12)+i|0,n+=(r&a|i&~a)+(t[13]??0)-1444681467|0,n=(n<<5|n>>>27)+r|0,a+=(n&i|r&~i)+(t[2]??0)-51403784|0,a=(a<<9|a>>>23)+n|0,i+=(a&r|n&~r)+(t[7]??0)+1735328473|0,i=(i<<14|i>>>18)+a|0,r+=(i&n|a&~n)+(t[12]??0)-1926607734|0,r=(r<<20|r>>>12)+i|0,n+=(r^i^a)+(t[5]??0)-378558|0,n=(n<<4|n>>>28)+r|0,a+=(n^r^i)+(t[8]??0)-2022574463|0,a=(a<<11|a>>>21)+n|0,i+=(a^n^r)+(t[11]??0)+1839030562|0,i=(i<<16|i>>>16)+a|0,r+=(i^a^n)+(t[14]??0)-35309556|0,r=(r<<23|r>>>9)+i|0,n+=(r^i^a)+(t[1]??0)-1530992060|0,n=(n<<4|n>>>28)+r|0,a+=(n^r^i)+(t[4]??0)+1272893353|0,a=(a<<11|a>>>21)+n|0,i+=(a^n^r)+(t[7]??0)-155497632|0,i=(i<<16|i>>>16)+a|0,r+=(i^a^n)+(t[10]??0)-1094730640|0,r=(r<<23|r>>>9)+i|0,n+=(r^i^a)+(t[13]??0)+681279174|0,n=(n<<4|n>>>28)+r|0,a+=(n^r^i)+(t[0]??0)-358537222|0,a=(a<<11|a>>>21)+n|0,i+=(a^n^r)+(t[3]??0)-722521979|0,i=(i<<16|i>>>16)+a|0,r+=(i^a^n)+(t[6]??0)+76029189|0,r=(r<<23|r>>>9)+i|0,n+=(r^i^a)+(t[9]??0)-640364487|0,n=(n<<4|n>>>28)+r|0,a+=(n^r^i)+(t[12]??0)-421815835|0,a=(a<<11|a>>>21)+n|0,i+=(a^n^r)+(t[15]??0)+530742520|0,i=(i<<16|i>>>16)+a|0,r+=(i^a^n)+(t[2]??0)-995338651|0,r=(r<<23|r>>>9)+i|0,n+=(i^(r|~a))+(t[0]??0)-198630844|0,n=(n<<6|n>>>26)+r|0,a+=(r^(n|~i))+(t[7]??0)+1126891415|0,a=(a<<10|a>>>22)+n|0,i+=(n^(a|~r))+(t[14]??0)-1416354905|0,i=(i<<15|i>>>17)+a|0,r+=(a^(i|~n))+(t[5]??0)-57434055|0,r=(r<<21|r>>>11)+i|0,n+=(i^(r|~a))+(t[12]??0)+1700485571|0,n=(n<<6|n>>>26)+r|0,a+=(r^(n|~i))+(t[3]??0)-1894986606|0,a=(a<<10|a>>>22)+n|0,i+=(n^(a|~r))+(t[10]??0)-1051523|0,i=(i<<15|i>>>17)+a|0,r+=(a^(i|~n))+(t[1]??0)-2054922799|0,r=(r<<21|r>>>11)+i|0,n+=(i^(r|~a))+(t[8]??0)+1873313359|0,n=(n<<6|n>>>26)+r|0,a+=(r^(n|~i))+(t[15]??0)-30611744|0,a=(a<<10|a>>>22)+n|0,i+=(n^(a|~r))+(t[6]??0)-1560198380|0,i=(i<<15|i>>>17)+a|0,r+=(a^(i|~n))+(t[13]??0)+1309151649|0,r=(r<<21|r>>>11)+i|0,n+=(i^(r|~a))+(t[4]??0)-145523070|0,n=(n<<6|n>>>26)+r|0,a+=(r^(n|~i))+(t[11]??0)-1120210379|0,a=(a<<10|a>>>22)+n|0,i+=(n^(a|~r))+(t[2]??0)+718787259|0,i=(i<<15|i>>>17)+a|0,r+=(a^(i|~n))+(t[9]??0)-343485551|0,r=(r<<21|r>>>11)+i|0,e[0]=n+(e[0]??0)|0,e[1]=r+(e[1]??0)|0,e[2]=i+(e[2]??0)|0,e[3]=a+(e[3]??0)|0}_dataLength=0;_bufferLength=0;_state=new Int32Array(4);_buffer=new ArrayBuffer(68);_buffer8;_buffer32;constructor(){this._buffer8=new Uint8Array(this._buffer,0,68),this._buffer32=new Uint32Array(this._buffer,0,17),this.start()}start(){return this._dataLength=0,this._bufferLength=0,this._state.set(e.stateIdentity),this}appendStr(t){let n=this._buffer8,r=this._buffer32,i=this._bufferLength,a,o;for(o=0;o<t.length;o+=1){if(a=t.charCodeAt(o),a<128)n[i++]=a;else if(a<2048)n[i++]=(a>>>6)+192,n[i++]=a&63|128;else if(a<55296||a>56319)n[i++]=(a>>>12)+224,n[i++]=a>>>6&63|128,n[i++]=a&63|128;else{if(a=(a-55296)*1024+(t.charCodeAt(++o)-56320)+65536,a>1114111)throw Error(`Unicode standard supports code points up to U+10FFFF`);n[i++]=(a>>>18)+240,n[i++]=a>>>12&63|128,n[i++]=a>>>6&63|128,n[i++]=a&63|128}i>=64&&(this._dataLength+=64,e._md5cycle(this._state,r),i-=64,r[0]=r[16]??0)}return this._bufferLength=i,this}appendAsciiStr(t){let n=this._buffer8,r=this._buffer32,i=this._bufferLength,a,o=0;for(;;){for(a=Math.min(t.length-o,64-i);a--;)n[i++]=t.charCodeAt(o++);if(i<64)break;this._dataLength+=64,e._md5cycle(this._state,r),i=0}return this._bufferLength=i,this}appendByteArray(t){let n=this._buffer8,r=this._buffer32,i=this._bufferLength,a,o=0;for(;;){for(a=Math.min(t.length-o,64-i);a--;)n[i++]=t[o++]??0;if(i<64)break;this._dataLength+=64,e._md5cycle(this._state,r),i=0}return this._bufferLength=i,this}getState(){let e=this._state;return{buffer:String.fromCharCode.apply(null,Array.from(this._buffer8)),buflen:this._bufferLength,length:this._dataLength,state:[e[0]??0,e[1]??0,e[2]??0,e[3]??0]}}setState(e){let t=e.buffer,n=e.state,r=this._state,i;for(this._dataLength=e.length,this._bufferLength=e.buflen,r[0]=n[0]??0,r[1]=n[1]??0,r[2]=n[2]??0,r[3]=n[3]??0,i=0;i<t.length;i+=1)this._buffer8[i]=t.charCodeAt(i)}end(t=!1){let n=this._bufferLength,r=this._buffer8,i=this._buffer32,a=(n>>2)+1;this._dataLength+=n;let o=this._dataLength*8;if(r[n]=128,r[n+1]=r[n+2]=r[n+3]=0,i.set(e.buffer32Identity.subarray(a),a),n>55&&(e._md5cycle(this._state,i),i.set(e.buffer32Identity)),o<=4294967295)i[14]=o;else{let e=o.toString(16).match(/(.*?)(.{0,8})$/);if(e===null)return;let t=Number.parseInt(e[2]??``,16),n=Number.parseInt(e[1]??``,16)||0;i[14]=t,i[15]=n}return e._md5cycle(this._state,i),t?this._state:e._hex(this._state)}};if(r.hashStr(`hello`)!==`5d41402abc4b2a76b9719d911017c592`)throw Error(`Md5 self test failed.`);function i(e){let t=!1,n;return function(...r){if(t){if(n)return n;throw Error(`Function called more than once`)}return t=!0,n=e.apply(this,r),n}}const a={make:e=>{let r,i=!1;return n.Effect.gen(function*(){if(i){if(r!==void 0)return r;yield*new t.n({code:`UNKNOWN_ERROR`,status:500,body:`Effect called more than once with undefined result`}).toEffect()}return i=!0,r=yield*e,r})},legacy:i},o={leading:!1,trailing:!0};function s(e,t,n={}){let r={...o,...n},i;return function(...n){r.leading&&!i?(console.log(`leading`),e.apply(this,n),i=setTimeout(()=>{i=void 0},t)):(clearTimeout(i),i=setTimeout(()=>{r.trailing?(e.apply(this,n),r.leading&&setTimeout(()=>{i=void 0},t)):i=void 0},t))}}function c(e,t,{leading:n=!0,trailing:r=!0}={}){return s(e,t,{leading:n,trailing:r})}const l={legacy:c};Object.defineProperty(exports,`a`,{enumerable:!0,get:function(){return r}}),Object.defineProperty(exports,`i`,{enumerable:!0,get:function(){return i}}),Object.defineProperty(exports,`n`,{enumerable:!0,get:function(){return c}}),Object.defineProperty(exports,`r`,{enumerable:!0,get:function(){return a}}),Object.defineProperty(exports,`t`,{enumerable:!0,get:function(){return l}});
@@ -0,0 +1,381 @@
1
+ # Circuit Breaker Pattern
2
+
3
+ The circuit breaker pattern prevents cascade failures in the flow engine by monitoring node execution failures and automatically stopping requests to failing services.
4
+
5
+ ## Overview
6
+
7
+ When external services (like AI APIs, virus scanners, etc.) experience degraded performance or outages, the circuit breaker:
8
+
9
+ 1. **Detects systematic failures** using a sliding window
10
+ 2. **Stops sending requests** to failing services (opens the circuit)
11
+ 3. **Provides graceful degradation** via configurable fallbacks
12
+ 4. **Automatically recovers** when services become healthy (closes the circuit)
13
+
14
+ ## State Machine
15
+
16
+ ```
17
+ failures < threshold timeout expires
18
+ ┌───────┐ ┌───────────┐
19
+ │ │ │ │
20
+ ▼ │ ▼ │
21
+ CLOSED ────┴───────► OPEN ─────────► HALF-OPEN
22
+ ▲ │
23
+ │ │
24
+ └────────────────────────────────────┘
25
+ success in half-open
26
+ ```
27
+
28
+ - **CLOSED**: Normal operation, tracking failures in sliding window
29
+ - **OPEN**: Rejecting all requests immediately, waiting for reset timeout
30
+ - **HALF-OPEN**: Allowing limited test requests to probe service health
31
+
32
+ ## Configuration
33
+
34
+ ### Flow-Level Configuration
35
+
36
+ Configure default circuit breaker settings for all nodes in a flow:
37
+
38
+ ```typescript
39
+ const flow = yield* createFlowWithSchema({
40
+ flowId: "my-flow",
41
+ name: "My Flow",
42
+ nodes: [...],
43
+ edges: [...],
44
+ inputSchema,
45
+ outputSchema,
46
+ circuitBreaker: {
47
+ defaults: {
48
+ enabled: true,
49
+ failureThreshold: 5,
50
+ resetTimeout: 30000, // 30 seconds
51
+ halfOpenRequests: 3,
52
+ windowDuration: 60000, // 1 minute
53
+ fallback: { type: "fail" }
54
+ },
55
+ // Override settings for specific node types (by nodeTypeId)
56
+ nodeTypeOverrides: {
57
+ "describe-image": {
58
+ failureThreshold: 10,
59
+ fallback: { type: "skip", passThrough: true }
60
+ },
61
+ "scan-virus": {
62
+ failureThreshold: 3,
63
+ fallback: { type: "fail" }
64
+ }
65
+ }
66
+ }
67
+ });
68
+ ```
69
+
70
+ ### Node-Level Configuration
71
+
72
+ Configure circuit breaker for individual nodes (overrides flow defaults):
73
+
74
+ ```typescript
75
+ const myNode = yield* createFlowNode({
76
+ id: "my-node",
77
+ name: "My Node",
78
+ description: "Node with circuit breaker",
79
+ type: NodeType.process,
80
+ nodeTypeId: "my-external-service", // Stable ID for circuit breaker state
81
+ inputSchema,
82
+ outputSchema,
83
+ run: ({ data }) => Effect.gen(function* () {
84
+ // Node logic
85
+ return { type: "complete", data: result };
86
+ }),
87
+ circuitBreaker: {
88
+ enabled: true,
89
+ failureThreshold: 5,
90
+ resetTimeout: 30000,
91
+ halfOpenRequests: 3,
92
+ windowDuration: 60000,
93
+ fallback: { type: "fail" }
94
+ }
95
+ });
96
+ ```
97
+
98
+ ## Configuration Options
99
+
100
+ | Option | Type | Default | Description |
101
+ |--------|------|---------|-------------|
102
+ | `enabled` | boolean | `false` | Enable circuit breaker for this node |
103
+ | `failureThreshold` | number | `5` | Number of failures to trip the circuit |
104
+ | `resetTimeout` | number | `30000` | Milliseconds to wait before half-open |
105
+ | `halfOpenRequests` | number | `3` | Successful requests needed to close |
106
+ | `windowDuration` | number | `60000` | Sliding window duration in milliseconds |
107
+ | `fallback` | object | `{ type: "fail" }` | Behavior when circuit is open |
108
+
109
+ ## Built-in Node Defaults
110
+
111
+ The following Uploadista nodes come with sensible circuit breaker defaults pre-configured. Users benefit from circuit breaker protection without any additional configuration.
112
+
113
+ ### AI/External Service Nodes
114
+
115
+ | Node | `nodeTypeId` | Threshold | Timeout | Fallback |
116
+ |------|--------------|-----------|---------|----------|
117
+ | Describe Image | `describe-image` | 5 | 60s | skip + passThrough |
118
+ | Remove Background | `remove-background` | 5 | 60s | skip + passThrough |
119
+ | Convert to Markdown | `convert-to-markdown` | 5 | 60s | skip + passThrough |
120
+ | OCR | `ocr` | 5 | 60s | skip + passThrough |
121
+ | Scan Virus | `scan-virus` | 5 | 60s | **fail** |
122
+
123
+ **Note:** The Scan Virus node uses `fallback: { type: "fail" }` because security checks should never be silently skipped.
124
+
125
+ ### Overriding Defaults
126
+
127
+ You can override the built-in defaults at the flow level using `nodeTypeOverrides`:
128
+
129
+ ```typescript
130
+ const flow = yield* createFlow({
131
+ // ...
132
+ circuitBreaker: {
133
+ nodeTypeOverrides: {
134
+ // Make AI description more tolerant
135
+ "describe-image": {
136
+ failureThreshold: 10,
137
+ resetTimeout: 120000, // 2 minutes
138
+ },
139
+ // Allow virus scan to be skipped in dev environment
140
+ "scan-virus": {
141
+ enabled: process.env.NODE_ENV === "production",
142
+ },
143
+ },
144
+ },
145
+ });
146
+ ```
147
+
148
+ ## Fallback Behaviors
149
+
150
+ ### Fail (Default)
151
+
152
+ Immediately fails with `CIRCUIT_BREAKER_OPEN` error:
153
+
154
+ ```typescript
155
+ fallback: { type: "fail" }
156
+ ```
157
+
158
+ ### Skip with Pass-Through
159
+
160
+ Skips the node and passes input through as output:
161
+
162
+ ```typescript
163
+ fallback: { type: "skip", passThrough: true }
164
+ ```
165
+
166
+ ### Default Value
167
+
168
+ Returns a configured default value:
169
+
170
+ ```typescript
171
+ fallback: { type: "default", value: { status: "skipped" } }
172
+ ```
173
+
174
+ ## Circuit Breaker Scope
175
+
176
+ Circuit breakers are scoped **per node type** using `nodeTypeId`. This means:
177
+
178
+ - All nodes with the same `nodeTypeId` share circuit state
179
+ - If a service is down, all nodes using it will see the open circuit
180
+ - Different node types have independent circuit breakers
181
+
182
+ The `nodeTypeId` is a stable identifier (e.g., `"describe-image"`, `"scan-virus"`) that doesn't change when node names are updated for display purposes.
183
+
184
+ ```typescript
185
+ const myNode = yield* createFlowNode({
186
+ id: "my-unique-id",
187
+ name: "Describe Image", // Display name (can change)
188
+ nodeTypeId: "describe-image", // Stable ID for circuit breaker
189
+ // ...
190
+ });
191
+ ```
192
+
193
+ ## Observability
194
+
195
+ ### Metrics
196
+
197
+ The following metrics are available:
198
+
199
+ | Metric | Type | Description |
200
+ |--------|------|-------------|
201
+ | `circuit_breaker_open_total` | Counter | Times circuits opened |
202
+ | `circuit_breaker_close_total` | Counter | Times circuits closed |
203
+ | `circuit_breaker_rejected_total` | Counter | Requests rejected |
204
+ | `circuit_breaker_half_open_total` | Counter | Times circuits went half-open |
205
+ | `circuit_breaker_state` | Gauge | Current state (0=closed, 1=open, 2=half-open) |
206
+ | `circuit_breaker_failures` | Gauge | Failures in sliding window |
207
+
208
+ ### Tracing
209
+
210
+ Circuit breaker spans include:
211
+
212
+ - `circuit_breaker.node_type_id` - The node type ID
213
+ - `circuit_breaker.state` - Current state
214
+ - `circuit_breaker.failure_count` - Failures in window
215
+ - `circuit_breaker.decision` - allowed/rejected/fallback
216
+
217
+ ## Example: AI Image Processing Flow
218
+
219
+ With built-in defaults, AI nodes automatically have circuit breaker protection:
220
+
221
+ ```typescript
222
+ import { createDescribeImageNode, createRemoveBackgroundNode } from "@uploadista/flow-images-nodes";
223
+
224
+ // These nodes come with circuit breaker defaults pre-configured!
225
+ const describeNode = yield* createDescribeImageNode("describe");
226
+ const removeBackgroundNode = yield* createRemoveBackgroundNode("remove-bg");
227
+
228
+ const flow = yield* createFlowWithSchema({
229
+ flowId: "ai-image-flow",
230
+ name: "AI Image Processing",
231
+ nodes: [inputNode, describeNode, removeBackgroundNode, storageNode],
232
+ edges: [
233
+ { source: "input", target: "describe" },
234
+ { source: "describe", target: "remove-bg" },
235
+ { source: "remove-bg", target: "storage" }
236
+ ],
237
+ inputSchema,
238
+ outputSchema,
239
+ // Optional: Override defaults if needed
240
+ circuitBreaker: {
241
+ nodeTypeOverrides: {
242
+ // Use custom fallback for AI description
243
+ "describe-image": {
244
+ fallback: {
245
+ type: "default",
246
+ value: { description: "Description unavailable" }
247
+ }
248
+ }
249
+ }
250
+ }
251
+ });
252
+ ```
253
+
254
+ ## Enabling Circuit Breakers
255
+
256
+ Circuit breakers require a `CircuitBreakerStoreService` to be provided in the Effect context. Without it, circuit breakers are automatically disabled (requests always pass through).
257
+
258
+ ```typescript
259
+ import {
260
+ kvCircuitBreakerStoreLayer,
261
+ memoryCircuitBreakerStoreLayer,
262
+ } from "@uploadista/core";
263
+
264
+ // For production clusters: Use KV store (Redis, etc.)
265
+ const program = flow.run({ ... }).pipe(
266
+ Effect.provide(kvCircuitBreakerStoreLayer),
267
+ Effect.provide(redisKvStore({ redis: redisClient }))
268
+ );
269
+
270
+ // For single-instance or testing: Use in-memory store
271
+ const testProgram = flow.run({ ... }).pipe(
272
+ Effect.provide(memoryCircuitBreakerStoreLayer)
273
+ );
274
+ ```
275
+
276
+ ## Distributed State (Cluster Deployments)
277
+
278
+ Circuit breakers use a distributed store for state persistence, allowing multiple instances in a cluster to share circuit state.
279
+
280
+ ### Architecture
281
+
282
+ ```
283
+ ┌─────────────────┐ ┌─────────────────┐ ┌─────────────────┐
284
+ │ Instance 1 │ │ Instance 2 │ │ Instance 3 │
285
+ │ │ │ │ │ │
286
+ │ Distributed │ │ Distributed │ │ Distributed │
287
+ │ CircuitBreaker │ │ CircuitBreaker │ │ CircuitBreaker │
288
+ └────────┬────────┘ └────────┬────────┘ └────────┬────────┘
289
+ │ │ │
290
+ └──────────────────────┼──────────────────────┘
291
+
292
+ ┌───────────▼───────────┐
293
+ │ Shared KV Store │
294
+ │ (Redis, etc.) │
295
+ └───────────────────────┘
296
+ ```
297
+
298
+ ### Setup with KV Store
299
+
300
+ ```typescript
301
+ import {
302
+ makeKvCircuitBreakerStore,
303
+ DistributedCircuitBreakerRegistry,
304
+ CircuitBreakerStoreService,
305
+ kvCircuitBreakerStoreLayer,
306
+ } from "@uploadista/core";
307
+
308
+ // Option 1: Create store directly
309
+ const baseKvStore = makeRedisBaseKvStore({ redis: redisClient });
310
+ const cbStore = makeKvCircuitBreakerStore(baseKvStore);
311
+ const registry = new DistributedCircuitBreakerRegistry(cbStore);
312
+
313
+ // Option 2: Use Effect layers
314
+ const program = Effect.gen(function* () {
315
+ const cbStore = yield* CircuitBreakerStoreService;
316
+ // Use the store...
317
+ }).pipe(
318
+ Effect.provide(kvCircuitBreakerStoreLayer),
319
+ Effect.provide(redisKvStore({ redis: redisClient }))
320
+ );
321
+ ```
322
+
323
+ ### Using Distributed Circuit Breakers
324
+
325
+ ```typescript
326
+ const registry = new DistributedCircuitBreakerRegistry(store);
327
+
328
+ const breaker = registry.getOrCreate("describe-image", {
329
+ enabled: true,
330
+ failureThreshold: 5,
331
+ resetTimeout: 30000
332
+ });
333
+
334
+ // Note: All operations are Effect-based for distributed breakers
335
+ const { allowed, state, failureCount } = yield* breaker.allowRequest();
336
+
337
+ if (!allowed) {
338
+ // Handle circuit open with fallback
339
+ const fallback = breaker.getFallback();
340
+ // ...
341
+ }
342
+
343
+ // Record results
344
+ try {
345
+ const result = yield* executeNode();
346
+ yield* breaker.recordSuccess();
347
+ return result;
348
+ } catch (error) {
349
+ yield* breaker.recordFailure(error.message);
350
+ throw error;
351
+ }
352
+ ```
353
+
354
+ ### Store Implementations
355
+
356
+ | Store | Use Case | Atomicity |
357
+ |-------|----------|-----------|
358
+ | `makeMemoryCircuitBreakerStore()` | Single instance, testing | Perfect |
359
+ | `makeKvCircuitBreakerStore(baseKvStore)` | Any KV backend | Eventual consistency |
360
+ | Custom Redis with Lua scripts | High-traffic clusters | Perfect |
361
+
362
+ ### Consistency Trade-offs
363
+
364
+ The KV store adapter uses read-modify-write for increment operations, which may have minor race conditions under high concurrency. This is acceptable because:
365
+
366
+ 1. **Circuit breakers tolerate eventual consistency** - If one instance trips the circuit and another sends a few more requests before syncing, the system is still protected
367
+ 2. **State changes are infrequent** - Only happens when crossing thresholds
368
+ 3. **Window expiry is handled** - Stale failure counts are reset automatically
369
+
370
+ For use cases requiring perfect atomicity, implement a custom store using Redis Lua scripts or database transactions.
371
+
372
+ ## Best Practices
373
+
374
+ 1. **Start Conservative**: Begin with higher thresholds and tune based on production data
375
+ 2. **Different Services, Different Thresholds**: External APIs may need different settings than internal services
376
+ 3. **Use Skip for Non-Critical Nodes**: Enhancement nodes (AI description) can often be skipped
377
+ 4. **Monitor Circuit States**: Watch metrics to understand service health
378
+ 5. **Test Fallback Behavior**: Ensure your fallbacks produce valid outputs for downstream nodes
379
+ 6. **Always Provide CircuitBreakerStoreService**: Circuit breakers are disabled without a store layer
380
+ 7. **Use KV Store in Production**: For cluster deployments, use `kvCircuitBreakerStoreLayer` with Redis or similar
381
+ 8. **Consider Consistency Needs**: Most use cases work fine with eventual consistency