ts-data-forge 3.3.0 → 3.3.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 (424) hide show
  1. package/README.md +37 -13
  2. package/dist/array/impl/array-utils-creation.d.mts +116 -0
  3. package/dist/array/impl/array-utils-creation.d.mts.map +1 -0
  4. package/dist/array/impl/array-utils-creation.mjs +110 -0
  5. package/dist/array/impl/array-utils-creation.mjs.map +1 -0
  6. package/dist/array/impl/array-utils-element-access.d.mts +61 -0
  7. package/dist/array/impl/array-utils-element-access.d.mts.map +1 -0
  8. package/dist/array/impl/array-utils-element-access.mjs +66 -0
  9. package/dist/array/impl/array-utils-element-access.mjs.map +1 -0
  10. package/dist/array/impl/array-utils-iterators.d.mts +59 -0
  11. package/dist/array/impl/array-utils-iterators.d.mts.map +1 -0
  12. package/dist/array/impl/array-utils-iterators.mjs +104 -0
  13. package/dist/array/impl/array-utils-iterators.mjs.map +1 -0
  14. package/dist/array/impl/array-utils-modification.d.mts +154 -0
  15. package/dist/array/impl/array-utils-modification.d.mts.map +1 -0
  16. package/dist/array/impl/array-utils-modification.mjs +139 -0
  17. package/dist/array/impl/array-utils-modification.mjs.map +1 -0
  18. package/dist/array/impl/array-utils-reducing-value.d.mts +214 -0
  19. package/dist/array/impl/array-utils-reducing-value.d.mts.map +1 -0
  20. package/dist/array/impl/array-utils-reducing-value.mjs +160 -0
  21. package/dist/array/impl/array-utils-reducing-value.mjs.map +1 -0
  22. package/dist/array/impl/array-utils-search.d.mts +179 -0
  23. package/dist/array/impl/array-utils-search.d.mts.map +1 -0
  24. package/dist/array/impl/array-utils-search.mjs +153 -0
  25. package/dist/array/impl/array-utils-search.mjs.map +1 -0
  26. package/dist/array/impl/array-utils-set-op.d.mts +100 -0
  27. package/dist/array/impl/array-utils-set-op.d.mts.map +1 -0
  28. package/dist/array/impl/array-utils-set-op.mjs +137 -0
  29. package/dist/array/impl/array-utils-set-op.mjs.map +1 -0
  30. package/dist/array/impl/array-utils-size.d.mts +24 -0
  31. package/dist/array/impl/array-utils-size.d.mts.map +1 -0
  32. package/dist/array/impl/array-utils-size.mjs +28 -0
  33. package/dist/array/impl/array-utils-size.mjs.map +1 -0
  34. package/dist/array/impl/array-utils-slice-clamped.d.mts +18 -0
  35. package/dist/array/impl/array-utils-slice-clamped.d.mts.map +1 -0
  36. package/dist/array/impl/array-utils-slice-clamped.mjs +49 -0
  37. package/dist/array/impl/array-utils-slice-clamped.mjs.map +1 -0
  38. package/dist/array/impl/array-utils-slicing.d.mts +120 -0
  39. package/dist/array/impl/array-utils-slicing.d.mts.map +1 -0
  40. package/dist/array/impl/array-utils-slicing.mjs +140 -0
  41. package/dist/array/impl/array-utils-slicing.mjs.map +1 -0
  42. package/dist/array/impl/array-utils-transformation.d.mts +348 -0
  43. package/dist/array/impl/array-utils-transformation.d.mts.map +1 -0
  44. package/dist/array/impl/array-utils-transformation.mjs +331 -0
  45. package/dist/array/impl/array-utils-transformation.mjs.map +1 -0
  46. package/dist/array/impl/array-utils-validation.d.mts +149 -0
  47. package/dist/array/impl/array-utils-validation.d.mts.map +1 -0
  48. package/dist/array/impl/array-utils-validation.mjs +166 -0
  49. package/dist/array/impl/array-utils-validation.mjs.map +1 -0
  50. package/dist/array/impl/index.d.mts +13 -0
  51. package/dist/array/impl/index.d.mts.map +1 -0
  52. package/dist/array/impl/index.mjs +13 -0
  53. package/dist/array/impl/index.mjs.map +1 -0
  54. package/dist/array/index.d.mts +1 -1
  55. package/dist/array/index.d.mts.map +1 -1
  56. package/dist/array/index.mjs +2 -1
  57. package/dist/array/index.mjs.map +1 -1
  58. package/dist/collections/imap-mapped.d.mts +83 -253
  59. package/dist/collections/imap-mapped.d.mts.map +1 -1
  60. package/dist/collections/imap-mapped.mjs +33 -164
  61. package/dist/collections/imap-mapped.mjs.map +1 -1
  62. package/dist/collections/imap.d.mts +436 -163
  63. package/dist/collections/imap.d.mts.map +1 -1
  64. package/dist/collections/imap.mjs +74 -94
  65. package/dist/collections/imap.mjs.map +1 -1
  66. package/dist/collections/iset-mapped.d.mts +828 -345
  67. package/dist/collections/iset-mapped.d.mts.map +1 -1
  68. package/dist/collections/iset-mapped.mjs +200 -242
  69. package/dist/collections/iset-mapped.mjs.map +1 -1
  70. package/dist/collections/iset.d.mts +397 -205
  71. package/dist/collections/iset.d.mts.map +1 -1
  72. package/dist/collections/iset.mjs +102 -184
  73. package/dist/collections/iset.mjs.map +1 -1
  74. package/dist/collections/queue.d.mts +155 -135
  75. package/dist/collections/queue.d.mts.map +1 -1
  76. package/dist/collections/queue.mjs +55 -156
  77. package/dist/collections/queue.mjs.map +1 -1
  78. package/dist/collections/stack.d.mts +154 -154
  79. package/dist/collections/stack.d.mts.map +1 -1
  80. package/dist/collections/stack.mjs +54 -203
  81. package/dist/collections/stack.mjs.map +1 -1
  82. package/dist/entry-point.d.mts +1 -0
  83. package/dist/entry-point.d.mts.map +1 -1
  84. package/dist/entry-point.mjs +2 -1
  85. package/dist/entry-point.mjs.map +1 -1
  86. package/dist/expect-type.d.mts +43 -172
  87. package/dist/expect-type.d.mts.map +1 -1
  88. package/dist/expect-type.mjs +43 -172
  89. package/dist/expect-type.mjs.map +1 -1
  90. package/dist/functional/match.d.mts +35 -140
  91. package/dist/functional/match.d.mts.map +1 -1
  92. package/dist/functional/match.mjs.map +1 -1
  93. package/dist/functional/optional.d.mts +282 -160
  94. package/dist/functional/optional.d.mts.map +1 -1
  95. package/dist/functional/optional.mjs +131 -71
  96. package/dist/functional/optional.mjs.map +1 -1
  97. package/dist/functional/pipe.d.mts +59 -113
  98. package/dist/functional/pipe.d.mts.map +1 -1
  99. package/dist/functional/pipe.mjs.map +1 -1
  100. package/dist/functional/result.d.mts +433 -332
  101. package/dist/functional/result.d.mts.map +1 -1
  102. package/dist/functional/result.mjs +233 -239
  103. package/dist/functional/result.mjs.map +1 -1
  104. package/dist/globals.d.mts +12 -5
  105. package/dist/guard/has-key.d.mts +23 -74
  106. package/dist/guard/has-key.d.mts.map +1 -1
  107. package/dist/guard/has-key.mjs +23 -74
  108. package/dist/guard/has-key.mjs.map +1 -1
  109. package/dist/guard/is-non-empty-string.d.mts +20 -87
  110. package/dist/guard/is-non-empty-string.d.mts.map +1 -1
  111. package/dist/guard/is-non-empty-string.mjs +20 -87
  112. package/dist/guard/is-non-empty-string.mjs.map +1 -1
  113. package/dist/guard/is-non-null-object.d.mts +14 -84
  114. package/dist/guard/is-non-null-object.d.mts.map +1 -1
  115. package/dist/guard/is-non-null-object.mjs +14 -84
  116. package/dist/guard/is-non-null-object.mjs.map +1 -1
  117. package/dist/guard/is-primitive.d.mts +13 -126
  118. package/dist/guard/is-primitive.d.mts.map +1 -1
  119. package/dist/guard/is-primitive.mjs +13 -126
  120. package/dist/guard/is-primitive.mjs.map +1 -1
  121. package/dist/guard/is-record.d.mts +21 -132
  122. package/dist/guard/is-record.d.mts.map +1 -1
  123. package/dist/guard/is-record.mjs +21 -132
  124. package/dist/guard/is-record.mjs.map +1 -1
  125. package/dist/guard/is-type.d.mts +201 -238
  126. package/dist/guard/is-type.d.mts.map +1 -1
  127. package/dist/guard/is-type.mjs +201 -238
  128. package/dist/guard/is-type.mjs.map +1 -1
  129. package/dist/guard/key-is-in.d.mts +22 -139
  130. package/dist/guard/key-is-in.d.mts.map +1 -1
  131. package/dist/guard/key-is-in.mjs +22 -139
  132. package/dist/guard/key-is-in.mjs.map +1 -1
  133. package/dist/index.d.mts +0 -1
  134. package/dist/index.d.mts.map +1 -1
  135. package/dist/index.mjs +0 -1
  136. package/dist/index.mjs.map +1 -1
  137. package/dist/iterator/range.d.mts +29 -62
  138. package/dist/iterator/range.d.mts.map +1 -1
  139. package/dist/iterator/range.mjs.map +1 -1
  140. package/dist/json/json.d.mts +191 -121
  141. package/dist/json/json.d.mts.map +1 -1
  142. package/dist/json/json.mjs +238 -136
  143. package/dist/json/json.mjs.map +1 -1
  144. package/dist/number/branded-types/finite-number.d.mts +24 -156
  145. package/dist/number/branded-types/finite-number.d.mts.map +1 -1
  146. package/dist/number/branded-types/finite-number.mjs +27 -159
  147. package/dist/number/branded-types/finite-number.mjs.map +1 -1
  148. package/dist/number/branded-types/int.d.mts +122 -120
  149. package/dist/number/branded-types/int.d.mts.map +1 -1
  150. package/dist/number/branded-types/int.mjs +122 -120
  151. package/dist/number/branded-types/int.mjs.map +1 -1
  152. package/dist/number/branded-types/int16.d.mts +22 -30
  153. package/dist/number/branded-types/int16.d.mts.map +1 -1
  154. package/dist/number/branded-types/int16.mjs +22 -30
  155. package/dist/number/branded-types/int16.mjs.map +1 -1
  156. package/dist/number/branded-types/int32.d.mts +22 -31
  157. package/dist/number/branded-types/int32.d.mts.map +1 -1
  158. package/dist/number/branded-types/int32.mjs +22 -31
  159. package/dist/number/branded-types/int32.mjs.map +1 -1
  160. package/dist/number/branded-types/non-negative-finite-number.d.mts +28 -36
  161. package/dist/number/branded-types/non-negative-finite-number.d.mts.map +1 -1
  162. package/dist/number/branded-types/non-negative-finite-number.mjs +31 -39
  163. package/dist/number/branded-types/non-negative-finite-number.mjs.map +1 -1
  164. package/dist/number/branded-types/non-negative-int16.d.mts +24 -34
  165. package/dist/number/branded-types/non-negative-int16.d.mts.map +1 -1
  166. package/dist/number/branded-types/non-negative-int16.mjs +24 -34
  167. package/dist/number/branded-types/non-negative-int16.mjs.map +1 -1
  168. package/dist/number/branded-types/non-negative-int32.d.mts +26 -35
  169. package/dist/number/branded-types/non-negative-int32.d.mts.map +1 -1
  170. package/dist/number/branded-types/non-negative-int32.mjs +26 -35
  171. package/dist/number/branded-types/non-negative-int32.mjs.map +1 -1
  172. package/dist/number/branded-types/non-zero-finite-number.d.mts +22 -37
  173. package/dist/number/branded-types/non-zero-finite-number.d.mts.map +1 -1
  174. package/dist/number/branded-types/non-zero-finite-number.mjs +25 -40
  175. package/dist/number/branded-types/non-zero-finite-number.mjs.map +1 -1
  176. package/dist/number/branded-types/non-zero-int.d.mts +15 -30
  177. package/dist/number/branded-types/non-zero-int.d.mts.map +1 -1
  178. package/dist/number/branded-types/non-zero-int.mjs +15 -30
  179. package/dist/number/branded-types/non-zero-int.mjs.map +1 -1
  180. package/dist/number/branded-types/non-zero-int16.d.mts +27 -35
  181. package/dist/number/branded-types/non-zero-int16.d.mts.map +1 -1
  182. package/dist/number/branded-types/non-zero-int16.mjs +27 -35
  183. package/dist/number/branded-types/non-zero-int16.mjs.map +1 -1
  184. package/dist/number/branded-types/non-zero-int32.d.mts +29 -36
  185. package/dist/number/branded-types/non-zero-int32.d.mts.map +1 -1
  186. package/dist/number/branded-types/non-zero-int32.mjs +29 -36
  187. package/dist/number/branded-types/non-zero-int32.mjs.map +1 -1
  188. package/dist/number/branded-types/non-zero-safe-int.d.mts +37 -38
  189. package/dist/number/branded-types/non-zero-safe-int.d.mts.map +1 -1
  190. package/dist/number/branded-types/non-zero-safe-int.mjs +39 -40
  191. package/dist/number/branded-types/non-zero-safe-int.mjs.map +1 -1
  192. package/dist/number/branded-types/non-zero-uint16.d.mts +24 -35
  193. package/dist/number/branded-types/non-zero-uint16.d.mts.map +1 -1
  194. package/dist/number/branded-types/non-zero-uint16.mjs +24 -35
  195. package/dist/number/branded-types/non-zero-uint16.mjs.map +1 -1
  196. package/dist/number/branded-types/non-zero-uint32.d.mts +24 -35
  197. package/dist/number/branded-types/non-zero-uint32.d.mts.map +1 -1
  198. package/dist/number/branded-types/non-zero-uint32.mjs +24 -35
  199. package/dist/number/branded-types/non-zero-uint32.mjs.map +1 -1
  200. package/dist/number/branded-types/positive-finite-number.d.mts +26 -40
  201. package/dist/number/branded-types/positive-finite-number.d.mts.map +1 -1
  202. package/dist/number/branded-types/positive-finite-number.mjs +29 -43
  203. package/dist/number/branded-types/positive-finite-number.mjs.map +1 -1
  204. package/dist/number/branded-types/positive-int.d.mts +133 -123
  205. package/dist/number/branded-types/positive-int.d.mts.map +1 -1
  206. package/dist/number/branded-types/positive-int.mjs +133 -123
  207. package/dist/number/branded-types/positive-int.mjs.map +1 -1
  208. package/dist/number/branded-types/positive-int16.d.mts +24 -35
  209. package/dist/number/branded-types/positive-int16.d.mts.map +1 -1
  210. package/dist/number/branded-types/positive-int16.mjs +24 -35
  211. package/dist/number/branded-types/positive-int16.mjs.map +1 -1
  212. package/dist/number/branded-types/positive-int32.d.mts +24 -35
  213. package/dist/number/branded-types/positive-int32.d.mts.map +1 -1
  214. package/dist/number/branded-types/positive-int32.mjs +24 -35
  215. package/dist/number/branded-types/positive-int32.mjs.map +1 -1
  216. package/dist/number/branded-types/positive-safe-int.d.mts +159 -33
  217. package/dist/number/branded-types/positive-safe-int.d.mts.map +1 -1
  218. package/dist/number/branded-types/positive-safe-int.mjs +160 -34
  219. package/dist/number/branded-types/positive-safe-int.mjs.map +1 -1
  220. package/dist/number/branded-types/positive-uint16.d.mts +24 -35
  221. package/dist/number/branded-types/positive-uint16.d.mts.map +1 -1
  222. package/dist/number/branded-types/positive-uint16.mjs +24 -35
  223. package/dist/number/branded-types/positive-uint16.mjs.map +1 -1
  224. package/dist/number/branded-types/positive-uint32.d.mts +26 -36
  225. package/dist/number/branded-types/positive-uint32.d.mts.map +1 -1
  226. package/dist/number/branded-types/positive-uint32.mjs +26 -36
  227. package/dist/number/branded-types/positive-uint32.mjs.map +1 -1
  228. package/dist/number/branded-types/safe-int.d.mts +140 -99
  229. package/dist/number/branded-types/safe-int.d.mts.map +1 -1
  230. package/dist/number/branded-types/safe-int.mjs +142 -101
  231. package/dist/number/branded-types/safe-int.mjs.map +1 -1
  232. package/dist/number/branded-types/safe-uint.d.mts +24 -33
  233. package/dist/number/branded-types/safe-uint.d.mts.map +1 -1
  234. package/dist/number/branded-types/safe-uint.mjs +25 -34
  235. package/dist/number/branded-types/safe-uint.mjs.map +1 -1
  236. package/dist/number/branded-types/uint.d.mts +121 -30
  237. package/dist/number/branded-types/uint.d.mts.map +1 -1
  238. package/dist/number/branded-types/uint.mjs +121 -30
  239. package/dist/number/branded-types/uint.mjs.map +1 -1
  240. package/dist/number/branded-types/uint16.d.mts +26 -34
  241. package/dist/number/branded-types/uint16.d.mts.map +1 -1
  242. package/dist/number/branded-types/uint16.mjs +26 -34
  243. package/dist/number/branded-types/uint16.mjs.map +1 -1
  244. package/dist/number/branded-types/uint32.d.mts +26 -68
  245. package/dist/number/branded-types/uint32.d.mts.map +1 -1
  246. package/dist/number/branded-types/uint32.mjs +26 -68
  247. package/dist/number/branded-types/uint32.mjs.map +1 -1
  248. package/dist/number/enum/int8.d.mts +37 -101
  249. package/dist/number/enum/int8.d.mts.map +1 -1
  250. package/dist/number/enum/int8.mjs +39 -170
  251. package/dist/number/enum/int8.mjs.map +1 -1
  252. package/dist/number/enum/uint8.d.mts +45 -55
  253. package/dist/number/enum/uint8.d.mts.map +1 -1
  254. package/dist/number/enum/uint8.mjs +46 -155
  255. package/dist/number/enum/uint8.mjs.map +1 -1
  256. package/dist/number/num.d.mts +145 -206
  257. package/dist/number/num.d.mts.map +1 -1
  258. package/dist/number/num.mjs +143 -199
  259. package/dist/number/num.mjs.map +1 -1
  260. package/dist/number/refined-number-utils.d.mts +97 -21
  261. package/dist/number/refined-number-utils.d.mts.map +1 -1
  262. package/dist/number/refined-number-utils.mjs +91 -20
  263. package/dist/number/refined-number-utils.mjs.map +1 -1
  264. package/dist/object/object.d.mts +126 -208
  265. package/dist/object/object.d.mts.map +1 -1
  266. package/dist/object/object.mjs +68 -102
  267. package/dist/object/object.mjs.map +1 -1
  268. package/dist/others/cast-mutable.d.mts +12 -88
  269. package/dist/others/cast-mutable.d.mts.map +1 -1
  270. package/dist/others/cast-mutable.mjs +13 -89
  271. package/dist/others/cast-mutable.mjs.map +1 -1
  272. package/dist/others/cast-readonly.d.mts +12 -168
  273. package/dist/others/cast-readonly.d.mts.map +1 -1
  274. package/dist/others/cast-readonly.mjs +13 -169
  275. package/dist/others/cast-readonly.mjs.map +1 -1
  276. package/dist/others/if-then.d.mts +6 -83
  277. package/dist/others/if-then.d.mts.map +1 -1
  278. package/dist/others/if-then.mjs +6 -83
  279. package/dist/others/if-then.mjs.map +1 -1
  280. package/dist/others/map-nullable.d.mts +12 -136
  281. package/dist/others/map-nullable.d.mts.map +1 -1
  282. package/dist/others/map-nullable.mjs.map +1 -1
  283. package/dist/others/memoize-function.d.mts +14 -157
  284. package/dist/others/memoize-function.d.mts.map +1 -1
  285. package/dist/others/memoize-function.mjs +14 -157
  286. package/dist/others/memoize-function.mjs.map +1 -1
  287. package/dist/others/tuple.d.mts +33 -151
  288. package/dist/others/tuple.d.mts.map +1 -1
  289. package/dist/others/tuple.mjs +33 -151
  290. package/dist/others/tuple.mjs.map +1 -1
  291. package/dist/others/unknown-to-string.d.mts +11 -125
  292. package/dist/others/unknown-to-string.d.mts.map +1 -1
  293. package/dist/others/unknown-to-string.mjs +12 -126
  294. package/dist/others/unknown-to-string.mjs.map +1 -1
  295. package/dist/promise/promise.d.mts +33 -20
  296. package/dist/promise/promise.d.mts.map +1 -1
  297. package/dist/promise/promise.mjs +34 -21
  298. package/dist/promise/promise.mjs.map +1 -1
  299. package/package.json +47 -39
  300. package/src/array/impl/array-utils-creation.mts +192 -0
  301. package/src/array/{array-utils-creation.test.mts → impl/array-utils-creation.test.mts} +121 -72
  302. package/src/array/impl/array-utils-element-access.mts +115 -0
  303. package/src/array/impl/array-utils-element-access.test.mts +151 -0
  304. package/src/array/impl/array-utils-iterators.mts +79 -0
  305. package/src/array/impl/array-utils-iterators.test.mts +98 -0
  306. package/src/array/impl/array-utils-modification.mts +434 -0
  307. package/src/array/{array-utils-modification.test.mts → impl/array-utils-modification.test.mts} +41 -28
  308. package/src/array/{array-utils-overload-type-error.test.mts → impl/array-utils-overload-type-error.test.mts} +33 -33
  309. package/src/array/impl/array-utils-reducing-value.mts +551 -0
  310. package/src/array/{array-utils-reducing-value.test.mts → impl/array-utils-reducing-value.test.mts} +45 -50
  311. package/src/array/impl/array-utils-search.mts +509 -0
  312. package/src/array/impl/array-utils-search.test.mts +346 -0
  313. package/src/array/impl/array-utils-set-op.mts +166 -0
  314. package/src/array/{array-utils-set-op.test.mts → impl/array-utils-set-op.test.mts} +42 -35
  315. package/src/array/impl/array-utils-size.mts +30 -0
  316. package/src/array/impl/array-utils-size.test.mts +9 -0
  317. package/src/array/impl/array-utils-slice-clamped.mts +51 -0
  318. package/src/array/{array-utils-slice-clamped.test.mts → impl/array-utils-slice-clamped.test.mts} +12 -12
  319. package/src/array/impl/array-utils-slicing.mts +275 -0
  320. package/src/array/impl/array-utils-slicing.test.mts +158 -0
  321. package/src/array/impl/array-utils-transformation.mts +746 -0
  322. package/src/array/{array-utils-transformation.test.mts → impl/array-utils-transformation.test.mts} +662 -889
  323. package/src/array/impl/array-utils-validation.mts +241 -0
  324. package/src/array/{array-utils-validation.test.mts → impl/array-utils-validation.test.mts} +194 -107
  325. package/src/array/{array.test.mts → impl/array.test.mts} +2 -2
  326. package/src/array/impl/index.mts +12 -0
  327. package/src/array/index.mts +1 -1
  328. package/src/collections/imap-mapped.mts +99 -265
  329. package/src/collections/imap.mts +477 -174
  330. package/src/collections/imap.test.mts +12 -19
  331. package/src/collections/iset-mapped.mts +892 -358
  332. package/src/collections/iset.mts +429 -213
  333. package/src/collections/queue.mts +174 -200
  334. package/src/collections/stack.mts +172 -245
  335. package/src/collections/stack.test.mts +9 -1
  336. package/src/entry-point.mts +1 -0
  337. package/src/expect-type.mts +43 -172
  338. package/src/functional/match.mts +35 -145
  339. package/src/functional/optional.mts +285 -163
  340. package/src/functional/optional.test.mts +4 -1
  341. package/src/functional/pipe.mts +60 -113
  342. package/src/functional/result.mts +452 -351
  343. package/src/functional/result.test.mts +9 -2
  344. package/src/globals.d.mts +12 -5
  345. package/src/guard/has-key.mts +23 -74
  346. package/src/guard/is-non-empty-string.mts +20 -87
  347. package/src/guard/is-non-null-object.mts +14 -84
  348. package/src/guard/is-non-null-object.test.mts +1 -1
  349. package/src/guard/is-primitive.mts +13 -126
  350. package/src/guard/is-primitive.test.mts +1 -1
  351. package/src/guard/is-record.mts +21 -132
  352. package/src/guard/is-type.mts +201 -238
  353. package/src/guard/is-type.test.mts +7 -7
  354. package/src/guard/key-is-in.mts +22 -139
  355. package/src/index.mts +0 -1
  356. package/src/iterator/range.mts +29 -62
  357. package/src/json/json.mts +202 -134
  358. package/src/json/json.test.mts +1 -3
  359. package/src/number/branded-types/finite-number.mts +27 -159
  360. package/src/number/branded-types/int.mts +122 -120
  361. package/src/number/branded-types/int16.mts +22 -30
  362. package/src/number/branded-types/int16.test.mts +24 -24
  363. package/src/number/branded-types/int32.mts +22 -31
  364. package/src/number/branded-types/int32.test.mts +39 -39
  365. package/src/number/branded-types/non-negative-finite-number.mts +31 -39
  366. package/src/number/branded-types/non-negative-int16.mts +24 -34
  367. package/src/number/branded-types/non-negative-int16.test.mts +16 -16
  368. package/src/number/branded-types/non-negative-int32.mts +26 -35
  369. package/src/number/branded-types/non-negative-int32.test.mts +30 -30
  370. package/src/number/branded-types/non-zero-finite-number.mts +25 -40
  371. package/src/number/branded-types/non-zero-int.mts +15 -30
  372. package/src/number/branded-types/non-zero-int16.mts +27 -35
  373. package/src/number/branded-types/non-zero-int16.test.mts +26 -26
  374. package/src/number/branded-types/non-zero-int32.mts +29 -36
  375. package/src/number/branded-types/non-zero-int32.test.mts +45 -42
  376. package/src/number/branded-types/non-zero-safe-int.mts +39 -40
  377. package/src/number/branded-types/non-zero-uint16.mts +24 -35
  378. package/src/number/branded-types/non-zero-uint16.test.mts +16 -16
  379. package/src/number/branded-types/non-zero-uint32.mts +24 -35
  380. package/src/number/branded-types/non-zero-uint32.test.mts +28 -28
  381. package/src/number/branded-types/positive-finite-number.mts +29 -43
  382. package/src/number/branded-types/positive-int.mts +134 -124
  383. package/src/number/branded-types/positive-int16.mts +24 -35
  384. package/src/number/branded-types/positive-int16.test.mts +14 -14
  385. package/src/number/branded-types/positive-int32.mts +24 -35
  386. package/src/number/branded-types/positive-int32.test.mts +26 -26
  387. package/src/number/branded-types/positive-safe-int.mts +160 -34
  388. package/src/number/branded-types/positive-uint16.mts +24 -35
  389. package/src/number/branded-types/positive-uint16.test.mts +16 -16
  390. package/src/number/branded-types/positive-uint32.mts +26 -36
  391. package/src/number/branded-types/positive-uint32.test.mts +31 -28
  392. package/src/number/branded-types/safe-int.mts +142 -101
  393. package/src/number/branded-types/safe-uint.mts +25 -34
  394. package/src/number/branded-types/uint.mts +121 -30
  395. package/src/number/branded-types/uint16.mts +26 -34
  396. package/src/number/branded-types/uint16.test.mts +16 -16
  397. package/src/number/branded-types/uint32.mts +26 -68
  398. package/src/number/branded-types/uint32.test.mts +28 -28
  399. package/src/number/enum/int8.mts +39 -170
  400. package/src/number/enum/uint8.mts +46 -155
  401. package/src/number/num.mts +157 -212
  402. package/src/number/num.test.mts +4 -4
  403. package/src/number/refined-number-utils.mts +109 -26
  404. package/src/object/object.mts +130 -212
  405. package/src/object/object.test.mts +29 -0
  406. package/src/others/cast-mutable.mts +13 -89
  407. package/src/others/cast-mutable.test.mts +80 -0
  408. package/src/others/cast-readonly.mts +13 -169
  409. package/src/others/if-then.mts +6 -83
  410. package/src/others/map-nullable.mts +12 -136
  411. package/src/others/map-nullable.test.mts +6 -6
  412. package/src/others/memoize-function.mts +14 -157
  413. package/src/others/tuple.mts +33 -151
  414. package/src/others/unknown-to-string.mts +12 -126
  415. package/src/others/unknown-to-string.test.mts +13 -1
  416. package/src/promise/promise.mts +34 -21
  417. package/src/promise/promise.test.mts +43 -0
  418. package/dist/array/array-utils.d.mts +0 -2956
  419. package/dist/array/array-utils.d.mts.map +0 -1
  420. package/dist/array/array-utils.mjs +0 -1838
  421. package/dist/array/array-utils.mjs.map +0 -1
  422. package/src/array/array-utils-search.test.mts +0 -169
  423. package/src/array/array-utils-slicing.test.mts +0 -274
  424. package/src/array/array-utils.mts +0 -4834
