foxts 1.6.0 → 2.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 (230) hide show
  1. package/dist/cjs/add-array-elements-to-set.js +2 -0
  2. package/dist/cjs/add-array-elements-to-set.js.map +1 -0
  3. package/dist/cjs/ahocorasick.js +2 -0
  4. package/dist/cjs/ahocorasick.js.map +1 -0
  5. package/dist/cjs/append-set-elements-to-array.js +2 -0
  6. package/dist/cjs/append-set-elements-to-array.js.map +1 -0
  7. package/dist/cjs/async-write-to-stream.js +2 -0
  8. package/dist/cjs/async-write-to-stream.js.map +1 -0
  9. package/dist/cjs/bitwise.js +2 -0
  10. package/dist/cjs/bitwise.js.map +1 -0
  11. package/dist/cjs/create-fixed-array.js +2 -0
  12. package/dist/cjs/create-fixed-array.js.map +1 -0
  13. package/dist/cjs/detect-eol.js +2 -0
  14. package/dist/cjs/detect-eol.js.map +1 -0
  15. package/dist/cjs/escape-html.js +2 -0
  16. package/dist/cjs/escape-html.js.map +1 -0
  17. package/dist/cjs/escape-string-regexp.d.ts +7 -0
  18. package/dist/cjs/escape-string-regexp.js +2 -0
  19. package/dist/cjs/escape-string-regexp.js.map +1 -0
  20. package/dist/cjs/fast-string-array-join.js +2 -0
  21. package/dist/cjs/fast-string-array-join.js.map +1 -0
  22. package/dist/cjs/fifo.js +2 -0
  23. package/dist/cjs/fifo.js.map +1 -0
  24. package/dist/cjs/fnv1a.js +2 -0
  25. package/dist/cjs/fnv1a.js.map +1 -0
  26. package/dist/cjs/fnv1a52.js +2 -0
  27. package/dist/cjs/fnv1a52.js.map +1 -0
  28. package/dist/cjs/guard.js +2 -0
  29. package/dist/cjs/guard.js.map +1 -0
  30. package/{headers-to-object/index.d.ts → dist/cjs/headers-to-object.d.ts} +1 -1
  31. package/dist/cjs/headers-to-object.js +2 -0
  32. package/dist/cjs/headers-to-object.js.map +1 -0
  33. package/dist/cjs/identity.js +2 -0
  34. package/dist/cjs/identity.js.map +1 -0
  35. package/dist/cjs/is-probably-ip.js +2 -0
  36. package/dist/cjs/is-probably-ip.js.map +1 -0
  37. package/dist/cjs/merge-headers.js +2 -0
  38. package/dist/cjs/merge-headers.js.map +1 -0
  39. package/dist/cjs/noop.js +2 -0
  40. package/dist/cjs/noop.js.map +1 -0
  41. package/dist/cjs/once.js +2 -0
  42. package/dist/cjs/once.js.map +1 -0
  43. package/{pick-random/index.d.ts → dist/cjs/pick-random.d.ts} +1 -2
  44. package/dist/cjs/pick-random.js +2 -0
  45. package/dist/cjs/pick-random.js.map +1 -0
  46. package/{random-int/index.d.ts → dist/cjs/random-int.d.ts} +1 -2
  47. package/dist/cjs/random-int.js +2 -0
  48. package/dist/cjs/random-int.js.map +1 -0
  49. package/dist/cjs/repool.js +2 -0
  50. package/dist/cjs/repool.js.map +1 -0
  51. package/{retrie/index.d.ts → dist/cjs/retrie.d.ts} +2 -2
  52. package/dist/cjs/retrie.js +2 -0
  53. package/dist/cjs/retrie.js.map +1 -0
  54. package/dist/cjs/serialized-memo.js +2 -0
  55. package/dist/cjs/serialized-memo.js.map +1 -0
  56. package/dist/cjs/simple-string-hash.js +2 -0
  57. package/dist/cjs/simple-string-hash.js.map +1 -0
  58. package/dist/cjs/tagged.js +2 -0
  59. package/dist/cjs/tagged.js.map +1 -0
  60. package/dist/cjs/text-line-stream.d.ts +22 -0
  61. package/dist/cjs/text-line-stream.js +2 -0
  62. package/dist/cjs/text-line-stream.js.map +1 -0
  63. package/dist/cjs/wait.js +2 -0
  64. package/dist/cjs/wait.js.map +1 -0
  65. package/dist/es/add-array-elements-to-set.d.mts +3 -0
  66. package/dist/es/add-array-elements-to-set.mjs +2 -0
  67. package/dist/es/add-array-elements-to-set.mjs.map +1 -0
  68. package/dist/es/ahocorasick.d.mts +3 -0
  69. package/dist/es/ahocorasick.mjs +2 -0
  70. package/dist/es/ahocorasick.mjs.map +1 -0
  71. package/dist/es/append-set-elements-to-array.d.mts +3 -0
  72. package/dist/es/append-set-elements-to-array.mjs +2 -0
  73. package/dist/es/append-set-elements-to-array.mjs.map +1 -0
  74. package/dist/es/async-write-to-stream.d.mts +18 -0
  75. package/dist/es/async-write-to-stream.mjs +2 -0
  76. package/dist/es/async-write-to-stream.mjs.map +1 -0
  77. package/dist/es/bitwise.d.mts +30 -0
  78. package/dist/es/bitwise.mjs +2 -0
  79. package/dist/es/bitwise.mjs.map +1 -0
  80. package/dist/es/create-fixed-array.d.mts +6 -0
  81. package/dist/es/create-fixed-array.mjs +2 -0
  82. package/dist/es/create-fixed-array.mjs.map +1 -0
  83. package/dist/es/detect-eol.d.mts +3 -0
  84. package/dist/es/detect-eol.mjs +2 -0
  85. package/dist/es/detect-eol.mjs.map +1 -0
  86. package/dist/es/escape-html.d.mts +3 -0
  87. package/dist/es/escape-html.mjs +2 -0
  88. package/dist/es/escape-html.mjs.map +1 -0
  89. package/dist/es/escape-string-regexp.d.mts +7 -0
  90. package/dist/es/escape-string-regexp.mjs +2 -0
  91. package/dist/es/escape-string-regexp.mjs.map +1 -0
  92. package/dist/es/fast-string-array-join.d.mts +6 -0
  93. package/dist/es/fast-string-array-join.mjs +2 -0
  94. package/dist/es/fast-string-array-join.mjs.map +1 -0
  95. package/dist/es/fifo.d.mts +18 -0
  96. package/dist/es/fifo.mjs +2 -0
  97. package/dist/es/fifo.mjs.map +1 -0
  98. package/dist/es/fnv1a.d.mts +3 -0
  99. package/{fnv1a/index.mjs → dist/es/fnv1a.mjs} +2 -1
  100. package/dist/es/fnv1a.mjs.map +1 -0
  101. package/dist/es/fnv1a52.d.mts +12 -0
  102. package/dist/es/fnv1a52.mjs +2 -0
  103. package/dist/es/fnv1a52.mjs.map +1 -0
  104. package/dist/es/guard.d.mts +20 -0
  105. package/dist/es/guard.mjs +2 -0
  106. package/dist/es/guard.mjs.map +1 -0
  107. package/dist/es/headers-to-object.d.mts +5 -0
  108. package/dist/es/headers-to-object.mjs +2 -0
  109. package/dist/es/headers-to-object.mjs.map +1 -0
  110. package/dist/es/identity.d.mts +3 -0
  111. package/dist/es/identity.mjs +2 -0
  112. package/dist/es/identity.mjs.map +1 -0
  113. package/dist/es/is-probably-ip.d.mts +8 -0
  114. package/dist/es/is-probably-ip.mjs +2 -0
  115. package/dist/es/is-probably-ip.mjs.map +1 -0
  116. package/dist/es/merge-headers.d.mts +8 -0
  117. package/dist/es/merge-headers.mjs +2 -0
  118. package/dist/es/merge-headers.mjs.map +1 -0
  119. package/dist/es/noop.d.mts +11 -0
  120. package/dist/es/noop.mjs +2 -0
  121. package/dist/es/noop.mjs.map +1 -0
  122. package/dist/es/once.d.mts +3 -0
  123. package/{once/index.mjs → dist/es/once.mjs} +2 -1
  124. package/dist/es/once.mjs.map +1 -0
  125. package/dist/es/pick-random.d.mts +9 -0
  126. package/dist/es/pick-random.mjs +2 -0
  127. package/dist/es/pick-random.mjs.map +1 -0
  128. package/dist/es/random-int.d.mts +7 -0
  129. package/dist/es/random-int.mjs +2 -0
  130. package/dist/es/random-int.mjs.map +1 -0
  131. package/dist/es/repool.d.mts +18 -0
  132. package/dist/es/repool.mjs +2 -0
  133. package/dist/es/repool.mjs.map +1 -0
  134. package/dist/es/retrie.d.mts +17 -0
  135. package/dist/es/retrie.mjs +2 -0
  136. package/dist/es/retrie.mjs.map +1 -0
  137. package/dist/es/serialized-memo.d.mts +55 -0
  138. package/dist/es/serialized-memo.mjs +2 -0
  139. package/dist/es/serialized-memo.mjs.map +1 -0
  140. package/dist/es/simple-string-hash.d.mts +3 -0
  141. package/dist/es/simple-string-hash.mjs +2 -0
  142. package/dist/es/simple-string-hash.mjs.map +1 -0
  143. package/dist/es/tagged.d.mts +6 -0
  144. package/{tagged/index.mjs → dist/es/tagged.mjs} +2 -1
  145. package/dist/es/tagged.mjs.map +1 -0
  146. package/dist/es/text-line-stream.d.mts +22 -0
  147. package/dist/es/text-line-stream.mjs +2 -0
  148. package/dist/es/text-line-stream.mjs.map +1 -0
  149. package/dist/es/wait.d.mts +4 -0
  150. package/dist/es/wait.mjs +2 -0
  151. package/dist/es/wait.mjs.map +1 -0
  152. package/package.json +257 -182
  153. package/add-array-elements-to-set/index.cjs +0 -1
  154. package/add-array-elements-to-set/index.mjs +0 -1
  155. package/ahocorasick/index.cjs +0 -1
  156. package/ahocorasick/index.mjs +0 -1
  157. package/append-set-elements-to-array/index.cjs +0 -1
  158. package/append-set-elements-to-array/index.mjs +0 -1
  159. package/async-write-to-stream/index.cjs +0 -1
  160. package/async-write-to-stream/index.mjs +0 -1
  161. package/bitwise/index.cjs +0 -1
  162. package/bitwise/index.mjs +0 -1
  163. package/create-fixed-array/index.cjs +0 -1
  164. package/create-fixed-array/index.mjs +0 -1
  165. package/detect-eol/index.cjs +0 -1
  166. package/detect-eol/index.mjs +0 -1
  167. package/escape-html/index.cjs +0 -1
  168. package/escape-html/index.mjs +0 -1
  169. package/escape-string-regexp/index.cjs +0 -1
  170. package/escape-string-regexp/index.d.ts +0 -3
  171. package/escape-string-regexp/index.mjs +0 -1
  172. package/fast-string-array-join/index.cjs +0 -1
  173. package/fast-string-array-join/index.mjs +0 -1
  174. package/fifo/index.cjs +0 -1
  175. package/fifo/index.mjs +0 -1
  176. package/fnv1a/index.cjs +0 -1
  177. package/fnv1a52/index.cjs +0 -1
  178. package/fnv1a52/index.mjs +0 -1
  179. package/guard/index.cjs +0 -1
  180. package/guard/index.mjs +0 -1
  181. package/headers-to-object/index.cjs +0 -1
  182. package/headers-to-object/index.mjs +0 -1
  183. package/identity/index.cjs +0 -1
  184. package/identity/index.mjs +0 -1
  185. package/is-probably-ip/index.cjs +0 -1
  186. package/is-probably-ip/index.mjs +0 -1
  187. package/merge-headers/index.cjs +0 -1
  188. package/merge-headers/index.mjs +0 -1
  189. package/noop/index.cjs +0 -1
  190. package/noop/index.mjs +0 -1
  191. package/once/index.cjs +0 -1
  192. package/pick-random/index.cjs +0 -1
  193. package/pick-random/index.mjs +0 -1
  194. package/random-int/index.cjs +0 -1
  195. package/random-int/index.mjs +0 -1
  196. package/repool/index.cjs +0 -1
  197. package/repool/index.mjs +0 -1
  198. package/retrie/index.cjs +0 -1
  199. package/retrie/index.mjs +0 -1
  200. package/serialized-memo/index.cjs +0 -5
  201. package/serialized-memo/index.mjs +0 -5
  202. package/simple-string-hash/index.cjs +0 -1
  203. package/simple-string-hash/index.mjs +0 -1
  204. package/tagged/index.cjs +0 -1
  205. package/ts_version_4.8_and_above_is_required.d.ts +0 -0
  206. package/wait/index.cjs +0 -1
  207. package/wait/index.mjs +0 -1
  208. /package/{add-array-elements-to-set/index.d.ts → dist/cjs/add-array-elements-to-set.d.ts} +0 -0
  209. /package/{ahocorasick/index.d.ts → dist/cjs/ahocorasick.d.ts} +0 -0
  210. /package/{append-set-elements-to-array/index.d.ts → dist/cjs/append-set-elements-to-array.d.ts} +0 -0
  211. /package/{async-write-to-stream/index.d.ts → dist/cjs/async-write-to-stream.d.ts} +0 -0
  212. /package/{bitwise/index.d.ts → dist/cjs/bitwise.d.ts} +0 -0
  213. /package/{create-fixed-array/index.d.ts → dist/cjs/create-fixed-array.d.ts} +0 -0
  214. /package/{detect-eol/index.d.ts → dist/cjs/detect-eol.d.ts} +0 -0
  215. /package/{escape-html/index.d.ts → dist/cjs/escape-html.d.ts} +0 -0
  216. /package/{fast-string-array-join/index.d.ts → dist/cjs/fast-string-array-join.d.ts} +0 -0
  217. /package/{fifo/index.d.ts → dist/cjs/fifo.d.ts} +0 -0
  218. /package/{fnv1a/index.d.ts → dist/cjs/fnv1a.d.ts} +0 -0
  219. /package/{fnv1a52/index.d.ts → dist/cjs/fnv1a52.d.ts} +0 -0
  220. /package/{guard/index.d.ts → dist/cjs/guard.d.ts} +0 -0
  221. /package/{identity/index.d.ts → dist/cjs/identity.d.ts} +0 -0
  222. /package/{is-probably-ip/index.d.ts → dist/cjs/is-probably-ip.d.ts} +0 -0
  223. /package/{merge-headers/index.d.ts → dist/cjs/merge-headers.d.ts} +0 -0
  224. /package/{noop/index.d.ts → dist/cjs/noop.d.ts} +0 -0
  225. /package/{once/index.d.ts → dist/cjs/once.d.ts} +0 -0
  226. /package/{repool/index.d.ts → dist/cjs/repool.d.ts} +0 -0
  227. /package/{serialized-memo/index.d.ts → dist/cjs/serialized-memo.d.ts} +0 -0
  228. /package/{simple-string-hash/index.d.ts → dist/cjs/simple-string-hash.d.ts} +0 -0
  229. /package/{tagged/index.d.ts → dist/cjs/tagged.d.ts} +0 -0
  230. /package/{wait/index.d.ts → dist/cjs/wait.d.ts} +0 -0
