foxts 2.0.1 → 3.0.1

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 (123) hide show
  1. package/dist/cjs/add-array-elements-to-set.js +0 -1
  2. package/dist/cjs/ahocorasick.js +0 -1
  3. package/dist/cjs/append-set-elements-to-array.js +0 -1
  4. package/dist/cjs/async-write-to-stream.js +0 -1
  5. package/dist/cjs/bitwise.js +0 -1
  6. package/dist/cjs/create-fixed-array.js +0 -1
  7. package/dist/cjs/detect-eol.js +0 -1
  8. package/dist/cjs/escape-html.js +0 -1
  9. package/dist/cjs/escape-string-regexp.js +0 -1
  10. package/dist/cjs/fast-string-array-join.js +0 -1
  11. package/dist/cjs/fifo.js +0 -1
  12. package/dist/cjs/fnv1a.js +0 -1
  13. package/dist/cjs/fnv1a52.js +0 -1
  14. package/dist/cjs/guard.js +0 -1
  15. package/dist/cjs/headers-to-object.js +1 -2
  16. package/dist/cjs/identity.js +0 -1
  17. package/dist/cjs/is-probably-ip.js +0 -1
  18. package/dist/cjs/merge-headers.d.ts +3 -3
  19. package/dist/cjs/merge-headers.js +1 -2
  20. package/dist/cjs/noop.js +0 -1
  21. package/dist/cjs/once.js +0 -1
  22. package/dist/cjs/pick-random.js +1 -2
  23. package/dist/cjs/random-int.js +0 -1
  24. package/dist/cjs/repool.js +0 -1
  25. package/dist/cjs/retrie.js +0 -1
  26. package/dist/cjs/serialized-memo.d.ts +5 -1
  27. package/dist/cjs/serialized-memo.js +1 -2
  28. package/dist/cjs/simple-string-hash.js +0 -1
  29. package/dist/cjs/tagged.js +0 -1
  30. package/dist/cjs/text-line-stream.d.ts +0 -2
  31. package/dist/cjs/text-line-stream.js +1 -2
  32. package/dist/cjs/wait.js +0 -1
  33. package/dist/es/add-array-elements-to-set.mjs +0 -1
  34. package/dist/es/ahocorasick.mjs +0 -1
  35. package/dist/es/append-set-elements-to-array.mjs +0 -1
  36. package/dist/es/async-write-to-stream.mjs +0 -1
  37. package/dist/es/bitwise.mjs +0 -1
  38. package/dist/es/create-fixed-array.mjs +0 -1
  39. package/dist/es/detect-eol.mjs +0 -1
  40. package/dist/es/escape-html.mjs +0 -1
  41. package/dist/es/escape-string-regexp.mjs +0 -1
  42. package/dist/es/fast-string-array-join.mjs +0 -1
  43. package/dist/es/fifo.mjs +0 -1
  44. package/dist/es/fnv1a.mjs +0 -1
  45. package/dist/es/fnv1a52.mjs +0 -1
  46. package/dist/es/guard.mjs +0 -1
  47. package/dist/es/headers-to-object.mjs +1 -2
  48. package/dist/es/identity.mjs +0 -1
  49. package/dist/es/is-probably-ip.mjs +0 -1
  50. package/dist/es/merge-headers.d.mts +3 -3
  51. package/dist/es/merge-headers.mjs +1 -2
  52. package/dist/es/noop.mjs +0 -1
  53. package/dist/es/once.mjs +0 -1
  54. package/dist/es/pick-random.mjs +1 -2
  55. package/dist/es/random-int.mjs +0 -1
  56. package/dist/es/repool.mjs +0 -1
  57. package/dist/es/retrie.mjs +0 -1
  58. package/dist/es/serialized-memo.d.mts +5 -1
  59. package/dist/es/serialized-memo.mjs +1 -2
  60. package/dist/es/simple-string-hash.mjs +0 -1
  61. package/dist/es/tagged.mjs +0 -1
  62. package/dist/es/text-line-stream.d.mts +0 -2
  63. package/dist/es/text-line-stream.mjs +1 -2
  64. package/dist/es/wait.mjs +0 -1
  65. package/package.json +2 -3
  66. package/dist/cjs/add-array-elements-to-set.js.map +0 -1
  67. package/dist/cjs/ahocorasick.js.map +0 -1
  68. package/dist/cjs/append-set-elements-to-array.js.map +0 -1
  69. package/dist/cjs/async-write-to-stream.js.map +0 -1
  70. package/dist/cjs/bitwise.js.map +0 -1
  71. package/dist/cjs/create-fixed-array.js.map +0 -1
  72. package/dist/cjs/detect-eol.js.map +0 -1
  73. package/dist/cjs/escape-html.js.map +0 -1
  74. package/dist/cjs/escape-string-regexp.js.map +0 -1
  75. package/dist/cjs/fast-string-array-join.js.map +0 -1
  76. package/dist/cjs/fifo.js.map +0 -1
  77. package/dist/cjs/fnv1a.js.map +0 -1
  78. package/dist/cjs/fnv1a52.js.map +0 -1
  79. package/dist/cjs/guard.js.map +0 -1
  80. package/dist/cjs/headers-to-object.js.map +0 -1
  81. package/dist/cjs/identity.js.map +0 -1
  82. package/dist/cjs/is-probably-ip.js.map +0 -1
  83. package/dist/cjs/merge-headers.js.map +0 -1
  84. package/dist/cjs/noop.js.map +0 -1
  85. package/dist/cjs/once.js.map +0 -1
  86. package/dist/cjs/pick-random.js.map +0 -1
  87. package/dist/cjs/random-int.js.map +0 -1
  88. package/dist/cjs/repool.js.map +0 -1
  89. package/dist/cjs/retrie.js.map +0 -1
  90. package/dist/cjs/serialized-memo.js.map +0 -1
  91. package/dist/cjs/simple-string-hash.js.map +0 -1
  92. package/dist/cjs/tagged.js.map +0 -1
  93. package/dist/cjs/text-line-stream.js.map +0 -1
  94. package/dist/cjs/wait.js.map +0 -1
  95. package/dist/es/add-array-elements-to-set.mjs.map +0 -1
  96. package/dist/es/ahocorasick.mjs.map +0 -1
  97. package/dist/es/append-set-elements-to-array.mjs.map +0 -1
  98. package/dist/es/async-write-to-stream.mjs.map +0 -1
  99. package/dist/es/bitwise.mjs.map +0 -1
  100. package/dist/es/create-fixed-array.mjs.map +0 -1
  101. package/dist/es/detect-eol.mjs.map +0 -1
  102. package/dist/es/escape-html.mjs.map +0 -1
  103. package/dist/es/escape-string-regexp.mjs.map +0 -1
  104. package/dist/es/fast-string-array-join.mjs.map +0 -1
  105. package/dist/es/fifo.mjs.map +0 -1
  106. package/dist/es/fnv1a.mjs.map +0 -1
  107. package/dist/es/fnv1a52.mjs.map +0 -1
  108. package/dist/es/guard.mjs.map +0 -1
  109. package/dist/es/headers-to-object.mjs.map +0 -1
  110. package/dist/es/identity.mjs.map +0 -1
  111. package/dist/es/is-probably-ip.mjs.map +0 -1
  112. package/dist/es/merge-headers.mjs.map +0 -1
  113. package/dist/es/noop.mjs.map +0 -1
  114. package/dist/es/once.mjs.map +0 -1
  115. package/dist/es/pick-random.mjs.map +0 -1
  116. package/dist/es/random-int.mjs.map +0 -1
  117. package/dist/es/repool.mjs.map +0 -1
  118. package/dist/es/retrie.mjs.map +0 -1
  119. package/dist/es/serialized-memo.mjs.map +0 -1
  120. package/dist/es/simple-string-hash.mjs.map +0 -1
  121. package/dist/es/tagged.mjs.map +0 -1
  122. package/dist/es/text-line-stream.mjs.map +0 -1
  123. package/dist/es/wait.mjs.map +0 -1
@@ -1,2 +1 @@
1
1
  Object.defineProperty(exports,"__esModule",{value:!0});var e=require("./identity.js");exports.addArrayElementsToSet=function(r,t,d=e.identity){return t.forEach(e=>r.add(d(e))),r};
2
- //# sourceMappingURL=add-array-elements-to-set.js.map
@@ -1,2 +1 @@
1
1
  Object.defineProperty(exports,"__esModule",{value:!0});class e extends Map{constructor(e,t){super(),this.wordEnd=e,this.fail=t}}exports.createAhoCorasick=function(t){let r=new e(!1,void 0);t.forEach(t=>{let l=r;for(let r=0,o=t.length;r<o;r++){let o=t[r];if(l.has(o))l=l.get(o);else{let t=new e(!1,void 0);l.set(o,t),l=t}}l!==r&&(l.wordEnd=!0)});let l=[r];for(;l.length;){let e=l.pop();e.forEach((t,o)=>{let s=e.fail;for(;s&&!s.has(o);)s=s.fail;t.fail=s?s.get(o):r,l.push(t)})}return e=>{let t=r;for(let l=0,o=e.length;l<o;l++){let o=e[l];for(;t&&!t.has(o);)t=t.fail;if((t=t?t.get(o):r).wordEnd)return!0}return!1}};
2
- //# sourceMappingURL=ahocorasick.js.map
@@ -1,2 +1 @@
1
1
  Object.defineProperty(exports,"__esModule",{value:!0});var e=require("./identity.js");function r(e,r,t){let n;let u=r.values();for(;!(n=u.next()).done;)e.push(t(n.value));return e}exports.appendSetElementsToArray=function(t,n,u=e.identity){if(!Array.isArray(n))return r(t,n,u);for(let e=0,i=n.length;e<i;e++)r(t,n[e],u);return t};
2
- //# sourceMappingURL=append-set-elements-to-array.js.map
@@ -1,2 +1 @@
1
1
  Object.defineProperty(exports,"__esModule",{value:!0});var e=require("node:events");exports.asyncWriteToStream=function(r,n){return r.write(n)?null:e.once(r,"drain")};
2
- //# sourceMappingURL=async-write-to-stream.js.map
@@ -1,2 +1 @@
1
1
  Object.defineProperty(exports,"__esModule",{value:!0});const e=e=>e>>16&65535,t=e=>65535&e,r=e=>e>>20&1023,s=e=>e>>10&1023,o=e=>1023&e;exports.bitCount=function(e){return e-=e>>1&0x55555555,((e=(0x33333333&e)+(e>>2&0x33333333))+(e>>4)&0xf0f0f0f)*0x1010101>>24},exports.deleteBit=(e,t)=>e&~t,exports.getBit=(e,t)=>!!(e&t),exports.missingBit=(e,t)=>!(e&t),exports.packThreeBits=(e,t,r)=>e<<20|t<<10|r,exports.packTwoBits=(e,t)=>e<<16|t,exports.setBit=(e,t)=>e|t,exports.unpackThreeBits=function(e,t=Array.from([,,,].keys())){return t[0]=r(e),t[1]=s(e),t[2]=o(e),t},exports.unpackThreeBitsFirst=r,exports.unpackThreeBitsSecond=s,exports.unpackThreeBitsThird=o,exports.unpackTwoBits=function(r,s=Array.from([,,].keys())){return s[0]=e(r),s[1]=t(r),s},exports.unpackTwoBitsFirst=e,exports.unpackTwoBitsSecond=t;
2
- //# sourceMappingURL=bitwise.js.map
@@ -1,2 +1 @@
1
1
  Object.defineProperty(exports,"__esModule",{value:!0});const e=new Map;function t(e){return Array.from(Array(e).keys())}function r(r){if(e.has(r))return e.get(r);let n=t(r);return e.set(r,n),n}const n=new Map;function o(e){let r,o;return n.has(e)&&(o=(r=n.get(e)).deref()),o||(r=new WeakRef(o=t(e)),n.set(e,r)),o}const a="function"==typeof WeakRef?o:r,s=a(0);exports.EMPTY_ARRAY=s,exports.createFixedArray=a,exports.createFixedArrayWithGC=o,exports.createFixedArrayWithoutGC=r;
2
- //# sourceMappingURL=create-fixed-array.js.map
@@ -1,2 +1 @@
1
1
  Object.defineProperty(exports,"__esModule",{value:!0}),exports.detectEol=function(e){for(let r=0,t=e.length;r<t;r++){let t=e[r];if("\n"===t)break;if("\r"===t&&"\n"===e[r+1])return"\r\n"}return"\n"};