@@ -3,25 +3,30 @@ import { range } from '../iterator/index.mjs';
3
3
  import { asSafeUint, asUint32 } from '../number/index.mjs';
4
4
 
5
5
  /**
6
- * Interface for a high-performance queue with FIFO (First-In, First-Out) behavior.
6
+ * Interface for a high-performance queue with FIFO (First-In, First-Out)
7
+ * behavior.
7
8
  *
8
- * This interface defines a mutable queue data structure where elements are added to the back
9
- * and removed from the front, maintaining the order in which they were added. The implementation
10
- * uses a circular buffer for optimal performance, providing O(1) operations for both enqueue
11
- * and dequeue operations.
9
+ * This interface defines a mutable queue data structure where elements are
10
+ * added to the back and removed from the front, maintaining the order in which
11
+ * they were added. The implementation uses a circular buffer for optimal
12
+ * performance, providing O(1) operations for both enqueue and dequeue
13
+ * operations.
12
14
  *
13
15
  * **FIFO Behavior:**
16
+ *
14
17
  * - **enqueue**: Adds elements to the back of the queue
15
18
  * - **dequeue**: Removes and returns elements from the front of the queue
16
19
  * - Elements are processed in the exact order they were added
17
20
  *
18
21
  * **Performance Characteristics:**
19
- * - enqueue: O(1) amortized (O(n) when buffer needs resizing)
20
- * - dequeue: O(1) always
21
- * - size/isEmpty: O(1) always
22
+ *
23
+ * - Enqueue: O(1) amortized (O(n) when buffer needs resizing)
24
+ * - Dequeue: O(1) always
25
+ * - Size/isEmpty: O(1) always
22
26
  * - Memory efficient with automatic garbage collection of removed elements
23
27
  *
24
28
  * **Use Cases:**
29
+ *
25
30
  * - Task scheduling and job queues
26
31
  * - Breadth-first search algorithms
27
32
  * - Event processing systems
@@ -29,67 +34,139 @@ import { asSafeUint, asUint32 } from '../number/index.mjs';
29
34
  * - Buffer management for streaming data
30
35
  *
31
36
  * @template T The type of elements stored in the queue.
32
- *
33
- * @example
34
- * ```typescript
35
- * import { createQueue, Queue } from './queue';
36
- *
37
- * // Example 1: Basic FIFO operations
38
- * const messageQueue: Queue<string> = createQueue<string>();
39
- *
40
- * messageQueue.enqueue("first message"); // Add to back
41
- * messageQueue.enqueue("second message"); // Add to back
42
- * messageQueue.enqueue("third message"); // Add to back
43
- *
44
- * console.log(messageQueue.size); // Output: 3
45
- *
46
- * // Process messages in FIFO order
47
- * console.log(messageQueue.dequeue().unwrap()); // "first message" (first in, first out)
48
- * console.log(messageQueue.dequeue().unwrap()); // "second message"
49
- * console.log(messageQueue.size); // Output: 1
50
- *
51
- * // Example 2: Task processing system
52
- * type Task = { id: number; priority: string; action: () => void };
53
- * const taskQueue: Queue<Task> = createQueue<Task>();
54
- *
55
- * taskQueue.enqueue({ id: 1, priority: "high", action: () => console.log("Task 1") });
56
- * taskQueue.enqueue({ id: 2, priority: "low", action: () => console.log("Task 2") });
57
- *
58
- * // Process tasks in order
59
- * while (!taskQueue.isEmpty) {
60
- * const task = taskQueue.dequeue().unwrap();
61
- * console.log(`Processing task ${task.id} with ${task.priority} priority`);
62
- * task.action();
63
- * }
64
- * ```
65
37
  */