@@ -0,0 +1,2 @@
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
@@ -0,0 +1 @@
1
+ {"version":3,"file":"simple-string-hash.js","sources":["../../src/simple-string-hash/index.ts"],"sourcesContent":["import { fnv1a52 } from '../fnv1a52';\n\nexport function simpleStringHash(payload: string): string {\n return fnv1a52(payload).toString(36) + payload.length.toString(36);\n}\n"],"names":["payload","fnv1a52","toString","length"],"mappings":"8GAEO,SAA0BA,CAAe,EAC9C,OAAOC,EAAAA,OAAAA,CAAQD,GAASE,QAAQ,CAAC,IAAMF,EAAQG,MAAM,CAACD,QAAQ,CAAC,GACjE"}
@@ -0,0 +1,2 @@
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
@@ -0,0 +1 @@
1
+ {"version":3,"file":"tagged.js","sources":["../../src/tagged/index.ts"],"sourcesContent":["/**\n * @example import { tagged as html } from 'foxts/tagged';\n */\nexport function tagged(string: TemplateStringsArray, ...values: any[]) {\n return string.reduce((acc, str, i) => acc + str + (values[i] ?? ''), '');\n // let result = '';\n // for (let i = 0, len = string.length; i < len; i++) {\n // result += string[i] + (values[i] ?? '');\n // }\n // return result;\n}\n"],"names":["string","values","reduce","acc","str","i"],"mappings":"sEAGO,SAAgBA,CAA4B,CAAE,GAAGC,CAAa,EACnE,OAAOD,EAAOE,MAAM,CAAC,CAACC,EAAKC,EAAKC,IAAMF,EAAMC,EAAOH,CAAAA,CAAM,CAACI,EAAE,EAAI,EAAC,EAAI,GAMvE"}
@@ -0,0 +1,22 @@
1
+ import { TransformStream } from 'node:stream/web';
2
+
3
+ interface TextLineStreamOptions {
4
+ /** Allow splitting by solo \r */
5
+ allowCR?: boolean;
6
+ skipEmptyLines?: boolean;
7
+ }
8
+ /** Transform a stream into a stream where each chunk is divided by a newline,
9
+ * be it `\n` or `\r\n`. `\r` can be enabled via the `allowCR` option.
10
+ *
11
+ * ```ts
12
+ * const res = await fetch('https://example.com');
13
+ * const lines = res.body!
14
+ * .pipeThrough(new TextDecoderStream())
15
+ * .pipeThrough(new TextLineStream());
16
+ * ```
17
+ */
18
+ declare class TextLineStream extends TransformStream<string, string> {
19
+ constructor({ allowCR, skipEmptyLines }?: TextLineStreamOptions);
20
+ }
21
+
22
+ export { TextLineStream };
@@ -0,0 +1,2 @@
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
@@ -0,0 +1 @@
1
+ {"version":3,"file":"text-line-stream.js","sources":["../../src/text-line-stream/index.ts"],"sourcesContent":["// Copyright 2018-2023 the Deno authors. All rights reserved. MIT license.\n// This module is browser compatible.\n// Modified by Sukka (https://skk.moe) to increase compatibility and performance with Bun & Node.js.\n\nimport { TransformStream } from 'node:stream/web';\nimport { falseFn } from '../noop';\n\ninterface TextLineStreamOptions {\n /** Allow splitting by solo \\r */\n allowCR?: boolean,\n\n skipEmptyLines?: boolean\n}\n\n/** Transform a stream into a stream where each chunk is divided by a newline,\n * be it `\\n` or `\\r\\n`. `\\r` can be enabled via the `allowCR` option.\n *\n * ```ts\n * const res = await fetch('https://example.com');\n * const lines = res.body!\n * .pipeThrough(new TextDecoderStream())\n * .pipeThrough(new TextLineStream());\n * ```\n */\nexport class TextLineStream extends TransformStream<string, string> {\n // private __buf = '';\n constructor({\n allowCR = false,\n skipEmptyLines = false\n }: TextLineStreamOptions = {}) {\n let __buf = '';\n let chunkIndex = 0;\n\n const transformOnCR = allowCR\n ? (chunk: string, lfIndex: number, controller: TransformStreamDefaultController<string>) => {\n const crIndex = chunk.indexOf('\\r', chunkIndex);\n\n if (\n crIndex !== -1 && crIndex !== (chunk.length - 1)\n && (lfIndex === -1 || (lfIndex - 1) > crIndex)\n ) {\n const curChunk = chunk.slice(chunkIndex, crIndex);\n\n if (skipEmptyLines && curChunk.length === 0) {\n chunkIndex = crIndex + 1;\n return true;\n }\n\n controller.enqueue(chunk.slice(chunkIndex, crIndex));\n chunkIndex = crIndex + 1;\n\n // continue;\n return true;\n }\n\n return false;\n }\n : falseFn;\n\n super({\n transform(chunk, controller) {\n chunk = __buf + chunk;\n chunkIndex = 0;\n\n for (; ;) {\n const lfIndex = chunk.indexOf('\\n', chunkIndex);\n\n if (transformOnCR(chunk, lfIndex, controller)) {\n continue;\n }\n\n if (lfIndex === -1) {\n // we can no longer find a line break in the chunk, break the current loop\n break;\n }\n\n // enqueue current line, and loop again to find next line\n let crOrLfIndex = lfIndex;\n if (chunk[lfIndex - 1] === '\\r') {\n crOrLfIndex--;\n }\n\n const curChunk = chunk.slice(chunkIndex, crOrLfIndex);\n\n if (skipEmptyLines && curChunk.length === 0) {\n chunkIndex = lfIndex + 1;\n continue;\n }\n\n controller.enqueue(curChunk);\n chunkIndex = lfIndex + 1;\n continue;\n }\n\n __buf = chunk.slice(chunkIndex);\n },\n flush(controller) {\n if (__buf.length > 0) {\n // eslint-disable-next-line sukka/string/prefer-string-starts-ends-with -- performance\n if (allowCR && __buf[__buf.length - 1] === '\\r') {\n controller.enqueue(__buf.slice(0, -1));\n } else {\n controller.enqueue(__buf);\n }\n }\n }\n });\n }\n}\n"],"names":["TextLineStream","TransformStream","constructor","allowCR","skipEmptyLines","__buf","chunkIndex","transformOnCR","chunk","lfIndex","controller","crIndex","indexOf","length","curChunk","slice","enqueue","falseFn","transform","crOrLfIndex","flush"],"mappings":"8GAwBO,OAAMA,UAAuBC,EAAAA,eAAAA,CAElCC,YAAY,CACVC,QAAAA,EAAU,CAAA,CAAK,CACfC,eAAAA,EAAiB,CAAA,CAAK,CACA,CAAG,EAAE,CAAE,CAC7B,IAAIC,EAAQ,GACRC,EAAa,EAEXC,EAAgBJ,EAClB,CAACK,EAAeC,EAAiBC,KACjC,IAAMC,EAAUH,EAAMI,OAAO,CAAC,KAAMN,GAEpC,GACEK,AAAY,KAAZA,GAAkBA,IAAaH,EAAMK,MAAM,CAAG,GAC1CJ,CAAAA,AAAY,KAAZA,GAAmBA,EAAU,EAAKE,CAAM,EAC5C,CACA,IAAMG,EAAWN,EAAMO,KAAK,CAACT,EAAYK,UAErCP,GAAkBU,AAAoB,IAApBA,EAASD,MAAM,EAKrCH,EAAWM,OAAO,CAACR,EAAMO,KAAK,CAACT,EAAYK,IAJzCL,EAAaK,EAAU,EAChB,CAAA,CAQX,CAEA,MAAO,CAAA,GAEPM,EAAAA,OAAAA,CAEJ,KAAK,CAAC,CACJC,UAAUV,CAAK,CAAEE,CAAU,EAIzB,IAHAF,EAAQH,EAAQG,EAChBF,EAAa,IAEH,CACR,IAAMG,EAAUD,EAAMI,OAAO,CAAC,KAAMN,GAEpC,GAAIC,EAAcC,EAAOC,EAASC,GAChC,SAGF,GAAID,AAAY,KAAZA,EAEF,MAIF,IAAIU,EAAcV,CACS,CAAA,OAAvBD,CAAK,CAACC,EAAU,EAAE,EACpBU,IAGF,IAAML,EAAWN,EAAMO,KAAK,CAACT,EAAYa,GAEzC,GAAIf,GAAkBU,AAAoB,IAApBA,EAASD,MAAM,CAAQ,CAC3CP,EAAaG,EAAU,EACvB,QACF,CAEAC,EAAWM,OAAO,CAACF,GACnBR,EAAaG,EAAU,CAEzB,CAEAJ,EAAQG,EAAMO,KAAK,CAACT,EACtB,EACAc,MAAMV,CAAU,EACVL,EAAMQ,MAAM,CAAG,IAEbV,GAAWE,AAA4B,OAA5BA,CAAK,CAACA,EAAMQ,MAAM,CAAG,EAAE,CACpCH,EAAWM,OAAO,CAACX,EAAMU,KAAK,CAAC,EAAG,KAElCL,EAAWM,OAAO,CAACX,GAGzB,CACF,EACF,CACF"}
@@ -0,0 +1,2 @@
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
@@ -0,0 +1 @@
1
+ {"version":3,"file":"wait.js","sources":["../../src/wait/index.ts"],"sourcesContent":["export function wait(ms: number): Promise<void> {\n return new Promise<void>(resolve => {\n // eslint-disable-next-line sukka/prefer-timer-id -- hang timers\n setTimeout(resolve, ms);\n });\n}\n\nexport function waitWithAbort(ms: number, signal: AbortSignal): Promise<void> {\n return new Promise<void>((resolve, reject) => {\n if (signal.aborted) {\n reject(signal.reason as Error);\n return;\n }\n\n const timer = setTimeout(() => {\n signal.removeEventListener('abort', onAbort);\n resolve();\n }, ms);\n\n function onAbort() {\n clearTimeout(timer);\n signal.removeEventListener('abort', onAbort);\n reject(signal.reason as Error);\n };\n\n signal.addEventListener('abort', onAbort);\n });\n}\n"],"names":["ms","Promise","resolve","setTimeout","signal","reject","aborted","reason","timer","removeEventListener","onAbort","clearTimeout","addEventListener"],"mappings":"oEAAO,SAAcA,CAAU,EAC7B,OAAO,IAAIC,QAAcC,AAAAA,IAEvBC,WAAWD,EAASF,EACtB,EACF,wBAEO,SAAuBA,CAAU,CAAEI,CAAmB,EAC3D,OAAO,IAAIH,QAAc,CAACC,EAASG,KACjC,GAAID,EAAOE,OAAO,CAAE,CAClBD,EAAOD,EAAOG,MAAM,EACpB,MACF,CAEA,IAAMC,EAAQL,WAAW,KACvBC,EAAOK,mBAAmB,CAAC,QAASC,GACpCR,GACCF,EAAAA,GAEH,SAASU,IACPC,aAAaH,GACbJ,EAAOK,mBAAmB,CAAC,QAASC,GACpCL,EAAOD,EAAOG,MAAM,CACtB,CAEAH,EAAOQ,gBAAgB,CAAC,QAASF,EACnC,EACF"}
@@ -0,0 +1,3 @@
1
+ declare function addArrayElementsToSet<T>(set: Set<T>, arr: T[], transformer?: (item: T) => T): Set<T>;
2
+
3
+ export { addArrayElementsToSet };
@@ -0,0 +1,2 @@
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
@@ -0,0 +1 @@
1
+ {"version":3,"file":"add-array-elements-to-set.mjs","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":["addArrayElementsToSet","set","arr","transformer","identity","forEach","item","add"],"mappings":"0CAEO,SAASA,EAAyBC,CAAW,CAAEC,CAAQ,CAAEC,EAA8BC,CAAQ,EAGpG,OADAF,EAAIG,OAAO,CADC,AAACC,GAAYL,EAAIM,GAAG,CAACJ,EAAYG,KAEtCL,CACT"}
@@ -0,0 +1,3 @@
1
+ declare function createAhoCorasick(keys: string[] | Set<string> | readonly string[]): (text: string) => boolean;
2
+
3
+ export { createAhoCorasick };
@@ -0,0 +1,2 @@
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
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ahocorasick.mjs","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","createAhoCorasick","keys","root","undefined","forEach","key","node","idx","len","length","char","has","get","newNode","set","queue","beginNode","pop","failNode","push","text","i","textLen"],"mappings":"AAAA,MAAMA,UAAaC,IACjBC,YACEC,CAAuB,CAChBC,CAAsB,CAC7B,CACA,KAAK,GAAA,IAAA,CAHED,OAAAA,CAAAA,EAAAA,IAAAA,CACAC,IAAAA,CAAAA,CAGT,CACF,CAEO,SAASC,EAAkBC,CAAgD,EAChF,IAAMC,EAAO,IAAIP,EAAK,CAAA,EAAOQ,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,IAAIlB,EAAK,CAAA,EAAOQ,KAAAA,GAChCG,EAAKQ,GAAG,CAACJ,EAAMG,GACfP,EAAOO,CACT,CACF,CAGIP,IAASJ,GACXI,CAAAA,EAAKR,OAAO,CAAG,CAAA,CAAA,CAEnB,GAKA,IAAMiB,EAAgB,CAACb,EAAK,CAE5B,KAAOa,EAAMN,MAAM,EAAE,CACnB,IAAMO,EAAYD,EAAME,GAAG,GAE3BD,EAAUZ,OAAO,CAAC,CAACE,EAAMI,KACvB,IAAIQ,EAAWF,EAAUjB,IAAI,CAE7B,KAAOmB,GAAY,CAACA,EAASP,GAAG,CAACD,IAC/BQ,EAAWA,EAASnB,IAAI,AAG1BO,CAAAA,EAAKP,IAAI,CAAGmB,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,EAAKP,IAAI,CAKlB,GAAIO,AAFJA,CAAAA,EAAOA,EAAOA,EAAKM,GAAG,CAACF,GAASR,CAAAA,EAEvBJ,OAAO,CACd,MAAO,CAAA,CAEX,CAEA,MAAO,CAAA,CACT,CACF"}
@@ -0,0 +1,3 @@
1
+ declare function appendSetElementsToArray<T>(dest: T[], source: Set<T> | Array<Set<T>>, transformer?: (item: T) => T): T[];
2
+
3
+ export { appendSetElementsToArray };
@@ -0,0 +1,2 @@
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
@@ -0,0 +1 @@
1
+ {"version":3,"file":"append-set-elements-to-array.mjs","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","appendSetElementsToArray","identity","Array","isArray","i","len","length"],"mappings":"0CAEA,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,CAEO,SAASU,EACdV,CAAS,CACTC,CAA8B,CAC9BC,EAA8BS,CAAQ,EAEtC,GAAI,CAACC,MAAMC,OAAO,CAACZ,GACjB,OAAOF,EAA8BC,EAAMC,EAAQC,GAGrD,IAAK,IAAIY,EAAI,EAAGC,EAAMd,EAAOe,MAAM,CAAEF,EAAIC,EAAKD,IAC5Cf,EAA8BC,EAAMC,CAAM,CAACa,EAAE,CAAEZ,GAGjD,OAAOF,CACT"}
@@ -0,0 +1,18 @@
1
+ import { Writable } from 'node:stream';
2
+
3
+ /**
4
+ * A small utility function for writing chunk to a stream, and only return promise when needed (stream backpressure)
5
+ *
6
+ * ```ts
7
+ * const writeStream = fs.createWriteStream(outputFile);
8
+ * for (const line of source) {
9
+ * const p = asyncWriteToStream(writeStream, line + '\n');
10
+ * if (p) {
11
+ * // eslint-disable-next-line no-await-in-loop -- stream backpressure
12
+ * await p;
13
+ * }
14
+ * }
15
+ */
16
+ declare function asyncWriteToStream<T>(stream: Writable, chunk: T): Promise<unknown> | null;
17
+
18
+ export { asyncWriteToStream };
@@ -0,0 +1,2 @@
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
@@ -0,0 +1 @@
1
+ {"version":3,"file":"async-write-to-stream.mjs","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":["asyncWriteToStream","stream","chunk","write","once"],"mappings":"mCAgBO,SAASA,EAAsBC,CAAgB,CAAEC,CAAQ,SAE9D,AADmBD,EAAOE,KAAK,CAACD,GAIzB,KAFEE,EAAKH,EAAQ,QAGxB"}
@@ -0,0 +1,30 @@
1
+ declare function bitCount(n: number): number;
2
+ declare const getBit: (n: number, mask: number) => boolean;
3
+ declare const missingBit: (n: number, mask: number) => boolean;
4
+ declare const setBit: (n: number, mask: number) => number;
5
+ declare const deleteBit: (n: number, mask: number) => number;
6
+ /** Packs two 16-bit integers (0~65535) into one 32-bit integer */
7
+ declare const packTwoBits: (a: number, b: number) => number;
8
+ declare const unpackTwoBitsFirst: (value: number) => number;
9
+ declare const unpackTwoBitsSecond: (value: number) => number;
10
+ /**
11
+ * Unpacks two 16-bit integers (0~65535) from one 32-bit integer
12
+ *
13
+ * @param value - The 32-bit integer to unpack
14
+ * @param arr - An optional array to store the unpacked values, useful if you are trying to re-use arrays
15
+ */
16
+ declare function unpackTwoBits(value: number, arr?: [a: number, b: number]): [a: number, b: number];
17
+ /** Packs three 10-bit integers (0~1023) into one 32-bit integer */
18
+ declare const packThreeBits: (a: number, b: number, c: number) => number;
19
+ declare const unpackThreeBitsFirst: (value: number) => number;
20
+ declare const unpackThreeBitsSecond: (value: number) => number;
21
+ declare const unpackThreeBitsThird: (value: number) => number;
22
+ /**
23
+ * Unpacks three 10-bit integers (0~1023) from one 32-bit integer
24
+ *
25
+ * @param value - The 32-bit integer to unpack
26
+ * @param arr - An optional array to store the unpacked values, useful if you are trying to re-use arrays
27
+ */
28
+ declare function unpackThreeBits(value: number, arr?: [a: number, b: number, c: number]): [a: number, b: number, c: number];
29
+
30
+ export { bitCount, deleteBit, getBit, missingBit, packThreeBits, packTwoBits, setBit, unpackThreeBits, unpackThreeBitsFirst, unpackThreeBitsSecond, unpackThreeBitsThird, unpackTwoBits, unpackTwoBitsFirst, unpackTwoBitsSecond };
@@ -0,0 +1,2 @@
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
@@ -0,0 +1 @@
1
+ {"version":3,"file":"bitwise.mjs","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":["bitCount","n","getBit","mask","missingBit","setBit","deleteBit","packTwoBits","a","b","unpackTwoBitsFirst","value","unpackTwoBitsSecond","unpackTwoBits","arr","Array","from","keys","packThreeBits","c","unpackThreeBitsFirst","unpackThreeBitsSecond","unpackThreeBitsThird","unpackThreeBits"],"mappings":"AACO,SAASA,EAASC,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,CAEO,IAAMC,EAAS,CAACD,EAAWE,IAAiB,CAAC,CAAEF,CAAAA,EAAIE,CAAG,EAChDC,EAAa,CAACH,EAAWE,IAA0B,CAAEF,CAAAA,EAAIE,CAAG,EAC5DE,EAAS,CAACJ,EAAWE,IAAiBF,EAAIE,EAC1CG,EAAY,CAACL,EAAWE,IAAiBF,EAAI,CAACE,EAG9CI,EAAc,CAACC,EAAWC,IAAuBD,GAAK,GAAMC,EAE5DC,EAAqB,AAACC,GAA0BA,GAAU,GAAM,MAChEC,EAAsB,AAACD,GAA0BA,AAAQ,MAARA,EAOvD,SAASE,EAAcF,CAAa,CAAEG,EAA8BC,MAAMC,IAAI,CAAC,IAAU,CAAGC,IAAI,GAAU,EAG/G,OAFAH,CAAG,CAAC,EAAE,CAAGJ,EAAmBC,GAC5BG,CAAG,CAAC,EAAE,CAAGF,EAAoBD,GACtBG,CACT,CAGaI,IAAAA,EAAgB,CAACV,EAAWC,EAAWU,IAAsBX,GAAM,GAAOC,GAAK,GAAMU,EAErFC,EAAuB,AAACT,GAA0BA,GAAU,GAAM,KAClEU,EAAwB,AAACV,GAA0BA,GAAU,GAAM,KACnEW,EAAuB,AAACX,GAA0BA,AAAQ,KAARA,EAOxD,SAASY,EAAgBZ,CAAa,CAAEG,EAAyCC,MAAMC,IAAI,CAAC,KAAU,CAAGC,IAAI,GAAU,EAI5H,OAHAH,CAAG,CAAC,EAAE,CAAGM,EAAqBT,GAC9BG,CAAG,CAAC,EAAE,CAAGO,EAAsBV,GAC/BG,CAAG,CAAC,EAAE,CAAGQ,EAAqBX,GACvBG,CACT"}
@@ -0,0 +1,6 @@
1
+ declare function createFixedArrayWithoutGC(length: number): readonly number[];
2
+ declare function createFixedArrayWithGC(length: number): readonly number[];
3
+ declare const createFixedArray: typeof createFixedArrayWithGC;
4
+ declare const EMPTY_ARRAY: readonly number[];
5
+
6
+ export { EMPTY_ARRAY, createFixedArray, createFixedArrayWithGC, createFixedArrayWithoutGC };
@@ -0,0 +1,2 @@
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
@@ -0,0 +1 @@
1
+ {"version":3,"file":"create-fixed-array.mjs","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":"AAAA,IAAMA,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,IAAME,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,KAEaG,EAAmB,AAAmB,YAAnB,OAAOD,QAAyBJ,EAAyBN,EAC5EY,EAAcD,EAAiB"}
@@ -0,0 +1,3 @@
1
+ declare function detectEol(str: string): "\n" | "\r\n";
2
+
3
+ export { detectEol };
@@ -0,0 +1,2 @@
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
@@ -0,0 +1 @@
1
+ {"version":3,"file":"detect-eol.mjs","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":["detectEol","str","i","len","length","c"],"mappings":"AAAO,SAASA,EAAUC,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"}
@@ -0,0 +1,3 @@
1
+ declare function escapeHTML(str: string): string;
2
+
3
+ export { escapeHTML };
@@ -0,0 +1,2 @@
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
@@ -0,0 +1 @@
1
+ {"version":3,"file":"escape-html.mjs","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","escapeHTML","str","match","exec","escape","html","index","lastIndex","len","length","charCodeAt","slice"],"mappings":"AAAA,IAAMA,EAAe,UACd,SAASC,EAAWC,CAAW,EACpC,IAAMC,EAAQH,EAAaI,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"}
@@ -0,0 +1,7 @@
1
+ /**
2
+ * Escape characters with special meaning either inside or outside character sets.
3
+ * 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.
4
+ */
5
+ declare function escapeStringRegexp(str: string): string;
6
+
7
+ export { escapeStringRegexp };
@@ -0,0 +1,2 @@
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
@@ -0,0 +1 @@
1
+ {"version":3,"file":"escape-string-regexp.mjs","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","escapeStringRegexp","str","match","exec","escape","regexp","index","lastIndex","len","length","charCodeAt","slice"],"mappings":"AAAA,IAAMA,EAAI,sBAMH,SAASC,EAAmBC,CAAW,EAC5C,IAAMC,EAAQH,EAAEI,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"}
@@ -0,0 +1,6 @@
1
+ /**
2
+ * A 65% faster join than the native `Array.prototype.join` for string arrays and string separator.
3
+ */
4
+ declare function fastStringArrayJoin(arr: string[], sep: string): string;
5
+
6
+ export { fastStringArrayJoin };
@@ -0,0 +1,2 @@
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
@@ -0,0 +1 @@
1
+ {"version":3,"file":"fast-string-array-join.mjs","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":["fastStringArrayJoin","arr","sep","len","length","result","i"],"mappings":"AAGO,SAASA,EAAoBC,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"}
@@ -0,0 +1,18 @@
1
+ /** Checkout https://npm.im/fast-fifo if performance is critical */
2
+ declare class FIFO<T> {
3
+ private head;
4
+ private tail;
5
+ $size: number;
6
+ constructor();
7
+ enqueue(value: T): void;
8
+ push: (value: T) => void;
9
+ dequeue(): T | undefined;
10
+ shift: () => T | undefined;
11
+ peek(): T | undefined;
12
+ clear(): void;
13
+ get size(): number;
14
+ get length(): number;
15
+ [Symbol.iterator](): Generator<T, void, unknown>;
16
+ }
17
+
18
+ export { FIFO };
@@ -0,0 +1,2 @@
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
@@ -0,0 +1 @@
1
+ {"version":3,"file":"fifo.mjs","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","FIFO","constructor","head","tail","$size","push","enqueue","shift","dequeue","clear","value","node","current","peek","size","length","_computedKey"],"mappings":"MA6DIA,EAAAA,OAAOC,QAAQ,AA1DZ,OAAMC,EAKXC,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"}
@@ -0,0 +1,3 @@
1
+ declare function fnv1a(s: string): number;
2
+
3
+ export { fnv1a };
@@ -1 +1,2 @@
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};
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
@@ -0,0 +1 @@
1
+ {"version":3,"file":"fnv1a.mjs","sources":["../../src/fnv1a/index.ts"],"sourcesContent":["export function fnv1a(s: string) {\n let h = 0x81_1C_9D_C5;\n\n for (let i = 0, l = s.length; i < l; i++) {\n h ^= s.charCodeAt(i);\n h += (h << 1) + (h << 4) + (h << 7) + (h << 8) + (h << 24);\n }\n\n return (h >>> 0);\n}\n"],"names":["fnv1a","s","h","i","l","length","charCodeAt"],"mappings":"AAAO,SAASA,EAAMC,CAAS,EAC7B,IAAIC,EAAI,WAER,IAAK,IAAIC,EAAI,EAAGC,EAAIH,EAAEI,MAAM,CAAEF,EAAIC,EAAGD,IACnCD,GAAKD,EAAEK,UAAU,CAACH,GAClBD,GAAK,AAACA,CAAAA,GAAK,CAAA,EAAMA,CAAAA,GAAK,CAAA,EAAMA,CAAAA,GAAK,CAAA,EAAMA,CAAAA,GAAK,CAAA,EAAMA,CAAAA,GAAK,EAAA,EAGzD,OAAQA,IAAM,CAChB"}
@@ -0,0 +1,12 @@
1
+ /**
2
+ * FNV-1a Hash implementation
3
+ * @author Travis Webb (tjwebb) <me@traviswebb.com>
4
+ *
5
+ * Ported from https://github.com/tjwebb/fnv-plus/blob/master/index.js
6
+ *
7
+ * Simplified, optimized and add modified for 52 bit, which provides a larger hash space
8
+ * and still making use of Javascript's 53-bit integer space.
9
+ */
10
+ declare function fnv1a52(str: string): number;
11
+
12
+ export { fnv1a52 };
@@ -0,0 +1,2 @@
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
@@ -0,0 +1 @@
1
+ {"version":3,"file":"fnv1a52.mjs","sources":["../../src/fnv1a52/index.ts"],"sourcesContent":["/**\n * FNV-1a Hash implementation\n * @author Travis Webb (tjwebb) <me@traviswebb.com>\n *\n * Ported from https://github.com/tjwebb/fnv-plus/blob/master/index.js\n *\n * Simplified, optimized and add modified for 52 bit, which provides a larger hash space\n * and still making use of Javascript's 53-bit integer space.\n */\nexport function fnv1a52(str: string) {\n const len = str.length;\n let i = 0,\n t0 = 0,\n v0 = 0x2325,\n t1 = 0,\n v1 = 0x8422,\n t2 = 0,\n v2 = 0x9CE4,\n t3 = 0,\n v3 = 0xCBF2;\n\n while (i < len) {\n v0 ^= str.charCodeAt(i++);\n t0 = v0 * 435;\n t1 = v1 * 435;\n t2 = v2 * 435;\n t3 = v3 * 435;\n t2 += v0 << 8;\n t3 += v1 << 8;\n t1 += t0 >>> 16;\n v0 = t0 & 65535;\n t2 += t1 >>> 16;\n v1 = t1 & 65535;\n v3 = (t3 + (t2 >>> 16)) & 65535;\n v2 = t2 & 65535;\n }\n\n return (\n (v3 & 15) * 281_474_976_710_656\n + v2 * 4_294_967_296\n + v1 * 65536\n + (v0 ^ (v3 >> 4))\n );\n}\n"],"names":["fnv1a52","str","len","length","i","t0","v0","t1","v1","t2","v2","t3","v3","charCodeAt"],"mappings":"AASO,SAASA,EAAQC,CAAW,EACjC,IAAMC,EAAMD,EAAIE,MAAM,CAClBC,EAAI,EACNC,EAAK,EACLC,EAAK,KACLC,EAAK,EACLC,EAAK,MACLC,EAAK,EACLC,EAAK,MACLC,EAAK,EACLC,EAAK,MAEP,KAAOR,EAAIF,GACTI,GAAML,EAAIY,UAAU,CAACT,KACrBC,EAAKC,AAAK,IAALA,EACLC,EAAKC,AAAK,IAALA,EACLC,EAAKC,AAAK,IAALA,EACLC,EAAKC,AAAK,IAALA,EACLH,GAAMH,GAAM,EACZK,GAAMH,GAAM,EACZD,GAAMF,IAAO,GACbC,EAAKD,AAAK,MAALA,EACLI,GAAMF,IAAO,GACbC,EAAKD,AAAK,MAALA,EACLK,EAAKD,EAAOF,CAAAA,IAAO,EAAA,EAAO,MAC1BC,EAAKD,AAAK,MAALA,EAGP,MACE,AAACG,CAAAA,AAAK,GAALA,GAAW,gBACVF,AAAK,YAALA,EACAF,AAAK,MAALA,EACCF,CAAAA,EAAMM,GAAM,CAAA,CAEnB"}
@@ -0,0 +1,20 @@
1
+ declare function not(arg: null): <T>(i: T | null) => i is T;
2
+ declare function not(arg: undefined): <T>(i: T | undefined) => i is T;
3
+ declare function not(arg: false): <T>(i: T | false) => i is T;
4
+ declare function not(arg: 'nullish'): <T>(i: T | null | undefined) => i is T;
5
+ declare function not(arg: 'falsy'): <T>(i: T | 0 | '' | false | null | undefined) => i is T;
6
+ declare function is(arg: null): (i: unknown) => i is null;
7
+ declare function is(arg: undefined): (i: unknown) => i is undefined;
8
+ declare function is(arg: false): (i: unknown) => i is false;
9
+ declare function is(arg: 'nullish'): (i: unknown) => i is null | undefined;
10
+ declare function is(arg: 'falsy'): (i: unknown) => i is 0 | '' | false | null | undefined;
11
+ declare function is(arg: 'truthy'): <T>(i: T | 0 | '' | false | null | undefined) => i is T;
12
+ declare const isTruthy: <T>(i: T | 0 | "" | false | null | undefined) => i is T;
13
+ declare const isFalsy: (i: unknown) => i is 0 | "" | false | null | undefined;
14
+ declare const isNonNull: <T>(i: T | null) => i is T;
15
+ declare const isNonNullish: <T>(i: T | null | undefined) => i is T;
16
+ declare function nullthrow<T>(value: T | null | undefined, message?: string): T;
17
+ declare function invariant<T>(value: T | null | undefined, message?: string): asserts value is T;
18
+ declare function never(value: never, valueMetaName?: string): never;
19
+
20
+ export { invariant, is, isFalsy, isNonNull, isNonNullish, isTruthy, never, not, nullthrow };
@@ -0,0 +1,2 @@
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
@@ -0,0 +1 @@
1
+ {"version":3,"file":"guard.mjs","sources":["../../src/guard/index.ts"],"sourcesContent":["export function not(arg: null): <T>(i: T | null) => i is T;\nexport function not(arg: undefined): <T>(i: T | undefined) => i is T;\nexport function not(arg: false): <T>(i: T | false) => i is T;\nexport function not(arg: 'nullish'): <T>(i: T | null | undefined) => i is T;\nexport function not(arg: 'falsy'): <T>(i: T | 0 | '' | false | null | undefined) => i is T;\nexport function not(arg: null | undefined | false | 'nullish' | 'falsy') {\n switch (arg) {\n case null:\n return <T>(i: T | null): i is T => i !== null;\n case undefined:\n return <T>(i: T | undefined): i is T => i !== undefined;\n case false:\n return <T>(i: T | false): i is T => i !== false;\n case 'nullish':\n return <T>(i: T | null | undefined): i is T => i != null;\n case 'falsy':\n return <T>(i: T | 0 | '' | false | null | undefined): i is T => !!i;\n default:\n never(arg, 'argument');\n }\n}\n\nexport function is(arg: null): (i: unknown) => i is null;\nexport function is(arg: undefined): (i: unknown) => i is undefined;\nexport function is(arg: false): (i: unknown) => i is false;\nexport function is(arg: 'nullish'): (i: unknown) => i is null | undefined;\nexport function is(arg: 'falsy'): (i: unknown) => i is 0 | '' | false | null | undefined;\nexport function is(arg: 'truthy'): <T>(i: T | 0 | '' | false | null | undefined) => i is T;\nexport function is(arg: null | undefined | false | 'nullish' | 'falsy' | 'truthy') {\n switch (arg) {\n case null:\n return (i: unknown): i is null => i === null;\n case undefined:\n return (i: unknown): i is undefined => i === undefined;\n case false:\n return (i: unknown): i is false => i === false;\n case 'nullish':\n return (i: unknown): i is null | undefined => i == null;\n case 'falsy':\n return (i: unknown): i is 0 | '' | false | null | undefined => !i;\n case 'truthy':\n return <T>(i: T | 0 | '' | false | null | undefined): i is T => !!i;\n default:\n never(arg, 'argument');\n }\n}\n\nexport const isTruthy = is('truthy');\nexport const isFalsy = is('falsy');\nexport const isNonNull = not(null);\nexport const isNonNullish = not('nullish');\n\nexport function nullthrow<T>(value: T | null | undefined, message = '[foxts/invariant] \"value\" is null or undefined'): T {\n if (value === null || value === undefined) {\n throw new TypeError(message);\n }\n return value;\n}\n\nexport function invariant<T>(value: T | null | undefined, message = '[foxts/invariant] \"value\" is null or undefined'): asserts value is T {\n if (value === null || value === undefined) {\n throw new TypeError(message);\n }\n}\n\nexport function never(value: never, valueMetaName = 'value'): never {\n throw new TypeError(`Unexpected ${valueMetaName}: ${value} as ${JSON.stringify(typeof value)}, should be \"never\"`);\n}\n"],"names":["not","arg","i","undefined","never","is","isTruthy","isFalsy","isNonNull","isNonNullish","nullthrow","value","message","TypeError","invariant","valueMetaName","JSON","stringify"],"mappings":"AAKO,SAASA,EAAIC,CAAmD,EACrE,OAAQA,GACN,KAAK,KACH,OAAO,AAAIC,GAAwBA,AAAM,OAANA,CACrC,MAAKC,KAAAA,EACH,OAAO,AAAID,GAA6BA,AAAMC,KAAAA,IAAND,CAC1C,KAAK,CAAA,EACH,OAAO,AAAIA,GAAyBA,AAAM,CAAA,IAANA,CACtC,KAAK,UACH,OAAO,AAAIA,GAAoCA,AAAK,MAALA,CACjD,KAAK,QACH,OAAO,AAAIA,GAAqD,CAAC,CAACA,CACpE,SACEE,EAAMH,EAAK,WACf,CACF,CAQO,SAASI,EAAGJ,CAA8D,EAC/E,OAAQA,GACN,KAAK,KACH,OAAO,AAACC,GAA0BA,AAAM,OAANA,CACpC,MAAKC,KAAAA,EACH,OAAO,AAACD,GAA+BA,AAAMC,KAAAA,IAAND,CACzC,KAAK,CAAA,EACH,OAAO,AAACA,GAA2BA,AAAM,CAAA,IAANA,CACrC,KAAK,UACH,OAAO,AAACA,GAAsCA,AAAK,MAALA,CAChD,KAAK,QACH,OAAO,AAACA,GAAuD,CAACA,CAClE,KAAK,SACH,OAAO,AAAIA,GAAqD,CAAC,CAACA,CACpE,SACEE,EAAMH,EAAK,WACf,CACF,CAEO,IAAMK,EAAWD,EAAG,UACdE,EAAUF,EAAG,SACbG,EAAYR,EAAI,MAChBS,EAAeT,EAAI,WAEzB,SAASU,EAAaC,CAA2B,CAAEC,EAAU,gDAAgD,EAClH,GAAID,MAAAA,EACF,MAAM,AAAIE,UAAUD,GAEtB,OAAOD,CACT,CAEO,SAASG,EAAaH,CAA2B,CAAEC,EAAU,gDAAgD,EAClH,GAAID,MAAAA,EACF,MAAM,AAAIE,UAAUD,EAExB,CAEO,SAASR,EAAMO,CAAY,CAAEI,EAAgB,OAAO,EACzD,MAAM,AAAIF,UAAU,CAAC,WAAW,EAAEE,EAAc,EAAE,EAAEJ,EAAM,IAAI,EAAEK,KAAKC,SAAS,CAAC,OAAON,GAAO,mBAAmB,CAAC,CACnH"}
@@ -0,0 +1,5 @@
1
+ import { HeadersInitLike } from './merge-headers.mjs';
2
+
3
+ declare function headersToObject(headers: HeadersInitLike | Headers): Record<string, string>;
4
+
5
+ export { headersToObject };
@@ -0,0 +1,2 @@
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
@@ -0,0 +1 @@
1
+ {"version":3,"file":"headers-to-object.mjs","sources":["../../src/headers-to-object/index.ts"],"sourcesContent":["import type { HeadersInitLike } from '../merge-headers';\n\nexport function headersToObject(headers: HeadersInitLike | Headers): Record<string, string> {\n const obj: Record<string, string> = {};\n\n new Headers(headers).forEach((value: string, key: string) => {\n obj[key] = value;\n });\n\n return obj;\n}\n"],"names":["headersToObject","headers","obj","Headers","forEach","value","key"],"mappings":"AAEO,SAASA,EAAgBC,CAAkC,EAChE,IAAMC,EAA8B,CAAC,EAMrC,OAJA,IAAIC,QAAQF,GAASG,OAAO,CAAC,CAACC,EAAeC,KAC3CJ,CAAG,CAACI,EAAI,CAAGD,CACb,GAEOH,CACT"}
@@ -0,0 +1,3 @@
1
+ declare function identity<T = any, R = T>(item: T): R;
2
+
3
+ export { identity };
@@ -0,0 +1,2 @@
1
+ function t(t){return t}export{t as identity};
2
+ //# sourceMappingURL=identity.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"identity.mjs","sources":["../../src/identity/index.ts"],"sourcesContent":["export function identity<T = any, R = T>(item: T): R {\n return item as any;\n}\n"],"names":["identity","item"],"mappings":"AAAO,SAASA,EAAyBC,CAAO,EAC9C,OAAOA,CACT"}
@@ -0,0 +1,8 @@
1
+ /**
2
+ * Check if a hostname is an IP. You should be aware that this only works
3
+ * because `hostname` is already garanteed to be a valid hostname!
4
+ */
5
+ declare function isProbablyIpv4(hostname: string): boolean;
6
+ declare function isProbablyIpv6(hostname: string): boolean;
7
+
8
+ export { isProbablyIpv4, isProbablyIpv6 };
@@ -0,0 +1,2 @@
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
@@ -0,0 +1 @@
1
+ {"version":3,"file":"is-probably-ip.mjs","sources":["../../src/is-probably-ip/index.ts"],"sourcesContent":["/**\n * Check if a hostname is an IP. You should be aware that this only works\n * because `hostname` is already garanteed to be a valid hostname!\n */\nexport function isProbablyIpv4(hostname: string): boolean {\n // Cannot be shorted than 1.1.1.1 or longer than 255.255.255.255\n if (hostname.length < 7 || hostname.length > 15) {\n return false;\n }\n\n let numberOfDots = 0;\n\n for (let i = 0; i < hostname.length; i += 1) {\n const code = hostname.charCodeAt(i);\n\n if (code === 46 /* '.' */) {\n numberOfDots += 1;\n } else if (code < 48 /* '0' */ || code > 57 /* '9' */) {\n return false;\n }\n }\n\n return (\n numberOfDots === 3\n && hostname.charCodeAt(0) !== 46 /* '.' */\n && hostname.charCodeAt(hostname.length - 1) !== 46 /* '.' */\n );\n}\n\nexport function isProbablyIpv6(hostname: string): boolean {\n if (hostname.length < 3) {\n return false;\n }\n\n let start = hostname[0] === '[' ? 1 : 0;\n let end = hostname.length;\n\n if (hostname[end - 1] === ']') {\n end -= 1;\n }\n\n // We only consider the maximum size of a normal IPV6. Note that this will\n // fail on so-called \"IPv4 mapped IPv6 addresses\" but this is a corner-case\n // and a proper validation library should be used for these.\n if (end - start > 39) {\n return false;\n }\n\n /* eslint-disable sukka/no-single-return -- here it goes */\n let hasColon = false;\n\n for (; start < end; start += 1) {\n const code = hostname.charCodeAt(start);\n\n if (code === 58 /* ':' */) {\n hasColon = true;\n } else if (\n (code < 48 || code > 57) // does not match 0-9\n && (code < 97 || code > 102) // and does not match a-f\n && (code < 65 || code > 90) // and does not match A-F\n ) {\n // does not contain any characters that are required in a valid IPv6\n return false;\n }\n }\n\n return hasColon;\n /* eslint-enable sukka/no-single-return -- here it goes */\n}\n"],"names":["isProbablyIpv4","hostname","length","numberOfDots","i","code","charCodeAt","isProbablyIpv6","start","end","hasColon"],"mappings":"AAIO,SAASA,EAAeC,CAAgB,EAE7C,GAAIA,EAASC,MAAM,CAAG,GAAKD,EAASC,MAAM,CAAG,GAC3C,MAAO,CAAA,EAGT,IAAIC,EAAe,EAEnB,IAAK,IAAIC,EAAI,EAAGA,EAAIH,EAASC,MAAM,CAAEE,GAAK,EAAG,CAC3C,IAAMC,EAAOJ,EAASK,UAAU,CAACF,GAEjC,GAAIC,AAAS,KAATA,EACFF,GAAgB,OACX,GAAIE,EAAO,IAAgBA,EAAO,GACvC,MAAO,CAAA,CAEX,CAEA,OACEF,AAAiB,IAAjBA,GACGF,AAA2B,KAA3BA,EAASK,UAAU,CAAC,IACpBL,AAA6C,KAA7CA,EAASK,UAAU,CAACL,EAASC,MAAM,CAAG,EAE7C,CAEO,SAASK,EAAeN,CAAgB,EAC7C,GAAIA,EAASC,MAAM,CAAG,EACpB,MAAO,CAAA,EAGT,IAAIM,EAAQP,CAAAA,CAAAA,AAAgB,MAAhBA,CAAQ,CAAC,EAAE,EACnBQ,EAAMR,EAASC,MAAM,CASzB,GAP0B,MAAtBD,CAAQ,CAACQ,EAAM,EAAE,EACnBA,CAAAA,GAAO,CAAA,EAMLA,EAAMD,EAAQ,GAChB,MAAO,CAAA,EAIT,IAAIE,EAAW,CAAA,EAEf,KAAOF,EAAQC,EAAKD,GAAS,EAAG,CAC9B,IAAMH,EAAOJ,EAASK,UAAU,CAACE,GAEjC,GAAIH,AAAS,KAATA,EACFK,EAAW,CAAA,OACN,GACL,AAACL,CAAAA,EAAO,IAAMA,EAAO,KACjBA,CAAAA,EAAO,IAAMA,EAAO,MACpBA,CAAAA,EAAO,IAAMA,EAAO,IAGxB,MAAO,CAAA,CAEX,CAEA,OAAOK,CACP"}
@@ -0,0 +1,8 @@
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>;
4
+ declare function mergeHeaders(dest: HeadersInitLike, source: HeadersInitLike): Headers;
5
+ declare function mergeNodeHttpHeaders(dest: IncomingHttpHeadersLike, source: IncomingHttpHeadersLike): IncomingHttpHeadersLike;
6
+ declare function mergeNodeHttpHeaders(dest: OutgoingHttpHeadersLike, source: IncomingHttpHeadersLike | OutgoingHttpHeadersLike): OutgoingHttpHeadersLike;
7
+
8
+ export { type HeadersInitLike, type IncomingHttpHeadersLike, type OutgoingHttpHeadersLike, mergeHeaders, mergeNodeHttpHeaders };
@@ -0,0 +1,2 @@
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
@@ -0,0 +1 @@
1
+ {"version":3,"file":"merge-headers.mjs","sources":["../../src/merge-headers/index.ts"],"sourcesContent":["export type HeadersInitLike = string[][] | Record<string, string | readonly string[]> | Headers;\nexport type IncomingHttpHeadersLike = Record<string, string | string[] | undefined>;\nexport type OutgoingHttpHeadersLike = Record<string, number | string | string[] | undefined>;\n\nexport function mergeHeaders(dest: HeadersInitLike, source: HeadersInitLike): Headers {\n const destHeaders = new Headers(dest);\n const sourceHeaders = new Headers(source);\n\n sourceHeaders.forEach((value: string, key: string) => {\n destHeaders.set(key, value);\n });\n\n return destHeaders;\n}\n\nexport function mergeNodeHttpHeaders(dest: IncomingHttpHeadersLike, source: IncomingHttpHeadersLike): IncomingHttpHeadersLike;\nexport function mergeNodeHttpHeaders(dest: OutgoingHttpHeadersLike, source: IncomingHttpHeadersLike | OutgoingHttpHeadersLike): OutgoingHttpHeadersLike;\nexport function mergeNodeHttpHeaders(dest: IncomingHttpHeadersLike | OutgoingHttpHeadersLike, source: IncomingHttpHeadersLike | OutgoingHttpHeadersLike): IncomingHttpHeadersLike | OutgoingHttpHeadersLike {\n return Object.assign({}, dest, source);\n}\n"],"names":["mergeHeaders","dest","source","destHeaders","Headers","sourceHeaders","forEach","value","key","set","mergeNodeHttpHeaders","Object","assign"],"mappings":"AAIO,SAASA,EAAaC,CAAqB,CAAEC,CAAuB,EACzE,IAAMC,EAAc,IAAIC,QAAQH,GAOhC,OAJAI,AAFsB,IAAID,QAAQF,GAEpBI,OAAO,CAAC,CAACC,EAAeC,KACpCL,EAAYM,GAAG,CAACD,EAAKD,EACvB,GAEOJ,CACT,CAIO,SAASO,EAAqBT,CAAuD,CAAEC,CAAyD,EACrJ,OAAOS,OAAOC,MAAM,CAAC,GAAIX,EAAMC,EACjC"}
@@ -0,0 +1,11 @@
1
+ interface Noop<T = any> {
2
+ (...args: any[]): T;
3
+ }
4
+ declare const noop: Noop;
5
+ declare const trueFn: Noop<true>;
6
+ declare const falseFn: Noop<false>;
7
+ declare const throwFn: Noop<never>;
8
+ declare const asyncNoop: Noop<Promise<any>>;
9
+ declare const asyncNeverFn: Noop<Promise<never>>;
10
+
11
+ export { type Noop, asyncNeverFn, asyncNoop, falseFn, noop, throwFn, trueFn };
@@ -0,0 +1,2 @@
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
@@ -0,0 +1 @@
1
+ {"version":3,"file":"noop.mjs","sources":["../../src/noop/index.ts"],"sourcesContent":["export interface Noop<T = any> {\n (...args: any[]): T\n}\nexport const noop: Noop = () => { /* noop */ };\n\nexport const trueFn: Noop<true> = () => true;\nexport const falseFn: Noop<false> = () => false;\n\n// eslint-disable-next-line sukka/unicorn/error-message -- deliberately w/o error msg\nexport const throwFn: Noop<never> = () => { throw new Error(); };\n\nconst p = Promise.resolve();\nexport const asyncNoop: Noop<Promise<any>> = () => p;\n\nconst neverResolvedPromise = new Promise<never>(noop);\nexport const asyncNeverFn: Noop<Promise<never>> = () => neverResolvedPromise;\n"],"names":["noop","trueFn","falseFn","throwFn","Error","p","Promise","resolve","asyncNoop","neverResolvedPromise","asyncNeverFn"],"mappings":"AAGO,IAAMA,EAAa,KAAA,EAEbC,EAAqB,IAAM,CAAA,EAC3BC,EAAuB,IAAM,CAAA,EAG7BC,EAAuB,KAAQ,MAAM,AAAIC,OAAS,EAEzDC,EAAIC,QAAQC,OAAO,GACZC,EAAgC,IAAMH,EAE7CI,EAAuB,IAAIH,QAAeN,GACnCU,EAAqC,IAAMD"}
@@ -0,0 +1,3 @@
1
+ declare function once<T>(fn: (() => T)): (() => T);
2
+
3
+ export { once };
@@ -1 +1,2 @@
1
- function e(e){let n,t=!1;return()=>(t||(t=!0,n=e()),n)}export{e as once};
1
+ function e(e){let n,t=!1;return()=>(t||(t=!0,n=e()),n)}export{e as once};
2
+ //# sourceMappingURL=once.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"once.mjs","sources":["../../src/once/index.ts"],"sourcesContent":["export function once<T>(fn: (() => T)): (() => T) {\n let called = false;\n let result: T;\n\n return (): T => {\n if (!called) {\n called = true;\n result = fn();\n }\n\n return result;\n };\n}\n"],"names":["once","fn","result","called"],"mappings":"AAAO,SAASA,EAAQC,CAAa,EACnC,IACIC,EADAC,EAAS,CAAA,EAGb,MAAO,KACAA,IACHA,EAAS,CAAA,EACTD,EAASD,KAGJC,EAEX"}
@@ -0,0 +1,9 @@
1
+ /**
2
+ * @param randomInt - a random generate function that accepts two arguments `min` and `max` and returns a random number between `min` and `max`
3
+ */
4
+ declare function createPickRandom(randomInt: (min: number, max: number) => number): <T>(data: T[] | readonly T[], count?: number) => T[];
5
+ declare const pickRandom: <T>(data: T[] | readonly T[], count?: number) => T[];
6
+ declare function createPickOne(randomInt: (min: number, max: number) => number): <T>(data: T[] | readonly T[]) => T;
7
+ declare const pickOne: <T>(data: T[] | readonly T[]) => T;
8
+
9
+ export { createPickOne, createPickRandom, pickOne, pickRandom };
@@ -0,0 +1,2 @@
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
@@ -0,0 +1 @@
1
+ {"version":3,"file":"pick-random.mjs","sources":["../../src/pick-random/index.ts"],"sourcesContent":["import { randomInt } from 'node:crypto';\n\n/**\n * @param randomInt - a random generate function that accepts two arguments `min` and `max` and returns a random number between `min` and `max`\n */\nexport function createPickRandom(randomInt: (min: number, max: number) => number) {\n return function pickRandom<T>(data: T[] | readonly T[], count = 1) {\n if (count > data.length) {\n throw new TypeError('Count must be lower or the same as the number of picks');\n }\n\n const $data = data.slice();\n\n const pickedElements = [];\n\n while (count--) {\n if ($data.length === 1) {\n // skip randomInt since it might be expensive\n pickedElements.push($data[0]);\n } else {\n pickedElements.push($data.splice(randomInt(0, $data.length - 1), 1)[0]);\n }\n }\n\n return pickedElements;\n };\n}\n\nexport const pickRandom = createPickRandom(randomInt);\n\nexport function createPickOne(randomInt: (min: number, max: number) => number) {\n return function pickOne<T>(data: T[] | readonly T[]) {\n if (data.length === 1) {\n // skip randomInt since it might be expensive\n return data[0];\n }\n return data[randomInt(0, data.length - 1)];\n };\n}\n\nexport const pickOne = createPickOne(randomInt);\n"],"names":["createPickRandom","randomInt","data","count","length","TypeError","$data","slice","pickedElements","push","splice","pickRandom","createPickOne","pickOne"],"mappings":"wCAKO,SAASA,EAAiBC,CAA+C,EAC9E,OAAO,SAAuBC,CAAwB,CAAEC,EAAQ,CAAC,EAC/D,GAAIA,EAAQD,EAAKE,MAAM,CACrB,MAAM,AAAIC,UAAU,0DAGtB,IAAMC,EAAQJ,EAAKK,KAAK,GAElBC,EAAiB,EAAE,CAEzB,KAAOL,KACDG,AAAiB,IAAjBA,EAAMF,MAAM,CAEdI,EAAeC,IAAI,CAACH,CAAK,CAAC,EAAE,EAE5BE,EAAeC,IAAI,CAACH,EAAMI,MAAM,CAACT,EAAU,EAAGK,EAAMF,MAAM,CAAG,GAAI,EAAE,CAAC,EAAE,EAI1E,OAAOI,CACT,CACF,CAEO,IAAMG,EAAaX,EAAiBC,GAEpC,SAASW,EAAcX,CAA+C,EAC3E,OAAO,SAAoBC,CAAwB,SACjD,AAAIA,AAAgB,IAAhBA,EAAKE,MAAM,CAENF,CAAI,CAAC,EAAE,CAETA,CAAI,CAACD,EAAU,EAAGC,EAAKE,MAAM,CAAG,GAAG,AAC5C,CACF,CAEO,IAAMS,EAAUD,EAAcX"}
@@ -0,0 +1,7 @@
1
+ /**
2
+ * @param random - a random generate function that returns a number between 0 and 1
3
+ */
4
+ declare function createRandomInt(random: () => number): (min: number, max: number) => number;
5
+ declare const randomInt: (min: number, max: number) => number;
6
+
7
+ export { createRandomInt, randomInt };
@@ -0,0 +1,2 @@
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
@@ -0,0 +1 @@
1
+ {"version":3,"file":"random-int.mjs","sources":["../../src/random-int/index.ts"],"sourcesContent":["/**\n * @param random - a random generate function that returns a number between 0 and 1\n */\nexport function createRandomInt(random: () => number) {\n return (min: number, max: number): number => Math.floor(random() * (max - min + 1)) + min;\n}\n\nexport const randomInt = createRandomInt(Math.random);\n\n// function secureRandom() {\n// const buf = new Uint32Array(1);\n// getRandomValues(buf);\n// return buf[0] / (0xFF_FF_FF_FF + 1);\n// }\n\n// export const randomIntSecure = createRandomInt(secureRandom);\n"],"names":["createRandomInt","random","min","max","Math","floor","randomInt"],"mappings":"AAGO,SAASA,EAAgBC,CAAoB,EAClD,MAAO,CAACC,EAAaC,IAAwBC,KAAKC,KAAK,CAACJ,IAAYE,CAAAA,EAAMD,EAAM,CAAA,GAAMA,CACxF,KAEaI,EAAYN,EAAgBI,KAAKH,MAAM"}