@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,82 @@
1
+ import empty from '../empty.mjs';
2
+ import is_array from '../is_array.mjs';
3
+ import is_list from '../is_list.mjs';
4
+ import is_nan from '../is_nan.mjs';
5
+
6
+ /**
7
+ * Возвращает минимальный индекс массива.
8
+ *
9
+ * ### Описание
10
+ *
11
+ * Функция `array_index_min` используется для получения минимального индекса массива.
12
+ * Она возвращает минимальный индекс для обычных массивов и ассоциативных массивов.
13
+ *
14
+ * ### Параметры
15
+ *
16
+ * - `value` (array): Исходный массив.
17
+ *
18
+ * ### Возвращаемое значение
19
+ *
20
+ * Возвращает минимальный индекс массива. Если массив пустой, возвращает `null`.
21
+ *
22
+ * ### Примеры использования
23
+ *
24
+ * 1. Получение минимального индекса обычного массива:
25
+ *
26
+ * ```js
27
+ * const array = [1, 2, 3];
28
+ * const result = array_index_min(array);
29
+ * console.log(result); // 0
30
+ * ```
31
+ *
32
+ * 2. Получение минимального индекса ассоциативного массива:
33
+ *
34
+ * ```js
35
+ * const array = { a: 1, b: 2, c: 3 };
36
+ * const result = array_index_min(array);
37
+ * console.log(result); // null (нет числовых ключей)
38
+ * ```
39
+ *
40
+ * 3. Обработка пустого массива:
41
+ *
42
+ * ```js
43
+ * const array = [];
44
+ * const result = array_index_min(array);
45
+ * console.log(result); // null
46
+ * ```
47
+ *
48
+ * 4. Обработка значений, не являющихся массивами:
49
+ *
50
+ * ```js
51
+ * try {
52
+ * const result = array_index_min('not an array');
53
+ * } catch (e) {
54
+ * console.error(e.message); // Параметр "value" должен быть массивом.
55
+ * }
56
+ * ```
57
+ *
58
+ * @param {object} value Исходный массив.
59
+ * @returns {number|null} Возвращает минимальный индекс массива. Если массив пустой, возвращает `null`.
60
+ * @throws {TypeError} Если параметр не является массивом.
61
+ */
62
+ export default function array_index_min(value) {
63
+ if (!is_array(value)) {
64
+ throw new TypeError('Параметр "value" должен быть массивом.');
65
+ }
66
+
67
+ if (empty(value)) {
68
+ return null;
69
+ }
70
+
71
+ if (is_list(value)) {
72
+ return 0;
73
+ }
74
+
75
+ for (const key of Object.keys(value)) {
76
+ if (!is_nan(Number(key))) {
77
+ return Number(key);
78
+ }
79
+ }
80
+
81
+ return null;
82
+ }
@@ -0,0 +1,71 @@
1
+ import array_uintersect from './array_uintersect.mjs';
2
+
3
+ /**
4
+ * Вычисляет пересечение между массивами с использованием стандартной функции сравнения значений.
5
+ *
6
+ * ### Описание
7
+ *
8
+ * Функция `array_intersect` используется для вычисления пересечения между массивами с использованием стандартной функции сравнения значений.
9
+ * Она возвращает массив, содержащий элементы из первого массива, которые присутствуют в других массивах.
10
+ *
11
+ * ### Параметры
12
+ *
13
+ * - `original_array` (array): Исходный массив.
14
+ * - `...arrays` (array): Массивы для сравнения.
15
+ *
16
+ * ### Возвращаемое значение
17
+ *
18
+ * Возвращает массив, содержащий элементы из первого массива, которые присутствуют в других массивах.
19
+ *
20
+ * ### Примеры использования
21
+ *
22
+ * 1. Сравнение массивов:
23
+ *
24
+ * ```js
25
+ * const original_array = { a: 1, b: 2, c: 3 };
26
+ * const array1 = { a: 1, b: 2 };
27
+ * const array2 = { b: 2, c: 3 };
28
+ * const result = array_intersect(original_array, array1, array2);
29
+ * console.log(result); // { a: 1, b: 2, c: 3 }
30
+ * ```
31
+ *
32
+ * 2. Обработка пустых массивов:
33
+ *
34
+ * ```js
35
+ * const original_array = {};
36
+ * const array1 = {};
37
+ * const result = array_intersect(original_array, array1);
38
+ * console.log(result); // {}
39
+ * ```
40
+ *
41
+ * 3. Обработка значений, не являющихся массивами:
42
+ *
43
+ * ```js
44
+ * try {
45
+ * const result = array_intersect('not an array');
46
+ * } catch (e) {
47
+ * console.error(e.message); // Параметр "original_array" должен быть массивом.
48
+ * }
49
+ * ```
50
+ *
51
+ * 4. Сравнение массивов с различными типами данных:
52
+ *
53
+ * ```js
54
+ * const original_array = { a: 1, b: '2', c: true };
55
+ * const array1 = { a: 1, b: 2, d: false };
56
+ * const result = array_intersect(original_array, array1);
57
+ * console.log(result); // { a: 1 }
58
+ * ```
59
+ *
60
+ * @param {object} original_array Исходный массив.
61
+ * @param {...object} arrays Массивы для сравнения.
62
+ * @returns {object} Возвращает массив, содержащий элементы из первого массива, которые присутствуют в других массивах.
63
+ * @throws {TypeError} Если параметры не являются массивами.
64
+ */
65
+ export default function array_intersect(original_array, ...arrays) {
66
+ return array_uintersect(
67
+ (a, b) => JSON.stringify(a) === JSON.stringify(b),
68
+ original_array,
69
+ ...arrays,
70
+ );
71
+ }
@@ -0,0 +1,67 @@
1
+ import array_intersect_uassoc from './array_intersect_uassoc.mjs';
2
+
3
+ /**
4
+ * Вычисляет пересечение между массивами с использованием стандартной функции сравнения для значений и ключей.
5
+ *
6
+ * ### Описание
7
+ *
8
+ * Функция `array_intersect_assoc` используется для вычисления пересечения между массивами с использованием стандартной функции сравнения для значений и ключей.
9
+ * Она возвращает массив, содержащий элементы из первого массива, которые присутствуют в других массивах.
10
+ *
11
+ * ### Параметры
12
+ *
13
+ * - `original_array` (array): Исходный массив.
14
+ * - `...arrays` (array): Массивы для сравнения.
15
+ *
16
+ * ### Возвращаемое значение
17
+ *
18
+ * Возвращает массив, содержащий элементы из первого массива, которые присутствуют в других массивах.
19
+ *
20
+ * ### Примеры использования
21
+ *
22
+ * 1. Сравнение массивов:
23
+ *
24
+ * ```js
25
+ * const original_array = { a: 1, b: 2, c: 3 };
26
+ * const array1 = { a: 1, b: 2 };
27
+ * const array2 = { b: 2, c: 3 };
28
+ * const result = array_intersect_assoc(original_array, array1, array2);
29
+ * console.log(result); // { a: 1, b: 2, c: 3 }
30
+ * ```
31
+ *
32
+ * 2. Обработка пустых массивов:
33
+ *
34
+ * ```js
35
+ * const original_array = {};
36
+ * const array1 = {};
37
+ * const result = array_intersect_assoc(original_array, array1);
38
+ * console.log(result); // {}
39
+ * ```
40
+ *
41
+ * 3. Обработка значений, не являющихся массивами:
42
+ *
43
+ * ```js
44
+ * try {
45
+ * const result = array_intersect_assoc('not an array');
46
+ * } catch (e) {
47
+ * console.error(e.message); // Параметр "original_array" должен быть массивом.
48
+ * }
49
+ * ```
50
+ *
51
+ * 4. Сравнение массивов с различными типами данных:
52
+ *
53
+ * ```js
54
+ * const original_array = { a: 1, b: '2', c: true };
55
+ * const array1 = { a: 1, b: 2, d: false };
56
+ * const result = array_intersect_assoc(original_array, array1);
57
+ * console.log(result); // { a: 1 }
58
+ * ```
59
+ *
60
+ * @param {object} original_array Исходный массив.
61
+ * @param {...object} arrays Массивы для сравнения.
62
+ * @returns {object} Возвращает массив, содержащий элементы из первого массива, которые присутствуют в других массивах.
63
+ * @throws {TypeError} Если параметры не являются массивами.
64
+ */
65
+ export default function array_intersect_assoc(original_array, ...arrays) {
66
+ return array_intersect_uassoc((a, b) => a === b, original_array, ...arrays);
67
+ }
@@ -0,0 +1,67 @@
1
+ import array_intersect_ukey from './array_intersect_ukey.mjs';
2
+
3
+ /**
4
+ * Вычисляет пересечение между массивами с использованием стандартной функции сравнения для ключей.
5
+ *
6
+ * ### Описание
7
+ *
8
+ * Функция `array_intersect_key` используется для вычисления пересечения между массивами с использованием стандартной функции сравнения для ключей.
9
+ * Она возвращает массив, содержащий элементы из первого массива, которые присутствуют в других массивах.
10
+ *
11
+ * ### Параметры
12
+ *
13
+ * - `original_array` (array): Исходный массив.
14
+ * - `...arrays` (array): Массивы для сравнения.
15
+ *
16
+ * ### Возвращаемое значение
17
+ *
18
+ * Возвращает массив, содержащий элементы из первого массива, которые присутствуют в других массивах.
19
+ *
20
+ * ### Примеры использования
21
+ *
22
+ * 1. Сравнение массивов:
23
+ *
24
+ * ```js
25
+ * const original_array = { a: 1, b: 2, c: 3 };
26
+ * const array1 = { a: 1, b: 2 };
27
+ * const array2 = { b: 2, c: 3 };
28
+ * const result = array_intersect_key(original_array, array1, array2);
29
+ * console.log(result); // { a: 1, b: 2, c: 3 }
30
+ * ```
31
+ *
32
+ * 2. Обработка пустых массивов:
33
+ *
34
+ * ```js
35
+ * const original_array = {};
36
+ * const array1 = {};
37
+ * const result = array_intersect_key(original_array, array1);
38
+ * console.log(result); // {}
39
+ * ```
40
+ *
41
+ * 3. Обработка значений, не являющихся массивами:
42
+ *
43
+ * ```js
44
+ * try {
45
+ * const result = array_intersect_key('not an array');
46
+ * } catch (e) {
47
+ * console.error(e.message); // Параметр "original_array" должен быть массивом.
48
+ * }
49
+ * ```
50
+ *
51
+ * 4. Сравнение массивов с различными типами данных:
52
+ *
53
+ * ```js
54
+ * const original_array = { a: 1, b: '2', c: true };
55
+ * const array1 = { a: 1, b: 2, d: false };
56
+ * const result = array_intersect_key(original_array, array1);
57
+ * console.log(result); // { a: 1, b: '2' }
58
+ * ```
59
+ *
60
+ * @param {object} original_array Исходный массив.
61
+ * @param {...object} arrays Массивы для сравнения.
62
+ * @returns {object} Возвращает массив, содержащий элементы из первого массива, которые присутствуют в других массивах.
63
+ * @throws {TypeError} Если параметры не являются массивами.
64
+ */
65
+ export default function array_intersect_key(original_array, ...arrays) {
66
+ return array_intersect_ukey((a, b) => a === b, original_array, ...arrays);
67
+ }
@@ -0,0 +1,77 @@
1
+ import array_uintersect_uassoc from './array_uintersect_uassoc.mjs';
2
+
3
+ /**
4
+ * Вычисляет пересечение между массивами с использованием пользовательской функции сравнения ключей.
5
+ *
6
+ * ### Описание
7
+ *
8
+ * Функция `array_intersect_uassoc` используется для вычисления пересечения между массивами с использованием пользовательской функции сравнения ключей.
9
+ * Она возвращает массив, содержащий элементы из первого массива, которые присутствуют в других массивах.
10
+ *
11
+ * ### Параметры
12
+ *
13
+ * - `key_compare_func` (function): Функция для сравнения ключей.
14
+ * - `original_array` (array): Исходный массив.
15
+ * - `...arrays` (array): Массивы для сравнения.
16
+ *
17
+ * ### Возвращаемое значение
18
+ *
19
+ * Возвращает массив, содержащий элементы из первого массива, которые присутствуют в других массивах.
20
+ *
21
+ * ### Примеры использования
22
+ *
23
+ * 1. Сравнение массивов с использованием пользовательских функций сравнения:
24
+ *
25
+ * ```js
26
+ * const key_compare_func = (a, b) => a === b;
27
+ * const original_array = { a: 1, b: 2, c: 3 };
28
+ * const array1 = { a: 1, b: 2 };
29
+ * const array2 = { b: 2, c: 3 };
30
+ * const result = array_intersect_uassoc(key_compare_func, original_array, array1, array2);
31
+ * console.log(result); // { a: 1, b: 2, c: 3 }
32
+ * ```
33
+ *
34
+ * 2. Обработка пустых массивов:
35
+ *
36
+ * ```js
37
+ * const key_compare_func = (a, b) => a === b;
38
+ * const original_array = {};
39
+ * const array1 = {};
40
+ * const result = array_intersect_uassoc(key_compare_func, original_array, array1);
41
+ * console.log(result); // {}
42
+ * ```
43
+ *
44
+ * 3. Обработка значений, не являющихся массивами:
45
+ *
46
+ * ```js
47
+ * try {
48
+ * const result = array_intersect_uassoc('not a function', 'not an array');
49
+ * } catch (e) {
50
+ * console.error(e.message); // Параметр "key_compare_func" должен быть функцией.
51
+ * }
52
+ * ```
53
+ *
54
+ * 4. Сравнение массивов с различными типами данных:
55
+ *
56
+ * ```js
57
+ * const key_compare_func = (a, b) => a === b;
58
+ * const original_array = { a: 1, b: '2', c: true };
59
+ * const array1 = { a: 1, b: 2, d: false };
60
+ * const result = array_intersect_uassoc(key_compare_func, original_array, array1);
61
+ * console.log(result); // { a: 1 }
62
+ * ```
63
+ *
64
+ * @param {function} key_compare_func Функция для сравнения ключей.
65
+ * @param {object} original_array Исходный массив.
66
+ * @param {...object} arrays Массивы для сравнения.
67
+ * @returns {object} Возвращает массив, содержащий элементы из первого массива, которые присутствуют в других массивах.
68
+ * @throws {TypeError} Если параметры не являются функциями или массивами.
69
+ */
70
+ export default function array_intersect_uassoc(key_compare_func, original_array, ...arrays) {
71
+ return array_uintersect_uassoc(
72
+ (a, b) => JSON.stringify(a) === JSON.stringify(b),
73
+ key_compare_func,
74
+ original_array,
75
+ ...arrays,
76
+ );
77
+ }
@@ -0,0 +1,72 @@
1
+ import array_uintersect_uassoc from './array_uintersect_uassoc.mjs';
2
+
3
+ /**
4
+ * Вычисляет пересечение между массивами с использованием пользовательской функции сравнения для ключей.
5
+ *
6
+ * ### Описание
7
+ *
8
+ * Функция `array_intersect_ukey` используется для вычисления пересечения между массивами с использованием пользовательской функции сравнения для ключей.
9
+ * Она возвращает массив, содержащий элементы из первого массива, которые присутствуют в других массивах.
10
+ *
11
+ * ### Параметры
12
+ *
13
+ * - `key_compare_func` (function): Функция для сравнения ключей.
14
+ * - `original_array` (array): Исходный массив.
15
+ * - `...arrays` (array): Массивы для сравнения.
16
+ *
17
+ * ### Возвращаемое значение
18
+ *
19
+ * Возвращает массив, содержащий элементы из первого массива, которые присутствуют в других массивах.
20
+ *
21
+ * ### Примеры использования
22
+ *
23
+ * 1. Сравнение массивов с использованием пользовательской функции сравнения ключей:
24
+ *
25
+ * ```js
26
+ * const key_compare_func = (a, b) => a === b;
27
+ * const original_array = { a: 1, b: 2, c: 3 };
28
+ * const array1 = { a: 1, b: 2 };
29
+ * const array2 = { b: 2, c: 3 };
30
+ * const result = array_intersect_ukey(key_compare_func, original_array, array1, array2);
31
+ * console.log(result); // { a: 1, b: 2, c: 3 }
32
+ * ```
33
+ *
34
+ * 2. Обработка пустых массивов:
35
+ *
36
+ * ```js
37
+ * const key_compare_func = (a, b) => a === b;
38
+ * const original_array = {};
39
+ * const array1 = {};
40
+ * const result = array_intersect_ukey(key_compare_func, original_array, array1);
41
+ * console.log(result); // {}
42
+ * ```
43
+ *
44
+ * 3. Обработка значений, не являющихся массивами:
45
+ *
46
+ * ```js
47
+ * try {
48
+ * const result = array_intersect_ukey('not a function', 'not an array');
49
+ * } catch (e) {
50
+ * console.error(e.message); // Параметр "key_compare_func" должен быть функцией.
51
+ * }
52
+ * ```
53
+ *
54
+ * 4. Сравнение массивов с различными типами данных:
55
+ *
56
+ * ```js
57
+ * const key_compare_func = (a, b) => a === b;
58
+ * const original_array = { a: 1, b: '2', c: true };
59
+ * const array1 = { a: 1, b: 2, d: false };
60
+ * const result = array_intersect_ukey(key_compare_func, original_array, array1);
61
+ * console.log(result); // { a: 1, b: '2' }
62
+ * ```
63
+ *
64
+ * @param {function} key_compare_func Функция для сравнения ключей.
65
+ * @param {object} original_array Исходный массив.
66
+ * @param {...object} arrays Массивы для сравнения.
67
+ * @returns {object} Возвращает массив, содержащий элементы из первого массива, которые присутствуют в других массивах.
68
+ * @throws {TypeError} Если параметры не являются функциями или массивами.
69
+ */
70
+ export default function array_intersect_ukey(key_compare_func, original_array, ...arrays) {
71
+ return array_uintersect_uassoc(() => true, key_compare_func, original_array, ...arrays);
72
+ }
@@ -0,0 +1,83 @@
1
+ import is_array from '../is_array.mjs';
2
+ import is_int from '../is_int.mjs';
3
+ import is_string from '../is_string.mjs';
4
+
5
+ /**
6
+ * Проверяет, существует ли указанный ключ в массиве.
7
+ *
8
+ * ### Описание
9
+ *
10
+ * Функция `array_key_exists` используется для проверки существования указанного ключа в массиве.
11
+ * Она возвращает `true`, если ключ существует в массиве, и `false` в противном случае.
12
+ *
13
+ * ### Параметры
14
+ *
15
+ * - `value` (object): Исходный массив.
16
+ * - `key` (number|string): Ключ, который необходимо проверить.
17
+ *
18
+ * ### Возвращаемое значение
19
+ *
20
+ * Возвращает `true`, если ключ существует в массиве, и `false` в противном случае.
21
+ *
22
+ * ### Примеры использования
23
+ *
24
+ * 1. Проверка существования ключа в обычном массиве:
25
+ *
26
+ * ```js
27
+ * const array = [1, 2, 3];
28
+ * const result = array_key_exists(array, 1);
29
+ * console.log(result); // true
30
+ * ```
31
+ *
32
+ * 2. Проверка существования ключа в ассоциативном массиве:
33
+ *
34
+ * ```js
35
+ * const array = { a: 1, b: 2, c: 3 };
36
+ * const result = array_key_exists(array, 'b');
37
+ * console.log(result); // true
38
+ * ```
39
+ *
40
+ * 3. Проверка отсутствия ключа в массиве:
41
+ *
42
+ * ```js
43
+ * const array = [1, 2, 3];
44
+ * const result = array_key_exists(array, 5);
45
+ * console.log(result); // false
46
+ * ```
47
+ *
48
+ * 4. Обработка значений, не являющихся массивами:
49
+ *
50
+ * ```js
51
+ * try {
52
+ * const result = array_key_exists('not an array', 1);
53
+ * } catch (e) {
54
+ * console.error(e.message); // Параметр "value" должен быть массивом.
55
+ * }
56
+ * ```
57
+ *
58
+ * 5. Обработка значений ключа, не являющихся целыми числами или строками:
59
+ *
60
+ * ```js
61
+ * try {
62
+ * const result = array_key_exists([1, 2, 3], {});
63
+ * } catch (e) {
64
+ * console.error(e.message); // Параметр "key" должен быть целым числом или строкой.
65
+ * }
66
+ * ```
67
+ *
68
+ * @param {object} value Исходный массив.
69
+ * @param {number|string} key Ключ, который необходимо проверить.
70
+ * @returns {boolean} Возвращает `true`, если ключ существует в массиве, и `false` в противном случае.
71
+ * @throws {TypeError} Если параметры не являются массивом, целым числом или строкой.
72
+ */
73
+ export default function array_key_exists(value, key) {
74
+ if (!is_array(value)) {
75
+ throw new TypeError('Параметр "value" должен быть массивом.');
76
+ }
77
+
78
+ if (!is_int(key) && !is_string(key)) {
79
+ throw new TypeError('Параметр "key" должен быть целым числом или строкой.');
80
+ }
81
+
82
+ return key in value;
83
+ }
@@ -0,0 +1,73 @@
1
+ import empty from '../empty.mjs';
2
+ import is_array from '../is_array.mjs';
3
+ import is_nan from '../is_nan.mjs';
4
+
5
+ /**
6
+ * Возвращает первый ключ массива.
7
+ *
8
+ * ### Описание
9
+ *
10
+ * Функция `array_key_first` используется для получения первого ключа массива.
11
+ * Она возвращает первый ключ для обычных массивов и ассоциативных массивов.
12
+ *
13
+ * ### Параметры
14
+ *
15
+ * - `value` (array): Исходный массив.
16
+ *
17
+ * ### Возвращаемое значение
18
+ *
19
+ * Возвращает первый ключ массива. Если массив пустой, возвращает `null`.
20
+ *
21
+ * ### Примеры использования
22
+ *
23
+ * 1. Получение первого ключа обычного массива:
24
+ *
25
+ * ```js
26
+ * const array = [1, 2, 3];
27
+ * const result = array_key_first(array);
28
+ * console.log(result); // 0
29
+ * ```
30
+ *
31
+ * 2. Получение первого ключа ассоциативного массива:
32
+ *
33
+ * ```js
34
+ * const array = { a: 1, b: 2, c: 3 };
35
+ * const result = array_key_first(array);
36
+ * console.log(result); // 'a'
37
+ * ```
38
+ *
39
+ * 3. Обработка пустого массива:
40
+ *
41
+ * ```js
42
+ * const array = [];
43
+ * const result = array_key_first(array);
44
+ * console.log(result); // null
45
+ * ```
46
+ *
47
+ * 4. Обработка значений, не являющихся массивами:
48
+ *
49
+ * ```js
50
+ * try {
51
+ * const result = array_key_first('not an array');
52
+ * } catch (e) {
53
+ * console.error(e.message); // Параметр "value" должен быть массивом.
54
+ * }
55
+ * ```
56
+ *
57
+ * @param {object} value Исходный массив.
58
+ * @returns {number|string|null} Возвращает первый ключ массива. Если массив пустой, возвращает `null`.
59
+ * @throws {TypeError} Если параметр не является массивом.
60
+ */
61
+ export default function array_key_first(value) {
62
+ if (!is_array(value)) {
63
+ throw new TypeError('Параметр "value" должен быть массивом.');
64
+ }
65
+
66
+ if (empty(value)) {
67
+ return null;
68
+ }
69
+
70
+ const result = Object.keys(value)[0];
71
+
72
+ return is_nan(Number(result)) ? result : Number(result);
73
+ }
@@ -0,0 +1,74 @@
1
+ import empty from '../empty.mjs';
2
+ import is_array from '../is_array.mjs';
3
+ import is_nan from '../is_nan.mjs';
4
+
5
+ /**
6
+ * Возвращает последний ключ массива.
7
+ *
8
+ * ### Описание
9
+ *
10
+ * Функция `array_key_last` используется для получения последнего ключа массива.
11
+ * Она возвращает последний ключ для обычных массивов и ассоциативных массивов.
12
+ *
13
+ * ### Параметры
14
+ *
15
+ * - `value` (object): Исходный массив.
16
+ *
17
+ * ### Возвращаемое значение
18
+ *
19
+ * Возвращает последний ключ массива. Если массив пустой, возвращает `null`.
20
+ *
21
+ * ### Примеры использования
22
+ *
23
+ * 1. Получение последнего ключа обычного массива:
24
+ *
25
+ * ```js
26
+ * const array = [1, 2, 3];
27
+ * const result = array_key_last(array);
28
+ * console.log(result); // 2
29
+ * ```
30
+ *
31
+ * 2. Получение последнего ключа ассоциативного массива:
32
+ *
33
+ * ```js
34
+ * const array = { a: 1, b: 2, c: 3 };
35
+ * const result = array_key_last(array);
36
+ * console.log(result); // 'c'
37
+ * ```
38
+ *
39
+ * 3. Обработка пустого массива:
40
+ *
41
+ * ```js
42
+ * const array = [];
43
+ * const result = array_key_last(array);
44
+ * console.log(result); // null
45
+ * ```
46
+ *
47
+ * 4. Обработка значений, не являющихся массивами:
48
+ *
49
+ * ```js
50
+ * try {
51
+ * const result = array_key_last('not an array');
52
+ * } catch (e) {
53
+ * console.error(e.message); // Параметр "value" должен быть массивом.
54
+ * }
55
+ * ```
56
+ *
57
+ * @param {object} value Исходный массив.
58
+ * @returns {number|string|null} Возвращает последний ключ массива. Если массив пустой, возвращает `null`.
59
+ * @throws {TypeError} Если параметр не является массивом.
60
+ */
61
+ export default function array_key_last(value) {
62
+ if (!is_array(value)) {
63
+ throw new TypeError('Параметр "value" должен быть массивом.');
64
+ }
65
+
66
+ if (empty(value)) {
67
+ return null;
68
+ }
69
+
70
+ const keys = Object.keys(value);
71
+ const result = keys[keys.length - 1];
72
+
73
+ return is_nan(Number(result)) ? result : Number(result);
74
+ }