{"_id":"array-utils-ts","_rev":"8-7fddf08872243978fd2afebf1a01118b","name":"array-utils-ts","dist-tags":{"latest":"1.1.0"},"versions":{"0.1.0":{"name":"array-utils-ts","version":"0.1.0","keywords":[],"author":{"name":"Vlad Pronsky","email":"v.pronsky@gmail.com"},"license":"MIT","_id":"array-utils-ts@0.1.0","maintainers":[{"name":"vladkens","email":"v.pronsky@gmail.com"}],"homepage":"https://github.com/vladkens/array-utils-ts#readme","bugs":{"url":"https://github.com/vladkens/array-utils-ts/issues"},"dist":{"shasum":"94d6e696919d31b41a495b3e0906e9de365d2dd5","tarball":"https://registry.npmjs.org/array-utils-ts/-/array-utils-ts-0.1.0.tgz","fileCount":7,"integrity":"sha512-alGsZ6EQtbrZzAxAxS4/e8ucF5fv1r6/anE5yCyobU5iFw90YLamuHcNotsWAgWSHlAUYSVuy1znGjk/yKFRRA==","signatures":[{"sig":"MEYCIQCq6f7rBz9w94bDNw/r+KQN8YtI2TEYqOJOBI1ucP3XvgIhALkJ5W/bv+A/O41Po7J4N+hsqPkMp2g+2FelmiCCy84G","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":9153},"type":"module","types":"./dist/main.d.cts","exports":{"import":{"types":"./dist/main.d.mts","default":"./dist/main.mjs"},"require":{"types":"./dist/main.d.cts","default":"./dist/main.cjs"}},"gitHead":"30d9a91cfd900ab035475769b0645661a9997098","scripts":{"test":"uvu -r tsm tests/","build":"rm -rf dist && pkgroll --minify && ls -lah dist","format":"prettier --write '{src,tests}/**/*.{js,jsx,ts,tsx}'","test-cov":"c8 --include=src yarn test","test-watch":"watchexec -e ts 'clear && yarn test'","format-check":"prettier --check '{src,tests}/**/*.{js,jsx,ts,tsx}'"},"_npmUser":{"name":"vladkens","email":"v.pronsky@gmail.com"},"repository":{"url":"git+https://github.com/vladkens/array-utils-ts.git","type":"git"},"_npmVersion":"9.5.1","description":"<div align=\"center\">   <a href=\"https://npmjs.org/package/array-utils-ts\">     <img src=\"https://badgen.net/npm/v/array-utils-ts\" alt=\"version\" />   </a>   <a href=\"https://github.com/vladkens/array-utils-ts/actions\">     <img src=\"https://github.com/vlad","directories":{},"_nodeVersion":"18.16.0","dependencies":{},"_hasShrinkwrap":false,"devDependencies":{"c8":"^7.13.0","tsm":"^2.3.0","uvu":"^0.5.6","pkgroll":"^1.10.0","prettier":"^2.8.8","typescript":"^5.0.4","prettier-plugin-organize-imports":"^3.2.2"},"_npmOperationalInternal":{"tmp":"tmp/array-utils-ts_0.1.0_1684231953430_0.7391554057530594","host":"s3://npm-registry-packages"}},"0.1.1":{"name":"array-utils-ts","version":"0.1.1","keywords":[],"author":{"name":"Vlad Pronsky","email":"v.pronsky@gmail.com"},"license":"MIT","_id":"array-utils-ts@0.1.1","maintainers":[{"name":"vladkens","email":"v.pronsky@gmail.com"}],"homepage":"https://github.com/vladkens/array-utils-ts#readme","bugs":{"url":"https://github.com/vladkens/array-utils-ts/issues"},"dist":{"shasum":"88eaa522fd8b73acdf75bcf3fd253a2d986ebda5","tarball":"https://registry.npmjs.org/array-utils-ts/-/array-utils-ts-0.1.1.tgz","fileCount":7,"integrity":"sha512-ALlr/Kh17ASP5IDtF4zsqjdLu56iMJkfoscPDAyVeJ6Ht9tfhSyAuKVRrA2onAKk1bMD2D0y416sJxHyaJ7sdw==","signatures":[{"sig":"MEUCICebkT+i3/nQWCIJMDdsUzEQIjcknNICab716uxNkiW8AiEApree2Zs46zfQ71ug462aM73XX4uJ97/DMYW8ySxg9Bo=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":9101},"type":"module","types":"./dist/main.d.cts","exports":{"import":{"types":"./dist/main.d.mts","default":"./dist/main.mjs"},"require":{"types":"./dist/main.d.cts","default":"./dist/main.cjs"}},"gitHead":"83d0878e45308d2b1c715283ec9f929c864751b6","scripts":{"ci":"yarn test-cov && yarn build","test":"uvu -r tsm src '\\.test\\.ts$'","build":"rm -rf dist && pkgroll --minify && ls -lah dist","format":"prettier --write .","test-cov":"c8 --include=src yarn test","test-watch":"watchexec -e ts 'clear && yarn test'"},"_npmUser":{"name":"vladkens","email":"v.pronsky@gmail.com"},"repository":{"url":"git+https://github.com/vladkens/array-utils-ts.git","type":"git"},"_npmVersion":"9.5.1","description":"<div align=\"center\">   <a href=\"https://npmjs.org/package/array-utils-ts\">     <img src=\"https://badgen.net/npm/v/array-utils-ts\" alt=\"version\" />   </a>   <a href=\"https://github.com/vladkens/array-utils-ts/actions\">     <img src=\"https://github.com/vlad","directories":{},"_nodeVersion":"18.16.1","dependencies":{},"_hasShrinkwrap":false,"devDependencies":{"c8":"^7.13.0","tsm":"^2.3.0","uvu":"^0.5.6","pkgroll":"^1.10.0","prettier":"^2.8.8","typescript":"^5.0.4","prettier-plugin-organize-imports":"^3.2.2"},"_npmOperationalInternal":{"tmp":"tmp/array-utils-ts_0.1.1_1688656370918_0.3496794424063867","host":"s3://npm-registry-packages"}},"0.1.2":{"name":"array-utils-ts","version":"0.1.2","keywords":[],"author":{"name":"Vlad Pronsky","email":"v.pronsky@gmail.com"},"license":"MIT","_id":"array-utils-ts@0.1.2","maintainers":[{"name":"vladkens","email":"v.pronsky@gmail.com"}],"homepage":"https://github.com/vladkens/array-utils-ts#readme","bugs":{"url":"https://github.com/vladkens/array-utils-ts/issues"},"dist":{"shasum":"232a416b0e6794b64880372e297d9702cf8877ef","tarball":"https://registry.npmjs.org/array-utils-ts/-/array-utils-ts-0.1.2.tgz","fileCount":7,"integrity":"sha512-AVp/ybvqELxWd7ZtSC9HGwPPv4FOoWlJWtOaQY1lZuPKmRmJKXA80f+CAyMByH6yCF7H5wDupA67c7N0SGTiTQ==","signatures":[{"sig":"MEQCIDG1UPrl6xMn023OZYBDi+xZqxsMT2ekgzPlSbpp0asjAiAWdgPAdGQuH8vfbcNBnduh5Tt0lo+BLvYIf+tKur3BEg==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":9499},"type":"module","types":"./dist/main.d.cts","exports":{"import":{"types":"./dist/main.d.mts","default":"./dist/main.mjs"},"require":{"types":"./dist/main.d.cts","default":"./dist/main.cjs"}},"gitHead":"1db8e03b37f4e3a6ebaffc0ddbc548df83d3cb8b","scripts":{"ci":"yarn test-cov && yarn build","test":"uvu -r tsm src '\\.test\\.ts$'","build":"rm -rf dist && pkgroll --minify && ls -lah dist","format":"prettier --write .","test-cov":"c8 --include=src yarn test","test-watch":"watchexec -e ts 'clear && yarn test'"},"_npmUser":{"name":"vladkens","email":"v.pronsky@gmail.com"},"repository":{"url":"git+https://github.com/vladkens/array-utils-ts.git","type":"git"},"_npmVersion":"9.8.1","description":"<div align=\"center\">   <a href=\"https://npmjs.org/package/array-utils-ts\">     <img src=\"https://badgen.net/npm/v/array-utils-ts\" alt=\"version\" />   </a>   <a href=\"https://github.com/vladkens/array-utils-ts/actions\">     <img src=\"https://github.com/vlad","directories":{},"_nodeVersion":"18.18.2","dependencies":{},"_hasShrinkwrap":false,"devDependencies":{"c8":"^8.0.1","tsm":"^2.3.0","uvu":"^0.5.6","pkgroll":"^2.0.1","prettier":"^3.1.0","typescript":"^5.3.2","prettier-plugin-organize-imports":"^3.2.4"},"_npmOperationalInternal":{"tmp":"tmp/array-utils-ts_0.1.2_1701184337235_0.07072252949110869","host":"s3://npm-registry-packages"}},"1.0.0":{"name":"array-utils-ts","version":"1.0.0","keywords":[],"author":{"name":"Vlad Pronsky","email":"v.pronsky@gmail.com"},"license":"MIT","_id":"array-utils-ts@1.0.0","maintainers":[{"name":"vladkens","email":"v.pronsky@gmail.com"}],"homepage":"https://github.com/vladkens/array-utils-ts#readme","bugs":{"url":"https://github.com/vladkens/array-utils-ts/issues"},"dist":{"shasum":"c0f6198bc96c2771aebeff243212c5562ca55ca3","tarball":"https://registry.npmjs.org/array-utils-ts/-/array-utils-ts-1.0.0.tgz","fileCount":7,"integrity":"sha512-+4HxAnjNJvYeNE/tjZvRVFQ/g9TvH2x9b8WJ9ujhhUCnvAINyYQFpq+z3qpQlz9xlR4WQw2HRwrwK8KxXDmlWg==","signatures":[{"sig":"MEYCIQDqrYh91dTjW4T3spF25rERKxOqPVWJ5L38uzMzXe0/8QIhAIwtFWO327VEIXdwkyYE252/7pAgCSQJ5pyfWMSb3c6v","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":10125},"type":"module","types":"./dist/main.d.cts","exports":{"import":{"types":"./dist/main.d.mts","default":"./dist/main.mjs"},"require":{"types":"./dist/main.d.cts","default":"./dist/main.cjs"}},"gitHead":"3de45acea093940b6f4769690f4426ff8406c29a","scripts":{"ci":"yarn lint && yarn test-cov && yarn build","lint":"tsc --noEmit && prettier --check .","test":"uvu -r tsm src '\\.test\\.ts$'","build":"rm -rf dist && pkgroll --minify && ls -lah dist","format":"prettier --write .","test-cov":"c8 --include=src yarn test","test-watch":"watchexec -e ts 'clear && yarn test'"},"_npmUser":{"name":"vladkens","email":"v.pronsky@gmail.com"},"repository":{"url":"git+https://github.com/vladkens/array-utils-ts.git","type":"git"},"_npmVersion":"10.8.3","description":"<div align=\"center\">","directories":{},"_nodeVersion":"22.9.0","dependencies":{},"_hasShrinkwrap":false,"devDependencies":{"c8":"10.1.2","tsm":"2.3.0","uvu":"0.5.6","pkgroll":"2.5.0","prettier":"3.3.3","typescript":"5.6.3","prettier-plugin-organize-imports":"4.1.0"},"_npmOperationalInternal":{"tmp":"tmp/array-utils-ts_1.0.0_1728778226366_0.9728851865535395","host":"s3://npm-registry-packages"}},"1.0.1":{"name":"array-utils-ts","version":"1.0.1","keywords":["array","generics","lodash","ramda","stdlib","ts","types","typescript","underscore","util","utilities","utility","utils"],"author":{"name":"Vlad Pronsky","email":"v.pronsky@gmail.com"},"license":"MIT","_id":"array-utils-ts@1.0.1","maintainers":[{"name":"vladkens","email":"v.pronsky@gmail.com"}],"homepage":"https://github.com/vladkens/array-utils-ts#readme","bugs":{"url":"https://github.com/vladkens/array-utils-ts/issues"},"dist":{"shasum":"485865953a329e8d4c8f8778513440f570038385","tarball":"https://registry.npmjs.org/array-utils-ts/-/array-utils-ts-1.0.1.tgz","fileCount":7,"integrity":"sha512-URGFZ4FxrNyDjWwYOAmi0HVTFm/h+xscOpBYwrvk7vuc1TfMBP6Ovdzx4fpA6Co/XWr3hx7z+SiqVIHYpJNaFw==","signatures":[{"sig":"MEUCIQCJWaDVsL4dZjjBOCgakYUQ8NB8fe628ZBtnN6B5EWtgQIgSjyH8eqcLKjt/I7FTsVYWZez0HD6348obA6UJeKzDh0=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":10422},"type":"module","types":"./dist/main.d.cts","exports":{"import":{"types":"./dist/main.d.mts","default":"./dist/main.mjs"},"require":{"types":"./dist/main.d.cts","default":"./dist/main.cjs"}},"gitHead":"f97c528beeb887269c62c5a1092ffc6d3e77bd5b","scripts":{"ci":"yarn lint && yarn test-cov && yarn build","lint":"tsc --noEmit && prettier --check .","test":"uvu -r tsm src '\\.test\\.ts$'","build":"rm -rf dist && pkgroll --minify && ls -lah dist","format":"prettier --write .","test-cov":"c8 --include=src yarn test","test-watch":"watchexec -e ts 'clear && yarn test'"},"_npmUser":{"name":"vladkens","email":"v.pronsky@gmail.com"},"repository":{"url":"git+https://github.com/vladkens/array-utils-ts.git","type":"git"},"_npmVersion":"10.8.3","description":"Lightweight TypeScript utility library providing essential array manipulation functions for state management.","directories":{},"_nodeVersion":"22.9.0","dependencies":{},"_hasShrinkwrap":false,"devDependencies":{"c8":"10.1.2","tsm":"2.3.0","uvu":"0.5.6","pkgroll":"2.5.0","prettier":"3.3.3","typescript":"5.6.3","prettier-plugin-organize-imports":"4.1.0"},"_npmOperationalInternal":{"tmp":"tmp/array-utils-ts_1.0.1_1728778840112_0.7249573583298121","host":"s3://npm-registry-packages"}},"1.0.2":{"name":"array-utils-ts","version":"1.0.2","keywords":["array","generics","lodash","ramda","stdlib","ts","types","typescript","underscore","util","utilities","utility","utils"],"author":{"name":"Vlad Pronsky","email":"v.pronsky@gmail.com"},"license":"MIT","_id":"array-utils-ts@1.0.2","maintainers":[{"name":"vladkens","email":"v.pronsky@gmail.com"}],"homepage":"https://github.com/vladkens/array-utils-ts#readme","bugs":{"url":"https://github.com/vladkens/array-utils-ts/issues"},"dist":{"shasum":"0b225826934aaf2b2f02d219e55cdd77f7d5fb43","tarball":"https://registry.npmjs.org/array-utils-ts/-/array-utils-ts-1.0.2.tgz","fileCount":7,"integrity":"sha512-vV6TdU/km070+4cMJMghZyl7Jvt6tUlgsDmDTpaXLN9cig1aRe+S63hjIIqa6cU/nVltLs9vP6gKGtP8KipBfA==","signatures":[{"sig":"MEQCIAIEtX9VD+SQZOZPNP9ojRpQOrQQSe9vxKbQ5pOtHQx0AiBrTyYH3pv5AYep29KBP5wn3vDIKJVegYK5FcRj5AB+YQ==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/array-utils-ts@1.0.2","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":10422},"type":"module","types":"./dist/main.d.cts","exports":{"import":{"types":"./dist/main.d.mts","default":"./dist/main.mjs"},"require":{"types":"./dist/main.d.cts","default":"./dist/main.cjs"}},"gitHead":"7035f60c27ada8ecc93deed3efc46da1db1a2e96","scripts":{"ci":"yarn lint && yarn test-cov && yarn build","lint":"tsc --noEmit && prettier --check .","test":"uvu -r tsm src '\\.test\\.ts$'","build":"rm -rf dist && pkgroll --minify && ls -lah dist","format":"prettier --write .","test-cov":"c8 --include=src yarn test","test-watch":"watchexec -e ts 'clear && yarn test'"},"_npmUser":{"name":"vladkens","email":"v.pronsky@gmail.com"},"repository":{"url":"git+https://github.com/vladkens/array-utils-ts.git","type":"git"},"_npmVersion":"10.9.0","description":"Lightweight TypeScript utility library providing essential array manipulation functions for state management.","directories":{},"_nodeVersion":"22.10.0","dependencies":{},"_hasShrinkwrap":false,"devDependencies":{"c8":"10.1.2","tsm":"2.3.0","uvu":"0.5.6","pkgroll":"2.5.0","prettier":"3.3.3","typescript":"5.6.3","prettier-plugin-organize-imports":"4.1.0"},"_npmOperationalInternal":{"tmp":"tmp/array-utils-ts_1.0.2_1731172805154_0.7960091488452059","host":"s3://npm-registry-packages"}},"1.0.3":{"name":"array-utils-ts","version":"1.0.3","keywords":["array","generics","lodash","ramda","stdlib","ts","types","typescript","underscore","util","utilities","utility","utils"],"author":{"name":"Vlad Pronsky","email":"v.pronsky@gmail.com"},"license":"MIT","_id":"array-utils-ts@1.0.3","maintainers":[{"name":"vladkens","email":"v.pronsky@gmail.com"}],"homepage":"https://github.com/vladkens/array-utils-ts#readme","bugs":{"url":"https://github.com/vladkens/array-utils-ts/issues"},"dist":{"shasum":"cd43062ad0bcbde749095d6076dd4b9c06638a07","tarball":"https://registry.npmjs.org/array-utils-ts/-/array-utils-ts-1.0.3.tgz","fileCount":7,"integrity":"sha512-XnFIzOnYN/au5qowHCCv3ezMUfBVaWbGgJX9KR4EP4U6Ky3ebW62vB952gGoD3doisH/sVUeiJ2L0p8w8pbyFA==","signatures":[{"sig":"MEUCIQCzzdnuEfyTgUPUaf6FzN/JWakCTaVecio4wlsBc8To4wIgaOcaG7wu/gaj7L8Kiu6Qudw3XRln5pEdM32fA29YoCg=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/array-utils-ts@1.0.3","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":10434},"type":"module","types":"./dist/main.d.cts","exports":{"import":{"types":"./dist/main.d.mts","default":"./dist/main.mjs"},"require":{"types":"./dist/main.d.cts","default":"./dist/main.cjs"}},"gitHead":"066decbe032b1bafa6a4b1142a9e62ce8347d254","scripts":{"ci":"yarn lint && yarn test-cov && yarn build","lint":"tsc --noEmit && prettier --check .","test":"uvu -r tsm src '\\.test\\.ts$'","build":"rm -rf dist && pkgroll --minify && ls -lah dist","format":"prettier --write --log-level warn .","test-cov":"c8 --include=src yarn test","test-watch":"watchexec -e ts 'clear && yarn test'"},"_npmUser":{"name":"vladkens","email":"v.pronsky@gmail.com"},"repository":{"url":"git+https://github.com/vladkens/array-utils-ts.git","type":"git"},"_npmVersion":"10.9.3","description":"Lightweight TypeScript utility library providing essential array manipulation functions for state management.","directories":{},"_nodeVersion":"22.18.0","dependencies":{},"_hasShrinkwrap":false,"devDependencies":{"c8":"10.1.3","tsm":"2.3.0","uvu":"0.5.6","pkgroll":"2.15.3","prettier":"3.6.2","typescript":"5.9.2","prettier-plugin-organize-imports":"4.2.0"},"_npmOperationalInternal":{"tmp":"tmp/array-utils-ts_1.0.3_1756663402108_0.9238045455872876","host":"s3://npm-registry-packages-npm-production"}},"1.1.0":{"type":"module","name":"array-utils-ts","version":"1.1.0","license":"MIT","scripts":{"build":"rm -rf dist && pkgroll --minify && ls -lah dist","test":"tsx --test --test-reporter=dot src/main.test.ts","test-cov":"tsx --experimental-test-coverage --test src/main.test.ts","test-watch":"watchexec -e ts 'clear && npm test'","format":"prettier --write --log-level warn .","lint":"tsc --noEmit && prettier --check .","ci":"npm run lint && npm run test-cov && npm run build"},"devDependencies":{"@types/node":"25.5.0","pkgroll":"2.27.0","prettier":"3.8.1","prettier-plugin-organize-imports":"4.3.0","tsx":"4.21.0","typescript":"5.9.3"},"author":{"name":"vladkens","email":"v.pronsky@gmail.com"},"repository":{"type":"git","url":"git+https://github.com/vladkens/array-utils-ts.git"},"description":"Zero-dependency TypeScript library for immutable array operations: filter nullables, upsert/toggle by key, deduplicate, enumerate, and more.","keywords":["array","collections","deduplicate","enumerate","filter","functional","generics","immutable","lodash","nullable","ramda","react","state-management","stdlib","toggle","ts","types","typescript","underscore","unique","upsert","util","utilities","utility","utils","zero-dependency"],"types":"./dist/main.d.cts","exports":{"require":{"types":"./dist/main.d.cts","default":"./dist/main.cjs"},"import":{"types":"./dist/main.d.mts","default":"./dist/main.mjs"}},"gitHead":"acd9ea794b90896c4cc8ce56a43ff43acc451ec5","_id":"array-utils-ts@1.1.0","bugs":{"url":"https://github.com/vladkens/array-utils-ts/issues"},"homepage":"https://github.com/vladkens/array-utils-ts#readme","_nodeVersion":"24.14.0","_npmVersion":"11.11.1","dist":{"integrity":"sha512-xTJMaGdeXrXAECzIKr2TH5AqMsXktVMouJA2h6aNPahceFXbjwNeVx31yQtZCzRLdFq8GXF7fVS5WvYa2MNXhA==","shasum":"79665b46a68febaf4f07a634bfebc928cee00c8a","tarball":"https://registry.npmjs.org/array-utils-ts/-/array-utils-ts-1.1.0.tgz","fileCount":7,"unpackedSize":11150,"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/array-utils-ts@1.1.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"signatures":[{"keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U","sig":"MEUCIEYyJrQMrKZdO9UeG9ey3Pn6yIt7ZF6aIwlHUjnJeCoJAiEAkCc+2ZQZNCYUHlNmxaE+hQUHwNtw15dhvddMfA/m68s="}]},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:0874db90-0543-42c5-90b4-3b0473d56079"}},"directories":{},"maintainers":[{"name":"vladkens","email":"v.pronsky@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages-npm-production","tmp":"tmp/array-utils-ts_1.1.0_1773434392490_0.8907314554509853"},"_hasShrinkwrap":false}},"time":{"created":"2023-05-16T10:12:33.429Z","modified":"2026-03-13T20:39:52.946Z","0.1.0":"2023-05-16T10:12:33.635Z","0.1.1":"2023-07-06T15:12:51.096Z","0.1.2":"2023-11-28T15:12:17.416Z","1.0.0":"2024-10-13T00:10:26.576Z","1.0.1":"2024-10-13T00:20:40.275Z","1.0.2":"2024-11-09T17:20:05.326Z","1.0.3":"2025-08-31T18:03:22.281Z","1.1.0":"2026-03-13T20:39:52.662Z"},"bugs":{"url":"https://github.com/vladkens/array-utils-ts/issues"},"author":{"name":"vladkens","email":"v.pronsky@gmail.com"},"license":"MIT","homepage":"https://github.com/vladkens/array-utils-ts#readme","keywords":["array","collections","deduplicate","enumerate","filter","functional","generics","immutable","lodash","nullable","ramda","react","state-management","stdlib","toggle","ts","types","typescript","underscore","unique","upsert","util","utilities","utility","utils","zero-dependency"],"repository":{"type":"git","url":"git+https://github.com/vladkens/array-utils-ts.git"},"description":"Zero-dependency TypeScript library for immutable array operations: filter nullables, upsert/toggle by key, deduplicate, enumerate, and more.","maintainers":[{"name":"vladkens","email":"v.pronsky@gmail.com"}],"readme":"# array-utils-ts\n\n<div align=\"center\">\n\n[<img src=\"https://badges.ws/npm/v/array-utils-ts\" alt=\"version\" />](https://npmjs.org/package/array-utils-ts)\n[<img src=\"https://packagephobia.com/badge?p=array-utils-ts\" alt=\"size\" />](https://packagephobia.com/result?p=array-utils-ts)\n[<img src=\"https://badges.ws/npm/dm/array-utils-ts\" alt=\"downloads\" />](https://npmjs.org/package/array-utils-ts)\n[<img src=\"https://badges.ws/github/license/vladkens/array-utils-ts\" alt=\"license\" />](https://github.com/vladkens/array-utils-ts/blob/main/LICENSE)\n[<img src=\"https://badges.ws/badge/-/buy%20me%20a%20coffee/ff813f?icon=buymeacoffee&label\" alt=\"donate\" />](https://buymeacoffee.com/vladkens)\n\n</div>\n\nArray helpers for TypeScript that you keep writing by hand — filter nulls with real type narrowing, toggle and upsert objects by key, deduplicate. No lodash needed.\n\n- **Tiny.** 418 bytes (minified and brotli). Zero dependencies.\n- **Typed.** `filterNullable` actually narrows the return type — no more `(T | null)[]`.\n- **Immutable.** Every function returns a new array, safe to use directly in React `setState`.\n- **Fills the gap.** The specific helpers lodash skips: `upsertByKey`, `toggleByKey`, `filterNullable`.\n\n## Install\n\n```sh\nnpm i array-utils-ts\n```\n\n## Usage\n\n```typescript\nimport {\n  filterNullable,\n  filterEmpty,\n  hasEmpty,\n  uniq,\n  isUniq,\n  toggleItem,\n  updateByKey,\n  upsertByKey,\n  toggleByKey,\n  isFirstByKey,\n  isLastByKey,\n  enumerate,\n} from \"array-utils-ts\"\n```\n\n### Filter & Clean\n\n**filterNullable** — removes `null` and `undefined`, narrows the return type\n\n```typescript\nfilterNullable([1, null, 2, undefined]) // → [1, 2]  (typed as number[])\n```\n\n**filterEmpty** — also removes empty strings `\"\"`\n\n```typescript\nfilterEmpty([1, null, 2, undefined, 3, \"\", \"a\"]) // → [1, 2, 3, \"a\"]\n```\n\n**hasEmpty** — returns `true` if any element is `null`, `undefined`, or `\"\"`\n\n```typescript\nhasEmpty([\"a\", \"b\", \"c\"]) // → false\nhasEmpty([\"a\", \"\", \"c\"]) // → true\nhasEmpty([\"a\", undefined, \"c\"]) // → true\n```\n\n### Deduplicate\n\n**uniq** — removes duplicates\n\n```typescript\nuniq([1, 2, 1, 3]) // → [1, 2, 3]\n```\n\n**isUniq** — checks if all elements are unique\n\n```typescript\nisUniq([1, 2, 3]) // → true\nisUniq([1, 2, 1]) // → false\n```\n\n### Toggle\n\n**toggleItem** — adds an item if missing, removes it if present; useful in multi-select UI\n\n```typescript\ntoggleItem([1, 2, 3], 4) // → [1, 2, 3, 4]\ntoggleItem([1, 2, 3], 3) // → [1, 2]\n```\n\n### Object Arrays (by key)\n\n**updateByKey** — updates a matching object; returns the same reference if not found\n\n```typescript\nconst arr = [\n  { id: 1, v: 1 },\n  { id: 2, v: 1 },\n]\n\nupdateByKey(arr, \"id\", { id: 1, v: 2 }) // → [{ id: 1, v: 2 }, { id: 2, v: 1 }]\nupdateByKey(arr, \"id\", { id: 3, v: 1 }) // → arr (same reference, not found)\n```\n\n**upsertByKey** — updates if found, appends if not\n\n```typescript\nconst arr = [\n  { id: 1, v: 1 },\n  { id: 2, v: 1 },\n]\n\nupsertByKey(arr, \"id\", { id: 1, v: 2 }) // → [{ id: 1, v: 2 }, { id: 2, v: 1 }]\nupsertByKey(arr, \"id\", { id: 3, v: 1 }) // → [...arr, { id: 3, v: 1 }]\n```\n\n**toggleByKey** — removes an object if its key matches, appends it if not\n\n```typescript\nconst arr = [\n  { id: 1, v: 1 },\n  { id: 2, v: 1 },\n]\n\ntoggleByKey(arr, \"id\", { id: 1, v: 2 }) // → [{ id: 2, v: 1 }]\ntoggleByKey(arr, \"id\", { id: 3, v: 1 }) // → [...arr, { id: 3, v: 1 }]\n```\n\n**isFirstByKey** / **isLastByKey** — check an object's position in the array\n\n```typescript\nconst arr = [{ id: 1 }, { id: 2 }, { id: 3 }]\n\nisFirstByKey(arr, \"id\", { id: 1 }) // → true\nisFirstByKey(arr, \"id\", { id: 3 }) // → false\nisLastByKey(arr, \"id\", { id: 3 }) // → true\nisLastByKey(arr, \"id\", { id: 1 }) // → false\n```\n\n### Enumerate\n\n**enumerate** — pairs each element with its index, like Python's `enumerate()`\n\n```typescript\nconst arr = [\"a\", \"b\", \"c\"]\n\nenumerate(arr) // → [[0, \"a\"], [1, \"b\"], [2, \"c\"]]\nenumerate(arr, 1) // → [[1, \"a\"], [2, \"b\"], [3, \"c\"]]\n```\n","readmeFilename":"readme.md"}