2
- //# sourceMappingURL=detect-eol.js.map
@@ -1,2 +1 @@
1
1
  Object.defineProperty(exports,"__esModule",{value:!0});const e=/["&'<>]/;exports.escapeHTML=function(t){let a=e.exec(t);if(null===a)return t;let c="",r="",s=a.index,l=0;for(let e=t.length;s<e;s++){switch(t.charCodeAt(s)){case 34:c="&quot;";break;case 38:c="&amp;";break;case 39:c="&#39;";break;case 60:c="&lt;";break;case 62:c="&gt;";break;default:continue}l!==s&&(r+=t.slice(l,s)),l=s+1,r+=c}return l===s?r:r+t.slice(l,s)};
2
- //# sourceMappingURL=escape-html.js.map
@@ -1,2 +1 @@
1
1
  Object.defineProperty(exports,"__esModule",{value:!0});const e=/[$()*+.?[\\\]^{|}-]/;exports.escapeStringRegexp=function(a){let r=e.exec(a);if(null===r)return a;let c="",s="",t=r.index,b=0;for(let e=a.length;t<e;t++){switch(a.charCodeAt(t)){case 92:c="\\\\";break;case 94:c="\\^";break;case 36:c="\\$";break;case 46:c="\\.";break;case 42:c="\\*";break;case 43:c="\\+";break;case 63:c="\\?";break;case 40:c="\\(";break;case 41:c="\\)";break;case 91:c="\\[";break;case 93:c="\\]";break;case 123:c="\\{";break;case 125:c="\\}";break;case 124:c="\\|";break;case 45:c="\\x2d";break;default:continue}b!==t&&(s+=a.slice(b,t)),b=t+1,s+=c}return b===t?s:s+a.slice(b,t)};
2
- //# sourceMappingURL=escape-string-regexp.js.map
@@ -1,2 +1 @@
1
1
  Object.defineProperty(exports,"__esModule",{value:!0}),exports.fastStringArrayJoin=function(e,t){let r=e.length;if(0===r)return"";let n=e[0];for(let o=1;o<r;o++)n+=t,n+=e[o];return n};
2
- //# sourceMappingURL=fast-string-array-join.js.map
package/dist/cjs/fifo.js CHANGED
@@ -1,2 +1 @@
1
1
  var e;Object.defineProperty(exports,"__esModule",{value:!0}),e=Symbol.iterator,exports.FIFO=class{constructor(){this.head=null,this.tail=null,this.$size=0,this.push=this.enqueue,this.shift=this.dequeue,this.clear()}enqueue(e){let t=[e,null];this.head?this.tail[1]=t:this.head=t,this.tail=t,this.$size++}dequeue(){let e=this.head;if(e)return this.head=this.head[1],this.$size--,e[0]}peek(){return this.head?.[0]}clear(){this.head=null,this.tail=null,this.$size=0}get size(){return this.$size}get length(){return this.$size}*[e](){let e=this.head;for(;e;)yield e[0],e=e[1]}};
2
- //# sourceMappingURL=fifo.js.map
package/dist/cjs/fnv1a.js CHANGED
@@ -1,2 +1 @@
1
1
  Object.defineProperty(exports,"__esModule",{value:!0}),exports.fnv1a=function(e){let t=0x811c9dc5;for(let r=0,o=e.length;r<o;r++)t^=e.charCodeAt(r),t+=(t<<1)+(t<<4)+(t<<7)+(t<<8)+(t<<24);return t>>>0};
2
- //# sourceMappingURL=fnv1a.js.map
@@ -1,2 +1 @@
1
1
  Object.defineProperty(exports,"__esModule",{value:!0}),exports.fnv1a52=function(e){let t=e.length,r=0,o=0,n=8997,f=0,l=33826,u=0,x=40164,a=0,c=52210;for(;r<t;)n^=e.charCodeAt(r++),o=435*n,f=435*l,u=435*x,a=435*c,u+=n<<8,a+=l<<8,f+=o>>>16,n=65535&o,u+=f>>>16,l=65535&f,c=a+(u>>>16)&65535,x=65535&u;return(15&c)*0x1000000000000+0x100000000*x+65536*l+(n^c>>4)};
2
- //# sourceMappingURL=fnv1a52.js.map
package/dist/cjs/guard.js CHANGED
@@ -1,2 +1 @@
1
1
  function e(e){switch(e){case null:return e=>null!==e;case void 0:return e=>void 0!==e;case!1:return e=>!1!==e;case"nullish":return e=>null!=e;case"falsy":return e=>!!e;default:s(e,"argument")}}function r(e){switch(e){case null:return e=>null===e;case void 0:return e=>void 0===e;case!1:return e=>!1===e;case"nullish":return e=>null==e;case"falsy":return e=>!e;case"truthy":return e=>!!e;default:s(e,"argument")}}Object.defineProperty(exports,"__esModule",{value:!0});const n=r("truthy"),t=r("falsy"),u=e(null),l=e("nullish");function s(e,r="value"){throw TypeError(`Unexpected ${r}: ${e} as ${JSON.stringify(typeof e)}, should be "never"`)}exports.invariant=function(e,r='[foxts/invariant] "value" is null or undefined'){if(null==e)throw TypeError(r)},exports.is=r,exports.isFalsy=t,exports.isNonNull=u,exports.isNonNullish=l,exports.isTruthy=n,exports.never=s,exports.not=e,exports.nullthrow=function(e,r='[foxts/invariant] "value" is null or undefined'){if(null==e)throw TypeError(r);return e};
2
- //# sourceMappingURL=guard.js.map
@@ -1,2 +1 @@
1
- Object.defineProperty(exports,"__esModule",{value:!0}),exports.headersToObject=function(e){let r={};return new Headers(e).forEach((e,t)=>{r[t]=e}),r};
2
- //# sourceMappingURL=headers-to-object.js.map
1
+ Object.defineProperty(exports,"__esModule",{value:!0}),exports.headersToObject=function(e){let r={};return null==e||new Headers(e).forEach((e,t)=>{r[t]=e}),r};
@@ -1,2 +1 @@
1
1
  Object.defineProperty(exports,"__esModule",{value:!0}),exports.identity=function(e){return e};
2
- //# sourceMappingURL=identity.js.map
@@ -1,2 +1 @@
1
1
  Object.defineProperty(exports,"__esModule",{value:!0}),exports.isProbablyIpv4=function(e){if(e.length<7||e.length>15)return!1;let t=0;for(let r=0;r<e.length;r+=1){let l=e.charCodeAt(r);if(46===l)t+=1;else if(l<48||l>57)return!1}return 3===t&&46!==e.charCodeAt(0)&&46!==e.charCodeAt(e.length-1)},exports.isProbablyIpv6=function(e){if(e.length<3)return!1;let t=+("["===e[0]),r=e.length;if("]"===e[r-1]&&(r-=1),r-t>39)return!1;let l=!1;for(;t<r;t+=1){let r=e.charCodeAt(t);if(58===r)l=!0;else if((r<48||r>57)&&(r<97||r>102)&&(r<65||r>90))return!1}return l};
2
- //# sourceMappingURL=is-probably-ip.js.map
@@ -1,6 +1,6 @@
1
- type HeadersInitLike = string[][] | Record<string, string | readonly string[]> | Headers;
2
- type IncomingHttpHeadersLike = Record<string, string | string[] | undefined>;
3
- type OutgoingHttpHeadersLike = Record<string, number | string | string[] | undefined>;
1
+ type HeadersInitLike = string[][] | Record<string, string | readonly string[]> | Headers | null | undefined;
2
+ type IncomingHttpHeadersLike = Record<string, string | string[] | undefined> | undefined | null;
3
+ type OutgoingHttpHeadersLike = Record<string, number | string | string[] | undefined> | undefined | null;
4
4
  declare function mergeHeaders(dest: HeadersInitLike, source: HeadersInitLike): Headers;
5
5
  declare function mergeNodeHttpHeaders(dest: IncomingHttpHeadersLike, source: IncomingHttpHeadersLike): IncomingHttpHeadersLike;
6
6
  declare function mergeNodeHttpHeaders(dest: OutgoingHttpHeadersLike, source: IncomingHttpHeadersLike | OutgoingHttpHeadersLike): OutgoingHttpHeadersLike;
@@ -1,2 +1 @@
1
- Object.defineProperty(exports,"__esModule",{value:!0}),exports.mergeHeaders=function(e,r){let t=new Headers(e);return new Headers(r).forEach((e,r)=>{t.set(r,e)}),t},exports.mergeNodeHttpHeaders=function(e,r){return Object.assign({},e,r)};
2
- //# sourceMappingURL=merge-headers.js.map
1
+ Object.defineProperty(exports,"__esModule",{value:!0}),exports.mergeHeaders=function(e,r){if(null==e)return null==r?new Headers:new Headers(r);if(null==r)return new Headers(e);let n=new Headers(e);return new Headers(r).forEach((e,r)=>{n.set(r,e)}),n},exports.mergeNodeHttpHeaders=function(e,r){return null==e?null==r?{}:r:null==r?e:Object.assign({},e,r)};
package/dist/cjs/noop.js CHANGED
@@ -1,2 +1 @@
1
1
  Object.defineProperty(exports,"__esModule",{value:!0});const e=()=>{},o=Promise.resolve(),r=new Promise(e);exports.asyncNeverFn=()=>r,exports.asyncNoop=()=>o,exports.falseFn=()=>!1,exports.noop=e,exports.throwFn=()=>{throw Error()},exports.trueFn=()=>!0;
2
- //# sourceMappingURL=noop.js.map
package/dist/cjs/once.js CHANGED
@@ -1,2 +1 @@
1
1
  Object.defineProperty(exports,"__esModule",{value:!0}),exports.once=function(e){let t,o=!1;return()=>(o||(o=!0,t=e()),t)};
2
- //# sourceMappingURL=once.js.map
@@ -1,2 +1 @@
1
- Object.defineProperty(exports,"__esModule",{value:!0});var e=require("node:crypto");function t(e){return function(t,n=1){if(n>t.length)throw TypeError("Count must be lower or the same as the number of picks");let r=t.slice(),o=[];for(;n--;)1===r.length?o.push(r[0]):o.push(r.splice(e(0,r.length-1),1)[0]);return o}}const n=t(e.randomInt);function r(e){return function(t){return 1===t.length?t[0]:t[e(0,t.length-1)]}}const o=r(e.randomInt);exports.createPickOne=r,exports.createPickRandom=t,exports.pickOne=o,exports.pickRandom=n;
2
- //# sourceMappingURL=pick-random.js.map
1
+ Object.defineProperty(exports,"__esModule",{value:!0});var e=require("./random-int.js");function t(e){return function(t,n=1){if(n>t.length)throw TypeError("Count must be lower or the same as the number of picks");let r=t.slice(),o=[];for(;n--;)1===r.length?o.push(r[0]):o.push(r.splice(e(0,r.length-1),1)[0]);return o}}const n=t(e.randomInt);function r(e){return function(t){return 1===t.length?t[0]:t[e(0,t.length-1)]}}const o=r(e.randomInt);exports.createPickOne=r,exports.createPickRandom=t,exports.pickOne=o,exports.pickRandom=n;
@@ -1,2 +1 @@
1
1
  function e(e){return(t,o)=>Math.floor(e()*(o-t+1))+t}Object.defineProperty(exports,"__esModule",{value:!0});const t=e(Math.random);exports.createRandomInt=e,exports.randomInt=t;
2
- //# sourceMappingURL=random-int.js.map
@@ -1,2 +1 @@
1
1
  Object.defineProperty(exports,"__esModule",{value:!0}),exports.Repool=class{constructor(e){this.createObject=e;let t=e();this.tail=t,this.head=t}get(){let e=this.head;if(e.next)this.head=e.next;else{let e=this.createObject();this.tail=e,this.head=e}return e.next=null,e}release(e){this.tail.next=e,this.tail=e}};
2
- //# sourceMappingURL=repool.js.map
@@ -1,2 +1 @@
1
1
  Object.defineProperty(exports,"__esModule",{value:!0});var e=require("./noop.js");const t=new Set([".","?","*","+","^","$","|","(",")","{","}","[","]","\\"]);function n(e,r=!1){let l={},o=(e,t)=>{let n;let r=l;for(let l=0,o=e.length;l<o;++l)(n=e.charAt(l))in r||(r[n]=t?{"":""}:{}),r=r[n];r[""]=""};for(let t=0,n=e.length;t<n;++t)o(e[t],r);let i=()=>(function e(n){let r,l,o=!1,i=!1,u=[],s=[];for(let r in n){if(!r){o=!0;continue}((l=e(n[r]))?u:s).push(("-"===r?"\\x2d":t.has(r)?"\\"+r:r)+l)}return o&&null==l?"":(i=!u.length,s.length&&u.push(s[1]?"["+s.join("")+"]":s[0]),r=u[1]?"(?:"+u.join("|")+")":u[0],o&&(r=i?r+"?":"(?:"+r+")?"),r||"")})(l);return{tree:l,add:o,toString:i,toRe:()=>new RegExp((r?"^":"")+i())}}exports.createRetrieKeywordFilter=function(t,r=!1){if(0===t.length)return e.falseFn;let l=n(t,r).toRe();return l.test.bind(l)},exports.retrie=n;
2
- //# sourceMappingURL=retrie.js.map
@@ -27,6 +27,10 @@ interface CreateMemoizeOptions {
27
27
  humanReadableName: string;
28
28
  isUseCachedIfFail: boolean;
29
29
  }) => void;
30
+ /** recommendation: import('hash-wasm').xxhash64 */
31
+ keyHasher?: (key: string) => Promise<string> | string;
32
+ /** recommendation: import('devalue').stringify */
33
+ argHasher: (args: any[]) => Promise<string> | string;
30
34
  }
31
35
  type SerializableValue = number | string | boolean | bigint | Date | RegExp | Set<SerializableValue> | SerializableValue[] | null | undefined | Map<SerializableValue, SerializableValue> | SerializableObject | /** TypedArray */ Int8Array | Uint8Array | Uint8ClampedArray | Int16Array | Uint16Array | Int32Array | Uint32Array | Float32Array | Float64Array | BigInt64Array | BigUint64Array | ArrayBuffer;