66
38
  export type Queue<T> = Readonly<{
67
- /** Checks if the queue is empty. */
39
+ /**
40
+ * Checks if the queue is empty.
41
+ *
42
+ * @example
43
+ *
44
+ * ```ts
45
+ * const queue = createQueue<number>();
46
+ *
47
+ * assert.ok(queue.isEmpty);
48
+ * assert(queue.size === 0);
49
+ *
50
+ * queue.enqueue(1);
51
+ * queue.enqueue(2);
52
+ *
53
+ * assert.notOk(queue.isEmpty);
54
+ * assert(queue.size === 2);
55
+ * assert.deepStrictEqual(queue.dequeue(), Optional.some(1));
56
+ * assert.deepStrictEqual(queue.dequeue(), Optional.some(2));
57
+ * assert.deepStrictEqual(queue.dequeue(), Optional.none);
58
+ *
59
+ * const seededQueue = createQueue(['first', 'second']);
60
+ *
61
+ * assert(seededQueue.size === 2);
62
+ * assert.deepStrictEqual(seededQueue.dequeue(), Optional.some('first'));
63
+ * assert.deepStrictEqual(seededQueue.dequeue(), Optional.some('second'));
64
+ * ```
65
+ */
68
66
  isEmpty: boolean;
69
67
 
70
- /** The number of elements in the queue. */
68
+ /**
69
+ * The number of elements in the queue.
70
+ *
71
+ * @example
72
+ *
73
+ * ```ts
74
+ * const queue = createQueue<number>();
75
+ *
76
+ * assert.ok(queue.isEmpty);
77
+ * assert(queue.size === 0);
78
+ *
79
+ * queue.enqueue(1);
80
+ * queue.enqueue(2);
81
+ *
82
+ * assert.notOk(queue.isEmpty);
83
+ * assert(queue.size === 2);
84
+ * assert.deepStrictEqual(queue.dequeue(), Optional.some(1));
85
+ * assert.deepStrictEqual(queue.dequeue(), Optional.some(2));
86
+ * assert.deepStrictEqual(queue.dequeue(), Optional.none);
87
+ *
88
+ * const seededQueue = createQueue(['first', 'second']);
89
+ *
90
+ * assert(seededQueue.size === 2);
91
+ * assert.deepStrictEqual(seededQueue.dequeue(), Optional.some('first'));
92
+ * assert.deepStrictEqual(seededQueue.dequeue(), Optional.some('second'));
93
+ * ```
94
+ */
71
95
  size: SizeType.Arr;
72
96
 
73
97
  /**
74
98
  * Removes and returns the element at the front of the queue.
75
- * @returns The element at the front of the queue, or `Optional.none` if the queue is empty.
99
+ *
100
+ * @example
101
+ *
102
+ * ```ts
103
+ * const queue = createQueue<number>();
104
+ *
105
+ * assert.ok(queue.isEmpty);
106
+ * assert(queue.size === 0);
107
+ *
108
+ * queue.enqueue(1);
109
+ * queue.enqueue(2);
110
+ *
111
+ * assert.notOk(queue.isEmpty);
112
+ * assert(queue.size === 2);
113
+ * assert.deepStrictEqual(queue.dequeue(), Optional.some(1));
114
+ * assert.deepStrictEqual(queue.dequeue(), Optional.some(2));
115
+ * assert.deepStrictEqual(queue.dequeue(), Optional.none);
116
+ *
117
+ * const seededQueue = createQueue(['first', 'second']);
118
+ *
119
+ * assert(seededQueue.size === 2);
120
+ * assert.deepStrictEqual(seededQueue.dequeue(), Optional.some('first'));
121
+ * assert.deepStrictEqual(seededQueue.dequeue(), Optional.some('second'));
122
+ * ```
123
+ *
124
+ * @returns The element at the front of the queue, or `Optional.none` if the
125
+ * queue is empty.
76
126
  */
77
127
  dequeue: () => Optional<T>;
78
128
 
79
129
  /**
80
130
  * Adds an element to the back of the queue.
131
+ *
132
+ * @example
133
+ *
134
+ * ```ts
135
+ * const queue = createQueue<number>();
136
+ *
137
+ * assert.ok(queue.isEmpty);
138
+ * assert(queue.size === 0);
139
+ *
140
+ * queue.enqueue(1);
141
+ * queue.enqueue(2);
142
+ *
143
+ * assert.notOk(queue.isEmpty);
144
+ * assert(queue.size === 2);
145
+ * assert.deepStrictEqual(queue.dequeue(), Optional.some(1));
146
+ * assert.deepStrictEqual(queue.dequeue(), Optional.some(2));
147
+ * assert.deepStrictEqual(queue.dequeue(), Optional.none);
148
+ *
149
+ * const seededQueue = createQueue(['first', 'second']);
150
+ *
151
+ * assert(seededQueue.size === 2);
152
+ * assert.deepStrictEqual(seededQueue.dequeue(), Optional.some('first'));
153
+ * assert.deepStrictEqual(seededQueue.dequeue(), Optional.some('second'));
154
+ * ```
155
+ *
81
156
  * @param value The element to add.
82
157
  */
83
158
  enqueue: (value: T) => void;
84
159
  }>;
