@rogolev/value 0.0.3 → 0.0.5

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 (355) hide show
  1. package/CHANGELOG.md +319 -1
  2. package/docs/classes/Expect/toBe.md +61 -0
  3. package/docs/classes/Expect/toBeArray.md +52 -0
  4. package/docs/classes/Expect/toBeAssoc.md +53 -0
  5. package/docs/classes/Expect/toBeBigInt.md +52 -0
  6. package/docs/classes/Expect/toBeBool.md +53 -0
  7. package/docs/classes/Expect/toBeBoolean.md +53 -0
  8. package/docs/classes/Expect/toBeChar.md +53 -0
  9. package/docs/classes/Expect/toBeClass.md +53 -0
  10. package/docs/classes/Expect/toBeFloat.md +53 -0
  11. package/docs/classes/Expect/toBeFunction.md +52 -0
  12. package/docs/classes/Expect/toBeInfinity.md +53 -0
  13. package/docs/classes/Expect/toBeInt.md +53 -0
  14. package/docs/classes/Expect/toBeInteger.md +53 -0
  15. package/docs/classes/Expect/toBeList.md +53 -0
  16. package/docs/classes/Expect/toBeNaN.md +53 -0
  17. package/docs/classes/Expect/toBeNull.md +51 -0
  18. package/docs/classes/Expect/toBeNumber.md +52 -0
  19. package/docs/classes/Expect/toBeNumeric.md +53 -0
  20. package/docs/classes/Expect/toBeObject.md +52 -0
  21. package/docs/classes/Expect/toBeScalar.md +53 -0
  22. package/docs/classes/Expect/toBeString.md +52 -0
  23. package/docs/classes/Expect/toBeSymbol.md +53 -0
  24. package/docs/classes/Expect/toBeUndefined.md +54 -0
  25. package/docs/classes/Expect/toEqual.md +69 -0
  26. package/docs/classes/Expect/toStrictEqual.md +70 -0
  27. package/docs/classes/Expect.md +87 -0
  28. package/docs/classes/Type/expectArray.md +63 -0
  29. package/docs/classes/Type/expectAssoc.md +65 -0
  30. package/docs/classes/Type/expectBigInt.md +63 -0
  31. package/docs/classes/Type/expectBool.md +65 -0
  32. package/docs/classes/Type/expectBoolean.md +65 -0
  33. package/docs/classes/Type/expectChar.md +63 -0
  34. package/docs/classes/Type/expectClass.md +63 -0
  35. package/docs/classes/Type/expectFloat.md +68 -0
  36. package/docs/classes/Type/expectFunction.md +63 -0
  37. package/docs/classes/Type/expectInfinity.md +65 -0
  38. package/docs/classes/Type/expectInt.md +64 -0
  39. package/docs/classes/Type/expectInteger.md +64 -0
  40. package/docs/classes/Type/expectList.md +63 -0
  41. package/docs/classes/Type/expectNaN.md +63 -0
  42. package/docs/classes/Type/expectNull.md +63 -0
  43. package/docs/classes/Type/expectNumber.md +63 -0
  44. package/docs/classes/Type/expectNumeric.md +63 -0
  45. package/docs/classes/Type/expectObject.md +64 -0
  46. package/docs/classes/Type/expectScalar.md +63 -0
  47. package/docs/classes/Type/expectString.md +63 -0
  48. package/docs/classes/Type/expectSymbol.md +63 -0
  49. package/docs/classes/Type/expectUndefined.md +63 -0
  50. package/docs/classes/Type.md +101 -2
  51. package/docs/classes.md +2 -1
  52. package/docs/helpers/array/array_chunk.md +80 -0
  53. package/docs/helpers/array/array_chunk_with_keys.md +81 -0
  54. package/docs/helpers/array/array_column.md +110 -0
  55. package/docs/helpers/array/array_combine.md +77 -0
  56. package/docs/helpers/array/array_count_values.md +71 -0
  57. package/docs/helpers/array/array_diff.md +97 -0
  58. package/docs/helpers/array/array_diff_assoc.md +81 -0
  59. package/docs/helpers/array/array_diff_key.md +81 -0
  60. package/docs/helpers/array/array_diff_uassoc.md +101 -0
  61. package/docs/helpers/array/array_diff_ukey.md +101 -0
  62. package/docs/helpers/array/array_fill.md +81 -0
  63. package/docs/helpers/array/array_fill_keys.md +73 -0
  64. package/docs/helpers/array/array_filter.md +79 -0
  65. package/docs/helpers/array/array_flip.md +70 -0
  66. package/docs/helpers/array/array_index_max.md +78 -0
  67. package/docs/helpers/array/array_index_min.md +78 -0
  68. package/docs/helpers/array/array_intersect.md +91 -0
  69. package/docs/helpers/array/array_intersect_assoc.md +91 -0
  70. package/docs/helpers/array/array_intersect_key.md +91 -0
  71. package/docs/helpers/array/array_intersect_uassoc.md +101 -0
  72. package/docs/helpers/array/array_intersect_ukey.md +101 -0
  73. package/docs/helpers/array/array_key_exists.md +73 -0
  74. package/docs/helpers/array/array_key_first.md +62 -0
  75. package/docs/helpers/array/array_key_last.md +62 -0
  76. package/docs/helpers/array/array_key_to_lower_case.md +57 -0
  77. package/docs/helpers/array/array_key_to_upper_case.md +57 -0
  78. package/docs/helpers/array/array_keys.md +62 -0
  79. package/docs/helpers/array/array_map.md +69 -0
  80. package/docs/helpers/array/array_merge.md +67 -0
  81. package/docs/helpers/array/array_merge_recursive.md +86 -0
  82. package/docs/helpers/array/array_pad.md +83 -0
  83. package/docs/helpers/array/array_pop.md +64 -0
  84. package/docs/helpers/array/array_product.md +62 -0
  85. package/docs/helpers/array/array_push.md +57 -0
  86. package/docs/helpers/array/array_rand.md +99 -0
  87. package/docs/helpers/array/array_reduce.md +77 -0
  88. package/docs/helpers/array/array_replace.md +85 -0
  89. package/docs/helpers/array/array_replace_recursive.md +87 -0
  90. package/docs/helpers/array/array_reverse.md +55 -0
  91. package/docs/helpers/array/array_search.md +74 -0
  92. package/docs/helpers/array/array_shift.md +64 -0
  93. package/docs/helpers/array/array_slice.md +65 -0
  94. package/docs/helpers/array/array_splice.md +103 -0
  95. package/docs/helpers/array/array_sum.md +55 -0
  96. package/docs/helpers/array/array_udiff.md +97 -0
  97. package/docs/helpers/array/array_udiff_assoc.md +101 -0
  98. package/docs/helpers/array/array_udiff_uassoc.md +88 -0
  99. package/docs/helpers/array/array_uintersect.md +101 -0
  100. package/docs/helpers/array/array_uintersect_assoc.md +102 -0
  101. package/docs/helpers/array/array_uintersect_uassoc.md +135 -0
  102. package/docs/helpers/array/array_unique.md +54 -0
  103. package/docs/helpers/array/array_unshift.md +58 -0
  104. package/docs/helpers/array/array_values.md +54 -0
  105. package/docs/helpers/array/array_walk.md +87 -0
  106. package/docs/helpers/array/array_walk_recursive.md +93 -0
  107. package/docs/helpers/array/count.md +54 -0
  108. package/docs/helpers/array/in_array.md +65 -0
  109. package/docs/helpers/array/natsort.md +60 -0
  110. package/docs/helpers/array/range.md +76 -0
  111. package/docs/helpers/array/shuffle.md +74 -0
  112. package/docs/helpers/array/sort.md +79 -0
  113. package/docs/helpers/expect.md +58 -0
  114. package/docs/helpers/expect_array.md +63 -0
  115. package/docs/helpers/expect_assoc.md +65 -0
  116. package/docs/helpers/expect_bigint.md +63 -0
  117. package/docs/helpers/expect_bool.md +65 -0
  118. package/docs/helpers/expect_boolean.md +65 -0
  119. package/docs/helpers/expect_char.md +63 -0
  120. package/docs/helpers/expect_class.md +63 -0
  121. package/docs/helpers/expect_float.md +65 -0
  122. package/docs/helpers/expect_function.md +63 -0
  123. package/docs/helpers/expect_infinity.md +65 -0
  124. package/docs/helpers/expect_int.md +65 -0
  125. package/docs/helpers/expect_integer.md +65 -0
  126. package/docs/helpers/expect_list.md +63 -0
  127. package/docs/helpers/expect_nan.md +63 -0
  128. package/docs/helpers/expect_null.md +63 -0
  129. package/docs/helpers/expect_number.md +63 -0
  130. package/docs/helpers/expect_numeric.md +63 -0
  131. package/docs/helpers/expect_object.md +64 -0
  132. package/docs/helpers/expect_scalar.md +63 -0
  133. package/docs/helpers/expect_string.md +63 -0
  134. package/docs/helpers/expect_symbol.md +63 -0
  135. package/docs/helpers/expect_undefined.md +64 -0
  136. package/docs/helpers/is_char.md +84 -0
  137. package/docs/helpers/is_equal.md +75 -0
  138. package/docs/helpers/string/is_digit_char.md +70 -0
  139. package/docs/helpers/string/is_whitespace_char.md +70 -0
  140. package/docs/helpers/string/natcompare.md +69 -0
  141. package/docs/helpers/string/natcompare_numeric.md +70 -0
  142. package/docs/helpers.md +172 -1
  143. package/index.mjs +91 -1
  144. package/package.json +1 -1
  145. package/prettier.config.mjs +2 -1
  146. package/src/classes/Expect.mjs +1445 -0
  147. package/src/classes/Type.mjs +2739 -1284
  148. package/src/constants.mjs +83 -14
  149. package/src/helpers/array/array_chunk.mjs +102 -0
  150. package/src/helpers/array/array_chunk_with_keys.mjs +102 -0
  151. package/src/helpers/array/array_column.mjs +131 -0
  152. package/src/helpers/array/array_combine.mjs +26 -0
  153. package/src/helpers/array/array_count_values.mjs +82 -0
  154. package/src/helpers/array/array_diff.mjs +77 -0
  155. package/src/helpers/array/array_diff_assoc.mjs +56 -0
  156. package/src/helpers/array/array_diff_key.mjs +56 -0
  157. package/src/helpers/array/array_diff_uassoc.mjs +76 -0
  158. package/src/helpers/array/array_diff_ukey.mjs +71 -0
  159. package/src/helpers/array/array_fill.mjs +108 -0
  160. package/src/helpers/array/array_fill_keys.mjs +90 -0
  161. package/src/helpers/array/array_filter.mjs +105 -0
  162. package/src/helpers/array/array_flip.mjs +58 -0
  163. package/src/helpers/array/array_index_max.mjs +82 -0
  164. package/src/helpers/array/array_index_min.mjs +82 -0
  165. package/src/helpers/array/array_intersect.mjs +71 -0
  166. package/src/helpers/array/array_intersect_assoc.mjs +67 -0
  167. package/src/helpers/array/array_intersect_key.mjs +67 -0
  168. package/src/helpers/array/array_intersect_uassoc.mjs +77 -0
  169. package/src/helpers/array/array_intersect_ukey.mjs +72 -0
  170. package/src/helpers/array/array_key_exists.mjs +83 -0
  171. package/src/helpers/array/array_key_first.mjs +73 -0
  172. package/src/helpers/array/array_key_last.mjs +74 -0
  173. package/src/helpers/array/array_key_to_lower_case.mjs +71 -0
  174. package/src/helpers/array/array_key_to_upper_case.mjs +71 -0
  175. package/src/helpers/array/array_keys.mjs +65 -0
  176. package/src/helpers/array/array_map.mjs +84 -0
  177. package/src/helpers/array/array_merge.mjs +95 -0
  178. package/src/helpers/array/array_merge_recursive.mjs +153 -0
  179. package/src/helpers/array/array_pad.mjs +105 -0
  180. package/src/helpers/array/array_pop.mjs +82 -0
  181. package/src/helpers/array/array_product.mjs +67 -0
  182. package/src/helpers/array/array_push.mjs +75 -0
  183. package/src/helpers/array/array_rand.mjs +129 -0
  184. package/src/helpers/array/array_reduce.mjs +90 -0
  185. package/src/helpers/array/array_replace.mjs +25 -0
  186. package/src/helpers/array/array_replace_recursive.mjs +109 -0
  187. package/src/helpers/array/array_reverse.mjs +62 -0
  188. package/src/helpers/array/array_search.mjs +104 -0
  189. package/src/helpers/array/array_shift.mjs +78 -0
  190. package/src/helpers/array/array_slice.mjs +99 -0
  191. package/src/helpers/array/array_splice.mjs +218 -0
  192. package/src/helpers/array/array_sum.mjs +60 -0
  193. package/src/helpers/array/array_udiff.mjs +91 -0
  194. package/src/helpers/array/array_udiff_assoc.mjs +71 -0
  195. package/src/helpers/array/array_udiff_uassoc.mjs +124 -0
  196. package/src/helpers/array/array_uintersect.mjs +72 -0
  197. package/src/helpers/array/array_uintersect_assoc.mjs +77 -0
  198. package/src/helpers/array/array_uintersect_uassoc.mjs +121 -0
  199. package/src/helpers/array/array_unique.mjs +77 -0
  200. package/src/helpers/array/array_unshift.mjs +64 -0
  201. package/src/helpers/array/array_values.mjs +57 -0
  202. package/src/helpers/array/array_walk.mjs +95 -0
  203. package/src/helpers/array/array_walk_recursive.mjs +104 -0
  204. package/src/helpers/array/count.mjs +57 -0
  205. package/src/helpers/array/in_array.mjs +67 -0
  206. package/src/helpers/array/natsort.mjs +62 -0
  207. package/src/helpers/array/range.mjs +121 -0
  208. package/src/helpers/array/shuffle.mjs +73 -0
  209. package/src/helpers/array/sort.mjs +69 -0
  210. package/src/helpers/expect.mjs +44 -0
  211. package/src/helpers/expect_array.mjs +66 -0
  212. package/src/helpers/expect_assoc.mjs +66 -0
  213. package/src/helpers/expect_bigint.mjs +66 -0
  214. package/src/helpers/expect_bool.mjs +66 -0
  215. package/src/helpers/expect_boolean.mjs +57 -0
  216. package/src/helpers/expect_char.mjs +66 -0
  217. package/src/helpers/expect_class.mjs +66 -0
  218. package/src/helpers/expect_float.mjs +66 -0
  219. package/src/helpers/expect_function.mjs +66 -0
  220. package/src/helpers/expect_infinity.mjs +66 -0
  221. package/src/helpers/expect_int.mjs +66 -0
  222. package/src/helpers/expect_integer.mjs +57 -0
  223. package/src/helpers/expect_list.mjs +66 -0
  224. package/src/helpers/expect_nan.mjs +66 -0
  225. package/src/helpers/expect_null.mjs +66 -0
  226. package/src/helpers/expect_number.mjs +66 -0
  227. package/src/helpers/expect_numeric.mjs +66 -0
  228. package/src/helpers/expect_object.mjs +67 -0
  229. package/src/helpers/expect_scalar.mjs +66 -0
  230. package/src/helpers/expect_string.mjs +65 -0
  231. package/src/helpers/expect_symbol.mjs +66 -0
  232. package/src/helpers/expect_undefined.mjs +66 -0
  233. package/src/helpers/is_char.mjs +54 -0
  234. package/src/helpers/is_equal.mjs +94 -0
  235. package/src/helpers/string/is_digit_char.mjs +60 -0
  236. package/src/helpers/string/is_whitespace_char.mjs +54 -0
  237. package/src/helpers/string/natcompare.mjs +107 -0
  238. package/src/helpers/string/natcompare_numeric.mjs +131 -0
  239. package/tests/classes/Expect/toBe.test.mjs +60 -0
  240. package/tests/classes/Expect/toBeArray.test.mjs +46 -0
  241. package/tests/classes/Expect/toBeAssoc.test.mjs +48 -0
  242. package/tests/classes/Expect/toBeBigInt.test.mjs +46 -0
  243. package/tests/classes/Expect/toBeBool.test.mjs +48 -0
  244. package/tests/classes/Expect/toBeBoolean.test.mjs +48 -0
  245. package/tests/classes/Expect/toBeChar.test.mjs +46 -0
  246. package/tests/classes/Expect/toBeClass.test.mjs +48 -0
  247. package/tests/classes/Expect/toBeFloat.test.mjs +48 -0
  248. package/tests/classes/Expect/toBeFunction.test.mjs +51 -0
  249. package/tests/classes/Expect/toBeInfinity.test.mjs +48 -0
  250. package/tests/classes/Expect/toBeInt.test.mjs +48 -0
  251. package/tests/classes/Expect/toBeInteger.test.mjs +48 -0
  252. package/tests/classes/Expect/toBeList.test.mjs +46 -0
  253. package/tests/classes/Expect/toBeNaN.test.mjs +46 -0
  254. package/tests/classes/Expect/toBeNull.test.mjs +46 -0
  255. package/tests/classes/Expect/toBeNumber.test.mjs +46 -0
  256. package/tests/classes/Expect/toBeNumeric.test.mjs +53 -0
  257. package/tests/classes/Expect/toBeObject.test.mjs +47 -0
  258. package/tests/classes/Expect/toBeScalar.test.mjs +63 -0
  259. package/tests/classes/Expect/toBeString.test.mjs +46 -0
  260. package/tests/classes/Expect/toBeSymbol.test.mjs +46 -0
  261. package/tests/classes/Expect/toBeUndefined.test.mjs +50 -0
  262. package/tests/classes/Expect/toEqual.test.mjs +66 -0
  263. package/tests/classes/Expect/toStrictEqual.test.mjs +73 -0
  264. package/tests/classes/Type.test.mjs +1320 -1262
  265. package/tests/helpers/array/array_chunk.test.mjs +49 -0
  266. package/tests/helpers/array/array_chunk_with_keys.test.mjs +45 -0
  267. package/tests/helpers/array/array_column.test.mjs +87 -0
  268. package/tests/helpers/array/array_combine.test.mjs +41 -0
  269. package/tests/helpers/array/array_count_values.test.mjs +40 -0
  270. package/tests/helpers/array/array_diff.test.mjs +78 -0
  271. package/tests/helpers/array/array_diff_assoc.test.mjs +64 -0
  272. package/tests/helpers/array/array_diff_key.test.mjs +64 -0
  273. package/tests/helpers/array/array_diff_uassoc.test.mjs +73 -0
  274. package/tests/helpers/array/array_diff_ukey.test.mjs +77 -0
  275. package/tests/helpers/array/array_fill.test.mjs +47 -0
  276. package/tests/helpers/array/array_fill_keys.test.mjs +35 -0
  277. package/tests/helpers/array/array_filter.test.mjs +38 -0
  278. package/tests/helpers/array/array_flip.test.mjs +33 -0
  279. package/tests/helpers/array/array_index_max.test.mjs +41 -0
  280. package/tests/helpers/array/array_index_min.test.mjs +41 -0
  281. package/tests/helpers/array/array_intersect.test.mjs +65 -0
  282. package/tests/helpers/array/array_intersect_assoc.test.mjs +65 -0
  283. package/tests/helpers/array/array_intersect_key.test.mjs +65 -0
  284. package/tests/helpers/array/array_intersect_uassoc.test.mjs +76 -0
  285. package/tests/helpers/array/array_intersect_ukey.test.mjs +74 -0
  286. package/tests/helpers/array/array_key_exists.test.mjs +36 -0
  287. package/tests/helpers/array/array_key_first.test.mjs +29 -0
  288. package/tests/helpers/array/array_key_last.test.mjs +29 -0
  289. package/tests/helpers/array/array_key_to_lower_case.test.mjs +23 -0
  290. package/tests/helpers/array/array_key_to_upper_case.test.mjs +23 -0
  291. package/tests/helpers/array/array_keys.test.mjs +27 -0
  292. package/tests/helpers/array/array_map.test.mjs +32 -0
  293. package/tests/helpers/array/array_merge.test.mjs +37 -0
  294. package/tests/helpers/array/array_merge_recursive.test.mjs +65 -0
  295. package/tests/helpers/array/array_pad.test.mjs +48 -0
  296. package/tests/helpers/array/array_pop.test.mjs +29 -0
  297. package/tests/helpers/array/array_product.test.mjs +33 -0
  298. package/tests/helpers/array/array_push.test.mjs +31 -0
  299. package/tests/helpers/array/array_rand.test.mjs +59 -0
  300. package/tests/helpers/array/array_reduce.test.mjs +44 -0
  301. package/tests/helpers/array/array_replace.test.mjs +46 -0
  302. package/tests/helpers/array/array_replace_recursive.test.mjs +46 -0
  303. package/tests/helpers/array/array_reverse.test.mjs +31 -0
  304. package/tests/helpers/array/array_search.test.mjs +48 -0
  305. package/tests/helpers/array/array_shift.test.mjs +29 -0
  306. package/tests/helpers/array/array_slice.test.mjs +49 -0
  307. package/tests/helpers/array/array_splice.test.mjs +67 -0
  308. package/tests/helpers/array/array_sum.test.mjs +27 -0
  309. package/tests/helpers/array/array_udiff.test.mjs +95 -0
  310. package/tests/helpers/array/array_udiff_assoc.test.mjs +77 -0
  311. package/tests/helpers/array/array_udiff_uassoc.test.mjs +89 -0
  312. package/tests/helpers/array/array_uintersect.test.mjs +78 -0
  313. package/tests/helpers/array/array_uintersect_assoc.test.mjs +80 -0
  314. package/tests/helpers/array/array_uintersect_uassoc.test.mjs +122 -0
  315. package/tests/helpers/array/array_unique.test.mjs +27 -0
  316. package/tests/helpers/array/array_unshift.test.mjs +31 -0
  317. package/tests/helpers/array/array_values.test.mjs +27 -0
  318. package/tests/helpers/array/array_walk.test.mjs +48 -0
  319. package/tests/helpers/array/array_walk_recursive.test.mjs +53 -0
  320. package/tests/helpers/array/count.test.mjs +27 -0
  321. package/tests/helpers/array/in_array.test.mjs +52 -0
  322. package/tests/helpers/array/natsort.test.mjs +71 -0
  323. package/tests/helpers/array/range.test.mjs +51 -0
  324. package/tests/helpers/array/shuffle.test.mjs +42 -0
  325. package/tests/helpers/array/sort.test.mjs +60 -0
  326. package/tests/helpers/array.test.mjs +58 -58
  327. package/tests/helpers/expect.test.mjs +95 -0
  328. package/tests/helpers/expect_array.test.mjs +71 -0
  329. package/tests/helpers/expect_assoc.test.mjs +61 -0
  330. package/tests/helpers/expect_bigint.test.mjs +63 -0
  331. package/tests/helpers/expect_bool.test.mjs +59 -0
  332. package/tests/helpers/expect_boolean.test.mjs +61 -0
  333. package/tests/helpers/expect_char.test.mjs +63 -0
  334. package/tests/helpers/expect_class.test.mjs +64 -0
  335. package/tests/helpers/expect_float.test.mjs +64 -0
  336. package/tests/helpers/expect_function.test.mjs +65 -0
  337. package/tests/helpers/expect_infinity.test.mjs +62 -0
  338. package/tests/helpers/expect_int.test.mjs +57 -0
  339. package/tests/helpers/expect_integer.test.mjs +59 -0
  340. package/tests/helpers/expect_list.test.mjs +73 -0
  341. package/tests/helpers/expect_nan.test.mjs +57 -0
  342. package/tests/helpers/expect_null.test.mjs +57 -0
  343. package/tests/helpers/expect_number.test.mjs +57 -0
  344. package/tests/helpers/expect_numeric.test.mjs +57 -0
  345. package/tests/helpers/expect_object.test.mjs +63 -0
  346. package/tests/helpers/expect_scalar.test.mjs +72 -0
  347. package/tests/helpers/expect_string.test.mjs +65 -0
  348. package/tests/helpers/expect_symbol.test.mjs +66 -0
  349. package/tests/helpers/expect_undefined.test.mjs +59 -0
  350. package/tests/helpers/is_char.test.mjs +40 -0
  351. package/tests/helpers/is_equal.test.mjs +110 -0
  352. package/tests/helpers/string/is_digit_char.test.mjs +32 -0
  353. package/tests/helpers/string/is_whitespace_char.test.mjs +32 -0
  354. package/tests/helpers/string/natcompare.test.mjs +100 -0
  355. package/tests/helpers/string/natcompare_numeric.test.mjs +110 -0