32
36
  interface SerializableObject {
@@ -50,6 +54,6 @@ type MemoizeOptions<T> = T extends string ? MemoizeBaseOptions : MemoizeOptionsW
50
54
  * Unlike common memoize function out there, this serialize the parameters and returned value
51
55
  * for easy storing with file system, SQLite, Redis, etc.
52
56
  */
53
- declare function createMemoize(storage: MemoizeStorageProvider, { onlyUseCachedIfFail, resetTtlOnHit, defaultTtl, onCacheUpdate, onCacheMiss, onCacheHit }?: CreateMemoizeOptions): <Args extends SerializableValue[], R>(fn: (...args: Args) => R | Promise<R>, opt?: MemoizeOptions<R>) => (...args: Args) => Promise<R>;
57
+ declare function createMemoize(storage: MemoizeStorageProvider, { onlyUseCachedIfFail, resetTtlOnHit, defaultTtl, onCacheUpdate, onCacheMiss, onCacheHit, keyHasher, argHasher }: CreateMemoizeOptions): <Args extends SerializableValue[], R>(fn: (...args: Args) => R | Promise<R>, opt?: MemoizeOptions<R>) => (...args: Args) => Promise<R>;
54
58
 
55
59
  export { type CreateMemoizeOptions, type MemoizeOptions, type MemoizeStorageProvider, type SerializableValue, createMemoize };
@@ -1,2 +1 @@
1
- Object.defineProperty(exports,"__esModule",{value:!0});var e,t=require("./fast-string-array-join.js"),A=require("./identity.js"),r=require("./noop.js");function n(e,t,A,r){return new(A||(A=Promise))(function(t,n){function i(e){try{o(r.next(e))}catch(e){n(e)}}function a(e){try{o(r.throw(e))}catch(e){n(e)}}function o(e){var r;e.done?t(e.value):((r=e.value)instanceof A?r:new A(function(e){e(r)})).then(i,a)}o((r=r.apply(e,[])).next())})}class i{constructor(){this.mutex=Promise.resolve()}lock(){let e=()=>{};return this.mutex=this.mutex.then(()=>new Promise(e)),new Promise(t=>{e=t})}dispatch(e){return n(this,void 0,void 0,function*(){let t=yield this.lock();try{return yield Promise.resolve(e())}finally{t()}})}}const a="undefined"!=typeof globalThis?globalThis:"undefined"!=typeof self?self:"undefined"!=typeof window?window:global,o=null!==(e=a.Buffer)&&void 0!==e?e:null,l=a.TextEncoder?new a.TextEncoder:null;function f(e,t){return(15&e)+(e>>6|e>>3&8)<<4|(15&t)+(t>>6|t>>3&8)}function s(e,t,A){let r=0;for(let n=0;n<A;n++){let A=t[n]>>>4;e[r++]=A>9?A+87:A+48,A=15&t[n],e[r++]=A>9?A+87:A+48}return String.fromCharCode.apply(null,e)}const u=null!==o?e=>{if("string"==typeof e){let t=o.from(e,"utf8");return new Uint8Array(t.buffer,t.byteOffset,t.length)}if(o.isBuffer(e))return new Uint8Array(e.buffer,e.byteOffset,e.length);if(ArrayBuffer.isView(e))return new Uint8Array(e.buffer,e.byteOffset,e.byteLength);throw Error("Invalid data type!")}:e=>{if("string"==typeof e)return l.encode(e);if(ArrayBuffer.isView(e))return new Uint8Array(e.buffer,e.byteOffset,e.byteLength);throw Error("Invalid data type!")},Q="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/",h=new Uint8Array(256);for(let e=0;e<Q.length;e++)h[Q.charCodeAt(e)]=e;const C=new i,c=new Map;new i,new i,new i,new i,new i,new i,new i,new i,new i,new i,new i,new i,new i,new i,new i,new i;var g={name:"xxhash64",data:"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",hash:"177fbfa3"};const I=new i;let B=null;const w=new Uint8Array(8);function y(e){return!Number.isInteger(e)||e<0||e>0xffffffff?Error("Seed must be given as two valid 32-bit long unsigned integers (lo + high)."):null}function E(e,t,A){let r=new DataView(e);r.setUint32(0,t,!0),r.setUint32(4,A,!0)}function b(e,t=0,A=0){if(y(t))return Promise.reject(y(t));if(y(A))return Promise.reject(y(A));if(null===B)return(function(e,t,A){return n(this,void 0,void 0,function*(){let A=yield e.lock(),r=yield function(e,t){return n(this,void 0,void 0,function*(){let A=null,r=null,i=!1;if("undefined"==typeof WebAssembly)throw Error("WebAssembly is not supported in this environment!");let a=()=>new DataView(A.exports.memory.buffer).getUint32(A.exports.STATE_SIZE,!0),o=C.dispatch(()=>n(this,void 0,void 0,function*(){if(!c.has(e.name)){let t=function(e){let t=function(e){let t=Math.floor(.75*e.length),A=e.length;return"="===e[A-1]&&(t-=1,"="===e[A-2]&&(t-=1)),t}(e),A=e.length,r=new Uint8Array(t),n=0;for(let t=0;t<A;t+=4){let A=h[e.charCodeAt(t)],i=h[e.charCodeAt(t+1)],a=h[e.charCodeAt(t+2)],o=h[e.charCodeAt(t+3)];r[n]=A<<2|i>>4,r[n+=1]=(15&i)<<4|a>>2,r[n+=1]=(3&a)<<6|63&o,n+=1}return r}(e.data),A=WebAssembly.compile(t);c.set(e.name,A)}let t=yield c.get(e.name);A=yield WebAssembly.instantiate(t,{})})),l=(e=null)=>{i=!0,A.exports.Hash_Init(e)},Q=e=>{let t=0;for(;t<e.length;){let n=e.subarray(t,t+16384);t+=n.length,r.set(n),A.exports.Hash_Update(n.length)}},g=e=>{if(!i)throw Error("update() called before init()");Q(u(e))},I=new Uint8Array(16),B=(e,n=null)=>{if(!i)throw Error("digest() called before init()");return(i=!1,A.exports.Hash_Final(n),"binary"===e)?r.slice(0,t):s(I,r,t)},w=e=>"string"==typeof e?e.length<4096:e.byteLength<16384,y=w;switch(e.name){case"argon2":case"scrypt":y=()=>!0;break;case"blake2b":case"blake2s":y=(e,t)=>t<=512&&w(e);break;case"blake3":y=(e,t)=>0===t&&w(e);break;case"xxhash64":case"xxhash3":case"xxhash128":case"crc64":y=()=>!1}return yield n(this,void 0,void 0,function*(){A||(yield o);let e=A.exports.Hash_GetBuffer();r=new Uint8Array(A.exports.memory.buffer,e,16384)}),{getMemory:()=>r,writeMemory:(e,t=0)=>{r.set(e,t)},getExports:()=>A.exports,setMemorySize:e=>{A.exports.Hash_SetMemorySize(e);let t=A.exports.Hash_GetBuffer();r=new Uint8Array(A.exports.memory.buffer,t,e)},init:l,update:g,digest:B,save:()=>{if(!i)throw Error("save() can only be called after init() and before digest()");let t=A.exports.Hash_GetState(),r=a(),n=new Uint8Array(A.exports.memory.buffer,t,r),o=new Uint8Array(4+r);return function(e,t){let A=t.length>>1;for(let r=0;r<A;r++){let A=r<<1;e[r]=f(t.charCodeAt(A),t.charCodeAt(A+1))}}(o,e.hash),o.set(n,4),o},load:t=>{if(!(t instanceof Uint8Array))throw Error("load() expects an Uint8Array generated by save()");let r=A.exports.Hash_GetState(),n=a(),o=4+n,l=A.exports.memory.buffer;if(t.length!==o)throw Error(`Bad state length (expected ${o} bytes, got ${t.length})`);if(!function(e,t){if(e.length!==2*t.length)return!1;for(let A=0;A<t.length;A++){let r=A<<1;if(t[A]!==f(e.charCodeAt(r),e.charCodeAt(r+1)))return!1}return!0}(e.hash,t.subarray(0,4)))throw Error("This state was written by an incompatible hash implementation");let s=t.subarray(4);new Uint8Array(l,r,n).set(s),i=!0},calculate:(e,n=null,i=null)=>{if(!y(e,n))return l(n),g(e),B("hex",i);let a=u(e);return r.set(a),A.exports.Hash_Calculate(a.length,n,i),s(I,r,t)},hashLength:t}})}(t,8);return A(),r})})(I,g,0).then(r=>(B=r,E(w.buffer,t,A),B.writeMemory(w),B.calculate(e)));try{E(w.buffer,t,A),B.writeMemory(w);let r=B.calculate(e);return Promise.resolve(r)}catch(e){return Promise.reject(e)}}new i,new i,new i,new i,new i;class d extends Error{constructor(e,t){super(e),this.name="DevalueError",this.path=t.join("")}}function p(e){return Object(e)!==e}const m=Object.getOwnPropertyNames(Object.prototype).sort().join("\0");function k(e){let t="",A=0,r=e.length;for(let n=0;n<r;n+=1){let r=function(e){switch(e){case'"':return'\\"';case"<":return"\\u003C";case"\\":return"\\\\";case"\n":return"\\n";case"\r":return"\\r";case" ":return"\\t";case"\b":return"\\b";case"\f":return"\\f";case"\u2028":return"\\u2028";case"\u2029":return"\\u2029";default:return e<" "?`\\u${e.charCodeAt(0).toString(16).padStart(4,"0")}`:""}}(e[n]);r&&(t+=e.slice(A,n)+r,A=n+1)}return`"${0===A?e:t+e.slice(A)}"`}const v=/^[a-zA-Z_$][a-zA-Z_$0-9]*$/;function U(e){return v.test(e)?"."+e:"["+JSON.stringify(e)+"]"}function F(e){let t=new DataView(e),A="";for(let r=0;r<e.byteLength;r++)A+=String.fromCharCode(t.getUint8(r));return function(e){let t="";for(let A=0;A<e.length;A+=3){let r=[void 0,void 0,void 0,void 0];r[0]=e.charCodeAt(A)>>2,r[1]=(3&e.charCodeAt(A))<<4,e.length>A+1&&(r[1]|=e.charCodeAt(A+1)>>4,r[2]=(15&e.charCodeAt(A+1))<<2),e.length>A+2&&(r[2]|=e.charCodeAt(A+2)>>6,r[3]=63&e.charCodeAt(A+2));for(let e=0;e<r.length;e++)void 0===r[e]?t+="=":t+="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/"[r[e]]}return t}(A)}function J(e){let t=typeof e;return"string"===t?k(e):e instanceof String?k(e.toString()):void 0===e?"-1":0===e&&1/e<0?"-6":"bigint"===t?`["BigInt","${e}"]`:String(e)}exports.createMemoize=function(e,{onlyUseCachedIfFail:n=!1,resetTtlOnHit:i=!1,defaultTtl:a=6048e5,onCacheUpdate:o=r.noop,onCacheMiss:l=r.noop,onCacheHit:f=r.noop}={}){return function(r,s){if(s?.temporaryBypass)return(...e)=>Promise.resolve(r(...e));let u=s&&"serializer"in s?s.serializer:A.identity,Q=s&&"deserializer"in s?s.deserializer:A.identity,h=s?.ttl??a,C=r.toString(),c=b(C);return async function(...A){let a=t.fastStringArrayJoin(await Promise.all([c,b(function(e,t){let A=[],r=new Map,n=[],i=[],a=0,o=function e(t){if("function"==typeof t)throw new d("Cannot stringify a function",i);if(r.has(t))return r.get(t);if(void 0===t)return -1;if(Number.isNaN(t))return -3;if(t===1/0)return -4;if(t===-1/0)return -5;if(0===t&&1/t<0)return -6;let o=a++;for(let{key:i,fn:a}of(r.set(t,o),n)){let r=a(t);if(r)return A[o]=`["${i}",${e(r)}]`,o}let l="";if(p(t))l=J(t);else{let A=Object.prototype.toString.call(t).slice(8,-1);switch(A){case"Number":case"String":case"Boolean":l=`["Object",${J(t)}]`;break;case"BigInt":l=`["BigInt",${t}]`;break;case"Date":let r=!isNaN(t.getDate());l=`["Date","${r?t.toISOString():""}"]`;break;case"RegExp":let{source:n,flags:a}=t;l=a?`["RegExp",${k(n)},"${a}"]`:`["RegExp",${k(n)}]`;break;case"Array":l="[";for(let A=0;A<t.length;A+=1)A>0&&(l+=","),A in t?(i.push(`[${A}]`),l+=e(t[A]),i.pop()):l+=-2;l+="]";break;case"Set":for(let A of(l='["Set"',t))l+=`,${e(A)}`;l+="]";break;case"Map":for(let[A,r]of(l='["Map"',t))i.push(`.get(${p(A)?J(A):"..."})`),l+=`,${e(A)},${e(r)}`,i.pop();l+="]";break;case"Int8Array":case"Uint8Array":case"Uint8ClampedArray":case"Int16Array":case"Uint16Array":case"Int32Array":case"Uint32Array":case"Float32Array":case"Float64Array":case"BigInt64Array":case"BigUint64Array":l='["'+A+'","'+F(t.buffer)+'"]';break;case"ArrayBuffer":{let e=F(t);l=`["ArrayBuffer","${e}"]`;break}default:if(!function(e){let t=Object.getPrototypeOf(e);return t===Object.prototype||null===t||Object.getOwnPropertyNames(t).sort().join("\0")===m}(t))throw new d("Cannot stringify arbitrary non-POJOs",i);if(Object.getOwnPropertySymbols(t).filter(e=>Object.getOwnPropertyDescriptor(t,e).enumerable).length>0)throw new d("Cannot stringify POJOs with symbolic keys",i);if(null===Object.getPrototypeOf(t)){for(let A in l='["null"',t)i.push(U(A)),l+=`,${k(A)},${e(t[A])}`,i.pop();l+="]"}else{l="{";let A=!1;for(let r in t)A&&(l+=","),A=!0,i.push(U(r)),l+=`${k(r)}:${e(t[r])}`,i.pop();l+="}"}}}return A[o]=l,o}(e);return o<0?`${o}`:`[${A.join(",")}]`}(A))]),"|"),s=r.name||C||a,g=e.get(a);if(g&&"object"==typeof g&&"then"in g&&(g=await g),n)try{let t=await r(...A);o(a,{humanReadableName:s,isUseCachedIfFail:!0});let n=e.set(a,u(t),h);return n&&"then"in n&&await n,t}catch(t){if(null==g)throw l(a,{humanReadableName:s,isUseCachedIfFail:!0}),t;if(i){let t=e.updateTtl?.(a,h);t&&"then"in t&&await t}return f(a,{humanReadableName:s,isUseCachedIfFail:!0}),Q(g)}else{if(null==g){l(a,{humanReadableName:s,isUseCachedIfFail:!1});let t=await r(...A),n=e.set(a,u(t),h);return n&&"then"in n&&await n,t}if(f(a,{humanReadableName:s,isUseCachedIfFail:!1}),i){let t=e.updateTtl?.(a,h);t&&"then"in t&&await t}return Q(g)}}}};
2
- //# sourceMappingURL=serialized-memo.js.map
1
+ Object.defineProperty(exports,"__esModule",{value:!0});var e=require("./fast-string-array-join.js"),a=require("./identity.js"),t=require("./noop.js");exports.createMemoize=function(i,{onlyUseCachedIfFail:n=!1,resetTtlOnHit:r=!1,defaultTtl:l=6048e5,onCacheUpdate:s=t.noop,onCacheMiss:o=t.noop,onCacheHit:u=t.noop,keyHasher:d=a.identity,argHasher:f}){return function(t,h){if(h?.temporaryBypass)return(...e)=>Promise.resolve(t(...e));let m=h&&"serializer"in h?h.serializer:a.identity,c=h&&"deserializer"in h?h.deserializer:a.identity,p=h?.ttl??l,y=t.toString(),w=d(y);return async function(...a){let l=e.fastStringArrayJoin(await Promise.all([w,f(a)]),"|"),d=t.name||y||l,h=i.get(l);if(h&&"object"==typeof h&&"then"in h&&(h=await h),n)try{let e=await t(...a);s(l,{humanReadableName:d,isUseCachedIfFail:!0});let n=i.set(l,m(e),p);return n&&"then"in n&&await n,e}catch(e){if(null==h)throw o(l,{humanReadableName:d,isUseCachedIfFail:!0}),e;if(r){let e=i.updateTtl?.(l,p);e&&"then"in e&&await e}return u(l,{humanReadableName:d,isUseCachedIfFail:!0}),c(h)}else{if(null==h){o(l,{humanReadableName:d,isUseCachedIfFail:!1});let e=await t(...a),n=i.set(l,m(e),p);return n&&"then"in n&&await n,e}if(u(l,{humanReadableName:d,isUseCachedIfFail:!1}),r){let e=i.updateTtl?.(l,p);e&&"then"in e&&await e}return c(h)}}}};
@@ -1,2 +1 @@
1
1
  Object.defineProperty(exports,"__esModule",{value:!0});var e=require("./fnv1a52.js");exports.simpleStringHash=function(r){return e.fnv1a52(r).toString(36)+r.length.toString(36)};
2
- //# sourceMappingURL=simple-string-hash.js.map
@@ -1,2 +1 @@
1
1
  Object.defineProperty(exports,"__esModule",{value:!0}),exports.tagged=function(e,...r){return e.reduce((e,t,o)=>e+t+(r[o]??""),"")};
2
- //# sourceMappingURL=tagged.js.map
@@ -1,5 +1,3 @@
1
- import { TransformStream } from 'node:stream/web';
2
-
3
1
  interface TextLineStreamOptions {
4
2
  /** Allow splitting by solo \r */
5
3
  allowCR?: boolean;
@@ -1,2 +1 @@
1
- Object.defineProperty(exports,"__esModule",{value:!0});var e=require("node:stream/web"),r=require("./noop.js");class n extends e.TransformStream{constructor({allowCR:e=!1,skipEmptyLines:n=!1}={}){let t="",l=0,s=e?(e,r,t)=>{let s=e.indexOf("\r",l);if(-1!==s&&s!==e.length-1&&(-1===r||r-1>s)){let r=e.slice(l,s);return n&&0===r.length||t.enqueue(e.slice(l,s)),l=s+1,!0}return!1}:r.falseFn;super({transform(e,r){for(e=t+e,l=0;;){let t=e.indexOf("\n",l);if(s(e,t,r))continue;if(-1===t)break;let u=t;"\r"===e[t-1]&&u--;let i=e.slice(l,u);if(n&&0===i.length){l=t+1;continue}r.enqueue(i),l=t+1}t=e.slice(l)},flush(r){t.length>0&&(e&&"\r"===t[t.length-1]?r.enqueue(t.slice(0,-1)):r.enqueue(t))}})}}exports.TextLineStream=n;
2
- //# sourceMappingURL=text-line-stream.js.map
1
+ Object.defineProperty(exports,"__esModule",{value:!0});var e=require("./noop.js");class n extends TransformStream{constructor({allowCR:n=!1,skipEmptyLines:t=!1}={}){let r="",l=0,s=n?(e,n,r)=>{let s=e.indexOf("\r",l);if(-1!==s&&s!==e.length-1&&(-1===n||n-1>s)){let n=e.slice(l,s);return t&&0===n.length||r.enqueue(e.slice(l,s)),l=s+1,!0}return!1}:e.falseFn;super({transform(e,n){for(e=r+e,l=0;;){let r=e.indexOf("\n",l);if(s(e,r,n))continue;if(-1===r)break;let u=r;"\r"===e[r-1]&&u--;let i=e.slice(l,u);if(t&&0===i.length){l=r+1;continue}n.enqueue(i),l=r+1}r=e.slice(l)},flush(e){r.length>0&&(n&&"\r"===r[r.length-1]?e.enqueue(r.slice(0,-1)):e.enqueue(r))}})}}exports.TextLineStream=n;
package/dist/cjs/wait.js CHANGED
@@ -1,2 +1 @@
1
1
  Object.defineProperty(exports,"__esModule",{value:!0}),exports.wait=function(e){return new Promise(t=>{setTimeout(t,e)})},exports.waitWithAbort=function(e,t){return new Promise((r,o)=>{if(t.aborted){o(t.reason);return}let n=setTimeout(()=>{t.removeEventListener("abort",i),r()},e);function i(){clearTimeout(n),t.removeEventListener("abort",i),o(t.reason)}t.addEventListener("abort",i)})};
2
- //# sourceMappingURL=wait.js.map
@@ -1,2 +1 @@
1
1
  import{identity as r}from"./identity.mjs";function t(e,o,d=r){return o.forEach(r=>e.add(d(r))),e}export{t as addArrayElementsToSet};
2
- //# sourceMappingURL=add-array-elements-to-set.mjs.map
@@ -1,2 +1 @@
1
1
  class e extends Map{constructor(e,t){super(),this.wordEnd=e,this.fail=t}}function t(t){let r=new e(!1,void 0);t.forEach(t=>{let l=r;for(let r=0,o=t.length;r<o;r++){let o=t[r];if(l.has(o))l=l.get(o);else{let t=new e(!1,void 0);l.set(o,t),l=t}}l!==r&&(l.wordEnd=!0)});let l=[r];for(;l.length;){let e=l.pop();e.forEach((t,o)=>{let f=e.fail;for(;f&&!f.has(o);)f=f.fail;t.fail=f?f.get(o):r,l.push(t)})}return e=>{let t=r;for(let l=0,o=e.length;l<o;l++){let o=e[l];for(;t&&!t.has(o);)t=t.fail;if((t=t?t.get(o):r).wordEnd)return!0}return!1}}export{t as createAhoCorasick};
2
- //# sourceMappingURL=ahocorasick.mjs.map
@@ -1,2 +1 @@
1
1
  import{identity as e}from"./identity.mjs";function r(e,r,t){let n;let o=r.values();for(;!(n=o.next()).done;)e.push(t(n.value));return e}function t(n,o,u=e){if(!Array.isArray(o))return r(n,o,u);for(let e=0,t=o.length;e<t;e++)r(n,o[e],u);return n}export{t as appendSetElementsToArray};
2
- //# sourceMappingURL=append-set-elements-to-array.mjs.map
@@ -1,2 +1 @@
1
1
  import{once as r}from"node:events";function e(e,n){return e.write(n)?null:r(e,"drain")}export{e as asyncWriteToStream};
2
- //# sourceMappingURL=async-write-to-stream.mjs.map
@@ -1,2 +1 @@
1
1
  function t(t){return t-=t>>1&0x55555555,((t=(0x33333333&t)+(t>>2&0x33333333))+(t>>4)&0xf0f0f0f)*0x1010101>>24}let e=(t,e)=>!!(t&e),i=(t,e)=>!(t&e),r=(t,e)=>t|e,n=(t,e)=>t&~e,s=(t,e)=>t<<16|e,c=t=>t>>16&65535,u=t=>65535&t;function o(t,e=Array.from([,,].keys())){return e[0]=c(t),e[1]=u(t),e}let B=(t,e,i)=>t<<20|e<<10|i,a=t=>t>>20&1023,k=t=>t>>10&1023,p=t=>1023&t;function T(t,e=Array.from([,,,].keys())){return e[0]=a(t),e[1]=k(t),e[2]=p(t),e}export{t as bitCount,n as deleteBit,e as getBit,i as missingBit,B as packThreeBits,s as packTwoBits,r as setBit,T as unpackThreeBits,a as unpackThreeBitsFirst,k as unpackThreeBitsSecond,p as unpackThreeBitsThird,o as unpackTwoBits,c as unpackTwoBitsFirst,u as unpackTwoBitsSecond};
2
- //# sourceMappingURL=bitwise.mjs.map
@@ -1,2 +1 @@
1
1
  let e=new Map;function t(e){return Array.from(Array(e).keys())}function r(r){if(e.has(r))return e.get(r);let n=t(r);return e.set(r,n),n}let n=new Map;function a(e){let r,a;return n.has(e)&&(a=(r=n.get(e)).deref()),a||(r=new WeakRef(a=t(e)),n.set(e,r)),a}let f="function"==typeof WeakRef?a:r,i=f(0);export{i as EMPTY_ARRAY,f as createFixedArray,a as createFixedArrayWithGC,r as createFixedArrayWithoutGC};
2
- //# sourceMappingURL=create-fixed-array.mjs.map
@@ -1,2 +1 @@
1
1
  function e(e){for(let n=0,r=e.length;n<r;n++){let r=e[n];if("\n"===r)break;if("\r"===r&&"\n"===e[n+1])return"\r\n"}return"\n"}export{e as detectEol};
2
- //# sourceMappingURL=detect-eol.mjs.map
@@ -1,2 +1 @@
1
1
  let e=/["&'<>]/;function t(t){let a=e.exec(t);if(null===a)return t;let c="",r="",l=a.index,n=0;for(let e=t.length;l<e;l++){switch(t.charCodeAt(l)){case 34:c="&quot;";break;case 38:c="&amp;";break;case 39:c="&#39;";break;case 60:c="&lt;";break;case 62:c="&gt;";break;default:continue}n!==l&&(r+=t.slice(n,l)),n=l+1,r+=c}return n===l?r:r+t.slice(n,l)}export{t as escapeHTML};
2
- //# sourceMappingURL=escape-html.mjs.map
@@ -1,2 +1 @@
1
1
  let e=/[$()*+.?[\\\]^{|}-]/;function a(a){let c=e.exec(a);if(null===c)return a;let r="",s="",b=c.index,k=0;for(let e=a.length;b<e;b++){switch(a.charCodeAt(b)){case 92:r="\\\\";break;case 94:r="\\^";break;case 36:r="\\$";break;case 46:r="\\.";break;case 42:r="\\*";break;case 43:r="\\+";break;case 63:r="\\?";break;case 40:r="\\(";break;case 41:r="\\)";break;case 91:r="\\[";break;case 93:r="\\]";break;case 123:r="\\{";break;case 125:r="\\}";break;case 124:r="\\|";break;case 45:r="\\x2d";break;default:continue}k!==b&&(s+=a.slice(k,b)),k=b+1,s+=r}return k===b?s:s+a.slice(k,b)}export{a as escapeStringRegexp};
2
- //# sourceMappingURL=escape-string-regexp.mjs.map
@@ -1,2 +1 @@
1
1
  function t(t,r){let e=t.length;if(0===e)return"";let n=t[0];for(let f=1;f<e;f++)n+=r,n+=t[f];return n}export{t as fastStringArrayJoin};
2
- //# sourceMappingURL=fast-string-array-join.mjs.map
package/dist/es/fifo.mjs CHANGED
@@ -1,2 +1 @@
1
1
  var e;e=Symbol.iterator;class t{constructor(){this.head=null,this.tail=null,this.$size=0,this.push=this.enqueue,this.shift=this.dequeue,this.clear()}enqueue(e){let t=[e,null];this.head?this.tail[1]=t:this.head=t,this.tail=t,this.$size++}dequeue(){let e=this.head;if(e)return this.head=this.head[1],this.$size--,e[0]}peek(){return this.head?.[0]}clear(){this.head=null,this.tail=null,this.$size=0}get size(){return this.$size}get length(){return this.$size}*[e](){let e=this.head;for(;e;)yield e[0],e=e[1]}}export{t as FIFO};
2
- //# sourceMappingURL=fifo.mjs.map
package/dist/es/fnv1a.mjs CHANGED
@@ -1,2 +1 @@
1
1
  function t(t){let e=0x811c9dc5;for(let n=0,r=t.length;n<r;n++)e^=t.charCodeAt(n),e+=(e<<1)+(e<<4)+(e<<7)+(e<<8)+(e<<24);return e>>>0}export{t as fnv1a};
2
- //# sourceMappingURL=fnv1a.mjs.map
@@ -1,2 +1 @@
1
1
  function t(t){let e=t.length,n=0,r=0,o=8997,f=0,x=33826,a=0,c=40164,h=0,l=52210;for(;n<e;)o^=t.charCodeAt(n++),r=435*o,f=435*x,a=435*c,h=435*l,a+=o<<8,h+=x<<8,f+=r>>>16,o=65535&r,a+=f>>>16,x=65535&f,l=h+(a>>>16)&65535,c=65535&a;return(15&l)*0x1000000000000+0x100000000*c+65536*x+(o^l>>4)}export{t as fnv1a52};
2
- //# sourceMappingURL=fnv1a52.mjs.map
package/dist/es/guard.mjs CHANGED
@@ -1,2 +1 @@
1
1
  function n(n){switch(n){case null:return n=>null!==n;case void 0:return n=>void 0!==n;case!1:return n=>!1!==n;case"nullish":return n=>null!=n;case"falsy":return n=>!!n;default:a(n,"argument")}}function r(n){switch(n){case null:return n=>null===n;case void 0:return n=>void 0===n;case!1:return n=>!1===n;case"nullish":return n=>null==n;case"falsy":return n=>!n;case"truthy":return n=>!!n;default:a(n,"argument")}}let e=r("truthy"),u=r("falsy"),l=n(null),t=n("nullish");function i(n,r='[foxts/invariant] "value" is null or undefined'){if(null==n)throw TypeError(r);return n}function s(n,r='[foxts/invariant] "value" is null or undefined'){if(null==n)throw TypeError(r)}function a(n,r="value"){throw TypeError(`Unexpected ${r}: ${n} as ${JSON.stringify(typeof n)}, should be "never"`)}export{s as invariant,r as is,u as isFalsy,l as isNonNull,t as isNonNullish,e as isTruthy,a as never,n as not,i as nullthrow};
2
- //# sourceMappingURL=guard.mjs.map
@@ -1,2 +1 @@
1
- function e(e){let r={};return new Headers(e).forEach((e,t)=>{r[t]=e}),r}export{e as headersToObject};
2
- //# sourceMappingURL=headers-to-object.mjs.map
1
+ function e(e){let r={};return null==e||new Headers(e).forEach((e,n)=>{r[n]=e}),r}export{e as headersToObject};
@@ -1,2 +1 @@
1
1
  function t(t){return t}export{t as identity};
2
- //# sourceMappingURL=identity.mjs.map
@@ -1,2 +1 @@
1
1
  function e(e){if(e.length<7||e.length>15)return!1;let t=0;for(let r=0;r<e.length;r+=1){let n=e.charCodeAt(r);if(46===n)t+=1;else if(n<48||n>57)return!1}return 3===t&&46!==e.charCodeAt(0)&&46!==e.charCodeAt(e.length-1)}function t(e){if(e.length<3)return!1;let t=+("["===e[0]),r=e.length;if("]"===e[r-1]&&(r-=1),r-t>39)return!1;let n=!1;for(;t<r;t+=1){let r=e.charCodeAt(t);if(58===r)n=!0;else if((r<48||r>57)&&(r<97||r>102)&&(r<65||r>90))return!1}return n}export{e as isProbablyIpv4,t as isProbablyIpv6};
2
- //# sourceMappingURL=is-probably-ip.mjs.map
@@ -1,6 +1,6 @@
1
- type HeadersInitLike = string[][] | Record<string, string | readonly string[]> | Headers;
2
- type IncomingHttpHeadersLike = Record<string, string | string[] | undefined>;
3
- type OutgoingHttpHeadersLike = Record<string, number | string | string[] | undefined>;
1
+ type HeadersInitLike = string[][] | Record<string, string | readonly string[]> | Headers | null | undefined;
2
+ type IncomingHttpHeadersLike = Record<string, string | string[] | undefined> | undefined | null;
3
+ type OutgoingHttpHeadersLike = Record<string, number | string | string[] | undefined> | undefined | null;
4
4
  declare function mergeHeaders(dest: HeadersInitLike, source: HeadersInitLike): Headers;
5
5
  declare function mergeNodeHttpHeaders(dest: IncomingHttpHeadersLike, source: IncomingHttpHeadersLike): IncomingHttpHeadersLike;
6
6
  declare function mergeNodeHttpHeaders(dest: OutgoingHttpHeadersLike, source: IncomingHttpHeadersLike | OutgoingHttpHeadersLike): OutgoingHttpHeadersLike;
@@ -1,2 +1 @@
1
- function e(e,r){let t=new Headers(e);return new Headers(r).forEach((e,r)=>{t.set(r,e)}),t}function r(e,r){return Object.assign({},e,r)}export{e as mergeHeaders,r as mergeNodeHttpHeaders};
2
- //# sourceMappingURL=merge-headers.mjs.map
1
+ function e(e,n){if(null==e)return null==n?new Headers:new Headers(n);if(null==n)return new Headers(e);let r=new Headers(e);return new Headers(n).forEach((e,n)=>{r.set(n,e)}),r}function n(e,n){return null==e?null==n?{}:n:null==n?e:Object.assign({},e,n)}export{e as mergeHeaders,n as mergeNodeHttpHeaders};
package/dist/es/noop.mjs CHANGED
@@ -1,2 +1 @@
1
1
  let e=()=>{},o=()=>!0,r=()=>!1,n=()=>{throw Error()},s=Promise.resolve(),t=()=>s,F=new Promise(e),a=()=>F;export{a as asyncNeverFn,t as asyncNoop,r as falseFn,e as noop,n as throwFn,o as trueFn};
2
- //# sourceMappingURL=noop.mjs.map
package/dist/es/once.mjs CHANGED
@@ -1,2 +1 @@
1
1
  function e(e){let n,t=!1;return()=>(t||(t=!0,n=e()),n)}export{e as once};
2
- //# sourceMappingURL=once.mjs.map
@@ -1,2 +1 @@
1
- import{randomInt as e}from"node:crypto";function t(e){return function(t,n=1){if(n>t.length)throw TypeError("Count must be lower or the same as the number of picks");let r=t.slice(),o=[];for(;n--;)1===r.length?o.push(r[0]):o.push(r.splice(e(0,r.length-1),1)[0]);return o}}let n=t(e);function r(e){return function(t){return 1===t.length?t[0]:t[e(0,t.length-1)]}}let o=r(e);export{r as createPickOne,t as createPickRandom,o as pickOne,n as pickRandom};
2
- //# sourceMappingURL=pick-random.mjs.map
1
+ import{randomInt as e}from"./random-int.mjs";function t(e){return function(t,n=1){if(n>t.length)throw TypeError("Count must be lower or the same as the number of picks");let r=t.slice(),o=[];for(;n--;)1===r.length?o.push(r[0]):o.push(r.splice(e(0,r.length-1),1)[0]);return o}}let n=t(e);function r(e){return function(t){return 1===t.length?t[0]:t[e(0,t.length-1)]}}let o=r(e);export{r as createPickOne,t as createPickRandom,o as pickOne,n as pickRandom};
@@ -1,2 +1 @@
1
1
  function t(t){return(n,o)=>Math.floor(t()*(o-n+1))+n}let n=t(Math.random);export{t as createRandomInt,n as randomInt};
2
- //# sourceMappingURL=random-int.mjs.map
@@ -1,2 +1 @@
1
1
  class t{constructor(t){this.createObject=t;let e=t();this.tail=e,this.head=e}get(){let t=this.head;if(t.next)this.head=t.next;else{let t=this.createObject();this.tail=t,this.head=t}return t.next=null,t}release(t){this.tail.next=t,this.tail=t}}export{t as Repool};
2
- //# sourceMappingURL=repool.mjs.map
@@ -1,2 +1 @@
1
1
  import{falseFn as e}from"./noop.mjs";let t=new Set([".","?","*","+","^","$","|","(",")","{","}","[","]","\\"]);function n(e,r=!1){let l={},o=(e,t)=>{let n;let r=l;for(let l=0,o=e.length;l<o;++l)(n=e.charAt(l))in r||(r[n]=t?{"":""}:{}),r=r[n];r[""]=""};for(let t=0,n=e.length;t<n;++t)o(e[t],r);let i=()=>(function e(n){let r,l,o=!1,i=!1,u=[],f=[];for(let r in n){if(!r){o=!0;continue}((l=e(n[r]))?u:f).push(("-"===r?"\\x2d":t.has(r)?"\\"+r:r)+l)}return o&&null==l?"":(i=!u.length,f.length&&u.push(f[1]?"["+f.join("")+"]":f[0]),r=u[1]?"(?:"+u.join("|")+")":u[0],o&&(r=i?r+"?":"(?:"+r+")?"),r||"")})(l);return{tree:l,add:o,toString:i,toRe:()=>new RegExp((r?"^":"")+i())}}function r(t,l=!1){if(0===t.length)return e;let o=n(t,l).toRe();return o.test.bind(o)}export{r as createRetrieKeywordFilter,n as retrie};
2
- //# sourceMappingURL=retrie.mjs.map
@@ -27,6 +27,10 @@ interface CreateMemoizeOptions {
27
27
  humanReadableName: string;
28
28
  isUseCachedIfFail: boolean;
29
29
  }) => void;
30
+ /** recommendation: import('hash-wasm').xxhash64 */
31
+ keyHasher?: (key: string) => Promise<string> | string;
32
+ /** recommendation: import('devalue').stringify */
33
+ argHasher: (args: any[]) => Promise<string> | string;
30
34
  }
31
35
  type SerializableValue = number | string | boolean | bigint | Date | RegExp | Set<SerializableValue> | SerializableValue[] | null | undefined | Map<SerializableValue, SerializableValue> | SerializableObject | /** TypedArray */ Int8Array | Uint8Array | Uint8ClampedArray | Int16Array | Uint16Array | Int32Array | Uint32Array | Float32Array | Float64Array | BigInt64Array | BigUint64Array | ArrayBuffer;
32
36
  interface SerializableObject {
@@ -50,6 +54,6 @@ type MemoizeOptions<T> = T extends string ? MemoizeBaseOptions : MemoizeOptionsW
50
54
  * Unlike common memoize function out there, this serialize the parameters and returned value
51
55
  * for easy storing with file system, SQLite, Redis, etc.
52
56
  */
53
- declare function createMemoize(storage: MemoizeStorageProvider, { onlyUseCachedIfFail, resetTtlOnHit, defaultTtl, onCacheUpdate, onCacheMiss, onCacheHit }?: CreateMemoizeOptions): <Args extends SerializableValue[], R>(fn: (...args: Args) => R | Promise<R>, opt?: MemoizeOptions<R>) => (...args: Args) => Promise<R>;
57
+ declare function createMemoize(storage: MemoizeStorageProvider, { onlyUseCachedIfFail, resetTtlOnHit, defaultTtl, onCacheUpdate, onCacheMiss, onCacheHit, keyHasher, argHasher }: CreateMemoizeOptions): <Args extends SerializableValue[], R>(fn: (...args: Args) => R | Promise<R>, opt?: MemoizeOptions<R>) => (...args: Args) => Promise<R>;
54
58
 
55
59
  export { type CreateMemoizeOptions, type MemoizeOptions, type MemoizeStorageProvider, type SerializableValue, createMemoize };
@@ -1,2 +1 @@
1
- import{fastStringArrayJoin as e}from"./fast-string-array-join.mjs";import{identity as t}from"./identity.mjs";import{noop as A}from"./noop.mjs";function r(e,t,A,r){return new(A||(A=Promise))(function(t,n){function i(e){try{o(r.next(e))}catch(e){n(e)}}function a(e){try{o(r.throw(e))}catch(e){n(e)}}function o(e){var r;e.done?t(e.value):((r=e.value)instanceof A?r:new A(function(e){e(r)})).then(i,a)}o((r=r.apply(e,[])).next())})}class n{constructor(){this.mutex=Promise.resolve()}lock(){let e=()=>{};return this.mutex=this.mutex.then(()=>new Promise(e)),new Promise(t=>{e=t})}dispatch(e){return r(this,void 0,void 0,function*(){let t=yield this.lock();try{return yield Promise.resolve(e())}finally{t()}})}}let i="undefined"!=typeof globalThis?globalThis:"undefined"!=typeof self?self:"undefined"!=typeof window?window:global,a=null!==(g=i.Buffer)&&void 0!==g?g:null,o=i.TextEncoder?new i.TextEncoder:null;function l(e,t){return(15&e)+(e>>6|e>>3&8)<<4|(15&t)+(t>>6|t>>3&8)}function f(e,t,A){let r=0;for(let n=0;n<A;n++){let A=t[n]>>>4;e[r++]=A>9?A+87:A+48,A=15&t[n],e[r++]=A>9?A+87:A+48}return String.fromCharCode.apply(null,e)}let s=null!==a?e=>{if("string"==typeof e){let t=a.from(e,"utf8");return new Uint8Array(t.buffer,t.byteOffset,t.length)}if(a.isBuffer(e))return new Uint8Array(e.buffer,e.byteOffset,e.length);if(ArrayBuffer.isView(e))return new Uint8Array(e.buffer,e.byteOffset,e.byteLength);throw Error("Invalid data type!")}:e=>{if("string"==typeof e)return o.encode(e);if(ArrayBuffer.isView(e))return new Uint8Array(e.buffer,e.byteOffset,e.byteLength);throw Error("Invalid data type!")},u="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/",Q=new Uint8Array(256);for(let e=0;e<u.length;e++)Q[u.charCodeAt(e)]=e;let h=new n,C=new Map;new n,new n,new n,new n,new n,new n,new n,new n,new n,new n,new n,new n,new n,new n,new n,new n;var g,I={name:"xxhash64",data:"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",hash:"177fbfa3"};let c=new n,B=null,w=new Uint8Array(8);function y(e){return!Number.isInteger(e)||e<0||e>0xffffffff?Error("Seed must be given as two valid 32-bit long unsigned integers (lo + high)."):null}function E(e,t,A){let r=new DataView(e);r.setUint32(0,t,!0),r.setUint32(4,A,!0)}function b(e,t=0,A=0){if(y(t))return Promise.reject(y(t));if(y(A))return Promise.reject(y(A));if(null===B)return(function(e,t,A){return r(this,void 0,void 0,function*(){let A=yield e.lock(),n=yield function(e,t){return r(this,void 0,void 0,function*(){let A=null,n=null,i=!1;if("undefined"==typeof WebAssembly)throw Error("WebAssembly is not supported in this environment!");let a=()=>new DataView(A.exports.memory.buffer).getUint32(A.exports.STATE_SIZE,!0),o=h.dispatch(()=>r(this,void 0,void 0,function*(){if(!C.has(e.name)){let t=function(e){let t=function(e){let t=Math.floor(.75*e.length),A=e.length;return"="===e[A-1]&&(t-=1,"="===e[A-2]&&(t-=1)),t}(e),A=e.length,r=new Uint8Array(t),n=0;for(let t=0;t<A;t+=4){let A=Q[e.charCodeAt(t)],i=Q[e.charCodeAt(t+1)],a=Q[e.charCodeAt(t+2)],o=Q[e.charCodeAt(t+3)];r[n]=A<<2|i>>4,r[n+=1]=(15&i)<<4|a>>2,r[n+=1]=(3&a)<<6|63&o,n+=1}return r}(e.data),A=WebAssembly.compile(t);C.set(e.name,A)}let t=yield C.get(e.name);A=yield WebAssembly.instantiate(t,{})})),u=(e=null)=>{i=!0,A.exports.Hash_Init(e)},g=e=>{let t=0;for(;t<e.length;){let r=e.subarray(t,t+16384);t+=r.length,n.set(r),A.exports.Hash_Update(r.length)}},I=e=>{if(!i)throw Error("update() called before init()");g(s(e))},c=new Uint8Array(16),B=(e,r=null)=>{if(!i)throw Error("digest() called before init()");return(i=!1,A.exports.Hash_Final(r),"binary"===e)?n.slice(0,t):f(c,n,t)},w=e=>"string"==typeof e?e.length<4096:e.byteLength<16384,y=w;switch(e.name){case"argon2":case"scrypt":y=()=>!0;break;case"blake2b":case"blake2s":y=(e,t)=>t<=512&&w(e);break;case"blake3":y=(e,t)=>0===t&&w(e);break;case"xxhash64":case"xxhash3":case"xxhash128":case"crc64":y=()=>!1}return yield r(this,void 0,void 0,function*(){A||(yield o);let e=A.exports.Hash_GetBuffer();n=new Uint8Array(A.exports.memory.buffer,e,16384)}),{getMemory:()=>n,writeMemory:(e,t=0)=>{n.set(e,t)},getExports:()=>A.exports,setMemorySize:e=>{A.exports.Hash_SetMemorySize(e);let t=A.exports.Hash_GetBuffer();n=new Uint8Array(A.exports.memory.buffer,t,e)},init:u,update:I,digest:B,save:()=>{if(!i)throw Error("save() can only be called after init() and before digest()");let t=A.exports.Hash_GetState(),r=a(),n=new Uint8Array(A.exports.memory.buffer,t,r),o=new Uint8Array(4+r);return function(e,t){let A=t.length>>1;for(let r=0;r<A;r++){let A=r<<1;e[r]=l(t.charCodeAt(A),t.charCodeAt(A+1))}}(o,e.hash),o.set(n,4),o},load:t=>{if(!(t instanceof Uint8Array))throw Error("load() expects an Uint8Array generated by save()");let r=A.exports.Hash_GetState(),n=a(),o=4+n,f=A.exports.memory.buffer;if(t.length!==o)throw Error(`Bad state length (expected ${o} bytes, got ${t.length})`);if(!function(e,t){if(e.length!==2*t.length)return!1;for(let A=0;A<t.length;A++){let r=A<<1;if(t[A]!==l(e.charCodeAt(r),e.charCodeAt(r+1)))return!1}return!0}(e.hash,t.subarray(0,4)))throw Error("This state was written by an incompatible hash implementation");let s=t.subarray(4);new Uint8Array(f,r,n).set(s),i=!0},calculate:(e,r=null,i=null)=>{if(!y(e,r))return u(r),I(e),B("hex",i);let a=s(e);return n.set(a),A.exports.Hash_Calculate(a.length,r,i),f(c,n,t)},hashLength:t}})}(t,8);return A(),n})})(c,I,0).then(r=>(B=r,E(w.buffer,t,A),B.writeMemory(w),B.calculate(e)));try{E(w.buffer,t,A),B.writeMemory(w);let r=B.calculate(e);return Promise.resolve(r)}catch(e){return Promise.reject(e)}}new n,new n,new n,new n,new n;class d extends Error{constructor(e,t){super(e),this.name="DevalueError",this.path=t.join("")}}function p(e){return Object(e)!==e}let m=Object.getOwnPropertyNames(Object.prototype).sort().join("\0");function k(e){let t="",A=0,r=e.length;for(let n=0;n<r;n+=1){let r=function(e){switch(e){case'"':return'\\"';case"<":return"\\u003C";case"\\":return"\\\\";case"\n":return"\\n";case"\r":return"\\r";case" ":return"\\t";case"\b":return"\\b";case"\f":return"\\f";case"\u2028":return"\\u2028";case"\u2029":return"\\u2029";default:return e<" "?`\\u${e.charCodeAt(0).toString(16).padStart(4,"0")}`:""}}(e[n]);r&&(t+=e.slice(A,n)+r,A=n+1)}return`"${0===A?e:t+e.slice(A)}"`}let v=/^[a-zA-Z_$][a-zA-Z_$0-9]*$/;function U(e){return v.test(e)?"."+e:"["+JSON.stringify(e)+"]"}function F(e){let t=new DataView(e),A="";for(let r=0;r<e.byteLength;r++)A+=String.fromCharCode(t.getUint8(r));return function(e){let t="";for(let A=0;A<e.length;A+=3){let r=[void 0,void 0,void 0,void 0];r[0]=e.charCodeAt(A)>>2,r[1]=(3&e.charCodeAt(A))<<4,e.length>A+1&&(r[1]|=e.charCodeAt(A+1)>>4,r[2]=(15&e.charCodeAt(A+1))<<2),e.length>A+2&&(r[2]|=e.charCodeAt(A+2)>>6,r[3]=63&e.charCodeAt(A+2));for(let e=0;e<r.length;e++)void 0===r[e]?t+="=":t+="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/"[r[e]]}return t}(A)}function J(e){let t=typeof e;return"string"===t?k(e):e instanceof String?k(e.toString()):void 0===e?"-1":0===e&&1/e<0?"-6":"bigint"===t?`["BigInt","${e}"]`:String(e)}function x(r,{onlyUseCachedIfFail:n=!1,resetTtlOnHit:i=!1,defaultTtl:a=6048e5,onCacheUpdate:o=A,onCacheMiss:l=A,onCacheHit:f=A}={}){return function(A,s){if(s?.temporaryBypass)return(...e)=>Promise.resolve(A(...e));let u=s&&"serializer"in s?s.serializer:t,Q=s&&"deserializer"in s?s.deserializer:t,h=s?.ttl??a,C=A.toString(),g=b(C);return async function(...t){let a=e(await Promise.all([g,b(function(e,t){let A=[],r=new Map,n=[],i=[],a=0,o=function e(t){if("function"==typeof t)throw new d("Cannot stringify a function",i);if(r.has(t))return r.get(t);if(void 0===t)return -1;if(Number.isNaN(t))return -3;if(t===1/0)return -4;if(t===-1/0)return -5;if(0===t&&1/t<0)return -6;let o=a++;for(let{key:i,fn:a}of(r.set(t,o),n)){let r=a(t);if(r)return A[o]=`["${i}",${e(r)}]`,o}let l="";if(p(t))l=J(t);else{let A=Object.prototype.toString.call(t).slice(8,-1);switch(A){case"Number":case"String":case"Boolean":l=`["Object",${J(t)}]`;break;case"BigInt":l=`["BigInt",${t}]`;break;case"Date":let r=!isNaN(t.getDate());l=`["Date","${r?t.toISOString():""}"]`;break;case"RegExp":let{source:n,flags:a}=t;l=a?`["RegExp",${k(n)},"${a}"]`:`["RegExp",${k(n)}]`;break;case"Array":l="[";for(let A=0;A<t.length;A+=1)A>0&&(l+=","),A in t?(i.push(`[${A}]`),l+=e(t[A]),i.pop()):l+=-2;l+="]";break;case"Set":for(let A of(l='["Set"',t))l+=`,${e(A)}`;l+="]";break;case"Map":for(let[A,r]of(l='["Map"',t))i.push(`.get(${p(A)?J(A):"..."})`),l+=`,${e(A)},${e(r)}`,i.pop();l+="]";break;case"Int8Array":case"Uint8Array":case"Uint8ClampedArray":case"Int16Array":case"Uint16Array":case"Int32Array":case"Uint32Array":case"Float32Array":case"Float64Array":case"BigInt64Array":case"BigUint64Array":l='["'+A+'","'+F(t.buffer)+'"]';break;case"ArrayBuffer":{let e=F(t);l=`["ArrayBuffer","${e}"]`;break}default:if(!function(e){let t=Object.getPrototypeOf(e);return t===Object.prototype||null===t||Object.getOwnPropertyNames(t).sort().join("\0")===m}(t))throw new d("Cannot stringify arbitrary non-POJOs",i);if(Object.getOwnPropertySymbols(t).filter(e=>Object.getOwnPropertyDescriptor(t,e).enumerable).length>0)throw new d("Cannot stringify POJOs with symbolic keys",i);if(null===Object.getPrototypeOf(t)){for(let A in l='["null"',t)i.push(U(A)),l+=`,${k(A)},${e(t[A])}`,i.pop();l+="]"}else{l="{";let A=!1;for(let r in t)A&&(l+=","),A=!0,i.push(U(r)),l+=`${k(r)}:${e(t[r])}`,i.pop();l+="}"}}}return A[o]=l,o}(e);return o<0?`${o}`:`[${A.join(",")}]`}(t))]),"|"),s=A.name||C||a,I=r.get(a);if(I&&"object"==typeof I&&"then"in I&&(I=await I),n)try{let e=await A(...t);o(a,{humanReadableName:s,isUseCachedIfFail:!0});let n=r.set(a,u(e),h);return n&&"then"in n&&await n,e}catch(e){if(null==I)throw l(a,{humanReadableName:s,isUseCachedIfFail:!0}),e;if(i){let e=r.updateTtl?.(a,h);e&&"then"in e&&await e}return f(a,{humanReadableName:s,isUseCachedIfFail:!0}),Q(I)}else{if(null==I){l(a,{humanReadableName:s,isUseCachedIfFail:!1});let e=await A(...t),n=r.set(a,u(e),h);return n&&"then"in n&&await n,e}if(f(a,{humanReadableName:s,isUseCachedIfFail:!1}),i){let e=r.updateTtl?.(a,h);e&&"then"in e&&await e}return Q(I)}}}}export{x as createMemoize};
2
- //# sourceMappingURL=serialized-memo.mjs.map
1
+ import{fastStringArrayJoin as e}from"./fast-string-array-join.mjs";import{identity as a}from"./identity.mjs";import{noop as t}from"./noop.mjs";function i(i,{onlyUseCachedIfFail:r=!1,resetTtlOnHit:n=!1,defaultTtl:l=6048e5,onCacheUpdate:s=t,onCacheMiss:m=t,onCacheHit:o=t,keyHasher:f=a,argHasher:u}){return function(t,h){if(h?.temporaryBypass)return(...e)=>Promise.resolve(t(...e));let d=h&&"serializer"in h?h.serializer:a,c=h&&"deserializer"in h?h.deserializer:a,p=h?.ttl??l,w=t.toString(),y=f(w);return async function(...a){let l=e(await Promise.all([y,u(a)]),"|"),f=t.name||w||l,h=i.get(l);if(h&&"object"==typeof h&&"then"in h&&(h=await h),r)try{let e=await t(...a);s(l,{humanReadableName:f,isUseCachedIfFail:!0});let r=i.set(l,d(e),p);return r&&"then"in r&&await r,e}catch(e){if(null==h)throw m(l,{humanReadableName:f,isUseCachedIfFail:!0}),e;if(n){let e=i.updateTtl?.(l,p);e&&"then"in e&&await e}return o(l,{humanReadableName:f,isUseCachedIfFail:!0}),c(h)}else{if(null==h){m(l,{humanReadableName:f,isUseCachedIfFail:!1});let e=await t(...a),r=i.set(l,d(e),p);return r&&"then"in r&&await r,e}if(o(l,{humanReadableName:f,isUseCachedIfFail:!1}),n){let e=i.updateTtl?.(l,p);e&&"then"in e&&await e}return c(h)}}}}export{i as createMemoize};
@@ -1,2 +1 @@
1
1
  import{fnv1a52 as t}from"./fnv1a52.mjs";function n(n){return t(n).toString(36)+n.length.toString(36)}export{n as simpleStringHash};
2
- //# sourceMappingURL=simple-string-hash.mjs.map
@@ -1,2 +1 @@
1
1
  function e(r,...t){return r.reduce((e,r,n)=>e+r+(t[n]??""),"")}export{e as tagged};
2
- //# sourceMappingURL=tagged.mjs.map
@@ -1,5 +1,3 @@
1
- import { TransformStream } from 'node:stream/web';
2
-
3
1
  interface TextLineStreamOptions {
4
2
  /** Allow splitting by solo \r */
5
3
  allowCR?: boolean;
@@ -1,2 +1 @@
1
- import{TransformStream as e}from"node:stream/web";import{falseFn as t}from"./noop.mjs";class n extends e{constructor({allowCR:e=!1,skipEmptyLines:n=!1}={}){let r="",l=0,i=e?(e,t,r)=>{let i=e.indexOf("\r",l);if(-1!==i&&i!==e.length-1&&(-1===t||t-1>i)){let t=e.slice(l,i);return n&&0===t.length||r.enqueue(e.slice(l,i)),l=i+1,!0}return!1}:t;super({transform(e,t){for(e=r+e,l=0;;){let r=e.indexOf("\n",l);if(i(e,r,t))continue;if(-1===r)break;let u=r;"\r"===e[r-1]&&u--;let o=e.slice(l,u);if(n&&0===o.length){l=r+1;continue}t.enqueue(o),l=r+1}r=e.slice(l)},flush(t){r.length>0&&(e&&"\r"===r[r.length-1]?t.enqueue(r.slice(0,-1)):t.enqueue(r))}})}}export{n as TextLineStream};
2
- //# sourceMappingURL=text-line-stream.mjs.map
1
+ import{falseFn as e}from"./noop.mjs";class n extends TransformStream{constructor({allowCR:n=!1,skipEmptyLines:t=!1}={}){let r="",l=0,i=n?(e,n,r)=>{let i=e.indexOf("\r",l);if(-1!==i&&i!==e.length-1&&(-1===n||n-1>i)){let n=e.slice(l,i);return t&&0===n.length||r.enqueue(e.slice(l,i)),l=i+1,!0}return!1}:e;super({transform(e,n){for(e=r+e,l=0;;){let r=e.indexOf("\n",l);if(i(e,r,n))continue;if(-1===r)break;let u=r;"\r"===e[r-1]&&u--;let s=e.slice(l,u);if(t&&0===s.length){l=r+1;continue}n.enqueue(s),l=r+1}r=e.slice(l)},flush(e){r.length>0&&(n&&"\r"===r[r.length-1]?e.enqueue(r.slice(0,-1)):e.enqueue(r))}})}}export{n as TextLineStream};
package/dist/es/wait.mjs CHANGED
@@ -1,2 +1 @@
1
1
  function e(e){return new Promise(t=>{setTimeout(t,e)})}function t(e,t){return new Promise((r,n)=>{if(t.aborted){n(t.reason);return}let o=setTimeout(()=>{t.removeEventListener("abort",i),r()},e);function i(){clearTimeout(o),t.removeEventListener("abort",i),n(t.reason)}t.addEventListener("abort",i)})}export{e as wait,t as waitWithAbort};
2
- //# sourceMappingURL=wait.mjs.map
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "foxts",
3
- "version": "2.0.1",
3
+ "version": "3.0.1",
4
4
  "description": "Opinionated collection of common TypeScript utils by @SukkaW",
5
5
  "repository": {
6
6
  "url": "https://github.com/SukkaW/foxts"
@@ -338,7 +338,6 @@
338
338
  "expect": "^29.7.0",
339
339
  "fastscan": "^1.0.6",
340
340
  "fdir": "^6.4.3",
341
- "hash-wasm": "^4.12.0",
342
341
  "hexo-util": "^3.3.0",
343
342
  "html-escaper": "2.0.2",
344
343
  "lodash.escape": "^4.0.1",
@@ -356,7 +355,7 @@
356
355
  "bench": "SWC_NODE_IGNORE_DYNAMIC=1 node --require @swc-node/register",
357
356
  "bench:all": "SWC_NODE_IGNORE_DYNAMIC=1 node --require @swc-node/register ./src/**/*.bench.ts",
358
357
  "prebuild": "bunchee prepare && node -r @swc-node/register ./tools/index.ts",
359
- "build": "bunchee --minify",
358
+ "build": "bunchee --minify --no-sourcemap",
360
359
  "prerelease": "pnpm run lint && pnpm run test && pnpm run build",
361
360
  "release": "bumpp -r --all --commit \"release: %s\" --tag \"%s\""
362
361
  }
@@ -1 +0,0 @@
1
- {"version":3,"file":"add-array-elements-to-set.js","sources":["../../src/add-array-elements-to-set/index.ts"],"sourcesContent":["import { identity } from '../identity';\n\nexport function addArrayElementsToSet<T>(set: Set<T>, arr: T[], transformer: (item: T) => T = identity): Set<T> {\n const add = (item: T) => set.add(transformer(item));\n arr.forEach(add);\n return set;\n}\n"],"names":["set","arr","transformer","identity","forEach","item","add"],"mappings":"oHAEO,SAAkCA,CAAW,CAAEC,CAAQ,CAAEC,EAA8BC,EAAAA,QAAQ,EAGpG,OADAF,EAAIG,OAAO,CADC,AAACC,GAAYL,EAAIM,GAAG,CAACJ,EAAYG,KAEtCL,CACT"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"ahocorasick.js","sources":["../../src/ahocorasick/index.ts"],"sourcesContent":["class Node extends Map<string, Node> {\n constructor(\n public wordEnd: boolean,\n public fail: Node | undefined\n ) {\n super();\n }\n}\n\nexport function createAhoCorasick(keys: string[] | Set<string> | readonly string[]) {\n const root = new Node(false, undefined);\n\n // Create a trie with extra fields and information\n const put = (key: string) => {\n let node = root;\n\n for (let idx = 0, len = key.length; idx < len; idx++) {\n const char = key[idx];\n\n if (node.has(char)) {\n node = node.get(char)!;\n } else {\n const newNode = new Node(false, undefined);\n node.set(char, newNode);\n node = newNode;\n }\n }\n\n // If a new node is created, mark it as a word end when loop finish\n if (node !== root) {\n node.wordEnd = true;\n }\n };\n\n keys.forEach(put);\n\n // const build = () => {\n const queue: Node[] = [root];\n\n while (queue.length) {\n const beginNode = queue.pop()!;\n\n beginNode.forEach((node, char) => {\n let failNode = beginNode.fail;\n\n while (failNode && !failNode.has(char)) {\n failNode = failNode.fail;\n }\n\n node.fail = failNode\n ? failNode.get(char)\n : root;\n\n queue.push(node);\n });\n }\n // };\n // build();\n\n return (text: string) => {\n let node: Node | undefined = root;\n\n for (let i = 0, textLen = text.length; i < textLen; i++) {\n const char = text[i];\n\n while (node && !node.has(char)) {\n node = node.fail;\n }\n\n node = node ? node.get(char)! : root;\n\n if (node.wordEnd) {\n return true;\n }\n }\n\n return false;\n };\n}\n"],"names":["Node","Map","constructor","wordEnd","fail","keys","root","undefined","forEach","key","node","idx","len","length","char","has","get","newNode","set","queue","beginNode","pop","failNode","push","text","i","textLen"],"mappings":"sDAAA,OAAMA,UAAaC,IACjBC,YACEC,CAAuB,CAChBC,CAAsB,CAC7B,CACA,KAAK,GAAA,IAAA,CAHED,OAAAA,CAAAA,EAAAA,IAAAA,CACAC,IAAAA,CAAAA,CAGT,CACF,2BAEO,SAA2BC,CAAgD,EAChF,IAAMC,EAAO,IAAIN,EAAK,CAAA,EAAOO,KAAAA,GAwB7BF,EAAKG,OAAO,CArBA,AAACC,IACX,IAAIC,EAAOJ,EAEX,IAAK,IAAIK,EAAM,EAAGC,EAAMH,EAAII,MAAM,CAAEF,EAAMC,EAAKD,IAAO,CACpD,IAAMG,EAAOL,CAAG,CAACE,EAAI,CAErB,GAAID,EAAKK,GAAG,CAACD,GACXJ,EAAOA,EAAKM,GAAG,CAACF,OACX,CACL,IAAMG,EAAU,IAAIjB,EAAK,CAAA,EAAOO,KAAAA,GAChCG,EAAKQ,GAAG,CAACJ,EAAMG,GACfP,EAAOO,CACT,CACF,CAGIP,IAASJ,GACXI,CAAAA,EAAKP,OAAO,CAAG,CAAA,CAAA,CAEnB,GAKA,IAAMgB,EAAgB,CAACb,EAAK,CAE5B,KAAOa,EAAMN,MAAM,EAAE,CACnB,IAAMO,EAAYD,EAAME,GAAG,GAE3BD,EAAUZ,OAAO,CAAC,CAACE,EAAMI,KACvB,IAAIQ,EAAWF,EAAUhB,IAAI,CAE7B,KAAOkB,GAAY,CAACA,EAASP,GAAG,CAACD,IAC/BQ,EAAWA,EAASlB,IAAI,AAG1BM,CAAAA,EAAKN,IAAI,CAAGkB,EACRA,EAASN,GAAG,CAACF,GACbR,EAEJa,EAAMI,IAAI,CAACb,EACb,EACF,CAIA,OAAO,AAACc,IACN,IAAId,EAAyBJ,EAE7B,IAAK,IAAImB,EAAI,EAAGC,EAAUF,EAAKX,MAAM,CAAEY,EAAIC,EAASD,IAAK,CACvD,IAAMX,EAAOU,CAAI,CAACC,EAAE,CAEpB,KAAOf,GAAQ,CAACA,EAAKK,GAAG,CAACD,IACvBJ,EAAOA,EAAKN,IAAI,CAKlB,GAAIM,AAFJA,CAAAA,EAAOA,EAAOA,EAAKM,GAAG,CAACF,GAASR,CAAAA,EAEvBH,OAAO,CACd,MAAO,CAAA,CAEX,CAEA,MAAO,CAAA,CACT,CACF"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"append-set-elements-to-array.js","sources":["../../src/append-set-elements-to-array/index.ts"],"sourcesContent":["import { identity } from '../identity';\n\nfunction innerAppendSetElementsToArray<T>(\n dest: T[],\n source: Set<T>,\n transformer: (item: T) => T\n): T[] {\n const iterator = source.values();\n let step: IteratorResult<T, undefined>;\n\n while ((step = iterator.next(), !step.done)) {\n dest.push(transformer(step.value));\n }\n\n return dest;\n}\n\nexport function appendSetElementsToArray<T>(\n dest: T[],\n source: Set<T> | Array<Set<T>>,\n transformer: (item: T) => T = identity\n) {\n if (!Array.isArray(source)) {\n return innerAppendSetElementsToArray(dest, source, transformer);\n }\n\n for (let i = 0, len = source.length; i < len; i++) {\n innerAppendSetElementsToArray(dest, source[i], transformer);\n }\n\n return dest;\n}\n"],"names":["innerAppendSetElementsToArray","dest","source","transformer","step","iterator","values","next","done","push","value","identity","Array","isArray","i","len","length"],"mappings":"sFAEA,SAASA,EACPC,CAAS,CACTC,CAAc,CACdC,CAA2B,MAGvBC,EADJ,IAAMC,EAAWH,EAAOI,MAAM,GAG9B,KAAQF,CAAyBA,AAAzBA,CAAAA,EAAOC,EAASE,IAAI,IAAUC,IAAI,EACxCP,EAAKQ,IAAI,CAACN,EAAYC,EAAKM,KAAK,GAGlC,OAAOT,CACT,kCAEO,SACLA,CAAS,CACTC,CAA8B,CAC9BC,EAA8BQ,EAAAA,QAAQ,EAEtC,GAAI,CAACC,MAAMC,OAAO,CAACX,GACjB,OAAOF,EAA8BC,EAAMC,EAAQC,GAGrD,IAAK,IAAIW,EAAI,EAAGC,EAAMb,EAAOc,MAAM,CAAEF,EAAIC,EAAKD,IAC5Cd,EAA8BC,EAAMC,CAAM,CAACY,EAAE,CAAEX,GAGjD,OAAOF,CACT"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"async-write-to-stream.js","sources":["../../src/async-write-to-stream/index.ts"],"sourcesContent":["import type { Writable } from 'node:stream';\nimport { once } from 'node:events';\n\n/**\n * A small utility function for writing chunk to a stream, and only return promise when needed (stream backpressure)\n *\n * ```ts\n * const writeStream = fs.createWriteStream(outputFile);\n * for (const line of source) {\n * const p = asyncWriteToStream(writeStream, line + '\\n');\n * if (p) {\n * // eslint-disable-next-line no-await-in-loop -- stream backpressure\n * await p;\n * }\n * }\n */\nexport function asyncWriteToStream<T>(stream: Writable, chunk: T): Promise<unknown> | null {\n const waitDrain = !stream.write(chunk);\n if (waitDrain) {\n return once(stream, 'drain'); // returns a promise only if needed\n }\n return null;\n}\n"],"names":["stream","chunk","write","once"],"mappings":"+GAgBO,SAA+BA,CAAgB,CAAEC,CAAQ,SAE9D,AADmBD,EAAOE,KAAK,CAACD,GAIzB,KAFEE,EAAAA,IAAAA,CAAKH,EAAQ,QAGxB"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"bitwise.js","sources":["../../src/bitwise/index.ts"],"sourcesContent":["// From: https://stackoverflow.com/a/43122214/1185079\nexport function bitCount(n: number): number {\n n = n - ((n >> 1) & 0x55_55_55_55);\n n = (n & 0x33_33_33_33) + ((n >> 2) & 0x33_33_33_33);\n return (((n + (n >> 4)) & 0xF_0F_0F_0F) * 0x1_01_01_01) >> 24;\n}\n\nexport const getBit = (n: number, mask: number) => !!(n & mask);\nexport const missingBit = (n: number, mask: number): boolean => !(n & mask);\nexport const setBit = (n: number, mask: number) => n | mask;\nexport const deleteBit = (n: number, mask: number) => n & ~mask;\n\n/** Packs two 16-bit integers (0~65535) into one 32-bit integer */\nexport const packTwoBits = (a: number, b: number): number => (a << 16) | b;\n\nexport const unpackTwoBitsFirst = (value: number): number => (value >> 16) & 0xFFFF;\nexport const unpackTwoBitsSecond = (value: number): number => value & 0xFFFF;\n/**\n * Unpacks two 16-bit integers (0~65535) from one 32-bit integer\n *\n * @param value - The 32-bit integer to unpack\n * @param arr - An optional array to store the unpacked values, useful if you are trying to re-use arrays\n */\nexport function unpackTwoBits(value: number, arr: [a: number, b: number] = Array.from(new Array(2).keys()) as any): [a: number, b: number] {\n arr[0] = unpackTwoBitsFirst(value);\n arr[1] = unpackTwoBitsSecond(value);\n return arr;\n}\n\n/** Packs three 10-bit integers (0~1023) into one 32-bit integer */\nexport const packThreeBits = (a: number, b: number, c: number): number => (a << 20) | (b << 10) | c;\n\nexport const unpackThreeBitsFirst = (value: number): number => (value >> 20) & 0x3FF;\nexport const unpackThreeBitsSecond = (value: number): number => (value >> 10) & 0x3FF;\nexport const unpackThreeBitsThird = (value: number): number => value & 0x3FF;\n/**\n * Unpacks three 10-bit integers (0~1023) from one 32-bit integer\n *\n * @param value - The 32-bit integer to unpack\n * @param arr - An optional array to store the unpacked values, useful if you are trying to re-use arrays\n */\nexport function unpackThreeBits(value: number, arr: [a: number, b: number, c: number] = Array.from(new Array(3).keys()) as any): [a: number, b: number, c: number] {\n arr[0] = unpackThreeBitsFirst(value);\n arr[1] = unpackThreeBitsSecond(value);\n arr[2] = unpackThreeBitsThird(value);\n return arr;\n}\n"],"names":["unpackTwoBitsFirst","value","unpackTwoBitsSecond","unpackThreeBitsFirst","unpackThreeBitsSecond","unpackThreeBitsThird","n","mask","a","b","c","arr","Array","from","keys"],"mappings":"6DAeaA,EAAqB,AAACC,GAA0BA,GAAU,GAAM,MAChEC,EAAsB,AAACD,GAA0BA,AAAQ,MAARA,EAgBjDE,EAAuB,AAACF,GAA0BA,GAAU,GAAM,KAClEG,EAAwB,AAACH,GAA0BA,GAAU,GAAM,KACnEI,EAAuB,AAACJ,GAA0BA,AAAQ,KAARA,mBAjCxD,SAAkBK,CAAS,EAGhC,OAFAA,GAASA,GAAM,EAAK,WAEX,AAACA,CAAAA,AADVA,CAAAA,EAAKA,AAAAA,CAAAA,AAAI,WAAJA,CAAI,EAAmBA,CAAAA,GAAK,EAAK,UAAA,CAAY,EACnCA,CAAAA,GAAK,CAAA,EAAM,SAAA,EAAgB,WAAiB,EAC7D,oBAKyB,CAACA,EAAWC,IAAiBD,EAAI,CAACC,iBAHrC,CAACD,EAAWC,IAAiB,CAAC,CAAED,CAAAA,EAAIC,CAAG,qBACnC,CAACD,EAAWC,IAA0B,CAAED,CAAAA,EAAIC,CAAG,wBAsB5C,CAACC,EAAWC,EAAWC,IAAsBF,GAAM,GAAOC,GAAK,GAAMC,sBAjBvE,CAACF,EAAWC,IAAuBD,GAAK,GAAMC,iBAJnD,CAACH,EAAWC,IAAiBD,EAAIC,0BAgChD,SAAyBN,CAAa,CAAEU,EAAyCC,MAAMC,IAAI,CAAC,KAAU,CAAGC,IAAI,GAAU,EAI5H,OAHAH,CAAG,CAAC,EAAE,CAAGR,EAAqBF,GAC9BU,CAAG,CAAC,EAAE,CAAGP,EAAsBH,GAC/BU,CAAG,CAAC,EAAE,CAAGN,EAAqBJ,GACvBU,CACT,sHAvBO,SAAuBV,CAAa,CAAEU,EAA8BC,MAAMC,IAAI,CAAC,IAAU,CAAGC,IAAI,GAAU,EAG/G,OAFAH,CAAG,CAAC,EAAE,CAAGX,EAAmBC,GAC5BU,CAAG,CAAC,EAAE,CAAGT,EAAoBD,GACtBU,CACT"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"create-fixed-array.js","sources":["../../src/create-fixed-array/index.ts"],"sourcesContent":["const arrayMap = new Map<number, readonly number[]>();\n\nfunction makeArray(length: number): readonly number[] {\n return Array.from(new Array(length).keys());\n}\n\nexport function createFixedArrayWithoutGC(length: number): readonly number[] {\n if (arrayMap.has(length)) {\n return arrayMap.get(length)!;\n }\n const arr = makeArray(length);\n arrayMap.set(length, arr);\n return arr;\n}\n\nconst arrayWeakRefMap = new Map<number, WeakRef<readonly number[]>>();\n\nexport function createFixedArrayWithGC(length: number): readonly number[] {\n let ref: WeakRef<readonly number[]> | undefined;\n let array: readonly number[] | undefined;\n if (arrayWeakRefMap.has(length)) {\n ref = arrayWeakRefMap.get(length)!;\n array = ref.deref();\n }\n\n if (!array) {\n array = makeArray(length);\n\n // every time a new array is created, we create a new WeakRef and update map\n ref = new WeakRef(array);\n arrayWeakRefMap.set(length, ref);\n }\n\n return array;\n}\n\nexport const createFixedArray = typeof WeakRef === 'function' ? createFixedArrayWithGC : createFixedArrayWithoutGC;\nexport const EMPTY_ARRAY = createFixedArray(0);\n"],"names":["arrayMap","Map","makeArray","length","Array","from","keys","createFixedArrayWithoutGC","has","get","arr","set","arrayWeakRefMap","createFixedArrayWithGC","ref","array","deref","WeakRef","createFixedArray","EMPTY_ARRAY"],"mappings":"uDAAA,MAAMA,EAAW,IAAIC,IAErB,SAASC,EAAUC,CAAc,EAC/B,OAAOC,MAAMC,IAAI,CAAC,AAAID,MAAMD,GAAQG,IAAI,GAC1C,CAEO,SAASC,EAA0BJ,CAAc,EACtD,GAAIH,EAASQ,GAAG,CAACL,GACf,OAAOH,EAASS,GAAG,CAACN,GAEtB,IAAMO,EAAMR,EAAUC,GAEtB,OADAH,EAASW,GAAG,CAACR,EAAQO,GACdA,CACT,CAEA,MAAME,EAAkB,IAAIX,IAErB,SAASY,EAAuBV,CAAc,EACnD,IAAIW,EACAC,EAcJ,OAbIH,EAAgBJ,GAAG,CAACL,IAEtBY,CAAAA,EAAQD,AADRA,CAAAA,EAAMF,EAAgBH,GAAG,CAACN,EAAAA,EACda,KAAK,EAAA,EAGdD,IAIHD,EAAM,IAAIG,QAHVF,EAAQb,EAAUC,IAIlBS,EAAgBD,GAAG,CAACR,EAAQW,IAGvBC,CACT,OAEaG,EAAmB,AAAmB,YAAnB,OAAOD,QAAyBJ,EAAyBN,EAC5EY,EAAcD,EAAiB"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"detect-eol.js","sources":["../../src/detect-eol/index.ts"],"sourcesContent":["export function detectEol(str: string) {\n for (let i = 0, len = str.length; i < len; i++) {\n const c = str[i];\n if (c === '\\n') return '\\n';\n if (c === '\\r' && str[i + 1] === '\\n') return '\\r\\n';\n }\n return '\\n';\n}\n"],"names":["str","i","len","length","c"],"mappings":"yEAAO,SAAmBA,CAAW,EACnC,IAAK,IAAIC,EAAI,EAAGC,EAAMF,EAAIG,MAAM,CAAEF,EAAIC,EAAKD,IAAK,CAC9C,IAAMG,EAAIJ,CAAG,CAACC,EAAE,CAChB,GAAIG,AAAM,OAANA,EAAY,MAChB,GAAIA,AAAM,OAANA,GAAcJ,AAAe,OAAfA,CAAG,CAACC,EAAI,EAAE,CAAW,MAAO,MAChD,CACA,MAAO,IACT"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"escape-html.js","sources":["../../src/escape-html/index.ts"],"sourcesContent":["const reHtmlEntity = /[\"&'<>]/;\nexport function escapeHTML(str: string) {\n const match = reHtmlEntity.exec(str);\n\n if (match === null) {\n return str;\n }\n\n let escape = '';\n let html = '';\n\n let index = match.index;\n let lastIndex = 0;\n\n // iterate from the first match\n for (const len = str.length; index < len; index++) {\n switch (str.charCodeAt(index)) {\n case 34: // \"\n escape = '&quot;';\n break;\n case 38: // &\n escape = '&amp;';\n break;\n case 39: // '\n escape = '&#39;';\n break;\n case 60: // <\n escape = '&lt;';\n break;\n case 62: // >\n escape = '&gt;';\n break;\n default:\n continue;\n }\n\n if (lastIndex !== index) {\n html += str.slice(lastIndex, index);\n }\n\n lastIndex = index + 1;\n html += escape;\n }\n\n return lastIndex === index\n ? html\n : html + str.slice(lastIndex, index);\n}\n"],"names":["reHtmlEntity","str","match","exec","escape","html","index","lastIndex","len","length","charCodeAt","slice"],"mappings":"uDAAA,MAAMA,EAAe,6BACd,SAAoBC,CAAW,EACpC,IAAMC,EAAQF,EAAaG,IAAI,CAACF,GAEhC,GAAIC,AAAU,OAAVA,EACF,OAAOD,EAGT,IAAIG,EAAS,GACTC,EAAO,GAEPC,EAAQJ,EAAMI,KAAK,CACnBC,EAAY,EAGhB,IAAK,IAAMC,EAAMP,EAAIQ,MAAM,CAAEH,EAAQE,EAAKF,IAAS,CACjD,OAAQL,EAAIS,UAAU,CAACJ,IACrB,KAAK,GACHF,EAAS,SACT,KACF,MAAK,GACHA,EAAS,QACT,KACF,MAAK,GACHA,EAAS,QACT,KACF,MAAK,GACHA,EAAS,OACT,KACF,MAAK,GACHA,EAAS,OACT,KACF,SACE,QACJ,CAEIG,IAAcD,GAChBD,CAAAA,GAAQJ,EAAIU,KAAK,CAACJ,EAAWD,EAAAA,EAG/BC,EAAYD,EAAQ,EACpBD,GAAQD,CACV,CAEA,OAAOG,IAAcD,EACjBD,EACAA,EAAOJ,EAAIU,KAAK,CAACJ,EAAWD,EAClC"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"escape-string-regexp.js","sources":["../../src/escape-string-regexp/index.ts"],"sourcesContent":["const r = /[$()*+.?[\\\\\\]^{|}-]/;\n\n/**\n * Escape characters with special meaning either inside or outside character sets.\n * Use a simple backslash escape when it’s always valid, and a `\\xnn` escape when the simpler form would be disallowed by Unicode patterns’ stricter grammar.\n */\nexport function escapeStringRegexp(str: string) {\n const match = r.exec(str);\n\n if (match === null) {\n return str;\n }\n\n let escape = '';\n let regexp = '';\n\n let index = match.index;\n let lastIndex = 0;\n\n // iterate from the first match\n for (const len = str.length; index < len; index++) {\n /* eslint-disable sukka/unicorn/prefer-string-raw -- performance */\n switch (str.charCodeAt(index)) {\n case 92: // \\\n escape = '\\\\\\\\';\n break;\n case 94: // ^\n escape = '\\\\^';\n break;\n case 36: // $\n escape = '\\\\$';\n break;\n case 46: // .\n escape = '\\\\.';\n break;\n case 42: // *\n escape = '\\\\*';\n break;\n case 43: // +\n escape = '\\\\+';\n break;\n case 63: // ?\n escape = '\\\\?';\n break;\n case 40: // (\n escape = '\\\\(';\n break;\n case 41: // )\n escape = '\\\\)';\n break;\n case 91: // [\n escape = '\\\\[';\n break;\n case 93: // ]\n escape = '\\\\]';\n break;\n case 123: // {\n escape = '\\\\{';\n break;\n case 125: // }\n escape = '\\\\}';\n break;\n case 124: // |\n escape = '\\\\|';\n break;\n case 45: // -\n escape = '\\\\x2d';\n break;\n default:\n continue;\n }\n /* eslint-enable sukka/unicorn/prefer-string-raw */\n\n if (lastIndex !== index) {\n regexp += str.slice(lastIndex, index);\n }\n\n lastIndex = index + 1;\n regexp += escape;\n }\n\n return lastIndex === index\n ? regexp\n : regexp + str.slice(lastIndex, index);\n};\n"],"names":["r","str","match","exec","escape","regexp","index","lastIndex","len","length","charCodeAt","slice"],"mappings":"uDAAA,MAAMA,EAAI,iDAMH,SAA4BC,CAAW,EAC5C,IAAMC,EAAQF,EAAEG,IAAI,CAACF,GAErB,GAAIC,AAAU,OAAVA,EACF,OAAOD,EAGT,IAAIG,EAAS,GACTC,EAAS,GAETC,EAAQJ,EAAMI,KAAK,CACnBC,EAAY,EAGhB,IAAK,IAAMC,EAAMP,EAAIQ,MAAM,CAAEH,EAAQE,EAAKF,IAAS,CAEjD,OAAQL,EAAIS,UAAU,CAACJ,IACrB,KAAK,GACHF,EAAS,OACT,KACF,MAAK,GACHA,EAAS,MACT,KACF,MAAK,GACHA,EAAS,MACT,KACF,MAAK,GACHA,EAAS,MACT,KACF,MAAK,GACHA,EAAS,MACT,KACF,MAAK,GACHA,EAAS,MACT,KACF,MAAK,GACHA,EAAS,MACT,KACF,MAAK,GACHA,EAAS,MACT,KACF,MAAK,GACHA,EAAS,MACT,KACF,MAAK,GACHA,EAAS,MACT,KACF,MAAK,GACHA,EAAS,MACT,KACF,MAAK,IACHA,EAAS,MACT,KACF,MAAK,IACHA,EAAS,MACT,KACF,MAAK,IACHA,EAAS,MACT,KACF,MAAK,GACHA,EAAS,QACT,KACF,SACE,QACJ,CAGIG,IAAcD,GAChBD,CAAAA,GAAUJ,EAAIU,KAAK,CAACJ,EAAWD,EAAAA,EAGjCC,EAAYD,EAAQ,EACpBD,GAAUD,CACZ,CAEA,OAAOG,IAAcD,EACjBD,EACAA,EAASJ,EAAIU,KAAK,CAACJ,EAAWD,EACpC"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"fast-string-array-join.js","sources":["../../src/fast-string-array-join/index.ts"],"sourcesContent":["/**\n * A 65% faster join than the native `Array.prototype.join` for string arrays and string separator.\n */\nexport function fastStringArrayJoin(arr: string[], sep: string) {\n const len = arr.length;\n if (len === 0) {\n return '';\n }\n\n let result = arr[0];\n\n for (let i = 1; i < len; i++) {\n result += sep;\n result += arr[i];\n }\n\n return result;\n}\n"],"names":["arr","sep","len","length","result","i"],"mappings":"mFAGO,SAA6BA,CAAa,CAAEC,CAAW,EAC5D,IAAMC,EAAMF,EAAIG,MAAM,CACtB,GAAID,AAAQ,IAARA,EACF,MAAO,GAGT,IAAIE,EAASJ,CAAG,CAAC,EAAE,CAEnB,IAAK,IAAIK,EAAI,EAAGA,EAAIH,EAAKG,IACvBD,GAAUH,EACVG,GAAUJ,CAAG,CAACK,EAAE,CAGlB,OAAOD,CACT"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"fifo.js","sources":["../../src/fifo/index.ts"],"sourcesContent":["type Node<T> = [value: T, next: Node<T> | null];\n\n/** Checkout https://npm.im/fast-fifo if performance is critical */\nexport class FIFO<T> {\n private head: Node<T> | null = null;\n private tail: Node<T> | null = null;\n public $size = 0;\n\n constructor() {\n this.clear();\n }\n\n enqueue(value: T) {\n const node: Node<T> = [value, null];\n\n if (this.head) {\n this.tail![1] = node;\n this.tail = node;\n } else {\n this.head = node;\n this.tail = node;\n }\n\n this.$size++;\n }\n\n // eslint-disable-next-line @typescript-eslint/unbound-method -- alias\n push = this.enqueue;\n\n dequeue() {\n const current = this.head;\n if (!current) {\n return;\n }\n\n this.head = this.head![1];\n this.$size--;\n return current[0];\n }\n\n // eslint-disable-next-line @typescript-eslint/unbound-method -- alias\n shift = this.dequeue;\n\n peek() {\n return this.head?.[0];\n }\n\n clear() {\n this.head = null;\n this.tail = null;\n this.$size = 0;\n }\n\n get size() {\n return this.$size;\n }\n\n get length() {\n return this.$size;\n }\n\n *[Symbol.iterator]() {\n let current = this.head;\n\n while (current) {\n yield current[0];\n current = current[1];\n }\n }\n}\n"],"names":["Symbol","iterator","constructor","head","tail","$size","push","enqueue","shift","dequeue","clear","value","node","current","peek","size","length","_computedKey"],"mappings":"6DA6DIA,EAAAA,OAAOC,QAAQ,cA1DZ,MAKLC,aAAc,MAJNC,IAAuB,CAAA,UACvBC,IAAuB,CAAA,UACxBC,KAAQ,CAAA,OAqBfC,IAAO,CAAA,IAAI,CAACC,OAAO,MAcnBC,KAAQ,CAAA,IAAI,CAACC,OAAO,CAhClB,IAAI,CAACC,KAAK,EACZ,CAEAH,QAAQI,CAAQ,CAAE,CAChB,IAAMC,EAAgB,CAACD,EAAO,KAAK,AAE/B,CAAA,IAAI,CAACR,IAAI,CACX,IAAI,CAACC,IAAI,CAAE,EAAE,CAAGQ,EAGhB,IAAI,CAACT,IAAI,CAAGS,EACZ,IAAI,CAACR,IAAI,CAAGQ,EAGd,IAAI,CAACP,KAAK,EACZ,CAKAI,SAAU,CACR,IAAMI,EAAU,IAAI,CAACV,IAAI,CACzB,GAAKU,EAML,OAFA,IAAI,CAACV,IAAI,CAAG,IAAI,CAACA,IAAK,CAAC,EAAE,CACzB,IAAI,CAACE,KAAK,GACHQ,CAAO,CAAC,EAAE,AACnB,CAKAC,MAAO,CACL,OAAO,IAAI,CAACX,IAAI,EAAA,CAAG,EAAE,AACvB,CAEAO,OAAQ,CACN,IAAI,CAACP,IAAI,CAAG,KACZ,IAAI,CAACC,IAAI,CAAG,KACZ,IAAI,CAACC,KAAK,CAAG,CACf,CAEA,IAAIU,MAAO,CACT,OAAO,IAAI,CAACV,KAAK,AACnB,CAEA,IAAIW,QAAS,CACX,OAAO,IAAI,CAACX,KAAK,AACnB,CAEA,CAAA,CAAqBY,EAAA,EAAA,CACnB,IAAIJ,EAAU,IAAI,CAACV,IAAI,CAEvB,KAAOU,GACL,MAAMA,CAAO,CAAC,EAAE,CAChBA,EAAUA,CAAO,CAAC,EAAE,AAExB,CACF"}