85
160
 
86
161
  /**
87
- * Class implementation for a queue with FIFO (First-In, First-Out) behavior using a circular buffer.
88
- * This implementation provides O(1) enqueue and dequeue operations by using a fixed-size buffer
89
- * with head and tail pointers that wrap around when they reach the buffer boundary.
162
+ * Class implementation for a queue with FIFO (First-In, First-Out) behavior
163
+ * using a circular buffer. This implementation provides O(1) enqueue and
164
+ * dequeue operations by using a fixed-size buffer with head and tail pointers
165
+ * that wrap around when they reach the buffer boundary.
90
166
  *
91
- * The circular buffer automatically resizes when it becomes full, ensuring that the queue
92
- * can grow to accommodate any number of elements while maintaining efficient operations.
167
+ * The circular buffer automatically resizes when it becomes full, ensuring that
168
+ * the queue can grow to accommodate any number of elements while maintaining
169
+ * efficient operations.
93
170
  *
94
171
  * @template T The type of elements in the queue.
95
172
  * @implements Queue
@@ -115,6 +192,7 @@ class QueueClass<T> implements Queue<T> {
115
192
 
116
193
  /**
117
194
  * Constructs a new QueueClass instance.
195
+ *
118
196
  * @param initialValues Optional initial values to populate the queue.
119
197
  */