@@ -0,0 +1,71 @@
1
+ import array from '../array.mjs';
2
+ import is_array from '../is_array.mjs';
3
+ import is_list from '../is_list.mjs';
4
+
5
+ /**
6
+ * Преобразует ключи ассоциативного массива в нижний регистр.
7
+ *
8
+ * ### Описание
9
+ *
10
+ * Функция `array_key_to_lower_case` используется для преобразования всех ключей ассоциативного массива в нижний регистр.
11
+ * Если переданное значение не является массивом, функция выбрасывает ошибку типа `TypeError`.
12
+ * Если переданное значение является списком (обычным массивом), оно возвращается без изменений.
13
+ *
14
+ * ### Параметры
15
+ *
16
+ * - `value` (object): Ассоциативный массив, ключи которого необходимо преобразовать в нижний регистр.
17
+ *
18
+ * ### Возвращаемое значение
19
+ *
20
+ * Возвращает новый ассоциативный массив с ключами в нижнем регистре.
21
+ * Если переданное значение является списком, оно возвращается без изменений.
22
+ *
23
+ * ### Примеры использования
24
+ *
25
+ * 1. Преобразование ключей ассоциативного массива в нижний регистр:
26
+ *
27
+ * ```js
28
+ * const assoc = { Key1: 'value1', Key2: 'value2' };
29
+ * const result = array_key_to_lower_case(assoc);
30
+ * console.log(result); // { key1: 'value1', key2: 'value2' }
31
+ * ```
32
+ *
33
+ * 2. Обработка списка (обычного массива):
34
+ *
35
+ * ```js
36
+ * const list = [1, 2, 3];
37
+ * const result = array_key_to_lower_case(list);
38
+ * console.log(result); // [1, 2, 3]
39
+ * ```
40
+ *
41
+ * 3. Обработка значения, не являющегося массивом:
42
+ *
43
+ * ```js
44
+ * try {
45
+ * const result = array_key_to_lower_case('not an array');
46
+ * } catch (e) {
47
+ * console.error(e.message); // Параметр "array" должен быть массивом.
48
+ * }
49
+ * ```
50
+ *
51
+ * @param {object} value Ассоциативный массив, ключи которого необходимо преобразовать в нижний регистр.
52
+ * @returns {object} Возвращает новый ассоциативный массив с ключами в нижнем регистре.
53
+ * @throws {TypeError} Если переданное значение не является массивом.
54
+ */
55
+ export default function array_key_to_lower_case(value) {
56
+ if (!is_array(value)) {
57
+ throw new TypeError('Параметр "array" должен быть массивом.');
58
+ }
59
+
60
+ if (is_list(value)) {
61
+ return value;
62
+ }
63
+
64
+ const result = array({});
65
+
66
+ for (const k in value) {
67
+ result[k.toLowerCase()] = value[k];
68
+ }
69
+
70
+ return result;
71
+ }
@@ -0,0 +1,71 @@
1
+ import array from '../array.mjs';
2
+ import is_array from '../is_array.mjs';
3
+ import is_list from '../is_list.mjs';
4
+
5
+ /**
6
+ * Преобразует ключи ассоциативного массива в верхний регистр.
7
+ *
8
+ * ### Описание
9
+ *
10
+ * Функция `array_key_to_upper_case` используется для преобразования всех ключей ассоциативного массива в верхний регистр.
11
+ * Если переданное значение не является массивом, функция выбрасывает ошибку типа `TypeError`.
12
+ * Если переданное значение является списком (обычным массивом), оно возвращается без изменений.
13
+ *
14
+ * ### Параметры
15
+ *
16
+ * - `value` (object): Ассоциативный массив, ключи которого необходимо преобразовать в верхний регистр.
17
+ *
18
+ * ### Возвращаемое значение
19
+ *
20
+ * Возвращает новый ассоциативный массив с ключами в верхнем регистре.
21
+ * Если переданное значение является списком, оно возвращается без изменений.
22
+ *
23
+ * ### Примеры использования
24
+ *
25
+ * 1. Преобразование ключей ассоциативного массива в верхний регистр:
26
+ *
27
+ * ```js
28
+ * const assoc = { key1: 'value1', key2: 'value2' };
29
+ * const result = array_key_to_upper_case(assoc);
30
+ * console.log(result); // { KEY1: 'value1', KEY2: 'value2' }
31
+ * ```
32
+ *
33
+ * 2. Обработка списка (обычного массива):
34
+ *
35
+ * ```js
36
+ * const list = [1, 2, 3];
37
+ * const result = array_key_to_upper_case(list);
38
+ * console.log(result); // [1, 2, 3]
39
+ * ```
40
+ *
41
+ * 3. Обработка значения, не являющегося массивом:
42
+ *
43
+ * ```js
44
+ * try {
45
+ * const result = array_key_to_upper_case('not an array');
46
+ * } catch (e) {
47
+ * console.error(e.message); // Параметр "array" должен быть массивом.
48
+ * }
49
+ * ```
50
+ *
51
+ * @param {object} value Ассоциативный массив, ключи которого необходимо преобразовать в верхний регистр.
52
+ * @returns {object} Возвращает новый ассоциативный массив с ключами в верхнем регистре.
53
+ * @throws {TypeError} Если переданное значение не является массивом.
54
+ */
55
+ export default function array_key_to_upper_case(value) {
56
+ if (!is_array(value)) {
57
+ throw new TypeError('Параметр "array" должен быть массивом.');
58
+ }
59
+
60
+ if (is_list(value)) {
61
+ return value;
62
+ }
63
+
64
+ const result = array({});
65
+
66
+ for (const k in value) {
67
+ result[k.toUpperCase()] = value[k];
68
+ }
69
+
70
+ return result;
71
+ }
@@ -0,0 +1,65 @@
1
+ import is_array from '../is_array.mjs';
2
+
3
+ /**
4
+ * Возвращает массив ключей из переданного массива или объекта.
5
+ *
6
+ * ### Описание
7
+ *
8
+ * Функция `array_keys` используется для получения массива ключей из переданного массива или объекта.
9
+ * Она возвращает массив, содержащий все ключи переданного массива или объекта.
10
+ *
11
+ * ### Параметры
12
+ *
13
+ * - `value` (object): Исходный массив или объект.
14
+ *
15
+ * ### Возвращаемое значение
16
+ *
17
+ * Возвращает массив, содержащий все ключи переданного массива или объекта.
18
+ *
19
+ * ### Примеры использования
20
+ *
21
+ * 1. Получение ключей из обычного массива:
22
+ *
23
+ * ```js
24
+ * const array = [1, 2, 3];
25
+ * const result = array_keys(array);
26
+ * console.log(result); // ['0', '1', '2']
27
+ * ```
28
+ *
29
+ * 2. Получение ключей из ассоциативного массива:
30
+ *
31
+ * ```js
32
+ * const array = { a: 1, b: 2, c: 3 };
33
+ * const result = array_keys(array);
34
+ * console.log(result); // ['a', 'b', 'c']
35
+ * ```
36
+ *
37
+ * 3. Обработка пустого массива:
38
+ *
39
+ * ```js
40
+ * const array = [];
41
+ * const result = array_keys(array);
42
+ * console.log(result); // []
43
+ * ```
44
+ *
45
+ * 4. Обработка значений, не являющихся массивами или объектами:
46
+ *
47
+ * ```js
48
+ * try {
49
+ * const result = array_keys('not an array');
50
+ * } catch (e) {
51
+ * console.error(e.message); // Параметр "value" должен быть массивом.
52
+ * }
53
+ * ```
54
+ *
55
+ * @param {object} value Исходный массив или объект.
56
+ * @returns {array} Возвращает массив, содержащий все ключи переданного массива или объекта.
57
+ * @throws {TypeError} Если параметр не является массивом или объектом.
58
+ */
59
+ export default function array_keys(value) {
60
+ if (!is_array(value)) {
61
+ throw new TypeError('Параметр "value" должен быть массивом.');
62
+ }
63
+
64
+ return Object.keys(value);
65
+ }
@@ -0,0 +1,84 @@
1
+ import array from '../array.mjs';
2
+ import is_array from '../is_array.mjs';
3
+ import is_function from '../is_function.mjs';
4
+ import is_list from '../is_list.mjs';
5
+
6
+ /**
7
+ * Применяет функцию обратного вызова к каждому элементу массива.
8
+ *
9
+ * ### Описание
10
+ *
11
+ * Функция `array_map` используется для применения функции обратного вызова к каждому элементу массива.
12
+ * Она возвращает новый массив, содержащий результаты применения функции обратного вызова к каждому элементу исходного массива.
13
+ *
14
+ * ### Параметры
15
+ *
16
+ * - `value` (object): Исходный массив.
17
+ * - `callback` (function): Функция обратного вызова, применяемая к каждому элементу массива.
18
+ *
19
+ * ### Возвращаемое значение
20
+ *
21
+ * Возвращает новый массив, содержащий результаты применения функции обратного вызова к каждому элементу исходного массива.
22
+ *
23
+ * ### Примеры использования
24
+ *
25
+ * 1. Применение функции обратного вызова к обычному массиву:
26
+ *
27
+ * ```js
28
+ * const array = [1, 2, 3];
29
+ * const callback = (value) => value * 2;
30
+ * const result = array_map(array, callback);
31
+ * console.log(result); // [2, 4, 6]
32
+ * ```
33
+ *
34
+ * 2. Применение функции обратного вызова к ассоциативному массиву:
35
+ *
36
+ * ```js
37
+ * const array = { a: 1, b: 2, c: 3 };
38
+ * const callback = (value) => value * 2;
39
+ * const result = array_map(array, callback);
40
+ * console.log(result); // { a: 2, b: 4, c: 6 }
41
+ * ```
42
+ *
43
+ * 3. Обработка значений, не являющихся массивами:
44
+ *
45
+ * ```js
46
+ * try {
47
+ * const result = array_map('not an array', (value) => value * 2);
48
+ * } catch (e) {
49
+ * console.error(e.message); // Параметр "value" должен быть массивом.
50
+ * }
51
+ * ```
52
+ *
53
+ * 4. Обработка значений, не являющихся функциями:
54
+ *
55
+ * ```js
56
+ * try {
57
+ * const result = array_map([1, 2, 3], 'not a function');
58
+ * } catch (e) {
59
+ * console.error(e.message); // Параметр "callback" должен быть функцией.
60
+ * }
61
+ * ```
62
+ *
63
+ * @param {object} value Исходный массив.
64
+ * @param {function} callback Функция обратного вызова, применяемая к каждому элементу массива.
65
+ * @returns {object} Возвращает новый массив, содержащий результаты применения функции обратного вызова к каждому элементу исходного массива.
66
+ * @throws {TypeError} Если параметры не являются массивом или функцией.
67
+ */
68
+ export default function array_map(value, callback) {
69
+ if (!is_array(value)) {
70
+ throw new TypeError('Параметр "value" должен быть массивом.');
71
+ }
72
+
73
+ if (!is_function(callback)) {
74
+ throw new TypeError('Параметр "callback" должен быть функцией.');
75
+ }
76
+
77
+ const result = is_list(value) ? Array.from(value) : array(value);
78
+
79
+ for (const [k, v] of Object.entries(value)) {
80
+ result[k] = callback(v, k);
81
+ }
82
+
83
+ return result;
84
+ }
@@ -0,0 +1,95 @@
1
+ import array from '../array.mjs';
2
+ import empty from '../empty.mjs';
3
+ import is_array from '../is_array.mjs';
4
+ import is_int from '../is_int.mjs';
5
+ import is_list from '../is_list.mjs';
6
+
7
+ /**
8
+ * Объединяет несколько массивов в один.
9
+ *
10
+ * ### Описание
11
+ *
12
+ * Функция `array_merge` используется для объединения нескольких массивов в один.
13
+ * Она поддерживает как обычные массивы, так и ассоциативные массивы (объекты с ключами и значениями).
14
+ *
15
+ * ### Параметры
16
+ *
17
+ * - `...arrays` (object): Массивы, которые необходимо объединить.
18
+ *
19
+ * ### Возвращаемое значение
20
+ *
21
+ * Возвращает новый массив, содержащий элементы всех переданных массивов.
22
+ * Если все переданные массивы являются обычными массивами, результатом будет обычный массив.
23
+ * Если хотя бы один из переданных массивов является ассоциативным массивом, результатом будет ассоциативный массив.
24
+ *
25
+ * ### Примеры использования
26
+ *
27
+ * 1. Объединение обычных массивов:
28
+ *
29
+ * ```js
30
+ * const array1 = [1, 2, 3];
31
+ * const array2 = [4, 5, 6];
32
+ * const result = array_merge(array1, array2);
33
+ * console.log(result); // [1, 2, 3, 4, 5, 6]
34
+ * ```
35
+ *
36
+ * 2. Объединение ассоциативных массивов:
37
+ *
38
+ * ```js
39
+ * const array1 = { a: 1, b: 2 };
40
+ * const array2 = { c: 3, d: 4 };
41
+ * const result = array_merge(array1, array2);
42
+ * console.log(result); // { a: 1, b: 2, c: 3, d: 4 }
43
+ * ```
44
+ *
45
+ * 3. Объединение обычных и ассоциативных массивов:
46
+ *
47
+ * ```js
48
+ * const array1 = [1, 2, 3];
49
+ * const array2 = { a: 4, b: 5 };
50
+ * const result = array_merge(array1, array2);
51
+ * console.log(result); // { 0: 1, 1: 2, 2: 3, a: 4, b: 5 }
52
+ * ```
53
+ *
54
+ * 4. Обработка значений, не являющихся массивами:
55
+ *
56
+ * ```js
57
+ * try {
58
+ * const result = array_merge('not an array');
59
+ * } catch (e) {
60
+ * console.error(e.message); // Параметр "arrays" должен быть массивом.
61
+ * }
62
+ * ```
63
+ *
64
+ * @param {...object} arrays Массивы, которые необходимо объединить.
65
+ * @returns {object} Возвращает новый массив, содержащий элементы всех переданных массивов.
66
+ * @throws {TypeError} Если хотя бы один из параметров не является массивом.
67
+ */
68
+ export default function array_merge(...arrays) {
69
+ if (!arrays.every((arr) => is_array(arr))) {
70
+ throw new TypeError('Параметр "arrays" должен быть массивом.');
71
+ }
72
+
73
+ if (empty(arrays)) {
74
+ return [];
75
+ }
76
+
77
+ if (arrays.every((arr) => is_list(arr))) {
78
+ return [].concat(...arrays);
79
+ }
80
+
81
+ const result = array({});
82
+ let index = 0;
83
+
84
+ for (const arr of arrays) {
85
+ for (const [k, v] of Object.entries(arr)) {
86
+ if (is_int(Number(k))) {
87
+ result[index++] = v;
88
+ } else {
89
+ result[k] = v;
90
+ }
91
+ }
92
+ }
93
+
94
+ return result;
95
+ }
@@ -0,0 +1,153 @@
1
+ import array from '../array.mjs';
2
+ import empty from '../empty.mjs';
3
+ import is_array from '../is_array.mjs';
4
+ import is_int from '../is_int.mjs';
5
+ import is_list from '../is_list.mjs';
6
+ import is_null from '../is_null.mjs';
7
+
8
+ /**
9
+ * Объединяет несколько массивов рекурсивно.
10
+ *
11
+ * ### Описание
12
+ *
13
+ * Функция `array_merge_recursive` используется для рекурсивного объединения нескольких массивов в один.
14
+ * Она поддерживает как обычные массивы, так и ассоциативные массивы (объекты с ключами и значениями).
15
+ *
16
+ * ### Параметры
17
+ *
18
+ * - `...arrays` (object): Массивы, которые необходимо объединить.
19
+ *
20
+ * ### Возвращаемое значение
21
+ *
22
+ * Возвращает новый массив, содержащий элементы всех переданных массивов.
23
+ * Если все переданные массивы являются обычными массивами, результатом будет обычный массив.
24
+ * Если хотя бы один из переданных массивов является ассоциативным массивом, результатом будет ассоциативный массив.
25
+ *
26
+ * ### Примеры использования
27
+ *
28
+ * 1. Объединение обычных массивов:
29
+ *
30
+ * ```js
31
+ * const array1 = [1, 2, 3];
32
+ * const array2 = [4, 5, 6];
33
+ * const result = array_merge_recursive(array1, array2);
34
+ * console.log(result); // [1, 2, 3, 4, 5, 6]
35
+ * ```
36
+ *
37
+ * 2. Объединение ассоциативных массивов:
38
+ *
39
+ * ```js
40
+ * const array1 = { a: 1, b: 2 };
41
+ * const array2 = { b: 3, c: 4 };
42
+ * const result = array_merge_recursive(array1, array2);
43
+ * console.log(result); // { a: 1, b: [2, 3], c: 4 }
44
+ * ```
45
+ *
46
+ * 3. Объединение обычных и ассоциативных массивов:
47
+ *
48
+ * ```js
49
+ * const array1 = [1, 2, 3];
50
+ * const array2 = { a: 4, b: 5 };
51
+ * const result = array_merge_recursive(array1, array2);
52
+ * console.log(result); // { 0: 1, 1: 2, 2: 3, a: 4, b: 5 }
53
+ * ```
54
+ *
55
+ * 4. Объединение вложенных массивов:
56
+ *
57
+ * ```js
58
+ * const array1 = { a: { b: 1 } };
59
+ * const array2 = { a: { c: 2 } };
60
+ * const result = array_merge_recursive(array1, array2);
61
+ * console.log(result); // { a: { b: 1, c: 2 } }
62
+ * ```
63
+ *
64
+ * 5. Объединение массивов с одинаковыми ключами:
65
+ *
66
+ * ```js
67
+ * const array1 = { a: { b: 1 } };
68
+ * const array2 = { a: { b: 2 } };
69
+ * const result = array_merge_recursive(array1, array2);
70
+ * console.log(result); // { a: { b: [1, 2] } }
71
+ * ```
72
+ *
73
+ * 6. Обработка значений, не являющихся массивами:
74
+ *
75
+ * ```js
76
+ * try {
77
+ * const result = array_merge_recursive('not an array');
78
+ * } catch (e) {
79
+ * console.error(e.message); // Параметр "arrays" должен быть массивом.
80
+ * }
81
+ * ```
82
+ *
83
+ * @param {...object} arrays Массивы, которые необходимо объединить.
84
+ * @returns {object} Возвращает новый массив, содержащий элементы всех переданных массивов.
85
+ * @throws {TypeError} Если хотя бы один из параметров не является массивом.
86
+ */
87
+ export default function array_merge_recursive(...arrays) {
88
+ if (!arrays.every((arr) => is_array(arr))) {
89
+ throw new TypeError('Параметр "arrays" должен быть массивом.');
90
+ }
91
+
92
+ if (empty(arrays)) {
93
+ return [];
94
+ }
95
+
96
+ const result = arrays.every((arr) => is_list(arr)) ? [] : array({});
97
+
98
+ // Текущий индекс в массиве
99
+ let index = 0;
100
+
101
+ // Индекс первого массива с числовым ключом, записанный в результат.
102
+ let first_array_index = null;
103
+
104
+ // Перебираем переданные массивы.
105
+ for (const arr of arrays) {
106
+ for (const [k, v] of Object.entries(arr)) {
107
+ // Значение не является массивом, записываем его в результат и продолжаем итерацию.
108
+ //
109
+ // Если значение имеет числовой ключ, переиндексируем его.
110
+ if (!is_array(v)) {
111
+ if (is_int(Number(k))) {
112
+ result[index++] = v;
113
+ } else if (k in result) {
114
+ result[k] = [result[k], v];
115
+ } else {
116
+ result[k] = v;
117
+ }
118
+
119
+ continue;
120
+ }
121
+
122
+ // Значение является массивом
123
+ //
124
+ // Массив имеет числовой ключ
125
+ if (is_int(Number(k))) {
126
+ // Если это первый массив с числовым ключом, сохраняем его индекс,
127
+ // иначе объединяем массив с первым массивом.
128
+ if (is_null(first_array_index)) {
129
+ result[index] = v;
130
+ first_array_index = index++;
131
+ } else {
132
+ result[first_array_index] = array_merge_recursive(result[first_array_index], v);
133
+ }
134
+
135
+ continue;
136
+ }
137
+
138
+ // Массив имеет строковый ключ.
139
+ //
140
+ // Если массив с таким ключом уже был записан в результат, объединяем его с текущим массивом.
141
+ // Иначе записываем текущий массив в результат.
142
+ if (k in result && is_array(result[k])) {
143
+ result[k] = array_merge_recursive(result[k], v);
144
+
145
+ continue;
146
+ }
147
+
148
+ result[k] = v;
149
+ }
150
+ }
151
+
152
+ return result;
153
+ }
@@ -0,0 +1,105 @@
1
+ import array from '../array.mjs';
2
+ import is_array from '../is_array.mjs';
3
+ import is_int from '../is_int.mjs';
4
+ import is_list from '../is_list.mjs';
5
+ import array_fill from './array_fill.mjs';
6
+ import array_merge from './array_merge.mjs';
7
+
8
+ /**
9
+ * Дополняет массив до заданной длины указанным значением.
10
+ *
11
+ * ### Описание
12
+ *
13
+ * Функция `array_pad` используется для дополнения массива до заданной длины указанным значением.
14
+ * Если длина положительная, элементы добавляются в конец массива.
15
+ * Если длина отрицательная, элементы добавляются в начало массива.
16
+ *
17
+ * ### Параметры
18
+ *
19
+ * - `arr` (object): Исходный массив.
20
+ * - `length` (number): Желаемая длина массива.
21
+ * - `value` (any): Значение для дополнения массива.
22
+ *
23
+ * ### Возвращаемое значение
24
+ *
25
+ * Возвращает новый массив, дополненный до заданной длины указанным значением.
26
+ *
27
+ * ### Примеры использования
28
+ *
29
+ * 1. Дополнение массива до длины 5:
30
+ *
31
+ * ```js
32
+ * const array = [1, 2, 3];
33
+ * const result = array_pad(array, 5, 0);
34
+ * console.log(result); // [1, 2, 3, 0, 0]
35
+ * ```
36
+ *
37
+ * 2. Дополнение массива до длины -5:
38
+ *
39
+ * ```js
40
+ * const array = [1, 2, 3];
41
+ * const result = array_pad(array, -5, 0);
42
+ * console.log(result); // [0, 0, 1, 2, 3]
43
+ * ```
44
+ *
45
+ * 3. Возвращение массива без изменений, если длина меньше или равна текущей длине массива:
46
+ *
47
+ * ```js
48
+ * const array = [1, 2, 3];
49
+ * const result = array_pad(array, 3, 0);
50
+ * console.log(result); // [1, 2, 3]
51
+ * ```
52
+ *
53
+ * 4. Дополнение пустого массива:
54
+ *
55
+ * ```js
56
+ * const array = [];
57
+ * const result = array_pad(array, 3, 0);
58
+ * console.log(result); // [0, 0, 0]
59
+ * ```
60
+ *
61
+ * 5. Обработка значений, не являющихся массивами:
62
+ *
63
+ * ```js
64
+ * try {
65
+ * const result = array_pad('not an array', 5, 0);
66
+ * } catch (e) {
67
+ * console.error(e.message); // Параметр "arr" должен быть массивом.
68
+ * }
69
+ * ```
70
+ *
71
+ * 6. Обработка значений длины, не являющихся числами:
72
+ *
73
+ * ```js
74
+ * try {
75
+ * const result = array_pad([1, 2, 3], 'not a number', 0);
76
+ * } catch (e) {
77
+ * console.error(e.message); // Параметр "length" должен быть целым числом.
78
+ * }
79
+ * ```
80
+ *
81
+ * @param {object} arr Исходный массив.
82
+ * @param {number} length Желаемая длина массива.
83
+ * @param {any} value Значение для дополнения массива.
84
+ * @returns {object} Возвращает новый массив, дополненный до заданной длины указанным значением.
85
+ * @throws {TypeError} Если параметры не являются массивом или числом.
86
+ */
87
+ export default function array_pad(arr, length, value) {
88
+ if (!is_array(arr)) {
89
+ throw new TypeError('Параметр "arr" должен быть массивом.');
90
+ }
91
+
92
+ if (!is_int(length)) {
93
+ throw new TypeError('Параметр "length" должен быть целым числом.');
94
+ }
95
+
96
+ const count = Object.keys(arr).length;
97
+
98
+ if (count >= Math.abs(length)) {
99
+ return arr;
100
+ }
101
+
102
+ const pad = array_fill(is_list(arr) ? [] : array({}), 0, Math.abs(length) - count, value);
103
+
104
+ return length > 0 ? array_merge(arr, pad) : array_merge(pad, arr);
105
+ }