120
198
  constructor(initialValues: readonly T[] = []) {
@@ -151,40 +229,16 @@ class QueueClass<T> implements Queue<T> {
151
229
  /**
152
230
  * Removes and returns the element at the front of the queue (FIFO).
153
231
  *
154
- * This operation removes the element that was added earliest (first-in) and returns it.
155
- * If the queue is empty, returns `Optional.none`. The operation is guaranteed to be O(1)
156
- * and does not require any array shifting or copying.
232
+ * This operation removes the element that was added earliest (first-in) and
233
+ * returns it. If the queue is empty, returns `Optional.none`. The operation
234
+ * is guaranteed to be O(1) and does not require any array shifting or
235
+ * copying.
157
236
  *
158
- * **Time Complexity:** O(1) - constant time operation
159
- * **Space Complexity:** O(1) - no additional memory allocation
237
+ * **Time Complexity:** O(1) - constant time operation **Space Complexity:**
238
+ * O(1) - no additional memory allocation
160
239
  *
161
- * @returns An Optional containing the removed element, or `Optional.none` if the queue is empty.
162
- *
163
- * @example
164
- * ```typescript
165
- * const queue = createQueue<string>();
166
- *
167
- * // Add some elements
168
- * queue.enqueue("first");
169
- * queue.enqueue("second");
170
- * queue.enqueue("third");
171
- *
172
- * // Remove elements in FIFO order
173
- * const first = queue.dequeue();
174
- * if (first.isSome) {
175
- * console.log(first.value); // "first"
176
- * }
177
- *
178
- * const second = queue.dequeue().unwrap(); // "second"
179
- * console.log(queue.size); // 1
180
- *
181
- * // Safe handling of empty queue
182
- * const emptyQueue = createQueue<number>();
183
- * const result = emptyQueue.dequeue();
184
- * if (result.isNone) {
185
- * console.log("Queue is empty");
186
- * }
187
- * ```
240
+ * @returns An Optional containing the removed element, or `Optional.none` if
241
+ * the queue is empty.
188
242
  */
189
243
  dequeue(): Optional<T> {
190
244
  if (this.isEmpty) {
@@ -203,44 +257,19 @@ class QueueClass<T> implements Queue<T> {
203
257
  /**
204
258
  * Adds an element to the back of the queue (FIFO).
205
259
  *
206
- * This operation adds the element to the end of the queue, where it will be the last
207
- * to be dequeued (first-in, first-out ordering). The operation is amortized O(1),
208
- * meaning it's O(1) for most operations with occasional O(n) when the buffer needs resizing.
260
+ * This operation adds the element to the end of the queue, where it will be
261
+ * the last to be dequeued (first-in, first-out ordering). The operation is
262
+ * amortized O(1), meaning it's O(1) for most operations with occasional O(n)
263
+ * when the buffer needs resizing.
209
264
  *
210
- * **Time Complexity:** O(1) amortized - O(n) only when buffer resize is needed
211
- * **Space Complexity:** O(1) - constant additional memory per element
265
+ * **Time Complexity:** O(1) amortized - O(n) only when buffer resize is
266
+ * needed **Space Complexity:** O(1) - constant additional memory per element
212
267
  *
213
- * **Buffer Resizing:** When the internal buffer becomes full, it automatically doubles
214
- * in size and reorganizes elements to maintain the circular buffer structure.
268
+ * **Buffer Resizing:** When the internal buffer becomes full, it
269
+ * automatically doubles in size and reorganizes elements to maintain the
270
+ * circular buffer structure.
215
271
  *
216
272
  * @param value The element to add to the back of the queue.
217
- *
218
- * @example
219
- * ```typescript
220
- * const taskQueue = createQueue<string>();
221
- *
222
- * // Add tasks in order of arrival
223
- * taskQueue.enqueue("Process order #1001"); // O(1)
224
- * taskQueue.enqueue("Send notification"); // O(1)
225
- * taskQueue.enqueue("Update inventory"); // O(1)
226
- *
227
- * console.log(taskQueue.size); // 3
228
- *
229
- * // Tasks will be processed in the order they were added
230
- * while (!taskQueue.isEmpty) {
231
- * const task = taskQueue.dequeue().unwrap();
232
- * console.log(`Executing: ${task}`);
233
- * }
234
- *
235
- * // High-volume enqueueing (demonstrates amortized O(1) performance)
236
- * const dataQueue = createQueue<number>();
237
- *
238
- * for (const i of range(1000000)) {
239
- * dataQueue.enqueue(i); // Each operation is O(1) amortized
240
- * }
241
- *
242
- * console.log(dataQueue.size); // 1000000
243
- * ```
244
273
  */
245
274
  enqueue(value: T): void {
246
275
  // Resize if buffer is full
@@ -279,13 +308,16 @@ class QueueClass<T> implements Queue<T> {
279
308
  }
280
309
 
281
310
  /**
282
- * Creates a new Queue instance with FIFO (First-In, First-Out) behavior using a high-performance circular buffer.
311
+ * Creates a new Queue instance with FIFO (First-In, First-Out) behavior using a
312
+ * high-performance circular buffer.
283
313
  *
284
- * This factory function creates an optimized queue implementation that maintains excellent performance
285
- * characteristics for both enqueue and dequeue operations. The underlying circular buffer automatically
286
- * resizes to accommodate growing workloads while providing predictable O(1) operations.
314
+ * This factory function creates an optimized queue implementation that
315
+ * maintains excellent performance characteristics for both enqueue and dequeue
316
+ * operations. The underlying circular buffer automatically resizes to
317
+ * accommodate growing workloads while providing predictable O(1) operations.
287
318
  *
288
319
  * **Implementation Features:**
320
+ *
289
321
  * - **O(1) enqueue operations** (amortized - occasionally O(n) when resizing)
290
322
  * - **O(1) dequeue operations** (always)
291
323
  * - **Automatic buffer resizing** - starts at 8 elements, doubles when full
@@ -293,100 +325,42 @@ class QueueClass<T> implements Queue<T> {
293
325
  * - **Circular buffer design** - eliminates need for array shifting operations
294
326
  *
295
327
  * **Performance Benefits:**
328
+ *
296
329
  * - No array copying during normal operations
297
330
  * - Minimal memory allocation overhead
298
331
  * - Predictable performance under high load
299
332
  * - Efficient memory usage with automatic cleanup
300
333
  *
301
- * @template T The type of elements stored in the queue.
302
- * @param initialValues Optional array of initial elements to populate the queue.
303
- * Elements will be dequeued in the same order they appear in the array.
304
- * If provided, the initial buffer capacity will be at least twice the array length.
305
- * @returns A new Queue instance optimized for high-performance FIFO operations.
306
- *
307
334
  * @example
308
- * ```typescript
309
- * import { createQueue } from './queue';
310
- *
311
- * // Example 1: Basic FIFO workflow
312
- * const requestQueue = createQueue<string>();
313
335
  *
314
- * // Add requests to the queue
315
- * requestQueue.enqueue("GET /api/users"); // O(1)
316
- * requestQueue.enqueue("POST /api/orders"); // O(1)
317
- * requestQueue.enqueue("DELETE /api/cache"); // O(1)
336
+ * ```ts
337
+ * const queue = createQueue<number>();
318
338
  *
319
- * // Process requests in order
320
- * while (!requestQueue.isEmpty) {
321
- * const request = requestQueue.dequeue().unwrap(); // O(1)
322
- * console.log(`Processing: ${request}`);
323
- * }
324
- * // Output:
325
- * // Processing: GET /api/users
326
- * // Processing: POST /api/orders
327
- * // Processing: DELETE /api/cache
339
+ * assert.ok(queue.isEmpty);
340
+ * assert(queue.size === 0);
328
341
  *
329
- * // Example 2: High-throughput event processing
330
- * type Event = { timestamp: number; type: string; data: any };
331
- * const eventQueue = createQueue<Event>();
342
+ * queue.enqueue(1);
343
+ * queue.enqueue(2);
332
344
  *
333
- * // Simulate high-volume event ingestion
334
- * for (const i of range(10000)) {
335
- * eventQueue.enqueue({
336
- * timestamp: Date.now(),
337
- * type: `event-${i % 5}`,
338
- * data: { value: i }
339
- * }); // Each enqueue is O(1) amortized
340
- * }
345
+ * assert.notOk(queue.isEmpty);
346
+ * assert(queue.size === 2);
347
+ * assert.deepStrictEqual(queue.dequeue(), Optional.some(1));
348
+ * assert.deepStrictEqual(queue.dequeue(), Optional.some(2));
349
+ * assert.deepStrictEqual(queue.dequeue(), Optional.none);
341
350
  *
342
- * // Process events efficiently
343
- * let processedCount = 0;
344
- * while (!eventQueue.isEmpty) {
345
- * const event = eventQueue.dequeue().unwrap(); // O(1)
346
- * // Process event...
347
- * processedCount++;
348
- * }
349
- * console.log(`Processed ${processedCount} events`); // 10000
351
+ * const seededQueue = createQueue(['first', 'second']);
350
352
  *
351
- * // Example 3: Queue with pre-populated data
352
- * const priorityTasks = createQueue<string>([
353
- * "Initialize system",
354
- * "Load configuration",
355
- * "Start services",
356
- * "Begin processing"
357
- * ]);
358
- *
359
- * console.log(priorityTasks.size); // Output: 4
360
- *
361
- * // Execute tasks in initialization order
362
- * while (!priorityTasks.isEmpty) {
363
- * const task = priorityTasks.dequeue().unwrap();
364
- * console.log(`Executing: ${task}`);
365
- * }
366
- *
367
- * // Example 4: Producer-Consumer pattern
368
- * const workQueue = createQueue<() => Promise<void>>();
369
- *
370
- * // Producer: Add work items
371
- * const addWork = (workFn: () => Promise<void>) => {
372
- * workQueue.enqueue(workFn);
373
- * };
374
- *
375
- * // Consumer: Process work items
376
- * const processWork = async () => {
377
- * while (!workQueue.isEmpty) {
378
- * const workItem = workQueue.dequeue().unwrap();
379
- * await workItem();
380
- * }
381
- * };
382
- *
383
- * // Add some work
384
- * addWork(async () => console.log("Work item 1"));
385
- * addWork(async () => console.log("Work item 2"));
386
- *
387
- * // Process the work
388
- * await processWork();
353
+ * assert(seededQueue.size === 2);
354
+ * assert.deepStrictEqual(seededQueue.dequeue(), Optional.some('first'));
355
+ * assert.deepStrictEqual(seededQueue.dequeue(), Optional.some('second'));
389
356
  * ```
357
+ *
358
+ * @template T The type of elements stored in the queue.
359
+ * @param initialValues Optional array of initial elements to populate the
360
+ * queue. Elements will be dequeued in the same order they appear in the
361
+ * array. If provided, the initial buffer capacity will be at least twice the
362
+ * array length.
363
+ * @returns A new Queue instance optimized for high-performance FIFO operations.
390
364
  */
391
365
  export const createQueue = <T,>(initialValues?: readonly T[]): Queue<T> =>
392
366
  new QueueClass<T>(initialValues);